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

◆ TileFrame()

static void Terraria.WorldGen.TileFrame ( int i,
int j,
bool resetFrame = false,
bool noBreak = false )
inlinestatic

Definition at line 75066 of file WorldGen.cs.

75067 {
75068 //IL_5f3f: Unknown result type (might be due to invalid IL or missing references)
75069 //IL_5f4c: Unknown result type (might be due to invalid IL or missing references)
75070 //IL_1150: Unknown result type (might be due to invalid IL or missing references)
75071 //IL_7616: Unknown result type (might be due to invalid IL or missing references)
75072 //IL_7620: Unknown result type (might be due to invalid IL or missing references)
75073 //IL_7e87: Unknown result type (might be due to invalid IL or missing references)
75074 //IL_751f: Unknown result type (might be due to invalid IL or missing references)
75075 //IL_7e91: Unknown result type (might be due to invalid IL or missing references)
75076 //IL_7529: Unknown result type (might be due to invalid IL or missing references)
75077 //IL_7f21: Unknown result type (might be due to invalid IL or missing references)
75078 //IL_7f31: Unknown result type (might be due to invalid IL or missing references)
75079 //IL_817e: Unknown result type (might be due to invalid IL or missing references)
75080 //IL_8189: Unknown result type (might be due to invalid IL or missing references)
75081 //IL_16c7: Unknown result type (might be due to invalid IL or missing references)
75082 bool addToList = false;
75083 try
75084 {
75085 if (i > 5 && j > 5 && i < Main.maxTilesX - 5 && j < Main.maxTilesY - 5 && Main.tile[i, j] != null)
75086 {
75087 if (SkipFramingBecauseOfGen && !Main.tileFrameImportant[Main.tile[i, j].type])
75088 {
75089 return;
75090 }
75092 Tile tile = Main.tile[i, j];
75093 if (!tile.active())
75094 {
75095 tile.halfBrick(halfBrick: false);
75096 tile.ClearBlockPaintAndCoating();
75097 tile.slope(0);
75098 }
75099 if (tile.liquid > 0 && Main.netMode != 1 && !noLiquidCheck)
75100 {
75101 Liquid.AddWater(i, j);
75102 }
75103 if (tile.active())
75104 {
75105 if (!TileLoader.TileFrame(i, j, tile.type, ref resetFrame, ref noBreak) || (noBreak && Main.tileFrameImportant[tile.type] && !TileID.Sets.Torch[tile.type]))
75106 {
75107 return;
75108 }
75109 int num = tile.type;
75110 if (Main.tileStone[num])
75111 {
75112 num = 1;
75113 }
75114 int frameX = tile.frameX;
75115 int frameY = tile.frameY;
75116 Rectangle rectangle = default(Rectangle);
75117 ((Rectangle)(ref rectangle))._002Ector(-1, -1, 0, 0);
75118 int num43;
75119 if (Main.tileFrameImportant[tile.type])
75120 {
75121 num43 = num;
75122 switch (num43)
75123 {
75124 case 518:
75125 CheckLilyPad(i, j);
75126 return;
75127 case 519:
75128 CheckCatTail(i, j);
75129 return;
75130 case 549:
75131 CheckUnderwaterPlant(549, i, j);
75132 return;
75133 case 571:
75134 CheckBamboo(i, j);
75135 return;
75136 }
75137 if (!TileID.Sets.Torch[num])
75138 {
75139 switch (num43)
75140 {
75141 case 442:
75143 break;
75144 case 136:
75145 {
75146 Tile tile3 = Main.tile[i, j - 1];
75147 Tile tile17 = Main.tile[i, j + 1];
75148 Tile tile24 = Main.tile[i - 1, j];
75149 Tile tile31 = Main.tile[i + 1, j];
75150 Tile tile35 = Main.tile[i - 1, j + 1];
75151 Tile tile38 = Main.tile[i + 1, j + 1];
75152 Tile tile41 = Main.tile[i - 1, j - 1];
75153 Tile tile44 = Main.tile[i + 1, j - 1];
75154 int num13 = -1;
75155 int num14 = -1;
75156 int num15 = -1;
75157 int tree = -1;
75158 int tree2 = -1;
75159 int tree3 = -1;
75160 int tree4 = -1;
75161 if (tile3 != null && tile3.nactive())
75162 {
75163 _ = ref tile3.type;
75164 }
75165 if (tile17 != null && tile17.nactive() && !tile17.halfBrick() && !tile17.topSlope())
75166 {
75167 num13 = tile17.type;
75168 }
75169 if (tile24 != null && tile24.nactive())
75170 {
75171 num14 = tile24.type;
75172 }
75173 if (tile31 != null && tile31.nactive())
75174 {
75175 num15 = tile31.type;
75176 }
75177 if (tile35 != null && tile35.nactive())
75178 {
75179 tree = tile35.type;
75180 }
75181 if (tile38 != null && tile38.nactive())
75182 {
75183 tree2 = tile38.type;
75184 }
75185 if (tile41 != null && tile41.nactive())
75186 {
75187 tree3 = tile41.type;
75188 }
75189 if (tile44 != null && tile44.nactive())
75190 {
75191 tree4 = tile44.type;
75192 }
75193 if (num13 >= 0 && Main.tileSolid[num13] && !Main.tileNoAttach[num13] && tile17 != null && !tile17.halfBrick() && (tile17.slope() == 0 || tile17.bottomSlope()))
75194 {
75195 tile.frameX = 0;
75196 }
75197 else if ((num14 >= 0 && Main.tileSolid[num14] && !Main.tileNoAttach[num14] && tile24 != null && (tile24.leftSlope() || tile24.slope() == 0) && !tile24.halfBrick()) || (num14 >= 0 && TileID.Sets.IsBeam[num14]) || (IsTreeType(num14) && IsTreeType(tree3) && IsTreeType(tree)))
75198 {
75199 tile.frameX = 18;
75200 }
75201 else if ((num15 >= 0 && Main.tileSolid[num15] && !Main.tileNoAttach[num15] && tile31 != null && (tile31.rightSlope() || tile31.slope() == 0) && !tile31.halfBrick()) || (num15 >= 0 && TileID.Sets.IsBeam[num15]) || (IsTreeType(num15) && IsTreeType(tree4) && IsTreeType(tree2)))
75202 {
75203 tile.frameX = 36;
75204 }
75205 else if (tile.wall > 0)
75206 {
75207 tile.frameX = 54;
75208 }
75209 else
75210 {
75211 KillTile(i, j);
75212 }
75213 break;
75214 }
75215 case 129:
75216 case 149:
75217 {
75218 Tile tile9 = Main.tile[i, j - 1];
75219 Tile tile18 = Main.tile[i, j + 1];
75220 Tile tile25 = Main.tile[i - 1, j];
75221 Tile tile32 = Main.tile[i + 1, j];
75222 int num16 = -1;
75223 int num17 = -1;
75224 int num18 = -1;
75225 int num19 = -1;
75226 if (tile9 != null && tile9.nactive() && !tile9.bottomSlope())
75227 {
75228 num17 = tile9.type;
75229 }
75230 if (tile18 != null && tile18.nactive() && !tile18.halfBrick() && !tile18.topSlope())
75231 {
75232 num16 = tile18.type;
75233 }
75234 if (tile25 != null && tile25.nactive() && !tile32.rightSlope())
75235 {
75236 num18 = tile25.type;
75237 }
75238 if (tile32 != null && tile32.nactive() && !tile32.leftSlope())
75239 {
75240 num19 = tile32.type;
75241 }
75242 if (num16 >= 0 && Main.tileSolid[num16] && !Main.tileSolidTop[num16])
75243 {
75244 tile.frameY = 0;
75245 }
75246 else if (num18 >= 0 && Main.tileSolid[num18] && !Main.tileSolidTop[num18])
75247 {
75248 tile.frameY = 54;
75249 }
75250 else if (num19 >= 0 && Main.tileSolid[num19] && !Main.tileSolidTop[num19])
75251 {
75252 tile.frameY = 36;
75253 }
75254 else if (num17 >= 0 && Main.tileSolid[num17] && !Main.tileSolidTop[num17])
75255 {
75256 tile.frameY = 18;
75257 }
75258 else
75259 {
75260 KillTile(i, j);
75261 }
75262 break;
75263 }
75264 default:
75265 if (num != 461)
75266 {
75267 switch (num)
75268 {
75269 case 178:
75270 {
75271 Tile tile6 = Main.tile[i, j - 1];
75272 Tile tile14 = Main.tile[i, j + 1];
75273 Tile tile22 = Main.tile[i - 1, j];
75274 Tile tile29 = Main.tile[i + 1, j];
75275 int num7 = -1;
75276 int num8 = -1;
75277 int num9 = -1;
75278 int num10 = -1;
75279 if (tile6 != null && tile6.nactive() && !tile6.bottomSlope())
75280 {
75281 num8 = tile6.type;
75282 }
75283 if (tile14 != null && tile14.nactive() && !tile14.halfBrick() && !tile14.topSlope())
75284 {
75285 num7 = tile14.type;
75286 }
75287 if (tile22 != null && tile22.nactive() && !tile22.halfBrick() && !tile22.rightSlope())
75288 {
75289 num9 = tile22.type;
75290 }
75291 if (tile29 != null && tile29.nactive() && !tile29.halfBrick() && !tile29.leftSlope())
75292 {
75293 num10 = tile29.type;
75294 }
75295 if (num9 == 10)
75296 {
75297 num9 = -1;
75298 }
75299 if (num10 == 10)
75300 {
75301 num10 = -1;
75302 }
75303 short num11 = (short)(genRand.Next(3) * 18);
75304 if (num7 >= 0 && Main.tileSolid[num7] && !Main.tileSolidTop[num7])
75305 {
75306 if (tile.frameY < 0 || tile.frameY > 36)
75307 {
75308 tile.frameY = num11;
75309 }
75310 }
75311 else if (num9 >= 0 && Main.tileSolid[num9] && !Main.tileSolidTop[num9])
75312 {
75313 if (tile.frameY < 108 || tile.frameY > 54)
75314 {
75315 tile.frameY = (short)(108 + num11);
75316 }
75317 }
75318 else if (num10 >= 0 && Main.tileSolid[num10] && !Main.tileSolidTop[num10])
75319 {
75320 if (tile.frameY < 162 || tile.frameY > 198)
75321 {
75322 tile.frameY = (short)(162 + num11);
75323 }
75324 }
75325 else if (num8 >= 0 && Main.tileSolid[num8] && !Main.tileSolidTop[num8])
75326 {
75327 if (tile.frameY < 54 || tile.frameY > 90)
75328 {
75329 tile.frameY = (short)(54 + num11);
75330 }
75331 }
75332 else
75333 {
75334 KillTile(i, j);
75335 }
75336 break;
75337 }
75338 case 184:
75339 {
75340 Tile tile7 = Main.tile[i, j - 1];
75341 Tile tile15 = Main.tile[i, j + 1];
75342 Tile tile23 = Main.tile[i - 1, j];
75343 Tile tile30 = Main.tile[i + 1, j];
75344 int num2 = -1;
75345 int num3 = -1;
75346 int num4 = -1;
75347 int num5 = -1;
75348 if (tile7 != null && tile7.active() && !tile7.bottomSlope())
75349 {
75350 num3 = tile7.type;
75351 }
75352 if (tile15 != null && tile15.active() && !tile15.halfBrick() && !tile15.topSlope())
75353 {
75354 num2 = tile15.type;
75355 }
75356 if (tile23 != null && tile23.active())
75357 {
75358 num4 = tile23.type;
75359 }
75360 if (tile30 != null && tile30.active())
75361 {
75362 num5 = tile30.type;
75363 }
75364 short num6 = (short)(genRand.Next(3) * 18);
75365 if (num2 >= 0 && GetTileMossColor(num2) != -1)
75366 {
75367 tile.frameX = (short)(22 * GetTileMossColor(num2));
75368 if (tile.frameY < 0 || tile.frameY > 36)
75369 {
75370 tile.frameY = num6;
75371 }
75372 }
75373 else if (num3 >= 0 && GetTileMossColor(num3) != -1)
75374 {
75375 tile.frameX = (short)(22 * GetTileMossColor(num3));
75376 if (tile.frameY < 54 || tile.frameY > 90)
75377 {
75378 tile.frameY = (short)(54 + num6);
75379 }
75380 }
75381 else if (num4 >= 0 && GetTileMossColor(num4) != -1)
75382 {
75383 tile.frameX = (short)(22 * GetTileMossColor(num4));
75384 if (tile.frameY < 108 || tile.frameY > 144)
75385 {
75386 tile.frameY = (short)(108 + num6);
75387 }
75388 }
75389 else if (num5 >= 0 && GetTileMossColor(num5) != -1)
75390 {
75391 tile.frameX = (short)(22 * GetTileMossColor(num5));
75392 if (tile.frameY < 162 || tile.frameY > 198)
75393 {
75394 tile.frameY = (short)(162 + num6);
75395 }
75396 }
75397 else
75398 {
75399 KillTile(i, j);
75400 }
75401 break;
75402 }
75403 case 529:
75404 {
75405 if (!SolidTileAllowBottomSlope(i, j + 1))
75406 {
75407 KillTile(i, j);
75408 break;
75409 }
75410 Tile tile16 = Main.tile[i, j + 1];
75411 _ = Main.tile[i, j].frameY / 34;
75412 if (tile16 == null || !tile16.active() || (tile16.type >= 0 && !TileID.Sets.Conversion.Sand[tile16.type]))
75413 {
75414 KillTile(i, j);
75415 }
75416 break;
75417 }
75418 case 3:
75419 case 24:
75420 case 61:
75421 case 71:
75422 case 73:
75423 case 74:
75424 case 110:
75425 case 113:
75426 case 201:
75427 case 637:
75428 PlantCheck(i, j);
75429 break;
75430 case 227:
75431 CheckDye(i, j);
75432 break;
75433 case 579:
75435 break;
75436 case 12:
75437 case 31:
75438 case 639:
75439 CheckOrb(i, j, num);
75440 break;
75441 case 165:
75442 CheckTight(i, j);
75443 break;
75444 case 324:
75445 if (!SolidTileAllowBottomSlope(i, j + 1))
75446 {
75447 KillTile(i, j);
75448 }
75449 break;
75450 case 235:
75451 Check3x1(i, j, num);
75452 break;
75453 case 185:
75454 CheckPile(i, j);
75455 break;
75456 default:
75457 if (num != 296 && num != 297 && num != 309 && num != 358 && num != 359 && num != 413 && num != 414 && num != 542 && num != 550 && num != 551 && num != 553 && num != 554 && num != 558 && num != 559 && num != 599 && num != 600 && num != 601 && num != 602 && num != 603 && num != 604 && num != 605 && num != 606 && num != 607 && num != 608 && num != 609 && num != 610 && num != 611 && num != 612 && num != 632 && num != 640 && num != 643 && num != 644 && num != 645)
75458 {
75459 if (num == 10)
75460 {
75461 CheckDoorClosed(i, j, tile, num);
75462 break;
75463 }
75464 if (num == 11)
75465 {
75466 CheckDoorOpen(i, j, tile);
75467 break;
75468 }
75469 if (num == 314)
75470 {
75471 Minecart.FrameTrack(i, j, pound: false);
75472 Tile tile2 = Main.tile[i, j - 1];
75473 Tile tile11 = Main.tile[i, j + 1];
75474 if (tile2 != null && tile2.type >= 0 && Main.tileRope[tile2.type])
75475 {
75476 TileFrame(i, j - 1);
75477 }
75478 if (tile11 != null && tile11.type >= 0 && Main.tileRope[tile11.type])
75479 {
75480 TileFrame(i, j + 1);
75481 }
75482 break;
75483 }
75484 if (num == 380)
75485 {
75486 Tile tile20 = Main.tile[i - 1, j];
75487 if (tile20 == null)
75488 {
75489 break;
75490 }
75491 Tile tile27 = Main.tile[i + 1, j];
75492 if (!(tile27 == null) && !(Main.tile[i - 1, j + 1] == null) && !(Main.tile[i + 1, j + 1] == null) && !(Main.tile[i - 1, j - 1] == null) && Main.tile[i + 1, j - 1] != null)
75493 {
75494 int num12 = -1;
75495 int num23 = -1;
75496 if (tile20 != null && tile20.active())
75497 {
75498 num23 = (Main.tileStone[tile20.type] ? 1 : tile20.type);
75499 }
75500 if (tile27 != null && tile27.active())
75501 {
75502 num12 = (Main.tileStone[tile27.type] ? 1 : tile27.type);
75503 }
75504 if (num12 >= 0 && !Main.tileSolid[num12])
75505 {
75506 num12 = -1;
75507 }
75508 if (num23 >= 0 && !Main.tileSolid[num23])
75509 {
75510 num23 = -1;
75511 }
75512 if (num23 == num && num12 == num)
75513 {
75514 rectangle.X = 18;
75515 }
75516 else if (num23 == num && num12 != num)
75517 {
75518 rectangle.X = 36;
75519 }
75520 else if (num23 != num && num12 == num)
75521 {
75522 rectangle.X = 0;
75523 }
75524 else
75525 {
75526 rectangle.X = 54;
75527 }
75528 tile.frameX = (short)rectangle.X;
75529 }
75530 break;
75531 }
75532 if (num >= 0 && TileID.Sets.Platforms[num])
75533 {
75534 Tile tile21 = Main.tile[i - 1, j];
75535 if (tile21 == null)
75536 {
75537 break;
75538 }
75539 Tile tile28 = Main.tile[i + 1, j];
75540 if (tile28 == null)
75541 {
75542 break;
75543 }
75544 Tile tile34 = Main.tile[i - 1, j + 1];
75545 if (tile34 == null)
75546 {
75547 break;
75548 }
75549 Tile tile37 = Main.tile[i + 1, j + 1];
75550 if (tile37 == null)
75551 {
75552 break;
75553 }
75554 Tile tile40 = Main.tile[i - 1, j - 1];
75555 if (tile40 == null)
75556 {
75557 break;
75558 }
75559 Tile tile43 = Main.tile[i + 1, j - 1];
75560 if (tile43 == null)
75561 {
75562 break;
75563 }
75564 int num31 = -1;
75565 int num38 = -1;
75566 if (tile21 != null && tile21.active())
75567 {
75568 num38 = (Main.tileStone[tile21.type] ? 1 : ((!TileID.Sets.Platforms[tile21.type]) ? tile21.type : num));
75569 }
75570 if (tile28 != null && tile28.active())
75571 {
75572 num31 = (Main.tileStone[tile28.type] ? 1 : ((!TileID.Sets.Platforms[tile28.type]) ? tile28.type : num));
75573 }
75574 if (num31 >= 0 && !Main.tileSolid[num31])
75575 {
75576 num31 = -1;
75577 }
75578 if (num38 >= 0 && !Main.tileSolid[num38])
75579 {
75580 num38 = -1;
75581 }
75582 if (num38 == num && tile21.halfBrick() != tile.halfBrick())
75583 {
75584 num38 = -1;
75585 }
75586 if (num31 == num && tile28.halfBrick() != tile.halfBrick())
75587 {
75588 num31 = -1;
75589 }
75590 if (num38 != -1 && num38 != num && tile.halfBrick())
75591 {
75592 num38 = -1;
75593 }
75594 if (num31 != -1 && num31 != num && tile.halfBrick())
75595 {
75596 num31 = -1;
75597 }
75598 if (num38 == -1 && tile40.active() && tile40.type == num && tile40.slope() == 1)
75599 {
75600 num38 = num;
75601 }
75602 if (num31 == -1 && tile43.active() && tile43.type == num && tile43.slope() == 2)
75603 {
75604 num31 = num;
75605 }
75606 if (num38 == num && tile21.slope() == 2 && num31 != num)
75607 {
75608 num31 = -1;
75609 }
75610 if (num31 == num && tile28.slope() == 1 && num38 != num)
75611 {
75612 num38 = -1;
75613 }
75614 if (tile.slope() == 1)
75615 {
75616 if (TileID.Sets.Platforms[tile28.type] && tile28.slope() == 0 && !tile28.halfBrick())
75617 {
75618 rectangle.X = 468;
75619 }
75620 else if (!tile37.active() && (!TileID.Sets.Platforms[tile37.type] || tile37.slope() == 2))
75621 {
75622 if (!tile21.active() && (!TileID.Sets.Platforms[tile40.type] || tile40.slope() != 1))
75623 {
75624 rectangle.X = 432;
75625 }
75626 else
75627 {
75628 rectangle.X = 360;
75629 }
75630 }
75631 else if (!tile21.active() && (!TileID.Sets.Platforms[tile40.type] || tile40.slope() != 1))
75632 {
75633 rectangle.X = 396;
75634 }
75635 else
75636 {
75637 rectangle.X = 180;
75638 }
75639 }
75640 else if (tile.slope() == 2)
75641 {
75642 if (TileID.Sets.Platforms[tile21.type] && tile21.slope() == 0 && !tile21.halfBrick())
75643 {
75644 rectangle.X = 450;
75645 }
75646 else if (!tile34.active() && (!TileID.Sets.Platforms[tile34.type] || tile34.slope() == 1))
75647 {
75648 if (!tile28.active() && (!TileID.Sets.Platforms[tile43.type] || tile43.slope() != 2))
75649 {
75650 rectangle.X = 414;
75651 }
75652 else
75653 {
75654 rectangle.X = 342;
75655 }
75656 }
75657 else if (!tile28.active() && (!TileID.Sets.Platforms[tile43.type] || tile43.slope() != 2))
75658 {
75659 rectangle.X = 378;
75660 }
75661 else
75662 {
75663 rectangle.X = 144;
75664 }
75665 }
75666 else if (num38 == num && num31 == num)
75667 {
75668 if (tile21.slope() == 2 && tile28.slope() == 1)
75669 {
75670 rectangle.X = 252;
75671 }
75672 else if (tile21.slope() == 2)
75673 {
75674 rectangle.X = 216;
75675 }
75676 else if (tile28.slope() == 1)
75677 {
75678 rectangle.X = 234;
75679 }
75680 else
75681 {
75682 rectangle.X = 0;
75683 }
75684 }
75685 else if (num38 == num && num31 == -1)
75686 {
75687 if (tile21.slope() == 2)
75688 {
75689 rectangle.X = 270;
75690 }
75691 else
75692 {
75693 rectangle.X = 18;
75694 }
75695 }
75696 else if (num38 == -1 && num31 == num)
75697 {
75698 if (tile28.slope() == 1)
75699 {
75700 rectangle.X = 288;
75701 }
75702 else
75703 {
75704 rectangle.X = 36;
75705 }
75706 }
75707 else if (num38 != num && num31 == num)
75708 {
75709 rectangle.X = 54;
75710 }
75711 else if (num38 == num && num31 != num)
75712 {
75713 rectangle.X = 72;
75714 }
75715 else if (num38 != num && num38 != -1 && num31 == -1)
75716 {
75717 rectangle.X = 108;
75718 }
75719 else if (num38 == -1 && num31 != num && num31 != -1)
75720 {
75721 rectangle.X = 126;
75722 }
75723 else
75724 {
75725 rectangle.X = 90;
75726 }
75727 tile.frameX = (short)rectangle.X;
75728 if (Main.tile[i, j - 1] != null && Main.tileRope[Main.tile[i, j - 1].type])
75729 {
75730 TileFrame(i, j - 1);
75731 }
75732 if (Main.tile[i, j + 1] != null && Main.tileRope[Main.tile[i, j + 1].type])
75733 {
75734 TileFrame(i, j + 1);
75735 }
75736 break;
75737 }
75738 switch (num)
75739 {
75740 case 233:
75741 case 236:
75742 case 238:
75743 CheckJunglePlant(i, j, num);
75744 return;
75745 case 530:
75746 CheckOasisPlant(i, j);
75747 return;
75748 case 240:
75749 case 440:
75750 Check3x3Wall(i, j);
75751 return;
75752 case 245:
75753 Check2x3Wall(i, j);
75754 return;
75755 case 246:
75756 Check3x2Wall(i, j);
75757 return;
75758 case 241:
75759 Check4x3Wall(i, j);
75760 return;
75761 case 242:
75762 Check6x4Wall(i, j);
75763 return;
75764 case 464:
75765 case 466:
75766 Check5x4(i, j, num);
75767 return;
75768 case 334:
75769 CheckWeaponsRack(i, j);
75770 return;
75771 case 471:
75773 return;
75774 case 34:
75775 case 454:
75776 CheckChand(i, j, num);
75777 return;
75778 case 547:
75779 case 623:
75780 Check2x5(i, j, num);
75781 return;
75782 case 548:
75783 case 614:
75784 Check3x6(i, j, num);
75785 return;
75786 case 613:
75787 Check3x5(i, j, num);
75788 return;
75789 default:
75790 {
75791 if (num == 354 || num == 406 || num == 412 || num == 355 || num == 452 || num == 455 || num == 491 || num == 499 || num == 642)
75792 {
75793 break;
75794 }
75795 int num44 = num;
75796 if (num44 != 15 && !TileID.Sets.TreeSapling[num])
75797 {
75798 switch (num44)
75799 {
75800 case 216:
75801 case 338:
75802 case 390:
75803 case 493:
75804 case 497:
75805 case 590:
75806 case 595:
75807 case 615:
75808 break;
75809 default:
75810 if (num < 391 || num > 394)
75811 {
75812 switch (num)
75813 {
75814 case 36:
75815 case 135:
75816 case 141:
75817 case 144:
75818 case 210:
75819 case 239:
75820 case 428:
75821 case 593:
75822 case 624:
75823 case 650:
75824 case 656:
75825 Check1x1(i, j, num);
75826 return;
75827 case 476:
75828 CheckGolf1x1(i, j, num);
75829 return;
75830 case 494:
75831 CheckGolf1x1(i, j, num);
75832 return;
75833 case 419:
75834 case 420:
75835 case 423:
75836 case 424:
75837 case 429:
75838 case 445:
75839 CheckLogicTiles(i, j, num);
75840 return;
75841 case 16:
75842 case 18:
75843 case 29:
75844 case 103:
75845 case 134:
75846 case 462:
75847 case 649:
75848 Check2x1(i, j, (ushort)num);
75849 return;
75850 case 13:
75851 case 33:
75852 case 49:
75853 case 50:
75854 case 78:
75855 case 174:
75856 case 372:
75857 case 646:
75858 CheckOnTable1x1(i, j, num);
75859 return;
75860 default:
75862 {
75863 CheckChest(i, j, num);
75864 return;
75865 }
75866 switch (num)
75867 {
75868 case 128:
75869 CheckMan(i, j);
75870 return;
75871 case 269:
75872 CheckWoman(i, j);
75873 return;
75874 case 470:
75876 return;
75877 case 475:
75879 return;
75880 case 597:
75882 return;
75883 case 27:
75884 CheckSunflower(i, j);
75885 return;
75886 case 28:
75887 case 653:
75888 CheckPot(i, j, num);
75889 return;
75890 case 171:
75891 CheckXmasTree(i, j);
75892 return;
75893 default:
75894 if ((TileID.Sets.BasicChestFake[num] || num == 457) && num < TileID.Count)
75895 {
75896 break;
75897 }
75898 switch (num)
75899 {
75900 case 335:
75901 case 411:
75902 case 490:
75903 case 564:
75904 case 565:
75905 case 594:
75906 Check2x2(i, j, num);
75907 return;
75908 default:
75909 if (num >= 316 && num <= 318)
75910 {
75911 break;
75912 }
75913 switch (num)
75914 {
75915 case 376:
75916 case 443:
75917 case 444:
75918 case 485:
75919 CheckSuper(i, j, num);
75920 return;
75921 case 91:
75922 CheckBanner(i, j, (byte)num);
75923 return;
75924 case 35:
75925 case 139:
75926 CheckMB(i, j, (byte)num);
75927 return;
75928 case 386:
75929 case 387:
75930 CheckTrapDoor(i, j, num);
75931 return;
75932 case 388:
75933 case 389:
75934 CheckTallGate(i, j, num);
75935 return;
75936 case 92:
75937 case 93:
75938 case 453:
75939 Check1xX(i, j, (short)num);
75940 return;
75941 case 104:
75942 case 105:
75943 case 207:
75944 case 320:
75945 case 337:
75946 case 349:
75947 case 356:
75948 case 378:
75949 case 410:
75950 case 456:
75951 case 465:
75952 case 480:
75953 case 489:
75954 case 506:
75955 case 509:
75956 case 531:
75957 case 545:
75958 case 560:
75959 case 591:
75960 case 592:
75961 case 657:
75962 case 658:
75963 case 663:
75964 Check2xX(i, j, (ushort)num);
75965 return;
75966 case 101:
75967 case 102:
75968 case 463:
75969 case 617:
75970 Check3x4(i, j, num);
75971 return;
75972 case 42:
75973 case 270:
75974 case 271:
75975 case 572:
75976 case 581:
75977 case 660:
75978 Check1x2Top(i, j, (ushort)num);
75979 return;
75980 case 55:
75981 case 85:
75982 case 395:
75983 case 425:
75984 case 510:
75985 case 511:
75986 case 573:
75987 CheckSign(i, j, (ushort)num);
75988 return;
75989 case 520:
75990 CheckFoodPlatter(i, j, (ushort)num);
75991 return;
75992 case 209:
75993 CheckCannon(i, j, num);
75994 return;
75995 case 79:
75996 case 90:
75997 case 487:
75998 Check4x2(i, j, num);
75999 return;
76000 case 94:
76001 case 95:
76002 case 97:
76003 case 98:
76004 case 99:
76005 case 100:
76006 case 125:
76007 case 126:
76008 case 173:
76009 case 282:
76010 case 287:
76011 case 319:
76012 case 621:
76013 case 622:
76014 Check2x2(i, j, num);
76015 return;
76016 case 96:
76017 Check2x2Style(i, j, num);
76018 return;
76019 case 81:
76020 {
76021 Tile tile5 = Main.tile[i, j - 1];
76022 Tile tile13 = Main.tile[i, j + 1];
76023 _ = Main.tile[i - 1, j];
76024 _ = Main.tile[i + 1, j];
76025 int num41 = -1;
76026 int num42 = -1;
76027 if (tile5 != null && tile5.active())
76028 {
76029 num42 = tile5.type;
76030 }
76031 if (tile13 != null && tile13.active())
76032 {
76033 num41 = tile13.type;
76034 }
76035 if (num42 != -1)
76036 {
76037 KillTile(i, j);
76038 }
76039 else if (num41 < 0 || !Main.tileSolid[num41] || (tile13 != null && (tile13.halfBrick() || tile13.topSlope())))
76040 {
76041 KillTile(i, j);
76042 }
76043 return;
76044 }
76045 default:
76046 if (Main.tileAlch[num])
76047 {
76048 CheckAlch(i, j);
76049 return;
76050 }
76051 switch (num)
76052 {
76053 case 72:
76054 {
76055 Tile tile4 = Main.tile[i, j - 1];
76056 Tile tile12 = Main.tile[i, j + 1];
76057 int num39 = -1;
76058 int num40 = -1;
76059 if (tile4 != null && tile4.active())
76060 {
76061 num40 = tile4.type;
76062 }
76063 if (tile12 != null && tile12.active())
76064 {
76065 num39 = tile12.type;
76066 }
76067 if (num39 != num && num39 != 70)
76068 {
76069 KillTile(i, j);
76070 }
76071 else if (num40 != num && tile.frameX == 0)
76072 {
76073 tile.frameNumber((byte)genRand.Next(3));
76074 if (tile.frameNumber() == 0)
76075 {
76076 tile.frameX = 18;
76077 tile.frameY = 0;
76078 }
76079 if (tile.frameNumber() == 1)
76080 {
76081 tile.frameX = 18;
76082 tile.frameY = 18;
76083 }
76084 if (tile.frameNumber() == 2)
76085 {
76086 tile.frameX = 18;
76087 tile.frameY = 36;
76088 }
76089 }
76090 break;
76091 }
76092 case 5:
76093 CheckTree(i, j);
76094 break;
76095 case 583:
76096 case 584:
76097 case 585:
76098 case 586:
76099 case 587:
76100 case 588:
76101 case 589:
76102 CheckTreeWithSettings(i, j, new CheckTreeSettings
76103 {
76104 IsGroundValid = GemTreeGroundTest
76105 });
76106 break;
76107 case 596:
76108 CheckTreeWithSettings(i, j, new CheckTreeSettings
76109 {
76110 IsGroundValid = VanityTreeGroundTest
76111 });
76112 break;
76113 case 616:
76114 CheckTreeWithSettings(i, j, new CheckTreeSettings
76115 {
76116 IsGroundValid = VanityTreeGroundTest
76117 });
76118 break;
76119 case 634:
76120 CheckTreeWithSettings(i, j, new CheckTreeSettings
76121 {
76122 IsGroundValid = AshTreeGroundTest
76123 });
76124 break;
76125 case 323:
76126 CheckPalmTree(i, j);
76127 break;
76128 case 567:
76129 CheckGnome(i, j);
76130 break;
76131 case 630:
76132 case 631:
76134 break;
76135 }
76137 return;
76138 case 172:
76139 case 360:
76140 case 505:
76141 case 521:
76142 case 522:
76143 case 523:
76144 case 524:
76145 case 525:
76146 case 526:
76147 case 527:
76148 case 543:
76149 case 568:
76150 case 569:
76151 case 570:
76152 case 580:
76153 case 598:
76154 case 620:
76155 case 652:
76156 case 654:
76157 break;
76158 }
76159 break;
76160 case 132:
76161 case 138:
76162 case 142:
76163 case 143:
76164 case 288:
76165 case 289:
76166 case 290:
76167 case 291:
76168 case 292:
76169 case 293:
76170 case 294:
76171 case 295:
76172 case 484:
76173 case 664:
76174 case 665:
76175 break;
76176 }
76177 Check2x2(i, j, num);
76178 return;
76179 case 254:
76180 break;
76181 }
76182 Check2x2Style(i, j, num);
76183 return;
76184 case 405:
76185 case 486:
76186 case 488:
76187 case 532:
76188 case 533:
76189 case 544:
76190 case 552:
76191 case 555:
76192 case 556:
76193 case 582:
76194 case 619:
76195 case 629:
76196 case 647:
76197 case 648:
76198 case 651:
76199 break;
76200 }
76201 }
76202 goto case 14;
76203 case 14:
76204 case 17:
76205 case 26:
76206 case 77:
76207 case 86:
76208 case 87:
76209 case 88:
76210 case 89:
76211 case 114:
76212 case 133:
76213 case 186:
76214 case 187:
76215 case 215:
76216 case 217:
76217 case 218:
76218 case 237:
76219 case 244:
76220 case 285:
76221 case 286:
76222 case 298:
76223 case 299:
76224 case 310:
76225 case 339:
76226 case 361:
76227 case 362:
76228 case 363:
76229 case 364:
76230 case 377:
76231 case 469:
76232 case 538:
76233 Check3x2(i, j, (ushort)num);
76234 return;
76235 }
76236 }
76237 Check1x2(i, j, (ushort)num);
76238 return;
76239 }
76240 case 106:
76241 case 212:
76242 case 219:
76243 case 220:
76244 case 228:
76245 case 231:
76246 case 243:
76247 case 247:
76248 case 283:
76249 case 300:
76250 case 301:
76251 case 302:
76252 case 303:
76253 case 304:
76254 case 305:
76255 case 306:
76256 case 307:
76257 case 308:
76258 break;
76259 }
76260 Check3x3(i, j, (ushort)num);
76261 break;
76262 }
76263 goto case 275;
76264 case 275:
76265 case 276:
76266 case 277:
76267 case 278:
76268 case 279:
76269 case 280:
76270 case 281:
76271 Check6x3(i, j, num);
76272 break;
76273 }
76274 break;
76275 }
76276 goto case 373;
76277 case 373:
76278 case 374:
76279 case 375:
76280 {
76281 Tile tile8 = Main.tile[i, j - 1];
76282 if (tile8 == null || !tile8.active() || tile8.bottomSlope() || !Main.tileSolid[tile8.type] || Main.tileSolidTop[tile8.type])
76283 {
76284 KillTile(i, j);
76285 }
76286 break;
76287 }
76288 }
76289 }
76290 else
76291 {
76292 CheckTorch(i, j);
76293 }
76294 return;
76295 }
76296 if ((num >= 255 && num <= 268) || num == 385 || (uint)(num - 446) <= 2u)
76297 {
76298 Framing.SelfFrame8Way(i, j, tile, resetFrame);
76299 return;
76300 }
76301 Tile tile10 = Main.tile[i, j - 1];
76302 Tile tile19 = Main.tile[i, j + 1];
76303 Tile tile26 = Main.tile[i - 1, j];
76304 Tile tile33 = Main.tile[i + 1, j];
76305 Tile tile36 = Main.tile[i - 1, j + 1];
76306 Tile tile39 = Main.tile[i + 1, j + 1];
76307 Tile tile42 = Main.tile[i - 1, j - 1];
76308 Tile tile45 = Main.tile[i + 1, j - 1];
76309 int upLeft = -1;
76310 int up = -1;
76311 int upRight = -1;
76312 int left = -1;
76313 int right = -1;
76314 int downLeft = -1;
76315 int down = -1;
76316 int downRight = -1;
76317 if (tile26 != null && tile26.active())
76318 {
76319 left = (Main.tileStone[tile26.type] ? 1 : tile26.type);
76320 if (tile26.slope() == 1 || tile26.slope() == 3)
76321 {
76322 left = -1;
76323 }
76324 }
76325 if (tile33 != null && tile33.active())
76326 {
76327 right = (Main.tileStone[tile33.type] ? 1 : tile33.type);
76328 if (tile33.slope() == 2 || tile33.slope() == 4)
76329 {
76330 right = -1;
76331 }
76332 }
76333 if (tile10 != null && tile10.active())
76334 {
76335 up = (Main.tileStone[tile10.type] ? 1 : tile10.type);
76336 if (tile10.slope() == 3 || tile10.slope() == 4)
76337 {
76338 up = -1;
76339 }
76340 }
76341 if (tile19 != null && tile19.active())
76342 {
76343 down = (Main.tileStone[tile19.type] ? 1 : tile19.type);
76344 if (tile19.slope() == 1 || tile19.slope() == 2)
76345 {
76346 down = -1;
76347 }
76348 }
76349 if (tile42 != null && tile42.active())
76350 {
76351 upLeft = (Main.tileStone[tile42.type] ? 1 : tile42.type);
76352 }
76353 if (tile45 != null && tile45.active())
76354 {
76355 upRight = (Main.tileStone[tile45.type] ? 1 : tile45.type);
76356 }
76357 if (tile36 != null && tile36.active())
76358 {
76359 downLeft = (Main.tileStone[tile36.type] ? 1 : tile36.type);
76360 }
76361 if (tile39 != null && tile39.active())
76362 {
76363 downRight = (Main.tileStone[tile39.type] ? 1 : tile39.type);
76364 }
76365 if (tile.slope() == 2)
76366 {
76367 up = -1;
76368 left = -1;
76369 }
76370 if (tile.slope() == 1)
76371 {
76372 up = -1;
76373 right = -1;
76374 }
76375 if (tile.slope() == 4)
76376 {
76377 down = -1;
76378 left = -1;
76379 }
76380 if (tile.slope() == 3)
76381 {
76382 down = -1;
76383 right = -1;
76384 }
76385 if (num == 668)
76386 {
76387 num = 0;
76388 }
76390 num43 = num;
76391 if (TileID.Sets.Snow[num])
76392 {
76393 TileMergeAttempt(num, Main.tileBrick, TileID.Sets.Ices, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76394 }
76395 else if (!TileID.Sets.Ices[num])
76396 {
76397 if (num43 == 162)
76398 {
76399 TileMergeAttempt(num, Main.tileBrick, TileID.Sets.IcesSnow, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76400 }
76401 else if (Main.tileBrick[num])
76402 {
76403 int num44 = num;
76405 {
76406 if (num44 == 633)
76407 {
76408 TileMergeAttempt(num, Main.tileBrick, TileID.Sets.Ash, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76409 }
76410 else
76411 {
76412 TileMergeAttempt(num, Main.tileBrick, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76413 }
76414 }
76415 else
76416 {
76417 TileMergeAttempt(num, Main.tileBrick, TileID.Sets.Mud, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76418 }
76419 }
76420 else if (Main.tilePile[num])
76421 {
76422 TileMergeAttempt(num, Main.tilePile, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76423 }
76424 }
76425 else
76426 {
76427 TileMergeAttempt(num, Main.tileBrick, TileID.Sets.Snow, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76428 }
76429 if ((TileID.Sets.Stone[num] || Main.tileMoss[num]) && down == 165)
76430 {
76431 if (tile19 != null && tile19.frameY == 72)
76432 {
76433 down = num;
76434 }
76435 else if (tile19 != null && tile19.frameY == 0)
76436 {
76437 down = num;
76438 }
76439 }
76440 if ((TileID.Sets.Stone[num] || Main.tileMoss[num]) && up == 165)
76441 {
76442 if (tile10 != null && tile10.frameY == 90)
76443 {
76444 up = num;
76445 }
76446 else if (tile10 != null && tile10.frameY == 54)
76447 {
76448 up = num;
76449 }
76450 }
76451 if (num == 225)
76452 {
76453 if (down == 165)
76454 {
76455 down = num;
76456 }
76457 if (up == 165)
76458 {
76459 up = num;
76460 }
76461 }
76462 if ((TileID.Sets.Ices[num] || num == 147) && down == 165)
76463 {
76464 down = num;
76465 }
76466 if ((tile.slope() == 1 || tile.slope() == 2) && down > -1 && !TileID.Sets.Platforms[down])
76467 {
76468 down = num;
76469 }
76470 if (up > -1 && tile10 != null && (tile10.slope() == 1 || tile10.slope() == 2) && !TileID.Sets.Platforms[up])
76471 {
76472 up = num;
76473 }
76474 if ((tile.slope() == 3 || tile.slope() == 4) && up > -1 && !TileID.Sets.Platforms[up])
76475 {
76476 up = num;
76477 }
76478 if (down > -1 && tile19 != null && (tile19.slope() == 3 || tile19.slope() == 4) && !TileID.Sets.Platforms[down])
76479 {
76480 down = num;
76481 }
76482 if (num == 124)
76483 {
76484 if (up > -1 && Main.tileSolid[up] && !TileID.Sets.Platforms[up])
76485 {
76486 up = num;
76487 }
76488 if (down > -1 && Main.tileSolid[down] && !TileID.Sets.Platforms[down])
76489 {
76490 down = num;
76491 }
76492 }
76493 if (up > -1 && tile10 != null && tile10.halfBrick() && !TileID.Sets.Platforms[up])
76494 {
76495 up = num;
76496 }
76497 if (left > -1 && tile26 != null && tile26.halfBrick())
76498 {
76499 if (tile.halfBrick())
76500 {
76501 left = num;
76502 }
76503 else if (tile26.type != num)
76504 {
76505 left = -1;
76506 }
76507 }
76508 if (right > -1 && tile33 != null && tile33.halfBrick())
76509 {
76510 if (tile.halfBrick())
76511 {
76512 right = num;
76513 }
76514 else if (tile33.type != num)
76515 {
76516 right = -1;
76517 }
76518 }
76519 if (tile.halfBrick())
76520 {
76521 if (left != num)
76522 {
76523 left = -1;
76524 }
76525 if (right != num)
76526 {
76527 right = -1;
76528 }
76529 up = -1;
76530 }
76531 if (tile19 != null && tile19.halfBrick())
76532 {
76533 down = -1;
76534 }
76535 if (!Main.tileSolid[num])
76536 {
76537 switch (num)
76538 {
76539 case 49:
76540 CheckOnTable1x1(i, j, (byte)num);
76541 return;
76542 case 80:
76543 CactusFrame(i, j);
76544 return;
76545 }
76546 }
76547 mergeUp = false;
76548 mergeDown = false;
76549 mergeLeft = false;
76550 mergeRight = false;
76551 int num20 = 0;
76552 if (resetFrame)
76553 {
76554 num20 = genRand.Next(0, 3);
76555 tile.frameNumber((byte)num20);
76556 }
76557 else
76558 {
76559 num20 = tile.frameNumber();
76560 }
76561 if (Main.tileLargeFrames[num] == 1)
76562 {
76563 int num21 = j % 4;
76564 int num22 = i % 3;
76565 num20 = (new int[4, 3]
76566 {
76567 { 2, 4, 2 },
76568 { 1, 3, 1 },
76569 { 2, 2, 4 },
76570 { 1, 1, 3 }
76571 })[num21, num22] - 1;
76572 }
76573 if (Main.tileLargeFrames[num] == 2)
76574 {
76575 int num45 = i % 2;
76576 int num24 = j % 2;
76577 num20 = num45 + num24 * 2;
76578 }
76579 if (!Main.tileRope[num] && TileID.Sets.BlockMergesWithMergeAllBlock[num])
76580 {
76581 TileMergeAttempt(num, Main.tileBlendAll, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76582 }
76583 if (Main.tileBlendAll[num])
76584 {
76586 }
76588 {
76590 }
76591 if (TileID.Sets.Dirt[num])
76592 {
76593 if (up > -1 && Main.tileMergeDirt[up])
76594 {
76595 TileFrame(i, j - 1);
76596 if (mergeDown)
76597 {
76598 up = num;
76599 }
76600 }
76601 else if (up >= 0 && TileID.Sets.Snow[up])
76602 {
76603 TileFrame(i, j - 1);
76604 if (mergeDown)
76605 {
76606 up = num;
76607 }
76608 }
76609 if (down > -1 && Main.tileMergeDirt[down])
76610 {
76611 TileFrame(i, j + 1);
76612 if (mergeUp)
76613 {
76614 down = num;
76615 }
76616 }
76617 else if (down >= 0 && TileID.Sets.Snow[down])
76618 {
76619 TileFrame(i, j + 1);
76620 if (mergeUp)
76621 {
76622 down = num;
76623 }
76624 }
76625 if (left > -1 && Main.tileMergeDirt[left])
76626 {
76627 TileFrame(i - 1, j);
76628 if (mergeRight)
76629 {
76630 left = num;
76631 }
76632 }
76633 else if (left >= 0 && TileID.Sets.Snow[left])
76634 {
76635 TileFrame(i - 1, j);
76636 if (mergeRight)
76637 {
76638 left = num;
76639 }
76640 }
76641 if (right > -1 && Main.tileMergeDirt[right])
76642 {
76643 TileFrame(i + 1, j);
76644 if (mergeLeft)
76645 {
76646 right = num;
76647 }
76648 }
76649 else if (right == 147)
76650 {
76651 TileFrame(i + 1, j);
76652 if (mergeLeft)
76653 {
76654 right = num;
76655 }
76656 }
76658 if (up > -1 && mergesWithDirtInASpecialWay[up])
76659 {
76660 up = num;
76661 }
76662 if (down > -1 && mergesWithDirtInASpecialWay[down])
76663 {
76664 down = num;
76665 }
76666 if (left > -1 && mergesWithDirtInASpecialWay[left])
76667 {
76668 left = num;
76669 }
76670 if (right > -1 && mergesWithDirtInASpecialWay[right])
76671 {
76672 right = num;
76673 }
76674 if (upLeft > -1 && Main.tileMergeDirt[upLeft])
76675 {
76676 upLeft = num;
76677 }
76678 else if (upLeft > -1 && mergesWithDirtInASpecialWay[upLeft])
76679 {
76680 upLeft = num;
76681 }
76682 if (upRight > -1 && Main.tileMergeDirt[upRight])
76683 {
76684 upRight = num;
76685 }
76687 {
76688 upRight = num;
76689 }
76690 if (downLeft > -1 && Main.tileMergeDirt[downLeft])
76691 {
76692 downLeft = num;
76693 }
76695 {
76696 downLeft = num;
76697 }
76698 if (downRight > -1 && Main.tileMergeDirt[downRight])
76699 {
76700 downRight = num;
76701 }
76703 {
76704 downRight = num;
76705 }
76708 TileMergeAttempt(0, 191, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76709 if (up > -1 && TileID.Sets.ForcedDirtMerging[up])
76710 {
76711 up = num;
76712 }
76713 if (down > -1 && TileID.Sets.ForcedDirtMerging[down])
76714 {
76715 down = num;
76716 }
76717 if (left > -1 && TileID.Sets.ForcedDirtMerging[left])
76718 {
76719 left = num;
76720 }
76721 if (right > -1 && TileID.Sets.ForcedDirtMerging[right])
76722 {
76723 right = num;
76724 }
76726 {
76727 upLeft = num;
76728 }
76730 {
76731 upRight = num;
76732 }
76734 {
76735 downLeft = num;
76736 }
76738 {
76739 downRight = num;
76740 }
76741 }
76742 else if (Main.tileRope[num])
76743 {
76744 if (num != 504 && up != num && IsRope(i, j - 1))
76745 {
76746 up = num;
76747 }
76748 if (down != num && IsRope(i, j + 1))
76749 {
76750 down = num;
76751 }
76752 if (num != 504 && up > -1 && Main.tileSolid[up] && !Main.tileSolidTop[up])
76753 {
76754 up = num;
76755 }
76756 if (down > -1 && Main.tileSolid[down])
76757 {
76758 down = num;
76759 }
76760 if (num != 504 && up != num)
76761 {
76762 if (left > -1 && Main.tileSolid[left])
76763 {
76764 left = num;
76765 }
76766 if (right > -1 && Main.tileSolid[right])
76767 {
76768 right = num;
76769 }
76770 }
76771 }
76772 else
76773 {
76774 switch (num)
76775 {
76776 case 53:
76777 TileMergeAttemptFrametest(i, j, num, 397, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76778 TileMergeAttemptFrametest(i, j, num, 396, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76779 break;
76780 case 234:
76781 TileMergeAttemptFrametest(i, j, num, 399, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76782 TileMergeAttemptFrametest(i, j, num, 401, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76783 break;
76784 case 112:
76785 TileMergeAttemptFrametest(i, j, num, 398, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76786 TileMergeAttemptFrametest(i, j, num, 400, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76787 break;
76788 case 116:
76789 TileMergeAttemptFrametest(i, j, num, 402, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76790 TileMergeAttemptFrametest(i, j, num, 403, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76791 break;
76792 }
76793 }
76794 if (Main.tileMergeDirt[num])
76795 {
76797 if (num == 1)
76798 {
76799 if ((double)j > Main.rockLayer)
76800 {
76802 }
76804 }
76805 }
76806 else
76807 {
76808 num43 = num;
76809 if (!TileID.Sets.HellSpecial[num])
76810 {
76811 if (num43 == 57)
76812 {
76813 TileMergeAttempt(-2, 1, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76814 TileMergeAttempt(num, 633, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76816 }
76817 else if (!TileID.Sets.Mud[num])
76818 {
76819 switch (num43)
76820 {
76821 case 211:
76822 TileMergeAttempt(59, 60, ref up, ref down, ref left, ref right);
76824 break;
76825 case 225:
76826 case 226:
76828 break;
76829 case 60:
76830 TileMergeAttempt(59, 211, ref up, ref down, ref left, ref right);
76831 break;
76832 case 189:
76834 break;
76835 case 196:
76836 TileMergeAttempt(-2, 189, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76837 TileMergeAttempt(num, 460, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76838 break;
76839 case 460:
76840 TileMergeAttempt(-2, 189, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76841 TileMergeAttempt(num, 196, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76842 break;
76843 default:
76844 if (TileID.Sets.Snow[num])
76845 {
76847 }
76848 else if (!TileID.Sets.IcesSlush[num])
76849 {
76850 switch (num43)
76851 {
76852 case 162:
76854 break;
76855 case 32:
76856 if (down == 23)
76857 {
76858 down = num;
76859 }
76860 break;
76861 case 352:
76862 if (down == 199)
76863 {
76864 down = num;
76865 }
76866 break;
76867 case 69:
76868 if (down == 60)
76869 {
76870 down = num;
76871 }
76872 break;
76873 case 655:
76874 if (down == 60)
76875 {
76876 down = num;
76877 }
76878 break;
76879 case 51:
76880 TileMergeAttempt(num, TileID.Sets.AllTiles, Main.tileNoAttach, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76881 break;
76882 case 192:
76883 TileMergeAttemptFrametest(i, j, num, 191, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76884 break;
76885 case 191:
76886 TileMergeAttempt(-2, 192, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76888 break;
76889 case 384:
76890 TileMergeAttemptFrametest(i, j, num, 383, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76891 break;
76892 case 383:
76893 TileMergeAttempt(-2, 384, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76895 break;
76896 case 407:
76897 TileMergeAttempt(-2, 404, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76898 break;
76899 case 404:
76900 TileMergeAttempt(-2, 396, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76901 TileMergeAttemptFrametest(i, j, num, 407, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76902 break;
76903 case 397:
76904 TileMergeAttempt(-2, 53, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76905 TileMergeAttemptFrametest(i, j, num, 396, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76906 break;
76907 case 396:
76908 TileMergeAttempt(-2, 397, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76909 TileMergeAttempt(-2, 53, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76910 TileMergeAttemptFrametest(i, j, num, 404, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76911 break;
76912 case 398:
76913 TileMergeAttempt(-2, 112, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76914 TileMergeAttemptFrametest(i, j, num, 400, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76915 break;
76916 case 400:
76917 TileMergeAttempt(-2, 398, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76918 TileMergeAttempt(-2, 112, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76919 break;
76920 case 399:
76921 TileMergeAttempt(-2, 234, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76922 TileMergeAttemptFrametest(i, j, num, 401, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76923 break;
76924 case 401:
76925 TileMergeAttempt(-2, 399, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76926 TileMergeAttempt(-2, 234, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76927 break;
76928 case 402:
76929 TileMergeAttempt(-2, 116, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76930 TileMergeAttemptFrametest(i, j, num, 403, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76931 break;
76932 case 403:
76933 TileMergeAttempt(-2, 402, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76934 TileMergeAttempt(-2, 116, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76935 break;
76936 }
76937 }
76938 else
76939 {
76940 TileMergeAttempt(-2, 147, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76941 }
76942 break;
76943 }
76944 }
76945 else
76946 {
76947 if ((double)j > Main.rockLayer)
76948 {
76949 TileMergeAttempt(-2, 1, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76950 }
76953 if ((double)j < Main.rockLayer)
76954 {
76956 }
76957 else
76958 {
76959 TileMergeAttempt(num, TileID.Sets.Dirt, ref up, ref down, ref left, ref right);
76960 }
76961 }
76962 }
76963 else
76964 {
76966 }
76967 }
76968 if (num == 0)
76969 {
76970 TileMergeAttempt(num, Main.tileMoss, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76972 }
76973 else if (Main.tileMoss[num] || TileID.Sets.tileMossBrick[num])
76974 {
76976 }
76977 else if (Main.tileStone[num] || num == 1)
76978 {
76979 TileMergeAttempt(num, Main.tileMoss, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
76980 }
76981 else if (num == 38)
76982 {
76984 }
76986 {
76988 }
76989 else if (TileID.Sets.Ore[num])
76990 {
76992 }
76993 if (num >= 0 && TileID.Sets.Mud[num])
76994 {
76996 }
76997 else if (TileID.Sets.OreMergesWithMud[num])
76998 {
77000 }
77001 bool flag = false;
77002 TileMergeCullCache tileMergeCullCache = default(TileMergeCullCache);
77003 if (!Main.ShouldShowInvisibleWalls())
77004 {
77005 bool flag10 = tile.invisibleBlock();
77006 tileMergeCullCache.CullTop |= tile10 != null && tile10.invisibleBlock() != flag10;
77007 tileMergeCullCache.CullBottom |= tile19 != null && tile19.invisibleBlock() != flag10;
77008 tileMergeCullCache.CullLeft |= tile26 != null && tile26.invisibleBlock() != flag10;
77009 tileMergeCullCache.CullRight |= tile33 != null && tile33.invisibleBlock() != flag10;
77010 tileMergeCullCache.CullTopLeft |= tile42 != null && tile42.invisibleBlock() != flag10;
77011 tileMergeCullCache.CullTopRight |= tile45 != null && tile45.invisibleBlock() != flag10;
77012 tileMergeCullCache.CullBottomLeft |= tile36 != null && tile36.invisibleBlock() != flag10;
77013 tileMergeCullCache.CullBottomRight |= tile39 != null && tile39.invisibleBlock() != flag10;
77014 }
77016 {
77017 flag = true;
77018 TileMergeAttemptWeird(num, -1, Main.tileSolid, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
77021 {
77022 num25 = 59;
77023 }
77024 else if (Main.tileMoss[num])
77025 {
77026 num25 = 1;
77027 }
77028 else if (TileID.Sets.tileMossBrick[num])
77029 {
77030 num25 = 38;
77031 }
77032 else
77033 {
77034 switch (num)
77035 {
77036 case 2:
77037 case 477:
77038 TileMergeAttempt(num25, 23, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
77039 break;
77040 case 23:
77041 TileMergeAttempt(num25, 2, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
77042 break;
77043 }
77044 }
77045 tileMergeCullCache.Cull(ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
77046 if (up != num && up != num25 && (down == num || down == num25))
77047 {
77048 if (left == num25 && right == num)
77049 {
77050 switch (num20)
77051 {
77052 case 0:
77053 rectangle.X = 0;
77054 rectangle.Y = 198;
77055 break;
77056 case 1:
77057 rectangle.X = 18;
77058 rectangle.Y = 198;
77059 break;
77060 default:
77061 rectangle.X = 36;
77062 rectangle.Y = 198;
77063 break;
77064 }
77065 }
77066 else if (left == num && right == num25)
77067 {
77068 switch (num20)
77069 {
77070 case 0:
77071 rectangle.X = 54;
77072 rectangle.Y = 198;
77073 break;
77074 case 1:
77075 rectangle.X = 72;
77076 rectangle.Y = 198;
77077 break;
77078 default:
77079 rectangle.X = 90;
77080 rectangle.Y = 198;
77081 break;
77082 }
77083 }
77084 }
77085 else if (down != num && down != num25 && (up == num || up == num25))
77086 {
77087 if (left == num25 && right == num)
77088 {
77089 switch (num20)
77090 {
77091 case 0:
77092 rectangle.X = 0;
77093 rectangle.Y = 216;
77094 break;
77095 case 1:
77096 rectangle.X = 18;
77097 rectangle.Y = 216;
77098 break;
77099 default:
77100 rectangle.X = 36;
77101 rectangle.Y = 216;
77102 break;
77103 }
77104 }
77105 else if (left == num && right == num25)
77106 {
77107 switch (num20)
77108 {
77109 case 0:
77110 rectangle.X = 54;
77111 rectangle.Y = 216;
77112 break;
77113 case 1:
77114 rectangle.X = 72;
77115 rectangle.Y = 216;
77116 break;
77117 default:
77118 rectangle.X = 90;
77119 rectangle.Y = 216;
77120 break;
77121 }
77122 }
77123 }
77124 else if (left != num && left != num25 && (right == num || right == num25))
77125 {
77126 if (up == num25 && down == num)
77127 {
77128 switch (num20)
77129 {
77130 case 0:
77131 rectangle.X = 72;
77132 rectangle.Y = 144;
77133 break;
77134 case 1:
77135 rectangle.X = 72;
77136 rectangle.Y = 162;
77137 break;
77138 default:
77139 rectangle.X = 72;
77140 rectangle.Y = 180;
77141 break;
77142 }
77143 }
77144 else if (down == num && up == num25)
77145 {
77146 switch (num20)
77147 {
77148 case 0:
77149 rectangle.X = 72;
77150 rectangle.Y = 90;
77151 break;
77152 case 1:
77153 rectangle.X = 72;
77154 rectangle.Y = 108;
77155 break;
77156 default:
77157 rectangle.X = 72;
77158 rectangle.Y = 126;
77159 break;
77160 }
77161 }
77162 }
77163 else if (right != num && right != num25 && (left == num || left == num25))
77164 {
77165 if (up == num25 && down == num)
77166 {
77167 switch (num20)
77168 {
77169 case 0:
77170 rectangle.X = 90;
77171 rectangle.Y = 144;
77172 break;
77173 case 1:
77174 rectangle.X = 90;
77175 rectangle.Y = 162;
77176 break;
77177 default:
77178 rectangle.X = 90;
77179 rectangle.Y = 180;
77180 break;
77181 }
77182 }
77183 else if (down == num && right == up)
77184 {
77185 switch (num20)
77186 {
77187 case 0:
77188 rectangle.X = 90;
77189 rectangle.Y = 90;
77190 break;
77191 case 1:
77192 rectangle.X = 90;
77193 rectangle.Y = 108;
77194 break;
77195 default:
77196 rectangle.X = 90;
77197 rectangle.Y = 126;
77198 break;
77199 }
77200 }
77201 }
77202 else if (up == num && down == num && left == num && right == num)
77203 {
77204 if (upLeft != num && upRight != num && downLeft != num && downRight != num)
77205 {
77206 if (downRight == num25)
77207 {
77208 switch (num20)
77209 {
77210 case 0:
77211 rectangle.X = 108;
77212 rectangle.Y = 324;
77213 break;
77214 case 1:
77215 rectangle.X = 126;
77216 rectangle.Y = 324;
77217 break;
77218 default:
77219 rectangle.X = 144;
77220 rectangle.Y = 324;
77221 break;
77222 }
77223 }
77224 else if (upRight == num25)
77225 {
77226 switch (num20)
77227 {
77228 case 0:
77229 rectangle.X = 108;
77230 rectangle.Y = 342;
77231 break;
77232 case 1:
77233 rectangle.X = 126;
77234 rectangle.Y = 342;
77235 break;
77236 default:
77237 rectangle.X = 144;
77238 rectangle.Y = 342;
77239 break;
77240 }
77241 }
77242 else if (downLeft == num25)
77243 {
77244 switch (num20)
77245 {
77246 case 0:
77247 rectangle.X = 108;
77248 rectangle.Y = 360;
77249 break;
77250 case 1:
77251 rectangle.X = 126;
77252 rectangle.Y = 360;
77253 break;
77254 default:
77255 rectangle.X = 144;
77256 rectangle.Y = 360;
77257 break;
77258 }
77259 }
77260 else if (upLeft == num25)
77261 {
77262 switch (num20)
77263 {
77264 case 0:
77265 rectangle.X = 108;
77266 rectangle.Y = 378;
77267 break;
77268 case 1:
77269 rectangle.X = 126;
77270 rectangle.Y = 378;
77271 break;
77272 default:
77273 rectangle.X = 144;
77274 rectangle.Y = 378;
77275 break;
77276 }
77277 }
77278 else
77279 {
77280 switch (num20)
77281 {
77282 case 0:
77283 rectangle.X = 144;
77284 rectangle.Y = 234;
77285 break;
77286 case 1:
77287 rectangle.X = 198;
77288 rectangle.Y = 234;
77289 break;
77290 default:
77291 rectangle.X = 252;
77292 rectangle.Y = 234;
77293 break;
77294 }
77295 }
77296 }
77297 else if (upLeft != num && downRight != num)
77298 {
77299 switch (num20)
77300 {
77301 case 0:
77302 rectangle.X = 36;
77303 rectangle.Y = 306;
77304 break;
77305 case 1:
77306 rectangle.X = 54;
77307 rectangle.Y = 306;
77308 break;
77309 default:
77310 rectangle.X = 72;
77311 rectangle.Y = 306;
77312 break;
77313 }
77314 }
77315 else if (upRight != num && downLeft != num)
77316 {
77317 switch (num20)
77318 {
77319 case 0:
77320 rectangle.X = 90;
77321 rectangle.Y = 306;
77322 break;
77323 case 1:
77324 rectangle.X = 108;
77325 rectangle.Y = 306;
77326 break;
77327 default:
77328 rectangle.X = 126;
77329 rectangle.Y = 306;
77330 break;
77331 }
77332 }
77333 else if (upLeft != num && upRight == num && downLeft == num && downRight == num)
77334 {
77335 switch (num20)
77336 {
77337 case 0:
77338 rectangle.X = 54;
77339 rectangle.Y = 108;
77340 break;
77341 case 1:
77342 rectangle.X = 54;
77343 rectangle.Y = 144;
77344 break;
77345 default:
77346 rectangle.X = 54;
77347 rectangle.Y = 180;
77348 break;
77349 }
77350 }
77351 else if (upLeft == num && upRight != num && downLeft == num && downRight == num)
77352 {
77353 switch (num20)
77354 {
77355 case 0:
77356 rectangle.X = 36;
77357 rectangle.Y = 108;
77358 break;
77359 case 1:
77360 rectangle.X = 36;
77361 rectangle.Y = 144;
77362 break;
77363 default:
77364 rectangle.X = 36;
77365 rectangle.Y = 180;
77366 break;
77367 }
77368 }
77369 else if (upLeft == num && upRight == num && downLeft != num && downRight == num)
77370 {
77371 switch (num20)
77372 {
77373 case 0:
77374 rectangle.X = 54;
77375 rectangle.Y = 90;
77376 break;
77377 case 1:
77378 rectangle.X = 54;
77379 rectangle.Y = 126;
77380 break;
77381 default:
77382 rectangle.X = 54;
77383 rectangle.Y = 162;
77384 break;
77385 }
77386 }
77387 else if (upLeft == num && upRight == num && downLeft == num && downRight != num)
77388 {
77389 switch (num20)
77390 {
77391 case 0:
77392 rectangle.X = 36;
77393 rectangle.Y = 90;
77394 break;
77395 case 1:
77396 rectangle.X = 36;
77397 rectangle.Y = 126;
77398 break;
77399 default:
77400 rectangle.X = 36;
77401 rectangle.Y = 162;
77402 break;
77403 }
77404 }
77405 }
77406 else if (up == num && down == num25 && left == num && right == num && upLeft == -1 && upRight == -1)
77407 {
77408 switch (num20)
77409 {
77410 case 0:
77411 rectangle.X = 108;
77412 rectangle.Y = 18;
77413 break;
77414 case 1:
77415 rectangle.X = 126;
77416 rectangle.Y = 18;
77417 break;
77418 default:
77419 rectangle.X = 144;
77420 rectangle.Y = 18;
77421 break;
77422 }
77423 }
77424 else if (up == num25 && down == num && left == num && right == num && downLeft == -1 && downRight == -1)
77425 {
77426 switch (num20)
77427 {
77428 case 0:
77429 rectangle.X = 108;
77430 rectangle.Y = 36;
77431 break;
77432 case 1:
77433 rectangle.X = 126;
77434 rectangle.Y = 36;
77435 break;
77436 default:
77437 rectangle.X = 144;
77438 rectangle.Y = 36;
77439 break;
77440 }
77441 }
77442 else if (up == num && down == num && left == num25 && right == num && upRight == -1 && downRight == -1)
77443 {
77444 switch (num20)
77445 {
77446 case 0:
77447 rectangle.X = 198;
77448 rectangle.Y = 0;
77449 break;
77450 case 1:
77451 rectangle.X = 198;
77452 rectangle.Y = 18;
77453 break;
77454 default:
77455 rectangle.X = 198;
77456 rectangle.Y = 36;
77457 break;
77458 }
77459 }
77460 else if (up == num && down == num && left == num && right == num25 && upLeft == -1 && downLeft == -1)
77461 {
77462 switch (num20)
77463 {
77464 case 0:
77465 rectangle.X = 180;
77466 rectangle.Y = 0;
77467 break;
77468 case 1:
77469 rectangle.X = 180;
77470 rectangle.Y = 18;
77471 break;
77472 default:
77473 rectangle.X = 180;
77474 rectangle.Y = 36;
77475 break;
77476 }
77477 }
77478 else if (up == num && down == num25 && left == num && right == num)
77479 {
77480 if (upRight != -1)
77481 {
77482 switch (num20)
77483 {
77484 case 0:
77485 rectangle.X = 54;
77486 rectangle.Y = 108;
77487 break;
77488 case 1:
77489 rectangle.X = 54;
77490 rectangle.Y = 144;
77491 break;
77492 default:
77493 rectangle.X = 54;
77494 rectangle.Y = 180;
77495 break;
77496 }
77497 }
77498 else if (upLeft != -1)
77499 {
77500 switch (num20)
77501 {
77502 case 0:
77503 rectangle.X = 36;
77504 rectangle.Y = 108;
77505 break;
77506 case 1:
77507 rectangle.X = 36;
77508 rectangle.Y = 144;
77509 break;
77510 default:
77511 rectangle.X = 36;
77512 rectangle.Y = 180;
77513 break;
77514 }
77515 }
77516 }
77517 else if (up == num25 && down == num && left == num && right == num)
77518 {
77519 if (downRight != -1)
77520 {
77521 switch (num20)
77522 {
77523 case 0:
77524 rectangle.X = 54;
77525 rectangle.Y = 90;
77526 break;
77527 case 1:
77528 rectangle.X = 54;
77529 rectangle.Y = 126;
77530 break;
77531 default:
77532 rectangle.X = 54;
77533 rectangle.Y = 162;
77534 break;
77535 }
77536 }
77537 else if (downLeft != -1)
77538 {
77539 switch (num20)
77540 {
77541 case 0:
77542 rectangle.X = 36;
77543 rectangle.Y = 90;
77544 break;
77545 case 1:
77546 rectangle.X = 36;
77547 rectangle.Y = 126;
77548 break;
77549 default:
77550 rectangle.X = 36;
77551 rectangle.Y = 162;
77552 break;
77553 }
77554 }
77555 }
77556 else if (up == num && down == num && left == num && right == num25)
77557 {
77558 if (upLeft != -1)
77559 {
77560 switch (num20)
77561 {
77562 case 0:
77563 rectangle.X = 54;
77564 rectangle.Y = 90;
77565 break;
77566 case 1:
77567 rectangle.X = 54;
77568 rectangle.Y = 126;
77569 break;
77570 default:
77571 rectangle.X = 54;
77572 rectangle.Y = 162;
77573 break;
77574 }
77575 }
77576 else if (downLeft != -1)
77577 {
77578 switch (num20)
77579 {
77580 case 0:
77581 rectangle.X = 54;
77582 rectangle.Y = 108;
77583 break;
77584 case 1:
77585 rectangle.X = 54;
77586 rectangle.Y = 144;
77587 break;
77588 default:
77589 rectangle.X = 54;
77590 rectangle.Y = 180;
77591 break;
77592 }
77593 }
77594 }
77595 else if (up == num && down == num && left == num25 && right == num)
77596 {
77597 if (upRight != -1)
77598 {
77599 switch (num20)
77600 {
77601 case 0:
77602 rectangle.X = 36;
77603 rectangle.Y = 90;
77604 break;
77605 case 1:
77606 rectangle.X = 36;
77607 rectangle.Y = 126;
77608 break;
77609 default:
77610 rectangle.X = 36;
77611 rectangle.Y = 162;
77612 break;
77613 }
77614 }
77615 else if (downRight != -1)
77616 {
77617 switch (num20)
77618 {
77619 case 0:
77620 rectangle.X = 36;
77621 rectangle.Y = 108;
77622 break;
77623 case 1:
77624 rectangle.X = 36;
77625 rectangle.Y = 144;
77626 break;
77627 default:
77628 rectangle.X = 36;
77629 rectangle.Y = 180;
77630 break;
77631 }
77632 }
77633 }
77634 else if ((up == num25 && down == num && left == num && right == num) || (up == num && down == num25 && left == num && right == num) || (up == num && down == num && left == num25 && right == num) || (up == num && down == num && left == num && right == num25))
77635 {
77636 switch (num20)
77637 {
77638 case 0:
77639 rectangle.X = 18;
77640 rectangle.Y = 18;
77641 break;
77642 case 1:
77643 rectangle.X = 36;
77644 rectangle.Y = 18;
77645 break;
77646 default:
77647 rectangle.X = 54;
77648 rectangle.Y = 18;
77649 break;
77650 }
77651 }
77652 if ((up == num || up == num25) && (down == num || down == num25) && (left == num || left == num25) && (right == num || right == num25))
77653 {
77654 if (upLeft != num && upLeft != num25 && (upRight == num || upRight == num25) && (downLeft == num || downLeft == num25) && (downRight == num || downRight == num25))
77655 {
77656 switch (num20)
77657 {
77658 case 0:
77659 rectangle.X = 54;
77660 rectangle.Y = 108;
77661 break;
77662 case 1:
77663 rectangle.X = 54;
77664 rectangle.Y = 144;
77665 break;
77666 default:
77667 rectangle.X = 54;
77668 rectangle.Y = 180;
77669 break;
77670 }
77671 }
77672 else if (upRight != num && upRight != num25 && (upLeft == num || upLeft == num25) && (downLeft == num || downLeft == num25) && (downRight == num || downRight == num25))
77673 {
77674 switch (num20)
77675 {
77676 case 0:
77677 rectangle.X = 36;
77678 rectangle.Y = 108;
77679 break;
77680 case 1:
77681 rectangle.X = 36;
77682 rectangle.Y = 144;
77683 break;
77684 default:
77685 rectangle.X = 36;
77686 rectangle.Y = 180;
77687 break;
77688 }
77689 }
77690 else if (downLeft != num && downLeft != num25 && (upLeft == num || upLeft == num25) && (upRight == num || upRight == num25) && (downRight == num || downRight == num25))
77691 {
77692 switch (num20)
77693 {
77694 case 0:
77695 rectangle.X = 54;
77696 rectangle.Y = 90;
77697 break;
77698 case 1:
77699 rectangle.X = 54;
77700 rectangle.Y = 126;
77701 break;
77702 default:
77703 rectangle.X = 54;
77704 rectangle.Y = 162;
77705 break;
77706 }
77707 }
77708 else if (downRight != num && downRight != num25 && (upLeft == num || upLeft == num25) && (downLeft == num || downLeft == num25) && (upRight == num || upRight == num25))
77709 {
77710 switch (num20)
77711 {
77712 case 0:
77713 rectangle.X = 36;
77714 rectangle.Y = 90;
77715 break;
77716 case 1:
77717 rectangle.X = 36;
77718 rectangle.Y = 126;
77719 break;
77720 default:
77721 rectangle.X = 36;
77722 rectangle.Y = 162;
77723 break;
77724 }
77725 }
77726 }
77727 if (up != num25 && up != num && down == num && left != num25 && left != num && right == num && downRight != num25 && downRight != num)
77728 {
77729 switch (num20)
77730 {
77731 case 0:
77732 rectangle.X = 90;
77733 rectangle.Y = 270;
77734 break;
77735 case 1:
77736 rectangle.X = 108;
77737 rectangle.Y = 270;
77738 break;
77739 default:
77740 rectangle.X = 126;
77741 rectangle.Y = 270;
77742 break;
77743 }
77744 }
77745 else if (up != num25 && up != num && down == num && left == num && right != num25 && right != num && downLeft != num25 && downLeft != num)
77746 {
77747 switch (num20)
77748 {
77749 case 0:
77750 rectangle.X = 144;
77751 rectangle.Y = 270;
77752 break;
77753 case 1:
77754 rectangle.X = 162;
77755 rectangle.Y = 270;
77756 break;
77757 default:
77758 rectangle.X = 180;
77759 rectangle.Y = 270;
77760 break;
77761 }
77762 }
77763 else if (down != num25 && down != num && up == num && left != num25 && left != num && right == num && upRight != num25 && upRight != num)
77764 {
77765 switch (num20)
77766 {
77767 case 0:
77768 rectangle.X = 90;
77769 rectangle.Y = 288;
77770 break;
77771 case 1:
77772 rectangle.X = 108;
77773 rectangle.Y = 288;
77774 break;
77775 default:
77776 rectangle.X = 126;
77777 rectangle.Y = 288;
77778 break;
77779 }
77780 }
77781 else if (down != num25 && down != num && up == num && left == num && right != num25 && right != num && upLeft != num25 && upLeft != num)
77782 {
77783 switch (num20)
77784 {
77785 case 0:
77786 rectangle.X = 144;
77787 rectangle.Y = 288;
77788 break;
77789 case 1:
77790 rectangle.X = 162;
77791 rectangle.Y = 288;
77792 break;
77793 default:
77794 rectangle.X = 180;
77795 rectangle.Y = 288;
77796 break;
77797 }
77798 }
77799 else if (up != num && up != num25 && down == num && left == num && right == num && downLeft != num && downLeft != num25 && downRight != num && downRight != num25)
77800 {
77801 switch (num20)
77802 {
77803 case 0:
77804 rectangle.X = 144;
77805 rectangle.Y = 216;
77806 break;
77807 case 1:
77808 rectangle.X = 198;
77809 rectangle.Y = 216;
77810 break;
77811 default:
77812 rectangle.X = 252;
77813 rectangle.Y = 216;
77814 break;
77815 }
77816 }
77817 else if (down != num && down != num25 && up == num && left == num && right == num && upLeft != num && upLeft != num25 && upRight != num && upRight != num25)
77818 {
77819 switch (num20)
77820 {
77821 case 0:
77822 rectangle.X = 144;
77823 rectangle.Y = 252;
77824 break;
77825 case 1:
77826 rectangle.X = 198;
77827 rectangle.Y = 252;
77828 break;
77829 default:
77830 rectangle.X = 252;
77831 rectangle.Y = 252;
77832 break;
77833 }
77834 }
77835 else if (left != num && left != num25 && down == num && up == num && right == num && upRight != num && upRight != num25 && downRight != num && downRight != num25)
77836 {
77837 switch (num20)
77838 {
77839 case 0:
77840 rectangle.X = 126;
77841 rectangle.Y = 234;
77842 break;
77843 case 1:
77844 rectangle.X = 180;
77845 rectangle.Y = 234;
77846 break;
77847 default:
77848 rectangle.X = 234;
77849 rectangle.Y = 234;
77850 break;
77851 }
77852 }
77853 else if (right != num && right != num25 && down == num && up == num && left == num && upLeft != num && upLeft != num25 && downLeft != num && downLeft != num25)
77854 {
77855 switch (num20)
77856 {
77857 case 0:
77858 rectangle.X = 162;
77859 rectangle.Y = 234;
77860 break;
77861 case 1:
77862 rectangle.X = 216;
77863 rectangle.Y = 234;
77864 break;
77865 default:
77866 rectangle.X = 270;
77867 rectangle.Y = 234;
77868 break;
77869 }
77870 }
77871 else if (up != num25 && up != num && (down == num25 || down == num) && left == num25 && right == num25)
77872 {
77873 switch (num20)
77874 {
77875 case 0:
77876 rectangle.X = 36;
77877 rectangle.Y = 270;
77878 break;
77879 case 1:
77880 rectangle.X = 54;
77881 rectangle.Y = 270;
77882 break;
77883 default:
77884 rectangle.X = 72;
77885 rectangle.Y = 270;
77886 break;
77887 }
77888 }
77889 else if (down != num25 && down != num && (up == num25 || up == num) && left == num25 && right == num25)
77890 {
77891 switch (num20)
77892 {
77893 case 0:
77894 rectangle.X = 36;
77895 rectangle.Y = 288;
77896 break;
77897 case 1:
77898 rectangle.X = 54;
77899 rectangle.Y = 288;
77900 break;
77901 default:
77902 rectangle.X = 72;
77903 rectangle.Y = 288;
77904 break;
77905 }
77906 }
77907 else if (left != num25 && left != num && (right == num25 || right == num) && up == num25 && down == num25)
77908 {
77909 switch (num20)
77910 {
77911 case 0:
77912 rectangle.X = 0;
77913 rectangle.Y = 270;
77914 break;
77915 case 1:
77916 rectangle.X = 0;
77917 rectangle.Y = 288;
77918 break;
77919 default:
77920 rectangle.X = 0;
77921 rectangle.Y = 306;
77922 break;
77923 }
77924 }
77925 else if (right != num25 && right != num && (left == num25 || left == num) && up == num25 && down == num25)
77926 {
77927 switch (num20)
77928 {
77929 case 0:
77930 rectangle.X = 18;
77931 rectangle.Y = 270;
77932 break;
77933 case 1:
77934 rectangle.X = 18;
77935 rectangle.Y = 288;
77936 break;
77937 default:
77938 rectangle.X = 18;
77939 rectangle.Y = 306;
77940 break;
77941 }
77942 }
77943 else if (up == num && down == num25 && left == num25 && right == num25)
77944 {
77945 switch (num20)
77946 {
77947 case 0:
77948 rectangle.X = 198;
77949 rectangle.Y = 288;
77950 break;
77951 case 1:
77952 rectangle.X = 216;
77953 rectangle.Y = 288;
77954 break;
77955 default:
77956 rectangle.X = 234;
77957 rectangle.Y = 288;
77958 break;
77959 }
77960 }
77961 else if (up == num25 && down == num && left == num25 && right == num25)
77962 {
77963 switch (num20)
77964 {
77965 case 0:
77966 rectangle.X = 198;
77967 rectangle.Y = 270;
77968 break;
77969 case 1:
77970 rectangle.X = 216;
77971 rectangle.Y = 270;
77972 break;
77973 default:
77974 rectangle.X = 234;
77975 rectangle.Y = 270;
77976 break;
77977 }
77978 }
77979 else if (up == num25 && down == num25 && left == num && right == num25)
77980 {
77981 switch (num20)
77982 {
77983 case 0:
77984 rectangle.X = 198;
77985 rectangle.Y = 306;
77986 break;
77987 case 1:
77988 rectangle.X = 216;
77989 rectangle.Y = 306;
77990 break;
77991 default:
77992 rectangle.X = 234;
77993 rectangle.Y = 306;
77994 break;
77995 }
77996 }
77997 else if (up == num25 && down == num25 && left == num25 && right == num)
77998 {
77999 switch (num20)
78000 {
78001 case 0:
78002 rectangle.X = 144;
78003 rectangle.Y = 306;
78004 break;
78005 case 1:
78006 rectangle.X = 162;
78007 rectangle.Y = 306;
78008 break;
78009 default:
78010 rectangle.X = 180;
78011 rectangle.Y = 306;
78012 break;
78013 }
78014 }
78015 if (up != num && up != num25 && down == num && left == num && right == num)
78016 {
78017 if ((downLeft == num25 || downLeft == num) && downRight != num25 && downRight != num)
78018 {
78019 switch (num20)
78020 {
78021 case 0:
78022 rectangle.X = 0;
78023 rectangle.Y = 324;
78024 break;
78025 case 1:
78026 rectangle.X = 18;
78027 rectangle.Y = 324;
78028 break;
78029 default:
78030 rectangle.X = 36;
78031 rectangle.Y = 324;
78032 break;
78033 }
78034 }
78035 else if ((downRight == num25 || downRight == num) && downLeft != num25 && downLeft != num)
78036 {
78037 switch (num20)
78038 {
78039 case 0:
78040 rectangle.X = 54;
78041 rectangle.Y = 324;
78042 break;
78043 case 1:
78044 rectangle.X = 72;
78045 rectangle.Y = 324;
78046 break;
78047 default:
78048 rectangle.X = 90;
78049 rectangle.Y = 324;
78050 break;
78051 }
78052 }
78053 }
78054 else if (down != num && down != num25 && up == num && left == num && right == num)
78055 {
78056 if ((upLeft == num25 || upLeft == num) && upRight != num25 && upRight != num)
78057 {
78058 switch (num20)
78059 {
78060 case 0:
78061 rectangle.X = 0;
78062 rectangle.Y = 342;
78063 break;
78064 case 1:
78065 rectangle.X = 18;
78066 rectangle.Y = 342;
78067 break;
78068 default:
78069 rectangle.X = 36;
78070 rectangle.Y = 342;
78071 break;
78072 }
78073 }
78074 else if ((upRight == num25 || upRight == num) && upLeft != num25 && upLeft != num)
78075 {
78076 switch (num20)
78077 {
78078 case 0:
78079 rectangle.X = 54;
78080 rectangle.Y = 342;
78081 break;
78082 case 1:
78083 rectangle.X = 72;
78084 rectangle.Y = 342;
78085 break;
78086 default:
78087 rectangle.X = 90;
78088 rectangle.Y = 342;
78089 break;
78090 }
78091 }
78092 }
78093 else if (left != num && left != num25 && up == num && down == num && right == num)
78094 {
78095 if ((upRight == num25 || upRight == num) && downRight != num25 && downRight != num)
78096 {
78097 switch (num20)
78098 {
78099 case 0:
78100 rectangle.X = 54;
78101 rectangle.Y = 360;
78102 break;
78103 case 1:
78104 rectangle.X = 72;
78105 rectangle.Y = 360;
78106 break;
78107 default:
78108 rectangle.X = 90;
78109 rectangle.Y = 360;
78110 break;
78111 }
78112 }
78113 else if ((downRight == num25 || downRight == num) && upRight != num25 && upRight != num)
78114 {
78115 switch (num20)
78116 {
78117 case 0:
78118 rectangle.X = 0;
78119 rectangle.Y = 360;
78120 break;
78121 case 1:
78122 rectangle.X = 18;
78123 rectangle.Y = 360;
78124 break;
78125 default:
78126 rectangle.X = 36;
78127 rectangle.Y = 360;
78128 break;
78129 }
78130 }
78131 }
78132 else if (right != num && right != num25 && up == num && down == num && left == num)
78133 {
78134 if ((upLeft == num25 || upLeft == num) && downLeft != num25 && downLeft != num)
78135 {
78136 switch (num20)
78137 {
78138 case 0:
78139 rectangle.X = 0;
78140 rectangle.Y = 378;
78141 break;
78142 case 1:
78143 rectangle.X = 18;
78144 rectangle.Y = 378;
78145 break;
78146 default:
78147 rectangle.X = 36;
78148 rectangle.Y = 378;
78149 break;
78150 }
78151 }
78152 else if ((downLeft == num25 || downLeft == num) && upLeft != num25 && upLeft != num)
78153 {
78154 switch (num20)
78155 {
78156 case 0:
78157 rectangle.X = 54;
78158 rectangle.Y = 378;
78159 break;
78160 case 1:
78161 rectangle.X = 72;
78162 rectangle.Y = 378;
78163 break;
78164 default:
78165 rectangle.X = 90;
78166 rectangle.Y = 378;
78167 break;
78168 }
78169 }
78170 }
78171 if ((up == num || up == num25) && (down == num || down == num25) && (left == num || left == num25) && (right == num || right == num25) && upLeft != -1 && upRight != -1 && downLeft != -1 && downRight != -1)
78172 {
78173 if ((i + j) % 2 == 1)
78174 {
78175 switch (num20)
78176 {
78177 case 0:
78178 rectangle.X = 108;
78179 rectangle.Y = 198;
78180 break;
78181 case 1:
78182 rectangle.X = 126;
78183 rectangle.Y = 198;
78184 break;
78185 default:
78186 rectangle.X = 144;
78187 rectangle.Y = 198;
78188 break;
78189 }
78190 }
78191 else
78192 {
78193 switch (num20)
78194 {
78195 case 0:
78196 rectangle.X = 18;
78197 rectangle.Y = 18;
78198 break;
78199 case 1:
78200 rectangle.X = 36;
78201 rectangle.Y = 18;
78202 break;
78203 default:
78204 rectangle.X = 54;
78205 rectangle.Y = 18;
78206 break;
78207 }
78208 }
78209 }
78210 if (num25 >= 0 && TileID.Sets.Dirt[num25])
78211 {
78213 }
78214 else if (num25 >= 0 && TileID.Sets.Mud[num25])
78215 {
78217 }
78218 else
78219 {
78220 TileMergeAttempt(-2, num25, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
78221 }
78222 tileMergeCullCache.Cull(ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
78223 }
78224 TileMergeAttempt(num, Main.tileMerge[num], ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
78225 if (rectangle.X == -1 && rectangle.Y == -1 && (Main.tileMergeDirt[num] || (num > -1 && TileID.Sets.ChecksForMerge[num])))
78226 {
78227 if (!flag)
78228 {
78229 flag = true;
78230 TileMergeAttemptWeird(num, -1, Main.tileSolid, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
78231 }
78232 if (up > -1 && up != num)
78233 {
78234 up = -1;
78235 }
78236 if (down > -1 && down != num)
78237 {
78238 down = -1;
78239 }
78240 if (left > -1 && left != num)
78241 {
78242 left = -1;
78243 }
78244 if (right > -1 && right != num)
78245 {
78246 right = -1;
78247 }
78248 tileMergeCullCache.Cull(ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
78249 if (up != -1 && down != -1 && left != -1 && right != -1)
78250 {
78251 if (up == -2 && down == num && left == num && right == num)
78252 {
78253 switch (num20)
78254 {
78255 case 0:
78256 rectangle.X = 144;
78257 rectangle.Y = 108;
78258 break;
78259 case 1:
78260 rectangle.X = 162;
78261 rectangle.Y = 108;
78262 break;
78263 default:
78264 rectangle.X = 180;
78265 rectangle.Y = 108;
78266 break;
78267 }
78268 mergeUp = true;
78269 }
78270 else if (up == num && down == -2 && left == num && right == num)
78271 {
78272 switch (num20)
78273 {
78274 case 0:
78275 rectangle.X = 144;
78276 rectangle.Y = 90;
78277 break;
78278 case 1:
78279 rectangle.X = 162;
78280 rectangle.Y = 90;
78281 break;
78282 default:
78283 rectangle.X = 180;
78284 rectangle.Y = 90;
78285 break;
78286 }
78287 mergeDown = true;
78288 }
78289 else if (up == num && down == num && left == -2 && right == num)
78290 {
78291 switch (num20)
78292 {
78293 case 0:
78294 rectangle.X = 162;
78295 rectangle.Y = 126;
78296 break;
78297 case 1:
78298 rectangle.X = 162;
78299 rectangle.Y = 144;
78300 break;
78301 default:
78302 rectangle.X = 162;
78303 rectangle.Y = 162;
78304 break;
78305 }
78306 mergeLeft = true;
78307 }
78308 else if (up == num && down == num && left == num && right == -2)
78309 {
78310 switch (num20)
78311 {
78312 case 0:
78313 rectangle.X = 144;
78314 rectangle.Y = 126;
78315 break;
78316 case 1:
78317 rectangle.X = 144;
78318 rectangle.Y = 144;
78319 break;
78320 default:
78321 rectangle.X = 144;
78322 rectangle.Y = 162;
78323 break;
78324 }
78325 mergeRight = true;
78326 }
78327 else if (up == -2 && down == num && left == -2 && right == num)
78328 {
78329 switch (num20)
78330 {
78331 case 0:
78332 rectangle.X = 36;
78333 rectangle.Y = 90;
78334 break;
78335 case 1:
78336 rectangle.X = 36;
78337 rectangle.Y = 126;
78338 break;
78339 default:
78340 rectangle.X = 36;
78341 rectangle.Y = 162;
78342 break;
78343 }
78344 mergeUp = true;
78345 mergeLeft = true;
78346 }
78347 else if (up == -2 && down == num && left == num && right == -2)
78348 {
78349 switch (num20)
78350 {
78351 case 0:
78352 rectangle.X = 54;
78353 rectangle.Y = 90;
78354 break;
78355 case 1:
78356 rectangle.X = 54;
78357 rectangle.Y = 126;
78358 break;
78359 default:
78360 rectangle.X = 54;
78361 rectangle.Y = 162;
78362 break;
78363 }
78364 mergeUp = true;
78365 mergeRight = true;
78366 }
78367 else if (up == num && down == -2 && left == -2 && right == num)
78368 {
78369 switch (num20)
78370 {
78371 case 0:
78372 rectangle.X = 36;
78373 rectangle.Y = 108;
78374 break;
78375 case 1:
78376 rectangle.X = 36;
78377 rectangle.Y = 144;
78378 break;
78379 default:
78380 rectangle.X = 36;
78381 rectangle.Y = 180;
78382 break;
78383 }
78384 mergeDown = true;
78385 mergeLeft = true;
78386 }
78387 else if (up == num && down == -2 && left == num && right == -2)
78388 {
78389 switch (num20)
78390 {
78391 case 0:
78392 rectangle.X = 54;
78393 rectangle.Y = 108;
78394 break;
78395 case 1:
78396 rectangle.X = 54;
78397 rectangle.Y = 144;
78398 break;
78399 default:
78400 rectangle.X = 54;
78401 rectangle.Y = 180;
78402 break;
78403 }
78404 mergeDown = true;
78405 mergeRight = true;
78406 }
78407 else if (up == num && down == num && left == -2 && right == -2)
78408 {
78409 switch (num20)
78410 {
78411 case 0:
78412 rectangle.X = 180;
78413 rectangle.Y = 126;
78414 break;
78415 case 1:
78416 rectangle.X = 180;
78417 rectangle.Y = 144;
78418 break;
78419 default:
78420 rectangle.X = 180;
78421 rectangle.Y = 162;
78422 break;
78423 }
78424 mergeLeft = true;
78425 mergeRight = true;
78426 }
78427 else if (up == -2 && down == -2 && left == num && right == num)
78428 {
78429 switch (num20)
78430 {
78431 case 0:
78432 rectangle.X = 144;
78433 rectangle.Y = 180;
78434 break;
78435 case 1:
78436 rectangle.X = 162;
78437 rectangle.Y = 180;
78438 break;
78439 default:
78440 rectangle.X = 180;
78441 rectangle.Y = 180;
78442 break;
78443 }
78444 mergeUp = true;
78445 mergeDown = true;
78446 }
78447 else if (up == -2 && down == num && left == -2 && right == -2)
78448 {
78449 switch (num20)
78450 {
78451 case 0:
78452 rectangle.X = 198;
78453 rectangle.Y = 90;
78454 break;
78455 case 1:
78456 rectangle.X = 198;
78457 rectangle.Y = 108;
78458 break;
78459 default:
78460 rectangle.X = 198;
78461 rectangle.Y = 126;
78462 break;
78463 }
78464 mergeUp = true;
78465 mergeLeft = true;
78466 mergeRight = true;
78467 }
78468 else if (up == num && down == -2 && left == -2 && right == -2)
78469 {
78470 switch (num20)
78471 {
78472 case 0:
78473 rectangle.X = 198;
78474 rectangle.Y = 144;
78475 break;
78476 case 1:
78477 rectangle.X = 198;
78478 rectangle.Y = 162;
78479 break;
78480 default:
78481 rectangle.X = 198;
78482 rectangle.Y = 180;
78483 break;
78484 }
78485 mergeDown = true;
78486 mergeLeft = true;
78487 mergeRight = true;
78488 }
78489 else if (up == -2 && down == -2 && left == num && right == -2)
78490 {
78491 switch (num20)
78492 {
78493 case 0:
78494 rectangle.X = 216;
78495 rectangle.Y = 144;
78496 break;
78497 case 1:
78498 rectangle.X = 216;
78499 rectangle.Y = 162;
78500 break;
78501 default:
78502 rectangle.X = 216;
78503 rectangle.Y = 180;
78504 break;
78505 }
78506 mergeUp = true;
78507 mergeDown = true;
78508 mergeRight = true;
78509 }
78510 else if (up == -2 && down == -2 && left == -2 && right == num)
78511 {
78512 switch (num20)
78513 {
78514 case 0:
78515 rectangle.X = 216;
78516 rectangle.Y = 90;
78517 break;
78518 case 1:
78519 rectangle.X = 216;
78520 rectangle.Y = 108;
78521 break;
78522 default:
78523 rectangle.X = 216;
78524 rectangle.Y = 126;
78525 break;
78526 }
78527 mergeUp = true;
78528 mergeDown = true;
78529 mergeLeft = true;
78530 }
78531 else if (up == -2 && down == -2 && left == -2 && right == -2)
78532 {
78533 switch (num20)
78534 {
78535 case 0:
78536 rectangle.X = 108;
78537 rectangle.Y = 198;
78538 break;
78539 case 1:
78540 rectangle.X = 126;
78541 rectangle.Y = 198;
78542 break;
78543 default:
78544 rectangle.X = 144;
78545 rectangle.Y = 198;
78546 break;
78547 }
78548 mergeUp = true;
78549 mergeDown = true;
78550 mergeLeft = true;
78551 mergeRight = true;
78552 }
78553 else if (up == num && down == num && left == num && right == num)
78554 {
78555 if (upLeft == -2)
78556 {
78557 switch (num20)
78558 {
78559 case 0:
78560 rectangle.X = 18;
78561 rectangle.Y = 108;
78562 break;
78563 case 1:
78564 rectangle.X = 18;
78565 rectangle.Y = 144;
78566 break;
78567 default:
78568 rectangle.X = 18;
78569 rectangle.Y = 180;
78570 break;
78571 }
78572 }
78573 if (upRight == -2)
78574 {
78575 switch (num20)
78576 {
78577 case 0:
78578 rectangle.X = 0;
78579 rectangle.Y = 108;
78580 break;
78581 case 1:
78582 rectangle.X = 0;
78583 rectangle.Y = 144;
78584 break;
78585 default:
78586 rectangle.X = 0;
78587 rectangle.Y = 180;
78588 break;
78589 }
78590 }
78591 if (downLeft == -2)
78592 {
78593 switch (num20)
78594 {
78595 case 0:
78596 rectangle.X = 18;
78597 rectangle.Y = 90;
78598 break;
78599 case 1:
78600 rectangle.X = 18;
78601 rectangle.Y = 126;
78602 break;
78603 default:
78604 rectangle.X = 18;
78605 rectangle.Y = 162;
78606 break;
78607 }
78608 }
78609 if (downRight == -2)
78610 {
78611 switch (num20)
78612 {
78613 case 0:
78614 rectangle.X = 0;
78615 rectangle.Y = 90;
78616 break;
78617 case 1:
78618 rectangle.X = 0;
78619 rectangle.Y = 126;
78620 break;
78621 default:
78622 rectangle.X = 0;
78623 rectangle.Y = 162;
78624 break;
78625 }
78626 }
78627 }
78628 }
78629 else
78630 {
78632 {
78633 if (up == -1 && down == -2 && left == num && right == num)
78634 {
78635 switch (num20)
78636 {
78637 case 0:
78638 rectangle.X = 234;
78639 rectangle.Y = 0;
78640 break;
78641 case 1:
78642 rectangle.X = 252;
78643 rectangle.Y = 0;
78644 break;
78645 default:
78646 rectangle.X = 270;
78647 rectangle.Y = 0;
78648 break;
78649 }
78650 mergeDown = true;
78651 }
78652 else if (up == -2 && down == -1 && left == num && right == num)
78653 {
78654 switch (num20)
78655 {
78656 case 0:
78657 rectangle.X = 234;
78658 rectangle.Y = 18;
78659 break;
78660 case 1:
78661 rectangle.X = 252;
78662 rectangle.Y = 18;
78663 break;
78664 default:
78665 rectangle.X = 270;
78666 rectangle.Y = 18;
78667 break;
78668 }
78669 mergeUp = true;
78670 }
78671 else if (up == num && down == num && left == -1 && right == -2)
78672 {
78673 switch (num20)
78674 {
78675 case 0:
78676 rectangle.X = 234;
78677 rectangle.Y = 36;
78678 break;
78679 case 1:
78680 rectangle.X = 252;
78681 rectangle.Y = 36;
78682 break;
78683 default:
78684 rectangle.X = 270;
78685 rectangle.Y = 36;
78686 break;
78687 }
78688 mergeRight = true;
78689 }
78690 else if (up == num && down == num && left == -2 && right == -1)
78691 {
78692 switch (num20)
78693 {
78694 case 0:
78695 rectangle.X = 234;
78696 rectangle.Y = 54;
78697 break;
78698 case 1:
78699 rectangle.X = 252;
78700 rectangle.Y = 54;
78701 break;
78702 default:
78703 rectangle.X = 270;
78704 rectangle.Y = 54;
78705 break;
78706 }
78707 mergeLeft = true;
78708 }
78709 }
78710 if (up != -1 && down != -1 && left == -1 && right == num)
78711 {
78712 if (up == -2 && down == num)
78713 {
78714 switch (num20)
78715 {
78716 case 0:
78717 rectangle.X = 72;
78718 rectangle.Y = 144;
78719 break;
78720 case 1:
78721 rectangle.X = 72;
78722 rectangle.Y = 162;
78723 break;
78724 default:
78725 rectangle.X = 72;
78726 rectangle.Y = 180;
78727 break;
78728 }
78729 mergeUp = true;
78730 }
78731 else if (down == -2 && up == num)
78732 {
78733 switch (num20)
78734 {
78735 case 0:
78736 rectangle.X = 72;
78737 rectangle.Y = 90;
78738 break;
78739 case 1:
78740 rectangle.X = 72;
78741 rectangle.Y = 108;
78742 break;
78743 default:
78744 rectangle.X = 72;
78745 rectangle.Y = 126;
78746 break;
78747 }
78748 mergeDown = true;
78749 }
78750 }
78751 else if (up != -1 && down != -1 && left == num && right == -1)
78752 {
78753 if (up == -2 && down == num)
78754 {
78755 switch (num20)
78756 {
78757 case 0:
78758 rectangle.X = 90;
78759 rectangle.Y = 144;
78760 break;
78761 case 1:
78762 rectangle.X = 90;
78763 rectangle.Y = 162;
78764 break;
78765 default:
78766 rectangle.X = 90;
78767 rectangle.Y = 180;
78768 break;
78769 }
78770 mergeUp = true;
78771 }
78772 else if (down == -2 && up == num)
78773 {
78774 switch (num20)
78775 {
78776 case 0:
78777 rectangle.X = 90;
78778 rectangle.Y = 90;
78779 break;
78780 case 1:
78781 rectangle.X = 90;
78782 rectangle.Y = 108;
78783 break;
78784 default:
78785 rectangle.X = 90;
78786 rectangle.Y = 126;
78787 break;
78788 }
78789 mergeDown = true;
78790 }
78791 }
78792 else if (up == -1 && down == num && left != -1 && right != -1)
78793 {
78794 if (left == -2 && right == num)
78795 {
78796 switch (num20)
78797 {
78798 case 0:
78799 rectangle.X = 0;
78800 rectangle.Y = 198;
78801 break;
78802 case 1:
78803 rectangle.X = 18;
78804 rectangle.Y = 198;
78805 break;
78806 default:
78807 rectangle.X = 36;
78808 rectangle.Y = 198;
78809 break;
78810 }
78811 mergeLeft = true;
78812 }
78813 else if (right == -2 && left == num)
78814 {
78815 switch (num20)
78816 {
78817 case 0:
78818 rectangle.X = 54;
78819 rectangle.Y = 198;
78820 break;
78821 case 1:
78822 rectangle.X = 72;
78823 rectangle.Y = 198;
78824 break;
78825 default:
78826 rectangle.X = 90;
78827 rectangle.Y = 198;
78828 break;
78829 }
78830 mergeRight = true;
78831 }
78832 }
78833 else if (up == num && down == -1 && left != -1 && right != -1)
78834 {
78835 if (left == -2 && right == num)
78836 {
78837 switch (num20)
78838 {
78839 case 0:
78840 rectangle.X = 0;
78841 rectangle.Y = 216;
78842 break;
78843 case 1:
78844 rectangle.X = 18;
78845 rectangle.Y = 216;
78846 break;
78847 default:
78848 rectangle.X = 36;
78849 rectangle.Y = 216;
78850 break;
78851 }
78852 mergeLeft = true;
78853 }
78854 else if (right == -2 && left == num)
78855 {
78856 switch (num20)
78857 {
78858 case 0:
78859 rectangle.X = 54;
78860 rectangle.Y = 216;
78861 break;
78862 case 1:
78863 rectangle.X = 72;
78864 rectangle.Y = 216;
78865 break;
78866 default:
78867 rectangle.X = 90;
78868 rectangle.Y = 216;
78869 break;
78870 }
78871 mergeRight = true;
78872 }
78873 }
78874 else if (up != -1 && down != -1 && left == -1 && right == -1)
78875 {
78876 if (up == -2 && down == -2)
78877 {
78878 switch (num20)
78879 {
78880 case 0:
78881 rectangle.X = 108;
78882 rectangle.Y = 216;
78883 break;
78884 case 1:
78885 rectangle.X = 108;
78886 rectangle.Y = 234;
78887 break;
78888 default:
78889 rectangle.X = 108;
78890 rectangle.Y = 252;
78891 break;
78892 }
78893 mergeUp = true;
78894 mergeDown = true;
78895 }
78896 else if (up == -2)
78897 {
78898 switch (num20)
78899 {
78900 case 0:
78901 rectangle.X = 126;
78902 rectangle.Y = 144;
78903 break;
78904 case 1:
78905 rectangle.X = 126;
78906 rectangle.Y = 162;
78907 break;
78908 default:
78909 rectangle.X = 126;
78910 rectangle.Y = 180;
78911 break;
78912 }
78913 mergeUp = true;
78914 }
78915 else if (down == -2)
78916 {
78917 switch (num20)
78918 {
78919 case 0:
78920 rectangle.X = 126;
78921 rectangle.Y = 90;
78922 break;
78923 case 1:
78924 rectangle.X = 126;
78925 rectangle.Y = 108;
78926 break;
78927 default:
78928 rectangle.X = 126;
78929 rectangle.Y = 126;
78930 break;
78931 }
78932 mergeDown = true;
78933 }
78934 }
78935 else if (up == -1 && down == -1 && left != -1 && right != -1)
78936 {
78937 if (left == -2 && right == -2)
78938 {
78939 switch (num20)
78940 {
78941 case 0:
78942 rectangle.X = 162;
78943 rectangle.Y = 198;
78944 break;
78945 case 1:
78946 rectangle.X = 180;
78947 rectangle.Y = 198;
78948 break;
78949 default:
78950 rectangle.X = 198;
78951 rectangle.Y = 198;
78952 break;
78953 }
78954 mergeLeft = true;
78955 mergeRight = true;
78956 }
78957 else if (left == -2)
78958 {
78959 switch (num20)
78960 {
78961 case 0:
78962 rectangle.X = 0;
78963 rectangle.Y = 252;
78964 break;
78965 case 1:
78966 rectangle.X = 18;
78967 rectangle.Y = 252;
78968 break;
78969 default:
78970 rectangle.X = 36;
78971 rectangle.Y = 252;
78972 break;
78973 }
78974 mergeLeft = true;
78975 }
78976 else if (right == -2)
78977 {
78978 switch (num20)
78979 {
78980 case 0:
78981 rectangle.X = 54;
78982 rectangle.Y = 252;
78983 break;
78984 case 1:
78985 rectangle.X = 72;
78986 rectangle.Y = 252;
78987 break;
78988 default:
78989 rectangle.X = 90;
78990 rectangle.Y = 252;
78991 break;
78992 }
78993 mergeRight = true;
78994 }
78995 }
78996 else if (up == -2 && down == -1 && left == -1 && right == -1)
78997 {
78998 switch (num20)
78999 {
79000 case 0:
79001 rectangle.X = 108;
79002 rectangle.Y = 144;
79003 break;
79004 case 1:
79005 rectangle.X = 108;
79006 rectangle.Y = 162;
79007 break;
79008 default:
79009 rectangle.X = 108;
79010 rectangle.Y = 180;
79011 break;
79012 }
79013 mergeUp = true;
79014 }
79015 else if (up == -1 && down == -2 && left == -1 && right == -1)
79016 {
79017 switch (num20)
79018 {
79019 case 0:
79020 rectangle.X = 108;
79021 rectangle.Y = 90;
79022 break;
79023 case 1:
79024 rectangle.X = 108;
79025 rectangle.Y = 108;
79026 break;
79027 default:
79028 rectangle.X = 108;
79029 rectangle.Y = 126;
79030 break;
79031 }
79032 mergeDown = true;
79033 }
79034 else if (up == -1 && down == -1 && left == -2 && right == -1)
79035 {
79036 switch (num20)
79037 {
79038 case 0:
79039 rectangle.X = 0;
79040 rectangle.Y = 234;
79041 break;
79042 case 1:
79043 rectangle.X = 18;
79044 rectangle.Y = 234;
79045 break;
79046 default:
79047 rectangle.X = 36;
79048 rectangle.Y = 234;
79049 break;
79050 }
79051 mergeLeft = true;
79052 }
79053 else if (up == -1 && down == -1 && left == -1 && right == -2)
79054 {
79055 switch (num20)
79056 {
79057 case 0:
79058 rectangle.X = 54;
79059 rectangle.Y = 234;
79060 break;
79061 case 1:
79062 rectangle.X = 72;
79063 rectangle.Y = 234;
79064 break;
79065 default:
79066 rectangle.X = 90;
79067 rectangle.Y = 234;
79068 break;
79069 }
79070 mergeRight = true;
79071 }
79072 }
79073 }
79074 int num26 = tile.blockType();
79076 {
79077 if (num26 == 0)
79078 {
79079 bool flag11 = num == up && tile10 != null && tile10.topSlope();
79080 bool flag12 = num == left && tile26 != null && tile26.leftSlope();
79081 bool flag13 = num == right && tile33 != null && tile33.rightSlope();
79082 bool flag14 = num == down && tile19 != null && tile19.bottomSlope();
79083 int num27 = 0;
79084 int num28 = 0;
79085 if (flag11.ToInt() + flag12.ToInt() + flag13.ToInt() + flag14.ToInt() > 2)
79086 {
79087 int num29 = (tile10 != null && tile10.slope() == 1).ToInt() + (tile33 != null && tile33.slope() == 1).ToInt() + (tile19 != null && tile19.slope() == 4).ToInt() + (tile26 != null && tile26.slope() == 4).ToInt();
79088 int num30 = (tile10 != null && tile10.slope() == 2).ToInt() + (tile33 != null && tile33.slope() == 3).ToInt() + (tile19 != null && tile19.slope() == 3).ToInt() + (tile26 != null && tile26.slope() == 2).ToInt();
79089 if (num29 == num30)
79090 {
79091 num27 = 2;
79092 num28 = 4;
79093 }
79094 else if (num29 > num30)
79095 {
79096 bool num46 = num == upLeft && tile42 != null && tile42.slope() == 0;
79097 bool flag15 = num == downRight && tile39 != null && tile39.slope() == 0;
79098 if (num46 && flag15)
79099 {
79100 num28 = 4;
79101 }
79102 else if (flag15)
79103 {
79104 num27 = 6;
79105 }
79106 else
79107 {
79108 num27 = 7;
79109 num28 = 1;
79110 }
79111 }
79112 else
79113 {
79114 bool num47 = num == upRight && tile45 != null && tile45.slope() == 0;
79115 bool flag16 = num == downLeft && tile36 != null && tile36.slope() == 0;
79116 if (num47 && flag16)
79117 {
79118 num28 = 4;
79119 num27 = 1;
79120 }
79121 else if (flag16)
79122 {
79123 num27 = 7;
79124 }
79125 else
79126 {
79127 num27 = 6;
79128 num28 = 1;
79129 }
79130 }
79131 rectangle.X = (18 + num27) * 18;
79132 rectangle.Y = num28 * 18;
79133 }
79134 else
79135 {
79136 if (flag11 && flag12 && num == down && num == right)
79137 {
79138 num28 = 2;
79139 }
79140 else if (flag11 && flag13 && num == down && num == left)
79141 {
79142 num27 = 1;
79143 num28 = 2;
79144 }
79145 else if (flag13 && flag14 && num == up && num == left)
79146 {
79147 num27 = 1;
79148 num28 = 3;
79149 }
79150 else if (flag14 && flag12 && num == up && num == right)
79151 {
79152 num28 = 3;
79153 }
79154 if (num27 != 0 || num28 != 0)
79155 {
79156 rectangle.X = (18 + num27) * 18;
79157 rectangle.Y = num28 * 18;
79158 }
79159 }
79160 }
79161 if (num26 >= 2 && (rectangle.X < 0 || rectangle.Y < 0))
79162 {
79163 int num32 = -1;
79164 int num33 = -1;
79165 int num34 = -1;
79166 int num35 = 0;
79167 int num36 = 0;
79168 switch (num26)
79169 {
79170 case 2:
79171 num32 = left;
79172 num33 = down;
79173 num34 = downLeft;
79174 num35++;
79175 break;
79176 case 3:
79177 num32 = right;
79178 num33 = down;
79179 num34 = downRight;
79180 break;
79181 case 4:
79182 num32 = left;
79183 num33 = up;
79184 num34 = upLeft;
79185 num35++;
79186 num36++;
79187 break;
79188 case 5:
79189 num32 = right;
79190 num33 = up;
79191 num34 = upRight;
79192 num36++;
79193 break;
79194 }
79195 if (num != num32 || num != num33 || num != num34)
79196 {
79197 if (num == num32 && num == num33)
79198 {
79199 num35 += 2;
79200 }
79201 else if (num == num32)
79202 {
79203 num35 += 4;
79204 }
79205 else if (num == num33)
79206 {
79207 num35 += 4;
79208 num36 += 2;
79209 }
79210 else
79211 {
79212 num35 += 2;
79213 num36 += 2;
79214 }
79215 }
79216 rectangle.X = (18 + num35) * 18;
79217 rectangle.Y = num36 * 18;
79218 }
79219 }
79220 if (rectangle.X < 0 || rectangle.Y < 0)
79221 {
79222 if (!flag)
79223 {
79224 flag = true;
79225 TileMergeAttemptWeird(num, -1, Main.tileSolid, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
79226 tileMergeCullCache.Cull(ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
79227 }
79228 if (TileID.Sets.Grass[num] || TileID.Sets.GrassSpecial[num] || Main.tileMoss[num] || TileID.Sets.tileMossBrick[num])
79229 {
79230 TileMergeAttempt(num, -2, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
79231 tileMergeCullCache.Cull(ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight);
79232 }
79233 if (up == num && down == num && left == num && right == num)
79234 {
79235 if (upLeft != num && upRight != num)
79236 {
79237 switch (num20)
79238 {
79239 case 0:
79240 rectangle.X = 108;
79241 rectangle.Y = 18;
79242 break;
79243 case 1:
79244 rectangle.X = 126;
79245 rectangle.Y = 18;
79246 break;
79247 default:
79248 rectangle.X = 144;
79249 rectangle.Y = 18;
79250 break;
79251 }
79252 }
79253 else if (downLeft != num && downRight != num)
79254 {
79255 switch (num20)
79256 {
79257 case 0:
79258 rectangle.X = 108;
79259 rectangle.Y = 36;
79260 break;
79261 case 1:
79262 rectangle.X = 126;
79263 rectangle.Y = 36;
79264 break;
79265 default:
79266 rectangle.X = 144;
79267 rectangle.Y = 36;
79268 break;
79269 }
79270 }
79271 else if (upLeft != num && downLeft != num)
79272 {
79273 switch (num20)
79274 {
79275 case 0:
79276 rectangle.X = 180;
79277 rectangle.Y = 0;
79278 break;
79279 case 1:
79280 rectangle.X = 180;
79281 rectangle.Y = 18;
79282 break;
79283 default:
79284 rectangle.X = 180;
79285 rectangle.Y = 36;
79286 break;
79287 }
79288 }
79289 else if (upRight != num && downRight != num)
79290 {
79291 switch (num20)
79292 {
79293 case 0:
79294 rectangle.X = 198;
79295 rectangle.Y = 0;
79296 break;
79297 case 1:
79298 rectangle.X = 198;
79299 rectangle.Y = 18;
79300 break;
79301 default:
79302 rectangle.X = 198;
79303 rectangle.Y = 36;
79304 break;
79305 }
79306 }
79307 else
79308 {
79309 switch (num20)
79310 {
79311 case 0:
79312 rectangle.X = 18;
79313 rectangle.Y = 18;
79314 break;
79315 case 1:
79316 rectangle.X = 36;
79317 rectangle.Y = 18;
79318 break;
79319 default:
79320 rectangle.X = 54;
79321 rectangle.Y = 18;
79322 break;
79323 }
79324 }
79325 }
79326 else if (up != num && down == num && left == num && right == num)
79327 {
79328 switch (num20)
79329 {
79330 case 0:
79331 rectangle.X = 18;
79332 rectangle.Y = 0;
79333 break;
79334 case 1:
79335 rectangle.X = 36;
79336 rectangle.Y = 0;
79337 break;
79338 default:
79339 rectangle.X = 54;
79340 rectangle.Y = 0;
79341 break;
79342 }
79343 }
79344 else if (up == num && down != num && left == num && right == num)
79345 {
79346 switch (num20)
79347 {
79348 case 0:
79349 rectangle.X = 18;
79350 rectangle.Y = 36;
79351 break;
79352 case 1:
79353 rectangle.X = 36;
79354 rectangle.Y = 36;
79355 break;
79356 default:
79357 rectangle.X = 54;
79358 rectangle.Y = 36;
79359 break;
79360 }
79361 }
79362 else if (up == num && down == num && left != num && right == num)
79363 {
79364 switch (num20)
79365 {
79366 case 0:
79367 rectangle.X = 0;
79368 rectangle.Y = 0;
79369 break;
79370 case 1:
79371 rectangle.X = 0;
79372 rectangle.Y = 18;
79373 break;
79374 default:
79375 rectangle.X = 0;
79376 rectangle.Y = 36;
79377 break;
79378 }
79379 }
79380 else if (up == num && down == num && left == num && right != num)
79381 {
79382 switch (num20)
79383 {
79384 case 0:
79385 rectangle.X = 72;
79386 rectangle.Y = 0;
79387 break;
79388 case 1:
79389 rectangle.X = 72;
79390 rectangle.Y = 18;
79391 break;
79392 default:
79393 rectangle.X = 72;
79394 rectangle.Y = 36;
79395 break;
79396 }
79397 }
79398 else if (up != num && down == num && left != num && right == num)
79399 {
79400 switch (num20)
79401 {
79402 case 0:
79403 rectangle.X = 0;
79404 rectangle.Y = 54;
79405 break;
79406 case 1:
79407 rectangle.X = 36;
79408 rectangle.Y = 54;
79409 break;
79410 default:
79411 rectangle.X = 72;
79412 rectangle.Y = 54;
79413 break;
79414 }
79415 }
79416 else if (up != num && down == num && left == num && right != num)
79417 {
79418 switch (num20)
79419 {
79420 case 0:
79421 rectangle.X = 18;
79422 rectangle.Y = 54;
79423 break;
79424 case 1:
79425 rectangle.X = 54;
79426 rectangle.Y = 54;
79427 break;
79428 default:
79429 rectangle.X = 90;
79430 rectangle.Y = 54;
79431 break;
79432 }
79433 }
79434 else if (up == num && down != num && left != num && right == num)
79435 {
79436 switch (num20)
79437 {
79438 case 0:
79439 rectangle.X = 0;
79440 rectangle.Y = 72;
79441 break;
79442 case 1:
79443 rectangle.X = 36;
79444 rectangle.Y = 72;
79445 break;
79446 default:
79447 rectangle.X = 72;
79448 rectangle.Y = 72;
79449 break;
79450 }
79451 }
79452 else if (up == num && down != num && left == num && right != num)
79453 {
79454 switch (num20)
79455 {
79456 case 0:
79457 rectangle.X = 18;
79458 rectangle.Y = 72;
79459 break;
79460 case 1:
79461 rectangle.X = 54;
79462 rectangle.Y = 72;
79463 break;
79464 default:
79465 rectangle.X = 90;
79466 rectangle.Y = 72;
79467 break;
79468 }
79469 }
79470 else if (up == num && down == num && left != num && right != num)
79471 {
79472 switch (num20)
79473 {
79474 case 0:
79475 rectangle.X = 90;
79476 rectangle.Y = 0;
79477 break;
79478 case 1:
79479 rectangle.X = 90;
79480 rectangle.Y = 18;
79481 break;
79482 default:
79483 rectangle.X = 90;
79484 rectangle.Y = 36;
79485 break;
79486 }
79487 }
79488 else if (up != num && down != num && left == num && right == num)
79489 {
79490 switch (num20)
79491 {
79492 case 0:
79493 rectangle.X = 108;
79494 rectangle.Y = 72;
79495 break;
79496 case 1:
79497 rectangle.X = 126;
79498 rectangle.Y = 72;
79499 break;
79500 default:
79501 rectangle.X = 144;
79502 rectangle.Y = 72;
79503 break;
79504 }
79505 }
79506 else if (up != num && down == num && left != num && right != num)
79507 {
79508 switch (num20)
79509 {
79510 case 0:
79511 rectangle.X = 108;
79512 rectangle.Y = 0;
79513 break;
79514 case 1:
79515 rectangle.X = 126;
79516 rectangle.Y = 0;
79517 break;
79518 default:
79519 rectangle.X = 144;
79520 rectangle.Y = 0;
79521 break;
79522 }
79523 }
79524 else if (up == num && down != num && left != num && right != num)
79525 {
79526 switch (num20)
79527 {
79528 case 0:
79529 rectangle.X = 108;
79530 rectangle.Y = 54;
79531 break;
79532 case 1:
79533 rectangle.X = 126;
79534 rectangle.Y = 54;
79535 break;
79536 default:
79537 rectangle.X = 144;
79538 rectangle.Y = 54;
79539 break;
79540 }
79541 }
79542 else if (up != num && down != num && left != num && right == num)
79543 {
79544 switch (num20)
79545 {
79546 case 0:
79547 rectangle.X = 162;
79548 rectangle.Y = 0;
79549 break;
79550 case 1:
79551 rectangle.X = 162;
79552 rectangle.Y = 18;
79553 break;
79554 default:
79555 rectangle.X = 162;
79556 rectangle.Y = 36;
79557 break;
79558 }
79559 }
79560 else if (up != num && down != num && left == num && right != num)
79561 {
79562 switch (num20)
79563 {
79564 case 0:
79565 rectangle.X = 216;
79566 rectangle.Y = 0;
79567 break;
79568 case 1:
79569 rectangle.X = 216;
79570 rectangle.Y = 18;
79571 break;
79572 default:
79573 rectangle.X = 216;
79574 rectangle.Y = 36;
79575 break;
79576 }
79577 }
79578 else if (up != num && down != num && left != num && right != num)
79579 {
79580 switch (num20)
79581 {
79582 case 0:
79583 rectangle.X = 162;
79584 rectangle.Y = 54;
79585 break;
79586 case 1:
79587 rectangle.X = 180;
79588 rectangle.Y = 54;
79589 break;
79590 default:
79591 rectangle.X = 198;
79592 rectangle.Y = 54;
79593 break;
79594 }
79595 }
79596 }
79597 if (rectangle.X <= -1 || rectangle.Y <= -1)
79598 {
79599 if (num20 <= 0)
79600 {
79601 rectangle.X = 18;
79602 rectangle.Y = 18;
79603 }
79604 else if (num20 == 1)
79605 {
79606 rectangle.X = 36;
79607 rectangle.Y = 18;
79608 }
79609 if (num20 >= 2)
79610 {
79611 rectangle.X = 54;
79612 rectangle.Y = 18;
79613 }
79614 }
79615 if (Main.tileLargeFrames[num] == 1 && num20 == 3)
79616 {
79617 rectangle.Y += 90;
79618 }
79619 if (Main.tileLargeFrames[num] == 2 && num20 == 3)
79620 {
79621 rectangle.Y += 90;
79622 }
79623 tile.frameX = (short)rectangle.X;
79624 tile.frameY = (short)rectangle.Y;
79625 if (TileID.Sets.IsVine[num])
79626 {
79627 up = ((tile10 == null) ? num : ((!tile10.nactive()) ? (-1) : ((!tile10.bottomSlope()) ? tile10.type : (-1))));
79628 if (num != up)
79629 {
79630 bool num48 = up == 60 || up == 62;
79631 bool num49 = up == 109 || up == 115;
79632 bool flag17 = up == 23 || up == 636 || up == 661;
79633 bool flag2 = up == 199 || up == 205 || up == 662;
79634 bool flag3 = up == 2 || up == 52;
79635 bool flag4 = up == 382;
79636 bool num50 = up == 70 || up == 528;
79637 bool num51 = up == 633 || up == 638;
79638 ushort num37 = 0;
79639 if (num51)
79640 {
79641 num37 = 638;
79642 }
79643 if (num50)
79644 {
79645 num37 = 528;
79646 }
79647 if (num49)
79648 {
79649 num37 = 115;
79650 }
79651 if (num48)
79652 {
79653 num37 = 62;
79654 }
79655 if (flag17)
79656 {
79657 num37 = 636;
79658 }
79659 if (flag2)
79660 {
79661 num37 = 205;
79662 }
79663 if (flag3 && num != 382)
79664 {
79665 num37 = 52;
79666 }
79667 if (flag4)
79668 {
79669 num37 = 382;
79670 }
79671 if (num37 != 0 && num37 != num)
79672 {
79673 tile.type = num37;
79674 SquareTileFrame(i, j);
79675 return;
79676 }
79677 }
79678 if (up != num)
79679 {
79680 bool flag5 = false;
79681 if (up == -1)
79682 {
79683 flag5 = true;
79684 }
79685 if (num == 52 && up != 2 && up != 192)
79686 {
79687 flag5 = true;
79688 }
79689 if (num == 382 && up != 2 && up != 192)
79690 {
79691 flag5 = true;
79692 }
79693 if (num == 62 && up != 60)
79694 {
79695 flag5 = true;
79696 }
79697 if (num == 115 && up != 109)
79698 {
79699 flag5 = true;
79700 }
79701 if (num == 528 && up != 70)
79702 {
79703 flag5 = true;
79704 }
79705 if (num == 636 && up != 23 && up != 661)
79706 {
79707 flag5 = true;
79708 }
79709 if (num == 205 && up != 199 && up != 662)
79710 {
79711 flag5 = true;
79712 }
79713 if (num == 638 && up != 633)
79714 {
79715 flag5 = true;
79716 }
79717 if (flag5)
79718 {
79719 KillTile(i, j);
79720 }
79721 }
79722 }
79723 bool flag6 = false;
79724 if (!noTileActions && tile.active() && TileID.Sets.Falling[num])
79725 {
79727 }
79728 if ((rectangle.X != frameX && rectangle.Y != frameY && frameX >= 0 && frameY >= 0) || flag6)
79729 {
79731 if (tileReframeCount < 25)
79732 {
79733 bool num52 = mergeUp;
79734 bool flag7 = mergeDown;
79735 bool flag8 = mergeLeft;
79736 bool flag9 = mergeRight;
79737 TileFrame(i - 1, j);
79738 TileFrame(i + 1, j);
79739 TileFrame(i, j - 1);
79740 TileFrame(i, j + 1);
79741 mergeUp = num52;
79742 mergeDown = flag7;
79743 mergeLeft = flag8;
79744 mergeRight = flag9;
79745 }
79747 }
79748 }
79749 }
79750 }
79751 catch
79752 {
79753 }
79754 if (i > 0 && j > 0)
79755 {
79757 }
79758 }
static void Framing_CheckTile(int callX, int callY)
static void Framing_CheckTile(int callX, int callY)
Definition TEHatRack.cs:175
static void Framing_CheckTile(int callX, int callY)
static bool[] MergesWithDirtInASpecialWay
Definition TileID.cs:13
static bool[] GrassSpecial
Definition TileID.cs:278
static bool[] TreeSapling
Whether or not this tile is a sapling, which can grow into a tree based on the soil it's placed on....
Definition TileID.cs:438
static bool[] ForcedDirtMerging
Definition TileID.cs:163
static bool[] Mud
Definition TileID.cs:266
static bool[] IsVine
Definition TileID.cs:215
static bool[] HasSlopeFrames
Definition TileID.cs:244
static bool[] Ash
Definition TileID.cs:268
static bool[] AllTiles
Definition TileID.cs:262
static int[] NeedsGrassFramingDirt
Definition TileID.cs:332
static bool[] IsBeam
Definition TileID.cs:217
static bool[] NeedsGrassFraming
Definition TileID.cs:330
static bool[] ChecksForMerge
Definition TileID.cs:334
static bool[] tileMossBrick
Definition TileID.cs:286
static bool[] Stone
Definition TileID.cs:399
static bool[] Falling
Definition TileID.cs:368
static bool[] JungleSpecial
Definition TileID.cs:280
static bool[] IcesSnow
Definition TileID.cs:276
static bool[] Dirt
Definition TileID.cs:264
static bool[] OreMergesWithMud
Definition TileID.cs:376
static bool[] Ices
Definition TileID.cs:272
static bool[] BlockMergesWithMergeAllBlock
Set to true automatically for all tiles that are F:Terraria.Main.tileSolid and not F:Terraria....
Definition TileID.cs:374
static bool[] Snow
Definition TileID.cs:270
static bool[] BasicChest
Definition TileID.cs:290
static bool[] BasicChestFake
Definition TileID.cs:292
static bool[] Ore
Indicates that the tile is an ore. Used in worldgen code for various purposes and by Fairies.
Definition TileID.cs:381
static bool[] Platforms
Definition TileID.cs:219
static bool[] IcesSlush
Definition TileID.cs:274
static bool[] MergesWithClouds
Definition TileID.cs:169
static bool[] Grass
Definition TileID.cs:401
static bool[] HellSpecial
Definition TileID.cs:282
static bool[] Torch
Whether or not this tile behaves like a torch. If you are making a torch tile, then setting this to t...
Definition TileID.cs:428
static readonly ushort Count
Definition TileID.cs:1928
static void CheckModTile(int i, int j, int type)
static bool TileFrame(int i, int j, int type, ref bool resetFrame, ref bool noBreak)
This serves as the central class from which tile-related functions are supported and carried out.
Definition TileLoader.cs:23
static void CheckRockGolemHead(int x, int y)
static int tileReframeCount
Definition WorldGen.cs:1134
static void Check1xX(int x, int j, short type)
static bool mergeRight
Definition WorldGen.cs:1240
static bool IsTreeType(int tree)
static void Check3x2(int i, int j, int type)
static void Check2x2(int i, int j, int type)
static void CheckTree(int i, int j)
static void Check2xX(int i, int j, ushort type)
static void TileMergeAttemptFrametest(int i, int j, int myType, int lookfor, ref int up, ref int down, ref int left, ref int right, ref int upLeft, ref int upRight, ref int downLeft, ref int downRight)
static void CheckTallGate(int x, int y, int type)
static void Check1x2Top(int x, int j, ushort type)
static void CheckLilyPad(int x, int y)
static void Check6x3(int i, int j, int type)
static void CheckDoorOpen(int i, int j, Tile tileCache)
static bool noLiquidCheck
Definition WorldGen.cs:1244
static void TileMergeAttempt(int myType, int lookfor, ref int up, ref int down, ref int left, ref int right)
static void KillTile(int i, int j, bool fail=false, bool effectOnly=false, bool noItem=false)
static void Check3x3(int i, int j, int type)
static void CheckAlch(int x, int y)
static void CheckBamboo(int x, int y)
static void Check3x2Wall(int x, int y)
static void Check1x1(int x, int y, int type)
static void TileMergeAttemptWeird(int myType, int changeTo, bool[] exclude, ref int up, ref int down, ref int left, ref int right, ref int upLeft, ref int upRight, ref int downLeft, ref int downRight)
static void CheckOrb(int i, int j, int type)
static void Check3x4(int i, int j, int type)
static void CheckCannon(int i, int j, int type)
static void CheckOnTable1x1(int x, int y, int type)
static UnifiedRandom genRand
Definition WorldGen.cs:1455
static void CheckSign(int x, int y, ushort type)
static void Check2x3Wall(int x, int y)
static void Check1x2(int x, int j, ushort type)
static void CheckPot(int i, int j, int type=28)
static void CheckOasisPlant(int i, int j, int type=530)
static void CheckStinkbugBlocker(int x, int y)
static void CheckWoman(int i, int j)
static void CheckLogicTiles(int x, int y, int type)
static void CheckDye(int x, int y)
static void Check3x1(int i, int j, int type)
static void Check5x4(int i, int j, int type)
static void CheckWeaponsRack(int i, int j)
static bool UpdateMapTile(int i, int j, bool addToList=true)
static void CheckDoorClosed(int i, int j, Tile tileCache, int type)
static void CheckChand(int i, int j, int type)
static void CheckChest(int i, int j, int type)
static void Check3x3Wall(int x, int y)
static void Check2x5(int i, int j, int type)
static void Check2x2Style(int i, int j, int type)
static void TileFrame(int i, int j, bool resetFrame=false, bool noBreak=false)
static bool noTileActions
Definition WorldGen.cs:1204
static void Check4x3Wall(int x, int y)
static void Check4x2(int i, int j, int type)
static void CheckTreeWithSettings(int x, int y, CheckTreeSettings settings)
static void Check2x1(int i, int y, ushort type)
static bool SpawnFallingBlockProjectile(int i, int j, Tile tileCache, Tile tileTopCache, Tile tileBottomCache, int type)
static void CheckPalmTree(int i, int j)
static bool SkipFramingBecauseOfGen
Definition WorldGen.cs:1475
static void CheckTrapDoor(int x, int y, int type)
static void CactusFrame(int i, int j)
static void CheckProjectilePressurePad(int i, int j)
static void CheckPile(int i, int y)
static void CheckTight(int x, int j)
static void CheckSuper(int x, int y, int type)
static void CheckSunflower(int i, int j, int type=27)
static int GetTileMossColor(int tileType)
static void Check3x6(int i, int j, int type)
static void CheckGolf1x1(int x, int y, int type)
static void CheckGnome(int x, int j)
static bool mergeUp
Definition WorldGen.cs:1234
static void Check3x5(int i, int j, int type)
static void CheckUnderwaterPlant(ushort type, int x, int y)
static bool SolidTileAllowBottomSlope(int i, int j)
static void CheckTorch(int x, int y)
static bool VanityTreeGroundTest(int tileType)
static bool IsRope(int x, int y)
static void PlantCheck(int x, int y)
static void CheckMB(int i, int j, int type)
static void CheckFoodPlatter(int x, int y, int type)
static void SquareTileFrame(int i, int j, bool resetFrame=true)
static bool GemTreeGroundTest(int tileType)
static void CheckXmasTree(int x, int y)
static void CheckJunglePlant(int i, int j, int type)
static void CheckCatTail(int x, int j)
static bool mergeDown
Definition WorldGen.cs:1236
static bool mergeLeft
Definition WorldGen.cs:1238
static void CheckBanner(int x, int j, byte type)
static void CheckMan(int i, int j)
static bool AshTreeGroundTest(int tileType)
static void Check6x4Wall(int x, int y)

References Terraria.Tile.active(), Terraria.Liquid.AddWater(), Terraria.ID.TileID.Sets.AllTiles, Terraria.ID.TileID.Sets.Ash, Terraria.ID.TileID.Sets.BasicChest, Terraria.ID.TileID.Sets.BasicChestFake, Terraria.ID.TileID.Sets.BlockMergesWithMergeAllBlock, Terraria.Tile.blockType(), Terraria.ModLoader.TileLoader.CheckModTile(), Terraria.ID.TileID.Sets.ChecksForMerge, Terraria.Tile.ClearBlockPaintAndCoating(), Terraria.ID.TileID.Count, Terraria.ID.TileID.Sets.Dirt, Terraria.ID.TileID.Sets.Falling, Terraria.ID.TileID.Sets.ForcedDirtMerging, Terraria.Tile.frameNumber(), Terraria.Minecart.FrameTrack(), Terraria.Tile.frameX, Terraria.Tile.frameY, Terraria.GameContent.Tile_Entities.TEDisplayDoll.Framing_CheckTile(), Terraria.GameContent.Tile_Entities.TEHatRack.Framing_CheckTile(), Terraria.GameContent.Tile_Entities.TETeleportationPylon.Framing_CheckTile(), Terraria.GameContent.Tile_Entities.TEWeaponsRack.Framing_CheckTile(), Terraria.ID.TileID.Sets.Conversion.Grass, Terraria.ID.TileID.Sets.Grass, Terraria.ID.TileID.Sets.GrassSpecial, Terraria.Tile.halfBrick(), Terraria.ID.TileID.Sets.HasSlopeFrames, Terraria.ID.TileID.Sets.HellSpecial, Terraria.ID.TileID.Sets.Ices, Terraria.ID.TileID.Sets.IcesSlush, Terraria.ID.TileID.Sets.IcesSnow, Terraria.Tile.invisibleBlock(), Terraria.ID.TileID.Sets.IsBeam, Terraria.ID.TileID.Sets.IsVine, Terraria.ID.TileID.Sets.JungleSpecial, Terraria.Tile.liquid, Terraria.Main.maxTilesX, Terraria.Main.maxTilesY, Terraria.ID.TileID.Sets.MergesWithClouds, Terraria.ID.TileID.Sets.Conversion.MergesWithDirtInASpecialWay, Terraria.ID.TileID.Sets.Mud, Terraria.ID.TileID.Sets.NeedsGrassFraming, Terraria.ID.TileID.Sets.NeedsGrassFramingDirt, Terraria.Main.netMode, Terraria.ID.TileID.Sets.Ore, Terraria.ID.TileID.Sets.OreMergesWithMud, Terraria.ID.TileID.Sets.Platforms, Terraria.Main.rockLayer, Terraria.ID.TileID.Sets.Conversion.Sand, Terraria.Framing.SelfFrame8Way(), Terraria.Main.ShouldShowInvisibleWalls(), Terraria.Tile.slope(), Terraria.ID.TileID.Sets.Snow, Terraria.ID.TileID.Sets.Stone, Terraria.Main.tile, Terraria.Main.tileAlch, Terraria.Main.tileBlendAll, Terraria.Main.tileBrick, Terraria.ModLoader.TileLoader.TileFrame(), Terraria.Main.tileFrameImportant, Terraria.Main.tileLargeFrames, Terraria.Main.tileMerge, Terraria.Main.tileMergeDirt, Terraria.Main.tileMoss, Terraria.ID.TileID.Sets.tileMossBrick, Terraria.Main.tileNoAttach, Terraria.Main.tilePile, Terraria.Main.tileRope, Terraria.Main.tileSolid, Terraria.Main.tileSolidTop, Terraria.Main.tileStone, Terraria.ID.TileID.Sets.Torch, Terraria.ID.TileID.Sets.TreeSapling, Terraria.Tile.type, and Terraria.Tile.wall.

Referenced by Terraria.GameContent.Biomes.DeadMansChestBiome.ActuallyPlaceBoulderTrap(), Terraria.GameContent.Biomes.DeadMansChestBiome.ActuallyPlaceDartTrap(), Terraria.GameContent.Biomes.DeadMansChestBiome.ActuallyPlaceExplosive(), Terraria.ModLoader.TileLoader.CheckModTile(), Terraria.WorldBuilding.WorldUtils.ClearTile(), Terraria.WorldBuilding.TileFont.DrawChar(), Terraria.Wiring.HitSwitch(), Terraria.WorldBuilding.TileFont.HLineLabel(), Terraria.WorldBuilding.WorldUtils.TileFrame(), and Terraria.WorldBuilding.TileFont.VLineLabel().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: