TModLoader v1.4.4.9
TModLoader source code documentation
Loading...
Searching...
No Matches

◆ Check2x2Style()

static void Terraria.WorldGen.Check2x2Style ( int i,
int j,
int type )
inlinestatic

Definition at line 46167 of file WorldGen.cs.

46168 {
46169 if (destroyObject)
46170 {
46171 return;
46172 }
46173 bool flag = false;
46174 int num = j;
46175 int num2;
46176 for (num2 = Main.tile[i, j].frameY / 18; num2 > 1; num2 -= 2)
46177 {
46178 }
46179 num -= num2;
46180 int num3 = Main.tile[i, j].frameX / 18;
46181 int num4 = 0;
46182 while (num3 > 1)
46183 {
46184 num3 -= 2;
46185 num4++;
46186 }
46187 num3 = i - num3;
46188 int num5 = num4 * 36;
46189 for (int k = num3; k < num3 + 2; k++)
46190 {
46191 for (int l = num; l < num + 2; l++)
46192 {
46193 if (Main.tile[k, l] == null)
46194 {
46195 Main.tile[k, l] = default(Tile);
46196 }
46197 if (!Main.tile[k, l].active() || Main.tile[k, l].type != type || Main.tile[k, l].frameX != (k - num3) * 18 + num5)
46198 {
46199 flag = true;
46200 }
46201 }
46202 if (!SolidTileAllowBottomSlope(k, num + 2))
46203 {
46204 flag = true;
46205 }
46206 else
46207 {
46208 if (type != 254)
46209 {
46210 continue;
46211 }
46212 Tile tile = Main.tile[k, num + 2];
46213 if (tile != null && tile.active() && tile.type >= 0 && tile.type < TileID.Count)
46214 {
46215 ushort type2 = tile.type;
46216 if (type2 != 2 && type2 != 109 && type2 != 477 && type2 != 492)
46217 {
46218 flag = true;
46219 }
46220 }
46221 }
46222 }
46223 if (!flag)
46224 {
46225 return;
46226 }
46227 int frameX = Main.tile[i, j].frameX;
46228 destroyObject = true;
46229 bool drop = TileLoader.Drop(i, j, type);
46230 for (int m = num3; m < num3 + 2; m++)
46231 {
46232 for (int n = num; n < num + 2; n++)
46233 {
46234 if (Main.tile[m, n] == null)
46235 {
46236 Main.tile[m, n] = default(Tile);
46237 }
46238 if (Main.tile[m, n].type == type && Main.tile[m, n].active())
46239 {
46240 KillTile(m, n);
46241 }
46242 }
46243 }
46244 using (new Item.DisableNewItemMethod(!drop))
46245 {
46246 switch (type)
46247 {
46248 case 254:
46249 if (frameX < 72)
46250 {
46251 break;
46252 }
46253 if (frameX < 108)
46254 {
46255 if (genRand.Next(2) == 0)
46256 {
46257 Item.NewItem(GetItemSource_FromTileBreak(i, j), i * 16, j * 16, 32, 32, 1725, genRand.Next(1, 3));
46258 }
46259 break;
46260 }
46261 if (frameX < 144)
46262 {
46263 Item.NewItem(GetItemSource_FromTileBreak(i, j), i * 16, j * 16, 32, 32, 1725, genRand.Next(2, 6));
46264 break;
46265 }
46266 Item.NewItem(GetItemSource_FromTileBreak(i, j), i * 16, j * 16, 32, 32, 1725, genRand.Next(5, 11));
46267 if (Main.halloween && genRand.Next(200) == 0)
46268 {
46269 Item.NewItem(GetItemSource_FromTileBreak(i, j), i * 16, j * 16, 32, 32, 1799);
46270 }
46271 break;
46272 case 457:
46273 Item.NewItem(GetItemSource_FromTileBreak(i, j), i * 16, j * 16, 32, 32, 3749);
46274 break;
46275 case 96:
46276 if (num4 == 0)
46277 {
46278 Item.NewItem(GetItemSource_FromTileBreak(i, j), i * 16, j * 16, 32, 32, 345);
46279 }
46280 if (num4 == 1)
46281 {
46282 Item.NewItem(GetItemSource_FromTileBreak(i, j), i * 16, j * 16, 32, 32, 1791);
46283 }
46284 break;
46285 case 441:
46286 {
46287 int num7 = -1;
46288 switch (num4)
46289 {
46290 case 0:
46291 num7 = 3665;
46292 break;
46293 case 1:
46294 num7 = 3666;
46295 break;
46296 case 3:
46297 num7 = 3667;
46298 break;
46299 case 7:
46300 num7 = 3668;
46301 break;
46302 case 8:
46303 num7 = 3669;
46304 break;
46305 case 9:
46306 num7 = 3670;
46307 break;
46308 case 10:
46309 num7 = 3671;
46310 break;
46311 case 11:
46312 num7 = 3672;
46313 break;
46314 case 12:
46315 num7 = 3673;
46316 break;
46317 case 13:
46318 num7 = 3674;
46319 break;
46320 case 14:
46321 num7 = 3675;
46322 break;
46323 case 15:
46324 num7 = 3676;
46325 break;
46326 case 16:
46327 num7 = 3677;
46328 break;
46329 case 17:
46330 num7 = 3678;
46331 break;
46332 case 18:
46333 num7 = 3679;
46334 break;
46335 case 19:
46336 num7 = 3680;
46337 break;
46338 case 20:
46339 num7 = 3681;
46340 break;
46341 case 21:
46342 num7 = 3682;
46343 break;
46344 case 22:
46345 num7 = 3683;
46346 break;
46347 case 28:
46348 num7 = 3684;
46349 break;
46350 case 29:
46351 num7 = 3685;
46352 break;
46353 case 30:
46354 num7 = 3686;
46355 break;
46356 case 31:
46357 num7 = 3687;
46358 break;
46359 case 32:
46360 num7 = 3688;
46361 break;
46362 case 33:
46363 num7 = 3689;
46364 break;
46365 case 34:
46366 num7 = 3690;
46367 break;
46368 case 35:
46369 num7 = 3691;
46370 break;
46371 case 37:
46372 num7 = 3692;
46373 break;
46374 case 39:
46375 num7 = 3693;
46376 break;
46377 case 41:
46378 num7 = 3694;
46379 break;
46380 case 42:
46381 num7 = 3695;
46382 break;
46383 case 43:
46384 num7 = 3696;
46385 break;
46386 case 44:
46387 num7 = 3697;
46388 break;
46389 case 45:
46390 num7 = 3698;
46391 break;
46392 case 46:
46393 num7 = 3699;
46394 break;
46395 case 47:
46396 num7 = 3700;
46397 break;
46398 case 48:
46399 num7 = 3701;
46400 break;
46401 case 49:
46402 num7 = 3702;
46403 break;
46404 case 50:
46405 num7 = 3703;
46406 break;
46407 case 51:
46408 num7 = 3704;
46409 break;
46410 }
46411 if (num7 != -1)
46412 {
46413 Item.NewItem(GetItemSource_FromTileBreak(i, j), i * 16, j * 16, 32, 32, num7);
46414 }
46415 break;
46416 }
46417 case 468:
46418 {
46419 int num6 = -1;
46420 switch (num4)
46421 {
46422 case 0:
46423 num6 = 3886;
46424 break;
46425 case 1:
46426 num6 = 3887;
46427 break;
46428 case 2:
46429 num6 = 3950;
46430 break;
46431 case 3:
46432 num6 = 3976;
46433 break;
46434 case 4:
46435 num6 = -1;
46436 break;
46437 case 5:
46438 num6 = 4164;
46439 break;
46440 case 6:
46441 num6 = 4185;
46442 break;
46443 case 7:
46444 num6 = 4206;
46445 break;
46446 case 8:
46447 num6 = 4227;
46448 break;
46449 case 9:
46450 num6 = 4266;
46451 break;
46452 case 10:
46453 num6 = 4268;
46454 break;
46455 case 11:
46456 num6 = 4585;
46457 break;
46458 case 12:
46459 num6 = 4713;
46460 break;
46461 case 13:
46462 num6 = -1;
46463 break;
46464 case 14:
46465 num6 = 5167;
46466 break;
46467 case 15:
46468 num6 = 5188;
46469 break;
46470 case 16:
46471 num6 = 5209;
46472 break;
46473 }
46474 if (num6 != -1)
46475 {
46476 Item.NewItem(GetItemSource_FromTileBreak(i, j), i * 16, j * 16, 32, 32, num6);
46477 }
46478 break;
46479 }
46480 }
46481 destroyObject = false;
46482 for (int num8 = num3 - 1; num8 < num3 + 3; num8++)
46483 {
46484 for (int num9 = num - 1; num9 < num + 3; num9++)
46485 {
46487 }
46488 }
46489 }
46490 }
static readonly ushort Count
Definition TileID.cs:1928
static bool Drop(int i, int j, int type, bool includeLargeObjectDrops=true)
This serves as the central class from which tile-related functions are supported and carried out.
Definition TileLoader.cs:23
static bool destroyObject
Definition WorldGen.cs:1258
static void KillTile(int i, int j, bool fail=false, bool effectOnly=false, bool noItem=false)
static UnifiedRandom genRand
Definition WorldGen.cs:1455
static void TileFrame(int i, int j, bool resetFrame=false, bool noBreak=false)
static bool SolidTileAllowBottomSlope(int i, int j)
static IEntitySource GetItemSource_FromTileBreak(int x, int y)

References Terraria.Tile.active(), Terraria.ID.TileID.Count, Terraria.ModLoader.TileLoader.Drop(), Terraria.Main.halloween, Terraria.Item.NewItem(), Terraria.Main.tile, and Terraria.Tile.type.

+ Here is the call graph for this function: