Terraria v1.4.4.9
Terraria source code documentation
All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Macros

◆ Check6x4Wall()

static void Terraria.WorldGen.Check6x4Wall ( int x,
int y )
inlinestatic

Definition at line 36056 of file WorldGen.cs.

36057 {
36058 if (destroyObject)
36059 {
36060 return;
36061 }
36062 bool flag = false;
36063 int type = Main.tile[x, y].type;
36064 int num = 0;
36065 int num2 = Main.tile[x, y].frameY / 18;
36066 int num3 = Main.tile[x, y].frameX / 18;
36067 num = 27 * (num3 / 6) + (num2 >> 2);
36068 num2 %= 4;
36069 num3 %= 6;
36070 int num4 = y - num2;
36071 int num5 = x - Main.tile[x, y].frameX / 18 % 6;
36072 num2 = num % 27 * 72;
36073 num3 = num / 27 * 108;
36074 for (int i = num5; i < num5 + 6; i++)
36075 {
36076 for (int j = num4; j < num4 + 4; j++)
36077 {
36078 if (Main.tile[i, j].type != type || !Main.tile[i, j].active() || Main.tile[i, j].wall <= 0 || Main.tile[i, j].frameY != num2 + (j - num4) * 18 || Main.tile[i, j].frameX != num3 + (i - num5) * 18)
36079 {
36080 flag = true;
36081 break;
36082 }
36083 }
36084 }
36085 if (!flag)
36086 {
36087 return;
36088 }
36089 destroyObject = true;
36090 for (int k = num5; k < num5 + 6; k++)
36091 {
36092 for (int l = num4; l < num4 + 4; l++)
36093 {
36094 if (Main.tile[k, l].type == type && Main.tile[k, l].active())
36095 {
36096 KillTile(k, l);
36097 }
36098 }
36099 }
36100 if (type == 242)
36101 {
36102 switch (num)
36103 {
36104 case 30:
36105 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 2995);
36106 break;
36107 case 65:
36108 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 5389);
36109 break;
36110 case 64:
36111 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 5310);
36112 break;
36113 case 63:
36114 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 5308);
36115 break;
36116 case 62:
36117 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 5274);
36118 break;
36119 case 50:
36120 case 51:
36121 case 52:
36122 case 53:
36123 case 54:
36124 case 55:
36125 case 56:
36126 case 57:
36127 case 58:
36128 case 59:
36129 case 60:
36130 case 61:
36131 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 5234 + num - 50);
36132 break;
36133 default:
36134 if (num >= 46 && num <= 49)
36135 {
36136 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 5121 + num - 46);
36137 break;
36138 }
36139 switch (num)
36140 {
36141 case 45:
36142 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 5085);
36143 break;
36144 case 44:
36145 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 4725);
36146 break;
36147 case 43:
36148 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 4658);
36149 break;
36150 case 37:
36151 case 38:
36152 case 39:
36153 case 40:
36154 case 41:
36155 case 42:
36156 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 4632 + num - 37);
36157 break;
36158 default:
36159 if (num >= 31 && num <= 35)
36160 {
36161 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 3055 + num - 31);
36162 }
36163 else if (num >= 27 && num <= 29)
36164 {
36165 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 2865 + num - 27);
36166 }
36167 else if (num == 36)
36168 {
36169 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 3596);
36170 }
36171 else if (num == 26)
36172 {
36173 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 2497);
36174 }
36175 else if (num == 25)
36176 {
36177 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 2495);
36178 }
36179 else if (num >= 22)
36180 {
36181 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 2281 + num - 22);
36182 }
36183 else if (num >= 17)
36184 {
36185 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 1846 + num - 17);
36186 }
36187 else if (num == 16)
36188 {
36189 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 1573);
36190 }
36191 else if (num >= 13)
36192 {
36193 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 1500 + num - 13);
36194 }
36195 else if (num >= 6)
36196 {
36197 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 1433 + num - 6);
36198 }
36199 else
36200 {
36201 Item.NewItem(GetItemSource_FromTileBreak(x, y), x * 16, y * 16, 32, 32, 1421 + num);
36202 }
36203 break;
36204 }
36205 break;
36206 }
36207 }
36208 destroyObject = false;
36209 }
static bool destroyObject
Definition WorldGen.cs:1020
static void KillTile(int i, int j, bool fail=false, bool effectOnly=false, bool noItem=false)
static IEntitySource GetItemSource_FromTileBreak(int x, int y)

References Terraria.Item.NewItem(), Terraria.Main.tile, and System.type.