Deathmax

Worldgen backup

May 27th, 2011
339
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 449.90 KB | None | 0 0
  1. using Microsoft.Xna.Framework;
  2. using System;
  3. using System.IO;
  4. using System.Threading;
  5. namespace Terraria
  6. {
  7.     internal class WorldGen
  8.     {
  9.         public static int lavaLine;
  10.         public static int waterLine;
  11.         public static bool spawnEye = false;
  12.         public static bool gen = false;
  13.         public static bool shadowOrbSmashed = false;
  14.         public static int shadowOrbCount = 0;
  15.         public static bool spawnMeteor = false;
  16.         public static bool loadFailed = false;
  17.         public static bool worldCleared = false;
  18.         public static int lastMaxTilesX = 0;
  19.         public static int lastMaxTilesY = 0;
  20.         public static bool saveLock = false;
  21.         private static bool mergeUp = false;
  22.         private static bool mergeDown = false;
  23.         private static bool mergeLeft = false;
  24.         private static bool mergeRight = false;
  25.         private static int tempMoonPhase = Main.moonPhase;
  26.         private static bool tempDayTime = Main.dayTime;
  27.         private static bool tempBloodMoon = Main.bloodMoon;
  28.         private static double tempTime = Main.time;
  29.         private static bool stopDrops = false;
  30.         public static bool noLiquidCheck = false;
  31.         [ThreadStatic]
  32.         public static Random genRand = new Random();
  33.         public static string statusText = "";
  34.         private static bool destroyObject = false;
  35.         public static int spawnDelay = 0;
  36.         public static int spawnNPC = 0;
  37.         public static int maxRoomTiles = 1900;
  38.         public static int numRoomTiles;
  39.         public static int[] roomX = new int[WorldGen.maxRoomTiles];
  40.         public static int[] roomY = new int[WorldGen.maxRoomTiles];
  41.         public static int roomX1;
  42.         public static int roomX2;
  43.         public static int roomY1;
  44.         public static int roomY2;
  45.         public static bool canSpawn;
  46.         public static bool[] houseTile = new bool[80];
  47.         public static int bestX = 0;
  48.         public static int bestY = 0;
  49.         public static int hiScore = 0;
  50.         public static int dungeonX;
  51.         public static int dungeonY;
  52.         public static Vector2 lastDungeonHall = default(Vector2);
  53.         public static int maxDRooms = 100;
  54.         public static int numDRooms = 0;
  55.         public static int[] dRoomX = new int[WorldGen.maxDRooms];
  56.         public static int[] dRoomY = new int[WorldGen.maxDRooms];
  57.         public static int[] dRoomSize = new int[WorldGen.maxDRooms];
  58.         private static bool[] dRoomTreasure = new bool[WorldGen.maxDRooms];
  59.         private static int[] dRoomL = new int[WorldGen.maxDRooms];
  60.         private static int[] dRoomR = new int[WorldGen.maxDRooms];
  61.         private static int[] dRoomT = new int[WorldGen.maxDRooms];
  62.         private static int[] dRoomB = new int[WorldGen.maxDRooms];
  63.         private static int numDDoors;
  64.         private static int[] DDoorX = new int[300];
  65.         private static int[] DDoorY = new int[300];
  66.         private static int[] DDoorPos = new int[300];
  67.         private static int numDPlats;
  68.         private static int[] DPlatX = new int[300];
  69.         private static int[] DPlatY = new int[300];
  70.         private static int[] JChestX = new int[100];
  71.         private static int[] JChestY = new int[100];
  72.         private static int numJChests = 0;
  73.         public static int dEnteranceX = 0;
  74.         public static bool dSurface = false;
  75.         private static double dxStrength1;
  76.         private static double dyStrength1;
  77.         private static double dxStrength2;
  78.         private static double dyStrength2;
  79.         private static int dMinX;
  80.         private static int dMaxX;
  81.         private static int dMinY;
  82.         private static int dMaxY;
  83.         private static int numIslandHouses = 0;
  84.         private static int houseCount = 0;
  85.         private static int[] fihX = new int[300];
  86.         private static int[] fihY = new int[300];
  87.         private static int numMCaves = 0;
  88.         private static int[] mCaveX = new int[300];
  89.         private static int[] mCaveY = new int[300];
  90.         public static void SpawnNPC(int x, int y)
  91.         {
  92.             if (Main.wallHouse[(int)Main.tile[x, y].wall])
  93.             {
  94.                 WorldGen.canSpawn = true;
  95.             }
  96.             if (!WorldGen.canSpawn)
  97.             {
  98.                 return;
  99.             }
  100.             if (!WorldGen.StartRoomCheck(x, y))
  101.             {
  102.                 return;
  103.             }
  104.             if (!WorldGen.RoomNeeds(WorldGen.spawnNPC))
  105.             {
  106.                 return;
  107.             }
  108.             WorldGen.ScoreRoom(-1);
  109.             if (WorldGen.hiScore > 0)
  110.             {
  111.                 int num = -1;
  112.                 for (int i = 0; i < 1000; i++)
  113.                 {
  114.                     if (Main.npc[i].active && Main.npc[i].homeless && Main.npc[i].type == WorldGen.spawnNPC)
  115.                     {
  116.                         num = i;
  117.                         break;
  118.                     }
  119.                 }
  120.                 if (num == -1)
  121.                 {
  122.                     int num2 = WorldGen.bestX;
  123.                     int num3 = WorldGen.bestY;
  124.                     bool flag = false;
  125.                     if (!flag)
  126.                     {
  127.                         flag = true;
  128.                         Rectangle value = new Rectangle(num2 * 16 + 8 - Main.screenWidth / 2 - NPC.safeRangeX, num3 * 16 + 8 - Main.screenHeight / 2 - NPC.safeRangeY, Main.screenWidth + NPC.safeRangeX * 2, Main.screenHeight + NPC.safeRangeY * 2);
  129.                         for (int j = 0; j < 8; j++)
  130.                         {
  131.                             if (Main.player[j].active)
  132.                             {
  133.                                 Rectangle rectangle = new Rectangle((int)Main.player[j].position.X, (int)Main.player[j].position.Y, Main.player[j].width, Main.player[j].height);
  134.                                 if (rectangle.Intersects(value))
  135.                                 {
  136.                                     flag = false;
  137.                                     break;
  138.                                 }
  139.                             }
  140.                         }
  141.                     }
  142.                     if (!flag)
  143.                     {
  144.                         for (int k = 1; k < 500; k++)
  145.                         {
  146.                             for (int l = 0; l < 2; l++)
  147.                             {
  148.                                 if (l == 0)
  149.                                 {
  150.                                     num2 = WorldGen.bestX + k;
  151.                                 }
  152.                                 else
  153.                                 {
  154.                                     num2 = WorldGen.bestX - k;
  155.                                 }
  156.                                 if (num2 > 10 && num2 < Main.maxTilesX - 10)
  157.                                 {
  158.                                     int num4 = WorldGen.bestY - k;
  159.                                     double num5 = (double)(WorldGen.bestY + k);
  160.                                     if (num4 < 10)
  161.                                     {
  162.                                         num4 = 10;
  163.                                     }
  164.                                     if (num5 > Main.worldSurface)
  165.                                     {
  166.                                         num5 = Main.worldSurface;
  167.                                     }
  168.                                     int num6 = num4;
  169.                                     while ((double)num6 < num5)
  170.                                     {
  171.                                         num3 = num6;
  172.                                         if (Main.tile[num2, num3].active && Main.tileSolid[(int)Main.tile[num2, num3].type])
  173.                                         {
  174.                                             if (!Collision.SolidTiles(num2 - 1, num2 + 1, num3 - 3, num3 - 1))
  175.                                             {
  176.                                                 flag = true;
  177.                                                 Rectangle value2 = new Rectangle(num2 * 16 + 8 - Main.screenWidth / 2 - NPC.safeRangeX, num3 * 16 + 8 - Main.screenHeight / 2 - NPC.safeRangeY, Main.screenWidth + NPC.safeRangeX * 2, Main.screenHeight + NPC.safeRangeY * 2);
  178.                                                 for (int m = 0; m < 8; m++)
  179.                                                 {
  180.                                                     if (Main.player[m].active)
  181.                                                     {
  182.                                                         Rectangle rectangle2 = new Rectangle((int)Main.player[m].position.X, (int)Main.player[m].position.Y, Main.player[m].width, Main.player[m].height);
  183.                                                         if (rectangle2.Intersects(value2))
  184.                                                         {
  185.                                                             flag = false;
  186.                                                             break;
  187.                                                         }
  188.                                                     }
  189.                                                 }
  190.                                                 break;
  191.                                             }
  192.                                             break;
  193.                                         }
  194.                                         else
  195.                                         {
  196.                                             num6++;
  197.                                         }
  198.                                     }
  199.                                 }
  200.                                 if (flag)
  201.                                 {
  202.                                     break;
  203.                                 }
  204.                             }
  205.                             if (flag)
  206.                             {
  207.                                 break;
  208.                             }
  209.                         }
  210.                     }
  211.                     int num7 = NPC.NewNPC(num2 * 16, num3 * 16, WorldGen.spawnNPC, 1);
  212.                     Main.npc[num7].homeTileX = WorldGen.bestX;
  213.                     Main.npc[num7].homeTileY = WorldGen.bestY;
  214.                     if (num2 < WorldGen.bestX)
  215.                     {
  216.                         Main.npc[num7].direction = 1;
  217.                     }
  218.                     else
  219.                     {
  220.                         if (num2 > WorldGen.bestX)
  221.                         {
  222.                             Main.npc[num7].direction = -1;
  223.                         }
  224.                     }
  225.                     Main.npc[num7].netUpdate = true;
  226.                     if (Main.netMode == 0)
  227.                     {
  228.                         Main.NewText(Main.npc[num7].name + " has arrived!", 50, 125, 255);
  229.                     }
  230.                     else
  231.                     {
  232.                         if (Main.netMode == 2)
  233.                         {
  234.                             NetMessage.SendData(25, -1, -1, Main.npc[num7].name + " has arrived!", 8, 50f, 125f, 255f);
  235.                         }
  236.                     }
  237.                 }
  238.                 else
  239.                 {
  240.                     WorldGen.spawnNPC = 0;
  241.                     Main.npc[num].homeTileX = WorldGen.bestX;
  242.                     Main.npc[num].homeTileY = WorldGen.bestY;
  243.                     Main.npc[num].homeless = false;
  244.                 }
  245.                 WorldGen.spawnNPC = 0;
  246.             }
  247.         }
  248.         public static bool RoomNeeds(int npcType)
  249.         {
  250.             if (WorldGen.houseTile[15] && (WorldGen.houseTile[14] || WorldGen.houseTile[18]) && (WorldGen.houseTile[4] || WorldGen.houseTile[33] || WorldGen.houseTile[34] || WorldGen.houseTile[35] || WorldGen.houseTile[36] || WorldGen.houseTile[42] || WorldGen.houseTile[49]) && (WorldGen.houseTile[10] || WorldGen.houseTile[11] || WorldGen.houseTile[19]))
  251.             {
  252.                 WorldGen.canSpawn = true;
  253.             }
  254.             else
  255.             {
  256.                 WorldGen.canSpawn = false;
  257.             }
  258.             return WorldGen.canSpawn;
  259.         }
  260.         public static void QuickFindHome(int npc)
  261.         {
  262.             if (Main.npc[npc].homeTileX > 10 && Main.npc[npc].homeTileY > 10 && Main.npc[npc].homeTileX < Main.maxTilesX - 10 && Main.npc[npc].homeTileY < Main.maxTilesY)
  263.             {
  264.                 WorldGen.canSpawn = false;
  265.                 WorldGen.StartRoomCheck(Main.npc[npc].homeTileX, Main.npc[npc].homeTileY - 1);
  266.                 if (!WorldGen.canSpawn)
  267.                 {
  268.                     for (int i = Main.npc[npc].homeTileX - 1; i < Main.npc[npc].homeTileX + 2; i++)
  269.                     {
  270.                         int num = Main.npc[npc].homeTileY - 1;
  271.                         while (num < Main.npc[npc].homeTileY + 2 && !WorldGen.StartRoomCheck(i, num))
  272.                         {
  273.                             num++;
  274.                         }
  275.                     }
  276.                 }
  277.                 if (!WorldGen.canSpawn)
  278.                 {
  279.                     int num2 = 10;
  280.                     for (int j = Main.npc[npc].homeTileX - num2; j <= Main.npc[npc].homeTileX + num2; j += 2)
  281.                     {
  282.                         int num3 = Main.npc[npc].homeTileY - num2;
  283.                         while (num3 <= Main.npc[npc].homeTileY + num2 && !WorldGen.StartRoomCheck(j, num3))
  284.                         {
  285.                             num3 += 2;
  286.                         }
  287.                     }
  288.                 }
  289.                 if (WorldGen.canSpawn)
  290.                 {
  291.                     WorldGen.RoomNeeds(Main.npc[npc].type);
  292.                     if (WorldGen.canSpawn)
  293.                     {
  294.                         WorldGen.ScoreRoom(npc);
  295.                     }
  296.                     if (WorldGen.canSpawn && WorldGen.hiScore > 0)
  297.                     {
  298.                         Main.npc[npc].homeTileX = WorldGen.bestX;
  299.                         Main.npc[npc].homeTileY = WorldGen.bestY;
  300.                         Main.npc[npc].homeless = false;
  301.                         WorldGen.canSpawn = false;
  302.                         return;
  303.                     }
  304.                     Main.npc[npc].homeless = true;
  305.                     return;
  306.                 }
  307.                 else
  308.                 {
  309.                     Main.npc[npc].homeless = true;
  310.                 }
  311.             }
  312.         }
  313.         public static void ScoreRoom(int ignoreNPC = -1)
  314.         {
  315.             for (int i = 0; i < 1000; i++)
  316.             {
  317.                 if (Main.npc[i].active && Main.npc[i].townNPC && ignoreNPC != i && !Main.npc[i].homeless)
  318.                 {
  319.                     for (int j = 0; j < WorldGen.numRoomTiles; j++)
  320.                     {
  321.                         if (Main.npc[i].homeTileX == WorldGen.roomX[j] && Main.npc[i].homeTileY == WorldGen.roomY[j])
  322.                         {
  323.                             bool flag = false;
  324.                             for (int k = 0; k < WorldGen.numRoomTiles; k++)
  325.                             {
  326.                                 if (Main.npc[i].homeTileX == WorldGen.roomX[k] && Main.npc[i].homeTileY - 1 == WorldGen.roomY[k])
  327.                                 {
  328.                                     flag = true;
  329.                                     break;
  330.                                 }
  331.                             }
  332.                             if (flag)
  333.                             {
  334.                                 WorldGen.hiScore = -1;
  335.                                 return;
  336.                             }
  337.                         }
  338.                     }
  339.                 }
  340.             }
  341.             WorldGen.hiScore = 0;
  342.             int num = 0;
  343.             int num2 = 0;
  344.             int num3 = WorldGen.roomX1 - Main.screenWidth / 2 / 16 - 1 - 21;
  345.             int num4 = WorldGen.roomX2 + Main.screenWidth / 2 / 16 + 1 + 21;
  346.             int num5 = WorldGen.roomY1 - Main.screenHeight / 2 / 16 - 1 - 21;
  347.             int num6 = WorldGen.roomY2 + Main.screenHeight / 2 / 16 + 1 + 21;
  348.             if (num3 < 0)
  349.             {
  350.                 num3 = 0;
  351.             }
  352.             if (num4 >= Main.maxTilesX)
  353.             {
  354.                 num4 = Main.maxTilesX - 1;
  355.             }
  356.             if (num5 < 0)
  357.             {
  358.                 num5 = 0;
  359.             }
  360.             if (num6 > Main.maxTilesX)
  361.             {
  362.                 num6 = Main.maxTilesX;
  363.             }
  364.             for (int l = num3 + 1; l < num4; l++)
  365.             {
  366.                 for (int m = num5 + 2; m < num6 + 2; m++)
  367.                 {
  368.                     if (Main.tile[l, m].active)
  369.                     {
  370.                         if (Main.tile[l, m].type == 23 || Main.tile[l, m].type == 24 || Main.tile[l, m].type == 25 || Main.tile[l, m].type == 32)
  371.                         {
  372.                             Main.evilTiles++;
  373.                         }
  374.                         else
  375.                         {
  376.                             if (Main.tile[l, m].type == 27)
  377.                             {
  378.                                 Main.evilTiles -= 5;
  379.                             }
  380.                         }
  381.                     }
  382.                 }
  383.             }
  384.             if (num2 < 50)
  385.             {
  386.                 num2 = 0;
  387.             }
  388.             int num7 = -num2;
  389.             if (num7 <= -250)
  390.             {
  391.                 WorldGen.hiScore = num7;
  392.                 return;
  393.             }
  394.             num3 = WorldGen.roomX1;
  395.             num4 = WorldGen.roomX2;
  396.             num5 = WorldGen.roomY1;
  397.             num6 = WorldGen.roomY2;
  398.             for (int n = num3 + 1; n < num4; n++)
  399.             {
  400.                 for (int num8 = num5 + 2; num8 < num6 + 2; num8++)
  401.                 {
  402.                     if (Main.tile[n, num8].active)
  403.                     {
  404.                         num = num7;
  405.                         if (Main.tileSolid[(int)Main.tile[n, num8].type] && !Main.tileSolidTop[(int)Main.tile[n, num8].type] && !Collision.SolidTiles(n - 1, n + 1, num8 - 3, num8 - 1) && Main.tile[n - 1, num8].active && Main.tileSolid[(int)Main.tile[n - 1, num8].type] && Main.tile[n + 1, num8].active && Main.tileSolid[(int)Main.tile[n + 1, num8].type])
  406.                         {
  407.                             for (int num9 = n - 2; num9 < n + 3; num9++)
  408.                             {
  409.                                 for (int num10 = num8 - 4; num10 < num8; num10++)
  410.                                 {
  411.                                     if (Main.tile[num9, num10].active)
  412.                                     {
  413.                                         if (num9 == n)
  414.                                         {
  415.                                             num -= 15;
  416.                                         }
  417.                                         else
  418.                                         {
  419.                                             if (Main.tile[num9, num10].type == 10 || Main.tile[num9, num10].type == 11)
  420.                                             {
  421.                                                 num -= 20;
  422.                                             }
  423.                                             else
  424.                                             {
  425.                                                 if (Main.tileSolid[(int)Main.tile[num9, num10].type])
  426.                                                 {
  427.                                                     num -= 5;
  428.                                                 }
  429.                                                 else
  430.                                                 {
  431.                                                     num += 5;
  432.                                                 }
  433.                                             }
  434.                                         }
  435.                                     }
  436.                                 }
  437.                             }
  438.                             if (num > WorldGen.hiScore)
  439.                             {
  440.                                 bool flag2 = false;
  441.                                 for (int num11 = 0; num11 < WorldGen.numRoomTiles; num11++)
  442.                                 {
  443.                                     if (WorldGen.roomX[num11] == n && WorldGen.roomY[num11] == num8)
  444.                                     {
  445.                                         flag2 = true;
  446.                                         break;
  447.                                     }
  448.                                 }
  449.                                 if (flag2)
  450.                                 {
  451.                                     WorldGen.hiScore = num;
  452.                                     WorldGen.bestX = n;
  453.                                     WorldGen.bestY = num8;
  454.                                 }
  455.                             }
  456.                         }
  457.                     }
  458.                 }
  459.             }
  460.         }
  461.         public static bool StartRoomCheck(int x, int y)
  462.         {
  463.             WorldGen.roomX1 = x;
  464.             WorldGen.roomX2 = x;
  465.             WorldGen.roomY1 = y;
  466.             WorldGen.roomY2 = y;
  467.             WorldGen.numRoomTiles = 0;
  468.             for (int i = 0; i < 80; i++)
  469.             {
  470.                 WorldGen.houseTile[i] = false;
  471.             }
  472.             WorldGen.canSpawn = true;
  473.             if (Main.tile[x, y].active && Main.tileSolid[(int)Main.tile[x, y].type])
  474.             {
  475.                 WorldGen.canSpawn = false;
  476.             }
  477.             WorldGen.CheckRoom(x, y);
  478.             if (WorldGen.numRoomTiles < 60)
  479.             {
  480.                 WorldGen.canSpawn = false;
  481.             }
  482.             return WorldGen.canSpawn;
  483.         }
  484.         public static void CheckRoom(int x, int y)
  485.         {
  486.             if (!WorldGen.canSpawn)
  487.             {
  488.                 return;
  489.             }
  490.             if (x < 10 || y < 10 || x >= Main.maxTilesX - 10 || y >= WorldGen.lastMaxTilesY - 10)
  491.             {
  492.                 WorldGen.canSpawn = false;
  493.                 return;
  494.             }
  495.             for (int i = 0; i < WorldGen.numRoomTiles; i++)
  496.             {
  497.                 if (WorldGen.roomX[i] == x && WorldGen.roomY[i] == y)
  498.                 {
  499.                     return;
  500.                 }
  501.             }
  502.             WorldGen.roomX[WorldGen.numRoomTiles] = x;
  503.             WorldGen.roomY[WorldGen.numRoomTiles] = y;
  504.             WorldGen.numRoomTiles++;
  505.             if (WorldGen.numRoomTiles >= WorldGen.maxRoomTiles)
  506.             {
  507.                 WorldGen.canSpawn = false;
  508.                 return;
  509.             }
  510.             if (Main.tile[x, y].active)
  511.             {
  512.                 WorldGen.houseTile[(int)Main.tile[x, y].type] = true;
  513.                 if (Main.tileSolid[(int)Main.tile[x, y].type] || Main.tile[x, y].type == 11)
  514.                 {
  515.                     return;
  516.                 }
  517.             }
  518.             if (x < WorldGen.roomX1)
  519.             {
  520.                 WorldGen.roomX1 = x;
  521.             }
  522.             if (x > WorldGen.roomX2)
  523.             {
  524.                 WorldGen.roomX2 = x;
  525.             }
  526.             if (y < WorldGen.roomY1)
  527.             {
  528.                 WorldGen.roomY1 = y;
  529.             }
  530.             if (y > WorldGen.roomY2)
  531.             {
  532.                 WorldGen.roomY2 = y;
  533.             }
  534.             bool flag = false;
  535.             bool flag2 = false;
  536.             for (int j = -2; j < 3; j++)
  537.             {
  538.                 if (Main.wallHouse[(int)Main.tile[x + j, y].wall])
  539.                 {
  540.                     flag = true;
  541.                 }
  542.                 if (Main.tile[x + j, y].active && (Main.tileSolid[(int)Main.tile[x + j, y].type] || Main.tile[x + j, y].type == 11))
  543.                 {
  544.                     flag = true;
  545.                 }
  546.                 if (Main.wallHouse[(int)Main.tile[x, y + j].wall])
  547.                 {
  548.                     flag2 = true;
  549.                 }
  550.                 if (Main.tile[x, y + j].active && (Main.tileSolid[(int)Main.tile[x, y + j].type] || Main.tile[x, y + j].type == 11))
  551.                 {
  552.                     flag2 = true;
  553.                 }
  554.             }
  555.             if (!flag || !flag2)
  556.             {
  557.                 WorldGen.canSpawn = false;
  558.                 return;
  559.             }
  560.             for (int k = x - 1; k < x + 2; k++)
  561.             {
  562.                 for (int l = y - 1; l < y + 2; l++)
  563.                 {
  564.                     if ((k != x || l != y) && WorldGen.canSpawn)
  565.                     {
  566.                         WorldGen.CheckRoom(k, l);
  567.                     }
  568.                 }
  569.             }
  570.         }
  571.         public static void dropMeteor()
  572.         {
  573.             bool flag = true;
  574.             int num = 0;
  575.             if (Main.netMode == 1)
  576.             {
  577.                 return;
  578.             }
  579.             for (int i = 0; i < 8; i++)
  580.             {
  581.                 if (Main.player[i].active)
  582.                 {
  583.                     flag = false;
  584.                     break;
  585.                 }
  586.             }
  587.             int num2 = 0;
  588.             float num3 = (float)(Main.maxTilesX / 4200);
  589.             int num4 = (int)(400f * num3);
  590.             for (int j = 5; j < Main.maxTilesX - 5; j++)
  591.             {
  592.                 int num5 = 5;
  593.                 while ((double)num5 < Main.worldSurface)
  594.                 {
  595.                     if (Main.tile[j, num5].active && Main.tile[j, num5].type == 37)
  596.                     {
  597.                         num2++;
  598.                         if (num2 > num4)
  599.                         {
  600.                             return;
  601.                         }
  602.                     }
  603.                     num5++;
  604.                 }
  605.             }
  606.             while (!flag)
  607.             {
  608.                 float num6 = (float)Main.maxTilesX * 0.08f;
  609.                 int num7 = Main.rand.Next(50, Main.maxTilesX - 50);
  610.                 while ((float)num7 > (float)Main.spawnTileX - num6 && (float)num7 < (float)Main.spawnTileX + num6)
  611.                 {
  612.                     num7 = Main.rand.Next(50, Main.maxTilesX - 50);
  613.                 }
  614.                 for (int k = Main.rand.Next(100); k < Main.maxTilesY; k++)
  615.                 {
  616.                     if (Main.tile[num7, k].active && Main.tileSolid[(int)Main.tile[num7, k].type])
  617.                     {
  618.                         flag = WorldGen.meteor(num7, k);
  619.                         break;
  620.                     }
  621.                 }
  622.                 num++;
  623.                 if (num >= 100)
  624.                 {
  625.                     return;
  626.                 }
  627.             }
  628.         }
  629.         public static bool meteor(int i, int j)
  630.         {
  631.             if (i < 50 || i > Main.maxTilesX - 50)
  632.             {
  633.                 return false;
  634.             }
  635.             if (j < 50 || j > Main.maxTilesY - 50)
  636.             {
  637.                 return false;
  638.             }
  639.             int num = 25;
  640.             Rectangle rectangle = new Rectangle((i - num) * 16, (j - num) * 16, num * 2 * 16, num * 2 * 16);
  641.             for (int k = 0; k < 8; k++)
  642.             {
  643.                 if (Main.player[k].active)
  644.                 {
  645.                     Rectangle value = new Rectangle((int)(Main.player[k].position.X + (float)(Main.player[k].width / 2) - (float)(Main.screenWidth / 2) - (float)NPC.safeRangeX), (int)(Main.player[k].position.Y + (float)(Main.player[k].height / 2) - (float)(Main.screenHeight / 2) - (float)NPC.safeRangeY), Main.screenWidth + NPC.safeRangeX * 2, Main.screenHeight + NPC.safeRangeY * 2);
  646.                     if (rectangle.Intersects(value))
  647.                     {
  648.                         return false;
  649.                     }
  650.                 }
  651.             }
  652.             for (int l = 0; l < 1000; l++)
  653.             {
  654.                 if (Main.npc[l].active)
  655.                 {
  656.                     Rectangle value2 = new Rectangle((int)Main.npc[l].position.X, (int)Main.npc[l].position.Y, Main.npc[l].width, Main.npc[l].height);
  657.                     if (rectangle.Intersects(value2))
  658.                     {
  659.                         return false;
  660.                     }
  661.                 }
  662.             }
  663.             for (int m = i - num; m < i + num; m++)
  664.             {
  665.                 for (int n = j - num; n < j + num; n++)
  666.                 {
  667.                     if (Main.tile[m, n].active && Main.tile[m, n].type == 21)
  668.                     {
  669.                         return false;
  670.                     }
  671.                 }
  672.             }
  673.             WorldGen.stopDrops = true;
  674.             num = 15;
  675.             for (int num2 = i - num; num2 < i + num; num2++)
  676.             {
  677.                 for (int num3 = j - num; num3 < j + num; num3++)
  678.                 {
  679.                     if (num3 > j + Main.rand.Next(-2, 3) - 5 && (double)(Math.Abs(i - num2) + Math.Abs(j - num3)) < (double)num * 1.5 + (double)Main.rand.Next(-5, 5))
  680.                     {
  681.                         if (!Main.tileSolid[(int)Main.tile[num2, num3].type])
  682.                         {
  683.                             Main.tile[num2, num3].active = false;
  684.                         }
  685.                         Main.tile[num2, num3].type = 37;
  686.                     }
  687.                 }
  688.             }
  689.             num = 10;
  690.             for (int num4 = i - num; num4 < i + num; num4++)
  691.             {
  692.                 for (int num5 = j - num; num5 < j + num; num5++)
  693.                 {
  694.                     if (num5 > j + Main.rand.Next(-2, 3) - 5 && Math.Abs(i - num4) + Math.Abs(j - num5) < num + Main.rand.Next(-3, 4))
  695.                     {
  696.                         Main.tile[num4, num5].active = false;
  697.                     }
  698.                 }
  699.             }
  700.             num = 16;
  701.             for (int num6 = i - num; num6 < i + num; num6++)
  702.             {
  703.                 for (int num7 = j - num; num7 < j + num; num7++)
  704.                 {
  705.                     if (Main.tile[num6, num7].type == 5 || Main.tile[num6, num7].type == 32)
  706.                     {
  707.                         WorldGen.KillTile(num6, num7, false, false, false);
  708.                     }
  709.                     WorldGen.SquareTileFrame(num6, num7, true);
  710.                     WorldGen.SquareWallFrame(num6, num7, true);
  711.                 }
  712.             }
  713.             num = 23;
  714.             for (int num8 = i - num; num8 < i + num; num8++)
  715.             {
  716.                 for (int num9 = j - num; num9 < j + num; num9++)
  717.                 {
  718.                     if (Main.tile[num8, num9].active && Main.rand.Next(10) == 0 && (double)(Math.Abs(i - num8) + Math.Abs(j - num9)) < (double)num * 1.3)
  719.                     {
  720.                         if (Main.tile[num8, num9].type == 5 || Main.tile[num8, num9].type == 32)
  721.                         {
  722.                             WorldGen.KillTile(num8, num9, false, false, false);
  723.                         }
  724.                         Main.tile[num8, num9].type = 37;
  725.                         WorldGen.SquareTileFrame(num8, num9, true);
  726.                     }
  727.                 }
  728.             }
  729.             WorldGen.stopDrops = false;
  730.             if (Main.netMode == 0)
  731.             {
  732.                 Main.NewText("A meteorite has landed!", 50, 255, 130);
  733.             }
  734.             else
  735.             {
  736.                 if (Main.netMode == 2)
  737.                 {
  738.                     NetMessage.SendData(25, -1, -1, "A meteorite has landed!", 8, 50f, 255f, 130f);
  739.                 }
  740.             }
  741.             if (Main.netMode != 1)
  742.             {
  743.                 NetMessage.SendTileSquare(-1, i, j, 30);
  744.             }
  745.             return true;
  746.         }
  747.         public static void setWorldSize()
  748.         {
  749.             Main.bottomWorld = (float)(Main.maxTilesY * 16);
  750.             Main.rightWorld = (float)(Main.maxTilesX * 16);
  751.             Main.maxSectionsX = Main.maxTilesX / 200;
  752.             Main.maxSectionsY = Main.maxTilesY / 150;
  753.         }
  754.         public static void worldGenCallBack(object threadContext)
  755.         {
  756.             Main.PlaySound(10, -1, -1, 1);
  757.             WorldGen.clearWorld();
  758.             WorldGen.generateWorld(-1);
  759.             WorldGen.saveWorld(true);
  760.             Main.LoadWorlds();
  761.             if (Main.menuMode == 10)
  762.             {
  763.                 Main.menuMode = 6;
  764.             }
  765.             Main.PlaySound(10, -1, -1, 1);
  766.         }
  767.         public static void CreateNewWorld()
  768.         {
  769.             ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.worldGenCallBack), 1);
  770.         }
  771.         public static void SaveAndQuitCallBack(object threadContext)
  772.         {
  773.             Main.menuMode = 10;
  774.             Main.gameMenu = true;
  775.             Player.SavePlayer(Main.player[Main.myPlayer], Main.playerPathName);
  776.             if (Main.netMode == 0)
  777.             {
  778.                 WorldGen.saveWorld(false);
  779.                 Main.PlaySound(10, -1, -1, 1);
  780.             }
  781.             else
  782.             {
  783.                 Netplay.disconnect = true;
  784.                 Main.netMode = 0;
  785.             }
  786.             Main.menuMode = 0;
  787.         }
  788.         public static void SaveAndQuit()
  789.         {
  790.             Main.PlaySound(11, -1, -1, 1);
  791.             ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.SaveAndQuitCallBack), 1);
  792.         }
  793.         public static void playWorldCallBack(object threadContext)
  794.         {
  795.             if (Main.rand == null)
  796.             {
  797.                 Main.rand = new Random((int)DateTime.Now.Ticks);
  798.             }
  799.             for (int i = 0; i < 8; i++)
  800.             {
  801.                 if (i != Main.myPlayer)
  802.                 {
  803.                     Main.player[i].active = false;
  804.                 }
  805.             }
  806.             WorldGen.loadWorld();
  807.             if (WorldGen.loadFailed)
  808.             {
  809.                 return;
  810.             }
  811.             WorldGen.EveryTileFrame();
  812.             if (Main.gameMenu)
  813.             {
  814.                 Main.gameMenu = false;
  815.             }
  816.             Main.player[Main.myPlayer].Spawn();
  817.             Main.player[Main.myPlayer].UpdatePlayer(Main.myPlayer);
  818.             Main.dayTime = WorldGen.tempDayTime;
  819.             Main.time = WorldGen.tempTime;
  820.             Main.moonPhase = WorldGen.tempMoonPhase;
  821.             Main.bloodMoon = WorldGen.tempBloodMoon;
  822.             Main.PlaySound(11, -1, -1, 1);
  823.             Main.resetClouds = true;
  824.         }
  825.         public static void playWorld()
  826.         {
  827.             ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.playWorldCallBack), 1);
  828.         }
  829.         public static void saveAndPlayCallBack(object threadContext)
  830.         {
  831.             WorldGen.saveWorld(false);
  832.         }
  833.         public static void saveAndPlay()
  834.         {
  835.             ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.saveAndPlayCallBack), 1);
  836.         }
  837.         public static void saveToonWhilePlayingCallBack(object threadContext)
  838.         {
  839.             Player.SavePlayer(Main.player[Main.myPlayer], Main.playerPathName);
  840.         }
  841.         public static void saveToonWhilePlaying()
  842.         {
  843.             ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.saveToonWhilePlayingCallBack), 1);
  844.         }
  845.         public static void serverLoadWorldCallBack(object threadContext)
  846.         {
  847.             WorldGen.loadWorld();
  848.             if (WorldGen.loadFailed)
  849.             {
  850.                 return;
  851.             }
  852.             Main.PlaySound(10, -1, -1, 1);
  853.             Netplay.StartServer();
  854.             Main.dayTime = WorldGen.tempDayTime;
  855.             Main.time = WorldGen.tempTime;
  856.             Main.moonPhase = WorldGen.tempMoonPhase;
  857.             Main.bloodMoon = WorldGen.tempBloodMoon;
  858.         }
  859.         public static void serverLoadWorld()
  860.         {
  861.             ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.serverLoadWorldCallBack), 1);
  862.         }
  863.         public static void clearWorld()
  864.         {
  865.             WorldGen.spawnEye = false;
  866.             WorldGen.spawnNPC = 0;
  867.             WorldGen.shadowOrbCount = 0;
  868.             Main.helpText = 0;
  869.             Main.dungeonX = 0;
  870.             Main.dungeonY = 0;
  871.             NPC.downedBoss1 = false;
  872.             NPC.downedBoss2 = false;
  873.             NPC.downedBoss3 = false;
  874.             WorldGen.shadowOrbSmashed = false;
  875.             WorldGen.spawnMeteor = false;
  876.             WorldGen.stopDrops = false;
  877.             Main.invasionDelay = 0;
  878.             Main.invasionType = 0;
  879.             Main.invasionSize = 0;
  880.             Main.invasionWarn = 0;
  881.             Main.invasionX = 0.0;
  882.             WorldGen.noLiquidCheck = false;
  883.             Liquid.numLiquid = 0;
  884.             LiquidBuffer.numLiquidBuffer = 0;
  885.             if (Main.netMode == 1 || WorldGen.lastMaxTilesX > Main.maxTilesX || WorldGen.lastMaxTilesY > Main.maxTilesY)
  886.             {
  887.                 for (int i = 0; i < WorldGen.lastMaxTilesX; i++)
  888.                 {
  889.                     float num = (float)i / (float)WorldGen.lastMaxTilesX;
  890.                     Main.statusText = "Freeing unused resources: " + (int)(num * 100f + 1f) + "%";
  891.                     for (int j = 0; j < WorldGen.lastMaxTilesY; j++)
  892.                     {
  893.                         Main.tile[i, j] = null;
  894.                     }
  895.                 }
  896.             }
  897.             WorldGen.lastMaxTilesX = Main.maxTilesX;
  898.             WorldGen.lastMaxTilesY = Main.maxTilesY;
  899.             Main.tile = new Tile[Main.maxTilesX, Main.maxTilesY];
  900.             if (Main.netMode != 1)
  901.             {
  902.                 for (int k = 0; k < Main.maxTilesX; k++)
  903.                 {
  904.                     float num2 = (float)k / (float)Main.maxTilesX;
  905.                     Main.statusText = "Resetting game objects: " + (int)(num2 * 100f + 1f) + "%";
  906.                     for (int l = 0; l < Main.maxTilesY; l++)
  907.                     {
  908.                         Main.tile[k, l] = new Tile();
  909.                     }
  910.                 }
  911.             }
  912.             for (int m = 0; m < 2000; m++)
  913.             {
  914.                 Main.dust[m] = new Dust();
  915.             }
  916.             for (int n = 0; n < 200; n++)
  917.             {
  918.                 Main.gore[n] = new Gore();
  919.             }
  920.             for (int num3 = 0; num3 < 200; num3++)
  921.             {
  922.                 Main.item[num3] = new Item();
  923.             }
  924.             for (int num4 = 0; num4 < 1000; num4++)
  925.             {
  926.                 Main.npc[num4] = new NPC();
  927.             }
  928.             for (int num5 = 0; num5 < 1000; num5++)
  929.             {
  930.                 Main.projectile[num5] = new Projectile();
  931.             }
  932.             for (int num6 = 0; num6 < 1000; num6++)
  933.             {
  934.                 Main.chest[num6] = null;
  935.             }
  936.             for (int num7 = 0; num7 < 1000; num7++)
  937.             {
  938.                 Main.sign[num7] = null;
  939.             }
  940.             for (int num8 = 0; num8 < Liquid.resLiquid; num8++)
  941.             {
  942.                 Main.liquid[num8] = new Liquid();
  943.             }
  944.             for (int num9 = 0; num9 < 10000; num9++)
  945.             {
  946.                 Main.liquidBuffer[num9] = new LiquidBuffer();
  947.             }
  948.             WorldGen.setWorldSize();
  949.             WorldGen.worldCleared = true;
  950.         }
  951.         public static void saveWorld(bool resetTime = false)
  952.         {
  953.             if (WorldGen.saveLock)
  954.             {
  955.                 return;
  956.             }
  957.             WorldGen.saveLock = true;
  958.             if (Main.skipMenu)
  959.             {
  960.                 return;
  961.             }
  962.             bool value = Main.dayTime;
  963.             WorldGen.tempTime = Main.time;
  964.             WorldGen.tempMoonPhase = Main.moonPhase;
  965.             WorldGen.tempBloodMoon = Main.bloodMoon;
  966.             if (resetTime)
  967.             {
  968.                 value = true;
  969.                 WorldGen.tempTime = 13500.0;
  970.                 WorldGen.tempMoonPhase = 0;
  971.                 WorldGen.tempBloodMoon = false;
  972.             }
  973.             if (Main.worldPathName == null)
  974.             {
  975.                 return;
  976.             }
  977.             string text = Main.worldPathName + ".sav";
  978.             using (FileStream fileStream = new FileStream(text, FileMode.Create))
  979.             {
  980.                 using (BinaryWriter binaryWriter = new BinaryWriter(fileStream))
  981.                 {
  982.                     binaryWriter.Write(Main.curRelease);
  983.                     binaryWriter.Write(Main.worldName);
  984.                     binaryWriter.Write(Main.worldID);
  985.                     binaryWriter.Write((int)Main.leftWorld);
  986.                     binaryWriter.Write((int)Main.rightWorld);
  987.                     binaryWriter.Write((int)Main.topWorld);
  988.                     binaryWriter.Write((int)Main.bottomWorld);
  989.                     binaryWriter.Write(Main.maxTilesY);
  990.                     binaryWriter.Write(Main.maxTilesX);
  991.                     binaryWriter.Write(Main.spawnTileX);
  992.                     binaryWriter.Write(Main.spawnTileY);
  993.                     binaryWriter.Write(Main.worldSurface);
  994.                     binaryWriter.Write(Main.rockLayer);
  995.                     binaryWriter.Write(WorldGen.tempTime);
  996.                     binaryWriter.Write(value);
  997.                     binaryWriter.Write(WorldGen.tempMoonPhase);
  998.                     binaryWriter.Write(WorldGen.tempBloodMoon);
  999.                     binaryWriter.Write(Main.dungeonX);
  1000.                     binaryWriter.Write(Main.dungeonY);
  1001.                     binaryWriter.Write(NPC.downedBoss1);
  1002.                     binaryWriter.Write(NPC.downedBoss2);
  1003.                     binaryWriter.Write(NPC.downedBoss3);
  1004.                     binaryWriter.Write(WorldGen.shadowOrbSmashed);
  1005.                     binaryWriter.Write(WorldGen.spawnMeteor);
  1006.                     binaryWriter.Write((byte)WorldGen.shadowOrbCount);
  1007.                     binaryWriter.Write(Main.invasionDelay);
  1008.                     binaryWriter.Write(Main.invasionSize);
  1009.                     binaryWriter.Write(Main.invasionType);
  1010.                     binaryWriter.Write(Main.invasionX);
  1011.                     for (int i = 0; i < Main.maxTilesX; i++)
  1012.                     {
  1013.                         float num = (float)i / (float)Main.maxTilesX;
  1014.                         Main.statusText = "Saving world data: " + (int)(num * 100f + 1f) + "%";
  1015.                         for (int j = 0; j < Main.maxTilesY; j++)
  1016.                         {
  1017.                             binaryWriter.Write(Main.tile[i, j].active);
  1018.                             if (Main.tile[i, j].active)
  1019.                             {
  1020.                                 binaryWriter.Write(Main.tile[i, j].type);
  1021.                                 if (Main.tileFrameImportant[(int)Main.tile[i, j].type])
  1022.                                 {
  1023.                                     binaryWriter.Write(Main.tile[i, j].frameX);
  1024.                                     binaryWriter.Write(Main.tile[i, j].frameY);
  1025.                                 }
  1026.                             }
  1027.                             binaryWriter.Write(Main.tile[i, j].lighted);
  1028.                             if (Main.tile[i, j].wall > 0)
  1029.                             {
  1030.                                 binaryWriter.Write(true);
  1031.                                 binaryWriter.Write(Main.tile[i, j].wall);
  1032.                             }
  1033.                             else
  1034.                             {
  1035.                                 binaryWriter.Write(false);
  1036.                             }
  1037.                             if (Main.tile[i, j].liquid > 0)
  1038.                             {
  1039.                                 binaryWriter.Write(true);
  1040.                                 binaryWriter.Write(Main.tile[i, j].liquid);
  1041.                                 binaryWriter.Write(Main.tile[i, j].lava);
  1042.                             }
  1043.                             else
  1044.                             {
  1045.                                 binaryWriter.Write(false);
  1046.                             }
  1047.                         }
  1048.                     }
  1049.                     for (int k = 0; k < 1000; k++)
  1050.                     {
  1051.                         if (Main.chest[k] == null)
  1052.                         {
  1053.                             binaryWriter.Write(false);
  1054.                         }
  1055.                         else
  1056.                         {
  1057.                             binaryWriter.Write(true);
  1058.                             binaryWriter.Write(Main.chest[k].x);
  1059.                             binaryWriter.Write(Main.chest[k].y);
  1060.                             for (int l = 0; l < Chest.maxItems; l++)
  1061.                             {
  1062.                                 binaryWriter.Write((byte)Main.chest[k].item[l].stack);
  1063.                                 if (Main.chest[k].item[l].stack > 0)
  1064.                                 {
  1065.                                     binaryWriter.Write(Main.chest[k].item[l].name);
  1066.                                 }
  1067.                             }
  1068.                         }
  1069.                     }
  1070.                     for (int m = 0; m < 1000; m++)
  1071.                     {
  1072.                         if (Main.sign[m] == null || Main.sign[m].text == null)
  1073.                         {
  1074.                             binaryWriter.Write(false);
  1075.                         }
  1076.                         else
  1077.                         {
  1078.                             binaryWriter.Write(true);
  1079.                             binaryWriter.Write(Main.sign[m].text);
  1080.                             binaryWriter.Write(Main.sign[m].x);
  1081.                             binaryWriter.Write(Main.sign[m].y);
  1082.                         }
  1083.                     }
  1084.                     for (int n = 0; n < 1000; n++)
  1085.                     {
  1086.                         lock (Main.npc[n])
  1087.                         {
  1088.                             if (Main.npc[n].active && Main.npc[n].townNPC)
  1089.                             {
  1090.                                 binaryWriter.Write(true);
  1091.                                 binaryWriter.Write(Main.npc[n].name);
  1092.                                 binaryWriter.Write(Main.npc[n].position.X);
  1093.                                 binaryWriter.Write(Main.npc[n].position.Y);
  1094.                                 binaryWriter.Write(Main.npc[n].homeless);
  1095.                                 binaryWriter.Write(Main.npc[n].homeTileX);
  1096.                                 binaryWriter.Write(Main.npc[n].homeTileY);
  1097.                             }
  1098.                         }
  1099.                     }
  1100.                     binaryWriter.Write(false);
  1101.                     binaryWriter.Close();
  1102.                     Main.statusText = "Backing up world file...";
  1103.                     string destFileName = Main.worldPathName + ".bak";
  1104.                     if (File.Exists(Main.worldPathName))
  1105.                     {
  1106.                         File.Copy(Main.worldPathName, destFileName, true);
  1107.                     }
  1108.                     File.Copy(text, Main.worldPathName, true);
  1109.                     File.Delete(text);
  1110.                 }
  1111.             }
  1112.             WorldGen.saveLock = false;
  1113.         }
  1114.         public static void loadWorld()
  1115.         {
  1116.             if (WorldGen.genRand == null)
  1117.             {
  1118.                 WorldGen.genRand = new Random((int)DateTime.Now.Ticks);
  1119.             }
  1120.             using (FileStream fileStream = new FileStream(Main.worldPathName, FileMode.Open))
  1121.             {
  1122.                 using (BinaryReader binaryReader = new BinaryReader(fileStream))
  1123.                 {
  1124.                     try
  1125.                     {
  1126.                         int num = binaryReader.ReadInt32();
  1127.                         if (num > Main.curRelease)
  1128.                         {
  1129.                             Main.menuMode = 15;
  1130.                             Main.statusText = "Incompatible world file!";
  1131.                             WorldGen.loadFailed = true;
  1132.                             binaryReader.Close();
  1133.                             return;
  1134.                         }
  1135.                         Main.worldName = binaryReader.ReadString();
  1136.                         Main.worldID = binaryReader.ReadInt32();
  1137.                         Main.leftWorld = (float)binaryReader.ReadInt32();
  1138.                         Main.rightWorld = (float)binaryReader.ReadInt32();
  1139.                         Main.topWorld = (float)binaryReader.ReadInt32();
  1140.                         Main.bottomWorld = (float)binaryReader.ReadInt32();
  1141.                         Main.maxTilesY = binaryReader.ReadInt32();
  1142.                         Main.maxTilesX = binaryReader.ReadInt32();
  1143.                         WorldGen.clearWorld();
  1144.                         Main.spawnTileX = binaryReader.ReadInt32();
  1145.                         Main.spawnTileY = binaryReader.ReadInt32();
  1146.                         Main.worldSurface = binaryReader.ReadDouble();
  1147.                         Main.rockLayer = binaryReader.ReadDouble();
  1148.                         WorldGen.tempTime = binaryReader.ReadDouble();
  1149.                         WorldGen.tempDayTime = binaryReader.ReadBoolean();
  1150.                         WorldGen.tempMoonPhase = binaryReader.ReadInt32();
  1151.                         WorldGen.tempBloodMoon = binaryReader.ReadBoolean();
  1152.                         Main.dungeonX = binaryReader.ReadInt32();
  1153.                         Main.dungeonY = binaryReader.ReadInt32();
  1154.                         NPC.downedBoss1 = binaryReader.ReadBoolean();
  1155.                         NPC.downedBoss2 = binaryReader.ReadBoolean();
  1156.                         NPC.downedBoss3 = binaryReader.ReadBoolean();
  1157.                         WorldGen.shadowOrbSmashed = binaryReader.ReadBoolean();
  1158.                         WorldGen.spawnMeteor = binaryReader.ReadBoolean();
  1159.                         WorldGen.shadowOrbCount = (int)binaryReader.ReadByte();
  1160.                         Main.invasionDelay = binaryReader.ReadInt32();
  1161.                         Main.invasionSize = binaryReader.ReadInt32();
  1162.                         Main.invasionType = binaryReader.ReadInt32();
  1163.                         Main.invasionX = binaryReader.ReadDouble();
  1164.                         for (int i = 0; i < Main.maxTilesX; i++)
  1165.                         {
  1166.                             float num2 = (float)i / (float)Main.maxTilesX;
  1167.                             Main.statusText = "Loading world data: " + (int)(num2 * 100f + 1f) + "%";
  1168.                             for (int j = 0; j < Main.maxTilesY; j++)
  1169.                             {
  1170.                                 Main.tile[i, j].active = binaryReader.ReadBoolean();
  1171.                                 if (Main.tile[i, j].active)
  1172.                                 {
  1173.                                     Main.tile[i, j].type = binaryReader.ReadByte();
  1174.                                     if (Main.tileFrameImportant[(int)Main.tile[i, j].type])
  1175.                                     {
  1176.                                         Main.tile[i, j].frameX = binaryReader.ReadInt16();
  1177.                                         Main.tile[i, j].frameY = binaryReader.ReadInt16();
  1178.                                     }
  1179.                                     else
  1180.                                     {
  1181.                                         Main.tile[i, j].frameX = -1;
  1182.                                         Main.tile[i, j].frameY = -1;
  1183.                                     }
  1184.                                 }
  1185.                                 Main.tile[i, j].lighted = binaryReader.ReadBoolean();
  1186.                                 if (binaryReader.ReadBoolean())
  1187.                                 {
  1188.                                     Main.tile[i, j].wall = binaryReader.ReadByte();
  1189.                                 }
  1190.                                 if (binaryReader.ReadBoolean())
  1191.                                 {
  1192.                                     Main.tile[i, j].liquid = binaryReader.ReadByte();
  1193.                                     Main.tile[i, j].lava = binaryReader.ReadBoolean();
  1194.                                 }
  1195.                             }
  1196.                         }
  1197.                         for (int k = 0; k < 1000; k++)
  1198.                         {
  1199.                             if (binaryReader.ReadBoolean())
  1200.                             {
  1201.                                 Main.chest[k] = new Chest();
  1202.                                 Main.chest[k].x = binaryReader.ReadInt32();
  1203.                                 Main.chest[k].y = binaryReader.ReadInt32();
  1204.                                 for (int l = 0; l < Chest.maxItems; l++)
  1205.                                 {
  1206.                                     Main.chest[k].item[l] = new Item();
  1207.                                     byte b = binaryReader.ReadByte();
  1208.                                     if (b > 0)
  1209.                                     {
  1210.                                         string defaults = binaryReader.ReadString();
  1211.                                         Main.chest[k].item[l].SetDefaults(defaults);
  1212.                                         Main.chest[k].item[l].stack = (int)b;
  1213.                                     }
  1214.                                 }
  1215.                             }
  1216.                         }
  1217.                         for (int m = 0; m < 1000; m++)
  1218.                         {
  1219.                             if (binaryReader.ReadBoolean())
  1220.                             {
  1221.                                 string text = binaryReader.ReadString();
  1222.                                 int num3 = binaryReader.ReadInt32();
  1223.                                 int num4 = binaryReader.ReadInt32();
  1224.                                 if (Main.tile[num3, num4].active && Main.tile[num3, num4].type == 55)
  1225.                                 {
  1226.                                     Main.sign[m] = new Sign();
  1227.                                     Main.sign[m].x = num3;
  1228.                                     Main.sign[m].y = num4;
  1229.                                     Main.sign[m].text = text;
  1230.                                 }
  1231.                             }
  1232.                         }
  1233.                         bool flag = binaryReader.ReadBoolean();
  1234.                         int num5 = 0;
  1235.                         while (flag)
  1236.                         {
  1237.                             Main.npc[num5].SetDefaults(binaryReader.ReadString());
  1238.                             Main.npc[num5].position.X = binaryReader.ReadSingle();
  1239.                             Main.npc[num5].position.Y = binaryReader.ReadSingle();
  1240.                             Main.npc[num5].homeless = binaryReader.ReadBoolean();
  1241.                             Main.npc[num5].homeTileX = binaryReader.ReadInt32();
  1242.                             Main.npc[num5].homeTileY = binaryReader.ReadInt32();
  1243.                             flag = binaryReader.ReadBoolean();
  1244.                             num5++;
  1245.                         }
  1246.                         binaryReader.Close();
  1247.                         WorldGen.gen = true;
  1248.                         WorldGen.waterLine = Main.maxTilesY;
  1249.                         Liquid.QuickWater(2, -1, -1);
  1250.                         WorldGen.WaterCheck();
  1251.                         int num6 = 0;
  1252.                         Liquid.quickSettle = true;
  1253.                         int num7 = Liquid.numLiquid + LiquidBuffer.numLiquidBuffer;
  1254.                         float num8 = 0f;
  1255.                         while (Liquid.numLiquid > 0 && num6 < 100000)
  1256.                         {
  1257.                             num6++;
  1258.                             float num9 = (float)(num7 - (Liquid.numLiquid + LiquidBuffer.numLiquidBuffer)) / (float)num7;
  1259.                             if (Liquid.numLiquid + LiquidBuffer.numLiquidBuffer > num7)
  1260.                             {
  1261.                                 num7 = Liquid.numLiquid + LiquidBuffer.numLiquidBuffer;
  1262.                             }
  1263.                             if (num9 > num8)
  1264.                             {
  1265.                                 num8 = num9;
  1266.                             }
  1267.                             else
  1268.                             {
  1269.                                 num9 = num8;
  1270.                             }
  1271.                             Main.statusText = "Settling liquids: " + (int)(num9 * 100f / 2f + 50f) + "%";
  1272.                             Liquid.UpdateLiquid();
  1273.                         }
  1274.                         Liquid.quickSettle = false;
  1275.                         WorldGen.WaterCheck();
  1276.                         WorldGen.gen = false;
  1277.                     }
  1278.                     catch (Exception arg_617_0)
  1279.                     {
  1280.                         Exception exception = arg_617_0;
  1281.                         Main.menuMode = 15;
  1282.                         Main.statusText = exception.ToString();
  1283.                         WorldGen.loadFailed = true;
  1284.                         try
  1285.                         {
  1286.                             binaryReader.Close();
  1287.                         }
  1288.                         catch
  1289.                         {
  1290.                         }
  1291.                         return;
  1292.                     }
  1293.                     WorldGen.loadFailed = false;
  1294.                 }
  1295.             }
  1296.         }
  1297.         public static void generateWorld(int seed = -1)
  1298.         {
  1299.             WorldGen.gen = true;
  1300.             if (seed > 0)
  1301.             {
  1302.                 WorldGen.genRand = new Random(seed);
  1303.             }
  1304.             else
  1305.             {
  1306.                 WorldGen.genRand = new Random((int)DateTime.Now.Ticks);
  1307.             }
  1308.             //Main.maxTilesX--;
  1309.             //Main.maxTilesY--;
  1310.             Main.worldID = WorldGen.genRand.Next(2147483647);
  1311.             int num = 0;
  1312.             int num2 = 0;
  1313.             double num3 = (double)Main.maxTilesY * 0.3;
  1314.             num3 *= (double)WorldGen.genRand.Next(90, 110) * 0.005;
  1315.             double num4 = num3 + (double)Main.maxTilesY * 0.2;
  1316.             num4 *= (double)WorldGen.genRand.Next(90, 110) * 0.01;
  1317.             double num5 = num3;
  1318.             double num6 = num3;
  1319.             double num7 = num4;
  1320.             double num8 = num4;
  1321.             int num9 = 0;
  1322.             if (WorldGen.genRand.Next(2) == 0)
  1323.             {
  1324.                 num9 = -1;
  1325.             }
  1326.             else
  1327.             {
  1328.                 num9 = 1;
  1329.             }
  1330.             for (int i = 0; i < Main.maxTilesX; i++)
  1331.             {
  1332.                 float num10 = (float)i / (float)Main.maxTilesX;
  1333.                 Main.statusText = "Generating world terrain: " + (int)(num10 * 100f + 1f) + "%";
  1334.                 if (num3 < num5)
  1335.                 {
  1336.                     num5 = num3;
  1337.                 }
  1338.                 if (num3 > num6)
  1339.                 {
  1340.                     num6 = num3;
  1341.                 }
  1342.                 if (num4 < num7)
  1343.                 {
  1344.                     num7 = num4;
  1345.                 }
  1346.                 if (num4 > num8)
  1347.                 {
  1348.                     num8 = num4;
  1349.                 }
  1350.                 if (num2 <= 0)
  1351.                 {
  1352.                     num = WorldGen.genRand.Next(0, 5);
  1353.                     num2 = WorldGen.genRand.Next(5, 40);
  1354.                     if (num == 0)
  1355.                     {
  1356.                         num2 *= (int)((double)WorldGen.genRand.Next(5, 30) * 0.2);
  1357.                     }
  1358.                 }
  1359.                 num2--;
  1360.                 if (num == 0)
  1361.                 {
  1362.                     while (WorldGen.genRand.Next(0, 7) == 0)
  1363.                     {
  1364.                         num3 += (double)WorldGen.genRand.Next(-1, 2);
  1365.                     }
  1366.                 }
  1367.                 else
  1368.                 {
  1369.                     if (num == 1)
  1370.                     {
  1371.                         while (WorldGen.genRand.Next(0, 4) == 0)
  1372.                         {
  1373.                             num3 -= 1.0;
  1374.                         }
  1375.                         while (WorldGen.genRand.Next(0, 10) == 0)
  1376.                         {
  1377.                             num3 += 1.0;
  1378.                         }
  1379.                     }
  1380.                     else
  1381.                     {
  1382.                         if (num == 2)
  1383.                         {
  1384.                             while (WorldGen.genRand.Next(0, 4) == 0)
  1385.                             {
  1386.                                 num3 += 1.0;
  1387.                             }
  1388.                             while (WorldGen.genRand.Next(0, 10) == 0)
  1389.                             {
  1390.                                 num3 -= 1.0;
  1391.                             }
  1392.                         }
  1393.                         else
  1394.                         {
  1395.                             if (num == 3)
  1396.                             {
  1397.                                 while (WorldGen.genRand.Next(0, 2) == 0)
  1398.                                 {
  1399.                                     num3 -= 1.0;
  1400.                                 }
  1401.                                 while (WorldGen.genRand.Next(0, 6) == 0)
  1402.                                 {
  1403.                                     num3 += 1.0;
  1404.                                 }
  1405.                             }
  1406.                             else
  1407.                             {
  1408.                                 if (num == 4)
  1409.                                 {
  1410.                                     while (WorldGen.genRand.Next(0, 2) == 0)
  1411.                                     {
  1412.                                         num3 += 1.0;
  1413.                                     }
  1414.                                     while (WorldGen.genRand.Next(0, 5) == 0)
  1415.                                     {
  1416.                                         num3 -= 1.0;
  1417.                                     }
  1418.                                 }
  1419.                             }
  1420.                         }
  1421.                     }
  1422.                 }
  1423.                 if (num3 < (double)Main.maxTilesY * 0.15)
  1424.                 {
  1425.                     num3 = (double)Main.maxTilesY * 0.15;
  1426.                     num2 = 0;
  1427.                 }
  1428.                 else
  1429.                 {
  1430.                     if (num3 > (double)Main.maxTilesY * 0.3)
  1431.                     {
  1432.                         num3 = (double)Main.maxTilesY * 0.3;
  1433.                         num2 = 0;
  1434.                     }
  1435.                 }
  1436.                 while (WorldGen.genRand.Next(0, 3) == 0)
  1437.                 {
  1438.                     num4 += (double)WorldGen.genRand.Next(-2, 3);
  1439.                 }
  1440.                 if (num4 < num3 + (double)Main.maxTilesY * 0.05)
  1441.                 {
  1442.                     num4 += 1.0;
  1443.                 }
  1444.                 if (num4 > num3 + (double)Main.maxTilesY * 0.35)
  1445.                 {
  1446.                     num4 -= 1.0;
  1447.                 }
  1448.                 int num11 = 0;
  1449.                 while ((double)num11 < num3)
  1450.                 {
  1451.                     Main.tile[i, num11].active = false;
  1452.                     Main.tile[i, num11].lighted = true;
  1453.                     Main.tile[i, num11].frameX = -1;
  1454.                     Main.tile[i, num11].frameY = -1;
  1455.                     num11++;
  1456.                 }
  1457.                 for (int j = (int)num3; j < Main.maxTilesY; j++)
  1458.                 {
  1459.                     if ((double)j < num4)
  1460.                     {
  1461.                         Main.tile[i, j].active = true;
  1462.                         Main.tile[i, j].type = 0;
  1463.                         Main.tile[i, j].frameX = -1;
  1464.                         Main.tile[i, j].frameY = -1;
  1465.                     }
  1466.                     else
  1467.                     {
  1468.                         Main.tile[i, j].active = true;
  1469.                         Main.tile[i, j].type = 1;
  1470.                         Main.tile[i, j].frameX = -1;
  1471.                         Main.tile[i, j].frameY = -1;
  1472.                     }
  1473.                 }
  1474.             }
  1475.             Main.worldSurface = num6 + 5.0;
  1476.             Main.rockLayer = num8;
  1477.             double num12 = (double)((int)((Main.rockLayer - Main.worldSurface) / 6.0) * 6);
  1478.             Main.rockLayer = Main.worldSurface + num12;
  1479.             WorldGen.waterLine = (int)(Main.rockLayer + (double)Main.maxTilesY) / 2;
  1480.             WorldGen.waterLine += WorldGen.genRand.Next(-100, 20);
  1481.             WorldGen.lavaLine = WorldGen.waterLine + WorldGen.genRand.Next(50, 80);
  1482.             int num13 = 0;
  1483.             Main.statusText = "Adding sand...";
  1484.             int num14 = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.0007), (int)((double)Main.maxTilesX * 0.002));
  1485.             num14 += 2;
  1486.             for (int k = 0; k < num14; k++)
  1487.             {
  1488.                 int num15 = WorldGen.genRand.Next(Main.maxTilesX);
  1489.                 while ((float)num15 > (float)Main.maxTilesX * 0.45f && (float)num15 < (float)Main.maxTilesX * 0.55f)
  1490.                 {
  1491.                     num15 = WorldGen.genRand.Next(Main.maxTilesX);
  1492.                 }
  1493.                 int num16 = WorldGen.genRand.Next(15, 90);
  1494.                 if (WorldGen.genRand.Next(3) == 0)
  1495.                 {
  1496.                     num16 *= 2;
  1497.                 }
  1498.                 int num17 = num15 - num16;
  1499.                 num16 = WorldGen.genRand.Next(15, 90);
  1500.                 if (WorldGen.genRand.Next(3) == 0)
  1501.                 {
  1502.                     num16 *= 2;
  1503.                 }
  1504.                 int num18 = num15 + num16;
  1505.                 if (num17 < 0)
  1506.                 {
  1507.                     num17 = 0;
  1508.                 }
  1509.                 if (num18 > Main.maxTilesX)
  1510.                 {
  1511.                     num18 = Main.maxTilesX;
  1512.                 }
  1513.                 if (k == 0)
  1514.                 {
  1515.                     num17 = 0;
  1516.                     num18 = WorldGen.genRand.Next(250, 300);
  1517.                 }
  1518.                 else
  1519.                 {
  1520.                     if (k == 2)
  1521.                     {
  1522.                         num17 = Main.maxTilesX - WorldGen.genRand.Next(250, 300);
  1523.                         num18 = Main.maxTilesX;
  1524.                     }
  1525.                 }
  1526.                 int num19 = WorldGen.genRand.Next(50, 100);
  1527.                 for (int l = num17; l < num18; l++)
  1528.                 {
  1529.                     if (WorldGen.genRand.Next(2) == 0)
  1530.                     {
  1531.                         num19 += WorldGen.genRand.Next(-1, 2);
  1532.                         if (num19 < 50)
  1533.                         {
  1534.                             num19 = 50;
  1535.                         }
  1536.                         if (num19 > 100)
  1537.                         {
  1538.                             num19 = 100;
  1539.                         }
  1540.                     }
  1541.                     int num20 = 0;
  1542.                     while ((double)num20 < Main.worldSurface)
  1543.                     {
  1544.                         if (Main.tile[l, num20].active)
  1545.                         {
  1546.                             int num21 = num19;
  1547.                             if (l - num17 < num21)
  1548.                             {
  1549.                                 num21 = l - num17;
  1550.                             }
  1551.                             if (num18 - l < num21)
  1552.                             {
  1553.                                 num21 = num18 - l;
  1554.                             }
  1555.                             num21 += WorldGen.genRand.Next(5);
  1556.                             for (int m = num20; m < num20 + num21; m++)
  1557.                             {
  1558.                                 if (l > num17 + WorldGen.genRand.Next(5) && l < num18 - WorldGen.genRand.Next(5))
  1559.                                 {
  1560.                                     Main.tile[l, m].type = 53;
  1561.                                 }
  1562.                             }
  1563.                             break;
  1564.                         }
  1565.                         num20++;
  1566.                     }
  1567.                 }
  1568.             }
  1569.             for (int n = 0; n < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 8E-06); n++)
  1570.             {
  1571.                 WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)Main.worldSurface, (int)Main.rockLayer), (double)WorldGen.genRand.Next(15, 70), WorldGen.genRand.Next(20, 130), 53, false, 0f, 0f, false, true);
  1572.             }
  1573.             WorldGen.numMCaves = 0;
  1574.             Main.statusText = "Generating hills...";
  1575.             for (int num22 = 0; num22 < (int)((double)Main.maxTilesX * 0.0008); num22++)
  1576.             {
  1577.                 int num23 = 0;
  1578.                 bool flag = false;
  1579.                 bool flag2 = false;
  1580.                 int num24 = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.25), (int)((double)Main.maxTilesX * 0.75));
  1581.                 while (!flag2)
  1582.                 {
  1583.                     flag2 = true;
  1584.                     while (num24 > Main.maxTilesX / 2 - 100 && num24 < Main.maxTilesX / 2 + 100)
  1585.                     {
  1586.                         num24 = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.25), (int)((double)Main.maxTilesX * 0.75));
  1587.                     }
  1588.                     for (int num25 = 0; num25 < WorldGen.numMCaves; num25++)
  1589.                     {
  1590.                         if (num24 > WorldGen.mCaveX[num25] - 50 && num24 < WorldGen.mCaveX[num25] + 50)
  1591.                         {
  1592.                             num23++;
  1593.                             flag2 = false;
  1594.                             break;
  1595.                         }
  1596.                     }
  1597.                     if (num23 >= 200)
  1598.                     {
  1599.                         flag = true;
  1600.                         break;
  1601.                     }
  1602.                 }
  1603.                 if (!flag)
  1604.                 {
  1605.                     int num26 = 0;
  1606.                     while ((double)num26 < Main.worldSurface)
  1607.                     {
  1608.                         if (Main.tile[num24, num26].active)
  1609.                         {
  1610.                             WorldGen.Mountinater(num24, num26);
  1611.                             WorldGen.mCaveX[WorldGen.numMCaves] = num24;
  1612.                             WorldGen.mCaveY[WorldGen.numMCaves] = num26;
  1613.                             WorldGen.numMCaves++;
  1614.                             break;
  1615.                         }
  1616.                         num26++;
  1617.                     }
  1618.                 }
  1619.             }
  1620.             for (int num27 = 1; num27 < Main.maxTilesX - 1; num27++)
  1621.             {
  1622.                 float num28 = (float)num27 / (float)Main.maxTilesX;
  1623.                 Main.statusText = "Puttin dirt behind dirt: " + (int)(num28 * 100f + 1f) + "%";
  1624.                 bool flag3 = false;
  1625.                 num13 += WorldGen.genRand.Next(-1, 2);
  1626.                 if (num13 < 0)
  1627.                 {
  1628.                     num13 = 0;
  1629.                 }
  1630.                 if (num13 > 10)
  1631.                 {
  1632.                     num13 = 10;
  1633.                 }
  1634.                 int num29 = 0;
  1635.                 while ((double)num29 < Main.worldSurface + 10.0 && (double)num29 <= Main.worldSurface + (double)num13)
  1636.                 {
  1637.                     if (flag3)
  1638.                     {
  1639.                         Main.tile[num27, num29].wall = 2;
  1640.                     }
  1641.                     if (Main.tile[num27, num29].active && Main.tile[num27 - 1, num29].active && Main.tile[num27 + 1, num29].active && Main.tile[num27, num29 + 1].active && Main.tile[num27 - 1, num29 + 1].active && Main.tile[num27 + 1, num29 + 1].active)
  1642.                     {
  1643.                         flag3 = true;
  1644.                     }
  1645.                     num29++;
  1646.                 }
  1647.             }
  1648.             WorldGen.numIslandHouses = 0;
  1649.             WorldGen.houseCount = 0;
  1650.             Main.statusText = "Generating floating islands...";
  1651.             for (int num30 = 0; num30 < (int)((double)Main.maxTilesX * 0.0008); num30++)
  1652.             {
  1653.                 int num31 = 0;
  1654.                 bool flag4 = false;
  1655.                 int num32 = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.1), (int)((double)Main.maxTilesX * 0.9));
  1656.                 bool flag5 = false;
  1657.                 while (!flag5)
  1658.                 {
  1659.                     flag5 = true;
  1660.                     while (num32 > Main.maxTilesX / 2 - 80 && num32 < Main.maxTilesX / 2 + 80)
  1661.                     {
  1662.                         num32 = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.1), (int)((double)Main.maxTilesX * 0.9));
  1663.                     }
  1664.                     for (int num33 = 0; num33 < WorldGen.numIslandHouses; num33++)
  1665.                     {
  1666.                         if (num32 > WorldGen.fihX[num33] - 80 && num32 < WorldGen.fihX[num33] + 80)
  1667.                         {
  1668.                             num31++;
  1669.                             flag5 = false;
  1670.                             break;
  1671.                         }
  1672.                     }
  1673.                     if (num31 >= 200)
  1674.                     {
  1675.                         flag4 = true;
  1676.                         break;
  1677.                     }
  1678.                 }
  1679.                 if (!flag4)
  1680.                 {
  1681.                     int num34 = 200;
  1682.                     while ((double)num34 < Main.worldSurface)
  1683.                     {
  1684.                         if (Main.tile[num32, num34].active)
  1685.                         {
  1686.                             int num35 = num32;
  1687.                             int num36 = WorldGen.genRand.Next(100, num34 - 100);
  1688.                             while ((double)num36 > num5 - 50.0)
  1689.                             {
  1690.                                 num36--;
  1691.                             }
  1692.                             WorldGen.FloatingIsland(num35, num36);
  1693.                             WorldGen.fihX[WorldGen.numIslandHouses] = num35;
  1694.                             WorldGen.fihY[WorldGen.numIslandHouses] = num36;
  1695.                             WorldGen.numIslandHouses++;
  1696.                             break;
  1697.                         }
  1698.                         num34++;
  1699.                     }
  1700.                 }
  1701.             }
  1702.             Main.statusText = "Placing rocks in the dirt...";
  1703.             for (int num37 = 0; num37 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.0002); num37++)
  1704.             {
  1705.                 WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next(0, (int)num5 + 1), (double)WorldGen.genRand.Next(4, 15), WorldGen.genRand.Next(5, 40), 1, false, 0f, 0f, false, true);
  1706.             }
  1707.             for (int num38 = 0; num38 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.0002); num38++)
  1708.             {
  1709.                 WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num5, (int)num6 + 1), (double)WorldGen.genRand.Next(4, 10), WorldGen.genRand.Next(5, 30), 1, false, 0f, 0f, false, true);
  1710.             }
  1711.             for (int num39 = 0; num39 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.0045); num39++)
  1712.             {
  1713.                 WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num6, (int)num8 + 1), (double)WorldGen.genRand.Next(2, 7), WorldGen.genRand.Next(2, 23), 1, false, 0f, 0f, false, true);
  1714.             }
  1715.             Main.statusText = "Placing dirt in the rocks...";
  1716.             for (int num40 = 0; num40 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.005); num40++)
  1717.             {
  1718.                 WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num7, Main.maxTilesY), (double)WorldGen.genRand.Next(2, 6), WorldGen.genRand.Next(2, 40), 0, false, 0f, 0f, false, true);
  1719.             }
  1720.             Main.statusText = "Adding clay...";
  1721.             for (int num41 = 0; num41 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 2E-05); num41++)
  1722.             {
  1723.                 WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next(0, (int)num5), (double)WorldGen.genRand.Next(4, 14), WorldGen.genRand.Next(10, 50), 40, false, 0f, 0f, false, true);
  1724.             }
  1725.             for (int num42 = 0; num42 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 5E-05); num42++)
  1726.             {
  1727.                 WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num5, (int)num6 + 1), (double)WorldGen.genRand.Next(8, 14), WorldGen.genRand.Next(15, 45), 40, false, 0f, 0f, false, true);
  1728.             }
  1729.             for (int num43 = 0; num43 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 2E-05); num43++)
  1730.             {
  1731.                 WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num6, (int)num8 + 1), (double)WorldGen.genRand.Next(8, 15), WorldGen.genRand.Next(5, 50), 40, false, 0f, 0f, false, true);
  1732.             }
  1733.             for (int num44 = 5; num44 < Main.maxTilesX - 5; num44++)
  1734.             {
  1735.                 int num45 = 1;
  1736.                 while ((double)num45 < Main.worldSurface - 1.0)
  1737.                 {
  1738.                     if (Main.tile[num44, num45].active)
  1739.                     {
  1740.                         for (int num46 = num45; num46 < num45 + 5; num46++)
  1741.                         {
  1742.                             if (Main.tile[num44, num46].type == 40)
  1743.                             {
  1744.                                 Main.tile[num44, num46].type = 0;
  1745.                             }
  1746.                         }
  1747.                         break;
  1748.                     }
  1749.                     num45++;
  1750.                 }
  1751.             }
  1752.             for (int num47 = 0; num47 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.0015); num47++)
  1753.             {
  1754.                 float num48 = (float)((double)num47 / ((double)(Main.maxTilesX * Main.maxTilesY) * 0.0015));
  1755.                 Main.statusText = "Making random holes: " + (int)(num48 * 100f + 1f) + "%";
  1756.                 int type = -1;
  1757.                 if (WorldGen.genRand.Next(5) == 0)
  1758.                 {
  1759.                     type = -2;
  1760.                 }
  1761.                 WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num6, Main.maxTilesY), (double)WorldGen.genRand.Next(2, 5), WorldGen.genRand.Next(2, 20), type, false, 0f, 0f, false, true);
  1762.                 WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num6, Main.maxTilesY), (double)WorldGen.genRand.Next(8, 15), WorldGen.genRand.Next(7, 30), type, false, 0f, 0f, false, true);
  1763.             }
  1764.             for (int num49 = 0; num49 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 3E-05); num49++)
  1765.             {
  1766.                 float num50 = (float)((double)num49 / ((double)(Main.maxTilesX * Main.maxTilesY) * 3E-05));
  1767.                 Main.statusText = "Generating small caves: " + (int)(num50 * 100f + 1f) + "%";
  1768.                 if (num8 <= (double)Main.maxTilesY)
  1769.                 {
  1770.                     int type2 = -1;
  1771.                     if (WorldGen.genRand.Next(6) == 0)
  1772.                     {
  1773.                         type2 = -2;
  1774.                     }
  1775.                     WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num5, (int)num8 + 1), (double)WorldGen.genRand.Next(5, 15), WorldGen.genRand.Next(30, 200), type2, false, 0f, 0f, false, true);
  1776.                 }
  1777.             }
  1778.             for (int num51 = 0; num51 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.00015); num51++)
  1779.             {
  1780.                 float num52 = (float)((double)num51 / ((double)(Main.maxTilesX * Main.maxTilesY) * 0.00015));
  1781.                 Main.statusText = "Generating large caves: " + (int)(num52 * 100f + 1f) + "%";
  1782.                 if (num8 <= (double)Main.maxTilesY)
  1783.                 {
  1784.                     int type3 = -1;
  1785.                     if (WorldGen.genRand.Next(10) == 0)
  1786.                     {
  1787.                         type3 = -2;
  1788.                     }
  1789.                     WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num8, Main.maxTilesY), (double)WorldGen.genRand.Next(6, 20), WorldGen.genRand.Next(50, 300), type3, false, 0f, 0f, false, true);
  1790.                 }
  1791.             }
  1792.             Main.statusText = "Generating surface caves...";
  1793.             for (int num53 = 0; num53 < (int)((double)Main.maxTilesX * 0.0025); num53++)
  1794.             {
  1795.                 int num54 = WorldGen.genRand.Next(0, Main.maxTilesX);
  1796.                 int num55 = 0;
  1797.                 while ((double)num55 < num6)
  1798.                 {
  1799.                     if (Main.tile[num54, num55].active)
  1800.                     {
  1801.                         WorldGen.TileRunner(num54, num55, (double)WorldGen.genRand.Next(3, 6), WorldGen.genRand.Next(5, 50), -1, false, (float)WorldGen.genRand.Next(-10, 11) * 0.1f, 1f, false, true);
  1802.                         break;
  1803.                     }
  1804.                     num55++;
  1805.                 }
  1806.             }
  1807.             for (int num56 = 0; num56 < (int)((double)Main.maxTilesX * 0.0007); num56++)
  1808.             {
  1809.                 int num54 = WorldGen.genRand.Next(0, Main.maxTilesX);
  1810.                 int num57 = 0;
  1811.                 while ((double)num57 < num6)
  1812.                 {
  1813.                     if (Main.tile[num54, num57].active)
  1814.                     {
  1815.                         WorldGen.TileRunner(num54, num57, (double)WorldGen.genRand.Next(10, 15), WorldGen.genRand.Next(50, 130), -1, false, (float)WorldGen.genRand.Next(-10, 11) * 0.1f, 2f, false, true);
  1816.                         break;
  1817.                     }
  1818.                     num57++;
  1819.                 }
  1820.             }
  1821.             for (int num58 = 0; num58 < (int)((double)Main.maxTilesX * 0.0003); num58++)
  1822.             {
  1823.                 int num54 = WorldGen.genRand.Next(0, Main.maxTilesX);
  1824.                 int num59 = 0;
  1825.                 while ((double)num59 < num6)
  1826.                 {
  1827.                     if (Main.tile[num54, num59].active)
  1828.                     {
  1829.                         WorldGen.TileRunner(num54, num59, (double)WorldGen.genRand.Next(12, 25), WorldGen.genRand.Next(150, 500), -1, false, (float)WorldGen.genRand.Next(-10, 11) * 0.1f, 4f, false, true);
  1830.                         WorldGen.TileRunner(num54, num59, (double)WorldGen.genRand.Next(8, 17), WorldGen.genRand.Next(60, 200), -1, false, (float)WorldGen.genRand.Next(-10, 11) * 0.1f, 2f, false, true);
  1831.                         WorldGen.TileRunner(num54, num59, (double)WorldGen.genRand.Next(5, 13), WorldGen.genRand.Next(40, 170), -1, false, (float)WorldGen.genRand.Next(-10, 11) * 0.1f, 2f, false, true);
  1832.                         break;
  1833.                     }
  1834.                     num59++;
  1835.                 }
  1836.             }
  1837.             for (int num60 = 0; num60 < (int)((double)Main.maxTilesX * 0.0004); num60++)
  1838.             {
  1839.                 int num54 = WorldGen.genRand.Next(0, Main.maxTilesX);
  1840.                 int num61 = 0;
  1841.                 while ((double)num61 < num6)
  1842.                 {
  1843.                     if (Main.tile[num54, num61].active)
  1844.                     {
  1845.                         WorldGen.TileRunner(num54, num61, (double)WorldGen.genRand.Next(7, 12), WorldGen.genRand.Next(150, 250), -1, false, 0f, 1f, true, true);
  1846.                         break;
  1847.                     }
  1848.                     num61++;
  1849.                 }
  1850.             }
  1851.             for (int num62 = 0; num62 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.002); num62++)
  1852.             {
  1853.                 int num63 = WorldGen.genRand.Next(1, Main.maxTilesX - 1);
  1854.                 int num64 = WorldGen.genRand.Next((int)num5, (int)num6);
  1855.                 if (num64 >= Main.maxTilesY)
  1856.                 {
  1857.                     num64 = Main.maxTilesY - 2;
  1858.                 }
  1859.                 if (Main.tile[num63 - 1, num64].active && Main.tile[num63 - 1, num64].type == 0 && Main.tile[num63 + 1, num64].active && Main.tile[num63 + 1, num64].type == 0 && Main.tile[num63, num64 - 1].active && Main.tile[num63, num64 - 1].type == 0 && Main.tile[num63, num64 + 1].active && Main.tile[num63, num64 + 1].type == 0)
  1860.                 {
  1861.                     Main.tile[num63, num64].active = true;
  1862.                     Main.tile[num63, num64].type = 2;
  1863.                 }
  1864.                 num63 = WorldGen.genRand.Next(1, Main.maxTilesX - 1);
  1865.                 num64 = WorldGen.genRand.Next(0, (int)num5);
  1866.                 if (num64 >= Main.maxTilesY)
  1867.                 {
  1868.                     num64 = Main.maxTilesY - 2;
  1869.                 }
  1870.                 if (Main.tile[num63 - 1, num64].active && Main.tile[num63 - 1, num64].type == 0 && Main.tile[num63 + 1, num64].active && Main.tile[num63 + 1, num64].type == 0 && Main.tile[num63, num64 - 1].active && Main.tile[num63, num64 - 1].type == 0 && Main.tile[num63, num64 + 1].active && Main.tile[num63, num64 + 1].type == 0)
  1871.                 {
  1872.                     Main.tile[num63, num64].active = true;
  1873.                     Main.tile[num63, num64].type = 2;
  1874.                 }
  1875.             }
  1876.             Main.statusText = "Generating underground jungle: 0%";
  1877.             float num65 = (float)(Main.maxTilesX / 4200);
  1878.             num65 *= 1.5f;
  1879.             int num66 = 0;
  1880.             if (num9 == -1)
  1881.             {
  1882.                 num66 = (int)((float)Main.maxTilesX * 0.8f);
  1883.             }
  1884.             else
  1885.             {
  1886.                 num66 = (int)((float)Main.maxTilesX * 0.2f);
  1887.             }
  1888.             int num67 = (int)((double)Main.maxTilesY + Main.rockLayer) / 2;
  1889.             num66 += WorldGen.genRand.Next((int)(-100f * num65), (int)(101f * num65));
  1890.             num67 += WorldGen.genRand.Next((int)(-100f * num65), (int)(101f * num65));
  1891.             WorldGen.TileRunner(num66, num67, (double)WorldGen.genRand.Next((int)(250f * num65), (int)(500f * num65)), WorldGen.genRand.Next(50, 150), 59, false, (float)(num9 * 3), 0f, false, true);
  1892.             Main.statusText = "Generating underground jungle: 20%";
  1893.             num66 += WorldGen.genRand.Next((int)(-250f * num65), (int)(251f * num65));
  1894.             num67 += WorldGen.genRand.Next((int)(-150f * num65), (int)(151f * num65));
  1895.             int num68 = num66;
  1896.             int num69 = num67;
  1897.             WorldGen.TileRunner(num66, num67, (double)WorldGen.genRand.Next((int)(250f * num65), (int)(500f * num65)), WorldGen.genRand.Next(50, 150), 59, false, 0f, 0f, false, true);
  1898.             Main.statusText = "Generating underground jungle: 40%";
  1899.             num66 += WorldGen.genRand.Next((int)(-400f * num65), (int)(401f * num65));
  1900.             num67 += WorldGen.genRand.Next((int)(-150f * num65), (int)(151f * num65));
  1901.             WorldGen.TileRunner(num66, num67, (double)WorldGen.genRand.Next((int)(250f * num65), (int)(500f * num65)), WorldGen.genRand.Next(50, 150), 59, false, (float)(num9 * -3), 0f, false, true);
  1902.             Main.statusText = "Generating underground jungle: 60%";
  1903.             num66 = num68;
  1904.             num67 = num69;
  1905.             int num70 = 0;
  1906.             while ((float)num70 <= 20f * num65)
  1907.             {
  1908.                 Main.statusText = "Generating underground jungle: " + (int)(60f + (float)num70 / num65) + "%";
  1909.                 num66 += WorldGen.genRand.Next((int)(-5f * num65), (int)(6f * num65));
  1910.                 num67 += WorldGen.genRand.Next((int)(-5f * num65), (int)(6f * num65));
  1911.                 WorldGen.TileRunner(num66, num67, (double)WorldGen.genRand.Next(40, 100), WorldGen.genRand.Next(300, 500), 59, false, 0f, 0f, false, true);
  1912.                 num70++;
  1913.             }
  1914.             int num71 = 0;
  1915.             while ((float)num71 <= 10f * num65)
  1916.             {
  1917.                 Main.statusText = "Generating underground jungle: " + (int)(80f + (float)num71 / num65 * 2f) + "%";
  1918.                 num66 = num68 + WorldGen.genRand.Next((int)(-600f * num65), (int)(600f * num65));
  1919.                 num67 = num69 + WorldGen.genRand.Next((int)(-200f * num65), (int)(200f * num65));
  1920.                 while (num66 < 1 || num66 >= Main.maxTilesX - 1 || num67 < 1 || num67 >= Main.maxTilesY - 1 || Main.tile[num66, num67].type != 59)
  1921.                 {
  1922.                     num66 = num68 + WorldGen.genRand.Next((int)(-600f * num65), (int)(600f * num65));
  1923.                     num67 = num69 + WorldGen.genRand.Next((int)(-200f * num65), (int)(200f * num65));
  1924.                 }
  1925.                 int num72 = 0;
  1926.                 while ((float)num72 < 8f * num65)
  1927.                 {
  1928.                     num66 += WorldGen.genRand.Next(-30, 31);
  1929.                     num67 += WorldGen.genRand.Next(-30, 31);
  1930.                     int type4 = -1;
  1931.                     if (WorldGen.genRand.Next(7) == 0)
  1932.                     {
  1933.                         type4 = -2;
  1934.                     }
  1935.                     WorldGen.TileRunner(num66, num67, (double)WorldGen.genRand.Next(10, 20), WorldGen.genRand.Next(30, 70), type4, false, 0f, 0f, false, true);
  1936.                     num72++;
  1937.                 }
  1938.                 num71++;
  1939.             }
  1940.             int num73 = 0;
  1941.             while ((float)num73 <= 300f * num65)
  1942.             {
  1943.                 num66 = num68 + WorldGen.genRand.Next((int)(-600f * num65), (int)(600f * num65));
  1944.                 num67 = num69 + WorldGen.genRand.Next((int)(-200f * num65), (int)(200f * num65));
  1945.                 while (num66 < 1 || num66 >= Main.maxTilesX - 1 || num67 < 1 || num67 >= Main.maxTilesY - 1 || Main.tile[num66, num67].type != 59)
  1946.                 {
  1947.                     num66 = num68 + WorldGen.genRand.Next((int)(-600f * num65), (int)(600f * num65));
  1948.                     num67 = num69 + WorldGen.genRand.Next((int)(-200f * num65), (int)(200f * num65));
  1949.                 }
  1950.                 WorldGen.TileRunner(num66, num67, (double)WorldGen.genRand.Next(4, 10), WorldGen.genRand.Next(5, 30), 1, false, 0f, 0f, false, true);
  1951.                 if (WorldGen.genRand.Next(4) == 0)
  1952.                 {
  1953.                     int type5 = WorldGen.genRand.Next(63, 69);
  1954.                     WorldGen.TileRunner(num66 + WorldGen.genRand.Next(-1, 2), num67 + WorldGen.genRand.Next(-1, 2), (double)WorldGen.genRand.Next(3, 7), WorldGen.genRand.Next(4, 8), type5, false, 0f, 0f, false, true);
  1955.                 }
  1956.                 num73++;
  1957.             }
  1958.             num66 = num68;
  1959.             num67 = num69;
  1960.             float num74 = (float)WorldGen.genRand.Next(6, 10);
  1961.             float num75 = (float)(Main.maxTilesX / 4200);
  1962.             num74 *= num75;
  1963.             int num76 = 0;
  1964.             while ((float)num76 < num74)
  1965.             {
  1966.                 bool flag6 = true;
  1967.                 while (flag6)
  1968.                 {
  1969.                     num66 = WorldGen.genRand.Next(20, Main.maxTilesX - 20);
  1970.                     num67 = WorldGen.genRand.Next(20, Main.maxTilesY - 300);
  1971.                     if (Main.tile[num66, num67].type == 59)
  1972.                     {
  1973.                         flag6 = false;
  1974.                         int num77 = WorldGen.genRand.Next(2, 4);
  1975.                         int num78 = WorldGen.genRand.Next(2, 4);
  1976.                         for (int num79 = num66 - num77 - 1; num79 <= num66 + num77 + 1; num79++)
  1977.                         {
  1978.                             for (int num80 = num67 - num78 - 1; num80 <= num67 + num78 + 1; num80++)
  1979.                             {
  1980.                                 Main.tile[num79, num80].active = true;
  1981.                                 Main.tile[num79, num80].type = 45;
  1982.                                 Main.tile[num79, num80].liquid = 0;
  1983.                                 Main.tile[num79, num80].lava = false;
  1984.                             }
  1985.                         }
  1986.                         for (int num81 = num66 - num77; num81 <= num66 + num77; num81++)
  1987.                         {
  1988.                             for (int num82 = num67 - num78; num82 <= num67 + num78; num82++)
  1989.                             {
  1990.                                 Main.tile[num81, num82].active = false;
  1991.                                 Main.tile[num81, num82].wall = 10;
  1992.                             }
  1993.                         }
  1994.                         bool flag7 = false;
  1995.                         int num83 = 0;
  1996.                         while (!flag7 && num83 < 100)
  1997.                         {
  1998.                             num83++;
  1999.                             int num84 = WorldGen.genRand.Next(num66 - num77, num66 + num77 + 1);
  2000.                             int num85 = WorldGen.genRand.Next(num67 - num78, num67 + num78 - 2);
  2001.                             WorldGen.PlaceTile(num84, num85, 4, true, false, -1);
  2002.                             if (Main.tile[num84, num85].type == 4)
  2003.                             {
  2004.                                 flag7 = true;
  2005.                             }
  2006.                         }
  2007.                         for (int num86 = num66 - num77 - 1; num86 <= num66 + num77 + 1; num86++)
  2008.                         {
  2009.                             for (int num87 = num67 + num78 - 2; num87 <= num67 + num78; num87++)
  2010.                             {
  2011.                                 Main.tile[num86, num87].active = false;
  2012.                             }
  2013.                         }
  2014.                         for (int num88 = num66 - num77 - 1; num88 <= num66 + num77 + 1; num88++)
  2015.                         {
  2016.                             for (int num89 = num67 + num78 - 2; num89 <= num67 + num78 - 1; num89++)
  2017.                             {
  2018.                                 Main.tile[num88, num89].active = false;
  2019.                             }
  2020.                         }
  2021.                         for (int num90 = num66 - num77 - 1; num90 <= num66 + num77 + 1; num90++)
  2022.                         {
  2023.                             int num91 = 4;
  2024.                             int num92 = num67 + num78 + 2;
  2025.                             while (!Main.tile[num90, num92].active && num92 < Main.maxTilesY && num91 > 0)
  2026.                             {
  2027.                                 Main.tile[num90, num92].active = true;
  2028.                                 Main.tile[num90, num92].type = 59;
  2029.                                 num92++;
  2030.                                 num91--;
  2031.                             }
  2032.                         }
  2033.                         num77 -= WorldGen.genRand.Next(1, 3);
  2034.                         int num93 = num67 - num78 - 2;
  2035.                         while (num77 > -1)
  2036.                         {
  2037.                             for (int num94 = num66 - num77 - 1; num94 <= num66 + num77 + 1; num94++)
  2038.                             {
  2039.                                 Main.tile[num94, num93].active = true;
  2040.                                 Main.tile[num94, num93].type = 45;
  2041.                             }
  2042.                             num77 -= WorldGen.genRand.Next(1, 3);
  2043.                             num93--;
  2044.                         }
  2045.                         WorldGen.JChestX[WorldGen.numJChests] = num66;
  2046.                         WorldGen.JChestY[WorldGen.numJChests] = num67;
  2047.                         WorldGen.numJChests++;
  2048.                     }
  2049.                 }
  2050.                 num76++;
  2051.             }
  2052.             for (int num95 = 0; num95 < Main.maxTilesX; num95++)
  2053.             {
  2054.                 for (int num96 = (int)Main.worldSurface; num96 < Main.maxTilesY; num96++)
  2055.                 {
  2056.                     if (Main.tile[num95, num96].active)
  2057.                     {
  2058.                         WorldGen.SpreadGrass(num95, num96, 59, 60, false);
  2059.                     }
  2060.                 }
  2061.             }
  2062.             Main.statusText = "Adding mushroom patches...";
  2063.             for (int num97 = 0; num97 < Main.maxTilesX / 300; num97++)
  2064.             {
  2065.                 int i2 = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.3), (int)((double)Main.maxTilesX * 0.7));
  2066.                 int j2 = WorldGen.genRand.Next((int)Main.rockLayer, Main.maxTilesY - 300);
  2067.                 WorldGen.ShroomPatch(i2, j2);
  2068.             }
  2069.             for (int num98 = 0; num98 < Main.maxTilesX; num98++)
  2070.             {
  2071.                 for (int num99 = (int)Main.worldSurface; num99 < Main.maxTilesY; num99++)
  2072.                 {
  2073.                     if (Main.tile[num98, num99].active)
  2074.                     {
  2075.                         WorldGen.SpreadGrass(num98, num99, 59, 70, false);
  2076.                     }
  2077.                 }
  2078.             }
  2079.             Main.statusText = "Placing mud in the dirt...";
  2080.             for (int num100 = 0; num100 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.001); num100++)
  2081.             {
  2082.                 WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num7, Main.maxTilesY), (double)WorldGen.genRand.Next(2, 6), WorldGen.genRand.Next(2, 40), 59, false, 0f, 0f, false, true);
  2083.             }
  2084.             Main.statusText = "Adding shinies...";
  2085.             for (int num101 = 0; num101 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 6E-05); num101++)
  2086.             {
  2087.                 WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num5, (int)num6), (double)WorldGen.genRand.Next(3, 6), WorldGen.genRand.Next(2, 6), 7, false, 0f, 0f, false, true);
  2088.             }
  2089.             for (int num102 = 0; num102 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 8E-05); num102++)
  2090.             {
  2091.                 WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num6, (int)num8), (double)WorldGen.genRand.Next(3, 7), WorldGen.genRand.Next(3, 7), 7, false, 0f, 0f, false, true);
  2092.             }
  2093.             for (int num103 = 0; num103 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.0002); num103++)
  2094.             {
  2095.                 WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num7, Main.maxTilesY), (double)WorldGen.genRand.Next(4, 9), WorldGen.genRand.Next(4, 8), 7, false, 0f, 0f, false, true);
  2096.             }
  2097.             for (int num104 = 0; num104 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 3E-05); num104++)
  2098.             {
  2099.                 WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num5, (int)num6), (double)WorldGen.genRand.Next(3, 7), WorldGen.genRand.Next(2, 5), 6, false, 0f, 0f, false, true);
  2100.             }
  2101.             for (int num105 = 0; num105 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 8E-05); num105++)
  2102.             {
  2103.                 WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num6, (int)num8), (double)WorldGen.genRand.Next(3, 6), WorldGen.genRand.Next(3, 6), 6, false, 0f, 0f, false, true);
  2104.             }
  2105.             for (int num106 = 0; num106 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.0002); num106++)
  2106.             {
  2107.                 WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num7, Main.maxTilesY), (double)WorldGen.genRand.Next(4, 9), WorldGen.genRand.Next(4, 8), 6, false, 0f, 0f, false, true);
  2108.             }
  2109.             for (int num107 = 0; num107 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 3E-05); num107++)
  2110.             {
  2111.                 WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num6, (int)num8), (double)WorldGen.genRand.Next(3, 6), WorldGen.genRand.Next(3, 6), 9, false, 0f, 0f, false, true);
  2112.             }
  2113.             for (int num108 = 0; num108 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.00017); num108++)
  2114.             {
  2115.                 WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num7, Main.maxTilesY), (double)WorldGen.genRand.Next(4, 9), WorldGen.genRand.Next(4, 8), 9, false, 0f, 0f, false, true);
  2116.             }
  2117.             for (int num109 = 0; num109 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.00017); num109++)
  2118.             {
  2119.                 WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next(0, (int)num5), (double)WorldGen.genRand.Next(4, 9), WorldGen.genRand.Next(4, 8), 9, false, 0f, 0f, false, true);
  2120.             }
  2121.             for (int num110 = 0; num110 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.00012); num110++)
  2122.             {
  2123.                 WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num7, Main.maxTilesY), (double)WorldGen.genRand.Next(4, 8), WorldGen.genRand.Next(4, 8), 8, false, 0f, 0f, false, true);
  2124.             }
  2125.             for (int num111 = 0; num111 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.00012); num111++)
  2126.             {
  2127.                 WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next(0, (int)num5 - 20), (double)WorldGen.genRand.Next(4, 8), WorldGen.genRand.Next(4, 8), 8, false, 0f, 0f, false, true);
  2128.             }
  2129.             Main.statusText = "Adding webs...";
  2130.             for (int num112 = 0; num112 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.001); num112++)
  2131.             {
  2132.                 int num113 = WorldGen.genRand.Next(20, Main.maxTilesX - 20);
  2133.                 int num114 = WorldGen.genRand.Next((int)num5, Main.maxTilesY - 20);
  2134.                 if (num112 < WorldGen.numMCaves)
  2135.                 {
  2136.                     num113 = WorldGen.mCaveX[num112];
  2137.                     num114 = WorldGen.mCaveY[num112];
  2138.                 }
  2139.                 if (!Main.tile[num113, num114].active)
  2140.                 {
  2141.                     if ((double)num114 <= Main.worldSurface)
  2142.                     {
  2143.                         if (Main.tile[num113, num114].wall <= 0)
  2144.                         {
  2145.                             goto IL_2A53;
  2146.                         }
  2147.                     }
  2148.                     while (!Main.tile[num113, num114].active && num114 > (int)num5)
  2149.                     {
  2150.                         num114--;
  2151.                     }
  2152.                     num114++;
  2153.                     int num115 = 1;
  2154.                     if (WorldGen.genRand.Next(2) == 0)
  2155.                     {
  2156.                         num115 = -1;
  2157.                     }
  2158.                     while (!Main.tile[num113, num114].active && num113 > 10 && num113 < Main.maxTilesX - 10)
  2159.                     {
  2160.                         num113 += num115;
  2161.                     }
  2162.                     num113 -= num115;
  2163.                     if ((double)num114 > Main.worldSurface || Main.tile[num113, num114].wall > 0)
  2164.                     {
  2165.                         WorldGen.TileRunner(num113, num114, (double)WorldGen.genRand.Next(4, 13), WorldGen.genRand.Next(2, 5), 51, true, (float)num115, -1f, false, false);
  2166.                     }
  2167.                 }
  2168.                 IL_2A53:;
  2169.             }
  2170.             Main.statusText = "Creating underworld: 0%";
  2171.             int num116 = Main.maxTilesY - WorldGen.genRand.Next(150, 190);
  2172.             for (int num117 = 0; num117 < Main.maxTilesX; num117++)
  2173.             {
  2174.                 num116 += WorldGen.genRand.Next(-3, 4);
  2175.                 if (num116 < Main.maxTilesY - 190)
  2176.                 {
  2177.                     num116 = Main.maxTilesY - 190;
  2178.                 }
  2179.                 if (num116 > Main.maxTilesY - 160)
  2180.                 {
  2181.                     num116 = Main.maxTilesY - 160;
  2182.                 }
  2183.                 for (int num118 = num116 - 20 - WorldGen.genRand.Next(3); num118 < Main.maxTilesY; num118++)
  2184.                 {
  2185.                     if (num118 >= num116)
  2186.                     {
  2187.                         Main.tile[num117, num118].active = false;
  2188.                         Main.tile[num117, num118].lava = false;
  2189.                         Main.tile[num117, num118].liquid = 0;
  2190.                     }
  2191.                     else
  2192.                     {
  2193.                         Main.tile[num117, num118].type = 57;
  2194.                     }
  2195.                 }
  2196.             }
  2197.             int num119 = Main.maxTilesY - WorldGen.genRand.Next(40, 70);
  2198.             for (int num120 = 10; num120 < Main.maxTilesX - 10; num120++)
  2199.             {
  2200.                 num119 += WorldGen.genRand.Next(-10, 11);
  2201.                 if (num119 > Main.maxTilesY - 60)
  2202.                 {
  2203.                     num119 = Main.maxTilesY - 60;
  2204.                 }
  2205.                 if (num119 < Main.maxTilesY - 100)
  2206.                 {
  2207.                     num119 = Main.maxTilesY - 120;
  2208.                 }
  2209.                 for (int num121 = num119; num121 < Main.maxTilesY - 10; num121++)
  2210.                 {
  2211.                     if (!Main.tile[num120, num121].active)
  2212.                     {
  2213.                         Main.tile[num120, num121].lava = true;
  2214.                         Main.tile[num120, num121].liquid = 255;
  2215.                     }
  2216.                 }
  2217.             }
  2218.             for (int num122 = 0; num122 < Main.maxTilesX; num122++)
  2219.             {
  2220.                 if (WorldGen.genRand.Next(50) == 0)
  2221.                 {
  2222.                     int num123 = Main.maxTilesY - 65;
  2223.                     while (!Main.tile[num122, num123].active && num123 > Main.maxTilesY - 135)
  2224.                     {
  2225.                         num123--;
  2226.                     }
  2227.                     WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), num123 + WorldGen.genRand.Next(20, 50), (double)WorldGen.genRand.Next(15, 20), 1000, 57, true, 0f, (float)WorldGen.genRand.Next(1, 3), true, true);
  2228.                 }
  2229.             }
  2230.             Liquid.QuickWater(-2, -1, -1);
  2231.             for (int num124 = 0; num124 < Main.maxTilesX; num124++)
  2232.             {
  2233.                 float num125 = (float)num124 / (float)(Main.maxTilesX - 1);
  2234.                 Main.statusText = "Creating underworld: " + (int)(num125 * 100f / 2f + 50f) + "%";
  2235.                 if (WorldGen.genRand.Next(13) == 0)
  2236.                 {
  2237.                     int num126 = Main.maxTilesY - 65;
  2238.                     while ((Main.tile[num124, num126].liquid > 0 || Main.tile[num124, num126].active) && num126 > Main.maxTilesY - 140)
  2239.                     {
  2240.                         num126--;
  2241.                     }
  2242.                     WorldGen.TileRunner(num124, num126 - WorldGen.genRand.Next(2, 5), (double)WorldGen.genRand.Next(5, 30), 1000, 57, true, 0f, (float)WorldGen.genRand.Next(1, 3), true, true);
  2243.                     float num127 = (float)WorldGen.genRand.Next(1, 3);
  2244.                     if (WorldGen.genRand.Next(3) == 0)
  2245.                     {
  2246.                         num127 *= 0.5f;
  2247.                     }
  2248.                     if (WorldGen.genRand.Next(2) == 0)
  2249.                     {
  2250.                         WorldGen.TileRunner(num124, num126 - WorldGen.genRand.Next(2, 5), (double)((int)((float)WorldGen.genRand.Next(5, 15) * num127)), (int)((float)WorldGen.genRand.Next(10, 15) * num127), 57, true, 1f, 0.3f, false, true);
  2251.                     }
  2252.                     if (WorldGen.genRand.Next(2) == 0)
  2253.                     {
  2254.                         num127 = (float)WorldGen.genRand.Next(1, 3);
  2255.                         WorldGen.TileRunner(num124, num126 - WorldGen.genRand.Next(2, 5), (double)((int)((float)WorldGen.genRand.Next(5, 15) * num127)), (int)((float)WorldGen.genRand.Next(10, 15) * num127), 57, true, -1f, 0.3f, false, true);
  2256.                     }
  2257.                     WorldGen.TileRunner(num124 + WorldGen.genRand.Next(-10, 10), num126 + WorldGen.genRand.Next(-10, 10), (double)WorldGen.genRand.Next(5, 15), WorldGen.genRand.Next(5, 10), -2, false, (float)WorldGen.genRand.Next(-1, 3), (float)WorldGen.genRand.Next(-1, 3), false, true);
  2258.                     if (WorldGen.genRand.Next(3) == 0)
  2259.                     {
  2260.                         WorldGen.TileRunner(num124 + WorldGen.genRand.Next(-10, 10), num126 + WorldGen.genRand.Next(-10, 10), (double)WorldGen.genRand.Next(10, 30), WorldGen.genRand.Next(10, 20), -2, false, (float)WorldGen.genRand.Next(-1, 3), (float)WorldGen.genRand.Next(-1, 3), false, true);
  2261.                     }
  2262.                     if (WorldGen.genRand.Next(5) == 0)
  2263.                     {
  2264.                         WorldGen.TileRunner(num124 + WorldGen.genRand.Next(-15, 15), num126 + WorldGen.genRand.Next(-15, 10), (double)WorldGen.genRand.Next(15, 30), WorldGen.genRand.Next(5, 20), -2, false, (float)WorldGen.genRand.Next(-1, 3), (float)WorldGen.genRand.Next(-1, 3), false, true);
  2265.                     }
  2266.                 }
  2267.             }
  2268.             for (int num128 = 0; num128 < Main.maxTilesX; num128++)
  2269.             {
  2270.                 if (!Main.tile[num128, Main.maxTilesY - 145].active)
  2271.                 {
  2272.                     Main.tile[num128, Main.maxTilesY - 145].liquid = 255;
  2273.                     Main.tile[num128, Main.maxTilesY - 145].lava = true;
  2274.                 }
  2275.                 if (!Main.tile[num128, Main.maxTilesY - 144].active)
  2276.                 {
  2277.                     Main.tile[num128, Main.maxTilesY - 144].liquid = 255;
  2278.                     Main.tile[num128, Main.maxTilesY - 144].lava = true;
  2279.                 }
  2280.             }
  2281.             for (int num129 = 0; num129 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.002); num129++)
  2282.             {
  2283.                 WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next(Main.maxTilesY - 140, Main.maxTilesY), (double)WorldGen.genRand.Next(3, 8), WorldGen.genRand.Next(3, 8), 58, false, 0f, 0f, false, true);
  2284.             }
  2285.             WorldGen.AddHellHouses();
  2286.             int num130 = WorldGen.genRand.Next(2, (int)((double)Main.maxTilesX * 0.005));
  2287.             for (int num131 = 0; num131 < num130; num131++)
  2288.             {
  2289.                 float num132 = (float)num131 / (float)num130;
  2290.                 Main.statusText = "Adding water bodies: " + (int)(num132 * 100f) + "%";
  2291.                 int num133 = WorldGen.genRand.Next(300, Main.maxTilesX - 300);
  2292.                 while (num133 > Main.maxTilesX / 2 - 50 && num133 < Main.maxTilesX / 2 + 50)
  2293.                 {
  2294.                     num133 = WorldGen.genRand.Next(300, Main.maxTilesX - 300);
  2295.                 }
  2296.                 int num134 = (int)num5 - 20;
  2297.                 while (!Main.tile[num133, num134].active)
  2298.                 {
  2299.                     num134++;
  2300.                 }
  2301.                 WorldGen.Lakinater(num133, num134);
  2302.             }
  2303.             int x = 0;
  2304.             if (num9 == -1)
  2305.             {
  2306.                 x = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.05), (int)((double)Main.maxTilesX * 0.2));
  2307.                 num9 = -1;
  2308.             }
  2309.             else
  2310.             {
  2311.                 x = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.8), (int)((double)Main.maxTilesX * 0.95));
  2312.                 num9 = 1;
  2313.             }
  2314.             int y = (int)((Main.rockLayer + (double)Main.maxTilesY) / 2.0) + WorldGen.genRand.Next(-200, 200);
  2315.             WorldGen.MakeDungeon(x, y, 41, 7);
  2316.             int num135 = 0;
  2317.             while ((double)num135 < (double)Main.maxTilesX * 0.0004)
  2318.             {
  2319.                 float num136 = (float)((double)num135 / ((double)Main.maxTilesX * 0.0004));
  2320.                 Main.statusText = "Making the world evil: " + (int)(num136 * 100f) + "%";
  2321.                 bool flag8 = false;
  2322.                 int num137 = 0;
  2323.                 int num138 = 0;
  2324.                 int num139 = 0;
  2325.                 while (!flag8)
  2326.                 {
  2327.                     flag8 = true;
  2328.                     int num140 = Main.maxTilesX / 2;
  2329.                     int num141 = 200;
  2330.                     num137 = WorldGen.genRand.Next(Main.maxTilesX);
  2331.                     num138 = num137 - WorldGen.genRand.Next(150) - 175;
  2332.                     num139 = num137 + WorldGen.genRand.Next(150) + 175;
  2333.                     if (num138 < 0)
  2334.                     {
  2335.                         num138 = 0;
  2336.                     }
  2337.                     if (num139 > Main.maxTilesX)
  2338.                     {
  2339.                         num139 = Main.maxTilesX;
  2340.                     }
  2341.                     if (num137 > num140 - num141 && num137 < num140 + num141)
  2342.                     {
  2343.                         flag8 = false;
  2344.                     }
  2345.                     if (num138 > num140 - num141 && num138 < num140 + num141)
  2346.                     {
  2347.                         flag8 = false;
  2348.                     }
  2349.                     if (num139 > num140 - num141 && num139 < num140 + num141)
  2350.                     {
  2351.                         flag8 = false;
  2352.                     }
  2353.                     for (int num142 = num138; num142 < num139; num142++)
  2354.                     {
  2355.                         for (int num143 = 0; num143 < (int)Main.worldSurface; num143 += 5)
  2356.                         {
  2357.                             if (Main.tile[num142, num143].active && Main.tileDungeon[(int)Main.tile[num142, num143].type])
  2358.                             {
  2359.                                 flag8 = false;
  2360.                                 break;
  2361.                             }
  2362.                             if (!flag8)
  2363.                             {
  2364.                                 break;
  2365.                             }
  2366.                         }
  2367.                     }
  2368.                 }
  2369.                 int num144 = 0;
  2370.                 for (int num145 = num138; num145 < num139; num145++)
  2371.                 {
  2372.                     if (num144 > 0)
  2373.                     {
  2374.                         num144--;
  2375.                     }
  2376.                     if (num145 == num137 || num144 == 0)
  2377.                     {
  2378.                         int num146 = (int)num5;
  2379.                         while ((double)num146 < Main.worldSurface - 1.0)
  2380.                         {
  2381.                             if (Main.tile[num145, num146].active || Main.tile[num145, num146].wall > 0)
  2382.                             {
  2383.                                 if (num145 == num137)
  2384.                                 {
  2385.                                     num144 = 20;
  2386.                                     WorldGen.ChasmRunner(num145, num146, WorldGen.genRand.Next(150) + 150, true);
  2387.                                     break;
  2388.                                 }
  2389.                                 if (WorldGen.genRand.Next(30) == 0 && num144 == 0)
  2390.                                 {
  2391.                                     num144 = 20;
  2392.                                     bool makeOrb = false;
  2393.                                     if (WorldGen.genRand.Next(2) == 0)
  2394.                                     {
  2395.                                         makeOrb = true;
  2396.                                     }
  2397.                                     WorldGen.ChasmRunner(num145, num146, WorldGen.genRand.Next(50) + 50, makeOrb);
  2398.                                     break;
  2399.                                 }
  2400.                                 break;
  2401.                             }
  2402.                             else
  2403.                             {
  2404.                                 num146++;
  2405.                             }
  2406.                         }
  2407.                     }
  2408.                 }
  2409.                 double num147 = Main.worldSurface + 40.0;
  2410.                 for (int num148 = num138; num148 < num139; num148++)
  2411.                 {
  2412.                     num147 += (double)WorldGen.genRand.Next(-2, 3);
  2413.                     if (num147 < Main.worldSurface + 30.0)
  2414.                     {
  2415.                         num147 = Main.worldSurface + 30.0;
  2416.                     }
  2417.                     if (num147 > Main.worldSurface + 50.0)
  2418.                     {
  2419.                         num147 = Main.worldSurface + 50.0;
  2420.                     }
  2421.                     int num54 = num148;
  2422.                     bool flag9 = false;
  2423.                     int num149 = (int)num5;
  2424.                     while ((double)num149 < num147)
  2425.                     {
  2426.                         if (Main.tile[num54, num149].active)
  2427.                         {
  2428.                             if (Main.tile[num54, num149].type == 0 && (double)num149 < Main.worldSurface - 1.0 && !flag9)
  2429.                             {
  2430.                                 WorldGen.SpreadGrass(num54, num149, 0, 23, true);
  2431.                             }
  2432.                             flag9 = true;
  2433.                             if (Main.tile[num54, num149].type == 1 && num54 >= num138 + WorldGen.genRand.Next(5) && num54 <= num139 - WorldGen.genRand.Next(5))
  2434.                             {
  2435.                                 Main.tile[num54, num149].type = 25;
  2436.                             }
  2437.                             if (Main.tile[num54, num149].type == 2)
  2438.                             {
  2439.                                 Main.tile[num54, num149].type = 23;
  2440.                             }
  2441.                         }
  2442.                         num149++;
  2443.                     }
  2444.                 }
  2445.                 for (int num150 = num138; num150 < num139; num150++)
  2446.                 {
  2447.                     for (int num151 = 0; num151 < Main.maxTilesY - 50; num151++)
  2448.                     {
  2449.                         if (Main.tile[num150, num151].active && Main.tile[num150, num151].type == 31)
  2450.                         {
  2451.                             int num152 = num150 - 13;
  2452.                             int num153 = num150 + 13;
  2453.                             int num154 = num151 - 13;
  2454.                             int num155 = num151 + 13;
  2455.                             for (int num156 = num152; num156 < num153; num156++)
  2456.                             {
  2457.                                 if (num156 > 10 && num156 < Main.maxTilesX - 10)
  2458.                                 {
  2459.                                     for (int num157 = num154; num157 < num155; num157++)
  2460.                                     {
  2461.                                         if (Math.Abs(num156 - num150) + Math.Abs(num157 - num151) < 9 + WorldGen.genRand.Next(11) && WorldGen.genRand.Next(3) != 0 && Main.tile[num156, num157].type != 31)
  2462.                                         {
  2463.                                             Main.tile[num156, num157].active = true;
  2464.                                             Main.tile[num156, num157].type = 25;
  2465.                                             if (Math.Abs(num156 - num150) <= 1 && Math.Abs(num157 - num151) <= 1)
  2466.                                             {
  2467.                                                 Main.tile[num156, num157].active = false;
  2468.                                             }
  2469.                                         }
  2470.                                         if (Main.tile[num156, num157].type != 31 && Math.Abs(num156 - num150) <= 2 + WorldGen.genRand.Next(3) && Math.Abs(num157 - num151) <= 2 + WorldGen.genRand.Next(3))
  2471.                                         {
  2472.                                             Main.tile[num156, num157].active = false;
  2473.                                         }
  2474.                                     }
  2475.                                 }
  2476.                             }
  2477.                         }
  2478.                     }
  2479.                 }
  2480.                 num135++;
  2481.             }
  2482.             Main.statusText = "Generating mountain caves...";
  2483.             for (int num158 = 0; num158 < WorldGen.numMCaves; num158++)
  2484.             {
  2485.                 int i3 = WorldGen.mCaveX[num158];
  2486.                 int j3 = WorldGen.mCaveY[num158];
  2487.                 WorldGen.CaveOpenater(i3, j3);
  2488.                 WorldGen.Cavinator(i3, j3, WorldGen.genRand.Next(40, 50));
  2489.             }
  2490.             Main.statusText = "Creating beaches...";
  2491.             for (int num159 = 0; num159 < 2; num159++)
  2492.             {
  2493.                 if (num159 == 0)
  2494.                 {
  2495.                     int num160 = 0;
  2496.                     int num161 = WorldGen.genRand.Next(125, 200);
  2497.                     float num162 = 1f;
  2498.                     int num163 = 0;
  2499.                     while (!Main.tile[num161 - 1, num163].active)
  2500.                     {
  2501.                         num163++;
  2502.                     }
  2503.                     for (int num164 = num161 - 1; num164 >= num160; num164--)
  2504.                     {
  2505.                         num162 += (float)WorldGen.genRand.Next(10, 20) * 0.05f;
  2506.                         int num165 = 0;
  2507.                         while ((float)num165 < (float)num163 + num162)
  2508.                         {
  2509.                             if ((float)num165 < (float)num163 + num162 * 0.75f - 3f)
  2510.                             {
  2511.                                 Main.tile[num164, num165].active = false;
  2512.                                 if (num165 > num163)
  2513.                                 {
  2514.                                     Main.tile[num164, num165].liquid = 255;
  2515.                                 }
  2516.                                 else
  2517.                                 {
  2518.                                     if (num165 == num163)
  2519.                                     {
  2520.                                         Main.tile[num164, num165].liquid = 127;
  2521.                                     }
  2522.                                 }
  2523.                             }
  2524.                             else
  2525.                             {
  2526.                                 if (num165 > num163)
  2527.                                 {
  2528.                                     Main.tile[num164, num165].type = 53;
  2529.                                     Main.tile[num164, num165].active = true;
  2530.                                 }
  2531.                             }
  2532.                             Main.tile[num164, num165].wall = 0;
  2533.                             num165++;
  2534.                         }
  2535.                     }
  2536.                 }
  2537.                 else
  2538.                 {
  2539.                     int num160 = Main.maxTilesX - WorldGen.genRand.Next(125, 200);
  2540.                     int num161 = Main.maxTilesX;
  2541.                     float num166 = 1f;
  2542.                     int num167 = 0;
  2543.                     while (!Main.tile[num160, num167].active)
  2544.                     {
  2545.                         num167++;
  2546.                     }
  2547.                     for (int num168 = num160; num168 < num161; num168++)
  2548.                     {
  2549.                         num166 += (float)WorldGen.genRand.Next(10, 20) * 0.05f;
  2550.                         int num169 = 0;
  2551.                         while ((float)num169 < (float)num167 + num166)
  2552.                         {
  2553.                             if ((float)num169 < (float)num167 + num166 * 0.75f - 3f)
  2554.                             {
  2555.                                 Main.tile[num168, num169].active = false;
  2556.                                 if (num169 > num167)
  2557.                                 {
  2558.                                     Main.tile[num168, num169].liquid = 255;
  2559.                                 }
  2560.                                 else
  2561.                                 {
  2562.                                     if (num169 == num167)
  2563.                                     {
  2564.                                         Main.tile[num168, num169].liquid = 127;
  2565.                                     }
  2566.                                 }
  2567.                             }
  2568.                             else
  2569.                             {
  2570.                                 if (num169 > num167)
  2571.                                 {
  2572.                                     Main.tile[num168, num169].type = 53;
  2573.                                     Main.tile[num168, num169].active = true;
  2574.                                 }
  2575.                             }
  2576.                             Main.tile[num168, num169].wall = 0;
  2577.                             num169++;
  2578.                         }
  2579.                     }
  2580.                 }
  2581.             }
  2582.             Main.statusText = "Adding gems...";
  2583.             for (int num170 = 63; num170 <= 68; num170++)
  2584.             {
  2585.                 float num171 = 0f;
  2586.                 if (num170 == 67)
  2587.                 {
  2588.                     num171 = (float)Main.maxTilesX * 0.5f;
  2589.                 }
  2590.                 else
  2591.                 {
  2592.                     if (num170 == 66)
  2593.                     {
  2594.                         num171 = (float)Main.maxTilesX * 0.45f;
  2595.                     }
  2596.                     else
  2597.                     {
  2598.                         if (num170 == 63)
  2599.                         {
  2600.                             num171 = (float)Main.maxTilesX * 0.3f;
  2601.                         }
  2602.                         else
  2603.                         {
  2604.                             if (num170 == 65)
  2605.                             {
  2606.                                 num171 = (float)Main.maxTilesX * 0.25f;
  2607.                             }
  2608.                             else
  2609.                             {
  2610.                                 if (num170 == 64)
  2611.                                 {
  2612.                                     num171 = (float)Main.maxTilesX * 0.1f;
  2613.                                 }
  2614.                                 else
  2615.                                 {
  2616.                                     if (num170 == 68)
  2617.                                     {
  2618.                                         num171 = (float)Main.maxTilesX * 0.05f;
  2619.                                     }
  2620.                                 }
  2621.                             }
  2622.                         }
  2623.                     }
  2624.                 }
  2625.                 num171 *= 0.2f;
  2626.                 int num172 = 0;
  2627.                 while ((float)num172 < num171)
  2628.                 {
  2629.                     int num173 = WorldGen.genRand.Next(0, Main.maxTilesX);
  2630.                     int num174 = WorldGen.genRand.Next((int)Main.worldSurface, Main.maxTilesY);
  2631.                     while (Main.tile[num173, num174].type != 1)
  2632.                     {
  2633.                         num173 = WorldGen.genRand.Next(0, Main.maxTilesX);
  2634.                         num174 = WorldGen.genRand.Next((int)Main.worldSurface, Main.maxTilesY);
  2635.                     }
  2636.                     WorldGen.TileRunner(num173, num174, (double)WorldGen.genRand.Next(2, 6), WorldGen.genRand.Next(3, 7), num170, false, 0f, 0f, false, true);
  2637.                     num172++;
  2638.                 }
  2639.             }
  2640.             for (int num175 = 0; num175 < Main.maxTilesX; num175++)
  2641.             {
  2642.                 float num176 = (float)num175 / (float)(Main.maxTilesX - 1);
  2643.                 Main.statusText = "Gravitating sand: " + (int)(num176 * 100f) + "%";
  2644.                 for (int num177 = Main.maxTilesY - 5; num177 > 0; num177--)
  2645.                 {
  2646.                     if (Main.tile[num175, num177].active && Main.tile[num175, num177].type == 53)
  2647.                     {
  2648.                         int num178 = num177;
  2649.                         while (!Main.tile[num175, num178 + 1].active && num178 < Main.maxTilesY - 5)
  2650.                         {
  2651.                             Main.tile[num175, num178 + 1].active = true;
  2652.                             Main.tile[num175, num178 + 1].type = 53;
  2653.                             num178++;
  2654.                         }
  2655.                     }
  2656.                 }
  2657.             }
  2658.             for (int num179 = 3; num179 < Main.maxTilesX - 3; num179++)
  2659.             {
  2660.                 float num180 = (float)num179 / (float)Main.maxTilesX;
  2661.                 Main.statusText = "Cleaning up dirt backgrounds: " + (int)(num180 * 100f + 1f) + "%";
  2662.                 int num181 = 0;
  2663.                 while ((double)num181 < Main.worldSurface)
  2664.                 {
  2665.                     if (Main.tile[num179, num181].wall == 2)
  2666.                     {
  2667.                         Main.tile[num179, num181].wall = 0;
  2668.                     }
  2669.                     if (Main.tile[num179, num181].type != 53)
  2670.                     {
  2671.                         if (Main.tile[num179 - 1, num181].wall == 2)
  2672.                         {
  2673.                             Main.tile[num179 - 1, num181].wall = 0;
  2674.                         }
  2675.                         if (Main.tile[num179 - 2, num181].wall == 2 && WorldGen.genRand.Next(2) == 0)
  2676.                         {
  2677.                             Main.tile[num179 - 2, num181].wall = 0;
  2678.                         }
  2679.                         if (Main.tile[num179 - 3, num181].wall == 2 && WorldGen.genRand.Next(2) == 0)
  2680.                         {
  2681.                             Main.tile[num179 - 3, num181].wall = 0;
  2682.                         }
  2683.                         if (Main.tile[num179 + 1, num181].wall == 2)
  2684.                         {
  2685.                             Main.tile[num179 + 1, num181].wall = 0;
  2686.                         }
  2687.                         if (Main.tile[num179 + 2, num181].wall == 2 && WorldGen.genRand.Next(2) == 0)
  2688.                         {
  2689.                             Main.tile[num179 + 2, num181].wall = 0;
  2690.                         }
  2691.                         if (Main.tile[num179 + 3, num181].wall == 2 && WorldGen.genRand.Next(2) == 0)
  2692.                         {
  2693.                             Main.tile[num179 + 3, num181].wall = 0;
  2694.                         }
  2695.                         if (Main.tile[num179, num181].active)
  2696.                         {
  2697.                             break;
  2698.                         }
  2699.                     }
  2700.                     num181++;
  2701.                 }
  2702.             }
  2703.             for (int num182 = 0; num182 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 2E-05); num182++)
  2704.             {
  2705.                 float num183 = (float)((double)num182 / ((double)(Main.maxTilesX * Main.maxTilesY) * 2E-05));
  2706.                 Main.statusText = "Placing alters: " + (int)(num183 * 100f + 1f) + "%";
  2707.                 bool flag10 = false;
  2708.                 int num184 = 0;
  2709.                 while (!flag10)
  2710.                 {
  2711.                     int num185 = WorldGen.genRand.Next(1, Main.maxTilesX);
  2712.                     int num186 = (int)(num6 + 20.0);
  2713.                     WorldGen.Place3x2(num185, num186, 26);
  2714.                     if (Main.tile[num185, num186].type == 26)
  2715.                     {
  2716.                         flag10 = true;
  2717.                     }
  2718.                     else
  2719.                     {
  2720.                         num184++;
  2721.                         if (num184 >= 10000)
  2722.                         {
  2723.                             flag10 = true;
  2724.                         }
  2725.                     }
  2726.                 }
  2727.             }
  2728.             Liquid.QuickWater(3, -1, -1);
  2729.             WorldGen.WaterCheck();
  2730.             int num187 = 0;
  2731.             Liquid.quickSettle = true;
  2732.             while (num187 < 10)
  2733.             {
  2734.                 int num188 = Liquid.numLiquid + LiquidBuffer.numLiquidBuffer;
  2735.                 num187++;
  2736.                 float num189 = 0f;
  2737.                 while (Liquid.numLiquid > 0)
  2738.                 {
  2739.                     float num190 = (float)(num188 - (Liquid.numLiquid + LiquidBuffer.numLiquidBuffer)) / (float)num188;
  2740.                     if (Liquid.numLiquid + LiquidBuffer.numLiquidBuffer > num188)
  2741.                     {
  2742.                         num188 = Liquid.numLiquid + LiquidBuffer.numLiquidBuffer;
  2743.                     }
  2744.                     if (num190 > num189)
  2745.                     {
  2746.                         num189 = num190;
  2747.                     }
  2748.                     else
  2749.                     {
  2750.                         num190 = num189;
  2751.                     }
  2752.                     if (num187 == 1)
  2753.                     {
  2754.                         Main.statusText = "Settling liquids: " + (int)(num190 * 100f / 3f + 33f) + "%";
  2755.                     }
  2756.                     int num191 = 10;
  2757.                     if (num187 <= num191)
  2758.                     {
  2759.                         goto IL_41A4;
  2760.                     }
  2761.                     IL_41A4:
  2762.                     Liquid.UpdateLiquid();
  2763.                 }
  2764.                 WorldGen.WaterCheck();
  2765.                 Main.statusText = "Settling liquids: " + (int)((float)num187 * 10f / 3f + 66f) + "%";
  2766.             }
  2767.             Liquid.quickSettle = false;
  2768.             for (int num192 = 0; num192 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 2.5E-05); num192++)
  2769.             {
  2770.                 float num193 = (float)((double)num192 / ((double)(Main.maxTilesX * Main.maxTilesY) * 2.5E-05));
  2771.                 Main.statusText = "Placing life crystals: " + (int)(num193 * 100f + 1f) + "%";
  2772.                 bool flag11 = false;
  2773.                 int num194 = 0;
  2774.                 while (!flag11)
  2775.                 {
  2776.                     if (WorldGen.AddLifeCrystal(WorldGen.genRand.Next(1, Main.maxTilesX), WorldGen.genRand.Next((int)(num6 + 20.0), Main.maxTilesY)))
  2777.                     {
  2778.                         flag11 = true;
  2779.                     }
  2780.                     else
  2781.                     {
  2782.                         num194++;
  2783.                         if (num194 >= 10000)
  2784.                         {
  2785.                             flag11 = true;
  2786.                         }
  2787.                     }
  2788.                 }
  2789.             }
  2790.             for (int num195 = 0; num195 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 1.8E-05); num195++)
  2791.             {
  2792.                 float num196 = (float)((double)num195 / ((double)(Main.maxTilesX * Main.maxTilesY) * 1.8E-05));
  2793.                 Main.statusText = "Hiding treasure: " + (int)(num196 * 100f + 1f) + "%";
  2794.                 bool flag12 = false;
  2795.                 int num197 = 0;
  2796.                 while (!flag12)
  2797.                 {
  2798.                     if (WorldGen.AddBuriedChest(WorldGen.genRand.Next(1, Main.maxTilesX), WorldGen.genRand.Next((int)(num6 + 20.0), Main.maxTilesY), 0))
  2799.                     {
  2800.                         flag12 = true;
  2801.                     }
  2802.                     else
  2803.                     {
  2804.                         num197++;
  2805.                         if (num197 >= 10000)
  2806.                         {
  2807.                             flag12 = true;
  2808.                         }
  2809.                     }
  2810.                 }
  2811.             }
  2812.             int num198 = 0;
  2813.             for (int num199 = 0; num199 < WorldGen.numJChests; num199++)
  2814.             {
  2815.                 num198++;
  2816.                 int contain = 211;
  2817.                 if (num198 == 1)
  2818.                 {
  2819.                     contain = 211;
  2820.                 }
  2821.                 else
  2822.                 {
  2823.                     if (num198 == 2)
  2824.                     {
  2825.                         contain = 212;
  2826.                     }
  2827.                     else
  2828.                     {
  2829.                         if (num198 == 3)
  2830.                         {
  2831.                             contain = 213;
  2832.                         }
  2833.                     }
  2834.                 }
  2835.                 if (num198 > 3)
  2836.                 {
  2837.                     num198 = 0;
  2838.                 }
  2839.                 if (!WorldGen.AddBuriedChest(WorldGen.JChestX[num199] + WorldGen.genRand.Next(2), WorldGen.JChestY[num199], contain))
  2840.                 {
  2841.                     for (int num200 = WorldGen.JChestX[num199]; num200 <= WorldGen.JChestX[num199] + 1; num200++)
  2842.                     {
  2843.                         for (int num201 = WorldGen.JChestY[num199]; num201 <= WorldGen.JChestY[num199] + 1; num201++)
  2844.                         {
  2845.                             WorldGen.KillTile(num200, num201, false, false, false);
  2846.                         }
  2847.                     }
  2848.                     WorldGen.AddBuriedChest(WorldGen.JChestX[num199], WorldGen.JChestY[num199], contain);
  2849.                 }
  2850.             }
  2851.             float num202 = (float)(Main.maxTilesX / 4200);
  2852.             int num203 = 0;
  2853.             int num204 = 0;
  2854.             while ((float)num204 < 10f * num202)
  2855.             {
  2856.                 int contain2 = 0;
  2857.                 num203++;
  2858.                 if (num203 == 1)
  2859.                 {
  2860.                     contain2 = 186;
  2861.                 }
  2862.                 else
  2863.                 {
  2864.                     contain2 = 187;
  2865.                     num203 = 0;
  2866.                 }
  2867.                 bool flag13 = false;
  2868.                 while (!flag13)
  2869.                 {
  2870.                     int num205 = WorldGen.genRand.Next(1, Main.maxTilesX);
  2871.                     int num206 = WorldGen.genRand.Next(1, Main.maxTilesY - 200);
  2872.                     while (Main.tile[num205, num206].liquid < 200 || Main.tile[num205, num206].lava)
  2873.                     {
  2874.                         num205 = WorldGen.genRand.Next(1, Main.maxTilesX);
  2875.                         num206 = WorldGen.genRand.Next(1, Main.maxTilesY - 200);
  2876.                     }
  2877.                     flag13 = WorldGen.AddBuriedChest(num205, num206, contain2);
  2878.                 }
  2879.                 num204++;
  2880.             }
  2881.             for (int num207 = 0; num207 < WorldGen.numIslandHouses; num207++)
  2882.             {
  2883.                 WorldGen.IslandHouse(WorldGen.fihX[num207], WorldGen.fihY[num207]);
  2884.             }
  2885.             for (int num208 = 0; num208 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.0008); num208++)
  2886.             {
  2887.                 float num209 = (float)((double)num208 / ((double)(Main.maxTilesX * Main.maxTilesY) * 0.0008));
  2888.                 Main.statusText = "Placing breakables: " + (int)(num209 * 100f + 1f) + "%";
  2889.                 bool flag14 = false;
  2890.                 int num210 = 0;
  2891.                 while (!flag14)
  2892.                 {
  2893.                     int num211 = WorldGen.genRand.Next((int)num6, Main.maxTilesY - 10);
  2894.                     if ((double)num209 > 0.93)
  2895.                     {
  2896.                         num211 = Main.maxTilesY - 150;
  2897.                     }
  2898.                     else
  2899.                     {
  2900.                         if ((double)num209 > 0.75)
  2901.                         {
  2902.                             num211 = (int)num5;
  2903.                         }
  2904.                     }
  2905.                     int num212 = WorldGen.genRand.Next(1, Main.maxTilesX);
  2906.                     bool flag15 = false;
  2907.                     for (int num213 = num211; num213 < Main.maxTilesY; num213++)
  2908.                     {
  2909.                         if (!flag15)
  2910.                         {
  2911.                             if (Main.tile[num212, num213].active && Main.tileSolid[(int)Main.tile[num212, num213].type] && !Main.tile[num212, num213 - 1].lava)
  2912.                             {
  2913.                                 flag15 = true;
  2914.                             }
  2915.                         }
  2916.                         else
  2917.                         {
  2918.                             if (WorldGen.PlacePot(num212, num213, 28))
  2919.                             {
  2920.                                 flag14 = true;
  2921.                                 break;
  2922.                             }
  2923.                             num210++;
  2924.                             if (num210 >= 10000)
  2925.                             {
  2926.                                 flag14 = true;
  2927.                                 break;
  2928.                             }
  2929.                         }
  2930.                     }
  2931.                 }
  2932.             }
  2933.             for (int num214 = 0; num214 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 1E-05); num214++)
  2934.             {
  2935.                 float num215 = (float)((double)num214 / ((double)(Main.maxTilesX * Main.maxTilesY) * 1E-05));
  2936.                 Main.statusText = "Placing hellforges: " + (int)(num215 * 100f + 1f) + "%";
  2937.                 bool flag16 = false;
  2938.                 int num216 = 0;
  2939.                 while (!flag16)
  2940.                 {
  2941.                     int num217 = WorldGen.genRand.Next(1, Main.maxTilesX);
  2942.                     int num218 = WorldGen.genRand.Next(Main.maxTilesY - 250, Main.maxTilesY - 5);
  2943.                     if (Main.tile[num217, num218].wall == 13)
  2944.                     {
  2945.                         while (!Main.tile[num217, num218].active)
  2946.                         {
  2947.                             num218++;
  2948.                         }
  2949.                         num218--;
  2950.                         WorldGen.PlaceTile(num217, num218, 77, false, false, -1);
  2951.                         if (Main.tile[num217, num218].type == 77)
  2952.                         {
  2953.                             flag16 = true;
  2954.                         }
  2955.                         else
  2956.                         {
  2957.                             num216++;
  2958.                             if (num216 >= 10000)
  2959.                             {
  2960.                                 flag16 = true;
  2961.                             }
  2962.                         }
  2963.                     }
  2964.                 }
  2965.             }
  2966.             Main.statusText = "Spreading grass...";
  2967.             for (int num219 = 0; num219 < Main.maxTilesX; num219++)
  2968.             {
  2969.                 int num54 = num219;
  2970.                 bool flag17 = true;
  2971.                 int num220 = 0;
  2972.                 while ((double)num220 < Main.worldSurface - 1.0)
  2973.                 {
  2974.                     if (Main.tile[num54, num220].active)
  2975.                     {
  2976.                         if (flag17 && Main.tile[num54, num220].type == 0)
  2977.                         {
  2978.                             WorldGen.SpreadGrass(num54, num220, 0, 2, true);
  2979.                         }
  2980.                         if ((double)num220 > num6)
  2981.                         {
  2982.                             break;
  2983.                         }
  2984.                         flag17 = false;
  2985.                     }
  2986.                     else
  2987.                     {
  2988.                         if (Main.tile[num54, num220].wall == 0)
  2989.                         {
  2990.                             flag17 = true;
  2991.                         }
  2992.                     }
  2993.                     num220++;
  2994.                 }
  2995.             }
  2996.             int num221 = 5;
  2997.             bool flag18 = true;
  2998.             while (flag18)
  2999.             {
  3000.                 int num222 = Main.maxTilesX / 2 + WorldGen.genRand.Next(-num221, num221 + 1);
  3001.                 for (int num223 = 0; num223 < Main.maxTilesY; num223++)
  3002.                 {
  3003.                     if (Main.tile[num222, num223].active)
  3004.                     {
  3005.                         Main.spawnTileX = num222;
  3006.                         Main.spawnTileY = num223;
  3007.                         Main.tile[num222, num223 - 1].lighted = true;
  3008.                         break;
  3009.                     }
  3010.                 }
  3011.                 flag18 = false;
  3012.                 num221++;
  3013.                 if ((double)Main.spawnTileY > Main.worldSurface)
  3014.                 {
  3015.                     flag18 = true;
  3016.                 }
  3017.                 if (Main.tile[Main.spawnTileX, Main.spawnTileY - 1].liquid > 0)
  3018.                 {
  3019.                     flag18 = true;
  3020.                 }
  3021.             }
  3022.             int num224 = 10;
  3023.             while ((double)Main.spawnTileY > Main.worldSurface)
  3024.             {
  3025.                 int num225 = WorldGen.genRand.Next(Main.maxTilesX / 2 - num224, Main.maxTilesX / 2 + num224);
  3026.                 for (int num226 = 0; num226 < Main.maxTilesY; num226++)
  3027.                 {
  3028.                     if (Main.tile[num225, num226].active)
  3029.                     {
  3030.                         Main.spawnTileX = num225;
  3031.                         Main.spawnTileY = num226;
  3032.                         Main.tile[num225, num226 - 1].lighted = true;
  3033.                         break;
  3034.                     }
  3035.                 }
  3036.                 num224++;
  3037.             }
  3038.             /*int num227 = NPC.NewNPC(Main.spawnTileX * 16, Main.spawnTileY * 16, 22, 0);
  3039.             Main.npc[num227].homeTileX = Main.spawnTileX;
  3040.             Main.npc[num227].homeTileY = Main.spawnTileY;
  3041.             Main.npc[num227].direction = 1;
  3042.             Main.npc[num227].homeless = true;*/
  3043.             Main.statusText = "Planting sunflowers...";
  3044.             int num228 = 0;
  3045.             while ((double)num228 < (double)Main.maxTilesX * 0.002)
  3046.             {
  3047.                 int num229 = 0;
  3048.                 int num230 = 0;
  3049.                 int arg_4AEE_0 = Main.maxTilesX / 2;
  3050.                 int num231 = WorldGen.genRand.Next(Main.maxTilesX);
  3051.                 num229 = num231 - WorldGen.genRand.Next(10) - 7;
  3052.                 num230 = num231 + WorldGen.genRand.Next(10) + 7;
  3053.                 if (num229 < 0)
  3054.                 {
  3055.                     num229 = 0;
  3056.                 }
  3057.                 if (num230 > Main.maxTilesX - 1)
  3058.                 {
  3059.                     num230 = Main.maxTilesX - 1;
  3060.                 }
  3061.                 for (int num232 = num229; num232 < num230; num232++)
  3062.                 {
  3063.                     int num233 = 1;
  3064.                     while ((double)num233 < Main.worldSurface - 1.0)
  3065.                     {
  3066.                         if (Main.tile[num232, num233].type == 1 && Main.tile[num232, num233].active)
  3067.                         {
  3068.                             Main.tile[num232, num233].type = 2;
  3069.                         }
  3070.                         if (Main.tile[num232 + 1, num233].type == 1 && Main.tile[num232 + 1, num233].active)
  3071.                         {
  3072.                             Main.tile[num232 + 1, num233].type = 2;
  3073.                         }
  3074.                         if (Main.tile[num232, num233].type == 2 && Main.tile[num232, num233].active && !Main.tile[num232, num233 - 1].active)
  3075.                         {
  3076.                             WorldGen.PlaceTile(num232, num233 - 1, 27, true, false, -1);
  3077.                         }
  3078.                         if (Main.tile[num232, num233].active)
  3079.                         {
  3080.                             break;
  3081.                         }
  3082.                         num233++;
  3083.                     }
  3084.                 }
  3085.                 num228++;
  3086.             }
  3087.             Main.statusText = "Planting trees...";
  3088.             int num234 = 0;
  3089.             while ((double)num234 < (double)Main.maxTilesX * 0.003)
  3090.             {
  3091.                 int num235 = WorldGen.genRand.Next(50, Main.maxTilesX - 50);
  3092.                 int num236 = WorldGen.genRand.Next(25, 50);
  3093.                 for (int num237 = num235 - num236; num237 < num235 + num236; num237++)
  3094.                 {
  3095.                     int num238 = 20;
  3096.                     while ((double)num238 < Main.worldSurface)
  3097.                     {
  3098.                         if (Main.tile[num237, num238].active)
  3099.                         {
  3100.                             if (Main.tile[num237, num238].type == 1)
  3101.                             {
  3102.                                 Main.tile[num237, num238].type = 2;
  3103.                             }
  3104.                             if (Main.tile[num237, num238 + 1].type == 1)
  3105.                             {
  3106.                                 Main.tile[num237, num238 + 1].type = 2;
  3107.                                 break;
  3108.                             }
  3109.                             break;
  3110.                         }
  3111.                         else
  3112.                         {
  3113.                             num238++;
  3114.                         }
  3115.                     }
  3116.                 }
  3117.                 for (int num239 = num235 - num236; num239 < num235 + num236; num239++)
  3118.                 {
  3119.                     int num240 = 20;
  3120.                     while ((double)num240 < Main.worldSurface)
  3121.                     {
  3122.                         WorldGen.GrowEpicTree(num239, num240);
  3123.                         num240++;
  3124.                     }
  3125.                 }
  3126.                 num234++;
  3127.             }
  3128.             WorldGen.AddTrees();
  3129.             Main.statusText = "Planting weeds...";
  3130.             WorldGen.AddPlants();
  3131.             for (int num241 = 0; num241 < Main.maxTilesX; num241++)
  3132.             {
  3133.                 for (int num242 = (int)Main.worldSurface; num242 < Main.maxTilesY; num242++)
  3134.                 {
  3135.                     if (Main.tile[num241, num242].active)
  3136.                     {
  3137.                         if (Main.tile[num241, num242].type == 70 && !Main.tile[num241, num242 - 1].active)
  3138.                         {
  3139.                             WorldGen.GrowShroom(num241, num242);
  3140.                             if (!Main.tile[num241, num242 - 1].active)
  3141.                             {
  3142.                                 WorldGen.PlaceTile(num241, num242 - 1, 71, true, false, -1);
  3143.                             }
  3144.                         }
  3145.                         if (Main.tile[num241, num242].type == 60 && !Main.tile[num241, num242 - 1].active)
  3146.                         {
  3147.                             WorldGen.PlaceTile(num241, num242 - 1, 61, true, false, -1);
  3148.                         }
  3149.                     }
  3150.                 }
  3151.             }
  3152.             Main.statusText = "Growing vines...";
  3153.             for (int num243 = 0; num243 < Main.maxTilesX; num243++)
  3154.             {
  3155.                 int num244 = 0;
  3156.                 int num245 = 0;
  3157.                 while ((double)num245 < Main.worldSurface)
  3158.                 {
  3159.                     if (num244 > 0 && !Main.tile[num243, num245].active)
  3160.                     {
  3161.                         Main.tile[num243, num245].active = true;
  3162.                         Main.tile[num243, num245].type = 52;
  3163.                         num244--;
  3164.                     }
  3165.                     else
  3166.                     {
  3167.                         num244 = 0;
  3168.                     }
  3169.                     if (Main.tile[num243, num245].active && Main.tile[num243, num245].type == 2 && WorldGen.genRand.Next(5) < 3)
  3170.                     {
  3171.                         num244 = WorldGen.genRand.Next(1, 10);
  3172.                     }
  3173.                     num245++;
  3174.                 }
  3175.                 num244 = 0;
  3176.                 for (int num246 = (int)Main.worldSurface; num246 < Main.maxTilesY; num246++)
  3177.                 {
  3178.                     if (num244 > 0 && !Main.tile[num243, num246].active)
  3179.                     {
  3180.                         Main.tile[num243, num246].active = true;
  3181.                         Main.tile[num243, num246].type = 62;
  3182.                         num244--;
  3183.                     }
  3184.                     else
  3185.                     {
  3186.                         num244 = 0;
  3187.                     }
  3188.                     if (Main.tile[num243, num246].active && Main.tile[num243, num246].type == 60 && WorldGen.genRand.Next(5) < 3)
  3189.                     {
  3190.                         num244 = WorldGen.genRand.Next(1, 10);
  3191.                     }
  3192.                 }
  3193.             }
  3194.             Main.statusText = "Planting flowers...";
  3195.             int num247 = 0;
  3196.             while ((double)num247 < (double)Main.maxTilesX * 0.005)
  3197.             {
  3198.                 int num248 = WorldGen.genRand.Next(20, Main.maxTilesX - 20);
  3199.                 int num249 = WorldGen.genRand.Next(5, 15);
  3200.                 int num250 = WorldGen.genRand.Next(15, 30);
  3201.                 int num251 = 1;
  3202.                 while ((double)num251 < Main.worldSurface - 1.0)
  3203.                 {
  3204.                     if (Main.tile[num248, num251].active)
  3205.                     {
  3206.                         for (int num252 = num248 - num249; num252 < num248 + num249; num252++)
  3207.                         {
  3208.                             for (int num253 = num251 - num250; num253 < num251 + num250; num253++)
  3209.                             {
  3210.                                 if (Main.tile[num252, num253].type == 3 || Main.tile[num252, num253].type == 24)
  3211.                                 {
  3212.                                     Main.tile[num252, num253].frameX = (short)(WorldGen.genRand.Next(6, 8) * 18);
  3213.                                 }
  3214.                             }
  3215.                         }
  3216.                         break;
  3217.                     }
  3218.                     num251++;
  3219.                 }
  3220.                 num247++;
  3221.             }
  3222.             Main.statusText = "Planting mushrooms...";
  3223.             int num254 = 0;
  3224.             while ((double)num254 < (double)Main.maxTilesX * 0.002)
  3225.             {
  3226.                 int num255 = WorldGen.genRand.Next(20, Main.maxTilesX - 20);
  3227.                 int num256 = WorldGen.genRand.Next(4, 10);
  3228.                 int num257 = WorldGen.genRand.Next(15, 30);
  3229.                 int num258 = 1;
  3230.                 while ((double)num258 < Main.worldSurface - 1.0)
  3231.                 {
  3232.                     if (Main.tile[num255, num258].active)
  3233.                     {
  3234.                         for (int num259 = num255 - num256; num259 < num255 + num256; num259++)
  3235.                         {
  3236.                             for (int num260 = num258 - num257; num260 < num258 + num257; num260++)
  3237.                             {
  3238.                                 if (Main.tile[num259, num260].type == 3 || Main.tile[num259, num260].type == 24)
  3239.                                 {
  3240.                                     Main.tile[num259, num260].frameX = 144;
  3241.                                 }
  3242.                             }
  3243.                         }
  3244.                         break;
  3245.                     }
  3246.                     num258++;
  3247.                 }
  3248.                 num254++;
  3249.             }
  3250.             WorldGen.gen = false;
  3251.         }
  3252.         public static void GrowEpicTree(int i, int y)
  3253.         {
  3254.             int num = y;
  3255.             while (Main.tile[i, num].type == 20)
  3256.             {
  3257.                 num++;
  3258.             }
  3259.             if (Main.tile[i, num].active && Main.tile[i, num].type == 2 && Main.tile[i, num - 1].wall == 0 && Main.tile[i, num - 1].liquid == 0 && Main.tile[i - 1, num].active && Main.tile[i - 1, num].type == 2 && Main.tile[i + 1, num].active && Main.tile[i + 1, num].type == 2 && WorldGen.EmptyTileCheck(i - 2, i + 2, num - 55, num - 1, 20))
  3260.             {
  3261.                 bool flag = false;
  3262.                 bool flag2 = false;
  3263.                 int num2 = WorldGen.genRand.Next(20, 30);
  3264.                 int num3;
  3265.                 for (int j = num - num2; j < num; j++)
  3266.                 {
  3267.                     Main.tile[i, j].frameNumber = (byte)WorldGen.genRand.Next(3);
  3268.                     Main.tile[i, j].active = true;
  3269.                     Main.tile[i, j].type = 5;
  3270.                     num3 = WorldGen.genRand.Next(3);
  3271.                     int num4 = WorldGen.genRand.Next(10);
  3272.                     if (j == num - 1 || j == num - num2)
  3273.                     {
  3274.                         num4 = 0;
  3275.                     }
  3276.                     while (((num4 == 5 || num4 == 7) && flag) || ((num4 == 6 || num4 == 7) && flag2))
  3277.                     {
  3278.                         num4 = WorldGen.genRand.Next(10);
  3279.                     }
  3280.                     flag = false;
  3281.                     flag2 = false;
  3282.                     if (num4 == 5 || num4 == 7)
  3283.                     {
  3284.                         flag = true;
  3285.                     }
  3286.                     if (num4 == 6 || num4 == 7)
  3287.                     {
  3288.                         flag2 = true;
  3289.                     }
  3290.                     if (num4 == 1)
  3291.                     {
  3292.                         if (num3 == 0)
  3293.                         {
  3294.                             Main.tile[i, j].frameX = 0;
  3295.                             Main.tile[i, j].frameY = 66;
  3296.                         }
  3297.                         if (num3 == 1)
  3298.                         {
  3299.                             Main.tile[i, j].frameX = 0;
  3300.                             Main.tile[i, j].frameY = 88;
  3301.                         }
  3302.                         if (num3 == 2)
  3303.                         {
  3304.                             Main.tile[i, j].frameX = 0;
  3305.                             Main.tile[i, j].frameY = 110;
  3306.                         }
  3307.                     }
  3308.                     else
  3309.                     {
  3310.                         if (num4 == 2)
  3311.                         {
  3312.                             if (num3 == 0)
  3313.                             {
  3314.                                 Main.tile[i, j].frameX = 22;
  3315.                                 Main.tile[i, j].frameY = 0;
  3316.                             }
  3317.                             if (num3 == 1)
  3318.                             {
  3319.                                 Main.tile[i, j].frameX = 22;
  3320.                                 Main.tile[i, j].frameY = 22;
  3321.                             }
  3322.                             if (num3 == 2)
  3323.                             {
  3324.                                 Main.tile[i, j].frameX = 22;
  3325.                                 Main.tile[i, j].frameY = 44;
  3326.                             }
  3327.                         }
  3328.                         else
  3329.                         {
  3330.                             if (num4 == 3)
  3331.                             {
  3332.                                 if (num3 == 0)
  3333.                                 {
  3334.                                     Main.tile[i, j].frameX = 44;
  3335.                                     Main.tile[i, j].frameY = 66;
  3336.                                 }
  3337.                                 if (num3 == 1)
  3338.                                 {
  3339.                                     Main.tile[i, j].frameX = 44;
  3340.                                     Main.tile[i, j].frameY = 88;
  3341.                                 }
  3342.                                 if (num3 == 2)
  3343.                                 {
  3344.                                     Main.tile[i, j].frameX = 44;
  3345.                                     Main.tile[i, j].frameY = 110;
  3346.                                 }
  3347.                             }
  3348.                             else
  3349.                             {
  3350.                                 if (num4 == 4)
  3351.                                 {
  3352.                                     if (num3 == 0)
  3353.                                     {
  3354.                                         Main.tile[i, j].frameX = 22;
  3355.                                         Main.tile[i, j].frameY = 66;
  3356.                                     }
  3357.                                     if (num3 == 1)
  3358.                                     {
  3359.                                         Main.tile[i, j].frameX = 22;
  3360.                                         Main.tile[i, j].frameY = 88;
  3361.                                     }
  3362.                                     if (num3 == 2)
  3363.                                     {
  3364.                                         Main.tile[i, j].frameX = 22;
  3365.                                         Main.tile[i, j].frameY = 110;
  3366.                                     }
  3367.                                 }
  3368.                                 else
  3369.                                 {
  3370.                                     if (num4 == 5)
  3371.                                     {
  3372.                                         if (num3 == 0)
  3373.                                         {
  3374.                                             Main.tile[i, j].frameX = 88;
  3375.                                             Main.tile[i, j].frameY = 0;
  3376.                                         }
  3377.                                         if (num3 == 1)
  3378.                                         {
  3379.                                             Main.tile[i, j].frameX = 88;
  3380.                                             Main.tile[i, j].frameY = 22;
  3381.                                         }
  3382.                                         if (num3 == 2)
  3383.                                         {
  3384.                                             Main.tile[i, j].frameX = 88;
  3385.                                             Main.tile[i, j].frameY = 44;
  3386.                                         }
  3387.                                     }
  3388.                                     else
  3389.                                     {
  3390.                                         if (num4 == 6)
  3391.                                         {
  3392.                                             if (num3 == 0)
  3393.                                             {
  3394.                                                 Main.tile[i, j].frameX = 66;
  3395.                                                 Main.tile[i, j].frameY = 66;
  3396.                                             }
  3397.                                             if (num3 == 1)
  3398.                                             {
  3399.                                                 Main.tile[i, j].frameX = 66;
  3400.                                                 Main.tile[i, j].frameY = 88;
  3401.                                             }
  3402.                                             if (num3 == 2)
  3403.                                             {
  3404.                                                 Main.tile[i, j].frameX = 66;
  3405.                                                 Main.tile[i, j].frameY = 110;
  3406.                                             }
  3407.                                         }
  3408.                                         else
  3409.                                         {
  3410.                                             if (num4 == 7)
  3411.                                             {
  3412.                                                 if (num3 == 0)
  3413.                                                 {
  3414.                                                     Main.tile[i, j].frameX = 110;
  3415.                                                     Main.tile[i, j].frameY = 66;
  3416.                                                 }
  3417.                                                 if (num3 == 1)
  3418.                                                 {
  3419.                                                     Main.tile[i, j].frameX = 110;
  3420.                                                     Main.tile[i, j].frameY = 88;
  3421.                                                 }
  3422.                                                 if (num3 == 2)
  3423.                                                 {
  3424.                                                     Main.tile[i, j].frameX = 110;
  3425.                                                     Main.tile[i, j].frameY = 110;
  3426.                                                 }
  3427.                                             }
  3428.                                             else
  3429.                                             {
  3430.                                                 if (num3 == 0)
  3431.                                                 {
  3432.                                                     Main.tile[i, j].frameX = 0;
  3433.                                                     Main.tile[i, j].frameY = 0;
  3434.                                                 }
  3435.                                                 if (num3 == 1)
  3436.                                                 {
  3437.                                                     Main.tile[i, j].frameX = 0;
  3438.                                                     Main.tile[i, j].frameY = 22;
  3439.                                                 }
  3440.                                                 if (num3 == 2)
  3441.                                                 {
  3442.                                                     Main.tile[i, j].frameX = 0;
  3443.                                                     Main.tile[i, j].frameY = 44;
  3444.                                                 }
  3445.                                             }
  3446.                                         }
  3447.                                     }
  3448.                                 }
  3449.                             }
  3450.                         }
  3451.                     }
  3452.                     if (num4 == 5 || num4 == 7)
  3453.                     {
  3454.                         Main.tile[i - 1, j].active = true;
  3455.                         Main.tile[i - 1, j].type = 5;
  3456.                         num3 = WorldGen.genRand.Next(3);
  3457.                         if (WorldGen.genRand.Next(3) < 2)
  3458.                         {
  3459.                             if (num3 == 0)
  3460.                             {
  3461.                                 Main.tile[i - 1, j].frameX = 44;
  3462.                                 Main.tile[i - 1, j].frameY = 198;
  3463.                             }
  3464.                             if (num3 == 1)
  3465.                             {
  3466.                                 Main.tile[i - 1, j].frameX = 44;
  3467.                                 Main.tile[i - 1, j].frameY = 220;
  3468.                             }
  3469.                             if (num3 == 2)
  3470.                             {
  3471.                                 Main.tile[i - 1, j].frameX = 44;
  3472.                                 Main.tile[i - 1, j].frameY = 242;
  3473.                             }
  3474.                         }
  3475.                         else
  3476.                         {
  3477.                             if (num3 == 0)
  3478.                             {
  3479.                                 Main.tile[i - 1, j].frameX = 66;
  3480.                                 Main.tile[i - 1, j].frameY = 0;
  3481.                             }
  3482.                             if (num3 == 1)
  3483.                             {
  3484.                                 Main.tile[i - 1, j].frameX = 66;
  3485.                                 Main.tile[i - 1, j].frameY = 22;
  3486.                             }
  3487.                             if (num3 == 2)
  3488.                             {
  3489.                                 Main.tile[i - 1, j].frameX = 66;
  3490.                                 Main.tile[i - 1, j].frameY = 44;
  3491.                             }
  3492.                         }
  3493.                     }
  3494.                     if (num4 == 6 || num4 == 7)
  3495.                     {
  3496.                         Main.tile[i + 1, j].active = true;
  3497.                         Main.tile[i + 1, j].type = 5;
  3498.                         num3 = WorldGen.genRand.Next(3);
  3499.                         if (WorldGen.genRand.Next(3) < 2)
  3500.                         {
  3501.                             if (num3 == 0)
  3502.                             {
  3503.                                 Main.tile[i + 1, j].frameX = 66;
  3504.                                 Main.tile[i + 1, j].frameY = 198;
  3505.                             }
  3506.                             if (num3 == 1)
  3507.                             {
  3508.                                 Main.tile[i + 1, j].frameX = 66;
  3509.                                 Main.tile[i + 1, j].frameY = 220;
  3510.                             }
  3511.                             if (num3 == 2)
  3512.                             {
  3513.                                 Main.tile[i + 1, j].frameX = 66;
  3514.                                 Main.tile[i + 1, j].frameY = 242;
  3515.                             }
  3516.                         }
  3517.                         else
  3518.                         {
  3519.                             if (num3 == 0)
  3520.                             {
  3521.                                 Main.tile[i + 1, j].frameX = 88;
  3522.                                 Main.tile[i + 1, j].frameY = 66;
  3523.                             }
  3524.                             if (num3 == 1)
  3525.                             {
  3526.                                 Main.tile[i + 1, j].frameX = 88;
  3527.                                 Main.tile[i + 1, j].frameY = 88;
  3528.                             }
  3529.                             if (num3 == 2)
  3530.                             {
  3531.                                 Main.tile[i + 1, j].frameX = 88;
  3532.                                 Main.tile[i + 1, j].frameY = 110;
  3533.                             }
  3534.                         }
  3535.                     }
  3536.                 }
  3537.                 int num5 = WorldGen.genRand.Next(3);
  3538.                 if (num5 == 0 || num5 == 1)
  3539.                 {
  3540.                     Main.tile[i + 1, num - 1].active = true;
  3541.                     Main.tile[i + 1, num - 1].type = 5;
  3542.                     num3 = WorldGen.genRand.Next(3);
  3543.                     if (num3 == 0)
  3544.                     {
  3545.                         Main.tile[i + 1, num - 1].frameX = 22;
  3546.                         Main.tile[i + 1, num - 1].frameY = 132;
  3547.                     }
  3548.                     if (num3 == 1)
  3549.                     {
  3550.                         Main.tile[i + 1, num - 1].frameX = 22;
  3551.                         Main.tile[i + 1, num - 1].frameY = 154;
  3552.                     }
  3553.                     if (num3 == 2)
  3554.                     {
  3555.                         Main.tile[i + 1, num - 1].frameX = 22;
  3556.                         Main.tile[i + 1, num - 1].frameY = 176;
  3557.                     }
  3558.                 }
  3559.                 if (num5 == 0 || num5 == 2)
  3560.                 {
  3561.                     Main.tile[i - 1, num - 1].active = true;
  3562.                     Main.tile[i - 1, num - 1].type = 5;
  3563.                     num3 = WorldGen.genRand.Next(3);
  3564.                     if (num3 == 0)
  3565.                     {
  3566.                         Main.tile[i - 1, num - 1].frameX = 44;
  3567.                         Main.tile[i - 1, num - 1].frameY = 132;
  3568.                     }
  3569.                     if (num3 == 1)
  3570.                     {
  3571.                         Main.tile[i - 1, num - 1].frameX = 44;
  3572.                         Main.tile[i - 1, num - 1].frameY = 154;
  3573.                     }
  3574.                     if (num3 == 2)
  3575.                     {
  3576.                         Main.tile[i - 1, num - 1].frameX = 44;
  3577.                         Main.tile[i - 1, num - 1].frameY = 176;
  3578.                     }
  3579.                 }
  3580.                 num3 = WorldGen.genRand.Next(3);
  3581.                 if (num5 == 0)
  3582.                 {
  3583.                     if (num3 == 0)
  3584.                     {
  3585.                         Main.tile[i, num - 1].frameX = 88;
  3586.                         Main.tile[i, num - 1].frameY = 132;
  3587.                     }
  3588.                     if (num3 == 1)
  3589.                     {
  3590.                         Main.tile[i, num - 1].frameX = 88;
  3591.                         Main.tile[i, num - 1].frameY = 154;
  3592.                     }
  3593.                     if (num3 == 2)
  3594.                     {
  3595.                         Main.tile[i, num - 1].frameX = 88;
  3596.                         Main.tile[i, num - 1].frameY = 176;
  3597.                     }
  3598.                 }
  3599.                 else
  3600.                 {
  3601.                     if (num5 == 1)
  3602.                     {
  3603.                         if (num3 == 0)
  3604.                         {
  3605.                             Main.tile[i, num - 1].frameX = 0;
  3606.                             Main.tile[i, num - 1].frameY = 132;
  3607.                         }
  3608.                         if (num3 == 1)
  3609.                         {
  3610.                             Main.tile[i, num - 1].frameX = 0;
  3611.                             Main.tile[i, num - 1].frameY = 154;
  3612.                         }
  3613.                         if (num3 == 2)
  3614.                         {
  3615.                             Main.tile[i, num - 1].frameX = 0;
  3616.                             Main.tile[i, num - 1].frameY = 176;
  3617.                         }
  3618.                     }
  3619.                     else
  3620.                     {
  3621.                         if (num5 == 2)
  3622.                         {
  3623.                             if (num3 == 0)
  3624.                             {
  3625.                                 Main.tile[i, num - 1].frameX = 66;
  3626.                                 Main.tile[i, num - 1].frameY = 132;
  3627.                             }
  3628.                             if (num3 == 1)
  3629.                             {
  3630.                                 Main.tile[i, num - 1].frameX = 66;
  3631.                                 Main.tile[i, num - 1].frameY = 154;
  3632.                             }
  3633.                             if (num3 == 2)
  3634.                             {
  3635.                                 Main.tile[i, num - 1].frameX = 66;
  3636.                                 Main.tile[i, num - 1].frameY = 176;
  3637.                             }
  3638.                         }
  3639.                     }
  3640.                 }
  3641.                 if (WorldGen.genRand.Next(3) < 2)
  3642.                 {
  3643.                     num3 = WorldGen.genRand.Next(3);
  3644.                     if (num3 == 0)
  3645.                     {
  3646.                         Main.tile[i, num - num2].frameX = 22;
  3647.                         Main.tile[i, num - num2].frameY = 198;
  3648.                     }
  3649.                     if (num3 == 1)
  3650.                     {
  3651.                         Main.tile[i, num - num2].frameX = 22;
  3652.                         Main.tile[i, num - num2].frameY = 220;
  3653.                     }
  3654.                     if (num3 == 2)
  3655.                     {
  3656.                         Main.tile[i, num - num2].frameX = 22;
  3657.                         Main.tile[i, num - num2].frameY = 242;
  3658.                     }
  3659.                 }
  3660.                 else
  3661.                 {
  3662.                     num3 = WorldGen.genRand.Next(3);
  3663.                     if (num3 == 0)
  3664.                     {
  3665.                         Main.tile[i, num - num2].frameX = 0;
  3666.                         Main.tile[i, num - num2].frameY = 198;
  3667.                     }
  3668.                     if (num3 == 1)
  3669.                     {
  3670.                         Main.tile[i, num - num2].frameX = 0;
  3671.                         Main.tile[i, num - num2].frameY = 220;
  3672.                     }
  3673.                     if (num3 == 2)
  3674.                     {
  3675.                         Main.tile[i, num - num2].frameX = 0;
  3676.                         Main.tile[i, num - num2].frameY = 242;
  3677.                     }
  3678.                 }
  3679.                 WorldGen.RangeFrame(i - 2, num - num2 - 1, i + 2, num + 1);
  3680.                 if (Main.netMode == 2)
  3681.                 {
  3682.                     NetMessage.SendTileSquare(-1, i, (int)((double)num - (double)num2 * 0.5), num2 + 1);
  3683.                 }
  3684.             }
  3685.         }
  3686.         public static void GrowTree(int i, int y)
  3687.         {
  3688.             int num = y;
  3689.             while (Main.tile[i, num].type == 20)
  3690.             {
  3691.                 num++;
  3692.             }
  3693.             if (Main.tile[i - 1, num - 1].liquid != 0 || Main.tile[i - 1, num - 1].liquid != 0 || Main.tile[i + 1, num - 1].liquid != 0)
  3694.             {
  3695.                 return;
  3696.             }
  3697.             if (Main.tile[i, num].active && Main.tile[i, num].type == 2 && Main.tile[i, num - 1].wall == 0 && Main.tile[i - 1, num].active && Main.tile[i - 1, num].type == 2 && Main.tile[i + 1, num].active && Main.tile[i + 1, num].type == 2 && WorldGen.EmptyTileCheck(i - 2, i + 2, num - 14, num - 1, 20))
  3698.             {
  3699.                 bool flag = false;
  3700.                 bool flag2 = false;
  3701.                 int num2 = WorldGen.genRand.Next(5, 15);
  3702.                 int num3;
  3703.                 for (int j = num - num2; j < num; j++)
  3704.                 {
  3705.                     Main.tile[i, j].frameNumber = (byte)WorldGen.genRand.Next(3);
  3706.                     Main.tile[i, j].active = true;
  3707.                     Main.tile[i, j].type = 5;
  3708.                     num3 = WorldGen.genRand.Next(3);
  3709.                     int num4 = WorldGen.genRand.Next(10);
  3710.                     if (j == num - 1 || j == num - num2)
  3711.                     {
  3712.                         num4 = 0;
  3713.                     }
  3714.                     while (((num4 == 5 || num4 == 7) && flag) || ((num4 == 6 || num4 == 7) && flag2))
  3715.                     {
  3716.                         num4 = WorldGen.genRand.Next(10);
  3717.                     }
  3718.                     flag = false;
  3719.                     flag2 = false;
  3720.                     if (num4 == 5 || num4 == 7)
  3721.                     {
  3722.                         flag = true;
  3723.                     }
  3724.                     if (num4 == 6 || num4 == 7)
  3725.                     {
  3726.                         flag2 = true;
  3727.                     }
  3728.                     if (num4 == 1)
  3729.                     {
  3730.                         if (num3 == 0)
  3731.                         {
  3732.                             Main.tile[i, j].frameX = 0;
  3733.                             Main.tile[i, j].frameY = 66;
  3734.                         }
  3735.                         if (num3 == 1)
  3736.                         {
  3737.                             Main.tile[i, j].frameX = 0;
  3738.                             Main.tile[i, j].frameY = 88;
  3739.                         }
  3740.                         if (num3 == 2)
  3741.                         {
  3742.                             Main.tile[i, j].frameX = 0;
  3743.                             Main.tile[i, j].frameY = 110;
  3744.                         }
  3745.                     }
  3746.                     else
  3747.                     {
  3748.                         if (num4 == 2)
  3749.                         {
  3750.                             if (num3 == 0)
  3751.                             {
  3752.                                 Main.tile[i, j].frameX = 22;
  3753.                                 Main.tile[i, j].frameY = 0;
  3754.                             }
  3755.                             if (num3 == 1)
  3756.                             {
  3757.                                 Main.tile[i, j].frameX = 22;
  3758.                                 Main.tile[i, j].frameY = 22;
  3759.                             }
  3760.                             if (num3 == 2)
  3761.                             {
  3762.                                 Main.tile[i, j].frameX = 22;
  3763.                                 Main.tile[i, j].frameY = 44;
  3764.                             }
  3765.                         }
  3766.                         else
  3767.                         {
  3768.                             if (num4 == 3)
  3769.                             {
  3770.                                 if (num3 == 0)
  3771.                                 {
  3772.                                     Main.tile[i, j].frameX = 44;
  3773.                                     Main.tile[i, j].frameY = 66;
  3774.                                 }
  3775.                                 if (num3 == 1)
  3776.                                 {
  3777.                                     Main.tile[i, j].frameX = 44;
  3778.                                     Main.tile[i, j].frameY = 88;
  3779.                                 }
  3780.                                 if (num3 == 2)
  3781.                                 {
  3782.                                     Main.tile[i, j].frameX = 44;
  3783.                                     Main.tile[i, j].frameY = 110;
  3784.                                 }
  3785.                             }
  3786.                             else
  3787.                             {
  3788.                                 if (num4 == 4)
  3789.                                 {
  3790.                                     if (num3 == 0)
  3791.                                     {
  3792.                                         Main.tile[i, j].frameX = 22;
  3793.                                         Main.tile[i, j].frameY = 66;
  3794.                                     }
  3795.                                     if (num3 == 1)
  3796.                                     {
  3797.                                         Main.tile[i, j].frameX = 22;
  3798.                                         Main.tile[i, j].frameY = 88;
  3799.                                     }
  3800.                                     if (num3 == 2)
  3801.                                     {
  3802.                                         Main.tile[i, j].frameX = 22;
  3803.                                         Main.tile[i, j].frameY = 110;
  3804.                                     }
  3805.                                 }
  3806.                                 else
  3807.                                 {
  3808.                                     if (num4 == 5)
  3809.                                     {
  3810.                                         if (num3 == 0)
  3811.                                         {
  3812.                                             Main.tile[i, j].frameX = 88;
  3813.                                             Main.tile[i, j].frameY = 0;
  3814.                                         }
  3815.                                         if (num3 == 1)
  3816.                                         {
  3817.                                             Main.tile[i, j].frameX = 88;
  3818.                                             Main.tile[i, j].frameY = 22;
  3819.                                         }
  3820.                                         if (num3 == 2)
  3821.                                         {
  3822.                                             Main.tile[i, j].frameX = 88;
  3823.                                             Main.tile[i, j].frameY = 44;
  3824.                                         }
  3825.                                     }
  3826.                                     else
  3827.                                     {
  3828.                                         if (num4 == 6)
  3829.                                         {
  3830.                                             if (num3 == 0)
  3831.                                             {
  3832.                                                 Main.tile[i, j].frameX = 66;
  3833.                                                 Main.tile[i, j].frameY = 66;
  3834.                                             }
  3835.                                             if (num3 == 1)
  3836.                                             {
  3837.                                                 Main.tile[i, j].frameX = 66;
  3838.                                                 Main.tile[i, j].frameY = 88;
  3839.                                             }
  3840.                                             if (num3 == 2)
  3841.                                             {
  3842.                                                 Main.tile[i, j].frameX = 66;
  3843.                                                 Main.tile[i, j].frameY = 110;
  3844.                                             }
  3845.                                         }
  3846.                                         else
  3847.                                         {
  3848.                                             if (num4 == 7)
  3849.                                             {
  3850.                                                 if (num3 == 0)
  3851.                                                 {
  3852.                                                     Main.tile[i, j].frameX = 110;
  3853.                                                     Main.tile[i, j].frameY = 66;
  3854.                                                 }
  3855.                                                 if (num3 == 1)
  3856.                                                 {
  3857.                                                     Main.tile[i, j].frameX = 110;
  3858.                                                     Main.tile[i, j].frameY = 88;
  3859.                                                 }
  3860.                                                 if (num3 == 2)
  3861.                                                 {
  3862.                                                     Main.tile[i, j].frameX = 110;
  3863.                                                     Main.tile[i, j].frameY = 110;
  3864.                                                 }
  3865.                                             }
  3866.                                             else
  3867.                                             {
  3868.                                                 if (num3 == 0)
  3869.                                                 {
  3870.                                                     Main.tile[i, j].frameX = 0;
  3871.                                                     Main.tile[i, j].frameY = 0;
  3872.                                                 }
  3873.                                                 if (num3 == 1)
  3874.                                                 {
  3875.                                                     Main.tile[i, j].frameX = 0;
  3876.                                                     Main.tile[i, j].frameY = 22;
  3877.                                                 }
  3878.                                                 if (num3 == 2)
  3879.                                                 {
  3880.                                                     Main.tile[i, j].frameX = 0;
  3881.                                                     Main.tile[i, j].frameY = 44;
  3882.                                                 }
  3883.                                             }
  3884.                                         }
  3885.                                     }
  3886.                                 }
  3887.                             }
  3888.                         }
  3889.                     }
  3890.                     if (num4 == 5 || num4 == 7)
  3891.                     {
  3892.                         Main.tile[i - 1, j].active = true;
  3893.                         Main.tile[i - 1, j].type = 5;
  3894.                         num3 = WorldGen.genRand.Next(3);
  3895.                         if (WorldGen.genRand.Next(3) < 2)
  3896.                         {
  3897.                             if (num3 == 0)
  3898.                             {
  3899.                                 Main.tile[i - 1, j].frameX = 44;
  3900.                                 Main.tile[i - 1, j].frameY = 198;
  3901.                             }
  3902.                             if (num3 == 1)
  3903.                             {
  3904.                                 Main.tile[i - 1, j].frameX = 44;
  3905.                                 Main.tile[i - 1, j].frameY = 220;
  3906.                             }
  3907.                             if (num3 == 2)
  3908.                             {
  3909.                                 Main.tile[i - 1, j].frameX = 44;
  3910.                                 Main.tile[i - 1, j].frameY = 242;
  3911.                             }
  3912.                         }
  3913.                         else
  3914.                         {
  3915.                             if (num3 == 0)
  3916.                             {
  3917.                                 Main.tile[i - 1, j].frameX = 66;
  3918.                                 Main.tile[i - 1, j].frameY = 0;
  3919.                             }
  3920.                             if (num3 == 1)
  3921.                             {
  3922.                                 Main.tile[i - 1, j].frameX = 66;
  3923.                                 Main.tile[i - 1, j].frameY = 22;
  3924.                             }
  3925.                             if (num3 == 2)
  3926.                             {
  3927.                                 Main.tile[i - 1, j].frameX = 66;
  3928.                                 Main.tile[i - 1, j].frameY = 44;
  3929.                             }
  3930.                         }
  3931.                     }
  3932.                     if (num4 == 6 || num4 == 7)
  3933.                     {
  3934.                         Main.tile[i + 1, j].active = true;
  3935.                         Main.tile[i + 1, j].type = 5;
  3936.                         num3 = WorldGen.genRand.Next(3);
  3937.                         if (WorldGen.genRand.Next(3) < 2)
  3938.                         {
  3939.                             if (num3 == 0)
  3940.                             {
  3941.                                 Main.tile[i + 1, j].frameX = 66;
  3942.                                 Main.tile[i + 1, j].frameY = 198;
  3943.                             }
  3944.                             if (num3 == 1)
  3945.                             {
  3946.                                 Main.tile[i + 1, j].frameX = 66;
  3947.                                 Main.tile[i + 1, j].frameY = 220;
  3948.                             }
  3949.                             if (num3 == 2)
  3950.                             {
  3951.                                 Main.tile[i + 1, j].frameX = 66;
  3952.                                 Main.tile[i + 1, j].frameY = 242;
  3953.                             }
  3954.                         }
  3955.                         else
  3956.                         {
  3957.                             if (num3 == 0)
  3958.                             {
  3959.                                 Main.tile[i + 1, j].frameX = 88;
  3960.                                 Main.tile[i + 1, j].frameY = 66;
  3961.                             }
  3962.                             if (num3 == 1)
  3963.                             {
  3964.                                 Main.tile[i + 1, j].frameX = 88;
  3965.                                 Main.tile[i + 1, j].frameY = 88;
  3966.                             }
  3967.                             if (num3 == 2)
  3968.                             {
  3969.                                 Main.tile[i + 1, j].frameX = 88;
  3970.                                 Main.tile[i + 1, j].frameY = 110;
  3971.                             }
  3972.                         }
  3973.                     }
  3974.                 }
  3975.                 int num5 = WorldGen.genRand.Next(3);
  3976.                 if (num5 == 0 || num5 == 1)
  3977.                 {
  3978.                     Main.tile[i + 1, num - 1].active = true;
  3979.                     Main.tile[i + 1, num - 1].type = 5;
  3980.                     num3 = WorldGen.genRand.Next(3);
  3981.                     if (num3 == 0)
  3982.                     {
  3983.                         Main.tile[i + 1, num - 1].frameX = 22;
  3984.                         Main.tile[i + 1, num - 1].frameY = 132;
  3985.                     }
  3986.                     if (num3 == 1)
  3987.                     {
  3988.                         Main.tile[i + 1, num - 1].frameX = 22;
  3989.                         Main.tile[i + 1, num - 1].frameY = 154;
  3990.                     }
  3991.                     if (num3 == 2)
  3992.                     {
  3993.                         Main.tile[i + 1, num - 1].frameX = 22;
  3994.                         Main.tile[i + 1, num - 1].frameY = 176;
  3995.                     }
  3996.                 }
  3997.                 if (num5 == 0 || num5 == 2)
  3998.                 {
  3999.                     Main.tile[i - 1, num - 1].active = true;
  4000.                     Main.tile[i - 1, num - 1].type = 5;
  4001.                     num3 = WorldGen.genRand.Next(3);
  4002.                     if (num3 == 0)
  4003.                     {
  4004.                         Main.tile[i - 1, num - 1].frameX = 44;
  4005.                         Main.tile[i - 1, num - 1].frameY = 132;
  4006.                     }
  4007.                     if (num3 == 1)
  4008.                     {
  4009.                         Main.tile[i - 1, num - 1].frameX = 44;
  4010.                         Main.tile[i - 1, num - 1].frameY = 154;
  4011.                     }
  4012.                     if (num3 == 2)
  4013.                     {
  4014.                         Main.tile[i - 1, num - 1].frameX = 44;
  4015.                         Main.tile[i - 1, num - 1].frameY = 176;
  4016.                     }
  4017.                 }
  4018.                 num3 = WorldGen.genRand.Next(3);
  4019.                 if (num5 == 0)
  4020.                 {
  4021.                     if (num3 == 0)
  4022.                     {
  4023.                         Main.tile[i, num - 1].frameX = 88;
  4024.                         Main.tile[i, num - 1].frameY = 132;
  4025.                     }
  4026.                     if (num3 == 1)
  4027.                     {
  4028.                         Main.tile[i, num - 1].frameX = 88;
  4029.                         Main.tile[i, num - 1].frameY = 154;
  4030.                     }
  4031.                     if (num3 == 2)
  4032.                     {
  4033.                         Main.tile[i, num - 1].frameX = 88;
  4034.                         Main.tile[i, num - 1].frameY = 176;
  4035.                     }
  4036.                 }
  4037.                 else
  4038.                 {
  4039.                     if (num5 == 1)
  4040.                     {
  4041.                         if (num3 == 0)
  4042.                         {
  4043.                             Main.tile[i, num - 1].frameX = 0;
  4044.                             Main.tile[i, num - 1].frameY = 132;
  4045.                         }
  4046.                         if (num3 == 1)
  4047.                         {
  4048.                             Main.tile[i, num - 1].frameX = 0;
  4049.                             Main.tile[i, num - 1].frameY = 154;
  4050.                         }
  4051.                         if (num3 == 2)
  4052.                         {
  4053.                             Main.tile[i, num - 1].frameX = 0;
  4054.                             Main.tile[i, num - 1].frameY = 176;
  4055.                         }
  4056.                     }
  4057.                     else
  4058.                     {
  4059.                         if (num5 == 2)
  4060.                         {
  4061.                             if (num3 == 0)
  4062.                             {
  4063.                                 Main.tile[i, num - 1].frameX = 66;
  4064.                                 Main.tile[i, num - 1].frameY = 132;
  4065.                             }
  4066.                             if (num3 == 1)
  4067.                             {
  4068.                                 Main.tile[i, num - 1].frameX = 66;
  4069.                                 Main.tile[i, num - 1].frameY = 154;
  4070.                             }
  4071.                             if (num3 == 2)
  4072.                             {
  4073.                                 Main.tile[i, num - 1].frameX = 66;
  4074.                                 Main.tile[i, num - 1].frameY = 176;
  4075.                             }
  4076.                         }
  4077.                     }
  4078.                 }
  4079.                 if (WorldGen.genRand.Next(3) < 2)
  4080.                 {
  4081.                     num3 = WorldGen.genRand.Next(3);
  4082.                     if (num3 == 0)
  4083.                     {
  4084.                         Main.tile[i, num - num2].frameX = 22;
  4085.                         Main.tile[i, num - num2].frameY = 198;
  4086.                     }
  4087.                     if (num3 == 1)
  4088.                     {
  4089.                         Main.tile[i, num - num2].frameX = 22;
  4090.                         Main.tile[i, num - num2].frameY = 220;
  4091.                     }
  4092.                     if (num3 == 2)
  4093.                     {
  4094.                         Main.tile[i, num - num2].frameX = 22;
  4095.                         Main.tile[i, num - num2].frameY = 242;
  4096.                     }
  4097.                 }
  4098.                 else
  4099.                 {
  4100.                     num3 = WorldGen.genRand.Next(3);
  4101.                     if (num3 == 0)
  4102.                     {
  4103.                         Main.tile[i, num - num2].frameX = 0;
  4104.                         Main.tile[i, num - num2].frameY = 198;
  4105.                     }
  4106.                     if (num3 == 1)
  4107.                     {
  4108.                         Main.tile[i, num - num2].frameX = 0;
  4109.                         Main.tile[i, num - num2].frameY = 220;
  4110.                     }
  4111.                     if (num3 == 2)
  4112.                     {
  4113.                         Main.tile[i, num - num2].frameX = 0;
  4114.                         Main.tile[i, num - num2].frameY = 242;
  4115.                     }
  4116.                 }
  4117.                 WorldGen.RangeFrame(i - 2, num - num2 - 1, i + 2, num + 1);
  4118.                 if (Main.netMode == 2)
  4119.                 {
  4120.                     NetMessage.SendTileSquare(-1, i, (int)((double)num - (double)num2 * 0.5), num2 + 1);
  4121.                 }
  4122.             }
  4123.         }
  4124.         public static void GrowShroom(int i, int y)
  4125.         {
  4126.             if (Main.tile[i - 1, y - 1].lava || Main.tile[i - 1, y - 1].lava || Main.tile[i + 1, y - 1].lava)
  4127.             {
  4128.                 return;
  4129.             }
  4130.             if (Main.tile[i, y].active && Main.tile[i, y].type == 70 && Main.tile[i, y - 1].wall == 0 && Main.tile[i - 1, y].active && Main.tile[i - 1, y].type == 70 && Main.tile[i + 1, y].active && Main.tile[i + 1, y].type == 70 && WorldGen.EmptyTileCheck(i - 2, i + 2, y - 13, y - 1, 71))
  4131.             {
  4132.                 int num = WorldGen.genRand.Next(4, 11);
  4133.                 int num2;
  4134.                 for (int j = y - num; j < y; j++)
  4135.                 {
  4136.                     Main.tile[i, j].frameNumber = (byte)WorldGen.genRand.Next(3);
  4137.                     Main.tile[i, j].active = true;
  4138.                     Main.tile[i, j].type = 72;
  4139.                     num2 = WorldGen.genRand.Next(3);
  4140.                     if (num2 == 0)
  4141.                     {
  4142.                         Main.tile[i, j].frameX = 0;
  4143.                         Main.tile[i, j].frameY = 0;
  4144.                     }
  4145.                     if (num2 == 1)
  4146.                     {
  4147.                         Main.tile[i, j].frameX = 0;
  4148.                         Main.tile[i, j].frameY = 18;
  4149.                     }
  4150.                     if (num2 == 2)
  4151.                     {
  4152.                         Main.tile[i, j].frameX = 0;
  4153.                         Main.tile[i, j].frameY = 36;
  4154.                     }
  4155.                 }
  4156.                 num2 = WorldGen.genRand.Next(3);
  4157.                 if (num2 == 0)
  4158.                 {
  4159.                     Main.tile[i, y - num].frameX = 36;
  4160.                     Main.tile[i, y - num].frameY = 0;
  4161.                 }
  4162.                 if (num2 == 1)
  4163.                 {
  4164.                     Main.tile[i, y - num].frameX = 36;
  4165.                     Main.tile[i, y - num].frameY = 18;
  4166.                 }
  4167.                 if (num2 == 2)
  4168.                 {
  4169.                     Main.tile[i, y - num].frameX = 36;
  4170.                     Main.tile[i, y - num].frameY = 36;
  4171.                 }
  4172.                 WorldGen.RangeFrame(i - 2, y - num - 1, i + 2, y + 1);
  4173.                 if (Main.netMode == 2)
  4174.                 {
  4175.                     NetMessage.SendTileSquare(-1, i, (int)((double)y - (double)num * 0.5), num + 1);
  4176.                 }
  4177.             }
  4178.         }
  4179.         public static void AddTrees()
  4180.         {
  4181.             for (int i = 1; i < Main.maxTilesX - 1; i++)
  4182.             {
  4183.                 int num = 20;
  4184.                 while ((double)num < Main.worldSurface)
  4185.                 {
  4186.                     WorldGen.GrowTree(i, num);
  4187.                     num++;
  4188.                 }
  4189.             }
  4190.         }
  4191.         public static bool EmptyTileCheck(int startX, int endX, int startY, int endY, int ignoreStyle = -1)
  4192.         {
  4193.             if (startX < 0)
  4194.             {
  4195.                 return false;
  4196.             }
  4197.             if (endX >= Main.maxTilesX)
  4198.             {
  4199.                 return false;
  4200.             }
  4201.             if (startY < 0)
  4202.             {
  4203.                 return false;
  4204.             }
  4205.             if (endY >= Main.maxTilesY)
  4206.             {
  4207.                 return false;
  4208.             }
  4209.             for (int i = startX; i < endX + 1; i++)
  4210.             {
  4211.                 for (int j = startY; j < endY + 1; j++)
  4212.                 {
  4213.                     if (Main.tile[i, j].active)
  4214.                     {
  4215.                         if (ignoreStyle == -1)
  4216.                         {
  4217.                             return false;
  4218.                         }
  4219.                         if (ignoreStyle == 11 && Main.tile[i, j].type != 11)
  4220.                         {
  4221.                             return false;
  4222.                         }
  4223.                         if (ignoreStyle == 20 && Main.tile[i, j].type != 20 && Main.tile[i, j].type != 3)
  4224.                         {
  4225.                             return false;
  4226.                         }
  4227.                         if (ignoreStyle == 71 && Main.tile[i, j].type != 71)
  4228.                         {
  4229.                             return false;
  4230.                         }
  4231.                     }
  4232.                 }
  4233.             }
  4234.             return true;
  4235.         }
  4236.         public static bool PlaceDoor(int i, int j, int type)
  4237.         {
  4238.             bool result;
  4239.             try
  4240.             {
  4241.                 if (Main.tile[i, j - 2].active && Main.tileSolid[(int)Main.tile[i, j - 2].type] && Main.tile[i, j + 2].active && Main.tileSolid[(int)Main.tile[i, j + 2].type])
  4242.                 {
  4243.                     Main.tile[i, j - 1].active = true;
  4244.                     Main.tile[i, j - 1].type = 10;
  4245.                     Main.tile[i, j - 1].frameY = 0;
  4246.                     Main.tile[i, j - 1].frameX = (short)(WorldGen.genRand.Next(3) * 18);
  4247.                     Main.tile[i, j].active = true;
  4248.                     Main.tile[i, j].type = 10;
  4249.                     Main.tile[i, j].frameY = 18;
  4250.                     Main.tile[i, j].frameX = (short)(WorldGen.genRand.Next(3) * 18);
  4251.                     Main.tile[i, j + 1].active = true;
  4252.                     Main.tile[i, j + 1].type = 10;
  4253.                     Main.tile[i, j + 1].frameY = 36;
  4254.                     Main.tile[i, j + 1].frameX = (short)(WorldGen.genRand.Next(3) * 18);
  4255.                     result = true;
  4256.                 }
  4257.                 else
  4258.                 {
  4259.                     result = false;
  4260.                 }
  4261.             }
  4262.             catch
  4263.             {
  4264.                 result = false;
  4265.             }
  4266.             return result;
  4267.         }
  4268.         public static bool CloseDoor(int i, int j, bool forced = false)
  4269.         {
  4270.             int num = 0;
  4271.             int num2 = i;
  4272.             int num3 = j;
  4273.             if (Main.tile[i, j] == null)
  4274.             {
  4275.                 Main.tile[i, j] = new Tile();
  4276.             }
  4277.             int frameX = (int)Main.tile[i, j].frameX;
  4278.             int frameY = (int)Main.tile[i, j].frameY;
  4279.             if (frameX == 0)
  4280.             {
  4281.                 num2 = i;
  4282.                 num = 1;
  4283.             }
  4284.             else
  4285.             {
  4286.                 if (frameX == 18)
  4287.                 {
  4288.                     num2 = i - 1;
  4289.                     num = 1;
  4290.                 }
  4291.                 else
  4292.                 {
  4293.                     if (frameX == 36)
  4294.                     {
  4295.                         num2 = i + 1;
  4296.                         num = -1;
  4297.                     }
  4298.                     else
  4299.                     {
  4300.                         if (frameX == 54)
  4301.                         {
  4302.                             num2 = i;
  4303.                             num = -1;
  4304.                         }
  4305.                     }
  4306.                 }
  4307.             }
  4308.             if (frameY == 0)
  4309.             {
  4310.                 num3 = j;
  4311.             }
  4312.             else
  4313.             {
  4314.                 if (frameY == 18)
  4315.                 {
  4316.                     num3 = j - 1;
  4317.                 }
  4318.                 else
  4319.                 {
  4320.                     if (frameY == 36)
  4321.                     {
  4322.                         num3 = j - 2;
  4323.                     }
  4324.                 }
  4325.             }
  4326.             int num4 = num2;
  4327.             if (num == -1)
  4328.             {
  4329.                 num4 = num2 - 1;
  4330.             }
  4331.             if (!forced)
  4332.             {
  4333.                 for (int k = num3; k < num3 + 3; k++)
  4334.                 {
  4335.                     if (!Collision.EmptyTile(num2, k, true))
  4336.                     {
  4337.                         return false;
  4338.                     }
  4339.                 }
  4340.             }
  4341.             for (int l = num4; l < num4 + 2; l++)
  4342.             {
  4343.                 for (int m = num3; m < num3 + 3; m++)
  4344.                 {
  4345.                     if (l == num2)
  4346.                     {
  4347.                         if (Main.tile[l, m] == null)
  4348.                         {
  4349.                             Main.tile[l, m] = new Tile();
  4350.                         }
  4351.                         Main.tile[l, m].type = 10;
  4352.                         Main.tile[l, m].frameX = (short)(WorldGen.genRand.Next(3) * 18);
  4353.                     }
  4354.                     else
  4355.                     {
  4356.                         if (Main.tile[l, m] == null)
  4357.                         {
  4358.                             Main.tile[l, m] = new Tile();
  4359.                         }
  4360.                         Main.tile[l, m].active = false;
  4361.                     }
  4362.                 }
  4363.             }
  4364.             for (int n = num2 - 1; n <= num2 + 1; n++)
  4365.             {
  4366.                 for (int num5 = num3 - 1; num5 <= num3 + 2; num5++)
  4367.                 {
  4368.                     WorldGen.TileFrame(n, num5, false, false);
  4369.                 }
  4370.             }
  4371.             Main.PlaySound(9, i * 16, j * 16, 1);
  4372.             return true;
  4373.         }
  4374.         public static bool AddLifeCrystal(int i, int j)
  4375.         {
  4376.             int k = j;
  4377.             while (k < Main.maxTilesY)
  4378.             {
  4379.                 if (Main.tile[i, k].active && Main.tileSolid[(int)Main.tile[i, k].type])
  4380.                 {
  4381.                     int num = k - 1;
  4382.                     if (Main.tile[i, num - 1].lava || Main.tile[i - 1, num - 1].lava)
  4383.                     {
  4384.                         return false;
  4385.                     }
  4386.                     if (!WorldGen.EmptyTileCheck(i - 1, i, num - 1, num, -1))
  4387.                     {
  4388.                         return false;
  4389.                     }
  4390.                     Main.tile[i - 1, num - 1].active = true;
  4391.                     Main.tile[i - 1, num - 1].type = 12;
  4392.                     Main.tile[i - 1, num - 1].frameX = 0;
  4393.                     Main.tile[i - 1, num - 1].frameY = 0;
  4394.                     Main.tile[i, num - 1].active = true;
  4395.                     Main.tile[i, num - 1].type = 12;
  4396.                     Main.tile[i, num - 1].frameX = 18;
  4397.                     Main.tile[i, num - 1].frameY = 0;
  4398.                     Main.tile[i - 1, num].active = true;
  4399.                     Main.tile[i - 1, num].type = 12;
  4400.                     Main.tile[i - 1, num].frameX = 0;
  4401.                     Main.tile[i - 1, num].frameY = 18;
  4402.                     Main.tile[i, num].active = true;
  4403.                     Main.tile[i, num].type = 12;
  4404.                     Main.tile[i, num].frameX = 18;
  4405.                     Main.tile[i, num].frameY = 18;
  4406.                     return true;
  4407.                 }
  4408.                 else
  4409.                 {
  4410.                     k++;
  4411.                 }
  4412.             }
  4413.             return false;
  4414.         }
  4415.         public static void AddShadowOrb(int x, int y)
  4416.         {
  4417.             if (x < 10 || x > Main.maxTilesX - 10)
  4418.             {
  4419.                 return;
  4420.             }
  4421.             if (y < 10 || y > Main.maxTilesY - 10)
  4422.             {
  4423.                 return;
  4424.             }
  4425.             Main.tile[x - 1, y - 1].active = true;
  4426.             Main.tile[x - 1, y - 1].type = 31;
  4427.             Main.tile[x - 1, y - 1].frameX = 0;
  4428.             Main.tile[x - 1, y - 1].frameY = 0;
  4429.             Main.tile[x, y - 1].active = true;
  4430.             Main.tile[x, y - 1].type = 31;
  4431.             Main.tile[x, y - 1].frameX = 18;
  4432.             Main.tile[x, y - 1].frameY = 0;
  4433.             Main.tile[x - 1, y].active = true;
  4434.             Main.tile[x - 1, y].type = 31;
  4435.             Main.tile[x - 1, y].frameX = 0;
  4436.             Main.tile[x - 1, y].frameY = 18;
  4437.             Main.tile[x, y].active = true;
  4438.             Main.tile[x, y].type = 31;
  4439.             Main.tile[x, y].frameX = 18;
  4440.             Main.tile[x, y].frameY = 18;
  4441.         }
  4442.         public static void AddHellHouses()
  4443.         {
  4444.             int num = (int)((double)Main.maxTilesX * 0.25);
  4445.             for (int i = num; i < Main.maxTilesX - num; i++)
  4446.             {
  4447.                 int num2 = Main.maxTilesY - 40;
  4448.                 while (Main.tile[i, num2].active || Main.tile[i, num2].liquid > 0)
  4449.                 {
  4450.                     num2--;
  4451.                 }
  4452.                 if (Main.tile[i, num2 + 1].active)
  4453.                 {
  4454.                     WorldGen.HellHouse(i, num2);
  4455.                     i += WorldGen.genRand.Next(15, 80);
  4456.                 }
  4457.             }
  4458.         }
  4459.         public static void HellHouse(int i, int j)
  4460.         {
  4461.             int num = WorldGen.genRand.Next(8, 20);
  4462.             int num2 = WorldGen.genRand.Next(3);
  4463.             int num3 = WorldGen.genRand.Next(7);
  4464.             int num4 = j;
  4465.             for (int k = 0; k < num2; k++)
  4466.             {
  4467.                 int num5 = WorldGen.genRand.Next(5, 9);
  4468.                 WorldGen.HellRoom(i, num4, num, num5);
  4469.                 num4 -= num5;
  4470.             }
  4471.             num4 = j;
  4472.             for (int l = 0; l < num3; l++)
  4473.             {
  4474.                 int num6 = WorldGen.genRand.Next(5, 9);
  4475.                 num4 += num6;
  4476.                 WorldGen.HellRoom(i, num4, num, num6);
  4477.             }
  4478.             for (int m = i - num / 2; m <= i + num / 2; m++)
  4479.             {
  4480.                 num4 = j;
  4481.                 while (num4 < Main.maxTilesY && ((Main.tile[m, num4].active && Main.tile[m, num4].type == 76) || Main.tile[m, num4].wall == 13))
  4482.                 {
  4483.                     num4++;
  4484.                 }
  4485.                 int num7 = 6 + WorldGen.genRand.Next(3);
  4486.                 while (num4 < Main.maxTilesY && !Main.tile[m, num4].active)
  4487.                 {
  4488.                     num7--;
  4489.                     Main.tile[m, num4].active = true;
  4490.                     Main.tile[m, num4].type = 57;
  4491.                     num4++;
  4492.                     if (num7 <= 0)
  4493.                     {
  4494.                         break;
  4495.                     }
  4496.                 }
  4497.             }
  4498.             num4 = j;
  4499.             while (num4 < Main.maxTilesY && ((Main.tile[i, num4].active && Main.tile[i, num4].type == 76) || Main.tile[i, num4].wall == 13))
  4500.             {
  4501.                 num4++;
  4502.             }
  4503.             num4--;
  4504.             int num8 = num4;
  4505.             while ((Main.tile[i, num4].active && Main.tile[i, num4].type == 76) || Main.tile[i, num4].wall == 13)
  4506.             {
  4507.                 num4--;
  4508.                 if (Main.tile[i, num4].active && Main.tile[i, num4].type == 76)
  4509.                 {
  4510.                     int num9 = WorldGen.genRand.Next(i - num / 2 + 1, i + num / 2 - 1);
  4511.                     int num10 = WorldGen.genRand.Next(i - num / 2 + 1, i + num / 2 - 1);
  4512.                     if (num9 > num10)
  4513.                     {
  4514.                         int num11 = num9;
  4515.                         num9 = num10;
  4516.                         num10 = num11;
  4517.                     }
  4518.                     if (num9 == num10)
  4519.                     {
  4520.                         if (num9 < i)
  4521.                         {
  4522.                             num10++;
  4523.                         }
  4524.                         else
  4525.                         {
  4526.                             num9--;
  4527.                         }
  4528.                     }
  4529.                     for (int n = num9; n <= num10; n++)
  4530.                     {
  4531.                         if (Main.tile[n, num4 - 1].wall == 13)
  4532.                         {
  4533.                             Main.tile[n, num4].wall = 13;
  4534.                         }
  4535.                         Main.tile[n, num4].type = 19;
  4536.                         Main.tile[n, num4].active = true;
  4537.                     }
  4538.                     num4--;
  4539.                 }
  4540.             }
  4541.             int num12 = num4;
  4542.             float num13 = (float)((num8 - num12) * num);
  4543.             float num14 = num13 * 0.02f;
  4544.             int num15 = 0;
  4545.             while ((float)num15 < num14)
  4546.             {
  4547.                 int num16 = WorldGen.genRand.Next(i - num / 2, i + num / 2 + 1);
  4548.                 int num17 = WorldGen.genRand.Next(num12, num8);
  4549.                 int num18 = WorldGen.genRand.Next(3, 8);
  4550.                 for (int num19 = num16 - num18; num19 <= num16 + num18; num19++)
  4551.                 {
  4552.                     for (int num20 = num17 - num18; num20 <= num17 + num18; num20++)
  4553.                     {
  4554.                         float num21 = (float)Math.Abs(num19 - num16);
  4555.                         float num22 = (float)Math.Abs(num20 - num17);
  4556.                         double num23 = Math.Sqrt((double)(num21 * num21 + num22 * num22));
  4557.                         if (num23 < (double)num18 * 0.4)
  4558.                         {
  4559.                             if (Main.tile[num19, num20].type == 76 || Main.tile[num19, num20].type == 19)
  4560.                             {
  4561.                                 Main.tile[num19, num20].active = false;
  4562.                             }
  4563.                             Main.tile[num19, num20].wall = 0;
  4564.                         }
  4565.                     }
  4566.                 }
  4567.                 num15++;
  4568.             }
  4569.         }
  4570.         public static void HellRoom(int i, int j, int width, int height)
  4571.         {
  4572.             for (int k = i - width / 2; k <= i + width / 2; k++)
  4573.             {
  4574.                 for (int l = j - height; l <= j; l++)
  4575.                 {
  4576.                     Main.tile[k, l].active = true;
  4577.                     Main.tile[k, l].type = 76;
  4578.                     Main.tile[k, l].liquid = 0;
  4579.                     Main.tile[k, l].lava = false;
  4580.                 }
  4581.             }
  4582.             for (int m = i - width / 2 + 1; m <= i + width / 2 - 1; m++)
  4583.             {
  4584.                 for (int n = j - height + 1; n <= j - 1; n++)
  4585.                 {
  4586.                     Main.tile[m, n].active = false;
  4587.                     Main.tile[m, n].wall = 13;
  4588.                     Main.tile[m, n].liquid = 0;
  4589.                     Main.tile[m, n].lava = false;
  4590.                 }
  4591.             }
  4592.         }
  4593.         public static void MakeDungeon(int x, int y, int tileType = 41, int wallType = 7)
  4594.         {
  4595.             int num = WorldGen.genRand.Next(3);
  4596.             int num2 = WorldGen.genRand.Next(3);
  4597.             if (num == 1)
  4598.             {
  4599.                 tileType = 43;
  4600.             }
  4601.             else
  4602.             {
  4603.                 if (num == 2)
  4604.                 {
  4605.                     tileType = 44;
  4606.                 }
  4607.             }
  4608.             if (num2 == 1)
  4609.             {
  4610.                 wallType = 8;
  4611.             }
  4612.             else
  4613.             {
  4614.                 if (num2 == 2)
  4615.                 {
  4616.                     wallType = 9;
  4617.                 }
  4618.             }
  4619.             WorldGen.numDDoors = 0;
  4620.             WorldGen.numDPlats = 0;
  4621.             WorldGen.numDRooms = 0;
  4622.             WorldGen.dungeonX = x;
  4623.             WorldGen.dungeonY = y;
  4624.             WorldGen.dMinX = x;
  4625.             WorldGen.dMaxX = x;
  4626.             WorldGen.dMinY = y;
  4627.             WorldGen.dMaxY = y;
  4628.             WorldGen.dxStrength1 = (double)WorldGen.genRand.Next(25, 30);
  4629.             WorldGen.dyStrength1 = (double)WorldGen.genRand.Next(20, 25);
  4630.             WorldGen.dxStrength2 = (double)WorldGen.genRand.Next(35, 50);
  4631.             WorldGen.dyStrength2 = (double)WorldGen.genRand.Next(10, 15);
  4632.             float num3 = (float)(Main.maxTilesX / 60);
  4633.             num3 += (float)WorldGen.genRand.Next(0, (int)(num3 / 3f));
  4634.             float num4 = num3;
  4635.             int num5 = 5;
  4636.             WorldGen.DungeonRoom(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType);
  4637.             while (num3 > 0f)
  4638.             {
  4639.                 if (WorldGen.dungeonX < WorldGen.dMinX)
  4640.                 {
  4641.                     WorldGen.dMinX = WorldGen.dungeonX;
  4642.                 }
  4643.                 if (WorldGen.dungeonX > WorldGen.dMaxX)
  4644.                 {
  4645.                     WorldGen.dMaxX = WorldGen.dungeonX;
  4646.                 }
  4647.                 if (WorldGen.dungeonY > WorldGen.dMaxY)
  4648.                 {
  4649.                     WorldGen.dMaxY = WorldGen.dungeonY;
  4650.                 }
  4651.                 num3 -= 1f;
  4652.                 Main.statusText = "Creating dungeon: " + (int)((num4 - num3) / num4 * 60f) + "%";
  4653.                 if (num5 > 0)
  4654.                 {
  4655.                     num5--;
  4656.                 }
  4657.                 if (num5 == 0 & WorldGen.genRand.Next(3) == 0)
  4658.                 {
  4659.                     num5 = 5;
  4660.                     if (WorldGen.genRand.Next(2) == 0)
  4661.                     {
  4662.                         int num6 = WorldGen.dungeonX;
  4663.                         int num7 = WorldGen.dungeonY;
  4664.                         WorldGen.DungeonHalls(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType, false);
  4665.                         if (WorldGen.genRand.Next(2) == 0)
  4666.                         {
  4667.                             WorldGen.DungeonHalls(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType, false);
  4668.                         }
  4669.                         WorldGen.DungeonRoom(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType);
  4670.                         WorldGen.dungeonX = num6;
  4671.                         WorldGen.dungeonY = num7;
  4672.                     }
  4673.                     else
  4674.                     {
  4675.                         WorldGen.DungeonRoom(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType);
  4676.                     }
  4677.                 }
  4678.                 else
  4679.                 {
  4680.                     WorldGen.DungeonHalls(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType, false);
  4681.                 }
  4682.             }
  4683.             WorldGen.DungeonRoom(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType);
  4684.             int num8 = WorldGen.dRoomX[0];
  4685.             int num9 = WorldGen.dRoomY[0];
  4686.             for (int i = 0; i < WorldGen.numDRooms; i++)
  4687.             {
  4688.                 if (WorldGen.dRoomY[i] < num9)
  4689.                 {
  4690.                     num8 = WorldGen.dRoomX[i];
  4691.                     num9 = WorldGen.dRoomY[i];
  4692.                 }
  4693.             }
  4694.             WorldGen.dungeonX = num8;
  4695.             WorldGen.dungeonY = num9;
  4696.             WorldGen.dEnteranceX = num8;
  4697.             WorldGen.dSurface = false;
  4698.             num5 = 5;
  4699.             while (!WorldGen.dSurface)
  4700.             {
  4701.                 if (num5 > 0)
  4702.                 {
  4703.                     num5--;
  4704.                 }
  4705.                 if ((num5 == 0 & WorldGen.genRand.Next(5) == 0) && (double)WorldGen.dungeonY > Main.worldSurface + 50.0)
  4706.                 {
  4707.                     num5 = 10;
  4708.                     int num10 = WorldGen.dungeonX;
  4709.                     int num11 = WorldGen.dungeonY;
  4710.                     WorldGen.DungeonHalls(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType, true);
  4711.                     WorldGen.DungeonRoom(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType);
  4712.                     WorldGen.dungeonX = num10;
  4713.                     WorldGen.dungeonY = num11;
  4714.                 }
  4715.                 WorldGen.DungeonStairs(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType);
  4716.             }
  4717.             WorldGen.DungeonEnt(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType);
  4718.             Main.statusText = "Creating dungeon: 65%";
  4719.             for (int j = 0; j < WorldGen.numDRooms; j++)
  4720.             {
  4721.                 for (int k = WorldGen.dRoomL[j]; k <= WorldGen.dRoomR[j]; k++)
  4722.                 {
  4723.                     if (!Main.tile[k, WorldGen.dRoomT[j] - 1].active)
  4724.                     {
  4725.                         WorldGen.DPlatX[WorldGen.numDPlats] = k;
  4726.                         WorldGen.DPlatY[WorldGen.numDPlats] = WorldGen.dRoomT[j] - 1;
  4727.                         WorldGen.numDPlats++;
  4728.                         break;
  4729.                     }
  4730.                 }
  4731.                 for (int l = WorldGen.dRoomL[j]; l <= WorldGen.dRoomR[j]; l++)
  4732.                 {
  4733.                     if (!Main.tile[l, WorldGen.dRoomB[j] + 1].active)
  4734.                     {
  4735.                         WorldGen.DPlatX[WorldGen.numDPlats] = l;
  4736.                         WorldGen.DPlatY[WorldGen.numDPlats] = WorldGen.dRoomB[j] + 1;
  4737.                         WorldGen.numDPlats++;
  4738.                         break;
  4739.                     }
  4740.                 }
  4741.                 for (int m = WorldGen.dRoomT[j]; m <= WorldGen.dRoomB[j]; m++)
  4742.                 {
  4743.                     if (!Main.tile[WorldGen.dRoomL[j] - 1, m].active)
  4744.                     {
  4745.                         WorldGen.DDoorX[WorldGen.numDDoors] = WorldGen.dRoomL[j] - 1;
  4746.                         WorldGen.DDoorY[WorldGen.numDDoors] = m;
  4747.                         WorldGen.DDoorPos[WorldGen.numDDoors] = -1;
  4748.                         WorldGen.numDDoors++;
  4749.                         break;
  4750.                     }
  4751.                 }
  4752.                 for (int n = WorldGen.dRoomT[j]; n <= WorldGen.dRoomB[j]; n++)
  4753.                 {
  4754.                     if (!Main.tile[WorldGen.dRoomR[j] + 1, n].active)
  4755.                     {
  4756.                         WorldGen.DDoorX[WorldGen.numDDoors] = WorldGen.dRoomR[j] + 1;
  4757.                         WorldGen.DDoorY[WorldGen.numDDoors] = n;
  4758.                         WorldGen.DDoorPos[WorldGen.numDDoors] = 1;
  4759.                         WorldGen.numDDoors++;
  4760.                         break;
  4761.                     }
  4762.                 }
  4763.             }
  4764.             Main.statusText = "Creating dungeon: 70%";
  4765.             int num12 = 0;
  4766.             int num13 = 1000;
  4767.             int num14 = 0;
  4768.             while (num14 < Main.maxTilesX / 125)
  4769.             {
  4770.                 num12++;
  4771.                 int num15 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
  4772.                 int num16 = WorldGen.genRand.Next((int)Main.worldSurface + 25, WorldGen.dMaxY);
  4773.                 int num17 = num15;
  4774.                 if ((int)Main.tile[num15, num16].wall == wallType && !Main.tile[num15, num16].active)
  4775.                 {
  4776.                     int num18 = 1;
  4777.                     if (WorldGen.genRand.Next(2) == 0)
  4778.                     {
  4779.                         num18 = -1;
  4780.                     }
  4781.                     while (!Main.tile[num15, num16].active)
  4782.                     {
  4783.                         num16 += num18;
  4784.                     }
  4785.                     if (Main.tile[num15 - 1, num16].active && Main.tile[num15 + 1, num16].active && !Main.tile[num15 - 1, num16 - num18].active && !Main.tile[num15 + 1, num16 - num18].active)
  4786.                     {
  4787.                         num14++;
  4788.                         int num19 = WorldGen.genRand.Next(5, 10);
  4789.                         while (Main.tile[num15 - 1, num16].active && Main.tile[num15, num16 + num18].active && Main.tile[num15, num16].active && !Main.tile[num15, num16 - num18].active && num19 > 0)
  4790.                         {
  4791.                             Main.tile[num15, num16].type = 48;
  4792.                             if (!Main.tile[num15 - 1, num16 - num18].active && !Main.tile[num15 + 1, num16 - num18].active)
  4793.                             {
  4794.                                 Main.tile[num15, num16 - num18].type = 48;
  4795.                                 Main.tile[num15, num16 - num18].active = true;
  4796.                             }
  4797.                             num15--;
  4798.                             num19--;
  4799.                         }
  4800.                         num19 = WorldGen.genRand.Next(5, 10);
  4801.                         num15 = num17 + 1;
  4802.                         while (Main.tile[num15 + 1, num16].active && Main.tile[num15, num16 + num18].active && Main.tile[num15, num16].active && !Main.tile[num15, num16 - num18].active && num19 > 0)
  4803.                         {
  4804.                             Main.tile[num15, num16].type = 48;
  4805.                             if (!Main.tile[num15 - 1, num16 - num18].active && !Main.tile[num15 + 1, num16 - num18].active)
  4806.                             {
  4807.                                 Main.tile[num15, num16 - num18].type = 48;
  4808.                                 Main.tile[num15, num16 - num18].active = true;
  4809.                             }
  4810.                             num15++;
  4811.                             num19--;
  4812.                         }
  4813.                     }
  4814.                 }
  4815.                 if (num12 > num13)
  4816.                 {
  4817.                     num12 = 0;
  4818.                     num14++;
  4819.                 }
  4820.             }
  4821.             num12 = 0;
  4822.             num13 = 1000;
  4823.             num14 = 0;
  4824.             Main.statusText = "Creating dungeon: 75%";
  4825.             while (num14 < Main.maxTilesX / 125)
  4826.             {
  4827.                 num12++;
  4828.                 int num20 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
  4829.                 int num21 = WorldGen.genRand.Next((int)Main.worldSurface + 25, WorldGen.dMaxY);
  4830.                 int num22 = num21;
  4831.                 if ((int)Main.tile[num20, num21].wall == wallType && !Main.tile[num20, num21].active)
  4832.                 {
  4833.                     int num23 = 1;
  4834.                     if (WorldGen.genRand.Next(2) == 0)
  4835.                     {
  4836.                         num23 = -1;
  4837.                     }
  4838.                     while (num20 > 5 && num20 < Main.maxTilesX - 5 && !Main.tile[num20, num21].active)
  4839.                     {
  4840.                         num20 += num23;
  4841.                     }
  4842.                     if (Main.tile[num20, num21 - 1].active && Main.tile[num20, num21 + 1].active && !Main.tile[num20 - num23, num21 - 1].active && !Main.tile[num20 - num23, num21 + 1].active)
  4843.                     {
  4844.                         num14++;
  4845.                         int num24 = WorldGen.genRand.Next(5, 10);
  4846.                         while (Main.tile[num20, num21 - 1].active && Main.tile[num20 + num23, num21].active && Main.tile[num20, num21].active && !Main.tile[num20 - num23, num21].active && num24 > 0)
  4847.                         {
  4848.                             Main.tile[num20, num21].type = 48;
  4849.                             if (!Main.tile[num20 - num23, num21 - 1].active && !Main.tile[num20 - num23, num21 + 1].active)
  4850.                             {
  4851.                                 Main.tile[num20 - num23, num21].type = 48;
  4852.                                 Main.tile[num20 - num23, num21].active = true;
  4853.                             }
  4854.                             num21--;
  4855.                             num24--;
  4856.                         }
  4857.                         num24 = WorldGen.genRand.Next(5, 10);
  4858.                         num21 = num22 + 1;
  4859.                         while (Main.tile[num20, num21 + 1].active && Main.tile[num20 + num23, num21].active && Main.tile[num20, num21].active && !Main.tile[num20 - num23, num21].active && num24 > 0)
  4860.                         {
  4861.                             Main.tile[num20, num21].type = 48;
  4862.                             if (!Main.tile[num20 - num23, num21 - 1].active && !Main.tile[num20 - num23, num21 + 1].active)
  4863.                             {
  4864.                                 Main.tile[num20 - num23, num21].type = 48;
  4865.                                 Main.tile[num20 - num23, num21].active = true;
  4866.                             }
  4867.                             num21++;
  4868.                             num24--;
  4869.                         }
  4870.                     }
  4871.                 }
  4872.                 if (num12 > num13)
  4873.                 {
  4874.                     num12 = 0;
  4875.                     num14++;
  4876.                 }
  4877.             }
  4878.             Main.statusText = "Creating dungeon: 80%";
  4879.             for (int num25 = 0; num25 < WorldGen.numDDoors; num25++)
  4880.             {
  4881.                 int num26 = WorldGen.DDoorX[num25] - 10;
  4882.                 int num27 = WorldGen.DDoorX[num25] + 10;
  4883.                 int num28 = 100;
  4884.                 int num29 = 0;
  4885.                 for (int num30 = num26; num30 < num27; num30++)
  4886.                 {
  4887.                     bool flag = true;
  4888.                     int num31 = WorldGen.DDoorY[num25];
  4889.                     while (!Main.tile[num30, num31].active)
  4890.                     {
  4891.                         num31--;
  4892.                     }
  4893.                     if (!Main.tileDungeon[(int)Main.tile[num30, num31].type])
  4894.                     {
  4895.                         flag = false;
  4896.                     }
  4897.                     int num32 = num31;
  4898.                     num31 = WorldGen.DDoorY[num25];
  4899.                     while (!Main.tile[num30, num31].active)
  4900.                     {
  4901.                         num31++;
  4902.                     }
  4903.                     if (!Main.tileDungeon[(int)Main.tile[num30, num31].type])
  4904.                     {
  4905.                         flag = false;
  4906.                     }
  4907.                     int num33 = num31;
  4908.                     if (num33 - num32 >= 3)
  4909.                     {
  4910.                         int num34 = num30 - 20;
  4911.                         int num35 = num30 + 20;
  4912.                         int num36 = num33 - 10;
  4913.                         int num37 = num33 + 10;
  4914.                         for (int num38 = num34; num38 < num35; num38++)
  4915.                         {
  4916.                             for (int num39 = num36; num39 < num37; num39++)
  4917.                             {
  4918.                                 if (Main.tile[num38, num39].active && Main.tile[num38, num39].type == 10)
  4919.                                 {
  4920.                                     flag = false;
  4921.                                     break;
  4922.                                 }
  4923.                             }
  4924.                         }
  4925.                         if (flag)
  4926.                         {
  4927.                             for (int num40 = num33 - 3; num40 < num33; num40++)
  4928.                             {
  4929.                                 for (int num41 = num30 - 3; num41 <= num30 + 3; num41++)
  4930.                                 {
  4931.                                     if (Main.tile[num41, num40].active)
  4932.                                     {
  4933.                                         flag = false;
  4934.                                         break;
  4935.                                     }
  4936.                                 }
  4937.                             }
  4938.                         }
  4939.                         if (flag && num33 - num32 < 20)
  4940.                         {
  4941.                             bool flag2 = false;
  4942.                             if (WorldGen.DDoorPos[num25] == 0 && num33 - num32 < num28)
  4943.                             {
  4944.                                 flag2 = true;
  4945.                             }
  4946.                             if (WorldGen.DDoorPos[num25] == -1 && num30 > num29)
  4947.                             {
  4948.                                 flag2 = true;
  4949.                             }
  4950.                             if (WorldGen.DDoorPos[num25] == 1 && (num30 < num29 || num29 == 0))
  4951.                             {
  4952.                                 flag2 = true;
  4953.                             }
  4954.                             if (flag2)
  4955.                             {
  4956.                                 num29 = num30;
  4957.                                 num28 = num33 - num32;
  4958.                             }
  4959.                         }
  4960.                     }
  4961.                 }
  4962.                 if (num28 < 20)
  4963.                 {
  4964.                     int num42 = num29;
  4965.                     int num43 = WorldGen.DDoorY[num25];
  4966.                     int num44 = num43;
  4967.                     while (!Main.tile[num42, num43].active)
  4968.                     {
  4969.                         Main.tile[num42, num43].active = false;
  4970.                         num43++;
  4971.                     }
  4972.                     while (!Main.tile[num42, num44].active)
  4973.                     {
  4974.                         num44--;
  4975.                     }
  4976.                     num43--;
  4977.                     num44++;
  4978.                     for (int num45 = num44; num45 < num43 - 2; num45++)
  4979.                     {
  4980.                         Main.tile[num42, num45].active = true;
  4981.                         Main.tile[num42, num45].type = (byte)tileType;
  4982.                     }
  4983.                     WorldGen.PlaceTile(num42, num43, 10, true, false, -1);
  4984.                     num42--;
  4985.                     int num46 = num43 - 3;
  4986.                     while (!Main.tile[num42, num46].active)
  4987.                     {
  4988.                         num46--;
  4989.                     }
  4990.                     if (num43 - num46 < num43 - num44 + 5 && Main.tileDungeon[(int)Main.tile[num42, num46].type])
  4991.                     {
  4992.                         for (int num47 = num43 - 4 - WorldGen.genRand.Next(3); num47 > num46; num47--)
  4993.                         {
  4994.                             Main.tile[num42, num47].active = true;
  4995.                             Main.tile[num42, num47].type = (byte)tileType;
  4996.                         }
  4997.                     }
  4998.                     num42 += 2;
  4999.                     num46 = num43 - 3;
  5000.                     while (!Main.tile[num42, num46].active)
  5001.                     {
  5002.                         num46--;
  5003.                     }
  5004.                     if (num43 - num46 < num43 - num44 + 5 && Main.tileDungeon[(int)Main.tile[num42, num46].type])
  5005.                     {
  5006.                         for (int num48 = num43 - 4 - WorldGen.genRand.Next(3); num48 > num46; num48--)
  5007.                         {
  5008.                             Main.tile[num42, num48].active = true;
  5009.                             Main.tile[num42, num48].type = (byte)tileType;
  5010.                         }
  5011.                     }
  5012.                     num43++;
  5013.                     num42--;
  5014.                     Main.tile[num42 - 1, num43].active = true;
  5015.                     Main.tile[num42 - 1, num43].type = (byte)tileType;
  5016.                     Main.tile[num42 + 1, num43].active = true;
  5017.                     Main.tile[num42 + 1, num43].type = (byte)tileType;
  5018.                 }
  5019.             }
  5020.             Main.statusText = "Creating dungeon: 85%";
  5021.             for (int num49 = 0; num49 < WorldGen.numDPlats; num49++)
  5022.             {
  5023.                 int num50 = WorldGen.DPlatX[num49];
  5024.                 int num51 = WorldGen.DPlatY[num49];
  5025.                 int num52 = Main.maxTilesX;
  5026.                 int num53 = 10;
  5027.                 for (int num54 = num51 - 5; num54 <= num51 + 5; num54++)
  5028.                 {
  5029.                     int num55 = num50;
  5030.                     int num56 = num50;
  5031.                     bool flag3 = false;
  5032.                     if (Main.tile[num55, num54].active)
  5033.                     {
  5034.                         flag3 = true;
  5035.                     }
  5036.                     else
  5037.                     {
  5038.                         while (!Main.tile[num55, num54].active)
  5039.                         {
  5040.                             num55--;
  5041.                             if (!Main.tileDungeon[(int)Main.tile[num55, num54].type])
  5042.                             {
  5043.                                 flag3 = true;
  5044.                             }
  5045.                         }
  5046.                         while (!Main.tile[num56, num54].active)
  5047.                         {
  5048.                             num56++;
  5049.                             if (!Main.tileDungeon[(int)Main.tile[num56, num54].type])
  5050.                             {
  5051.                                 flag3 = true;
  5052.                             }
  5053.                         }
  5054.                     }
  5055.                     if (!flag3 && num56 - num55 <= num53)
  5056.                     {
  5057.                         bool flag4 = true;
  5058.                         int num57 = num50 - num53 / 2 - 2;
  5059.                         int num58 = num50 + num53 / 2 + 2;
  5060.                         int num59 = num54 - 5;
  5061.                         int num60 = num54 + 5;
  5062.                         for (int num61 = num57; num61 <= num58; num61++)
  5063.                         {
  5064.                             for (int num62 = num59; num62 <= num60; num62++)
  5065.                             {
  5066.                                 if (Main.tile[num61, num62].active && Main.tile[num61, num62].type == 19)
  5067.                                 {
  5068.                                     flag4 = false;
  5069.                                     break;
  5070.                                 }
  5071.                             }
  5072.                         }
  5073.                         for (int num63 = num54 + 3; num63 >= num54 - 5; num63--)
  5074.                         {
  5075.                             if (Main.tile[num50, num63].active)
  5076.                             {
  5077.                                 flag4 = false;
  5078.                                 break;
  5079.                             }
  5080.                         }
  5081.                         if (flag4)
  5082.                         {
  5083.                             num52 = num54;
  5084.                             break;
  5085.                         }
  5086.                     }
  5087.                 }
  5088.                 if (num52 > num51 - 10 && num52 < num51 + 10)
  5089.                 {
  5090.                     int num64 = num50;
  5091.                     int num65 = num52;
  5092.                     int num66 = num50 + 1;
  5093.                     while (!Main.tile[num64, num65].active)
  5094.                     {
  5095.                         Main.tile[num64, num65].active = true;
  5096.                         Main.tile[num64, num65].type = 19;
  5097.                         num64--;
  5098.                     }
  5099.                     while (!Main.tile[num66, num65].active)
  5100.                     {
  5101.                         Main.tile[num66, num65].active = true;
  5102.                         Main.tile[num66, num65].type = 19;
  5103.                         num66++;
  5104.                     }
  5105.                 }
  5106.             }
  5107.             Main.statusText = "Creating dungeon: 90%";
  5108.             num12 = 0;
  5109.             num13 = 1000;
  5110.             num14 = 0;
  5111.             while (num14 < Main.maxTilesX / 20)
  5112.             {
  5113.                 num12++;
  5114.                 int num67 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
  5115.                 int num68 = WorldGen.genRand.Next(WorldGen.dMinY, WorldGen.dMaxY);
  5116.                 bool flag5 = true;
  5117.                 if ((int)Main.tile[num67, num68].wall == wallType && !Main.tile[num67, num68].active)
  5118.                 {
  5119.                     int num69 = 1;
  5120.                     if (WorldGen.genRand.Next(2) == 0)
  5121.                     {
  5122.                         num69 = -1;
  5123.                     }
  5124.                     while (flag5 && !Main.tile[num67, num68].active)
  5125.                     {
  5126.                         num67 -= num69;
  5127.                         if (num67 < 5 || num67 > Main.maxTilesX - 5)
  5128.                         {
  5129.                             flag5 = false;
  5130.                         }
  5131.                         else
  5132.                         {
  5133.                             if (Main.tile[num67, num68].active && !Main.tileDungeon[(int)Main.tile[num67, num68].type])
  5134.                             {
  5135.                                 flag5 = false;
  5136.                             }
  5137.                         }
  5138.                     }
  5139.                     if (flag5 && Main.tile[num67, num68].active && Main.tileDungeon[(int)Main.tile[num67, num68].type] && Main.tile[num67, num68 - 1].active && Main.tileDungeon[(int)Main.tile[num67, num68 - 1].type] && Main.tile[num67, num68 + 1].active && Main.tileDungeon[(int)Main.tile[num67, num68 + 1].type])
  5140.                     {
  5141.                         num67 += num69;
  5142.                         for (int num70 = num67 - 3; num70 <= num67 + 3; num70++)
  5143.                         {
  5144.                             for (int num71 = num68 - 3; num71 <= num68 + 3; num71++)
  5145.                             {
  5146.                                 if (Main.tile[num70, num71].active && Main.tile[num70, num71].type == 19)
  5147.                                 {
  5148.                                     flag5 = false;
  5149.                                     break;
  5150.                                 }
  5151.                             }
  5152.                         }
  5153.                         if (flag5 && (!Main.tile[num67, num68 - 1].active & !Main.tile[num67, num68 - 2].active & !Main.tile[num67, num68 - 3].active))
  5154.                         {
  5155.                             int num72 = num67;
  5156.                             int num73 = num67;
  5157.                             while (num72 > WorldGen.dMinX && num72 < WorldGen.dMaxX && !Main.tile[num72, num68].active && !Main.tile[num72, num68 - 1].active && !Main.tile[num72, num68 + 1].active)
  5158.                             {
  5159.                                 num72 += num69;
  5160.                             }
  5161.                             num72 = Math.Abs(num67 - num72);
  5162.                             bool flag6 = false;
  5163.                             if (WorldGen.genRand.Next(2) == 0)
  5164.                             {
  5165.                                 flag6 = true;
  5166.                             }
  5167.                             if (num72 > 5)
  5168.                             {
  5169.                                 for (int num74 = WorldGen.genRand.Next(1, 4); num74 > 0; num74--)
  5170.                                 {
  5171.                                     Main.tile[num67, num68].active = true;
  5172.                                     Main.tile[num67, num68].type = 19;
  5173.                                     if (flag6)
  5174.                                     {
  5175.                                         WorldGen.PlaceTile(num67, num68 - 1, 50, true, false, -1);
  5176.                                         if (WorldGen.genRand.Next(50) == 0 && Main.tile[num67, num68 - 1].type == 50)
  5177.                                         {
  5178.                                             Main.tile[num67, num68 - 1].frameX = 90;
  5179.                                         }
  5180.                                     }
  5181.                                     num67 += num69;
  5182.                                 }
  5183.                                 num12 = 0;
  5184.                                 num14++;
  5185.                                 if (!flag6 && WorldGen.genRand.Next(2) == 0)
  5186.                                 {
  5187.                                     num67 = num73;
  5188.                                     num68--;
  5189.                                     int num75 = WorldGen.genRand.Next(2);
  5190.                                     if (num75 == 0)
  5191.                                     {
  5192.                                         num75 = 13;
  5193.                                     }
  5194.                                     else
  5195.                                     {
  5196.                                         if (num75 == 1)
  5197.                                         {
  5198.                                             num75 = 49;
  5199.                                         }
  5200.                                     }
  5201.                                     WorldGen.PlaceTile(num67, num68, num75, true, false, -1);
  5202.                                     if (Main.tile[num67, num68].type == 13)
  5203.                                     {
  5204.                                         if (WorldGen.genRand.Next(2) == 0)
  5205.                                         {
  5206.                                             Main.tile[num67, num68].frameX = 18;
  5207.                                         }
  5208.                                         else
  5209.                                         {
  5210.                                             Main.tile[num67, num68].frameX = 36;
  5211.                                         }
  5212.                                     }
  5213.                                 }
  5214.                             }
  5215.                         }
  5216.                     }
  5217.                 }
  5218.                 if (num12 > num13)
  5219.                 {
  5220.                     num12 = 0;
  5221.                     num14++;
  5222.                 }
  5223.             }
  5224.             Main.statusText = "Creating dungeon: 95%";
  5225.             for (int num76 = 0; num76 < WorldGen.numDRooms; num76++)
  5226.             {
  5227.                 int num77 = 0;
  5228.                 while (num77 < 1000)
  5229.                 {
  5230.                     int num78 = (int)((double)WorldGen.dRoomSize[num76] * 0.4);
  5231.                     int i2 = WorldGen.dRoomX[num76] + WorldGen.genRand.Next(-num78, num78 + 1);
  5232.                     int j2 = WorldGen.dRoomY[num76] + WorldGen.genRand.Next(-num78, num78 + 1);
  5233.                     int num79 = 0;
  5234.                     int num80 = num76;
  5235.                     if (num80 == 0)
  5236.                     {
  5237.                         num79 = 113;
  5238.                     }
  5239.                     else
  5240.                     {
  5241.                         if (num80 == 1)
  5242.                         {
  5243.                             num79 = 155;
  5244.                         }
  5245.                         else
  5246.                         {
  5247.                             if (num80 == 2)
  5248.                             {
  5249.                                 num79 = 156;
  5250.                             }
  5251.                             else
  5252.                             {
  5253.                                 if (num80 == 3)
  5254.                                 {
  5255.                                     num79 = 157;
  5256.                                 }
  5257.                                 else
  5258.                                 {
  5259.                                     if (num80 == 4)
  5260.                                     {
  5261.                                         num79 = 163;
  5262.                                     }
  5263.                                     else
  5264.                                     {
  5265.                                         if (num80 == 5)
  5266.                                         {
  5267.                                             num79 = 164;
  5268.                                         }
  5269.                                     }
  5270.                                 }
  5271.                             }
  5272.                         }
  5273.                     }
  5274.                     if (num79 == 0 && WorldGen.genRand.Next(2) == 0)
  5275.                     {
  5276.                         num77 = 1000;
  5277.                     }
  5278.                     else
  5279.                     {
  5280.                         if (WorldGen.AddBuriedChest(i2, j2, num79))
  5281.                         {
  5282.                             num77 += 1000;
  5283.                         }
  5284.                         num77++;
  5285.                     }
  5286.                 }
  5287.             }
  5288.             WorldGen.dMinX -= 25;
  5289.             WorldGen.dMaxX += 25;
  5290.             WorldGen.dMinY -= 25;
  5291.             WorldGen.dMaxY += 25;
  5292.             if (WorldGen.dMinX < 0)
  5293.             {
  5294.                 WorldGen.dMinX = 0;
  5295.             }
  5296.             if (WorldGen.dMaxX > Main.maxTilesX)
  5297.             {
  5298.                 WorldGen.dMaxX = Main.maxTilesX;
  5299.             }
  5300.             if (WorldGen.dMinY < 0)
  5301.             {
  5302.                 WorldGen.dMinY = 0;
  5303.             }
  5304.             if (WorldGen.dMaxY > Main.maxTilesY)
  5305.             {
  5306.                 WorldGen.dMaxY = Main.maxTilesY;
  5307.             }
  5308.             num12 = 0;
  5309.             num13 = 1000;
  5310.             num14 = 0;
  5311.             while (num14 < Main.maxTilesX / 20)
  5312.             {
  5313.                 num12++;
  5314.                 int num81 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
  5315.                 int num82 = WorldGen.genRand.Next(WorldGen.dMinY, WorldGen.dMaxY);
  5316.                 if ((int)Main.tile[num81, num82].wall == wallType)
  5317.                 {
  5318.                     int num83 = num82;
  5319.                     while (num83 > WorldGen.dMinY)
  5320.                     {
  5321.                         if (Main.tile[num81, num83 - 1].active && (int)Main.tile[num81, num83 - 1].type == tileType)
  5322.                         {
  5323.                             bool flag7 = false;
  5324.                             for (int num84 = num81 - 15; num84 < num81 + 15; num84++)
  5325.                             {
  5326.                                 for (int num85 = num83 - 15; num85 < num83 + 15; num85++)
  5327.                                 {
  5328.                                     if (num84 > 0 && num84 < Main.maxTilesX && num85 > 0 && num85 < Main.maxTilesY && Main.tile[num84, num85].type == 42)
  5329.                                     {
  5330.                                         flag7 = true;
  5331.                                         break;
  5332.                                     }
  5333.                                 }
  5334.                             }
  5335.                             if (Main.tile[num81 - 1, num83].active || Main.tile[num81 + 1, num83].active || Main.tile[num81 - 1, num83 + 1].active || Main.tile[num81 + 1, num83 + 1].active || Main.tile[num81, num83 + 2].active)
  5336.                             {
  5337.                                 flag7 = true;
  5338.                             }
  5339.                             if (flag7)
  5340.                             {
  5341.                                 break;
  5342.                             }
  5343.                             WorldGen.Place1x2Top(num81, num83, 42);
  5344.                             if (Main.tile[num81, num83].type == 42)
  5345.                             {
  5346.                                 num12 = 0;
  5347.                                 num14++;
  5348.                                 break;
  5349.                             }
  5350.                             break;
  5351.                         }
  5352.                         else
  5353.                         {
  5354.                             num83--;
  5355.                         }
  5356.                     }
  5357.                 }
  5358.                 if (num12 > num13)
  5359.                 {
  5360.                     num14++;
  5361.                     num12 = 0;
  5362.                 }
  5363.             }
  5364.         }
  5365.         public static void DungeonStairs(int i, int j, int tileType, int wallType)
  5366.         {
  5367.             Vector2 value = default(Vector2);
  5368.             double num = (double)WorldGen.genRand.Next(5, 9);
  5369.             int num2 = 1;
  5370.             Vector2 value2;
  5371.             value2.X = (float)i;
  5372.             value2.Y = (float)j;
  5373.             int k = WorldGen.genRand.Next(10, 30);
  5374.             if (i > WorldGen.dEnteranceX)
  5375.             {
  5376.                 num2 = -1;
  5377.             }
  5378.             else
  5379.             {
  5380.                 num2 = 1;
  5381.             }
  5382.             value.Y = -1f;
  5383.             value.X = (float)num2;
  5384.             if (WorldGen.genRand.Next(3) == 0)
  5385.             {
  5386.                 value.X *= 0.5f;
  5387.             }
  5388.             else
  5389.             {
  5390.                 if (WorldGen.genRand.Next(3) == 0)
  5391.                 {
  5392.                     value.Y *= 2f;
  5393.                 }
  5394.             }
  5395.             while (k > 0)
  5396.             {
  5397.                 k--;
  5398.                 int num3 = (int)((double)value2.X - num - 4.0 - (double)WorldGen.genRand.Next(6));
  5399.                 int num4 = (int)((double)value2.X + num + 4.0 + (double)WorldGen.genRand.Next(6));
  5400.                 int num5 = (int)((double)value2.Y - num - 4.0);
  5401.                 int num6 = (int)((double)value2.Y + num + 4.0 + (double)WorldGen.genRand.Next(6));
  5402.                 if (num3 < 0)
  5403.                 {
  5404.                     num3 = 0;
  5405.                 }
  5406.                 if (num4 > Main.maxTilesX)
  5407.                 {
  5408.                     num4 = Main.maxTilesX;
  5409.                 }
  5410.                 if (num5 < 0)
  5411.                 {
  5412.                     num5 = 0;
  5413.                 }
  5414.                 if (num6 > Main.maxTilesY)
  5415.                 {
  5416.                     num6 = Main.maxTilesY;
  5417.                 }
  5418.                 int num7 = 1;
  5419.                 if (value2.X > (float)(Main.maxTilesX / 2))
  5420.                 {
  5421.                     num7 = -1;
  5422.                 }
  5423.                 int num8 = (int)(value2.X + (float)WorldGen.dxStrength1 * 0.6f * (float)num7 + (float)WorldGen.dxStrength2 * (float)num7);
  5424.                 int num9 = (int)(WorldGen.dyStrength2 * 0.5);
  5425.                 if ((double)value2.Y < Main.worldSurface - 5.0 && Main.tile[num8, (int)((double)value2.Y - num - 6.0 + (double)num9)].wall == 0 && Main.tile[num8, (int)((double)value2.Y - num - 7.0 + (double)num9)].wall == 0 && Main.tile[num8, (int)((double)value2.Y - num - 8.0 + (double)num9)].wall == 0)
  5426.                 {
  5427.                     WorldGen.dSurface = true;
  5428.                     WorldGen.TileRunner(num8, (int)((double)value2.Y - num - 6.0 + (double)num9), (double)WorldGen.genRand.Next(25, 35), WorldGen.genRand.Next(10, 20), -1, false, 0f, -1f, false, true);
  5429.                 }
  5430.                 for (int l = num3; l < num4; l++)
  5431.                 {
  5432.                     for (int m = num5; m < num6; m++)
  5433.                     {
  5434.                         Main.tile[l, m].liquid = 0;
  5435.                         if ((int)Main.tile[l, m].wall != wallType)
  5436.                         {
  5437.                             Main.tile[l, m].wall = 0;
  5438.                             Main.tile[l, m].active = true;
  5439.                             Main.tile[l, m].type = (byte)tileType;
  5440.                         }
  5441.                     }
  5442.                 }
  5443.                 for (int n = num3 + 1; n < num4 - 1; n++)
  5444.                 {
  5445.                     for (int num10 = num5 + 1; num10 < num6 - 1; num10++)
  5446.                     {
  5447.                         WorldGen.PlaceWall(n, num10, wallType, true);
  5448.                     }
  5449.                 }
  5450.                 int num11 = 0;
  5451.                 if (WorldGen.genRand.Next((int)num) == 0)
  5452.                 {
  5453.                     num11 = WorldGen.genRand.Next(1, 3);
  5454.                 }
  5455.                 num3 = (int)((double)value2.X - num * 0.5 - (double)num11);
  5456.                 num4 = (int)((double)value2.X + num * 0.5 + (double)num11);
  5457.                 num5 = (int)((double)value2.Y - num * 0.5 - (double)num11);
  5458.                 num6 = (int)((double)value2.Y + num * 0.5 + (double)num11);
  5459.                 if (num3 < 0)
  5460.                 {
  5461.                     num3 = 0;
  5462.                 }
  5463.                 if (num4 > Main.maxTilesX)
  5464.                 {
  5465.                     num4 = Main.maxTilesX;
  5466.                 }
  5467.                 if (num5 < 0)
  5468.                 {
  5469.                     num5 = 0;
  5470.                 }
  5471.                 if (num6 > Main.maxTilesY)
  5472.                 {
  5473.                     num6 = Main.maxTilesY;
  5474.                 }
  5475.                 for (int num12 = num3; num12 < num4; num12++)
  5476.                 {
  5477.                     for (int num13 = num5; num13 < num6; num13++)
  5478.                     {
  5479.                         Main.tile[num12, num13].active = false;
  5480.                         WorldGen.PlaceWall(num12, num13, wallType, true);
  5481.                     }
  5482.                 }
  5483.                 if (WorldGen.dSurface)
  5484.                 {
  5485.                     k = 0;
  5486.                 }
  5487.                 value2 += value;
  5488.             }
  5489.             WorldGen.dungeonX = (int)value2.X;
  5490.             WorldGen.dungeonY = (int)value2.Y;
  5491.         }
  5492.         public static void DungeonHalls(int i, int j, int tileType, int wallType, bool forceX = false)
  5493.         {
  5494.             Vector2 value = default(Vector2);
  5495.             double num = (double)WorldGen.genRand.Next(4, 6);
  5496.             Vector2 vector = default(Vector2);
  5497.             Vector2 value2 = default(Vector2);
  5498.             int num2 = 1;
  5499.             Vector2 value3;
  5500.             value3.X = (float)i;
  5501.             value3.Y = (float)j;
  5502.             int k = WorldGen.genRand.Next(35, 80);
  5503.             if (forceX)
  5504.             {
  5505.                 k += 20;
  5506.                 WorldGen.lastDungeonHall = default(Vector2);
  5507.             }
  5508.             else
  5509.             {
  5510.                 if (WorldGen.genRand.Next(5) == 0)
  5511.                 {
  5512.                     num *= 2.0;
  5513.                     k /= 2;
  5514.                 }
  5515.             }
  5516.             bool flag = false;
  5517.             while (!flag)
  5518.             {
  5519.                 if (WorldGen.genRand.Next(2) == 0)
  5520.                 {
  5521.                     num2 = -1;
  5522.                 }
  5523.                 else
  5524.                 {
  5525.                     num2 = 1;
  5526.                 }
  5527.                 bool flag2 = false;
  5528.                 if (WorldGen.genRand.Next(2) == 0)
  5529.                 {
  5530.                     flag2 = true;
  5531.                 }
  5532.                 if (forceX)
  5533.                 {
  5534.                     flag2 = true;
  5535.                 }
  5536.                 if (flag2)
  5537.                 {
  5538.                     vector.Y = 0f;
  5539.                     vector.X = (float)num2;
  5540.                     value2.Y = 0f;
  5541.                     value2.X = (float)(-(float)num2);
  5542.                     value.Y = 0f;
  5543.                     value.X = (float)num2;
  5544.                     if (WorldGen.genRand.Next(3) == 0)
  5545.                     {
  5546.                         if (WorldGen.genRand.Next(2) == 0)
  5547.                         {
  5548.                             value.Y = -0.2f;
  5549.                         }
  5550.                         else
  5551.                         {
  5552.                             value.Y = 0.2f;
  5553.                         }
  5554.                     }
  5555.                 }
  5556.                 else
  5557.                 {
  5558.                     num += 1.0;
  5559.                     value.Y = (float)num2;
  5560.                     value.X = 0f;
  5561.                     vector.X = 0f;
  5562.                     vector.Y = (float)num2;
  5563.                     value2.X = 0f;
  5564.                     value2.Y = (float)(-(float)num2);
  5565.                     if (WorldGen.genRand.Next(2) == 0)
  5566.                     {
  5567.                         if (WorldGen.genRand.Next(2) == 0)
  5568.                         {
  5569.                             value.X = 0.3f;
  5570.                         }
  5571.                         else
  5572.                         {
  5573.                             value.X = -0.3f;
  5574.                         }
  5575.                     }
  5576.                     else
  5577.                     {
  5578.                         k /= 2;
  5579.                     }
  5580.                 }
  5581.                 if (WorldGen.lastDungeonHall != value2)
  5582.                 {
  5583.                     flag = true;
  5584.                 }
  5585.             }
  5586.             if (!forceX)
  5587.             {
  5588.                 if (value3.X > (float)(WorldGen.lastMaxTilesX - 200))
  5589.                 {
  5590.                     num2 = -1;
  5591.                     vector.Y = 0f;
  5592.                     vector.X = (float)num2;
  5593.                     value.Y = 0f;
  5594.                     value.X = (float)num2;
  5595.                     if (WorldGen.genRand.Next(3) == 0)
  5596.                     {
  5597.                         if (WorldGen.genRand.Next(2) == 0)
  5598.                         {
  5599.                             value.Y = -0.2f;
  5600.                         }
  5601.                         else
  5602.                         {
  5603.                             value.Y = 0.2f;
  5604.                         }
  5605.                     }
  5606.                 }
  5607.                 else
  5608.                 {
  5609.                     if (value3.X < 200f)
  5610.                     {
  5611.                         num2 = 1;
  5612.                         vector.Y = 0f;
  5613.                         vector.X = (float)num2;
  5614.                         value.Y = 0f;
  5615.                         value.X = (float)num2;
  5616.                         if (WorldGen.genRand.Next(3) == 0)
  5617.                         {
  5618.                             if (WorldGen.genRand.Next(2) == 0)
  5619.                             {
  5620.                                 value.Y = -0.2f;
  5621.                             }
  5622.                             else
  5623.                             {
  5624.                                 value.Y = 0.2f;
  5625.                             }
  5626.                         }
  5627.                     }
  5628.                     else
  5629.                     {
  5630.                         if (value3.Y > (float)(WorldGen.lastMaxTilesY + 200))
  5631.                         {
  5632.                             num2 = -1;
  5633.                             num += 1.0;
  5634.                             value.Y = (float)num2;
  5635.                             value.X = 0f;
  5636.                             vector.X = 0f;
  5637.                             vector.Y = (float)num2;
  5638.                             if (WorldGen.genRand.Next(2) == 0)
  5639.                             {
  5640.                                 if (WorldGen.genRand.Next(2) == 0)
  5641.                                 {
  5642.                                     value.X = 0.3f;
  5643.                                 }
  5644.                                 else
  5645.                                 {
  5646.                                     value.X = -0.3f;
  5647.                                 }
  5648.                             }
  5649.                         }
  5650.                         else
  5651.                         {
  5652.                             if ((double)value3.Y < Main.rockLayer)
  5653.                             {
  5654.                                 num2 = 1;
  5655.                                 num += 1.0;
  5656.                                 value.Y = (float)num2;
  5657.                                 value.X = 0f;
  5658.                                 vector.X = 0f;
  5659.                                 vector.Y = (float)num2;
  5660.                                 if (WorldGen.genRand.Next(2) == 0)
  5661.                                 {
  5662.                                     if (WorldGen.genRand.Next(2) == 0)
  5663.                                     {
  5664.                                         value.X = 0.3f;
  5665.                                     }
  5666.                                     else
  5667.                                     {
  5668.                                         value.X = -0.3f;
  5669.                                     }
  5670.                                 }
  5671.                             }
  5672.                             else
  5673.                             {
  5674.                                 if (value3.X < (float)(Main.maxTilesX / 2) && (double)value3.X > (double)Main.maxTilesX * 0.25)
  5675.                                 {
  5676.                                     num2 = -1;
  5677.                                     vector.Y = 0f;
  5678.                                     vector.X = (float)num2;
  5679.                                     value.Y = 0f;
  5680.                                     value.X = (float)num2;
  5681.                                     if (WorldGen.genRand.Next(3) == 0)
  5682.                                     {
  5683.                                         if (WorldGen.genRand.Next(2) == 0)
  5684.                                         {
  5685.                                             value.Y = -0.2f;
  5686.                                         }
  5687.                                         else
  5688.                                         {
  5689.                                             value.Y = 0.2f;
  5690.                                         }
  5691.                                     }
  5692.                                 }
  5693.                                 else
  5694.                                 {
  5695.                                     if (value3.X > (float)(Main.maxTilesX / 2) && (double)value3.X < (double)Main.maxTilesX * 0.75)
  5696.                                     {
  5697.                                         num2 = 1;
  5698.                                         vector.Y = 0f;
  5699.                                         vector.X = (float)num2;
  5700.                                         value.Y = 0f;
  5701.                                         value.X = (float)num2;
  5702.                                         if (WorldGen.genRand.Next(3) == 0)
  5703.                                         {
  5704.                                             if (WorldGen.genRand.Next(2) == 0)
  5705.                                             {
  5706.                                                 value.Y = -0.2f;
  5707.                                             }
  5708.                                             else
  5709.                                             {
  5710.                                                 value.Y = 0.2f;
  5711.                                             }
  5712.                                         }
  5713.                                     }
  5714.                                 }
  5715.                             }
  5716.                         }
  5717.                     }
  5718.                 }
  5719.             }
  5720.             if (vector.Y == 0f)
  5721.             {
  5722.                 WorldGen.DDoorX[WorldGen.numDDoors] = (int)value3.X;
  5723.                 WorldGen.DDoorY[WorldGen.numDDoors] = (int)value3.Y;
  5724.                 WorldGen.DDoorPos[WorldGen.numDDoors] = 0;
  5725.                 WorldGen.numDDoors++;
  5726.             }
  5727.             else
  5728.             {
  5729.                 WorldGen.DPlatX[WorldGen.numDPlats] = (int)value3.X;
  5730.                 WorldGen.DPlatY[WorldGen.numDPlats] = (int)value3.Y;
  5731.                 WorldGen.numDPlats++;
  5732.             }
  5733.             WorldGen.lastDungeonHall = vector;
  5734.             while (k > 0)
  5735.             {
  5736.                 if (vector.X > 0f && value3.X > (float)(Main.maxTilesX - 100))
  5737.                 {
  5738.                     k = 0;
  5739.                 }
  5740.                 else
  5741.                 {
  5742.                     if (vector.X < 0f && value3.X < 100f)
  5743.                     {
  5744.                         k = 0;
  5745.                     }
  5746.                     else
  5747.                     {
  5748.                         if (vector.Y > 0f && value3.Y > (float)(Main.maxTilesY - 100))
  5749.                         {
  5750.                             k = 0;
  5751.                         }
  5752.                         else
  5753.                         {
  5754.                             if (vector.Y < 0f && (double)value3.Y < Main.rockLayer + 50.0)
  5755.                             {
  5756.                                 k = 0;
  5757.                             }
  5758.                         }
  5759.                     }
  5760.                 }
  5761.                 k--;
  5762.                 int num3 = (int)((double)value3.X - num - 4.0 - (double)WorldGen.genRand.Next(6));
  5763.                 int num4 = (int)((double)value3.X + num + 4.0 + (double)WorldGen.genRand.Next(6));
  5764.                 int num5 = (int)((double)value3.Y - num - 4.0 - (double)WorldGen.genRand.Next(6));
  5765.                 int num6 = (int)((double)value3.Y + num + 4.0 + (double)WorldGen.genRand.Next(6));
  5766.                 if (num3 < 0)
  5767.                 {
  5768.                     num3 = 0;
  5769.                 }
  5770.                 if (num4 > Main.maxTilesX)
  5771.                 {
  5772.                     num4 = Main.maxTilesX;
  5773.                 }
  5774.                 if (num5 < 0)
  5775.                 {
  5776.                     num5 = 0;
  5777.                 }
  5778.                 if (num6 > Main.maxTilesY)
  5779.                 {
  5780.                     num6 = Main.maxTilesY;
  5781.                 }
  5782.                 for (int l = num3; l < num4; l++)
  5783.                 {
  5784.                     for (int m = num5; m < num6; m++)
  5785.                     {
  5786.                         Main.tile[l, m].liquid = 0;
  5787.                         if (Main.tile[l, m].wall == 0)
  5788.                         {
  5789.                             Main.tile[l, m].active = true;
  5790.                             Main.tile[l, m].type = (byte)tileType;
  5791.                         }
  5792.                     }
  5793.                 }
  5794.                 for (int n = num3 + 1; n < num4 - 1; n++)
  5795.                 {
  5796.                     for (int num7 = num5 + 1; num7 < num6 - 1; num7++)
  5797.                     {
  5798.                         WorldGen.PlaceWall(n, num7, wallType, true);
  5799.                     }
  5800.                 }
  5801.                 int num8 = 0;
  5802.                 if (value.Y == 0f && WorldGen.genRand.Next((int)num + 1) == 0)
  5803.                 {
  5804.                     num8 = WorldGen.genRand.Next(1, 3);
  5805.                 }
  5806.                 else
  5807.                 {
  5808.                     if (value.X == 0f && WorldGen.genRand.Next((int)num - 1) == 0)
  5809.                     {
  5810.                         num8 = WorldGen.genRand.Next(1, 3);
  5811.                     }
  5812.                     else
  5813.                     {
  5814.                         if (WorldGen.genRand.Next((int)num * 3) == 0)
  5815.                         {
  5816.                             num8 = WorldGen.genRand.Next(1, 3);
  5817.                         }
  5818.                     }
  5819.                 }
  5820.                 num3 = (int)((double)value3.X - num * 0.5 - (double)num8);
  5821.                 num4 = (int)((double)value3.X + num * 0.5 + (double)num8);
  5822.                 num5 = (int)((double)value3.Y - num * 0.5 - (double)num8);
  5823.                 num6 = (int)((double)value3.Y + num * 0.5 + (double)num8);
  5824.                 if (num3 < 0)
  5825.                 {
  5826.                     num3 = 0;
  5827.                 }
  5828.                 if (num4 > Main.maxTilesX)
  5829.                 {
  5830.                     num4 = Main.maxTilesX;
  5831.                 }
  5832.                 if (num5 < 0)
  5833.                 {
  5834.                     num5 = 0;
  5835.                 }
  5836.                 if (num6 > Main.maxTilesY)
  5837.                 {
  5838.                     num6 = Main.maxTilesY;
  5839.                 }
  5840.                 for (int num9 = num3; num9 < num4; num9++)
  5841.                 {
  5842.                     for (int num10 = num5; num10 < num6; num10++)
  5843.                     {
  5844.                         Main.tile[num9, num10].active = false;
  5845.                         Main.tile[num9, num10].wall = (byte)wallType;
  5846.                     }
  5847.                 }
  5848.                 value3 += value;
  5849.             }
  5850.             WorldGen.dungeonX = (int)value3.X;
  5851.             WorldGen.dungeonY = (int)value3.Y;
  5852.             if (vector.Y == 0f)
  5853.             {
  5854.                 WorldGen.DDoorX[WorldGen.numDDoors] = (int)value3.X;
  5855.                 WorldGen.DDoorY[WorldGen.numDDoors] = (int)value3.Y;
  5856.                 WorldGen.DDoorPos[WorldGen.numDDoors] = 0;
  5857.                 WorldGen.numDDoors++;
  5858.                 return;
  5859.             }
  5860.             WorldGen.DPlatX[WorldGen.numDPlats] = (int)value3.X;
  5861.             WorldGen.DPlatY[WorldGen.numDPlats] = (int)value3.Y;
  5862.             WorldGen.numDPlats++;
  5863.         }
  5864.         public static void DungeonRoom(int i, int j, int tileType, int wallType)
  5865.         {
  5866.             double num = (double)WorldGen.genRand.Next(15, 30);
  5867.             Vector2 value;
  5868.             value.X = (float)WorldGen.genRand.Next(-10, 11) * 0.1f;
  5869.             value.Y = (float)WorldGen.genRand.Next(-10, 11) * 0.1f;
  5870.             Vector2 value2;
  5871.             value2.X = (float)i;
  5872.             value2.Y = (float)j - (float)num / 2f;
  5873.             int k = WorldGen.genRand.Next(10, 20);
  5874.             double num2 = (double)value2.X;
  5875.             double num3 = (double)value2.X;
  5876.             double num4 = (double)value2.Y;
  5877.             double num5 = (double)value2.Y;
  5878.             while (k > 0)
  5879.             {
  5880.                 k--;
  5881.                 int num6 = (int)((double)value2.X - num * 0.800000011920929 - 5.0);
  5882.                 int num7 = (int)((double)value2.X + num * 0.800000011920929 + 5.0);
  5883.                 int num8 = (int)((double)value2.Y - num * 0.800000011920929 - 5.0);
  5884.                 int num9 = (int)((double)value2.Y + num * 0.800000011920929 + 5.0);
  5885.                 if (num6 < 0)
  5886.                 {
  5887.                     num6 = 0;
  5888.                 }
  5889.                 if (num7 > Main.maxTilesX)
  5890.                 {
  5891.                     num7 = Main.maxTilesX;
  5892.                 }
  5893.                 if (num8 < 0)
  5894.                 {
  5895.                     num8 = 0;
  5896.                 }
  5897.                 if (num9 > Main.maxTilesY)
  5898.                 {
  5899.                     num9 = Main.maxTilesY;
  5900.                 }
  5901.                 for (int l = num6; l < num7; l++)
  5902.                 {
  5903.                     for (int m = num8; m < num9; m++)
  5904.                     {
  5905.                         Main.tile[l, m].liquid = 0;
  5906.                         if (Main.tile[l, m].wall == 0)
  5907.                         {
  5908.                             Main.tile[l, m].active = true;
  5909.                             Main.tile[l, m].type = (byte)tileType;
  5910.                         }
  5911.                     }
  5912.                 }
  5913.                 for (int n = num6 + 1; n < num7 - 1; n++)
  5914.                 {
  5915.                     for (int num10 = num8 + 1; num10 < num9 - 1; num10++)
  5916.                     {
  5917.                         WorldGen.PlaceWall(n, num10, wallType, true);
  5918.                     }
  5919.                 }
  5920.                 num6 = (int)((double)value2.X - num * 0.5);
  5921.                 num7 = (int)((double)value2.X + num * 0.5);
  5922.                 num8 = (int)((double)value2.Y - num * 0.5);
  5923.                 num9 = (int)((double)value2.Y + num * 0.5);
  5924.                 if (num6 < 0)
  5925.                 {
  5926.                     num6 = 0;
  5927.                 }
  5928.                 if (num7 > Main.maxTilesX)
  5929.                 {
  5930.                     num7 = Main.maxTilesX;
  5931.                 }
  5932.                 if (num8 < 0)
  5933.                 {
  5934.                     num8 = 0;
  5935.                 }
  5936.                 if (num9 > Main.maxTilesY)
  5937.                 {
  5938.                     num9 = Main.maxTilesY;
  5939.                 }
  5940.                 if ((double)num6 < num2)
  5941.                 {
  5942.                     num2 = (double)num6;
  5943.                 }
  5944.                 if ((double)num7 > num3)
  5945.                 {
  5946.                     num3 = (double)num7;
  5947.                 }
  5948.                 if ((double)num8 < num4)
  5949.                 {
  5950.                     num4 = (double)num8;
  5951.                 }
  5952.                 if ((double)num9 > num5)
  5953.                 {
  5954.                     num5 = (double)num9;
  5955.                 }
  5956.                 for (int num11 = num6; num11 < num7; num11++)
  5957.                 {
  5958.                     for (int num12 = num8; num12 < num9; num12++)
  5959.                     {
  5960.                         Main.tile[num11, num12].active = false;
  5961.                         Main.tile[num11, num12].wall = (byte)wallType;
  5962.                     }
  5963.                 }
  5964.                 value2 += value;
  5965.                 value.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  5966.                 value.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  5967.                 if (value.X > 1f)
  5968.                 {
  5969.                     value.X = 1f;
  5970.                 }
  5971.                 if (value.X < -1f)
  5972.                 {
  5973.                     value.X = -1f;
  5974.                 }
  5975.                 if (value.Y > 1f)
  5976.                 {
  5977.                     value.Y = 1f;
  5978.                 }
  5979.                 if (value.Y < -1f)
  5980.                 {
  5981.                     value.Y = -1f;
  5982.                 }
  5983.             }
  5984.             WorldGen.dRoomX[WorldGen.numDRooms] = (int)value2.X;
  5985.             WorldGen.dRoomY[WorldGen.numDRooms] = (int)value2.Y;
  5986.             WorldGen.dRoomSize[WorldGen.numDRooms] = (int)num;
  5987.             WorldGen.dRoomL[WorldGen.numDRooms] = (int)num2;
  5988.             WorldGen.dRoomR[WorldGen.numDRooms] = (int)num3;
  5989.             WorldGen.dRoomT[WorldGen.numDRooms] = (int)num4;
  5990.             WorldGen.dRoomB[WorldGen.numDRooms] = (int)num5;
  5991.             WorldGen.dRoomTreasure[WorldGen.numDRooms] = false;
  5992.             WorldGen.numDRooms++;
  5993.         }
  5994.         public static void DungeonEnt(int i, int j, int tileType, int wallType)
  5995.         {
  5996.             double num = WorldGen.dxStrength1;
  5997.             double num2 = WorldGen.dyStrength1;
  5998.             Vector2 vector;
  5999.             vector.X = (float)i;
  6000.             vector.Y = (float)j - (float)num2 / 2f;
  6001.             WorldGen.dMinY = (int)vector.Y;
  6002.             int num3 = 1;
  6003.             if (i > Main.maxTilesX / 2)
  6004.             {
  6005.                 num3 = -1;
  6006.             }
  6007.             int num4 = (int)((double)vector.X - num * 0.60000002384185791 - (double)WorldGen.genRand.Next(2, 5));
  6008.             int num5 = (int)((double)vector.X + num * 0.60000002384185791 + (double)WorldGen.genRand.Next(2, 5));
  6009.             int num6 = (int)((double)vector.Y - num2 * 0.60000002384185791 - (double)WorldGen.genRand.Next(2, 5));
  6010.             int num7 = (int)((double)vector.Y + num2 * 0.60000002384185791 + (double)WorldGen.genRand.Next(8, 16));
  6011.             if (num4 < 0)
  6012.             {
  6013.                 num4 = 0;
  6014.             }
  6015.             if (num5 > Main.maxTilesX)
  6016.             {
  6017.                 num5 = Main.maxTilesX;
  6018.             }
  6019.             if (num6 < 0)
  6020.             {
  6021.                 num6 = 0;
  6022.             }
  6023.             if (num7 > Main.maxTilesY)
  6024.             {
  6025.                 num7 = Main.maxTilesY;
  6026.             }
  6027.             for (int k = num4; k < num5; k++)
  6028.             {
  6029.                 for (int l = num6; l < num7; l++)
  6030.                 {
  6031.                     Main.tile[k, l].liquid = 0;
  6032.                     if ((int)Main.tile[k, l].wall != wallType)
  6033.                     {
  6034.                         Main.tile[k, l].wall = 0;
  6035.                         if (k > num4 + 1 && k < num5 - 2 && l > num6 + 1 && l < num7 - 2)
  6036.                         {
  6037.                             WorldGen.PlaceWall(k, l, wallType, true);
  6038.                         }
  6039.                         Main.tile[k, l].active = true;
  6040.                         Main.tile[k, l].type = (byte)tileType;
  6041.                     }
  6042.                 }
  6043.             }
  6044.             int num8 = num4;
  6045.             int num9 = num4 + 5 + WorldGen.genRand.Next(4);
  6046.             int num10 = num6 - 3 - WorldGen.genRand.Next(3);
  6047.             int num11 = num6;
  6048.             for (int m = num8; m < num9; m++)
  6049.             {
  6050.                 for (int n = num10; n < num11; n++)
  6051.                 {
  6052.                     if ((int)Main.tile[m, n].wall != wallType)
  6053.                     {
  6054.                         Main.tile[m, n].active = true;
  6055.                         Main.tile[m, n].type = (byte)tileType;
  6056.                     }
  6057.                 }
  6058.             }
  6059.             num8 = num5 - 5 - WorldGen.genRand.Next(4);
  6060.             num9 = num5;
  6061.             num10 = num6 - 3 - WorldGen.genRand.Next(3);
  6062.             num11 = num6;
  6063.             for (int num12 = num8; num12 < num9; num12++)
  6064.             {
  6065.                 for (int num13 = num10; num13 < num11; num13++)
  6066.                 {
  6067.                     if ((int)Main.tile[num12, num13].wall != wallType)
  6068.                     {
  6069.                         Main.tile[num12, num13].active = true;
  6070.                         Main.tile[num12, num13].type = (byte)tileType;
  6071.                     }
  6072.                 }
  6073.             }
  6074.             int num14 = 1 + WorldGen.genRand.Next(2);
  6075.             int num15 = 2 + WorldGen.genRand.Next(4);
  6076.             int num16 = 0;
  6077.             for (int num17 = num4; num17 < num5; num17++)
  6078.             {
  6079.                 for (int num18 = num6 - num14; num18 < num6; num18++)
  6080.                 {
  6081.                     if ((int)Main.tile[num17, num18].wall != wallType)
  6082.                     {
  6083.                         Main.tile[num17, num18].active = true;
  6084.                         Main.tile[num17, num18].type = (byte)tileType;
  6085.                     }
  6086.                 }
  6087.                 num16++;
  6088.                 if (num16 >= num15)
  6089.                 {
  6090.                     num17 += num15;
  6091.                     num16 = 0;
  6092.                 }
  6093.             }
  6094.             for (int num19 = num4; num19 < num5; num19++)
  6095.             {
  6096.                 for (int num20 = num7; num20 < num7 + 100; num20++)
  6097.                 {
  6098.                     WorldGen.PlaceWall(num19, num20, 2, true);
  6099.                 }
  6100.             }
  6101.             num4 = (int)((double)vector.X - num * 0.60000002384185791);
  6102.             num5 = (int)((double)vector.X + num * 0.60000002384185791);
  6103.             num6 = (int)((double)vector.Y - num2 * 0.60000002384185791);
  6104.             num7 = (int)((double)vector.Y + num2 * 0.60000002384185791);
  6105.             if (num4 < 0)
  6106.             {
  6107.                 num4 = 0;
  6108.             }
  6109.             if (num5 > Main.maxTilesX)
  6110.             {
  6111.                 num5 = Main.maxTilesX;
  6112.             }
  6113.             if (num6 < 0)
  6114.             {
  6115.                 num6 = 0;
  6116.             }
  6117.             if (num7 > Main.maxTilesY)
  6118.             {
  6119.                 num7 = Main.maxTilesY;
  6120.             }
  6121.             for (int num21 = num4; num21 < num5; num21++)
  6122.             {
  6123.                 for (int num22 = num6; num22 < num7; num22++)
  6124.                 {
  6125.                     WorldGen.PlaceWall(num21, num22, wallType, true);
  6126.                 }
  6127.             }
  6128.             num4 = (int)((double)vector.X - num * 0.6 - 1.0);
  6129.             num5 = (int)((double)vector.X + num * 0.6 + 1.0);
  6130.             num6 = (int)((double)vector.Y - num2 * 0.6 - 1.0);
  6131.             num7 = (int)((double)vector.Y + num2 * 0.6 + 1.0);
  6132.             if (num4 < 0)
  6133.             {
  6134.                 num4 = 0;
  6135.             }
  6136.             if (num5 > Main.maxTilesX)
  6137.             {
  6138.                 num5 = Main.maxTilesX;
  6139.             }
  6140.             if (num6 < 0)
  6141.             {
  6142.                 num6 = 0;
  6143.             }
  6144.             if (num7 > Main.maxTilesY)
  6145.             {
  6146.                 num7 = Main.maxTilesY;
  6147.             }
  6148.             for (int num23 = num4; num23 < num5; num23++)
  6149.             {
  6150.                 for (int num24 = num6; num24 < num7; num24++)
  6151.                 {
  6152.                     Main.tile[num23, num24].wall = (byte)wallType;
  6153.                 }
  6154.             }
  6155.             num4 = (int)((double)vector.X - num * 0.5);
  6156.             num5 = (int)((double)vector.X + num * 0.5);
  6157.             num6 = (int)((double)vector.Y - num2 * 0.5);
  6158.             num7 = (int)((double)vector.Y + num2 * 0.5);
  6159.             if (num4 < 0)
  6160.             {
  6161.                 num4 = 0;
  6162.             }
  6163.             if (num5 > Main.maxTilesX)
  6164.             {
  6165.                 num5 = Main.maxTilesX;
  6166.             }
  6167.             if (num6 < 0)
  6168.             {
  6169.                 num6 = 0;
  6170.             }
  6171.             if (num7 > Main.maxTilesY)
  6172.             {
  6173.                 num7 = Main.maxTilesY;
  6174.             }
  6175.             for (int num25 = num4; num25 < num5; num25++)
  6176.             {
  6177.                 for (int num26 = num6; num26 < num7; num26++)
  6178.                 {
  6179.                     Main.tile[num25, num26].active = false;
  6180.                     Main.tile[num25, num26].wall = (byte)wallType;
  6181.                 }
  6182.             }
  6183.             WorldGen.DPlatX[WorldGen.numDPlats] = (int)vector.X;
  6184.             WorldGen.DPlatY[WorldGen.numDPlats] = num7;
  6185.             WorldGen.numDPlats++;
  6186.             vector.X += (float)num * 0.6f * (float)num3;
  6187.             vector.Y += (float)num2 * 0.5f;
  6188.             num = WorldGen.dxStrength2;
  6189.             num2 = WorldGen.dyStrength2;
  6190.             vector.X += (float)num * 0.55f * (float)num3;
  6191.             vector.Y -= (float)num2 * 0.5f;
  6192.             num4 = (int)((double)vector.X - num * 0.60000002384185791 - (double)WorldGen.genRand.Next(1, 3));
  6193.             num5 = (int)((double)vector.X + num * 0.60000002384185791 + (double)WorldGen.genRand.Next(1, 3));
  6194.             num6 = (int)((double)vector.Y - num2 * 0.60000002384185791 - (double)WorldGen.genRand.Next(1, 3));
  6195.             num7 = (int)((double)vector.Y + num2 * 0.60000002384185791 + (double)WorldGen.genRand.Next(6, 16));
  6196.             if (num4 < 0)
  6197.             {
  6198.                 num4 = 0;
  6199.             }
  6200.             if (num5 > Main.maxTilesX)
  6201.             {
  6202.                 num5 = Main.maxTilesX;
  6203.             }
  6204.             if (num6 < 0)
  6205.             {
  6206.                 num6 = 0;
  6207.             }
  6208.             if (num7 > Main.maxTilesY)
  6209.             {
  6210.                 num7 = Main.maxTilesY;
  6211.             }
  6212.             for (int num27 = num4; num27 < num5; num27++)
  6213.             {
  6214.                 for (int num28 = num6; num28 < num7; num28++)
  6215.                 {
  6216.                     if ((int)Main.tile[num27, num28].wall != wallType)
  6217.                     {
  6218.                         bool flag = true;
  6219.                         if (num3 < 0)
  6220.                         {
  6221.                             if ((double)num27 < (double)vector.X - num * 0.5)
  6222.                             {
  6223.                                 flag = false;
  6224.                             }
  6225.                         }
  6226.                         else
  6227.                         {
  6228.                             if ((double)num27 > (double)vector.X + num * 0.5 - 1.0)
  6229.                             {
  6230.                                 flag = false;
  6231.                             }
  6232.                         }
  6233.                         if (flag)
  6234.                         {
  6235.                             Main.tile[num27, num28].wall = 0;
  6236.                             Main.tile[num27, num28].active = true;
  6237.                             Main.tile[num27, num28].type = (byte)tileType;
  6238.                         }
  6239.                     }
  6240.                 }
  6241.             }
  6242.             for (int num29 = num4; num29 < num5; num29++)
  6243.             {
  6244.                 for (int num30 = num7; num30 < num7 + 100; num30++)
  6245.                 {
  6246.                     WorldGen.PlaceWall(num29, num30, 2, true);
  6247.                 }
  6248.             }
  6249.             num4 = (int)((double)vector.X - num * 0.5);
  6250.             num5 = (int)((double)vector.X + num * 0.5);
  6251.             num8 = num4;
  6252.             if (num3 < 0)
  6253.             {
  6254.                 num8++;
  6255.             }
  6256.             num9 = num8 + 5 + WorldGen.genRand.Next(4);
  6257.             num10 = num6 - 3 - WorldGen.genRand.Next(3);
  6258.             num11 = num6;
  6259.             for (int num31 = num8; num31 < num9; num31++)
  6260.             {
  6261.                 for (int num32 = num10; num32 < num11; num32++)
  6262.                 {
  6263.                     if ((int)Main.tile[num31, num32].wall != wallType)
  6264.                     {
  6265.                         Main.tile[num31, num32].active = true;
  6266.                         Main.tile[num31, num32].type = (byte)tileType;
  6267.                     }
  6268.                 }
  6269.             }
  6270.             num8 = num5 - 5 - WorldGen.genRand.Next(4);
  6271.             num9 = num5;
  6272.             num10 = num6 - 3 - WorldGen.genRand.Next(3);
  6273.             num11 = num6;
  6274.             for (int num33 = num8; num33 < num9; num33++)
  6275.             {
  6276.                 for (int num34 = num10; num34 < num11; num34++)
  6277.                 {
  6278.                     if ((int)Main.tile[num33, num34].wall != wallType)
  6279.                     {
  6280.                         Main.tile[num33, num34].active = true;
  6281.                         Main.tile[num33, num34].type = (byte)tileType;
  6282.                     }
  6283.                 }
  6284.             }
  6285.             num14 = 1 + WorldGen.genRand.Next(2);
  6286.             num15 = 2 + WorldGen.genRand.Next(4);
  6287.             num16 = 0;
  6288.             if (num3 < 0)
  6289.             {
  6290.                 num5++;
  6291.             }
  6292.             for (int num35 = num4 + 1; num35 < num5 - 1; num35++)
  6293.             {
  6294.                 for (int num36 = num6 - num14; num36 < num6; num36++)
  6295.                 {
  6296.                     if ((int)Main.tile[num35, num36].wall != wallType)
  6297.                     {
  6298.                         Main.tile[num35, num36].active = true;
  6299.                         Main.tile[num35, num36].type = (byte)tileType;
  6300.                     }
  6301.                 }
  6302.                 num16++;
  6303.                 if (num16 >= num15)
  6304.                 {
  6305.                     num35 += num15;
  6306.                     num16 = 0;
  6307.                 }
  6308.             }
  6309.             num4 = (int)((double)vector.X - num * 0.6);
  6310.             num5 = (int)((double)vector.X + num * 0.6);
  6311.             num6 = (int)((double)vector.Y - num2 * 0.6);
  6312.             num7 = (int)((double)vector.Y + num2 * 0.6);
  6313.             if (num4 < 0)
  6314.             {
  6315.                 num4 = 0;
  6316.             }
  6317.             if (num5 > Main.maxTilesX)
  6318.             {
  6319.                 num5 = Main.maxTilesX;
  6320.             }
  6321.             if (num6 < 0)
  6322.             {
  6323.                 num6 = 0;
  6324.             }
  6325.             if (num7 > Main.maxTilesY)
  6326.             {
  6327.                 num7 = Main.maxTilesY;
  6328.             }
  6329.             for (int num37 = num4; num37 < num5; num37++)
  6330.             {
  6331.                 for (int num38 = num6; num38 < num7; num38++)
  6332.                 {
  6333.                     Main.tile[num37, num38].wall = 0;
  6334.                 }
  6335.             }
  6336.             num4 = (int)((double)vector.X - num * 0.5);
  6337.             num5 = (int)((double)vector.X + num * 0.5);
  6338.             num6 = (int)((double)vector.Y - num2 * 0.5);
  6339.             num7 = (int)((double)vector.Y + num2 * 0.5);
  6340.             if (num4 < 0)
  6341.             {
  6342.                 num4 = 0;
  6343.             }
  6344.             if (num5 > Main.maxTilesX)
  6345.             {
  6346.                 num5 = Main.maxTilesX;
  6347.             }
  6348.             if (num6 < 0)
  6349.             {
  6350.                 num6 = 0;
  6351.             }
  6352.             if (num7 > Main.maxTilesY)
  6353.             {
  6354.                 num7 = Main.maxTilesY;
  6355.             }
  6356.             for (int num39 = num4; num39 < num5; num39++)
  6357.             {
  6358.                 for (int num40 = num6; num40 < num7; num40++)
  6359.                 {
  6360.                     Main.tile[num39, num40].active = false;
  6361.                     Main.tile[num39, num40].wall = 0;
  6362.                 }
  6363.             }
  6364.             for (int num41 = num4; num41 < num5; num41++)
  6365.             {
  6366.                 if (!Main.tile[num41, num7].active)
  6367.                 {
  6368.                     Main.tile[num41, num7].active = true;
  6369.                     Main.tile[num41, num7].type = 19;
  6370.                 }
  6371.             }
  6372.             Main.dungeonX = (int)vector.X;
  6373.             Main.dungeonY = num7;
  6374.             int num42 = NPC.NewNPC(WorldGen.dungeonX * 16 + 8, WorldGen.dungeonY * 16, 37, 0);
  6375.             Main.npc[num42].homeless = false;
  6376.             Main.npc[num42].homeTileX = Main.dungeonX;
  6377.             Main.npc[num42].homeTileY = Main.dungeonY;
  6378.             if (num3 == 1)
  6379.             {
  6380.                 int num43 = 0;
  6381.                 for (int num44 = num5; num44 < num5 + 25; num44++)
  6382.                 {
  6383.                     num43++;
  6384.                     for (int num45 = num7 + num43; num45 < num7 + 25; num45++)
  6385.                     {
  6386.                         Main.tile[num44, num45].active = true;
  6387.                         Main.tile[num44, num45].type = (byte)tileType;
  6388.                     }
  6389.                 }
  6390.             }
  6391.             else
  6392.             {
  6393.                 int num46 = 0;
  6394.                 for (int num47 = num4; num47 > num4 - 25; num47--)
  6395.                 {
  6396.                     num46++;
  6397.                     for (int num48 = num7 + num46; num48 < num7 + 25; num48++)
  6398.                     {
  6399.                         Main.tile[num47, num48].active = true;
  6400.                         Main.tile[num47, num48].type = (byte)tileType;
  6401.                     }
  6402.                 }
  6403.             }
  6404.             num14 = 1 + WorldGen.genRand.Next(2);
  6405.             num15 = 2 + WorldGen.genRand.Next(4);
  6406.             num16 = 0;
  6407.             num4 = (int)((double)vector.X - num * 0.5);
  6408.             num5 = (int)((double)vector.X + num * 0.5);
  6409.             num4 += 2;
  6410.             num5 -= 2;
  6411.             for (int num49 = num4; num49 < num5; num49++)
  6412.             {
  6413.                 for (int num50 = num6; num50 < num7; num50++)
  6414.                 {
  6415.                     WorldGen.PlaceWall(num49, num50, wallType, true);
  6416.                 }
  6417.                 num16++;
  6418.                 if (num16 >= num15)
  6419.                 {
  6420.                     num49 += num15 * 2;
  6421.                     num16 = 0;
  6422.                 }
  6423.             }
  6424.             vector.X -= (float)num * 0.6f * (float)num3;
  6425.             vector.Y += (float)num2 * 0.5f;
  6426.             num = 15.0;
  6427.             num2 = 3.0;
  6428.             vector.Y -= (float)num2 * 0.5f;
  6429.             num4 = (int)((double)vector.X - num * 0.5);
  6430.             num5 = (int)((double)vector.X + num * 0.5);
  6431.             num6 = (int)((double)vector.Y - num2 * 0.5);
  6432.             num7 = (int)((double)vector.Y + num2 * 0.5);
  6433.             if (num4 < 0)
  6434.             {
  6435.                 num4 = 0;
  6436.             }
  6437.             if (num5 > Main.maxTilesX)
  6438.             {
  6439.                 num5 = Main.maxTilesX;
  6440.             }
  6441.             if (num6 < 0)
  6442.             {
  6443.                 num6 = 0;
  6444.             }
  6445.             if (num7 > Main.maxTilesY)
  6446.             {
  6447.                 num7 = Main.maxTilesY;
  6448.             }
  6449.             for (int num51 = num4; num51 < num5; num51++)
  6450.             {
  6451.                 for (int num52 = num6; num52 < num7; num52++)
  6452.                 {
  6453.                     Main.tile[num51, num52].active = false;
  6454.                 }
  6455.             }
  6456.             if (num3 < 0)
  6457.             {
  6458.                 vector.X -= 1f;
  6459.             }
  6460.             WorldGen.PlaceTile((int)vector.X, (int)vector.Y + 1, 10, false, false, -1);
  6461.         }
  6462.         public static bool AddBuriedChest(int i, int j, int contain = 0)
  6463.         {
  6464.             if (WorldGen.genRand == null)
  6465.             {
  6466.                 WorldGen.genRand = new Random((int)DateTime.Now.Ticks);
  6467.             }
  6468.             int k = j;
  6469.             while (k < Main.maxTilesY)
  6470.             {
  6471.                 if (Main.tile[i, k].active && Main.tileSolid[(int)Main.tile[i, k].type])
  6472.                 {
  6473.                     int num = k;
  6474.                     int num2 = WorldGen.PlaceChest(i - 1, num - 1, 21);
  6475.                     if (num2 >= 0)
  6476.                     {
  6477.                         int num3 = 0;
  6478.                         while (num3 == 0)
  6479.                         {
  6480.                             if (contain > 0)
  6481.                             {
  6482.                                 Main.chest[num2].item[num3].SetDefaults(contain);
  6483.                                 num3++;
  6484.                             }
  6485.                             else
  6486.                             {
  6487.                                 int num4 = WorldGen.genRand.Next(7);
  6488.                                 if (num4 == 0)
  6489.                                 {
  6490.                                     Main.chest[num2].item[num3].SetDefaults(49);
  6491.                                 }
  6492.                                 if (num4 == 1)
  6493.                                 {
  6494.                                     Main.chest[num2].item[num3].SetDefaults(50);
  6495.                                 }
  6496.                                 if (num4 == 2)
  6497.                                 {
  6498.                                     Main.chest[num2].item[num3].SetDefaults(52);
  6499.                                 }
  6500.                                 if (num4 == 3)
  6501.                                 {
  6502.                                     Main.chest[num2].item[num3].SetDefaults(53);
  6503.                                 }
  6504.                                 if (num4 == 4)
  6505.                                 {
  6506.                                     Main.chest[num2].item[num3].SetDefaults(54);
  6507.                                 }
  6508.                                 if (num4 == 5)
  6509.                                 {
  6510.                                     Main.chest[num2].item[num3].SetDefaults(55);
  6511.                                 }
  6512.                                 if (num4 == 6)
  6513.                                 {
  6514.                                     Main.chest[num2].item[num3].SetDefaults(51);
  6515.                                     Main.chest[num2].item[num3].stack = WorldGen.genRand.Next(26) + 25;
  6516.                                 }
  6517.                                 num3++;
  6518.                             }
  6519.                             if (WorldGen.genRand.Next(3) == 0)
  6520.                             {
  6521.                                 Main.chest[num2].item[num3].SetDefaults(167);
  6522.                                 num3++;
  6523.                             }
  6524.                             if (WorldGen.genRand.Next(2) == 0)
  6525.                             {
  6526.                                 int num5 = WorldGen.genRand.Next(4);
  6527.                                 int stack = WorldGen.genRand.Next(8) + 3;
  6528.                                 if (num5 == 0)
  6529.                                 {
  6530.                                     Main.chest[num2].item[num3].SetDefaults(19);
  6531.                                 }
  6532.                                 if (num5 == 1)
  6533.                                 {
  6534.                                     Main.chest[num2].item[num3].SetDefaults(20);
  6535.                                 }
  6536.                                 if (num5 == 2)
  6537.                                 {
  6538.                                     Main.chest[num2].item[num3].SetDefaults(21);
  6539.                                 }
  6540.                                 if (num5 == 3)
  6541.                                 {
  6542.                                     Main.chest[num2].item[num3].SetDefaults(22);
  6543.                                 }
  6544.                                 Main.chest[num2].item[num3].stack = stack;
  6545.                                 num3++;
  6546.                             }
  6547.                             if (WorldGen.genRand.Next(2) == 0)
  6548.                             {
  6549.                                 int num6 = WorldGen.genRand.Next(2);
  6550.                                 int stack2 = WorldGen.genRand.Next(26) + 25;
  6551.                                 if (num6 == 0)
  6552.                                 {
  6553.                                     Main.chest[num2].item[num3].SetDefaults(40);
  6554.                                 }
  6555.                                 if (num6 == 1)
  6556.                                 {
  6557.                                     Main.chest[num2].item[num3].SetDefaults(42);
  6558.                                 }
  6559.                                 Main.chest[num2].item[num3].stack = stack2;
  6560.                                 num3++;
  6561.                             }
  6562.                             if (WorldGen.genRand.Next(2) == 0)
  6563.                             {
  6564.                                 int num7 = WorldGen.genRand.Next(1);
  6565.                                 int stack3 = WorldGen.genRand.Next(3) + 3;
  6566.                                 if (num7 == 0)
  6567.                                 {
  6568.                                     Main.chest[num2].item[num3].SetDefaults(28);
  6569.                                 }
  6570.                                 Main.chest[num2].item[num3].stack = stack3;
  6571.                                 num3++;
  6572.                             }
  6573.                             if (WorldGen.genRand.Next(2) == 0)
  6574.                             {
  6575.                                 int num8 = WorldGen.genRand.Next(2);
  6576.                                 int stack4 = WorldGen.genRand.Next(11) + 10;
  6577.                                 if (num8 == 0)
  6578.                                 {
  6579.                                     Main.chest[num2].item[num3].SetDefaults(8);
  6580.                                 }
  6581.                                 if (num8 == 1)
  6582.                                 {
  6583.                                     Main.chest[num2].item[num3].SetDefaults(31);
  6584.                                 }
  6585.                                 Main.chest[num2].item[num3].stack = stack4;
  6586.                                 num3++;
  6587.                             }
  6588.                             if (WorldGen.genRand.Next(2) == 0)
  6589.                             {
  6590.                                 Main.chest[num2].item[num3].SetDefaults(73);
  6591.                                 Main.chest[num2].item[num3].stack = WorldGen.genRand.Next(1, 3);
  6592.                                 num3++;
  6593.                             }
  6594.                         }
  6595.                         return true;
  6596.                     }
  6597.                     return false;
  6598.                 }
  6599.                 else
  6600.                 {
  6601.                     k++;
  6602.                 }
  6603.             }
  6604.             return false;
  6605.         }
  6606.         public static bool OpenDoor(int i, int j, int direction)
  6607.         {
  6608.             int num = 0;
  6609.             if (Main.tile[i, j - 1] == null)
  6610.             {
  6611.                 Main.tile[i, j - 1] = new Tile();
  6612.             }
  6613.             if (Main.tile[i, j - 2] == null)
  6614.             {
  6615.                 Main.tile[i, j - 2] = new Tile();
  6616.             }
  6617.             if (Main.tile[i, j + 1] == null)
  6618.             {
  6619.                 Main.tile[i, j + 1] = new Tile();
  6620.             }
  6621.             if (Main.tile[i, j] == null)
  6622.             {
  6623.                 Main.tile[i, j] = new Tile();
  6624.             }
  6625.             if (Main.tile[i, j - 1].frameY == 0 && Main.tile[i, j - 1].type == Main.tile[i, j].type)
  6626.             {
  6627.                 num = j - 1;
  6628.             }
  6629.             else
  6630.             {
  6631.                 if (Main.tile[i, j - 2].frameY == 0 && Main.tile[i, j - 2].type == Main.tile[i, j].type)
  6632.                 {
  6633.                     num = j - 2;
  6634.                 }
  6635.                 else
  6636.                 {
  6637.                     if (Main.tile[i, j + 1].frameY == 0 && Main.tile[i, j + 1].type == Main.tile[i, j].type)
  6638.                     {
  6639.                         num = j + 1;
  6640.                     }
  6641.                     else
  6642.                     {
  6643.                         num = j;
  6644.                     }
  6645.                 }
  6646.             }
  6647.             int num2 = i;
  6648.             short num3 = 0;
  6649.             int num4;
  6650.             if (direction == -1)
  6651.             {
  6652.                 num2 = i - 1;
  6653.                 num3 = 36;
  6654.                 num4 = i - 1;
  6655.             }
  6656.             else
  6657.             {
  6658.                 num2 = i;
  6659.                 num4 = i + 1;
  6660.             }
  6661.             bool flag = true;
  6662.             for (int k = num; k < num + 3; k++)
  6663.             {
  6664.                 if (Main.tile[num4, k] == null)
  6665.                 {
  6666.                     Main.tile[num4, k] = new Tile();
  6667.                 }
  6668.                 if (Main.tile[num4, k].active)
  6669.                 {
  6670.                     if (Main.tile[num4, k].type != 3 && Main.tile[num4, k].type != 24 && Main.tile[num4, k].type != 52 && Main.tile[num4, k].type != 61 && Main.tile[num4, k].type != 62 && Main.tile[num4, k].type != 69 && Main.tile[num4, k].type != 71 && Main.tile[num4, k].type != 73 && Main.tile[num4, k].type != 74)
  6671.                     {
  6672.                         flag = false;
  6673.                         break;
  6674.                     }
  6675.                     WorldGen.KillTile(num4, k, false, false, false);
  6676.                 }
  6677.             }
  6678.             if (flag)
  6679.             {
  6680.                 Main.PlaySound(8, i * 16, j * 16, 1);
  6681.                 Main.tile[num2, num].active = true;
  6682.                 Main.tile[num2, num].type = 11;
  6683.                 Main.tile[num2, num].frameY = 0;
  6684.                 Main.tile[num2, num].frameX = num3;
  6685.                 if (Main.tile[num2 + 1, num] == null)
  6686.                 {
  6687.                     Main.tile[num2 + 1, num] = new Tile();
  6688.                 }
  6689.                 Main.tile[num2 + 1, num].active = true;
  6690.                 Main.tile[num2 + 1, num].type = 11;
  6691.                 Main.tile[num2 + 1, num].frameY = 0;
  6692.                 Main.tile[num2 + 1, num].frameX = (short)(num3 + 18);
  6693.                 if (Main.tile[num2, num + 1] == null)
  6694.                 {
  6695.                     Main.tile[num2, num + 1] = new Tile();
  6696.                 }
  6697.                 Main.tile[num2, num + 1].active = true;
  6698.                 Main.tile[num2, num + 1].type = 11;
  6699.                 Main.tile[num2, num + 1].frameY = 18;
  6700.                 Main.tile[num2, num + 1].frameX = num3;
  6701.                 if (Main.tile[num2 + 1, num + 1] == null)
  6702.                 {
  6703.                     Main.tile[num2 + 1, num + 1] = new Tile();
  6704.                 }
  6705.                 Main.tile[num2 + 1, num + 1].active = true;
  6706.                 Main.tile[num2 + 1, num + 1].type = 11;
  6707.                 Main.tile[num2 + 1, num + 1].frameY = 18;
  6708.                 Main.tile[num2 + 1, num + 1].frameX = (short)(num3 + 18);
  6709.                 if (Main.tile[num2, num + 2] == null)
  6710.                 {
  6711.                     Main.tile[num2, num + 2] = new Tile();
  6712.                 }
  6713.                 Main.tile[num2, num + 2].active = true;
  6714.                 Main.tile[num2, num + 2].type = 11;
  6715.                 Main.tile[num2, num + 2].frameY = 36;
  6716.                 Main.tile[num2, num + 2].frameX = num3;
  6717.                 if (Main.tile[num2 + 1, num + 2] == null)
  6718.                 {
  6719.                     Main.tile[num2 + 1, num + 2] = new Tile();
  6720.                 }
  6721.                 Main.tile[num2 + 1, num + 2].active = true;
  6722.                 Main.tile[num2 + 1, num + 2].type = 11;
  6723.                 Main.tile[num2 + 1, num + 2].frameY = 36;
  6724.                 Main.tile[num2 + 1, num + 2].frameX = (short)(num3 + 18);
  6725.                 for (int l = num2 - 1; l <= num2 + 2; l++)
  6726.                 {
  6727.                     for (int m = num - 1; m <= num + 2; m++)
  6728.                     {
  6729.                         WorldGen.TileFrame(l, m, false, false);
  6730.                     }
  6731.                 }
  6732.             }
  6733.             return flag;
  6734.         }
  6735.         public static void Check1x2(int x, int j, byte type)
  6736.         {
  6737.             if (WorldGen.destroyObject)
  6738.             {
  6739.                 return;
  6740.             }
  6741.             int num = j;
  6742.             bool flag = true;
  6743.             if (Main.tile[x, num] == null)
  6744.             {
  6745.                 Main.tile[x, num] = new Tile();
  6746.             }
  6747.             if (Main.tile[x, num + 1] == null)
  6748.             {
  6749.                 Main.tile[x, num + 1] = new Tile();
  6750.             }
  6751.             if (Main.tile[x, num].frameY == 18)
  6752.             {
  6753.                 num--;
  6754.             }
  6755.             if (Main.tile[x, num] == null)
  6756.             {
  6757.                 Main.tile[x, num] = new Tile();
  6758.             }
  6759.             if (Main.tile[x, num].frameY == 0 && Main.tile[x, num + 1].frameY == 18 && Main.tile[x, num].type == type && Main.tile[x, num + 1].type == type)
  6760.             {
  6761.                 flag = false;
  6762.             }
  6763.             if (Main.tile[x, num + 2] == null)
  6764.             {
  6765.                 Main.tile[x, num + 2] = new Tile();
  6766.             }
  6767.             if (!Main.tile[x, num + 2].active || !Main.tileSolid[(int)Main.tile[x, num + 2].type])
  6768.             {
  6769.                 flag = true;
  6770.             }
  6771.             if (Main.tile[x, num + 2].type != 2 && Main.tile[x, num].type == 20)
  6772.             {
  6773.                 flag = true;
  6774.             }
  6775.             if (flag)
  6776.             {
  6777.                 WorldGen.destroyObject = true;
  6778.                 if (Main.tile[x, num].type == type)
  6779.                 {
  6780.                     WorldGen.KillTile(x, num, false, false, false);
  6781.                 }
  6782.                 if (Main.tile[x, num + 1].type == type)
  6783.                 {
  6784.                     WorldGen.KillTile(x, num + 1, false, false, false);
  6785.                 }
  6786.                 if (type == 15)
  6787.                 {
  6788.                     Item.NewItem(x * 16, num * 16, 32, 32, 34, 1, false);
  6789.                 }
  6790.                 WorldGen.destroyObject = false;
  6791.             }
  6792.         }
  6793.         public static void CheckOnTable1x1(int x, int y, int type)
  6794.         {
  6795.             if (Main.tile[x, y + 1] != null && (!Main.tile[x, y + 1].active || !Main.tileTable[(int)Main.tile[x, y + 1].type]))
  6796.             {
  6797.                 if (type == 78)
  6798.                 {
  6799.                     if (!Main.tile[x, y + 1].active || !Main.tileSolid[(int)Main.tile[x, y + 1].type])
  6800.                     {
  6801.                         WorldGen.KillTile(x, y, false, false, false);
  6802.                         return;
  6803.                     }
  6804.                 }
  6805.                 else
  6806.                 {
  6807.                     WorldGen.KillTile(x, y, false, false, false);
  6808.                 }
  6809.             }
  6810.         }
  6811.         public static void CheckSign(int x, int y, int type)
  6812.         {
  6813.             if (WorldGen.destroyObject)
  6814.             {
  6815.                 return;
  6816.             }
  6817.             int num = x - 2;
  6818.             int num2 = x + 3;
  6819.             int num3 = y - 2;
  6820.             int num4 = y + 3;
  6821.             if (num < 0)
  6822.             {
  6823.                 return;
  6824.             }
  6825.             if (num2 > Main.maxTilesX)
  6826.             {
  6827.                 return;
  6828.             }
  6829.             if (num3 < 0)
  6830.             {
  6831.                 return;
  6832.             }
  6833.             if (num4 > Main.maxTilesY)
  6834.             {
  6835.                 return;
  6836.             }
  6837.             bool flag = false;
  6838.             for (int i = num; i < num2; i++)
  6839.             {
  6840.                 for (int j = num3; j < num4; j++)
  6841.                 {
  6842.                     if (Main.tile[i, j] == null)
  6843.                     {
  6844.                         Main.tile[i, j] = new Tile();
  6845.                     }
  6846.                 }
  6847.             }
  6848.             int k = (int)(Main.tile[x, y].frameX / 18);
  6849.             int num5 = (int)(Main.tile[x, y].frameY / 18);
  6850.             while (k > 1)
  6851.             {
  6852.                 k -= 2;
  6853.             }
  6854.             int num6 = x - k;
  6855.             int num7 = y - num5;
  6856.             int num8 = (int)(Main.tile[num6, num7].frameX / 18 / 2);
  6857.             num = num6;
  6858.             num2 = num6 + 2;
  6859.             num3 = num7;
  6860.             num4 = num7 + 2;
  6861.             k = 0;
  6862.             for (int l = num; l < num2; l++)
  6863.             {
  6864.                 num5 = 0;
  6865.                 for (int m = num3; m < num4; m++)
  6866.                 {
  6867.                     if (!Main.tile[l, m].active || (int)Main.tile[l, m].type != type)
  6868.                     {
  6869.                         flag = true;
  6870.                         break;
  6871.                     }
  6872.                     if ((int)(Main.tile[l, m].frameX / 18) != k + num8 * 2 || (int)(Main.tile[l, m].frameY / 18) != num5)
  6873.                     {
  6874.                         flag = true;
  6875.                         break;
  6876.                     }
  6877.                     num5++;
  6878.                 }
  6879.                 k++;
  6880.             }
  6881.             if (!flag)
  6882.             {
  6883.                 if (Main.tile[num6, num7 + 2].active && Main.tileSolid[(int)Main.tile[num6, num7 + 2].type] && Main.tile[num6 + 1, num7 + 2].active && Main.tileSolid[(int)Main.tile[num6 + 1, num7 + 2].type])
  6884.                 {
  6885.                     num8 = 0;
  6886.                 }
  6887.                 else
  6888.                 {
  6889.                     if (Main.tile[num6, num7 - 1].active && Main.tileSolid[(int)Main.tile[num6, num7 - 1].type] && !Main.tileSolidTop[(int)Main.tile[num6, num7 - 1].type] && Main.tile[num6 + 1, num7 - 1].active && Main.tileSolid[(int)Main.tile[num6 + 1, num7 - 1].type] && !Main.tileSolidTop[(int)Main.tile[num6 + 1, num7 - 1].type])
  6890.                     {
  6891.                         num8 = 1;
  6892.                     }
  6893.                     else
  6894.                     {
  6895.                         if (Main.tile[num6 - 1, num7].active && Main.tileSolid[(int)Main.tile[num6 - 1, num7].type] && !Main.tileSolidTop[(int)Main.tile[num6 - 1, num7].type] && Main.tile[num6 - 1, num7 + 1].active && Main.tileSolid[(int)Main.tile[num6 - 1, num7 + 1].type] && !Main.tileSolidTop[(int)Main.tile[num6 - 1, num7 + 1].type])
  6896.                         {
  6897.                             num8 = 2;
  6898.                         }
  6899.                         else
  6900.                         {
  6901.                             if (Main.tile[num6 + 2, num7].active && Main.tileSolid[(int)Main.tile[num6 + 2, num7].type] && !Main.tileSolidTop[(int)Main.tile[num6 + 2, num7].type] && Main.tile[num6 + 2, num7 + 1].active && Main.tileSolid[(int)Main.tile[num6 + 2, num7 + 1].type] && !Main.tileSolidTop[(int)Main.tile[num6 + 2, num7 + 1].type])
  6902.                             {
  6903.                                 num8 = 3;
  6904.                             }
  6905.                             else
  6906.                             {
  6907.                                 flag = true;
  6908.                             }
  6909.                         }
  6910.                     }
  6911.                 }
  6912.             }
  6913.             if (flag)
  6914.             {
  6915.                 WorldGen.destroyObject = true;
  6916.                 for (int n = num; n < num2; n++)
  6917.                 {
  6918.                     for (int num9 = num3; num9 < num4; num9++)
  6919.                     {
  6920.                         if ((int)Main.tile[n, num9].type == type)
  6921.                         {
  6922.                             WorldGen.KillTile(n, num9, false, false, false);
  6923.                         }
  6924.                     }
  6925.                 }
  6926.                 Sign.KillSign(num6, num7);
  6927.                 Item.NewItem(x * 16, y * 16, 32, 32, 171, 1, false);
  6928.                 WorldGen.destroyObject = false;
  6929.                 return;
  6930.             }
  6931.             int num10 = 36 * num8;
  6932.             for (int num11 = 0; num11 < 2; num11++)
  6933.             {
  6934.                 for (int num12 = 0; num12 < 2; num12++)
  6935.                 {
  6936.                     Main.tile[num6 + num11, num7 + num12].active = true;
  6937.                     Main.tile[num6 + num11, num7 + num12].type = (byte)type;
  6938.                     Main.tile[num6 + num11, num7 + num12].frameX = (short)(num10 + 18 * num11);
  6939.                     Main.tile[num6 + num11, num7 + num12].frameY = (short)(18 * num12);
  6940.                 }
  6941.             }
  6942.         }
  6943.         public static bool PlaceSign(int x, int y, int type)
  6944.         {
  6945.             int num = x - 2;
  6946.             int num2 = x + 3;
  6947.             int num3 = y - 2;
  6948.             int num4 = y + 3;
  6949.             if (num < 0)
  6950.             {
  6951.                 return false;
  6952.             }
  6953.             if (num2 > Main.maxTilesX)
  6954.             {
  6955.                 return false;
  6956.             }
  6957.             if (num3 < 0)
  6958.             {
  6959.                 return false;
  6960.             }
  6961.             if (num4 > Main.maxTilesY)
  6962.             {
  6963.                 return false;
  6964.             }
  6965.             for (int i = num; i < num2; i++)
  6966.             {
  6967.                 for (int j = num3; j < num4; j++)
  6968.                 {
  6969.                     if (Main.tile[i, j] == null)
  6970.                     {
  6971.                         Main.tile[i, j] = new Tile();
  6972.                     }
  6973.                 }
  6974.             }
  6975.             int num5 = x;
  6976.             int num6 = y;
  6977.             int num7 = 0;
  6978.             if (Main.tile[x, y + 1].active && Main.tileSolid[(int)Main.tile[x, y + 1].type] && Main.tile[x + 1, y + 1].active && Main.tileSolid[(int)Main.tile[x + 1, y + 1].type])
  6979.             {
  6980.                 num6--;
  6981.                 num7 = 0;
  6982.             }
  6983.             else
  6984.             {
  6985.                 if (Main.tile[x, y - 1].active && Main.tileSolid[(int)Main.tile[x, y - 1].type] && !Main.tileSolidTop[(int)Main.tile[x, y - 1].type] && Main.tile[x + 1, y - 1].active && Main.tileSolid[(int)Main.tile[x + 1, y - 1].type] && !Main.tileSolidTop[(int)Main.tile[x + 1, y - 1].type])
  6986.                 {
  6987.                     num7 = 1;
  6988.                 }
  6989.                 else
  6990.                 {
  6991.                     if (Main.tile[x - 1, y].active && Main.tileSolid[(int)Main.tile[x - 1, y].type] && !Main.tileSolidTop[(int)Main.tile[x - 1, y].type] && Main.tile[x - 1, y + 1].active && Main.tileSolid[(int)Main.tile[x - 1, y + 1].type] && !Main.tileSolidTop[(int)Main.tile[x - 1, y + 1].type])
  6992.                     {
  6993.                         num7 = 2;
  6994.                     }
  6995.                     else
  6996.                     {
  6997.                         if (!Main.tile[x + 1, y].active || !Main.tileSolid[(int)Main.tile[x + 1, y].type] || Main.tileSolidTop[(int)Main.tile[x + 1, y].type] || !Main.tile[x + 1, y + 1].active || !Main.tileSolid[(int)Main.tile[x + 1, y + 1].type] || Main.tileSolidTop[(int)Main.tile[x + 1, y + 1].type])
  6998.                         {
  6999.                             return false;
  7000.                         }
  7001.                         num5--;
  7002.                         num7 = 3;
  7003.                     }
  7004.                 }
  7005.             }
  7006.             if (Main.tile[num5, num6].active || Main.tile[num5 + 1, num6].active || Main.tile[num5, num6 + 1].active || Main.tile[num5 + 1, num6 + 1].active)
  7007.             {
  7008.                 return false;
  7009.             }
  7010.             int num8 = 36 * num7;
  7011.             for (int k = 0; k < 2; k++)
  7012.             {
  7013.                 for (int l = 0; l < 2; l++)
  7014.                 {
  7015.                     Main.tile[num5 + k, num6 + l].active = true;
  7016.                     Main.tile[num5 + k, num6 + l].type = (byte)type;
  7017.                     Main.tile[num5 + k, num6 + l].frameX = (short)(num8 + 18 * k);
  7018.                     Main.tile[num5 + k, num6 + l].frameY = (short)(18 * l);
  7019.                 }
  7020.             }
  7021.             return true;
  7022.         }
  7023.         public static void PlaceOnTable1x1(int x, int y, int type)
  7024.         {
  7025.             bool flag = false;
  7026.             if (Main.tile[x, y] == null)
  7027.             {
  7028.                 Main.tile[x, y] = new Tile();
  7029.             }
  7030.             if (Main.tile[x, y + 1] == null)
  7031.             {
  7032.                 Main.tile[x, y + 1] = new Tile();
  7033.             }
  7034.             if (!Main.tile[x, y].active && Main.tile[x, y + 1].active && Main.tileTable[(int)Main.tile[x, y + 1].type])
  7035.             {
  7036.                 flag = true;
  7037.             }
  7038.             if (type == 78 && !Main.tile[x, y].active && Main.tile[x, y + 1].active && Main.tileSolid[(int)Main.tile[x, y + 1].type])
  7039.             {
  7040.                 flag = true;
  7041.             }
  7042.             if (flag)
  7043.             {
  7044.                 Main.tile[x, y].active = true;
  7045.                 Main.tile[x, y].frameX = 0;
  7046.                 Main.tile[x, y].frameY = 0;
  7047.                 Main.tile[x, y].type = (byte)type;
  7048.                 if (type == 50)
  7049.                 {
  7050.                     Main.tile[x, y].frameX = (short)(18 * WorldGen.genRand.Next(5));
  7051.                 }
  7052.             }
  7053.         }
  7054.         public static void Place1x2(int x, int y, int type)
  7055.         {
  7056.             short frameX = 0;
  7057.             if (type == 20)
  7058.             {
  7059.                 frameX = (short)(WorldGen.genRand.Next(3) * 18);
  7060.             }
  7061.             if (Main.tile[x, y - 1] == null)
  7062.             {
  7063.                 Main.tile[x, y - 1] = new Tile();
  7064.             }
  7065.             if (Main.tile[x, y + 1] == null)
  7066.             {
  7067.                 Main.tile[x, y + 1] = new Tile();
  7068.             }
  7069.             if (Main.tile[x, y + 1].active && Main.tileSolid[(int)Main.tile[x, y + 1].type] && !Main.tile[x, y - 1].active)
  7070.             {
  7071.                 Main.tile[x, y - 1].active = true;
  7072.                 Main.tile[x, y - 1].frameY = 0;
  7073.                 Main.tile[x, y - 1].frameX = frameX;
  7074.                 Main.tile[x, y - 1].type = (byte)type;
  7075.                 Main.tile[x, y].active = true;
  7076.                 Main.tile[x, y].frameY = 18;
  7077.                 Main.tile[x, y].frameX = frameX;
  7078.                 Main.tile[x, y].type = (byte)type;
  7079.             }
  7080.         }
  7081.         public static void Place1x2Top(int x, int y, int type)
  7082.         {
  7083.             short frameX = 0;
  7084.             if (Main.tile[x, y - 1] == null)
  7085.             {
  7086.                 Main.tile[x, y - 1] = new Tile();
  7087.             }
  7088.             if (Main.tile[x, y + 1] == null)
  7089.             {
  7090.                 Main.tile[x, y + 1] = new Tile();
  7091.             }
  7092.             if (Main.tile[x, y - 1].active && Main.tileSolid[(int)Main.tile[x, y - 1].type] && !Main.tileSolidTop[(int)Main.tile[x, y - 1].type] && !Main.tile[x, y + 1].active)
  7093.             {
  7094.                 Main.tile[x, y].active = true;
  7095.                 Main.tile[x, y].frameY = 0;
  7096.                 Main.tile[x, y].frameX = frameX;
  7097.                 Main.tile[x, y].type = (byte)type;
  7098.                 Main.tile[x, y + 1].active = true;
  7099.                 Main.tile[x, y + 1].frameY = 18;
  7100.                 Main.tile[x, y + 1].frameX = frameX;
  7101.                 Main.tile[x, y + 1].type = (byte)type;
  7102.             }
  7103.         }
  7104.         public static void Check1x2Top(int x, int j, byte type)
  7105.         {
  7106.             if (WorldGen.destroyObject)
  7107.             {
  7108.                 return;
  7109.             }
  7110.             int num = j;
  7111.             bool flag = true;
  7112.             if (Main.tile[x, num] == null)
  7113.             {
  7114.                 Main.tile[x, num] = new Tile();
  7115.             }
  7116.             if (Main.tile[x, num + 1] == null)
  7117.             {
  7118.                 Main.tile[x, num + 1] = new Tile();
  7119.             }
  7120.             if (Main.tile[x, num].frameY == 18)
  7121.             {
  7122.                 num--;
  7123.             }
  7124.             if (Main.tile[x, num] == null)
  7125.             {
  7126.                 Main.tile[x, num] = new Tile();
  7127.             }
  7128.             if (Main.tile[x, num].frameY == 0 && Main.tile[x, num + 1].frameY == 18 && Main.tile[x, num].type == type && Main.tile[x, num + 1].type == type)
  7129.             {
  7130.                 flag = false;
  7131.             }
  7132.             if (Main.tile[x, num - 1] == null)
  7133.             {
  7134.                 Main.tile[x, num - 1] = new Tile();
  7135.             }
  7136.             if (!Main.tile[x, num - 1].active || !Main.tileSolid[(int)Main.tile[x, num - 1].type] || Main.tileSolidTop[(int)Main.tile[x, num - 1].type])
  7137.             {
  7138.                 flag = true;
  7139.             }
  7140.             if (flag)
  7141.             {
  7142.                 WorldGen.destroyObject = true;
  7143.                 if (Main.tile[x, num].type == type)
  7144.                 {
  7145.                     WorldGen.KillTile(x, num, false, false, false);
  7146.                 }
  7147.                 if (Main.tile[x, num + 1].type == type)
  7148.                 {
  7149.                     WorldGen.KillTile(x, num + 1, false, false, false);
  7150.                 }
  7151.                 if (type == 42)
  7152.                 {
  7153.                     Item.NewItem(x * 16, num * 16, 32, 32, 136, 1, false);
  7154.                 }
  7155.                 WorldGen.destroyObject = false;
  7156.             }
  7157.         }
  7158.         public static void Check2x1(int i, int y, byte type)
  7159.         {
  7160.             if (WorldGen.destroyObject)
  7161.             {
  7162.                 return;
  7163.             }
  7164.             int num = i;
  7165.             bool flag = true;
  7166.             if (Main.tile[num, y] == null)
  7167.             {
  7168.                 Main.tile[num, y] = new Tile();
  7169.             }
  7170.             if (Main.tile[num + 1, y] == null)
  7171.             {
  7172.                 Main.tile[num + 1, y] = new Tile();
  7173.             }
  7174.             if (Main.tile[num, y + 1] == null)
  7175.             {
  7176.                 Main.tile[num, y + 1] = new Tile();
  7177.             }
  7178.             if (Main.tile[num + 1, y + 1] == null)
  7179.             {
  7180.                 Main.tile[num + 1, y + 1] = new Tile();
  7181.             }
  7182.             if (Main.tile[num, y].frameX == 18)
  7183.             {
  7184.                 num--;
  7185.             }
  7186.             if (Main.tile[num, y] == null)
  7187.             {
  7188.                 Main.tile[num, y] = new Tile();
  7189.             }
  7190.             if (Main.tile[num, y].frameX == 0 && Main.tile[num + 1, y].frameX == 18 && Main.tile[num, y].type == type && Main.tile[num + 1, y].type == type)
  7191.             {
  7192.                 flag = false;
  7193.             }
  7194.             if (type == 29)
  7195.             {
  7196.                 if (!Main.tile[num, y + 1].active || !Main.tileTable[(int)Main.tile[num, y + 1].type])
  7197.                 {
  7198.                     flag = true;
  7199.                 }
  7200.                 if (!Main.tile[num + 1, y + 1].active || !Main.tileTable[(int)Main.tile[num + 1, y + 1].type])
  7201.                 {
  7202.                     flag = true;
  7203.                 }
  7204.             }
  7205.             else
  7206.             {
  7207.                 if (!Main.tile[num, y + 1].active || !Main.tileSolid[(int)Main.tile[num, y + 1].type])
  7208.                 {
  7209.                     flag = true;
  7210.                 }
  7211.                 if (!Main.tile[num + 1, y + 1].active || !Main.tileSolid[(int)Main.tile[num + 1, y + 1].type])
  7212.                 {
  7213.                     flag = true;
  7214.                 }
  7215.             }
  7216.             if (flag)
  7217.             {
  7218.                 WorldGen.destroyObject = true;
  7219.                 if (Main.tile[num, y].type == type)
  7220.                 {
  7221.                     WorldGen.KillTile(num, y, false, false, false);
  7222.                 }
  7223.                 if (Main.tile[num + 1, y].type == type)
  7224.                 {
  7225.                     WorldGen.KillTile(num + 1, y, false, false, false);
  7226.                 }
  7227.                 if (type == 16)
  7228.                 {
  7229.                     Item.NewItem(num * 16, y * 16, 32, 32, 35, 1, false);
  7230.                 }
  7231.                 if (type == 18)
  7232.                 {
  7233.                     Item.NewItem(num * 16, y * 16, 32, 32, 36, 1, false);
  7234.                 }
  7235.                 if (type == 29)
  7236.                 {
  7237.                     Item.NewItem(num * 16, y * 16, 32, 32, 87, 1, false);
  7238.                     Main.PlaySound(13, i * 16, y * 16, 1);
  7239.                 }
  7240.                 WorldGen.destroyObject = false;
  7241.             }
  7242.         }
  7243.         public static void Place2x1(int x, int y, int type)
  7244.         {
  7245.             if (Main.tile[x, y] == null)
  7246.             {
  7247.                 Main.tile[x, y] = new Tile();
  7248.             }
  7249.             if (Main.tile[x + 1, y] == null)
  7250.             {
  7251.                 Main.tile[x + 1, y] = new Tile();
  7252.             }
  7253.             if (Main.tile[x, y + 1] == null)
  7254.             {
  7255.                 Main.tile[x, y + 1] = new Tile();
  7256.             }
  7257.             if (Main.tile[x + 1, y + 1] == null)
  7258.             {
  7259.                 Main.tile[x + 1, y + 1] = new Tile();
  7260.             }
  7261.             bool flag = false;
  7262.             if (type != 29 && Main.tile[x, y + 1].active && Main.tile[x + 1, y + 1].active && Main.tileSolid[(int)Main.tile[x, y + 1].type] && Main.tileSolid[(int)Main.tile[x + 1, y + 1].type] && !Main.tile[x, y].active && !Main.tile[x + 1, y].active)
  7263.             {
  7264.                 flag = true;
  7265.             }
  7266.             else
  7267.             {
  7268.                 if (type == 29 && Main.tile[x, y + 1].active && Main.tile[x + 1, y + 1].active && Main.tileTable[(int)Main.tile[x, y + 1].type] && Main.tileTable[(int)Main.tile[x + 1, y + 1].type] && !Main.tile[x, y].active && !Main.tile[x + 1, y].active)
  7269.                 {
  7270.                     flag = true;
  7271.                 }
  7272.             }
  7273.             if (flag)
  7274.             {
  7275.                 Main.tile[x, y].active = true;
  7276.                 Main.tile[x, y].frameY = 0;
  7277.                 Main.tile[x, y].frameX = 0;
  7278.                 Main.tile[x, y].type = (byte)type;
  7279.                 Main.tile[x + 1, y].active = true;
  7280.                 Main.tile[x + 1, y].frameY = 0;
  7281.                 Main.tile[x + 1, y].frameX = 18;
  7282.                 Main.tile[x + 1, y].type = (byte)type;
  7283.             }
  7284.         }
  7285.         public static void Check4x2(int i, int j, int type)
  7286.         {
  7287.             if (WorldGen.destroyObject)
  7288.             {
  7289.                 return;
  7290.             }
  7291.             bool flag = false;
  7292.             int num = i;
  7293.             num += (int)(Main.tile[i, j].frameX / 18 * -1);
  7294.             if (type == 79 && Main.tile[i, j].frameX >= 72)
  7295.             {
  7296.                 num += 4;
  7297.             }
  7298.             int num2 = j + (int)(Main.tile[i, j].frameY / 18 * -1);
  7299.             for (int k = num; k < num + 4; k++)
  7300.             {
  7301.                 for (int l = num2; l < num2 + 2; l++)
  7302.                 {
  7303.                     int num3 = (k - num) * 18;
  7304.                     if (type == 79 && Main.tile[i, j].frameX >= 72)
  7305.                     {
  7306.                         num3 = (k - num + 4) * 18;
  7307.                     }
  7308.                     if (Main.tile[k, l] == null)
  7309.                     {
  7310.                         Main.tile[k, l] = new Tile();
  7311.                     }
  7312.                     if (!Main.tile[k, l].active || (int)Main.tile[k, l].type != type || (int)Main.tile[k, l].frameX != num3 || (int)Main.tile[k, l].frameY != (l - num2) * 18)
  7313.                     {
  7314.                         flag = true;
  7315.                     }
  7316.                 }
  7317.                 if (Main.tile[k, num2 + 2] == null)
  7318.                 {
  7319.                     Main.tile[k, num2 + 2] = new Tile();
  7320.                 }
  7321.                 if (!Main.tile[k, num2 + 2].active || !Main.tileSolid[(int)Main.tile[k, num2 + 2].type])
  7322.                 {
  7323.                     flag = true;
  7324.                 }
  7325.             }
  7326.             if (flag)
  7327.             {
  7328.                 WorldGen.destroyObject = true;
  7329.                 for (int m = num; m < num + 4; m++)
  7330.                 {
  7331.                     for (int n = num2; n < num2 + 3; n++)
  7332.                     {
  7333.                         if ((int)Main.tile[m, n].type == type && Main.tile[m, n].active)
  7334.                         {
  7335.                             WorldGen.KillTile(m, n, false, false, false);
  7336.                         }
  7337.                     }
  7338.                 }
  7339.                 if (type == 79)
  7340.                 {
  7341.                     Item.NewItem(i * 16, j * 16, 32, 32, 224, 1, false);
  7342.                 }
  7343.                 WorldGen.destroyObject = false;
  7344.                 for (int num4 = num - 1; num4 < num + 4; num4++)
  7345.                 {
  7346.                     for (int num5 = num2 - 1; num5 < num2 + 4; num5++)
  7347.                     {
  7348.                         WorldGen.TileFrame(num4, num5, false, false);
  7349.                     }
  7350.                 }
  7351.             }
  7352.         }
  7353.         public static void Check3x2(int i, int j, int type)
  7354.         {
  7355.             if (WorldGen.destroyObject)
  7356.             {
  7357.                 return;
  7358.             }
  7359.             bool flag = false;
  7360.             int num = i + (int)(Main.tile[i, j].frameX / 18 * -1);
  7361.             int num2 = j + (int)(Main.tile[i, j].frameY / 18 * -1);
  7362.             for (int k = num; k < num + 3; k++)
  7363.             {
  7364.                 for (int l = num2; l < num2 + 2; l++)
  7365.                 {
  7366.                     if (Main.tile[k, l] == null)
  7367.                     {
  7368.                         Main.tile[k, l] = new Tile();
  7369.                     }
  7370.                     if (!Main.tile[k, l].active || (int)Main.tile[k, l].type != type || (int)Main.tile[k, l].frameX != (k - num) * 18 || (int)Main.tile[k, l].frameY != (l - num2) * 18)
  7371.                     {
  7372.                         flag = true;
  7373.                     }
  7374.                 }
  7375.                 if (Main.tile[k, num2 + 2] == null)
  7376.                 {
  7377.                     Main.tile[k, num2 + 2] = new Tile();
  7378.                 }
  7379.                 if (!Main.tile[k, num2 + 2].active || !Main.tileSolid[(int)Main.tile[k, num2 + 2].type])
  7380.                 {
  7381.                     flag = true;
  7382.                 }
  7383.             }
  7384.             if (flag)
  7385.             {
  7386.                 WorldGen.destroyObject = true;
  7387.                 for (int m = num; m < num + 3; m++)
  7388.                 {
  7389.                     for (int n = num2; n < num2 + 3; n++)
  7390.                     {
  7391.                         if ((int)Main.tile[m, n].type == type && Main.tile[m, n].active)
  7392.                         {
  7393.                             WorldGen.KillTile(m, n, false, false, false);
  7394.                         }
  7395.                     }
  7396.                 }
  7397.                 if (type == 14)
  7398.                 {
  7399.                     Item.NewItem(i * 16, j * 16, 32, 32, 32, 1, false);
  7400.                 }
  7401.                 else
  7402.                 {
  7403.                     if (type == 17)
  7404.                     {
  7405.                         Item.NewItem(i * 16, j * 16, 32, 32, 33, 1, false);
  7406.                     }
  7407.                     else
  7408.                     {
  7409.                         if (type == 77)
  7410.                         {
  7411.                             Item.NewItem(i * 16, j * 16, 32, 32, 221, 1, false);
  7412.                         }
  7413.                     }
  7414.                 }
  7415.                 WorldGen.destroyObject = false;
  7416.                 for (int num3 = num - 1; num3 < num + 4; num3++)
  7417.                 {
  7418.                     for (int num4 = num2 - 1; num4 < num2 + 4; num4++)
  7419.                     {
  7420.                         WorldGen.TileFrame(num3, num4, false, false);
  7421.                     }
  7422.                 }
  7423.             }
  7424.         }
  7425.         public static void Place4x2(int x, int y, int type, int direction = -1)
  7426.         {
  7427.             if (x < 5 || x > Main.maxTilesX - 5 || y < 5 || y > Main.maxTilesY - 5)
  7428.             {
  7429.                 return;
  7430.             }
  7431.             bool flag = true;
  7432.             for (int i = x - 1; i < x + 3; i++)
  7433.             {
  7434.                 for (int j = y - 1; j < y + 1; j++)
  7435.                 {
  7436.                     if (Main.tile[i, j] == null)
  7437.                     {
  7438.                         Main.tile[i, j] = new Tile();
  7439.                     }
  7440.                     if (Main.tile[i, j].active)
  7441.                     {
  7442.                         flag = false;
  7443.                     }
  7444.                 }
  7445.                 if (Main.tile[i, y + 1] == null)
  7446.                 {
  7447.                     Main.tile[i, y + 1] = new Tile();
  7448.                 }
  7449.                 if (!Main.tile[i, y + 1].active || !Main.tileSolid[(int)Main.tile[i, y + 1].type])
  7450.                 {
  7451.                     flag = false;
  7452.                 }
  7453.             }
  7454.             short num = 0;
  7455.             if (direction == 1)
  7456.             {
  7457.                 num = 72;
  7458.             }
  7459.             if (flag)
  7460.             {
  7461.                 Main.tile[x - 1, y - 1].active = true;
  7462.                 Main.tile[x - 1, y - 1].frameY = 0;
  7463.                 Main.tile[x - 1, y - 1].frameX = num;
  7464.                 Main.tile[x - 1, y - 1].type = (byte)type;
  7465.                 Main.tile[x, y - 1].active = true;
  7466.                 Main.tile[x, y - 1].frameY = 0;
  7467.                 Main.tile[x, y - 1].frameX = (short)(18 + num);
  7468.                 Main.tile[x, y - 1].type = (byte)type;
  7469.                 Main.tile[x + 1, y - 1].active = true;
  7470.                 Main.tile[x + 1, y - 1].frameY = 0;
  7471.                 Main.tile[x + 1, y - 1].frameX = (short)(36 + num);
  7472.                 Main.tile[x + 1, y - 1].type = (byte)type;
  7473.                 Main.tile[x + 2, y - 1].active = true;
  7474.                 Main.tile[x + 2, y - 1].frameY = 0;
  7475.                 Main.tile[x + 2, y - 1].frameX = (short)(54 + num);
  7476.                 Main.tile[x + 2, y - 1].type = (byte)type;
  7477.                 Main.tile[x - 1, y].active = true;
  7478.                 Main.tile[x - 1, y].frameY = 18;
  7479.                 Main.tile[x - 1, y].frameX = num;
  7480.                 Main.tile[x - 1, y].type = (byte)type;
  7481.                 Main.tile[x, y].active = true;
  7482.                 Main.tile[x, y].frameY = 18;
  7483.                 Main.tile[x, y].frameX = (short)(18 + num);
  7484.                 Main.tile[x, y].type = (byte)type;
  7485.                 Main.tile[x + 1, y].active = true;
  7486.                 Main.tile[x + 1, y].frameY = 18;
  7487.                 Main.tile[x + 1, y].frameX = (short)(36 + num);
  7488.                 Main.tile[x + 1, y].type = (byte)type;
  7489.                 Main.tile[x + 2, y].active = true;
  7490.                 Main.tile[x + 2, y].frameY = 18;
  7491.                 Main.tile[x + 2, y].frameX = (short)(54 + num);
  7492.                 Main.tile[x + 2, y].type = (byte)type;
  7493.             }
  7494.         }
  7495.         public static void Place3x2(int x, int y, int type)
  7496.         {
  7497.             if (x < 5 || x > Main.maxTilesX - 5 || y < 5 || y > Main.maxTilesY - 5)
  7498.             {
  7499.                 return;
  7500.             }
  7501.             bool flag = true;
  7502.             for (int i = x - 1; i < x + 2; i++)
  7503.             {
  7504.                 for (int j = y - 1; j < y + 1; j++)
  7505.                 {
  7506.                     if (Main.tile[i, j] == null)
  7507.                     {
  7508.                         Main.tile[i, j] = new Tile();
  7509.                     }
  7510.                     if (Main.tile[i, j].active)
  7511.                     {
  7512.                         flag = false;
  7513.                     }
  7514.                 }
  7515.                 if (Main.tile[i, y + 1] == null)
  7516.                 {
  7517.                     Main.tile[i, y + 1] = new Tile();
  7518.                 }
  7519.                 if (!Main.tile[i, y + 1].active || !Main.tileSolid[(int)Main.tile[i, y + 1].type])
  7520.                 {
  7521.                     flag = false;
  7522.                 }
  7523.             }
  7524.             if (flag)
  7525.             {
  7526.                 Main.tile[x - 1, y - 1].active = true;
  7527.                 Main.tile[x - 1, y - 1].frameY = 0;
  7528.                 Main.tile[x - 1, y - 1].frameX = 0;
  7529.                 Main.tile[x - 1, y - 1].type = (byte)type;
  7530.                 Main.tile[x, y - 1].active = true;
  7531.                 Main.tile[x, y - 1].frameY = 0;
  7532.                 Main.tile[x, y - 1].frameX = 18;
  7533.                 Main.tile[x, y - 1].type = (byte)type;
  7534.                 Main.tile[x + 1, y - 1].active = true;
  7535.                 Main.tile[x + 1, y - 1].frameY = 0;
  7536.                 Main.tile[x + 1, y - 1].frameX = 36;
  7537.                 Main.tile[x + 1, y - 1].type = (byte)type;
  7538.                 Main.tile[x - 1, y].active = true;
  7539.                 Main.tile[x - 1, y].frameY = 18;
  7540.                 Main.tile[x - 1, y].frameX = 0;
  7541.                 Main.tile[x - 1, y].type = (byte)type;
  7542.                 Main.tile[x, y].active = true;
  7543.                 Main.tile[x, y].frameY = 18;
  7544.                 Main.tile[x, y].frameX = 18;
  7545.                 Main.tile[x, y].type = (byte)type;
  7546.                 Main.tile[x + 1, y].active = true;
  7547.                 Main.tile[x + 1, y].frameY = 18;
  7548.                 Main.tile[x + 1, y].frameX = 36;
  7549.                 Main.tile[x + 1, y].type = (byte)type;
  7550.             }
  7551.         }
  7552.         public static void Check3x3(int i, int j, int type)
  7553.         {
  7554.             if (WorldGen.destroyObject)
  7555.             {
  7556.                 return;
  7557.             }
  7558.             bool flag = false;
  7559.             int num = i + (int)(Main.tile[i, j].frameX / 18 * -1);
  7560.             int num2 = j + (int)(Main.tile[i, j].frameY / 18 * -1);
  7561.             for (int k = num; k < num + 3; k++)
  7562.             {
  7563.                 for (int l = num2; l < num2 + 3; l++)
  7564.                 {
  7565.                     if (Main.tile[k, l] == null)
  7566.                     {
  7567.                         Main.tile[k, l] = new Tile();
  7568.                     }
  7569.                     if (!Main.tile[k, l].active || (int)Main.tile[k, l].type != type || (int)Main.tile[k, l].frameX != (k - num) * 18 || (int)Main.tile[k, l].frameY != (l - num2) * 18)
  7570.                     {
  7571.                         flag = true;
  7572.                     }
  7573.                 }
  7574.             }
  7575.             if (Main.tile[num + 1, num2 - 1] == null)
  7576.             {
  7577.                 Main.tile[num + 1, num2 - 1] = new Tile();
  7578.             }
  7579.             if (!Main.tile[num + 1, num2 - 1].active || !Main.tileSolid[(int)Main.tile[num + 1, num2 - 1].type] || Main.tileSolidTop[(int)Main.tile[num + 1, num2 - 1].type])
  7580.             {
  7581.                 flag = true;
  7582.             }
  7583.             if (flag)
  7584.             {
  7585.                 WorldGen.destroyObject = true;
  7586.                 for (int m = num; m < num + 3; m++)
  7587.                 {
  7588.                     for (int n = num2; n < num2 + 3; n++)
  7589.                     {
  7590.                         if ((int)Main.tile[m, n].type == type && Main.tile[m, n].active)
  7591.                         {
  7592.                             WorldGen.KillTile(m, n, false, false, false);
  7593.                         }
  7594.                     }
  7595.                 }
  7596.                 if (type == 34)
  7597.                 {
  7598.                     Item.NewItem(i * 16, j * 16, 32, 32, 106, 1, false);
  7599.                 }
  7600.                 else
  7601.                 {
  7602.                     if (type == 35)
  7603.                     {
  7604.                         Item.NewItem(i * 16, j * 16, 32, 32, 107, 1, false);
  7605.                     }
  7606.                     else
  7607.                     {
  7608.                         if (type == 36)
  7609.                         {
  7610.                             Item.NewItem(i * 16, j * 16, 32, 32, 108, 1, false);
  7611.                         }
  7612.                     }
  7613.                 }
  7614.                 WorldGen.destroyObject = false;
  7615.                 for (int num3 = num - 1; num3 < num + 4; num3++)
  7616.                 {
  7617.                     for (int num4 = num2 - 1; num4 < num2 + 4; num4++)
  7618.                     {
  7619.                         WorldGen.TileFrame(num3, num4, false, false);
  7620.                     }
  7621.                 }
  7622.             }
  7623.         }
  7624.         public static void Place3x3(int x, int y, int type)
  7625.         {
  7626.             bool flag = true;
  7627.             for (int i = x - 1; i < x + 2; i++)
  7628.             {
  7629.                 for (int j = y; j < y + 3; j++)
  7630.                 {
  7631.                     if (Main.tile[i, j] == null)
  7632.                     {
  7633.                         Main.tile[i, j] = new Tile();
  7634.                     }
  7635.                     if (Main.tile[i, j].active)
  7636.                     {
  7637.                         flag = false;
  7638.                     }
  7639.                 }
  7640.             }
  7641.             if (Main.tile[x, y - 1] == null)
  7642.             {
  7643.                 Main.tile[x, y - 1] = new Tile();
  7644.             }
  7645.             if (!Main.tile[x, y - 1].active || !Main.tileSolid[(int)Main.tile[x, y - 1].type] || Main.tileSolidTop[(int)Main.tile[x, y - 1].type])
  7646.             {
  7647.                 flag = false;
  7648.             }
  7649.             if (flag)
  7650.             {
  7651.                 Main.tile[x - 1, y].active = true;
  7652.                 Main.tile[x - 1, y].frameY = 0;
  7653.                 Main.tile[x - 1, y].frameX = 0;
  7654.                 Main.tile[x - 1, y].type = (byte)type;
  7655.                 Main.tile[x, y].active = true;
  7656.                 Main.tile[x, y].frameY = 0;
  7657.                 Main.tile[x, y].frameX = 18;
  7658.                 Main.tile[x, y].type = (byte)type;
  7659.                 Main.tile[x + 1, y].active = true;
  7660.                 Main.tile[x + 1, y].frameY = 0;
  7661.                 Main.tile[x + 1, y].frameX = 36;
  7662.                 Main.tile[x + 1, y].type = (byte)type;
  7663.                 Main.tile[x - 1, y + 1].active = true;
  7664.                 Main.tile[x - 1, y + 1].frameY = 18;
  7665.                 Main.tile[x - 1, y + 1].frameX = 0;
  7666.                 Main.tile[x - 1, y + 1].type = (byte)type;
  7667.                 Main.tile[x, y + 1].active = true;
  7668.                 Main.tile[x, y + 1].frameY = 18;
  7669.                 Main.tile[x, y + 1].frameX = 18;
  7670.                 Main.tile[x, y + 1].type = (byte)type;
  7671.                 Main.tile[x + 1, y + 1].active = true;
  7672.                 Main.tile[x + 1, y + 1].frameY = 18;
  7673.                 Main.tile[x + 1, y + 1].frameX = 36;
  7674.                 Main.tile[x + 1, y + 1].type = (byte)type;
  7675.                 Main.tile[x - 1, y + 2].active = true;
  7676.                 Main.tile[x - 1, y + 2].frameY = 36;
  7677.                 Main.tile[x - 1, y + 2].frameX = 0;
  7678.                 Main.tile[x - 1, y + 2].type = (byte)type;
  7679.                 Main.tile[x, y + 2].active = true;
  7680.                 Main.tile[x, y + 2].frameY = 36;
  7681.                 Main.tile[x, y + 2].frameX = 18;
  7682.                 Main.tile[x, y + 2].type = (byte)type;
  7683.                 Main.tile[x + 1, y + 2].active = true;
  7684.                 Main.tile[x + 1, y + 2].frameY = 36;
  7685.                 Main.tile[x + 1, y + 2].frameX = 36;
  7686.                 Main.tile[x + 1, y + 2].type = (byte)type;
  7687.             }
  7688.         }
  7689.         public static void PlaceSunflower(int x, int y, int type = 27)
  7690.         {
  7691.             if ((double)y > Main.worldSurface - 1.0)
  7692.             {
  7693.                 return;
  7694.             }
  7695.             bool flag = true;
  7696.             for (int i = x; i < x + 2; i++)
  7697.             {
  7698.                 for (int j = y - 3; j < y + 1; j++)
  7699.                 {
  7700.                     if (Main.tile[i, j] == null)
  7701.                     {
  7702.                         Main.tile[i, j] = new Tile();
  7703.                     }
  7704.                     if (Main.tile[i, j].active || Main.tile[i, j].wall > 0)
  7705.                     {
  7706.                         flag = false;
  7707.                     }
  7708.                 }
  7709.                 if (Main.tile[i, y + 1] == null)
  7710.                 {
  7711.                     Main.tile[i, y + 1] = new Tile();
  7712.                 }
  7713.                 if (!Main.tile[i, y + 1].active || Main.tile[i, y + 1].type != 2)
  7714.                 {
  7715.                     flag = false;
  7716.                 }
  7717.             }
  7718.             if (flag)
  7719.             {
  7720.                 for (int k = 0; k < 2; k++)
  7721.                 {
  7722.                     for (int l = -3; l < 1; l++)
  7723.                     {
  7724.                         int num = k * 18 + WorldGen.genRand.Next(3) * 36;
  7725.                         int num2 = (l + 3) * 18;
  7726.                         Main.tile[x + k, y + l].active = true;
  7727.                         Main.tile[x + k, y + l].frameX = (short)num;
  7728.                         Main.tile[x + k, y + l].frameY = (short)num2;
  7729.                         Main.tile[x + k, y + l].type = (byte)type;
  7730.                     }
  7731.                 }
  7732.             }
  7733.         }
  7734.         public static void CheckSunflower(int i, int j, int type = 27)
  7735.         {
  7736.             if (WorldGen.destroyObject)
  7737.             {
  7738.                 return;
  7739.             }
  7740.             bool flag = false;
  7741.             int k = 0;
  7742.             k += (int)(Main.tile[i, j].frameX / 18);
  7743.             int num = j + (int)(Main.tile[i, j].frameY / 18 * -1);
  7744.             while (k > 1)
  7745.             {
  7746.                 k -= 2;
  7747.             }
  7748.             k *= -1;
  7749.             k += i;
  7750.             for (int l = k; l < k + 2; l++)
  7751.             {
  7752.                 for (int m = num; m < num + 4; m++)
  7753.                 {
  7754.                     if (Main.tile[l, m] == null)
  7755.                     {
  7756.                         Main.tile[l, m] = new Tile();
  7757.                     }
  7758.                     int n;
  7759.                     for (n = (int)(Main.tile[l, m].frameX / 18); n > 1; n -= 2)
  7760.                     {
  7761.                     }
  7762.                     if (!Main.tile[l, m].active || (int)Main.tile[l, m].type != type || n != l - k || (int)Main.tile[l, m].frameY != (m - num) * 18)
  7763.                     {
  7764.                         flag = true;
  7765.                     }
  7766.                 }
  7767.                 if (Main.tile[l, num + 4] == null)
  7768.                 {
  7769.                     Main.tile[l, num + 4] = new Tile();
  7770.                 }
  7771.                 if (!Main.tile[l, num + 4].active || Main.tile[l, num + 4].type != 2)
  7772.                 {
  7773.                     flag = true;
  7774.                 }
  7775.             }
  7776.             if (flag)
  7777.             {
  7778.                 WorldGen.destroyObject = true;
  7779.                 for (int num2 = k; num2 < k + 2; num2++)
  7780.                 {
  7781.                     for (int num3 = num; num3 < num + 4; num3++)
  7782.                     {
  7783.                         if ((int)Main.tile[num2, num3].type == type && Main.tile[num2, num3].active)
  7784.                         {
  7785.                             WorldGen.KillTile(num2, num3, false, false, false);
  7786.                         }
  7787.                     }
  7788.                 }
  7789.                 Item.NewItem(i * 16, j * 16, 32, 32, 63, 1, false);
  7790.                 WorldGen.destroyObject = false;
  7791.             }
  7792.         }
  7793.         public static bool PlacePot(int x, int y, int type = 28)
  7794.         {
  7795.             bool flag = true;
  7796.             for (int i = x; i < x + 2; i++)
  7797.             {
  7798.                 for (int j = y - 1; j < y + 1; j++)
  7799.                 {
  7800.                     if (Main.tile[i, j] == null)
  7801.                     {
  7802.                         Main.tile[i, j] = new Tile();
  7803.                     }
  7804.                     if (Main.tile[i, j].active)
  7805.                     {
  7806.                         flag = false;
  7807.                     }
  7808.                 }
  7809.                 if (Main.tile[i, y + 1] == null)
  7810.                 {
  7811.                     Main.tile[i, y + 1] = new Tile();
  7812.                 }
  7813.                 if (!Main.tile[i, y + 1].active || !Main.tileSolid[(int)Main.tile[i, y + 1].type])
  7814.                 {
  7815.                     flag = false;
  7816.                 }
  7817.             }
  7818.             if (flag)
  7819.             {
  7820.                 for (int k = 0; k < 2; k++)
  7821.                 {
  7822.                     for (int l = -1; l < 1; l++)
  7823.                     {
  7824.                         int num = k * 18 + WorldGen.genRand.Next(3) * 36;
  7825.                         int num2 = (l + 1) * 18;
  7826.                         Main.tile[x + k, y + l].active = true;
  7827.                         Main.tile[x + k, y + l].frameX = (short)num;
  7828.                         Main.tile[x + k, y + l].frameY = (short)num2;
  7829.                         Main.tile[x + k, y + l].type = (byte)type;
  7830.                     }
  7831.                 }
  7832.                 return true;
  7833.             }
  7834.             return false;
  7835.         }
  7836.         public static void CheckPot(int i, int j, int type = 28)
  7837.         {
  7838.             if (WorldGen.destroyObject)
  7839.             {
  7840.                 return;
  7841.             }
  7842.             bool flag = false;
  7843.             int k = 0;
  7844.             k += (int)(Main.tile[i, j].frameX / 18);
  7845.             int num = j + (int)(Main.tile[i, j].frameY / 18 * -1);
  7846.             while (k > 1)
  7847.             {
  7848.                 k -= 2;
  7849.             }
  7850.             k *= -1;
  7851.             k += i;
  7852.             for (int l = k; l < k + 2; l++)
  7853.             {
  7854.                 for (int m = num; m < num + 2; m++)
  7855.                 {
  7856.                     if (Main.tile[l, m] == null)
  7857.                     {
  7858.                         Main.tile[l, m] = new Tile();
  7859.                     }
  7860.                     int n;
  7861.                     for (n = (int)(Main.tile[l, m].frameX / 18); n > 1; n -= 2)
  7862.                     {
  7863.                     }
  7864.                     if (!Main.tile[l, m].active || (int)Main.tile[l, m].type != type || n != l - k || (int)Main.tile[l, m].frameY != (m - num) * 18)
  7865.                     {
  7866.                         flag = true;
  7867.                     }
  7868.                 }
  7869.                 if (Main.tile[l, num + 2] == null)
  7870.                 {
  7871.                     Main.tile[l, num + 2] = new Tile();
  7872.                 }
  7873.                 if (!Main.tile[l, num + 2].active || !Main.tileSolid[(int)Main.tile[l, num + 2].type])
  7874.                 {
  7875.                     flag = true;
  7876.                 }
  7877.             }
  7878.             if (flag)
  7879.             {
  7880.                 WorldGen.destroyObject = true;
  7881.                 Main.PlaySound(13, i * 16, j * 16, 1);
  7882.                 for (int num2 = k; num2 < k + 2; num2++)
  7883.                 {
  7884.                     for (int num3 = num; num3 < num + 2; num3++)
  7885.                     {
  7886.                         if ((int)Main.tile[num2, num3].type == type && Main.tile[num2, num3].active)
  7887.                         {
  7888.                             WorldGen.KillTile(num2, num3, false, false, false);
  7889.                         }
  7890.                     }
  7891.                 }
  7892.                 Gore.NewGore(new Vector2((float)(i * 16), (float)(j * 16)), default(Vector2), 51);
  7893.                 Gore.NewGore(new Vector2((float)(i * 16), (float)(j * 16)), default(Vector2), 52);
  7894.                 Gore.NewGore(new Vector2((float)(i * 16), (float)(j * 16)), default(Vector2), 53);
  7895.                 int num4 = Main.rand.Next(10);
  7896.                 if (num4 == 0 && Main.player[(int)Player.FindClosest(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16)].statLife < Main.player[(int)Player.FindClosest(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16)].statLifeMax)
  7897.                 {
  7898.                     Item.NewItem(i * 16, j * 16, 16, 16, 58, 1, false);
  7899.                 }
  7900.                 else
  7901.                 {
  7902.                     if (num4 == 1 && Main.player[(int)Player.FindClosest(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16)].statMana < Main.player[(int)Player.FindClosest(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16)].statManaMax)
  7903.                     {
  7904.                         Item.NewItem(i * 16, j * 16, 16, 16, 184, 1, false);
  7905.                     }
  7906.                     else
  7907.                     {
  7908.                         if (num4 == 2)
  7909.                         {
  7910.                             int stack = Main.rand.Next(3) + 1;
  7911.                             Item.NewItem(i * 16, j * 16, 16, 16, 8, stack, false);
  7912.                         }
  7913.                         else
  7914.                         {
  7915.                             if (num4 == 3)
  7916.                             {
  7917.                                 int stack2 = Main.rand.Next(8) + 3;
  7918.                                 Item.NewItem(i * 16, j * 16, 16, 16, 40, stack2, false);
  7919.                             }
  7920.                             else
  7921.                             {
  7922.                                 if (num4 == 4)
  7923.                                 {
  7924.                                     Item.NewItem(i * 16, j * 16, 16, 16, 28, 1, false);
  7925.                                 }
  7926.                                 else
  7927.                                 {
  7928.                                     if (num4 == 5)
  7929.                                     {
  7930.                                         int stack3 = Main.rand.Next(4) + 1;
  7931.                                         Item.NewItem(i * 16, j * 16, 16, 16, 166, stack3, false);
  7932.                                     }
  7933.                                     else
  7934.                                     {
  7935.                                         float num5 = (float)(200 + WorldGen.genRand.Next(-100, 101));
  7936.                                         num5 *= 1f + (float)Main.rand.Next(-20, 21) * 0.01f;
  7937.                                         if (Main.rand.Next(5) == 0)
  7938.                                         {
  7939.                                             num5 *= 1f + (float)Main.rand.Next(5, 11) * 0.01f;
  7940.                                         }
  7941.                                         if (Main.rand.Next(10) == 0)
  7942.                                         {
  7943.                                             num5 *= 1f + (float)Main.rand.Next(10, 21) * 0.01f;
  7944.                                         }
  7945.                                         if (Main.rand.Next(15) == 0)
  7946.                                         {
  7947.                                             num5 *= 1f + (float)Main.rand.Next(20, 41) * 0.01f;
  7948.                                         }
  7949.                                         if (Main.rand.Next(20) == 0)
  7950.                                         {
  7951.                                             num5 *= 1f + (float)Main.rand.Next(40, 81) * 0.01f;
  7952.                                         }
  7953.                                         if (Main.rand.Next(25) == 0)
  7954.                                         {
  7955.                                             num5 *= 1f + (float)Main.rand.Next(50, 101) * 0.01f;
  7956.                                         }
  7957.                                         while ((int)num5 > 0)
  7958.                                         {
  7959.                                             if (num5 > 1000000f)
  7960.                                             {
  7961.                                                 int num6 = (int)(num5 / 1000000f);
  7962.                                                 if (num6 > 50 && Main.rand.Next(2) == 0)
  7963.                                                 {
  7964.                                                     num6 /= Main.rand.Next(3) + 1;
  7965.                                                 }
  7966.                                                 if (Main.rand.Next(2) == 0)
  7967.                                                 {
  7968.                                                     num6 /= Main.rand.Next(3) + 1;
  7969.                                                 }
  7970.                                                 num5 -= (float)(1000000 * num6);
  7971.                                                 Item.NewItem(i * 16, j * 16, 16, 16, 74, num6, false);
  7972.                                             }
  7973.                                             else
  7974.                                             {
  7975.                                                 if (num5 > 10000f)
  7976.                                                 {
  7977.                                                     int num7 = (int)(num5 / 10000f);
  7978.                                                     if (num7 > 50 && Main.rand.Next(2) == 0)
  7979.                                                     {
  7980.                                                         num7 /= Main.rand.Next(3) + 1;
  7981.                                                     }
  7982.                                                     if (Main.rand.Next(2) == 0)
  7983.                                                     {
  7984.                                                         num7 /= Main.rand.Next(3) + 1;
  7985.                                                     }
  7986.                                                     num5 -= (float)(10000 * num7);
  7987.                                                     Item.NewItem(i * 16, j * 16, 16, 16, 73, num7, false);
  7988.                                                 }
  7989.                                                 else
  7990.                                                 {
  7991.                                                     if (num5 > 100f)
  7992.                                                     {
  7993.                                                         int num8 = (int)(num5 / 100f);
  7994.                                                         if (num8 > 50 && Main.rand.Next(2) == 0)
  7995.                                                         {
  7996.                                                             num8 /= Main.rand.Next(3) + 1;
  7997.                                                         }
  7998.                                                         if (Main.rand.Next(2) == 0)
  7999.                                                         {
  8000.                                                             num8 /= Main.rand.Next(3) + 1;
  8001.                                                         }
  8002.                                                         num5 -= (float)(100 * num8);
  8003.                                                         Item.NewItem(i * 16, j * 16, 16, 16, 72, num8, false);
  8004.                                                     }
  8005.                                                     else
  8006.                                                     {
  8007.                                                         int num9 = (int)num5;
  8008.                                                         if (num9 > 50 && Main.rand.Next(2) == 0)
  8009.                                                         {
  8010.                                                             num9 /= Main.rand.Next(3) + 1;
  8011.                                                         }
  8012.                                                         if (Main.rand.Next(2) == 0)
  8013.                                                         {
  8014.                                                             num9 /= Main.rand.Next(4) + 1;
  8015.                                                         }
  8016.                                                         if (num9 < 1)
  8017.                                                         {
  8018.                                                             num9 = 1;
  8019.                                                         }
  8020.                                                         num5 -= (float)num9;
  8021.                                                         Item.NewItem(i * 16, j * 16, 16, 16, 71, num9, false);
  8022.                                                     }
  8023.                                                 }
  8024.                                             }
  8025.                                         }
  8026.                                     }
  8027.                                 }
  8028.                             }
  8029.                         }
  8030.                     }
  8031.                 }
  8032.                 WorldGen.destroyObject = false;
  8033.             }
  8034.         }
  8035.         public static int PlaceChest(int x, int y, int type = 21)
  8036.         {
  8037.             bool flag = true;
  8038.             int num = -1;
  8039.             for (int i = x; i < x + 2; i++)
  8040.             {
  8041.                 for (int j = y - 1; j < y + 1; j++)
  8042.                 {
  8043.                     if (Main.tile[i, j] == null)
  8044.                     {
  8045.                         Main.tile[i, j] = new Tile();
  8046.                     }
  8047.                     if (Main.tile[i, j].active)
  8048.                     {
  8049.                         flag = false;
  8050.                     }
  8051.                     if (Main.tile[i, j].lava)
  8052.                     {
  8053.                         flag = false;
  8054.                     }
  8055.                 }
  8056.                 if (Main.tile[i, y + 1] == null)
  8057.                 {
  8058.                     Main.tile[i, y + 1] = new Tile();
  8059.                 }
  8060.                 if (!Main.tile[i, y + 1].active || !Main.tileSolid[(int)Main.tile[i, y + 1].type])
  8061.                 {
  8062.                     flag = false;
  8063.                 }
  8064.             }
  8065.             if (flag)
  8066.             {
  8067.                 num = Chest.CreateChest(x, y - 1);
  8068.                 if (num == -1)
  8069.                 {
  8070.                     flag = false;
  8071.                 }
  8072.             }
  8073.             if (flag)
  8074.             {
  8075.                 Main.tile[x, y - 1].active = true;
  8076.                 Main.tile[x, y - 1].frameY = 0;
  8077.                 Main.tile[x, y - 1].frameX = 0;
  8078.                 Main.tile[x, y - 1].type = (byte)type;
  8079.                 Main.tile[x + 1, y - 1].active = true;
  8080.                 Main.tile[x + 1, y - 1].frameY = 0;
  8081.                 Main.tile[x + 1, y - 1].frameX = 18;
  8082.                 Main.tile[x + 1, y - 1].type = (byte)type;
  8083.                 Main.tile[x, y].active = true;
  8084.                 Main.tile[x, y].frameY = 18;
  8085.                 Main.tile[x, y].frameX = 0;
  8086.                 Main.tile[x, y].type = (byte)type;
  8087.                 Main.tile[x + 1, y].active = true;
  8088.                 Main.tile[x + 1, y].frameY = 18;
  8089.                 Main.tile[x + 1, y].frameX = 18;
  8090.                 Main.tile[x + 1, y].type = (byte)type;
  8091.             }
  8092.             return num;
  8093.         }
  8094.         public static void CheckChest(int i, int j, int type)
  8095.         {
  8096.             if (WorldGen.destroyObject)
  8097.             {
  8098.                 return;
  8099.             }
  8100.             bool flag = false;
  8101.             int num = i + (int)(Main.tile[i, j].frameX / 18 * -1);
  8102.             int num2 = j + (int)(Main.tile[i, j].frameY / 18 * -1);
  8103.             for (int k = num; k < num + 2; k++)
  8104.             {
  8105.                 for (int l = num2; l < num2 + 2; l++)
  8106.                 {
  8107.                     if (Main.tile[k, l] == null)
  8108.                     {
  8109.                         Main.tile[k, l] = new Tile();
  8110.                     }
  8111.                     if (!Main.tile[k, l].active || (int)Main.tile[k, l].type != type || (int)Main.tile[k, l].frameX != (k - num) * 18 || (int)Main.tile[k, l].frameY != (l - num2) * 18)
  8112.                     {
  8113.                         flag = true;
  8114.                     }
  8115.                 }
  8116.                 if (Main.tile[k, num2 + 2] == null)
  8117.                 {
  8118.                     Main.tile[k, num2 + 2] = new Tile();
  8119.                 }
  8120.                 if (!Main.tile[k, num2 + 2].active || !Main.tileSolid[(int)Main.tile[k, num2 + 2].type])
  8121.                 {
  8122.                     flag = true;
  8123.                 }
  8124.             }
  8125.             if (flag)
  8126.             {
  8127.                 WorldGen.destroyObject = true;
  8128.                 for (int m = num; m < num + 2; m++)
  8129.                 {
  8130.                     for (int n = num2; n < num2 + 3; n++)
  8131.                     {
  8132.                         if ((int)Main.tile[m, n].type == type && Main.tile[m, n].active)
  8133.                         {
  8134.                             WorldGen.KillTile(m, n, false, false, false);
  8135.                         }
  8136.                     }
  8137.                 }
  8138.                 Item.NewItem(i * 16, j * 16, 32, 32, 48, 1, false);
  8139.                 WorldGen.destroyObject = false;
  8140.             }
  8141.         }
  8142.         public static bool PlaceTile(int i, int j, int type, bool mute = false, bool forced = false, int plr = -1)
  8143.         {
  8144.             bool result = false;
  8145.             if (i >= 0 && j >= 0 && i < Main.maxTilesX && j < Main.maxTilesY)
  8146.             {
  8147.                 if (Main.tile[i, j] == null)
  8148.                 {
  8149.                     Main.tile[i, j] = new Tile();
  8150.                 }
  8151.                 if (forced || Collision.EmptyTile(i, j, false) || !Main.tileSolid[type] || (type == 23 && Main.tile[i, j].type == 0 && Main.tile[i, j].active) || (type == 2 && Main.tile[i, j].type == 0 && Main.tile[i, j].active) || (type == 60 && Main.tile[i, j].type == 59 && Main.tile[i, j].active) || (type == 70 && Main.tile[i, j].type == 59 && Main.tile[i, j].active))
  8152.                 {
  8153.                     if (type == 23 && (Main.tile[i, j].type != 0 || !Main.tile[i, j].active))
  8154.                     {
  8155.                         return false;
  8156.                     }
  8157.                     if (type == 2 && (Main.tile[i, j].type != 0 || !Main.tile[i, j].active))
  8158.                     {
  8159.                         return false;
  8160.                     }
  8161.                     if (type == 60 && (Main.tile[i, j].type != 59 || !Main.tile[i, j].active))
  8162.                     {
  8163.                         return false;
  8164.                     }
  8165.                     if (Main.tile[i, j].liquid > 0 && (type == 3 || type == 4 || type == 20 || type == 24 || type == 27 || type == 32 || type == 51 || type == 61 || type == 69 || type == 72 || type == 73))
  8166.                     {
  8167.                         return false;
  8168.                     }
  8169.                     Main.tile[i, j].frameY = 0;
  8170.                     Main.tile[i, j].frameX = 0;
  8171.                     if (type == 3 || type == 24)
  8172.                     {
  8173.                         if (j + 1 < Main.maxTilesY && Main.tile[i, j + 1].active && ((Main.tile[i, j + 1].type == 2 && type == 3) || (Main.tile[i, j + 1].type == 23 && type == 24) || (Main.tile[i, j + 1].type == 78 && type == 3)))
  8174.                         {
  8175.                             if (type == 24 && WorldGen.genRand.Next(13) == 0)
  8176.                             {
  8177.                                 Main.tile[i, j].active = true;
  8178.                                 Main.tile[i, j].type = 32;
  8179.                                 WorldGen.SquareTileFrame(i, j, true);
  8180.                             }
  8181.                             else
  8182.                             {
  8183.                                 if (Main.tile[i, j + 1].type == 78)
  8184.                                 {
  8185.                                     Main.tile[i, j].active = true;
  8186.                                     Main.tile[i, j].type = (byte)type;
  8187.                                     Main.tile[i, j].frameX = (short)(WorldGen.genRand.Next(2) * 18 + 108);
  8188.                                 }
  8189.                                 else
  8190.                                 {
  8191.                                     if (Main.tile[i, j].wall == 0 && Main.tile[i, j + 1].wall == 0)
  8192.                                     {
  8193.                                         if (WorldGen.genRand.Next(50) == 0)
  8194.                                         {
  8195.                                             Main.tile[i, j].active = true;
  8196.                                             Main.tile[i, j].type = (byte)type;
  8197.                                             Main.tile[i, j].frameX = 144;
  8198.                                         }
  8199.                                         else
  8200.                                         {
  8201.                                             if (WorldGen.genRand.Next(35) == 0)
  8202.                                             {
  8203.                                                 Main.tile[i, j].active = true;
  8204.                                                 Main.tile[i, j].type = (byte)type;
  8205.                                                 Main.tile[i, j].frameX = (short)(WorldGen.genRand.Next(2) * 18 + 108);
  8206.                                             }
  8207.                                             else
  8208.                                             {
  8209.                                                 Main.tile[i, j].active = true;
  8210.                                                 Main.tile[i, j].type = (byte)type;
  8211.                                                 Main.tile[i, j].frameX = (short)(WorldGen.genRand.Next(6) * 18);
  8212.                                             }
  8213.                                         }
  8214.                                     }
  8215.                                 }
  8216.                             }
  8217.                         }
  8218.                     }
  8219.                     else
  8220.                     {
  8221.                         if (type == 61)
  8222.                         {
  8223.                             if (j + 1 < Main.maxTilesY && Main.tile[i, j + 1].active && Main.tile[i, j + 1].type == 60)
  8224.                             {
  8225.                                 if (WorldGen.genRand.Next(10) == 0)
  8226.                                 {
  8227.                                     Main.tile[i, j].active = true;
  8228.                                     Main.tile[i, j].type = 69;
  8229.                                     WorldGen.SquareTileFrame(i, j, true);
  8230.                                 }
  8231.                                 else
  8232.                                 {
  8233.                                     if (WorldGen.genRand.Next(15) == 0)
  8234.                                     {
  8235.                                         Main.tile[i, j].active = true;
  8236.                                         Main.tile[i, j].type = (byte)type;
  8237.                                         Main.tile[i, j].frameX = 144;
  8238.                                     }
  8239.                                     else
  8240.                                     {
  8241.                                         if (WorldGen.genRand.Next(1000) == 0)
  8242.                                         {
  8243.                                             Main.tile[i, j].active = true;
  8244.                                             Main.tile[i, j].type = (byte)type;
  8245.                                             Main.tile[i, j].frameX = 162;
  8246.                                         }
  8247.                                         else
  8248.                                         {
  8249.                                             Main.tile[i, j].active = true;
  8250.                                             Main.tile[i, j].type = (byte)type;
  8251.                                             Main.tile[i, j].frameX = (short)(WorldGen.genRand.Next(8) * 18);
  8252.                                         }
  8253.                                     }
  8254.                                 }
  8255.                             }
  8256.                         }
  8257.                         else
  8258.                         {
  8259.                             if (type == 71)
  8260.                             {
  8261.                                 if (j + 1 < Main.maxTilesY && Main.tile[i, j + 1].active && Main.tile[i, j + 1].type == 70)
  8262.                                 {
  8263.                                     Main.tile[i, j].active = true;
  8264.                                     Main.tile[i, j].type = (byte)type;
  8265.                                     Main.tile[i, j].frameX = (short)(WorldGen.genRand.Next(5) * 18);
  8266.                                 }
  8267.                             }
  8268.                             else
  8269.                             {
  8270.                                 if (type == 4)
  8271.                                 {
  8272.                                     if (Main.tile[i - 1, j] == null)
  8273.                                     {
  8274.                                         Main.tile[i - 1, j] = new Tile();
  8275.                                     }
  8276.                                     if (Main.tile[i + 1, j] == null)
  8277.                                     {
  8278.                                         Main.tile[i + 1, j] = new Tile();
  8279.                                     }
  8280.                                     if (Main.tile[i, j + 1] == null)
  8281.                                     {
  8282.                                         Main.tile[i, j + 1] = new Tile();
  8283.                                     }
  8284.                                     if ((Main.tile[i - 1, j].active && (Main.tileSolid[(int)Main.tile[i - 1, j].type] || (Main.tile[i - 1, j].type == 5 && Main.tile[i - 1, j - 1].type == 5 && Main.tile[i - 1, j + 1].type == 5))) || (Main.tile[i + 1, j].active && (Main.tileSolid[(int)Main.tile[i + 1, j].type] || (Main.tile[i + 1, j].type == 5 && Main.tile[i + 1, j - 1].type == 5 && Main.tile[i + 1, j + 1].type == 5))) || (Main.tile[i, j + 1].active && Main.tileSolid[(int)Main.tile[i, j + 1].type]))
  8285.                                     {
  8286.                                         Main.tile[i, j].active = true;
  8287.                                         Main.tile[i, j].type = (byte)type;
  8288.                                         WorldGen.SquareTileFrame(i, j, true);
  8289.                                     }
  8290.                                 }
  8291.                                 else
  8292.                                 {
  8293.                                     if (type == 10)
  8294.                                     {
  8295.                                         if (Main.tile[i, j - 1] == null)
  8296.                                         {
  8297.                                             Main.tile[i, j - 1] = new Tile();
  8298.                                         }
  8299.                                         if (Main.tile[i, j - 2] == null)
  8300.                                         {
  8301.                                             Main.tile[i, j - 2] = new Tile();
  8302.                                         }
  8303.                                         if (Main.tile[i, j - 3] == null)
  8304.                                         {
  8305.                                             Main.tile[i, j - 3] = new Tile();
  8306.                                         }
  8307.                                         if (Main.tile[i, j + 1] == null)
  8308.                                         {
  8309.                                             Main.tile[i, j + 1] = new Tile();
  8310.                                         }
  8311.                                         if (Main.tile[i, j + 2] == null)
  8312.                                         {
  8313.                                             Main.tile[i, j + 2] = new Tile();
  8314.                                         }
  8315.                                         if (Main.tile[i, j + 3] == null)
  8316.                                         {
  8317.                                             Main.tile[i, j + 3] = new Tile();
  8318.                                         }
  8319.                                         if (!Main.tile[i, j - 1].active && !Main.tile[i, j - 2].active && Main.tile[i, j - 3].active && Main.tileSolid[(int)Main.tile[i, j - 3].type])
  8320.                                         {
  8321.                                             WorldGen.PlaceDoor(i, j - 1, type);
  8322.                                             WorldGen.SquareTileFrame(i, j, true);
  8323.                                         }
  8324.                                         else
  8325.                                         {
  8326.                                             if (Main.tile[i, j + 1].active || Main.tile[i, j + 2].active || !Main.tile[i, j + 3].active || !Main.tileSolid[(int)Main.tile[i, j + 3].type])
  8327.                                             {
  8328.                                                 return false;
  8329.                                             }
  8330.                                             WorldGen.PlaceDoor(i, j + 1, type);
  8331.                                             WorldGen.SquareTileFrame(i, j, true);
  8332.                                         }
  8333.                                     }
  8334.                                     else
  8335.                                     {
  8336.                                         if (type == 34 || type == 35 || type == 36)
  8337.                                         {
  8338.                                             WorldGen.Place3x3(i, j, type);
  8339.                                             WorldGen.SquareTileFrame(i, j, true);
  8340.                                         }
  8341.                                         else
  8342.                                         {
  8343.                                             if (type == 13 || type == 33 || type == 49 || type == 50 || type == 78)
  8344.                                             {
  8345.                                                 WorldGen.PlaceOnTable1x1(i, j, type);
  8346.                                                 WorldGen.SquareTileFrame(i, j, true);
  8347.                                             }
  8348.                                             else
  8349.                                             {
  8350.                                                 if (type == 14 || type == 26)
  8351.                                                 {
  8352.                                                     WorldGen.Place3x2(i, j, type);
  8353.                                                     WorldGen.SquareTileFrame(i, j, true);
  8354.                                                 }
  8355.                                                 else
  8356.                                                 {
  8357.                                                     if (type == 20)
  8358.                                                     {
  8359.                                                         if (Main.tile[i, j + 1] == null)
  8360.                                                         {
  8361.                                                             Main.tile[i, j + 1] = new Tile();
  8362.                                                         }
  8363.                                                         if (Main.tile[i, j + 1].active && Main.tile[i, j + 1].type == 2)
  8364.                                                         {
  8365.                                                             WorldGen.Place1x2(i, j, type);
  8366.                                                             WorldGen.SquareTileFrame(i, j, true);
  8367.                                                         }
  8368.                                                     }
  8369.                                                     else
  8370.                                                     {
  8371.                                                         if (type == 15)
  8372.                                                         {
  8373.                                                             if (Main.tile[i, j - 1] == null)
  8374.                                                             {
  8375.                                                                 Main.tile[i, j - 1] = new Tile();
  8376.                                                             }
  8377.                                                             if (Main.tile[i, j] == null)
  8378.                                                             {
  8379.                                                                 Main.tile[i, j] = new Tile();
  8380.                                                             }
  8381.                                                             WorldGen.Place1x2(i, j, type);
  8382.                                                             WorldGen.SquareTileFrame(i, j, true);
  8383.                                                         }
  8384.                                                         else
  8385.                                                         {
  8386.                                                             if (type == 16 || type == 18 || type == 29)
  8387.                                                             {
  8388.                                                                 WorldGen.Place2x1(i, j, type);
  8389.                                                                 WorldGen.SquareTileFrame(i, j, true);
  8390.                                                             }
  8391.                                                             else
  8392.                                                             {
  8393.                                                                 if (type == 17 || type == 77)
  8394.                                                                 {
  8395.                                                                     WorldGen.Place3x2(i, j, type);
  8396.                                                                     WorldGen.SquareTileFrame(i, j, true);
  8397.                                                                 }
  8398.                                                                 else
  8399.                                                                 {
  8400.                                                                     if (type == 21)
  8401.                                                                     {
  8402.                                                                         WorldGen.PlaceChest(i, j, type);
  8403.                                                                         WorldGen.SquareTileFrame(i, j, true);
  8404.                                                                     }
  8405.                                                                     else
  8406.                                                                     {
  8407.                                                                         if (type == 27)
  8408.                                                                         {
  8409.                                                                             WorldGen.PlaceSunflower(i, j, 27);
  8410.                                                                             WorldGen.SquareTileFrame(i, j, true);
  8411.                                                                         }
  8412.                                                                         else
  8413.                                                                         {
  8414.                                                                             if (type == 28)
  8415.                                                                             {
  8416.                                                                                 WorldGen.PlacePot(i, j, 28);
  8417.                                                                                 WorldGen.SquareTileFrame(i, j, true);
  8418.                                                                             }
  8419.                                                                             else
  8420.                                                                             {
  8421.                                                                                 if (type == 42)
  8422.                                                                                 {
  8423.                                                                                     WorldGen.Place1x2Top(i, j, type);
  8424.                                                                                     WorldGen.SquareTileFrame(i, j, true);
  8425.                                                                                 }
  8426.                                                                                 else
  8427.                                                                                 {
  8428.                                                                                     if (type == 55)
  8429.                                                                                     {
  8430.                                                                                         WorldGen.PlaceSign(i, j, type);
  8431.                                                                                     }
  8432.                                                                                     else
  8433.                                                                                     {
  8434.                                                                                         if (type == 79)
  8435.                                                                                         {
  8436.                                                                                             int direction = 1;
  8437.                                                                                             if (plr > -1)
  8438.                                                                                             {
  8439.                                                                                                 direction = Main.player[plr].direction;
  8440.                                                                                             }
  8441.                                                                                             WorldGen.Place4x2(i, j, type, direction);
  8442.                                                                                         }
  8443.                                                                                         else
  8444.                                                                                         {
  8445.                                                                                             Main.tile[i, j].active = true;
  8446.                                                                                             Main.tile[i, j].type = (byte)type;
  8447.                                                                                         }
  8448.                                                                                     }
  8449.                                                                                 }
  8450.                                                                             }
  8451.                                                                         }
  8452.                                                                     }
  8453.                                                                 }
  8454.                                                             }
  8455.                                                         }
  8456.                                                     }
  8457.                                                 }
  8458.                                             }
  8459.                                         }
  8460.                                     }
  8461.                                 }
  8462.                             }
  8463.                         }
  8464.                     }
  8465.                     if (Main.tile[i, j].active && !mute)
  8466.                     {
  8467.                         WorldGen.SquareTileFrame(i, j, true);
  8468.                         result = true;
  8469.                         Main.PlaySound(0, i * 16, j * 16, 1);
  8470.                         if (type == 22)
  8471.                         {
  8472.                             for (int k = 0; k < 3; k++)
  8473.                             {
  8474.                                 Dust.NewDust(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16, 14, 0f, 0f, 0, default(Color), 1f);
  8475.                             }
  8476.                         }
  8477.                     }
  8478.                 }
  8479.             }
  8480.             return result;
  8481.         }
  8482.         public static void KillWall(int i, int j, bool fail = false)
  8483.         {
  8484.             if (i >= 0 && j >= 0 && i < Main.maxTilesX && j < Main.maxTilesY)
  8485.             {
  8486.                 if (Main.tile[i, j] == null)
  8487.                 {
  8488.                     Main.tile[i, j] = new Tile();
  8489.                 }
  8490.                 if (Main.tile[i, j].wall > 0)
  8491.                 {
  8492.                     WorldGen.genRand.Next(3);
  8493.                     Main.PlaySound(0, i * 16, j * 16, 1);
  8494.                     int num = 10;
  8495.                     if (fail)
  8496.                     {
  8497.                         num = 3;
  8498.                     }
  8499.                     for (int k = 0; k < num; k++)
  8500.                     {
  8501.                         int type = 0;
  8502.                         if (Main.tile[i, j].wall == 1 || Main.tile[i, j].wall == 5 || Main.tile[i, j].wall == 6 || Main.tile[i, j].wall == 7 || Main.tile[i, j].wall == 8 || Main.tile[i, j].wall == 9)
  8503.                         {
  8504.                             type = 1;
  8505.                         }
  8506.                         if (Main.tile[i, j].wall == 3)
  8507.                         {
  8508.                             if (WorldGen.genRand.Next(2) == 0)
  8509.                             {
  8510.                                 type = 14;
  8511.                             }
  8512.                             else
  8513.                             {
  8514.                                 type = 1;
  8515.                             }
  8516.                         }
  8517.                         if (Main.tile[i, j].wall == 4)
  8518.                         {
  8519.                             type = 7;
  8520.                         }
  8521.                         if (Main.tile[i, j].wall == 12)
  8522.                         {
  8523.                             type = 9;
  8524.                         }
  8525.                         if (Main.tile[i, j].wall == 10)
  8526.                         {
  8527.                             type = 10;
  8528.                         }
  8529.                         if (Main.tile[i, j].wall == 11)
  8530.                         {
  8531.                             type = 11;
  8532.                         }
  8533.                         Dust.NewDust(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16, type, 0f, 0f, 0, default(Color), 1f);
  8534.                     }
  8535.                     if (fail)
  8536.                     {
  8537.                         WorldGen.SquareWallFrame(i, j, true);
  8538.                         return;
  8539.                     }
  8540.                     int num2 = 0;
  8541.                     if (Main.tile[i, j].wall == 1)
  8542.                     {
  8543.                         num2 = 26;
  8544.                     }
  8545.                     if (Main.tile[i, j].wall == 4)
  8546.                     {
  8547.                         num2 = 93;
  8548.                     }
  8549.                     if (Main.tile[i, j].wall == 5)
  8550.                     {
  8551.                         num2 = 130;
  8552.                     }
  8553.                     if (Main.tile[i, j].wall == 6)
  8554.                     {
  8555.                         num2 = 132;
  8556.                     }
  8557.                     if (Main.tile[i, j].wall == 7)
  8558.                     {
  8559.                         num2 = 135;
  8560.                     }
  8561.                     if (Main.tile[i, j].wall == 8)
  8562.                     {
  8563.                         num2 = 138;
  8564.                     }
  8565.                     if (Main.tile[i, j].wall == 9)
  8566.                     {
  8567.                         num2 = 140;
  8568.                     }
  8569.                     if (Main.tile[i, j].wall == 10)
  8570.                     {
  8571.                         num2 = 142;
  8572.                     }
  8573.                     if (Main.tile[i, j].wall == 11)
  8574.                     {
  8575.                         num2 = 144;
  8576.                     }
  8577.                     if (Main.tile[i, j].wall == 12)
  8578.                     {
  8579.                         num2 = 146;
  8580.                     }
  8581.                     if (num2 > 0)
  8582.                     {
  8583.                         Item.NewItem(i * 16, j * 16, 16, 16, num2, 1, false);
  8584.                     }
  8585.                     Main.tile[i, j].wall = 0;
  8586.                     WorldGen.SquareWallFrame(i, j, true);
  8587.                 }
  8588.             }
  8589.         }
  8590.         public static void KillTile(int i, int j, bool fail = false, bool effectOnly = false, bool noItem = false)
  8591.         {
  8592.             if (i >= 0 && j >= 0 && i < Main.maxTilesX && j < Main.maxTilesY)
  8593.             {
  8594.                 if (Main.tile[i, j] == null)
  8595.                 {
  8596.                     Main.tile[i, j] = new Tile();
  8597.                 }
  8598.                 if (Main.tile[i, j].active)
  8599.                 {
  8600.                     if (j >= 1 && Main.tile[i, j - 1] == null)
  8601.                     {
  8602.                         Main.tile[i, j - 1] = new Tile();
  8603.                     }
  8604.                     if (j >= 1 && Main.tile[i, j - 1].active && ((Main.tile[i, j - 1].type == 5 && Main.tile[i, j].type != 5) || (Main.tile[i, j - 1].type == 21 && Main.tile[i, j].type != 21) || (Main.tile[i, j - 1].type == 26 && Main.tile[i, j].type != 26) || (Main.tile[i, j - 1].type == 72 && Main.tile[i, j].type != 72) || (Main.tile[i, j - 1].type == 12 && Main.tile[i, j].type != 12)) && (Main.tile[i, j - 1].type != 5 || ((Main.tile[i, j - 1].frameX != 66 || Main.tile[i, j - 1].frameY < 0 || Main.tile[i, j - 1].frameY > 44) && (Main.tile[i, j - 1].frameX != 88 || Main.tile[i, j - 1].frameY < 66 || Main.tile[i, j - 1].frameY > 110) && Main.tile[i, j - 1].frameY < 198)))
  8605.                     {
  8606.                         return;
  8607.                     }
  8608.                     if (!effectOnly && !WorldGen.stopDrops)
  8609.                     {
  8610.                         if (Main.tile[i, j].type == 3)
  8611.                         {
  8612.                             Main.PlaySound(6, i * 16, j * 16, 1);
  8613.                             if (Main.tile[i, j].frameX == 144)
  8614.                             {
  8615.                                 Item.NewItem(i * 16, j * 16, 16, 16, 5, 1, false);
  8616.                             }
  8617.                         }
  8618.                         else
  8619.                         {
  8620.                             if (Main.tile[i, j].type == 24)
  8621.                             {
  8622.                                 Main.PlaySound(6, i * 16, j * 16, 1);
  8623.                                 if (Main.tile[i, j].frameX == 144)
  8624.                                 {
  8625.                                     Item.NewItem(i * 16, j * 16, 16, 16, 60, 1, false);
  8626.                                 }
  8627.                             }
  8628.                             else
  8629.                             {
  8630.                                 if (Main.tile[i, j].type == 32 || Main.tile[i, j].type == 51 || Main.tile[i, j].type == 52 || Main.tile[i, j].type == 61 || Main.tile[i, j].type == 62 || Main.tile[i, j].type == 69 || Main.tile[i, j].type == 71 || Main.tile[i, j].type == 73 || Main.tile[i, j].type == 74)
  8631.                                 {
  8632.                                     Main.PlaySound(6, i * 16, j * 16, 1);
  8633.                                 }
  8634.                                 else
  8635.                                 {
  8636.                                     if (Main.tile[i, j].type == 1 || Main.tile[i, j].type == 6 || Main.tile[i, j].type == 7 || Main.tile[i, j].type == 8 || Main.tile[i, j].type == 9 || Main.tile[i, j].type == 22 || Main.tile[i, j].type == 25 || Main.tile[i, j].type == 37 || Main.tile[i, j].type == 38 || Main.tile[i, j].type == 39 || Main.tile[i, j].type == 41 || Main.tile[i, j].type == 43 || Main.tile[i, j].type == 44 || Main.tile[i, j].type == 45 || Main.tile[i, j].type == 46 || Main.tile[i, j].type == 47 || Main.tile[i, j].type == 48 || Main.tile[i, j].type == 56 || Main.tile[i, j].type == 58 || Main.tile[i, j].type == 63 || Main.tile[i, j].type == 64 || Main.tile[i, j].type == 65 || Main.tile[i, j].type == 66 || Main.tile[i, j].type == 67 || Main.tile[i, j].type == 68 || Main.tile[i, j].type == 75 || Main.tile[i, j].type == 76)
  8637.                                     {
  8638.                                         Main.PlaySound(21, i * 16, j * 16, 1);
  8639.                                     }
  8640.                                     else
  8641.                                     {
  8642.                                         Main.PlaySound(0, i * 16, j * 16, 1);
  8643.                                     }
  8644.                                 }
  8645.                             }
  8646.                         }
  8647.                     }
  8648.                     int num = 10;
  8649.                     if (fail)
  8650.                     {
  8651.                         num = 3;
  8652.                     }
  8653.                     for (int k = 0; k < num; k++)
  8654.                     {
  8655.                         int num2 = 0;
  8656.                         if (Main.tile[i, j].type == 0)
  8657.                         {
  8658.                             num2 = 0;
  8659.                         }
  8660.                         if (Main.tile[i, j].type == 1 || Main.tile[i, j].type == 16 || Main.tile[i, j].type == 17 || Main.tile[i, j].type == 38 || Main.tile[i, j].type == 39 || Main.tile[i, j].type == 41 || Main.tile[i, j].type == 43 || Main.tile[i, j].type == 44 || Main.tile[i, j].type == 48 || Main.tileStone[(int)Main.tile[i, j].type])
  8661.                         {
  8662.                             num2 = 1;
  8663.                         }
  8664.                         if (Main.tile[i, j].type == 4 || Main.tile[i, j].type == 33)
  8665.                         {
  8666.                             num2 = 6;
  8667.                         }
  8668.                         if (Main.tile[i, j].type == 5 || Main.tile[i, j].type == 10 || Main.tile[i, j].type == 11 || Main.tile[i, j].type == 14 || Main.tile[i, j].type == 15 || Main.tile[i, j].type == 19 || Main.tile[i, j].type == 21 || Main.tile[i, j].type == 30)
  8669.                         {
  8670.                             num2 = 7;
  8671.                         }
  8672.                         if (Main.tile[i, j].type == 2)
  8673.                         {
  8674.                             if (WorldGen.genRand.Next(2) == 0)
  8675.                             {
  8676.                                 num2 = 0;
  8677.                             }
  8678.                             else
  8679.                             {
  8680.                                 num2 = 2;
  8681.                             }
  8682.                         }
  8683.                         if (Main.tile[i, j].type == 6 || Main.tile[i, j].type == 26)
  8684.                         {
  8685.                             num2 = 8;
  8686.                         }
  8687.                         if (Main.tile[i, j].type == 7 || Main.tile[i, j].type == 34 || Main.tile[i, j].type == 47)
  8688.                         {
  8689.                             num2 = 9;
  8690.                         }
  8691.                         if (Main.tile[i, j].type == 8 || Main.tile[i, j].type == 36 || Main.tile[i, j].type == 45)
  8692.                         {
  8693.                             num2 = 10;
  8694.                         }
  8695.                         if (Main.tile[i, j].type == 9 || Main.tile[i, j].type == 35 || Main.tile[i, j].type == 42 || Main.tile[i, j].type == 46)
  8696.                         {
  8697.                             num2 = 11;
  8698.                         }
  8699.                         if (Main.tile[i, j].type == 12)
  8700.                         {
  8701.                             num2 = 12;
  8702.                         }
  8703.                         if (Main.tile[i, j].type == 3 || Main.tile[i, j].type == 73)
  8704.                         {
  8705.                             num2 = 3;
  8706.                         }
  8707.                         if (Main.tile[i, j].type == 13 || Main.tile[i, j].type == 54)
  8708.                         {
  8709.                             num2 = 13;
  8710.                         }
  8711.                         if (Main.tile[i, j].type == 22)
  8712.                         {
  8713.                             num2 = 14;
  8714.                         }
  8715.                         if (Main.tile[i, j].type == 28 || Main.tile[i, j].type == 78)
  8716.                         {
  8717.                             num2 = 22;
  8718.                         }
  8719.                         if (Main.tile[i, j].type == 29)
  8720.                         {
  8721.                             num2 = 23;
  8722.                         }
  8723.                         if (Main.tile[i, j].type == 40)
  8724.                         {
  8725.                             num2 = 28;
  8726.                         }
  8727.                         if (Main.tile[i, j].type == 49)
  8728.                         {
  8729.                             num2 = 29;
  8730.                         }
  8731.                         if (Main.tile[i, j].type == 50)
  8732.                         {
  8733.                             num2 = 22;
  8734.                         }
  8735.                         if (Main.tile[i, j].type == 51)
  8736.                         {
  8737.                             num2 = 30;
  8738.                         }
  8739.                         if (Main.tile[i, j].type == 52)
  8740.                         {
  8741.                             num2 = 3;
  8742.                         }
  8743.                         if (Main.tile[i, j].type == 53)
  8744.                         {
  8745.                             num2 = 32;
  8746.                         }
  8747.                         if (Main.tile[i, j].type == 56 || Main.tile[i, j].type == 75)
  8748.                         {
  8749.                             num2 = 37;
  8750.                         }
  8751.                         if (Main.tile[i, j].type == 57)
  8752.                         {
  8753.                             num2 = 36;
  8754.                         }
  8755.                         if (Main.tile[i, j].type == 59)
  8756.                         {
  8757.                             num2 = 38;
  8758.                         }
  8759.                         if (Main.tile[i, j].type == 61 || Main.tile[i, j].type == 62 || Main.tile[i, j].type == 74)
  8760.                         {
  8761.                             num2 = 40;
  8762.                         }
  8763.                         if (Main.tile[i, j].type == 69)
  8764.                         {
  8765.                             num2 = 7;
  8766.                         }
  8767.                         if (Main.tile[i, j].type == 71 || Main.tile[i, j].type == 72)
  8768.                         {
  8769.                             num2 = 26;
  8770.                         }
  8771.                         if (Main.tile[i, j].type == 70)
  8772.                         {
  8773.                             num2 = 17;
  8774.                         }
  8775.                         if (Main.tile[i, j].type == 2)
  8776.                         {
  8777.                             if (WorldGen.genRand.Next(2) == 0)
  8778.                             {
  8779.                                 num2 = 38;
  8780.                             }
  8781.                             else
  8782.                             {
  8783.                                 num2 = 39;
  8784.                             }
  8785.                         }
  8786.                         if (Main.tile[i, j].type == 58 || Main.tile[i, j].type == 76 || Main.tile[i, j].type == 77)
  8787.                         {
  8788.                             if (WorldGen.genRand.Next(2) == 0)
  8789.                             {
  8790.                                 num2 = 6;
  8791.                             }
  8792.                             else
  8793.                             {
  8794.                                 num2 = 25;
  8795.                             }
  8796.                         }
  8797.                         if (Main.tile[i, j].type == 37)
  8798.                         {
  8799.                             if (WorldGen.genRand.Next(2) == 0)
  8800.                             {
  8801.                                 num2 = 6;
  8802.                             }
  8803.                             else
  8804.                             {
  8805.                                 num2 = 23;
  8806.                             }
  8807.                         }
  8808.                         if (Main.tile[i, j].type == 32)
  8809.                         {
  8810.                             if (WorldGen.genRand.Next(2) == 0)
  8811.                             {
  8812.                                 num2 = 14;
  8813.                             }
  8814.                             else
  8815.                             {
  8816.                                 num2 = 24;
  8817.                             }
  8818.                         }
  8819.                         if (Main.tile[i, j].type == 23 || Main.tile[i, j].type == 24)
  8820.                         {
  8821.                             if (WorldGen.genRand.Next(2) == 0)
  8822.                             {
  8823.                                 num2 = 14;
  8824.                             }
  8825.                             else
  8826.                             {
  8827.                                 num2 = 17;
  8828.                             }
  8829.                         }
  8830.                         if (Main.tile[i, j].type == 25 || Main.tile[i, j].type == 31)
  8831.                         {
  8832.                             if (WorldGen.genRand.Next(2) == 0)
  8833.                             {
  8834.                                 num2 = 14;
  8835.                             }
  8836.                             else
  8837.                             {
  8838.                                 num2 = 1;
  8839.                             }
  8840.                         }
  8841.                         if (Main.tile[i, j].type == 20)
  8842.                         {
  8843.                             if (WorldGen.genRand.Next(2) == 0)
  8844.                             {
  8845.                                 num2 = 7;
  8846.                             }
  8847.                             else
  8848.                             {
  8849.                                 num2 = 2;
  8850.                             }
  8851.                         }
  8852.                         if (Main.tile[i, j].type == 27)
  8853.                         {
  8854.                             if (WorldGen.genRand.Next(2) == 0)
  8855.                             {
  8856.                                 num2 = 3;
  8857.                             }
  8858.                             else
  8859.                             {
  8860.                                 num2 = 19;
  8861.                             }
  8862.                         }
  8863.                         if ((Main.tile[i, j].type == 34 || Main.tile[i, j].type == 35 || Main.tile[i, j].type == 36 || Main.tile[i, j].type == 42) && Main.rand.Next(2) == 0)
  8864.                         {
  8865.                             num2 = 6;
  8866.                         }
  8867.                         if (num2 >= 0)
  8868.                         {
  8869.                             Dust.NewDust(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16, num2, 0f, 0f, 0, default(Color), 1f);
  8870.                         }
  8871.                     }
  8872.                     if (effectOnly)
  8873.                     {
  8874.                         return;
  8875.                     }
  8876.                     if (fail)
  8877.                     {
  8878.                         if (Main.tile[i, j].type == 2 || Main.tile[i, j].type == 23)
  8879.                         {
  8880.                             Main.tile[i, j].type = 0;
  8881.                         }
  8882.                         if (Main.tile[i, j].type == 60)
  8883.                         {
  8884.                             Main.tile[i, j].type = 59;
  8885.                         }
  8886.                         WorldGen.SquareTileFrame(i, j, true);
  8887.                         return;
  8888.                     }
  8889.                     if (Main.tile[i, j].type == 21 && Main.netMode != 1)
  8890.                     {
  8891.                         int x = i - (int)(Main.tile[i, j].frameX / 18);
  8892.                         int y = j - (int)(Main.tile[i, j].frameY / 18);
  8893.                         if (!Chest.DestroyChest(x, y))
  8894.                         {
  8895.                             return;
  8896.                         }
  8897.                     }
  8898.                     if (!noItem && !WorldGen.stopDrops)
  8899.                     {
  8900.                         int num3 = 0;
  8901.                         if (Main.tile[i, j].type == 0 || Main.tile[i, j].type == 2)
  8902.                         {
  8903.                             num3 = 2;
  8904.                         }
  8905.                         else
  8906.                         {
  8907.                             if (Main.tile[i, j].type == 1)
  8908.                             {
  8909.                                 num3 = 3;
  8910.                             }
  8911.                             else
  8912.                             {
  8913.                                 if (Main.tile[i, j].type == 4)
  8914.                                 {
  8915.                                     num3 = 8;
  8916.                                 }
  8917.                                 else
  8918.                                 {
  8919.                                     if (Main.tile[i, j].type == 5)
  8920.                                     {
  8921.                                         if (Main.tile[i, j].frameX >= 22 && Main.tile[i, j].frameY >= 198)
  8922.                                         {
  8923.                                             if (WorldGen.genRand.Next(2) == 0)
  8924.                                             {
  8925.                                                 num3 = 27;
  8926.                                             }
  8927.                                             else
  8928.                                             {
  8929.                                                 num3 = 9;
  8930.                                             }
  8931.                                         }
  8932.                                         else
  8933.                                         {
  8934.                                             num3 = 9;
  8935.                                         }
  8936.                                     }
  8937.                                     else
  8938.                                     {
  8939.                                         if (Main.tile[i, j].type == 6)
  8940.                                         {
  8941.                                             num3 = 11;
  8942.                                         }
  8943.                                         else
  8944.                                         {
  8945.                                             if (Main.tile[i, j].type == 7)
  8946.                                             {
  8947.                                                 num3 = 12;
  8948.                                             }
  8949.                                             else
  8950.                                             {
  8951.                                                 if (Main.tile[i, j].type == 8)
  8952.                                                 {
  8953.                                                     num3 = 13;
  8954.                                                 }
  8955.                                                 else
  8956.                                                 {
  8957.                                                     if (Main.tile[i, j].type == 9)
  8958.                                                     {
  8959.                                                         num3 = 14;
  8960.                                                     }
  8961.                                                     else
  8962.                                                     {
  8963.                                                         if (Main.tile[i, j].type == 13)
  8964.                                                         {
  8965.                                                             Main.PlaySound(13, i * 16, j * 16, 1);
  8966.                                                             if (Main.tile[i, j].frameX == 18)
  8967.                                                             {
  8968.                                                                 num3 = 28;
  8969.                                                             }
  8970.                                                             else
  8971.                                                             {
  8972.                                                                 if (Main.tile[i, j].frameX == 36)
  8973.                                                                 {
  8974.                                                                     num3 = 110;
  8975.                                                                 }
  8976.                                                                 else
  8977.                                                                 {
  8978.                                                                     num3 = 31;
  8979.                                                                 }
  8980.                                                             }
  8981.                                                         }
  8982.                                                         else
  8983.                                                         {
  8984.                                                             if (Main.tile[i, j].type == 19)
  8985.                                                             {
  8986.                                                                 num3 = 94;
  8987.                                                             }
  8988.                                                             else
  8989.                                                             {
  8990.                                                                 if (Main.tile[i, j].type == 22)
  8991.                                                                 {
  8992.                                                                     num3 = 56;
  8993.                                                                 }
  8994.                                                                 else
  8995.                                                                 {
  8996.                                                                     if (Main.tile[i, j].type == 23)
  8997.                                                                     {
  8998.                                                                         num3 = 2;
  8999.                                                                     }
  9000.                                                                     else
  9001.                                                                     {
  9002.                                                                         if (Main.tile[i, j].type == 25)
  9003.                                                                         {
  9004.                                                                             num3 = 61;
  9005.                                                                         }
  9006.                                                                         else
  9007.                                                                         {
  9008.                                                                             if (Main.tile[i, j].type == 30)
  9009.                                                                             {
  9010.                                                                                 num3 = 9;
  9011.                                                                             }
  9012.                                                                             else
  9013.                                                                             {
  9014.                                                                                 if (Main.tile[i, j].type == 33)
  9015.                                                                                 {
  9016.                                                                                     num3 = 105;
  9017.                                                                                 }
  9018.                                                                                 else
  9019.                                                                                 {
  9020.                                                                                     if (Main.tile[i, j].type == 37)
  9021.                                                                                     {
  9022.                                                                                         num3 = 116;
  9023.                                                                                     }
  9024.                                                                                     else
  9025.                                                                                     {
  9026.                                                                                         if (Main.tile[i, j].type == 38)
  9027.                                                                                         {
  9028.                                                                                             num3 = 129;
  9029.                                                                                         }
  9030.                                                                                         else
  9031.                                                                                         {
  9032.                                                                                             if (Main.tile[i, j].type == 39)
  9033.                                                                                             {
  9034.                                                                                                 num3 = 131;
  9035.                                                                                             }
  9036.                                                                                             else
  9037.                                                                                             {
  9038.                                                                                                 if (Main.tile[i, j].type == 40)
  9039.                                                                                                 {
  9040.                                                                                                     num3 = 133;
  9041.                                                                                                 }
  9042.                                                                                                 else
  9043.                                                                                                 {
  9044.                                                                                                     if (Main.tile[i, j].type == 41)
  9045.                                                                                                     {
  9046.                                                                                                         num3 = 134;
  9047.                                                                                                     }
  9048.                                                                                                     else
  9049.                                                                                                     {
  9050.                                                                                                         if (Main.tile[i, j].type == 43)
  9051.                                                                                                         {
  9052.                                                                                                             num3 = 137;
  9053.                                                                                                         }
  9054.                                                                                                         else
  9055.                                                                                                         {
  9056.                                                                                                             if (Main.tile[i, j].type == 44)
  9057.                                                                                                             {
  9058.                                                                                                                 num3 = 139;
  9059.                                                                                                             }
  9060.                                                                                                             else
  9061.                                                                                                             {
  9062.                                                                                                                 if (Main.tile[i, j].type == 45)
  9063.                                                                                                                 {
  9064.                                                                                                                     num3 = 141;
  9065.                                                                                                                 }
  9066.                                                                                                                 else
  9067.                                                                                                                 {
  9068.                                                                                                                     if (Main.tile[i, j].type == 46)
  9069.                                                                                                                     {
  9070.                                                                                                                         num3 = 143;
  9071.                                                                                                                     }
  9072.                                                                                                                     else
  9073.                                                                                                                     {
  9074.                                                                                                                         if (Main.tile[i, j].type == 47)
  9075.                                                                                                                         {
  9076.                                                                                                                             num3 = 145;
  9077.                                                                                                                         }
  9078.                                                                                                                         else
  9079.                                                                                                                         {
  9080.                                                                                                                             if (Main.tile[i, j].type == 48)
  9081.                                                                                                                             {
  9082.                                                                                                                                 num3 = 147;
  9083.                                                                                                                             }
  9084.                                                                                                                             else
  9085.                                                                                                                             {
  9086.                                                                                                                                 if (Main.tile[i, j].type == 49)
  9087.                                                                                                                                 {
  9088.                                                                                                                                     num3 = 148;
  9089.                                                                                                                                 }
  9090.                                                                                                                                 else
  9091.                                                                                                                                 {
  9092.                                                                                                                                     if (Main.tile[i, j].type == 51)
  9093.                                                                                                                                     {
  9094.                                                                                                                                         num3 = 150;
  9095.                                                                                                                                     }
  9096.                                                                                                                                     else
  9097.                                                                                                                                     {
  9098.                                                                                                                                         if (Main.tile[i, j].type == 53)
  9099.                                                                                                                                         {
  9100.                                                                                                                                             num3 = 169;
  9101.                                                                                                                                         }
  9102.                                                                                                                                         else
  9103.                                                                                                                                         {
  9104.                                                                                                                                             if (Main.tile[i, j].type == 54)
  9105.                                                                                                                                             {
  9106.                                                                                                                                                 Main.PlaySound(13, i * 16, j * 16, 1);
  9107.                                                                                                                                             }
  9108.                                                                                                                                             else
  9109.                                                                                                                                             {
  9110.                                                                                                                                                 if (Main.tile[i, j].type == 56)
  9111.                                                                                                                                                 {
  9112.                                                                                                                                                     num3 = 173;
  9113.                                                                                                                                                 }
  9114.                                                                                                                                                 else
  9115.                                                                                                                                                 {
  9116.                                                                                                                                                     if (Main.tile[i, j].type == 57)
  9117.                                                                                                                                                     {
  9118.                                                                                                                                                         num3 = 172;
  9119.                                                                                                                                                     }
  9120.                                                                                                                                                     else
  9121.                                                                                                                                                     {
  9122.                                                                                                                                                         if (Main.tile[i, j].type == 58)
  9123.                                                                                                                                                         {
  9124.                                                                                                                                                             num3 = 174;
  9125.                                                                                                                                                         }
  9126.                                                                                                                                                         else
  9127.                                                                                                                                                         {
  9128.                                                                                                                                                             if (Main.tile[i, j].type == 60)
  9129.                                                                                                                                                             {
  9130.                                                                                                                                                                 num3 = 176;
  9131.                                                                                                                                                             }
  9132.                                                                                                                                                             else
  9133.                                                                                                                                                             {
  9134.                                                                                                                                                                 if (Main.tile[i, j].type == 70)
  9135.                                                                                                                                                                 {
  9136.                                                                                                                                                                     num3 = 176;
  9137.                                                                                                                                                                 }
  9138.                                                                                                                                                                 else
  9139.                                                                                                                                                                 {
  9140.                                                                                                                                                                     if (Main.tile[i, j].type == 75)
  9141.                                                                                                                                                                     {
  9142.                                                                                                                                                                         num3 = 192;
  9143.                                                                                                                                                                     }
  9144.                                                                                                                                                                     else
  9145.                                                                                                                                                                     {
  9146.                                                                                                                                                                         if (Main.tile[i, j].type == 76)
  9147.                                                                                                                                                                         {
  9148.                                                                                                                                                                             num3 = 214;
  9149.                                                                                                                                                                         }
  9150.                                                                                                                                                                         else
  9151.                                                                                                                                                                         {
  9152.                                                                                                                                                                             if (Main.tile[i, j].type == 78)
  9153.                                                                                                                                                                             {
  9154.                                                                                                                                                                                 num3 = 222;
  9155.                                                                                                                                                                             }
  9156.                                                                                                                                                                             else
  9157.                                                                                                                                                                             {
  9158.                                                                                                                                                                                 if (Main.tile[i, j].type == 61 || Main.tile[i, j].type == 74)
  9159.                                                                                                                                                                                 {
  9160.                                                                                                                                                                                     if (Main.tile[i, j].frameX == 162)
  9161.                                                                                                                                                                                     {
  9162.                                                                                                                                                                                         num3 = 223;
  9163.                                                                                                                                                                                     }
  9164.                                                                                                                                                                                     else
  9165.                                                                                                                                                                                     {
  9166.                                                                                                                                                                                         if (Main.tile[i, j].frameX >= 108 && Main.tile[i, j].frameX <= 126 && WorldGen.genRand.Next(2) == 0)
  9167.                                                                                                                                                                                         {
  9168.                                                                                                                                                                                             num3 = 208;
  9169.                                                                                                                                                                                         }
  9170.                                                                                                                                                                                     }
  9171.                                                                                                                                                                                 }
  9172.                                                                                                                                                                                 else
  9173.                                                                                                                                                                                 {
  9174.                                                                                                                                                                                     if (Main.tile[i, j].type == 59 || Main.tile[i, j].type == 60)
  9175.                                                                                                                                                                                     {
  9176.                                                                                                                                                                                         num3 = 176;
  9177.                                                                                                                                                                                     }
  9178.                                                                                                                                                                                     else
  9179.                                                                                                                                                                                     {
  9180.                                                                                                                                                                                         if (Main.tile[i, j].type == 71 || Main.tile[i, j].type == 72)
  9181.                                                                                                                                                                                         {
  9182.                                                                                                                                                                                             if (WorldGen.genRand.Next(50) == 0)
  9183.                                                                                                                                                                                             {
  9184.                                                                                                                                                                                                 num3 = 194;
  9185.                                                                                                                                                                                             }
  9186.                                                                                                                                                                                             else
  9187.                                                                                                                                                                                             {
  9188.                                                                                                                                                                                                 num3 = 183;
  9189.                                                                                                                                                                                             }
  9190.                                                                                                                                                                                         }
  9191.                                                                                                                                                                                         else
  9192.                                                                                                                                                                                         {
  9193.                                                                                                                                                                                             if (Main.tile[i, j].type == 74 && WorldGen.genRand.Next(100) == 0)
  9194.                                                                                                                                                                                             {
  9195.                                                                                                                                                                                                 num3 = 195;
  9196.                                                                                                                                                                                             }
  9197.                                                                                                                                                                                             else
  9198.                                                                                                                                                                                             {
  9199.                                                                                                                                                                                                 if (Main.tile[i, j].type >= 63 && Main.tile[i, j].type <= 68)
  9200.                                                                                                                                                                                                 {
  9201.                                                                                                                                                                                                     num3 = (int)(Main.tile[i, j].type - 63 + 177);
  9202.                                                                                                                                                                                                 }
  9203.                                                                                                                                                                                                 else
  9204.                                                                                                                                                                                                 {
  9205.                                                                                                                                                                                                     if (Main.tile[i, j].type == 50)
  9206.                                                                                                                                                                                                     {
  9207.                                                                                                                                                                                                         if (Main.tile[i, j].frameX == 90)
  9208.                                                                                                                                                                                                         {
  9209.                                                                                                                                                                                                             num3 = 165;
  9210.                                                                                                                                                                                                         }
  9211.                                                                                                                                                                                                         else
  9212.                                                                                                                                                                                                         {
  9213.                                                                                                                                                                                                             num3 = 149;
  9214.                                                                                                                                                                                                         }
  9215.                                                                                                                                                                                                     }
  9216.                                                                                                                                                                                                 }
  9217.                                                                                                                                                                                             }
  9218.                                                                                                                                                                                         }
  9219.                                                                                                                                                                                     }
  9220.                                                                                                                                                                                 }
  9221.                                                                                                                                                                             }
  9222.                                                                                                                                                                         }
  9223.                                                                                                                                                                     }
  9224.                                                                                                                                                                 }
  9225.                                                                                                                                                             }
  9226.                                                                                                                                                         }
  9227.                                                                                                                                                     }
  9228.                                                                                                                                                 }
  9229.                                                                                                                                             }
  9230.                                                                                                                                         }
  9231.                                                                                                                                     }
  9232.                                                                                                                                 }
  9233.                                                                                                                             }
  9234.                                                                                                                         }
  9235.                                                                                                                     }
  9236.                                                                                                                 }
  9237.                                                                                                             }
  9238.                                                                                                         }
  9239.                                                                                                     }
  9240.                                                                                                 }
  9241.                                                                                             }
  9242.                                                                                         }
  9243.                                                                                     }
  9244.                                                                                 }
  9245.                                                                             }
  9246.                                                                         }
  9247.                                                                     }
  9248.                                                                 }
  9249.                                                             }
  9250.                                                         }
  9251.                                                     }
  9252.                                                 }
  9253.                                             }
  9254.                                         }
  9255.                                     }
  9256.                                 }
  9257.                             }
  9258.                         }
  9259.                         if (num3 > 0)
  9260.                         {
  9261.                             Item.NewItem(i * 16, j * 16, 16, 16, num3, 1, false);
  9262.                         }
  9263.                     }
  9264.                     Main.tile[i, j].active = false;
  9265.                     if (Main.tileSolid[(int)Main.tile[i, j].type])
  9266.                     {
  9267.                         Main.tile[i, j].lighted = false;
  9268.                     }
  9269.                     Main.tile[i, j].frameX = -1;
  9270.                     Main.tile[i, j].frameY = -1;
  9271.                     Main.tile[i, j].frameNumber = 0;
  9272.                     Main.tile[i, j].type = 0;
  9273.                     WorldGen.SquareTileFrame(i, j, true);
  9274.                 }
  9275.             }
  9276.         }
  9277.         public static bool PlayerLOS(int x, int y)
  9278.         {
  9279.             Rectangle rectangle = new Rectangle(x * 16, y * 16, 16, 16);
  9280.             for (int i = 0; i < 8; i++)
  9281.             {
  9282.                 if (Main.player[i].active)
  9283.                 {
  9284.                     Rectangle value = new Rectangle((int)((double)Main.player[i].position.X + (double)Main.player[i].width * 0.5 - (double)Main.screenWidth * 0.6), (int)((double)Main.player[i].position.Y + (double)Main.player[i].height * 0.5 - (double)Main.screenHeight * 0.6), (int)((double)Main.screenWidth * 1.2), (int)((double)Main.screenHeight * 1.2));
  9285.                     if (rectangle.Intersects(value))
  9286.                     {
  9287.                         return true;
  9288.                     }
  9289.                 }
  9290.             }
  9291.             return false;
  9292.         }
  9293.         public static void UpdateWorld()
  9294.         {
  9295.             Liquid.skipCount++;
  9296.             if (Liquid.skipCount > 1)
  9297.             {
  9298.                 Liquid.UpdateLiquid();
  9299.                 Liquid.skipCount = 0;
  9300.             }
  9301.             float num = 4E-05f;
  9302.             float num2 = 2E-05f;
  9303.             bool flag = false;
  9304.             WorldGen.spawnDelay++;
  9305.             if (Main.invasionType > 0)
  9306.             {
  9307.                 WorldGen.spawnDelay = 0;
  9308.             }
  9309.             if (WorldGen.spawnDelay >= 20)
  9310.             {
  9311.                 flag = true;
  9312.                 WorldGen.spawnDelay = 0;
  9313.                 for (int i = 0; i < 1000; i++)
  9314.                 {
  9315.                     if (Main.npc[i].active && Main.npc[i].homeless && Main.npc[i].townNPC)
  9316.                     {
  9317.                         WorldGen.spawnNPC = Main.npc[i].type;
  9318.                         break;
  9319.                     }
  9320.                 }
  9321.             }
  9322.             int num3 = 0;
  9323.             while ((float)num3 < (float)(Main.maxTilesX * Main.maxTilesY) * num)
  9324.             {
  9325.                 int num4 = WorldGen.genRand.Next(10, Main.maxTilesX - 10);
  9326.                 int num5 = WorldGen.genRand.Next(10, (int)Main.worldSurface - 1);
  9327.                 int num6 = num4 - 1;
  9328.                 int num7 = num4 + 2;
  9329.                 int num8 = num5 - 1;
  9330.                 int num9 = num5 + 2;
  9331.                 if (num6 < 10)
  9332.                 {
  9333.                     num6 = 10;
  9334.                 }
  9335.                 if (num7 > Main.maxTilesX - 10)
  9336.                 {
  9337.                     num7 = Main.maxTilesX - 10;
  9338.                 }
  9339.                 if (num8 < 10)
  9340.                 {
  9341.                     num8 = 10;
  9342.                 }
  9343.                 if (num9 > Main.maxTilesY - 10)
  9344.                 {
  9345.                     num9 = Main.maxTilesY - 10;
  9346.                 }
  9347.                 if (Main.tile[num4, num5] != null)
  9348.                 {
  9349.                     if (Main.tile[num4, num5].liquid > 32)
  9350.                     {
  9351.                         if (Main.tile[num4, num5].active && (Main.tile[num4, num5].type == 3 || Main.tile[num4, num5].type == 20 || Main.tile[num4, num5].type == 24 || Main.tile[num4, num5].type == 27 || Main.tile[num4, num5].type == 73))
  9352.                         {
  9353.                             WorldGen.KillTile(num4, num5, false, false, false);
  9354.                             if (Main.netMode == 2)
  9355.                             {
  9356.                                 NetMessage.SendData(17, -1, -1, "", 0, (float)num4, (float)num5, 0f);
  9357.                             }
  9358.                         }
  9359.                     }
  9360.                     else
  9361.                     {
  9362.                         if (Main.tile[num4, num5].active)
  9363.                         {
  9364.                             if (Main.tile[num4, num5].type == 78)
  9365.                             {
  9366.                                 if (!Main.tile[num4, num8].active)
  9367.                                 {
  9368.                                     WorldGen.PlaceTile(num4, num8, 3, true, false, -1);
  9369.                                     if (Main.netMode == 2 && Main.tile[num4, num8].active)
  9370.                                     {
  9371.                                         NetMessage.SendTileSquare(-1, num4, num8, 1);
  9372.                                     }
  9373.                                 }
  9374.                             }
  9375.                             else
  9376.                             {
  9377.                                 if (Main.tile[num4, num5].type == 2 || Main.tile[num4, num5].type == 23 || Main.tile[num4, num5].type == 32)
  9378.                                 {
  9379.                                     int num10 = (int)Main.tile[num4, num5].type;
  9380.                                     if (!Main.tile[num4, num8].active && WorldGen.genRand.Next(10) == 0 && num10 == 2)
  9381.                                     {
  9382.                                         WorldGen.PlaceTile(num4, num8, 3, true, false, -1);
  9383.                                         if (Main.netMode == 2 && Main.tile[num4, num8].active)
  9384.                                         {
  9385.                                             NetMessage.SendTileSquare(-1, num4, num8, 1);
  9386.                                         }
  9387.                                     }
  9388.                                     if (!Main.tile[num4, num8].active && WorldGen.genRand.Next(10) == 0 && num10 == 23)
  9389.                                     {
  9390.                                         WorldGen.PlaceTile(num4, num8, 24, true, false, -1);
  9391.                                         if (Main.netMode == 2 && Main.tile[num4, num8].active)
  9392.                                         {
  9393.                                             NetMessage.SendTileSquare(-1, num4, num8, 1);
  9394.                                         }
  9395.                                     }
  9396.                                     bool flag2 = false;
  9397.                                     for (int j = num6; j < num7; j++)
  9398.                                     {
  9399.                                         for (int k = num8; k < num9; k++)
  9400.                                         {
  9401.                                             if ((num4 != j || num5 != k) && Main.tile[j, k].active)
  9402.                                             {
  9403.                                                 if (num10 == 32)
  9404.                                                 {
  9405.                                                     num10 = 23;
  9406.                                                 }
  9407.                                                 if (Main.tile[j, k].type == 0 || (num10 == 23 && Main.tile[j, k].type == 2))
  9408.                                                 {
  9409.                                                     WorldGen.SpreadGrass(j, k, 0, num10, false);
  9410.                                                     if (num10 == 23)
  9411.                                                     {
  9412.                                                         WorldGen.SpreadGrass(j, k, 2, num10, false);
  9413.                                                     }
  9414.                                                     if ((int)Main.tile[j, k].type == num10)
  9415.                                                     {
  9416.                                                         WorldGen.SquareTileFrame(j, k, true);
  9417.                                                         flag2 = true;
  9418.                                                     }
  9419.                                                 }
  9420.                                             }
  9421.                                         }
  9422.                                     }
  9423.                                     if (Main.netMode == 2 && flag2)
  9424.                                     {
  9425.                                         NetMessage.SendTileSquare(-1, num4, num5, 3);
  9426.                                     }
  9427.                                 }
  9428.                                 else
  9429.                                 {
  9430.                                     if (Main.tile[num4, num5].type == 20 && !WorldGen.PlayerLOS(num4, num5) && WorldGen.genRand.Next(5) == 0)
  9431.                                     {
  9432.                                         WorldGen.GrowTree(num4, num5);
  9433.                                     }
  9434.                                 }
  9435.                             }
  9436.                             if (Main.tile[num4, num5].type == 3 && WorldGen.genRand.Next(10) == 0 && Main.tile[num4, num5].frameX < 144)
  9437.                             {
  9438.                                 Main.tile[num4, num5].type = 73;
  9439.                                 if (Main.netMode == 2)
  9440.                                 {
  9441.                                     NetMessage.SendTileSquare(-1, num4, num5, 3);
  9442.                                 }
  9443.                             }
  9444.                             if (Main.tile[num4, num5].type == 32 && WorldGen.genRand.Next(3) == 0)
  9445.                             {
  9446.                                 int num11 = num4;
  9447.                                 int num12 = num5;
  9448.                                 int num13 = 0;
  9449.                                 if (Main.tile[num11 + 1, num12].active && Main.tile[num11 + 1, num12].type == 32)
  9450.                                 {
  9451.                                     num13++;
  9452.                                 }
  9453.                                 if (Main.tile[num11 - 1, num12].active && Main.tile[num11 - 1, num12].type == 32)
  9454.                                 {
  9455.                                     num13++;
  9456.                                 }
  9457.                                 if (Main.tile[num11, num12 + 1].active && Main.tile[num11, num12 + 1].type == 32)
  9458.                                 {
  9459.                                     num13++;
  9460.                                 }
  9461.                                 if (Main.tile[num11, num12 - 1].active && Main.tile[num11, num12 - 1].type == 32)
  9462.                                 {
  9463.                                     num13++;
  9464.                                 }
  9465.                                 if (num13 < 3 || Main.tile[num4, num5].type == 23)
  9466.                                 {
  9467.                                     int num14 = WorldGen.genRand.Next(4);
  9468.                                     if (num14 == 0)
  9469.                                     {
  9470.                                         num12--;
  9471.                                     }
  9472.                                     else
  9473.                                     {
  9474.                                         if (num14 == 1)
  9475.                                         {
  9476.                                             num12++;
  9477.                                         }
  9478.                                         else
  9479.                                         {
  9480.                                             if (num14 == 2)
  9481.                                             {
  9482.                                                 num11--;
  9483.                                             }
  9484.                                             else
  9485.                                             {
  9486.                                                 if (num14 == 3)
  9487.                                                 {
  9488.                                                     num11++;
  9489.                                                 }
  9490.                                             }
  9491.                                         }
  9492.                                     }
  9493.                                     if (!Main.tile[num11, num12].active)
  9494.                                     {
  9495.                                         num13 = 0;
  9496.                                         if (Main.tile[num11 + 1, num12].active && Main.tile[num11 + 1, num12].type == 32)
  9497.                                         {
  9498.                                             num13++;
  9499.                                         }
  9500.                                         if (Main.tile[num11 - 1, num12].active && Main.tile[num11 - 1, num12].type == 32)
  9501.                                         {
  9502.                                             num13++;
  9503.                                         }
  9504.                                         if (Main.tile[num11, num12 + 1].active && Main.tile[num11, num12 + 1].type == 32)
  9505.                                         {
  9506.                                             num13++;
  9507.                                         }
  9508.                                         if (Main.tile[num11, num12 - 1].active && Main.tile[num11, num12 - 1].type == 32)
  9509.                                         {
  9510.                                             num13++;
  9511.                                         }
  9512.                                         if (num13 < 2)
  9513.                                         {
  9514.                                             int num15 = 7;
  9515.                                             int num16 = num11 - num15;
  9516.                                             int num17 = num11 + num15;
  9517.                                             int num18 = num12 - num15;
  9518.                                             int num19 = num12 + num15;
  9519.                                             bool flag3 = false;
  9520.                                             for (int l = num16; l < num17; l++)
  9521.                                             {
  9522.                                                 for (int m = num18; m < num19; m++)
  9523.                                                 {
  9524.                                                     if (Math.Abs(l - num11) * 2 + Math.Abs(m - num12) < 9 && Main.tile[l, m].active && Main.tile[l, m].type == 23 && Main.tile[l, m - 1].active && Main.tile[l, m - 1].type == 32 && Main.tile[l, m - 1].liquid == 0)
  9525.                                                     {
  9526.                                                         flag3 = true;
  9527.                                                         break;
  9528.                                                     }
  9529.                                                 }
  9530.                                             }
  9531.                                             if (flag3)
  9532.                                             {
  9533.                                                 Main.tile[num11, num12].type = 32;
  9534.                                                 Main.tile[num11, num12].active = true;
  9535.                                                 WorldGen.SquareTileFrame(num11, num12, true);
  9536.                                                 if (Main.netMode == 2)
  9537.                                                 {
  9538.                                                     NetMessage.SendTileSquare(-1, num11, num12, 3);
  9539.                                                 }
  9540.                                             }
  9541.                                         }
  9542.                                     }
  9543.                                 }
  9544.                             }
  9545.                             if ((Main.tile[num4, num5].type == 2 || Main.tile[num4, num5].type == 52) && WorldGen.genRand.Next(5) == 0 && !Main.tile[num4, num5 + 1].active && !Main.tile[num4, num5 + 1].lava)
  9546.                             {
  9547.                                 bool flag4 = false;
  9548.                                 for (int n = num5; n > num5 - 10; n--)
  9549.                                 {
  9550.                                     if (Main.tile[num4, n].active && Main.tile[num4, n].type == 2)
  9551.                                     {
  9552.                                         flag4 = true;
  9553.                                         break;
  9554.                                     }
  9555.                                 }
  9556.                                 if (flag4)
  9557.                                 {
  9558.                                     int num20 = num4;
  9559.                                     int num21 = num5 + 1;
  9560.                                     Main.tile[num20, num21].type = 52;
  9561.                                     Main.tile[num20, num21].active = true;
  9562.                                     WorldGen.SquareTileFrame(num20, num21, true);
  9563.                                     if (Main.netMode == 2)
  9564.                                     {
  9565.                                         NetMessage.SendTileSquare(-1, num20, num21, 3);
  9566.                                     }
  9567.                                 }
  9568.                             }
  9569.                         }
  9570.                         else
  9571.                         {
  9572.                             if (flag && WorldGen.spawnNPC > 0)
  9573.                             {
  9574.                                 WorldGen.SpawnNPC(num4, num5);
  9575.                             }
  9576.                         }
  9577.                     }
  9578.                 }
  9579.                 num3++;
  9580.             }
  9581.             int num22 = 0;
  9582.             while ((float)num22 < (float)(Main.maxTilesX * Main.maxTilesY) * num2)
  9583.             {
  9584.                 int num23 = WorldGen.genRand.Next(10, Main.maxTilesX - 10);
  9585.                 int num24 = WorldGen.genRand.Next((int)Main.worldSurface + 2, Main.maxTilesY - 200);
  9586.                 int num25 = num23 - 1;
  9587.                 int num26 = num23 + 2;
  9588.                 int num27 = num24 - 1;
  9589.                 int num28 = num24 + 2;
  9590.                 if (num25 < 10)
  9591.                 {
  9592.                     num25 = 10;
  9593.                 }
  9594.                 if (num26 > Main.maxTilesX - 10)
  9595.                 {
  9596.                     num26 = Main.maxTilesX - 10;
  9597.                 }
  9598.                 if (num27 < 10)
  9599.                 {
  9600.                     num27 = 10;
  9601.                 }
  9602.                 if (num28 > Main.maxTilesY - 10)
  9603.                 {
  9604.                     num28 = Main.maxTilesY - 10;
  9605.                 }
  9606.                 if (Main.tile[num23, num24] != null)
  9607.                 {
  9608.                     if (Main.tile[num23, num24].liquid > 32)
  9609.                     {
  9610.                         if (Main.tile[num23, num24].active && (Main.tile[num23, num24].type == 61 || Main.tile[num23, num24].type == 74))
  9611.                         {
  9612.                             WorldGen.KillTile(num23, num24, false, false, false);
  9613.                             if (Main.netMode == 2)
  9614.                             {
  9615.                                 NetMessage.SendData(17, -1, -1, "", 0, (float)num23, (float)num24, 0f);
  9616.                             }
  9617.                         }
  9618.                     }
  9619.                     else
  9620.                     {
  9621.                         if (Main.tile[num23, num24].active)
  9622.                         {
  9623.                             if (Main.tile[num23, num24].type == 60)
  9624.                             {
  9625.                                 int type = (int)Main.tile[num23, num24].type;
  9626.                                 if (!Main.tile[num23, num27].active && WorldGen.genRand.Next(10) == 0)
  9627.                                 {
  9628.                                     WorldGen.PlaceTile(num23, num27, 61, true, false, -1);
  9629.                                     if (Main.netMode == 2 && Main.tile[num23, num27].active)
  9630.                                     {
  9631.                                         NetMessage.SendTileSquare(-1, num23, num27, 1);
  9632.                                     }
  9633.                                 }
  9634.                                 bool flag5 = false;
  9635.                                 for (int num29 = num25; num29 < num26; num29++)
  9636.                                 {
  9637.                                     for (int num30 = num27; num30 < num28; num30++)
  9638.                                     {
  9639.                                         if ((num23 != num29 || num24 != num30) && Main.tile[num29, num30].active && Main.tile[num29, num30].type == 59)
  9640.                                         {
  9641.                                             WorldGen.SpreadGrass(num29, num30, 59, type, false);
  9642.                                             if ((int)Main.tile[num29, num30].type == type)
  9643.                                             {
  9644.                                                 WorldGen.SquareTileFrame(num29, num30, true);
  9645.                                                 flag5 = true;
  9646.                                             }
  9647.                                         }
  9648.                                     }
  9649.                                 }
  9650.                                 if (Main.netMode == 2 && flag5)
  9651.                                 {
  9652.                                     NetMessage.SendTileSquare(-1, num23, num24, 3);
  9653.                                 }
  9654.                             }
  9655.                             if (Main.tile[num23, num24].type == 61 && WorldGen.genRand.Next(3) == 0 && Main.tile[num23, num24].frameX < 144)
  9656.                             {
  9657.                                 Main.tile[num23, num24].type = 74;
  9658.                                 if (Main.netMode == 2)
  9659.                                 {
  9660.                                     NetMessage.SendTileSquare(-1, num23, num24, 3);
  9661.                                 }
  9662.                             }
  9663.                             if ((Main.tile[num23, num24].type == 60 || Main.tile[num23, num24].type == 62) && WorldGen.genRand.Next(5) == 0 && !Main.tile[num23, num24 + 1].active && !Main.tile[num23, num24 + 1].lava)
  9664.                             {
  9665.                                 bool flag6 = false;
  9666.                                 for (int num31 = num24; num31 > num24 - 10; num31--)
  9667.                                 {
  9668.                                     if (Main.tile[num23, num31].active && Main.tile[num23, num31].type == 60)
  9669.                                     {
  9670.                                         flag6 = true;
  9671.                                         break;
  9672.                                     }
  9673.                                 }
  9674.                                 if (flag6)
  9675.                                 {
  9676.                                     int num32 = num23;
  9677.                                     int num33 = num24 + 1;
  9678.                                     Main.tile[num32, num33].type = 62;
  9679.                                     Main.tile[num32, num33].active = true;
  9680.                                     WorldGen.SquareTileFrame(num32, num33, true);
  9681.                                     if (Main.netMode == 2)
  9682.                                     {
  9683.                                         NetMessage.SendTileSquare(-1, num32, num33, 3);
  9684.                                     }
  9685.                                 }
  9686.                             }
  9687.                             if (Main.tile[num23, num24].type == 69 && WorldGen.genRand.Next(3) == 0)
  9688.                             {
  9689.                                 int num34 = num23;
  9690.                                 int num35 = num24;
  9691.                                 int num36 = 0;
  9692.                                 if (Main.tile[num34 + 1, num35].active && Main.tile[num34 + 1, num35].type == 69)
  9693.                                 {
  9694.                                     num36++;
  9695.                                 }
  9696.                                 if (Main.tile[num34 - 1, num35].active && Main.tile[num34 - 1, num35].type == 69)
  9697.                                 {
  9698.                                     num36++;
  9699.                                 }
  9700.                                 if (Main.tile[num34, num35 + 1].active && Main.tile[num34, num35 + 1].type == 69)
  9701.                                 {
  9702.                                     num36++;
  9703.                                 }
  9704.                                 if (Main.tile[num34, num35 - 1].active && Main.tile[num34, num35 - 1].type == 69)
  9705.                                 {
  9706.                                     num36++;
  9707.                                 }
  9708.                                 if (num36 < 3 || Main.tile[num23, num24].type == 60)
  9709.                                 {
  9710.                                     int num37 = WorldGen.genRand.Next(4);
  9711.                                     if (num37 == 0)
  9712.                                     {
  9713.                                         num35--;
  9714.                                     }
  9715.                                     else
  9716.                                     {
  9717.                                         if (num37 == 1)
  9718.                                         {
  9719.                                             num35++;
  9720.                                         }
  9721.                                         else
  9722.                                         {
  9723.                                             if (num37 == 2)
  9724.                                             {
  9725.                                                 num34--;
  9726.                                             }
  9727.                                             else
  9728.                                             {
  9729.                                                 if (num37 == 3)
  9730.                                                 {
  9731.                                                     num34++;
  9732.                                                 }
  9733.                                             }
  9734.                                         }
  9735.                                     }
  9736.                                     if (!Main.tile[num34, num35].active)
  9737.                                     {
  9738.                                         num36 = 0;
  9739.                                         if (Main.tile[num34 + 1, num35].active && Main.tile[num34 + 1, num35].type == 69)
  9740.                                         {
  9741.                                             num36++;
  9742.                                         }
  9743.                                         if (Main.tile[num34 - 1, num35].active && Main.tile[num34 - 1, num35].type == 69)
  9744.                                         {
  9745.                                             num36++;
  9746.                                         }
  9747.                                         if (Main.tile[num34, num35 + 1].active && Main.tile[num34, num35 + 1].type == 69)
  9748.                                         {
  9749.                                             num36++;
  9750.                                         }
  9751.                                         if (Main.tile[num34, num35 - 1].active && Main.tile[num34, num35 - 1].type == 69)
  9752.                                         {
  9753.                                             num36++;
  9754.                                         }
  9755.                                         if (num36 < 2)
  9756.                                         {
  9757.                                             int num38 = 7;
  9758.                                             int num39 = num34 - num38;
  9759.                                             int num40 = num34 + num38;
  9760.                                             int num41 = num35 - num38;
  9761.                                             int num42 = num35 + num38;
  9762.                                             bool flag7 = false;
  9763.                                             for (int num43 = num39; num43 < num40; num43++)
  9764.                                             {
  9765.                                                 for (int num44 = num41; num44 < num42; num44++)
  9766.                                                 {
  9767.                                                     if (Math.Abs(num43 - num34) * 2 + Math.Abs(num44 - num35) < 9 && Main.tile[num43, num44].active && Main.tile[num43, num44].type == 60 && Main.tile[num43, num44 - 1].active && Main.tile[num43, num44 - 1].type == 69 && Main.tile[num43, num44 - 1].liquid == 0)
  9768.                                                     {
  9769.                                                         flag7 = true;
  9770.                                                         break;
  9771.                                                     }
  9772.                                                 }
  9773.                                             }
  9774.                                             if (flag7)
  9775.                                             {
  9776.                                                 Main.tile[num34, num35].type = 69;
  9777.                                                 Main.tile[num34, num35].active = true;
  9778.                                                 WorldGen.SquareTileFrame(num34, num35, true);
  9779.                                                 if (Main.netMode == 2)
  9780.                                                 {
  9781.                                                     NetMessage.SendTileSquare(-1, num34, num35, 3);
  9782.                                                 }
  9783.                                             }
  9784.                                         }
  9785.                                     }
  9786.                                 }
  9787.                             }
  9788.                             if (Main.tile[num23, num24].type == 70)
  9789.                             {
  9790.                                 int type2 = (int)Main.tile[num23, num24].type;
  9791.                                 if (!Main.tile[num23, num27].active && WorldGen.genRand.Next(10) == 0)
  9792.                                 {
  9793.                                     WorldGen.PlaceTile(num23, num27, 71, true, false, -1);
  9794.                                     if (Main.netMode == 2 && Main.tile[num23, num27].active)
  9795.                                     {
  9796.                                         NetMessage.SendTileSquare(-1, num23, num27, 1);
  9797.                                     }
  9798.                                 }
  9799.                                 bool flag8 = false;
  9800.                                 for (int num45 = num25; num45 < num26; num45++)
  9801.                                 {
  9802.                                     for (int num46 = num27; num46 < num28; num46++)
  9803.                                     {
  9804.                                         if ((num23 != num45 || num24 != num46) && Main.tile[num45, num46].active && Main.tile[num45, num46].type == 59)
  9805.                                         {
  9806.                                             WorldGen.SpreadGrass(num45, num46, 59, type2, false);
  9807.                                             if ((int)Main.tile[num45, num46].type == type2)
  9808.                                             {
  9809.                                                 WorldGen.SquareTileFrame(num45, num46, true);
  9810.                                                 flag8 = true;
  9811.                                             }
  9812.                                         }
  9813.                                     }
  9814.                                 }
  9815.                                 if (Main.netMode == 2 && flag8)
  9816.                                 {
  9817.                                     NetMessage.SendTileSquare(-1, num23, num24, 3);
  9818.                                 }
  9819.                             }
  9820.                         }
  9821.                         else
  9822.                         {
  9823.                             if (flag && WorldGen.spawnNPC > 0)
  9824.                             {
  9825.                                 WorldGen.SpawnNPC(num23, num24);
  9826.                             }
  9827.                         }
  9828.                     }
  9829.                 }
  9830.                 num22++;
  9831.             }
  9832.             if (!Main.dayTime)
  9833.             {
  9834.                 float num47 = (float)(Main.maxTilesX / 4200);
  9835.                 if ((float)Main.rand.Next(8000) < 10f * num47)
  9836.                 {
  9837.                     int num48 = 12;
  9838.                     int num49 = Main.rand.Next(Main.maxTilesX - 50) + 100;
  9839.                     num49 *= 16;
  9840.                     int num50 = Main.rand.Next((int)((double)Main.maxTilesY * 0.05));
  9841.                     num50 *= 16;
  9842.                     Vector2 vector = new Vector2((float)num49, (float)num50);
  9843.                     float num51 = (float)Main.rand.Next(-100, 101);
  9844.                     float num52 = (float)(Main.rand.Next(200) + 100);
  9845.                     float num53 = (float)Math.Sqrt((double)(num51 * num51 + num52 * num52));
  9846.                     num53 = (float)num48 / num53;
  9847.                     num51 *= num53;
  9848.                     num52 *= num53;
  9849.                     Projectile.NewProjectile(vector.X, vector.Y, num51, num52, 12, 1000, 10f, Main.myPlayer);
  9850.                 }
  9851.             }
  9852.         }
  9853.         public static void PlaceWall(int i, int j, int type, bool mute = false)
  9854.         {
  9855.             if (Main.tile[i, j] == null)
  9856.             {
  9857.                 Main.tile[i, j] = new Tile();
  9858.             }
  9859.             if ((int)Main.tile[i, j].wall != type)
  9860.             {
  9861.                 for (int k = i - 1; k < i + 2; k++)
  9862.                 {
  9863.                     for (int l = j - 1; l < j + 2; l++)
  9864.                     {
  9865.                         if (Main.tile[k, l] == null)
  9866.                         {
  9867.                             Main.tile[k, l] = new Tile();
  9868.                         }
  9869.                         if (Main.tile[k, l].wall > 0 && (int)Main.tile[k, l].wall != type)
  9870.                         {
  9871.                             return;
  9872.                         }
  9873.                     }
  9874.                 }
  9875.                 Main.tile[i, j].wall = (byte)type;
  9876.                 WorldGen.SquareWallFrame(i, j, true);
  9877.                 if (!mute)
  9878.                 {
  9879.                     Main.PlaySound(0, i * 16, j * 16, 1);
  9880.                 }
  9881.             }
  9882.         }
  9883.         public static void AddPlants()
  9884.         {
  9885.             for (int i = 0; i < Main.maxTilesX; i++)
  9886.             {
  9887.                 for (int j = 1; j < Main.maxTilesY; j++)
  9888.                 {
  9889.                     if (Main.tile[i, j].type == 2 && Main.tile[i, j].active)
  9890.                     {
  9891.                         if (!Main.tile[i, j - 1].active)
  9892.                         {
  9893.                             WorldGen.PlaceTile(i, j - 1, 3, true, false, -1);
  9894.                         }
  9895.                     }
  9896.                     else
  9897.                     {
  9898.                         if (Main.tile[i, j].type == 23 && Main.tile[i, j].active && !Main.tile[i, j - 1].active)
  9899.                         {
  9900.                             WorldGen.PlaceTile(i, j - 1, 24, true, false, -1);
  9901.                         }
  9902.                     }
  9903.                 }
  9904.             }
  9905.         }
  9906.         public static void SpreadGrass(int i, int j, int dirt = 0, int grass = 2, bool repeat = true)
  9907.         {
  9908.             if ((int)Main.tile[i, j].type != dirt || !Main.tile[i, j].active || ((double)j >= Main.worldSurface && dirt != 59))
  9909.             {
  9910.                 return;
  9911.             }
  9912.             int num = i - 1;
  9913.             int num2 = i + 2;
  9914.             int num3 = j - 1;
  9915.             int num4 = j + 2;
  9916.             if (num < 0)
  9917.             {
  9918.                 num = 0;
  9919.             }
  9920.             if (num2 > Main.maxTilesX)
  9921.             {
  9922.                 num2 = Main.maxTilesX;
  9923.             }
  9924.             if (num3 < 0)
  9925.             {
  9926.                 num3 = 0;
  9927.             }
  9928.             if (num4 > Main.maxTilesY)
  9929.             {
  9930.                 num4 = Main.maxTilesY;
  9931.             }
  9932.             bool flag = true;
  9933.             for (int k = num; k < num2; k++)
  9934.             {
  9935.                 for (int l = num3; l < num4; l++)
  9936.                 {
  9937.                     if (!Main.tile[k, l].active || !Main.tileSolid[(int)Main.tile[k, l].type])
  9938.                     {
  9939.                         flag = false;
  9940.                         break;
  9941.                     }
  9942.                 }
  9943.             }
  9944.             if (!flag)
  9945.             {
  9946.                 if (grass == 23 && Main.tile[i, j - 1].type == 27)
  9947.                 {
  9948.                     return;
  9949.                 }
  9950.                 Main.tile[i, j].type = (byte)grass;
  9951.                 for (int m = num; m < num2; m++)
  9952.                 {
  9953.                     for (int n = num3; n < num4; n++)
  9954.                     {
  9955.                         if (Main.tile[m, n].active && (int)Main.tile[m, n].type == dirt && repeat)
  9956.                         {
  9957.                             WorldGen.SpreadGrass(m, n, dirt, grass, true);
  9958.                         }
  9959.                     }
  9960.                 }
  9961.             }
  9962.         }
  9963.         public static void ChasmRunner(int i, int j, int steps, bool makeOrb = false)
  9964.         {
  9965.             bool flag = false;
  9966.             bool flag2 = false;
  9967.             if (!makeOrb)
  9968.             {
  9969.                 flag = true;
  9970.             }
  9971.             float num = (float)steps;
  9972.             Vector2 value;
  9973.             value.X = (float)i;
  9974.             value.Y = (float)j;
  9975.             Vector2 value2;
  9976.             value2.X = (float)WorldGen.genRand.Next(-10, 11) * 0.1f;
  9977.             value2.Y = (float)WorldGen.genRand.Next(11) * 0.2f + 0.5f;
  9978.             int num2 = 5;
  9979.             double num3 = (double)(WorldGen.genRand.Next(5) + 7);
  9980.             while (num3 > 0.0)
  9981.             {
  9982.                 if (num > 0f)
  9983.                 {
  9984.                     num3 += (double)WorldGen.genRand.Next(3);
  9985.                     num3 -= (double)WorldGen.genRand.Next(3);
  9986.                     if (num3 < 7.0)
  9987.                     {
  9988.                         num3 = 7.0;
  9989.                     }
  9990.                     if (num3 > 20.0)
  9991.                     {
  9992.                         num3 = 20.0;
  9993.                     }
  9994.                     if (num == 1f && num3 < 10.0)
  9995.                     {
  9996.                         num3 = 10.0;
  9997.                     }
  9998.                 }
  9999.                 else
  10000.                 {
  10001.                     num3 -= (double)WorldGen.genRand.Next(4);
  10002.                 }
  10003.                 if ((double)value.Y > Main.rockLayer && num > 0f)
  10004.                 {
  10005.                     num = 0f;
  10006.                 }
  10007.                 num -= 1f;
  10008.                 int num4;
  10009.                 int num5;
  10010.                 int num6;
  10011.                 int num7;
  10012.                 if (num > (float)num2)
  10013.                 {
  10014.                     num4 = (int)((double)value.X - num3 * 0.5);
  10015.                     num5 = (int)((double)value.X + num3 * 0.5);
  10016.                     num6 = (int)((double)value.Y - num3 * 0.5);
  10017.                     num7 = (int)((double)value.Y + num3 * 0.5);
  10018.                     if (num4 < 0)
  10019.                     {
  10020.                         num4 = 0;
  10021.                     }
  10022.                     if (num5 > Main.maxTilesX - 1)
  10023.                     {
  10024.                         num5 = Main.maxTilesX - 1;
  10025.                     }
  10026.                     if (num6 < 0)
  10027.                     {
  10028.                         num6 = 0;
  10029.                     }
  10030.                     if (num7 > Main.maxTilesY)
  10031.                     {
  10032.                         num7 = Main.maxTilesY;
  10033.                     }
  10034.                     for (int k = num4; k < num5; k++)
  10035.                     {
  10036.                         for (int l = num6; l < num7; l++)
  10037.                         {
  10038.                             if ((double)(Math.Abs((float)k - value.X) + Math.Abs((float)l - value.Y)) < num3 * 0.5 * (1.0 + (double)WorldGen.genRand.Next(-10, 11) * 0.015))
  10039.                             {
  10040.                                 Main.tile[k, l].active = false;
  10041.                             }
  10042.                         }
  10043.                     }
  10044.                 }
  10045.                 if (num <= 0f)
  10046.                 {
  10047.                     if (!flag)
  10048.                     {
  10049.                         flag = true;
  10050.                         WorldGen.AddShadowOrb((int)value.X, (int)value.Y);
  10051.                     }
  10052.                     else
  10053.                     {
  10054.                         if (!flag2)
  10055.                         {
  10056.                             flag2 = false;
  10057.                             bool flag3 = false;
  10058.                             int num8 = 0;
  10059.                             while (!flag3)
  10060.                             {
  10061.                                 int num9 = WorldGen.genRand.Next((int)value.X - 25, (int)value.X + 25);
  10062.                                 int num10 = WorldGen.genRand.Next((int)value.Y - 50, (int)value.Y);
  10063.                                 if (num9 < 5)
  10064.                                 {
  10065.                                     num9 = 5;
  10066.                                 }
  10067.                                 if (num9 > Main.maxTilesX - 5)
  10068.                                 {
  10069.                                     num9 = Main.maxTilesX - 5;
  10070.                                 }
  10071.                                 if (num10 < 5)
  10072.                                 {
  10073.                                     num10 = 5;
  10074.                                 }
  10075.                                 if (num10 > Main.maxTilesY - 5)
  10076.                                 {
  10077.                                     num10 = Main.maxTilesY - 5;
  10078.                                 }
  10079.                                 if ((double)num10 > Main.worldSurface)
  10080.                                 {
  10081.                                     WorldGen.Place3x2(num9, num10, 26);
  10082.                                     if (Main.tile[num9, num10].type == 26)
  10083.                                     {
  10084.                                         flag3 = true;
  10085.                                     }
  10086.                                     else
  10087.                                     {
  10088.                                         num8++;
  10089.                                         if (num8 >= 10000)
  10090.                                         {
  10091.                                             flag3 = true;
  10092.                                         }
  10093.                                     }
  10094.                                 }
  10095.                                 else
  10096.                                 {
  10097.                                     flag3 = true;
  10098.                                 }
  10099.                             }
  10100.                         }
  10101.                     }
  10102.                 }
  10103.                 value += value2;
  10104.                 value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.01f;
  10105.                 if ((double)value2.X > 0.3)
  10106.                 {
  10107.                     value2.X = 0.3f;
  10108.                 }
  10109.                 if ((double)value2.X < -0.3)
  10110.                 {
  10111.                     value2.X = -0.3f;
  10112.                 }
  10113.                 num4 = (int)((double)value.X - num3 * 1.1);
  10114.                 num5 = (int)((double)value.X + num3 * 1.1);
  10115.                 num6 = (int)((double)value.Y - num3 * 1.1);
  10116.                 num7 = (int)((double)value.Y + num3 * 1.1);
  10117.                 if (num4 < 1)
  10118.                 {
  10119.                     num4 = 1;
  10120.                 }
  10121.                 if (num5 > Main.maxTilesX - 1)
  10122.                 {
  10123.                     num5 = Main.maxTilesX - 1;
  10124.                 }
  10125.                 if (num6 < 0)
  10126.                 {
  10127.                     num6 = 0;
  10128.                 }
  10129.                 if (num7 > Main.maxTilesY)
  10130.                 {
  10131.                     num7 = Main.maxTilesY;
  10132.                 }
  10133.                 for (int m = num4; m < num5; m++)
  10134.                 {
  10135.                     for (int n = num6; n < num7; n++)
  10136.                     {
  10137.                         if ((double)(Math.Abs((float)m - value.X) + Math.Abs((float)n - value.Y)) < num3 * 1.1 * (1.0 + (double)WorldGen.genRand.Next(-10, 11) * 0.015))
  10138.                         {
  10139.                             if (Main.tile[m, n].type != 25 && n > j + WorldGen.genRand.Next(3, 20))
  10140.                             {
  10141.                                 Main.tile[m, n].active = true;
  10142.                             }
  10143.                             if (steps <= num2)
  10144.                             {
  10145.                                 Main.tile[m, n].active = true;
  10146.                             }
  10147.                             if (Main.tile[m, n].type != 31)
  10148.                             {
  10149.                                 Main.tile[m, n].type = 25;
  10150.                             }
  10151.                             if (Main.tile[m, n].wall == 2)
  10152.                             {
  10153.                                 Main.tile[m, n].wall = 0;
  10154.                             }
  10155.                         }
  10156.                     }
  10157.                 }
  10158.                 for (int num11 = num4; num11 < num5; num11++)
  10159.                 {
  10160.                     for (int num12 = num6; num12 < num7; num12++)
  10161.                     {
  10162.                         if ((double)(Math.Abs((float)num11 - value.X) + Math.Abs((float)num12 - value.Y)) < num3 * 1.1 * (1.0 + (double)WorldGen.genRand.Next(-10, 11) * 0.015))
  10163.                         {
  10164.                             if (Main.tile[num11, num12].type != 31)
  10165.                             {
  10166.                                 Main.tile[num11, num12].type = 25;
  10167.                             }
  10168.                             if (steps <= num2)
  10169.                             {
  10170.                                 Main.tile[num11, num12].active = true;
  10171.                             }
  10172.                             if (num12 > j + WorldGen.genRand.Next(3, 20))
  10173.                             {
  10174.                                 WorldGen.PlaceWall(num11, num12, 3, true);
  10175.                             }
  10176.                         }
  10177.                     }
  10178.                 }
  10179.             }
  10180.         }
  10181.         public static void TileRunner(int i, int j, double strength, int steps, int type, bool addTile = false, float speedX = 0f, float speedY = 0f, bool noYChange = false, bool overRide = true)
  10182.         {
  10183.             double num = strength;
  10184.             float num2 = (float)steps;
  10185.             Vector2 value;
  10186.             value.X = (float)i;
  10187.             value.Y = (float)j;
  10188.             Vector2 value2;
  10189.             value2.X = (float)WorldGen.genRand.Next(-10, 11) * 0.1f;
  10190.             value2.Y = (float)WorldGen.genRand.Next(-10, 11) * 0.1f;
  10191.             if (speedX != 0f || speedY != 0f)
  10192.             {
  10193.                 value2.X = speedX;
  10194.                 value2.Y = speedY;
  10195.             }
  10196.             while (num > 0.0 && num2 > 0f)
  10197.             {
  10198.                 num = strength * (double)(num2 / (float)steps);
  10199.                 num2 -= 1f;
  10200.                 int num3 = (int)((double)value.X - num * 0.5);
  10201.                 int num4 = (int)((double)value.X + num * 0.5);
  10202.                 int num5 = (int)((double)value.Y - num * 0.5);
  10203.                 int num6 = (int)((double)value.Y + num * 0.5);
  10204.                 if (num3 < 0)
  10205.                 {
  10206.                     num3 = 0;
  10207.                 }
  10208.                 if (num4 > Main.maxTilesX)
  10209.                 {
  10210.                     num4 = Main.maxTilesX;
  10211.                 }
  10212.                 if (num5 < 0)
  10213.                 {
  10214.                     num5 = 0;
  10215.                 }
  10216.                 if (num6 > Main.maxTilesY)
  10217.                 {
  10218.                     num6 = Main.maxTilesY;
  10219.                 }
  10220.                 for (int k = num3; k < num4; k++)
  10221.                 {
  10222.                     for (int l = num5; l < num6; l++)
  10223.                     {
  10224.                         if ((double)(Math.Abs((float)k - value.X) + Math.Abs((float)l - value.Y)) < strength * 0.5 * (1.0 + (double)WorldGen.genRand.Next(-10, 11) * 0.015))
  10225.                         {
  10226.                             if (type < 0)
  10227.                             {
  10228.                                 if (type == -2 && Main.tile[k, l].active && (l < WorldGen.waterLine || l > WorldGen.lavaLine))
  10229.                                 {
  10230.                                     Main.tile[k, l].liquid = 255;
  10231.                                     if (l > WorldGen.lavaLine)
  10232.                                     {
  10233.                                         Main.tile[k, l].lava = true;
  10234.                                     }
  10235.                                 }
  10236.                                 Main.tile[k, l].active = false;
  10237.                             }
  10238.                             else
  10239.                             {
  10240.                                 if ((overRide || !Main.tile[k, l].active) && (type != 40 || Main.tile[k, l].type != 53) && (!Main.tileStone[type] || Main.tile[k, l].type == 1) && Main.tile[k, l].type != 45)
  10241.                                 {
  10242.                                     Main.tile[k, l].type = (byte)type;
  10243.                                 }
  10244.                                 if (addTile)
  10245.                                 {
  10246.                                     Main.tile[k, l].active = true;
  10247.                                     Main.tile[k, l].liquid = 0;
  10248.                                     Main.tile[k, l].lava = false;
  10249.                                 }
  10250.                                 if (noYChange && (double)l < Main.worldSurface)
  10251.                                 {
  10252.                                     Main.tile[k, l].wall = 2;
  10253.                                 }
  10254.                                 if (type == 59 && l > WorldGen.waterLine && Main.tile[k, l].liquid > 0)
  10255.                                 {
  10256.                                     Main.tile[k, l].lava = false;
  10257.                                     Main.tile[k, l].liquid = 0;
  10258.                                 }
  10259.                             }
  10260.                         }
  10261.                     }
  10262.                 }
  10263.                 value += value2;
  10264.                 if (num > 50.0)
  10265.                 {
  10266.                     value += value2;
  10267.                     num2 -= 1f;
  10268.                     value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10269.                     value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10270.                     if (num > 100.0)
  10271.                     {
  10272.                         value += value2;
  10273.                         num2 -= 1f;
  10274.                         value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10275.                         value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10276.                         if (num > 150.0)
  10277.                         {
  10278.                             value += value2;
  10279.                             num2 -= 1f;
  10280.                             value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10281.                             value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10282.                             if (num > 200.0)
  10283.                             {
  10284.                                 value += value2;
  10285.                                 num2 -= 1f;
  10286.                                 value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10287.                                 value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10288.                                 if (num > 250.0)
  10289.                                 {
  10290.                                     value += value2;
  10291.                                     num2 -= 1f;
  10292.                                     value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10293.                                     value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10294.                                     if (num > 300.0)
  10295.                                     {
  10296.                                         value += value2;
  10297.                                         num2 -= 1f;
  10298.                                         value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10299.                                         value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10300.                                         if (num > 400.0)
  10301.                                         {
  10302.                                             value += value2;
  10303.                                             num2 -= 1f;
  10304.                                             value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10305.                                             value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10306.                                             if (num > 500.0)
  10307.                                             {
  10308.                                                 value += value2;
  10309.                                                 num2 -= 1f;
  10310.                                                 value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10311.                                                 value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10312.                                                 if (num > 600.0)
  10313.                                                 {
  10314.                                                     value += value2;
  10315.                                                     num2 -= 1f;
  10316.                                                     value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10317.                                                     value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10318.                                                     if (num > 700.0)
  10319.                                                     {
  10320.                                                         value += value2;
  10321.                                                         num2 -= 1f;
  10322.                                                         value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10323.                                                         value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10324.                                                         if (num > 800.0)
  10325.                                                         {
  10326.                                                             value += value2;
  10327.                                                             num2 -= 1f;
  10328.                                                             value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10329.                                                             value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10330.                                                             if (num > 900.0)
  10331.                                                             {
  10332.                                                                 value += value2;
  10333.                                                                 num2 -= 1f;
  10334.                                                                 value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10335.                                                                 value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10336.                                                             }
  10337.                                                         }
  10338.                                                     }
  10339.                                                 }
  10340.                                             }
  10341.                                         }
  10342.                                     }
  10343.                                 }
  10344.                             }
  10345.                         }
  10346.                     }
  10347.                 }
  10348.                 value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10349.                 if (value2.X > 1f)
  10350.                 {
  10351.                     value2.X = 1f;
  10352.                 }
  10353.                 if (value2.X < -1f)
  10354.                 {
  10355.                     value2.X = -1f;
  10356.                 }
  10357.                 if (!noYChange)
  10358.                 {
  10359.                     value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10360.                     if (value2.Y > 1f)
  10361.                     {
  10362.                         value2.Y = 1f;
  10363.                     }
  10364.                     if (value2.Y < -1f)
  10365.                     {
  10366.                         value2.Y = -1f;
  10367.                     }
  10368.                 }
  10369.                 else
  10370.                 {
  10371.                     if (num < 3.0)
  10372.                     {
  10373.                         if (value2.Y > 1f)
  10374.                         {
  10375.                             value2.Y = 1f;
  10376.                         }
  10377.                         if (value2.Y < -1f)
  10378.                         {
  10379.                             value2.Y = -1f;
  10380.                         }
  10381.                     }
  10382.                 }
  10383.                 if (type == 59)
  10384.                 {
  10385.                     if ((double)value2.Y > 0.5)
  10386.                     {
  10387.                         value2.Y = 0.5f;
  10388.                     }
  10389.                     if ((double)value2.Y < -0.5)
  10390.                     {
  10391.                         value2.Y = -0.5f;
  10392.                     }
  10393.                     if ((double)value.Y < Main.rockLayer + 100.0)
  10394.                     {
  10395.                         value2.Y = 1f;
  10396.                     }
  10397.                     if (value.Y > (float)(Main.maxTilesY - 300))
  10398.                     {
  10399.                         value2.Y = -1f;
  10400.                     }
  10401.                 }
  10402.             }
  10403.         }
  10404.         public static void FloatingIsland(int i, int j)
  10405.         {
  10406.             double num = (double)WorldGen.genRand.Next(80, 120);
  10407.             float num2 = (float)WorldGen.genRand.Next(20, 25);
  10408.             Vector2 value;
  10409.             value.X = (float)i;
  10410.             value.Y = (float)j;
  10411.             Vector2 value2;
  10412.             value2.X = (float)WorldGen.genRand.Next(-20, 21) * 0.2f;
  10413.             while (value2.X > -2f && value2.X < 2f)
  10414.             {
  10415.                 value2.X = (float)WorldGen.genRand.Next(-20, 21) * 0.2f;
  10416.             }
  10417.             value2.Y = (float)WorldGen.genRand.Next(-20, -10) * 0.02f;
  10418.             while (num > 0.0 && num2 > 0f)
  10419.             {
  10420.                 num -= (double)WorldGen.genRand.Next(4);
  10421.                 num2 -= 1f;
  10422.                 int num3 = (int)((double)value.X - num * 0.5);
  10423.                 int num4 = (int)((double)value.X + num * 0.5);
  10424.                 int num5 = (int)((double)value.Y - num * 0.5);
  10425.                 int num6 = (int)((double)value.Y + num * 0.5);
  10426.                 if (num3 < 0)
  10427.                 {
  10428.                     num3 = 0;
  10429.                 }
  10430.                 if (num4 > Main.maxTilesX)
  10431.                 {
  10432.                     num4 = Main.maxTilesX;
  10433.                 }
  10434.                 if (num5 < 0)
  10435.                 {
  10436.                     num5 = 0;
  10437.                 }
  10438.                 if (num6 > Main.maxTilesY)
  10439.                 {
  10440.                     num6 = Main.maxTilesY;
  10441.                 }
  10442.                 double num7 = num * (double)WorldGen.genRand.Next(80, 120) * 0.01;
  10443.                 float num8 = value.Y + 1f;
  10444.                 for (int k = num3; k < num4; k++)
  10445.                 {
  10446.                     if (WorldGen.genRand.Next(2) == 0)
  10447.                     {
  10448.                         num8 += (float)WorldGen.genRand.Next(-1, 2);
  10449.                     }
  10450.                     if (num8 < value.Y)
  10451.                     {
  10452.                         num8 = value.Y;
  10453.                     }
  10454.                     if (num8 > value.Y + 2f)
  10455.                     {
  10456.                         num8 = value.Y + 2f;
  10457.                     }
  10458.                     for (int l = num5; l < num6; l++)
  10459.                     {
  10460.                         if ((float)l > num8)
  10461.                         {
  10462.                             float num9 = Math.Abs((float)k - value.X);
  10463.                             float num10 = Math.Abs((float)l - value.Y) * 2f;
  10464.                             double num11 = Math.Sqrt((double)(num9 * num9 + num10 * num10));
  10465.                             if (num11 < num7 * 0.4)
  10466.                             {
  10467.                                 Main.tile[k, l].active = true;
  10468.                             }
  10469.                         }
  10470.                     }
  10471.                 }
  10472.                 WorldGen.TileRunner(WorldGen.genRand.Next(num3 + 10, num4 - 10), (int)((double)value.Y + num7 * 0.1 + 5.0), (double)WorldGen.genRand.Next(5, 10), WorldGen.genRand.Next(10, 15), 0, true, 0f, 2f, true, true);
  10473.                 num3 = (int)((double)value.X - num * 0.4);
  10474.                 num4 = (int)((double)value.X + num * 0.4);
  10475.                 num5 = (int)((double)value.Y - num * 0.4);
  10476.                 num6 = (int)((double)value.Y + num * 0.4);
  10477.                 if (num3 < 0)
  10478.                 {
  10479.                     num3 = 0;
  10480.                 }
  10481.                 if (num4 > Main.maxTilesX)
  10482.                 {
  10483.                     num4 = Main.maxTilesX;
  10484.                 }
  10485.                 if (num5 < 0)
  10486.                 {
  10487.                     num5 = 0;
  10488.                 }
  10489.                 if (num6 > Main.maxTilesY)
  10490.                 {
  10491.                     num6 = Main.maxTilesY;
  10492.                 }
  10493.                 num7 = num * (double)WorldGen.genRand.Next(80, 120) * 0.01;
  10494.                 for (int m = num3; m < num4; m++)
  10495.                 {
  10496.                     for (int n = num5; n < num6; n++)
  10497.                     {
  10498.                         if ((float)n > value.Y + 2f)
  10499.                         {
  10500.                             float num12 = Math.Abs((float)m - value.X);
  10501.                             float num13 = Math.Abs((float)n - value.Y) * 2f;
  10502.                             double num14 = Math.Sqrt((double)(num12 * num12 + num13 * num13));
  10503.                             if (num14 < num7 * 0.4)
  10504.                             {
  10505.                                 Main.tile[m, n].wall = 2;
  10506.                             }
  10507.                         }
  10508.                     }
  10509.                 }
  10510.                 value += value2;
  10511.                 value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10512.                 if (value2.X > 1f)
  10513.                 {
  10514.                     value2.X = 1f;
  10515.                 }
  10516.                 if (value2.X < -1f)
  10517.                 {
  10518.                     value2.X = -1f;
  10519.                 }
  10520.                 if ((double)value2.Y > 0.2)
  10521.                 {
  10522.                     value2.Y = -0.2f;
  10523.                 }
  10524.                 if ((double)value2.Y < -0.2)
  10525.                 {
  10526.                     value2.Y = -0.2f;
  10527.                 }
  10528.             }
  10529.         }
  10530.         public static void IslandHouse(int i, int j)
  10531.         {
  10532.             byte type = (byte)WorldGen.genRand.Next(45, 48);
  10533.             byte wall = (byte)WorldGen.genRand.Next(10, 13);
  10534.             Vector2 vector = new Vector2((float)i, (float)j);
  10535.             int num = 1;
  10536.             if (WorldGen.genRand.Next(2) == 0)
  10537.             {
  10538.                 num = -1;
  10539.             }
  10540.             int num2 = WorldGen.genRand.Next(7, 12);
  10541.             int num3 = WorldGen.genRand.Next(5, 7);
  10542.             vector.X = (float)(i + (num2 + 2) * num);
  10543.             for (int k = j - 15; k < j + 30; k++)
  10544.             {
  10545.                 if (Main.tile[(int)vector.X, k].active)
  10546.                 {
  10547.                     vector.Y = (float)(k - 1);
  10548.                     break;
  10549.                 }
  10550.             }
  10551.             vector.X = (float)i;
  10552.             int num4 = (int)(vector.X - (float)num2 - 2f);
  10553.             int num5 = (int)(vector.X + (float)num2 + 2f);
  10554.             int num6 = (int)(vector.Y - (float)num3 - 2f);
  10555.             int num7 = (int)(vector.Y + 2f + (float)WorldGen.genRand.Next(3, 5));
  10556.             if (num4 < 0)
  10557.             {
  10558.                 num4 = 0;
  10559.             }
  10560.             if (num5 > Main.maxTilesX)
  10561.             {
  10562.                 num5 = Main.maxTilesX;
  10563.             }
  10564.             if (num6 < 0)
  10565.             {
  10566.                 num6 = 0;
  10567.             }
  10568.             if (num7 > Main.maxTilesY)
  10569.             {
  10570.                 num7 = Main.maxTilesY;
  10571.             }
  10572.             for (int l = num4; l <= num5; l++)
  10573.             {
  10574.                 for (int m = num6; m < num7; m++)
  10575.                 {
  10576.                     Main.tile[l, m].active = true;
  10577.                     Main.tile[l, m].type = type;
  10578.                     Main.tile[l, m].wall = 0;
  10579.                 }
  10580.             }
  10581.             num4 = (int)(vector.X - (float)num2);
  10582.             num5 = (int)(vector.X + (float)num2);
  10583.             num6 = (int)(vector.Y - (float)num3);
  10584.             num7 = (int)(vector.Y + 1f);
  10585.             if (num4 < 0)
  10586.             {
  10587.                 num4 = 0;
  10588.             }
  10589.             if (num5 > Main.maxTilesX)
  10590.             {
  10591.                 num5 = Main.maxTilesX;
  10592.             }
  10593.             if (num6 < 0)
  10594.             {
  10595.                 num6 = 0;
  10596.             }
  10597.             if (num7 > Main.maxTilesY)
  10598.             {
  10599.                 num7 = Main.maxTilesY;
  10600.             }
  10601.             for (int n = num4; n <= num5; n++)
  10602.             {
  10603.                 for (int num8 = num6; num8 < num7; num8++)
  10604.                 {
  10605.                     if (Main.tile[n, num8].wall == 0)
  10606.                     {
  10607.                         Main.tile[n, num8].active = false;
  10608.                         Main.tile[n, num8].wall = wall;
  10609.                     }
  10610.                 }
  10611.             }
  10612.             int num9 = i + (num2 + 1) * num;
  10613.             int num10 = (int)vector.Y;
  10614.             for (int num11 = num9 - 2; num11 <= num9 + 2; num11++)
  10615.             {
  10616.                 Main.tile[num11, num10].active = false;
  10617.                 Main.tile[num11, num10 - 1].active = false;
  10618.                 Main.tile[num11, num10 - 2].active = false;
  10619.             }
  10620.             WorldGen.PlaceTile(num9, num10, 10, true, false, -1);
  10621.             int contain = 0;
  10622.             int num12 = WorldGen.houseCount;
  10623.             if (num12 > 2)
  10624.             {
  10625.                 num12 = WorldGen.genRand.Next(3);
  10626.             }
  10627.             if (num12 == 0)
  10628.             {
  10629.                 contain = 159;
  10630.             }
  10631.             else
  10632.             {
  10633.                 if (num12 == 1)
  10634.                 {
  10635.                     contain = 65;
  10636.                 }
  10637.                 else
  10638.                 {
  10639.                     if (num12 == 2)
  10640.                     {
  10641.                         contain = 158;
  10642.                     }
  10643.                 }
  10644.             }
  10645.             WorldGen.AddBuriedChest(i, num10 - 3, contain);
  10646.             WorldGen.houseCount++;
  10647.         }
  10648.         public static void Mountinater(int i, int j)
  10649.         {
  10650.             double num = (double)WorldGen.genRand.Next(80, 120);
  10651.             float num2 = (float)WorldGen.genRand.Next(40, 55);
  10652.             Vector2 value;
  10653.             value.X = (float)i;
  10654.             value.Y = (float)j + num2 / 2f;
  10655.             Vector2 value2;
  10656.             value2.X = (float)WorldGen.genRand.Next(-10, 11) * 0.1f;
  10657.             value2.Y = (float)WorldGen.genRand.Next(-20, -10) * 0.1f;
  10658.             while (num > 0.0 && num2 > 0f)
  10659.             {
  10660.                 num -= (double)WorldGen.genRand.Next(4);
  10661.                 num2 -= 1f;
  10662.                 int num3 = (int)((double)value.X - num * 0.5);
  10663.                 int num4 = (int)((double)value.X + num * 0.5);
  10664.                 int num5 = (int)((double)value.Y - num * 0.5);
  10665.                 int num6 = (int)((double)value.Y + num * 0.5);
  10666.                 if (num3 < 0)
  10667.                 {
  10668.                     num3 = 0;
  10669.                 }
  10670.                 if (num4 > Main.maxTilesX)
  10671.                 {
  10672.                     num4 = Main.maxTilesX;
  10673.                 }
  10674.                 if (num5 < 0)
  10675.                 {
  10676.                     num5 = 0;
  10677.                 }
  10678.                 if (num6 > Main.maxTilesY)
  10679.                 {
  10680.                     num6 = Main.maxTilesY;
  10681.                 }
  10682.                 double num7 = num * (double)WorldGen.genRand.Next(80, 120) * 0.01;
  10683.                 for (int k = num3; k < num4; k++)
  10684.                 {
  10685.                     for (int l = num5; l < num6; l++)
  10686.                     {
  10687.                         float num8 = Math.Abs((float)k - value.X);
  10688.                         float num9 = Math.Abs((float)l - value.Y);
  10689.                         double num10 = Math.Sqrt((double)(num8 * num8 + num9 * num9));
  10690.                         if (num10 < num7 * 0.4 && !Main.tile[k, l].active)
  10691.                         {
  10692.                             Main.tile[k, l].active = true;
  10693.                             Main.tile[k, l].type = 0;
  10694.                         }
  10695.                     }
  10696.                 }
  10697.                 value += value2;
  10698.                 value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10699.                 value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10700.                 if ((double)value2.X > 0.5)
  10701.                 {
  10702.                     value2.X = 0.5f;
  10703.                 }
  10704.                 if ((double)value2.X < -0.5)
  10705.                 {
  10706.                     value2.X = -0.5f;
  10707.                 }
  10708.                 if ((double)value2.Y > -0.5)
  10709.                 {
  10710.                     value2.Y = -0.5f;
  10711.                 }
  10712.                 if ((double)value2.Y < -1.5)
  10713.                 {
  10714.                     value2.Y = -1.5f;
  10715.                 }
  10716.             }
  10717.         }
  10718.         public static void Lakinater(int i, int j)
  10719.         {
  10720.             double num = (double)WorldGen.genRand.Next(25, 50);
  10721.             double num2 = num;
  10722.             float num3 = (float)WorldGen.genRand.Next(30, 80);
  10723.             if (WorldGen.genRand.Next(5) == 0)
  10724.             {
  10725.                 num *= 1.5;
  10726.                 num2 *= 1.5;
  10727.                 num3 *= 1.2f;
  10728.             }
  10729.             Vector2 value;
  10730.             value.X = (float)i;
  10731.             value.Y = (float)j - num3 * 0.3f;
  10732.             Vector2 value2;
  10733.             value2.X = (float)WorldGen.genRand.Next(-10, 11) * 0.1f;
  10734.             value2.Y = (float)WorldGen.genRand.Next(-20, -10) * 0.1f;
  10735.             while (num > 0.0 && num3 > 0f)
  10736.             {
  10737.                 if ((double)value.Y + num2 * 0.5 > Main.worldSurface)
  10738.                 {
  10739.                     num3 = 0f;
  10740.                 }
  10741.                 num -= (double)WorldGen.genRand.Next(3);
  10742.                 num3 -= 1f;
  10743.                 int num4 = (int)((double)value.X - num * 0.5);
  10744.                 int num5 = (int)((double)value.X + num * 0.5);
  10745.                 int num6 = (int)((double)value.Y - num * 0.5);
  10746.                 int num7 = (int)((double)value.Y + num * 0.5);
  10747.                 if (num4 < 0)
  10748.                 {
  10749.                     num4 = 0;
  10750.                 }
  10751.                 if (num5 > Main.maxTilesX)
  10752.                 {
  10753.                     num5 = Main.maxTilesX;
  10754.                 }
  10755.                 if (num6 < 0)
  10756.                 {
  10757.                     num6 = 0;
  10758.                 }
  10759.                 if (num7 > Main.maxTilesY)
  10760.                 {
  10761.                     num7 = Main.maxTilesY;
  10762.                 }
  10763.                 num2 = num * (double)WorldGen.genRand.Next(80, 120) * 0.01;
  10764.                 for (int k = num4; k < num5; k++)
  10765.                 {
  10766.                     for (int l = num6; l < num7; l++)
  10767.                     {
  10768.                         float num8 = Math.Abs((float)k - value.X);
  10769.                         float num9 = Math.Abs((float)l - value.Y);
  10770.                         double num10 = Math.Sqrt((double)(num8 * num8 + num9 * num9));
  10771.                         if (num10 < num2 * 0.4)
  10772.                         {
  10773.                             if (Main.tile[k, l].active)
  10774.                             {
  10775.                                 Main.tile[k, l].liquid = 255;
  10776.                             }
  10777.                             Main.tile[k, l].active = false;
  10778.                         }
  10779.                     }
  10780.                 }
  10781.                 value += value2;
  10782.                 value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10783.                 value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10784.                 if ((double)value2.X > 0.5)
  10785.                 {
  10786.                     value2.X = 0.5f;
  10787.                 }
  10788.                 if ((double)value2.X < -0.5)
  10789.                 {
  10790.                     value2.X = -0.5f;
  10791.                 }
  10792.                 if ((double)value2.Y > 1.5)
  10793.                 {
  10794.                     value2.Y = 1.5f;
  10795.                 }
  10796.                 if ((double)value2.Y < 0.5)
  10797.                 {
  10798.                     value2.Y = 0.5f;
  10799.                 }
  10800.             }
  10801.         }
  10802.         public static void ShroomPatch(int i, int j)
  10803.         {
  10804.             double num = (double)WorldGen.genRand.Next(40, 70);
  10805.             double num2 = num;
  10806.             float num3 = (float)WorldGen.genRand.Next(10, 20);
  10807.             if (WorldGen.genRand.Next(5) == 0)
  10808.             {
  10809.                 num *= 1.5;
  10810.                 num2 *= 1.5;
  10811.                 num3 *= 1.2f;
  10812.             }
  10813.             Vector2 value;
  10814.             value.X = (float)i;
  10815.             value.Y = (float)j - num3 * 0.3f;
  10816.             Vector2 value2;
  10817.             value2.X = (float)WorldGen.genRand.Next(-10, 11) * 0.1f;
  10818.             value2.Y = (float)WorldGen.genRand.Next(-20, -10) * 0.1f;
  10819.             while (num > 0.0 && num3 > 0f)
  10820.             {
  10821.                 num -= (double)WorldGen.genRand.Next(3);
  10822.                 num3 -= 1f;
  10823.                 int num4 = (int)((double)value.X - num * 0.5);
  10824.                 int num5 = (int)((double)value.X + num * 0.5);
  10825.                 int num6 = (int)((double)value.Y - num * 0.5);
  10826.                 int num7 = (int)((double)value.Y + num * 0.5);
  10827.                 if (num4 < 0)
  10828.                 {
  10829.                     num4 = 0;
  10830.                 }
  10831.                 if (num5 > Main.maxTilesX)
  10832.                 {
  10833.                     num5 = Main.maxTilesX;
  10834.                 }
  10835.                 if (num6 < 0)
  10836.                 {
  10837.                     num6 = 0;
  10838.                 }
  10839.                 if (num7 > Main.maxTilesY)
  10840.                 {
  10841.                     num7 = Main.maxTilesY;
  10842.                 }
  10843.                 num2 = num * (double)WorldGen.genRand.Next(80, 120) * 0.01;
  10844.                 for (int k = num4; k < num5; k++)
  10845.                 {
  10846.                     for (int l = num6; l < num7; l++)
  10847.                     {
  10848.                         float num8 = Math.Abs((float)k - value.X);
  10849.                         float num9 = Math.Abs(((float)l - value.Y) * 2.3f);
  10850.                         double num10 = Math.Sqrt((double)(num8 * num8 + num9 * num9));
  10851.                         if (num10 < num2 * 0.4)
  10852.                         {
  10853.                             if ((double)l < (double)value.Y + num2 * 0.05)
  10854.                             {
  10855.                                 if (Main.tile[k, l].type != 59)
  10856.                                 {
  10857.                                     Main.tile[k, l].active = false;
  10858.                                 }
  10859.                             }
  10860.                             else
  10861.                             {
  10862.                                 Main.tile[k, l].type = 59;
  10863.                             }
  10864.                             Main.tile[k, l].liquid = 0;
  10865.                             Main.tile[k, l].lava = false;
  10866.                         }
  10867.                     }
  10868.                 }
  10869.                 value += value2;
  10870.                 value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10871.                 value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10872.                 if (value2.X > 1f)
  10873.                 {
  10874.                     value2.X = 0.1f;
  10875.                 }
  10876.                 if (value2.X < -1f)
  10877.                 {
  10878.                     value2.X = -1f;
  10879.                 }
  10880.                 if (value2.Y > 1f)
  10881.                 {
  10882.                     value2.Y = 1f;
  10883.                 }
  10884.                 if (value2.Y < -1f)
  10885.                 {
  10886.                     value2.Y = -1f;
  10887.                 }
  10888.             }
  10889.         }
  10890.         public static void Cavinator(int i, int j, int steps)
  10891.         {
  10892.             double num = (double)WorldGen.genRand.Next(7, 15);
  10893.             int num2 = 1;
  10894.             if (WorldGen.genRand.Next(2) == 0)
  10895.             {
  10896.                 num2 = -1;
  10897.             }
  10898.             Vector2 value;
  10899.             value.X = (float)i;
  10900.             value.Y = (float)j;
  10901.             int k = WorldGen.genRand.Next(20, 40);
  10902.             Vector2 value2;
  10903.             value2.Y = (float)WorldGen.genRand.Next(10, 20) * 0.01f;
  10904.             value2.X = (float)num2;
  10905.             while (k > 0)
  10906.             {
  10907.                 k--;
  10908.                 int num3 = (int)((double)value.X - num * 0.5);
  10909.                 int num4 = (int)((double)value.X + num * 0.5);
  10910.                 int num5 = (int)((double)value.Y - num * 0.5);
  10911.                 int num6 = (int)((double)value.Y + num * 0.5);
  10912.                 if (num3 < 0)
  10913.                 {
  10914.                     num3 = 0;
  10915.                 }
  10916.                 if (num4 > Main.maxTilesX)
  10917.                 {
  10918.                     num4 = Main.maxTilesX;
  10919.                 }
  10920.                 if (num5 < 0)
  10921.                 {
  10922.                     num5 = 0;
  10923.                 }
  10924.                 if (num6 > Main.maxTilesY)
  10925.                 {
  10926.                     num6 = Main.maxTilesY;
  10927.                 }
  10928.                 double num7 = num * (double)WorldGen.genRand.Next(80, 120) * 0.01;
  10929.                 for (int l = num3; l < num4; l++)
  10930.                 {
  10931.                     for (int m = num5; m < num6; m++)
  10932.                     {
  10933.                         float num8 = Math.Abs((float)l - value.X);
  10934.                         float num9 = Math.Abs((float)m - value.Y);
  10935.                         double num10 = Math.Sqrt((double)(num8 * num8 + num9 * num9));
  10936.                         if (num10 < num7 * 0.4)
  10937.                         {
  10938.                             Main.tile[l, m].active = false;
  10939.                         }
  10940.                     }
  10941.                 }
  10942.                 value += value2;
  10943.                 value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10944.                 value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  10945.                 if (value2.X > (float)num2 + 0.5f)
  10946.                 {
  10947.                     value2.X = (float)num2 + 0.5f;
  10948.                 }
  10949.                 if (value2.X < (float)num2 - 0.5f)
  10950.                 {
  10951.                     value2.X = (float)num2 - 0.5f;
  10952.                 }
  10953.                 if (value2.Y > 2f)
  10954.                 {
  10955.                     value2.Y = 2f;
  10956.                 }
  10957.                 if (value2.Y < 0f)
  10958.                 {
  10959.                     value2.Y = 0f;
  10960.                 }
  10961.             }
  10962.             if (steps > 0 && (double)((int)value.Y) < Main.rockLayer + 50.0)
  10963.             {
  10964.                 WorldGen.Cavinator((int)value.X, (int)value.Y, steps - 1);
  10965.             }
  10966.         }
  10967.         public static void CaveOpenater(int i, int j)
  10968.         {
  10969.             double num = (double)WorldGen.genRand.Next(7, 12);
  10970.             int num2 = 1;
  10971.             if (WorldGen.genRand.Next(2) == 0)
  10972.             {
  10973.                 num2 = -1;
  10974.             }
  10975.             Vector2 value;
  10976.             value.X = (float)i;
  10977.             value.Y = (float)j;
  10978.             int k = 100;
  10979.             Vector2 value2;
  10980.             value2.Y = 0f;
  10981.             value2.X = (float)num2;
  10982.             while (k > 0)
  10983.             {
  10984.                 if (Main.tile[(int)value.X, (int)value.Y].wall == 0)
  10985.                 {
  10986.                     k = 0;
  10987.                 }
  10988.                 k--;
  10989.                 int num3 = (int)((double)value.X - num * 0.5);
  10990.                 int num4 = (int)((double)value.X + num * 0.5);
  10991.                 int num5 = (int)((double)value.Y - num * 0.5);
  10992.                 int num6 = (int)((double)value.Y + num * 0.5);
  10993.                 if (num3 < 0)
  10994.                 {
  10995.                     num3 = 0;
  10996.                 }
  10997.                 if (num4 > Main.maxTilesX)
  10998.                 {
  10999.                     num4 = Main.maxTilesX;
  11000.                 }
  11001.                 if (num5 < 0)
  11002.                 {
  11003.                     num5 = 0;
  11004.                 }
  11005.                 if (num6 > Main.maxTilesY)
  11006.                 {
  11007.                     num6 = Main.maxTilesY;
  11008.                 }
  11009.                 double num7 = num * (double)WorldGen.genRand.Next(80, 120) * 0.01;
  11010.                 for (int l = num3; l < num4; l++)
  11011.                 {
  11012.                     for (int m = num5; m < num6; m++)
  11013.                     {
  11014.                         float num8 = Math.Abs((float)l - value.X);
  11015.                         float num9 = Math.Abs((float)m - value.Y);
  11016.                         double num10 = Math.Sqrt((double)(num8 * num8 + num9 * num9));
  11017.                         if (num10 < num7 * 0.4)
  11018.                         {
  11019.                             Main.tile[l, m].active = false;
  11020.                         }
  11021.                     }
  11022.                 }
  11023.                 value += value2;
  11024.                 value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  11025.                 value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
  11026.                 if (value2.X > (float)num2 + 0.5f)
  11027.                 {
  11028.                     value2.X = (float)num2 + 0.5f;
  11029.                 }
  11030.                 if (value2.X < (float)num2 - 0.5f)
  11031.                 {
  11032.                     value2.X = (float)num2 - 0.5f;
  11033.                 }
  11034.                 if (value2.Y > 0f)
  11035.                 {
  11036.                     value2.Y = 0f;
  11037.                 }
  11038.                 if ((double)value2.Y < -0.5)
  11039.                 {
  11040.                     value2.Y = -0.5f;
  11041.                 }
  11042.             }
  11043.         }
  11044.         public static void SquareTileFrame(int i, int j, bool resetFrame = true)
  11045.         {
  11046.             WorldGen.TileFrame(i - 1, j - 1, false, false);
  11047.             WorldGen.TileFrame(i - 1, j, false, false);
  11048.             WorldGen.TileFrame(i - 1, j + 1, false, false);
  11049.             WorldGen.TileFrame(i, j - 1, false, false);
  11050.             WorldGen.TileFrame(i, j, resetFrame, false);
  11051.             WorldGen.TileFrame(i, j + 1, false, false);
  11052.             WorldGen.TileFrame(i + 1, j - 1, false, false);
  11053.             WorldGen.TileFrame(i + 1, j, false, false);
  11054.             WorldGen.TileFrame(i + 1, j + 1, false, false);
  11055.         }
  11056.         public static void SquareWallFrame(int i, int j, bool resetFrame = true)
  11057.         {
  11058.             WorldGen.WallFrame(i - 1, j - 1, false);
  11059.             WorldGen.WallFrame(i - 1, j, false);
  11060.             WorldGen.WallFrame(i - 1, j + 1, false);
  11061.             WorldGen.WallFrame(i, j - 1, false);
  11062.             WorldGen.WallFrame(i, j, resetFrame);
  11063.             WorldGen.WallFrame(i, j + 1, false);
  11064.             WorldGen.WallFrame(i + 1, j - 1, false);
  11065.             WorldGen.WallFrame(i + 1, j, false);
  11066.             WorldGen.WallFrame(i + 1, j + 1, false);
  11067.         }
  11068.         public static void SectionTileFrame(int startX, int startY, int endX, int endY)
  11069.         {
  11070.             int num = startX * 200;
  11071.             int num2 = (endX + 1) * 200;
  11072.             int num3 = startY * 150;
  11073.             int num4 = (endY + 1) * 150;
  11074.             if (num < 1)
  11075.             {
  11076.                 num = 1;
  11077.             }
  11078.             if (num3 < 1)
  11079.             {
  11080.                 num3 = 1;
  11081.             }
  11082.             if (num > Main.maxTilesX - 2)
  11083.             {
  11084.                 num = Main.maxTilesX - 2;
  11085.             }
  11086.             if (num3 > Main.maxTilesY - 2)
  11087.             {
  11088.                 num3 = Main.maxTilesY - 2;
  11089.             }
  11090.             for (int i = num - 1; i < num2 + 1; i++)
  11091.             {
  11092.                 for (int j = num3 - 1; j < num4 + 1; j++)
  11093.                 {
  11094.                     if (Main.tile[i, j] == null)
  11095.                     {
  11096.                         Main.tile[i, j] = new Tile();
  11097.                     }
  11098.                     WorldGen.TileFrame(i, j, true, true);
  11099.                     WorldGen.WallFrame(i, j, true);
  11100.                 }
  11101.             }
  11102.         }
  11103.         public static void RangeFrame(int startX, int startY, int endX, int endY)
  11104.         {
  11105.             int num = endX + 1;
  11106.             int num2 = endY + 1;
  11107.             for (int i = startX - 1; i < num + 1; i++)
  11108.             {
  11109.                 for (int j = startY - 1; j < num2 + 1; j++)
  11110.                 {
  11111.                     WorldGen.TileFrame(i, j, false, false);
  11112.                     WorldGen.WallFrame(i, j, false);
  11113.                 }
  11114.             }
  11115.         }
  11116.         public static void WaterCheck()
  11117.         {
  11118.             Liquid.numLiquid = 0;
  11119.             LiquidBuffer.numLiquidBuffer = 0;
  11120.             for (int i = 1; i < Main.maxTilesX - 1; i++)
  11121.             {
  11122.                 for (int j = Main.maxTilesY - 2; j > 0; j--)
  11123.                 {
  11124.                     Main.tile[i, j].checkingLiquid = false;
  11125.                     if (Main.tile[i, j].liquid > 0 && Main.tile[i, j].active && Main.tileSolid[(int)Main.tile[i, j].type] && !Main.tileSolidTop[(int)Main.tile[i, j].type])
  11126.                     {
  11127.                         Main.tile[i, j].liquid = 0;
  11128.                     }
  11129.                     else
  11130.                     {
  11131.                         if (Main.tile[i, j].liquid > 0)
  11132.                         {
  11133.                             if (Main.tile[i, j].active)
  11134.                             {
  11135.                                 if (Main.tileWaterDeath[(int)Main.tile[i, j].type])
  11136.                                 {
  11137.                                     WorldGen.KillTile(i, j, false, false, false);
  11138.                                 }
  11139.                                 if (Main.tile[i, j].lava && Main.tileLavaDeath[(int)Main.tile[i, j].type])
  11140.                                 {
  11141.                                     WorldGen.KillTile(i, j, false, false, false);
  11142.                                 }
  11143.                             }
  11144.                             if ((!Main.tile[i, j + 1].active || !Main.tileSolid[(int)Main.tile[i, j + 1].type] || Main.tileSolidTop[(int)Main.tile[i, j + 1].type]) && Main.tile[i, j + 1].liquid < 255)
  11145.                             {
  11146.                                 if (Main.tile[i, j + 1].liquid > 250)
  11147.                                 {
  11148.                                     Main.tile[i, j + 1].liquid = 255;
  11149.                                 }
  11150.                                 else
  11151.                                 {
  11152.                                     Liquid.AddWater(i, j);
  11153.                                 }
  11154.                             }
  11155.                             if ((!Main.tile[i - 1, j].active || !Main.tileSolid[(int)Main.tile[i - 1, j].type] || Main.tileSolidTop[(int)Main.tile[i - 1, j].type]) && Main.tile[i - 1, j].liquid != Main.tile[i, j].liquid)
  11156.                             {
  11157.                                 Liquid.AddWater(i, j);
  11158.                             }
  11159.                             else
  11160.                             {
  11161.                                 if ((!Main.tile[i + 1, j].active || !Main.tileSolid[(int)Main.tile[i + 1, j].type] || Main.tileSolidTop[(int)Main.tile[i + 1, j].type]) && Main.tile[i + 1, j].liquid != Main.tile[i, j].liquid)
  11162.                                 {
  11163.                                     Liquid.AddWater(i, j);
  11164.                                 }
  11165.                             }
  11166.                             if (Main.tile[i, j].lava)
  11167.                             {
  11168.                                 if (Main.tile[i - 1, j].liquid > 0 && !Main.tile[i - 1, j].lava)
  11169.                                 {
  11170.                                     Liquid.AddWater(i, j);
  11171.                                 }
  11172.                                 else
  11173.                                 {
  11174.                                     if (Main.tile[i + 1, j].liquid > 0 && !Main.tile[i + 1, j].lava)
  11175.                                     {
  11176.                                         Liquid.AddWater(i, j);
  11177.                                     }
  11178.                                     else
  11179.                                     {
  11180.                                         if (Main.tile[i, j - 1].liquid > 0 && !Main.tile[i, j - 1].lava)
  11181.                                         {
  11182.                                             Liquid.AddWater(i, j);
  11183.                                         }
  11184.                                         else
  11185.                                         {
  11186.                                             if (Main.tile[i, j + 1].liquid > 0 && !Main.tile[i, j + 1].lava)
  11187.                                             {
  11188.                                                 Liquid.AddWater(i, j);
  11189.                                             }
  11190.                                         }
  11191.                                     }
  11192.                                 }
  11193.                             }
  11194.                         }
  11195.                     }
  11196.                 }
  11197.             }
  11198.         }
  11199.         public static void EveryTileFrame()
  11200.         {
  11201.             WorldGen.noLiquidCheck = true;
  11202.             for (int i = 0; i < Main.maxTilesX; i++)
  11203.             {
  11204.                 float num = (float)i / (float)Main.maxTilesX;
  11205.                 Main.statusText = "Finding tile frames: " + (int)(num * 100f + 1f) + "%";
  11206.                 for (int j = 0; j < Main.maxTilesY; j++)
  11207.                 {
  11208.                     WorldGen.TileFrame(i, j, true, false);
  11209.                     WorldGen.WallFrame(i, j, true);
  11210.                 }
  11211.             }
  11212.             WorldGen.noLiquidCheck = false;
  11213.         }
  11214.         public static void PlantCheck(int i, int j)
  11215.         {
  11216.             int num = -1;
  11217.             int type = (int)Main.tile[i, j].type;
  11218.             int arg_19_0 = i - 1;
  11219.             int arg_23_0 = i + 1;
  11220.             int arg_22_0 = Main.maxTilesX;
  11221.             int arg_29_0 = j - 1;
  11222.             if (j + 1 >= Main.maxTilesY)
  11223.             {
  11224.                 num = type;
  11225.             }
  11226.             if (i - 1 >= 0 && Main.tile[i - 1, j] != null && Main.tile[i - 1, j].active)
  11227.             {
  11228.                 byte arg_74_0 = Main.tile[i - 1, j].type;
  11229.             }
  11230.             if (i + 1 < Main.maxTilesX && Main.tile[i + 1, j] != null && Main.tile[i + 1, j].active)
  11231.             {
  11232.                 byte arg_B7_0 = Main.tile[i + 1, j].type;
  11233.             }
  11234.             if (j - 1 >= 0 && Main.tile[i, j - 1] != null && Main.tile[i, j - 1].active)
  11235.             {
  11236.                 byte arg_F6_0 = Main.tile[i, j - 1].type;
  11237.             }
  11238.             if (j + 1 < Main.maxTilesY && Main.tile[i, j + 1] != null && Main.tile[i, j + 1].active)
  11239.             {
  11240.                 num = (int)Main.tile[i, j + 1].type;
  11241.             }
  11242.             if (i - 1 >= 0 && j - 1 >= 0 && Main.tile[i - 1, j - 1] != null && Main.tile[i - 1, j - 1].active)
  11243.             {
  11244.                 byte arg_184_0 = Main.tile[i - 1, j - 1].type;
  11245.             }
  11246.             if (i + 1 < Main.maxTilesX && j - 1 >= 0 && Main.tile[i + 1, j - 1] != null && Main.tile[i + 1, j - 1].active)
  11247.             {
  11248.                 byte arg_1D3_0 = Main.tile[i + 1, j - 1].type;
  11249.             }
  11250.             if (i - 1 >= 0 && j + 1 < Main.maxTilesY && Main.tile[i - 1, j + 1] != null && Main.tile[i - 1, j + 1].active)
  11251.             {
  11252.                 byte arg_222_0 = Main.tile[i - 1, j + 1].type;
  11253.             }
  11254.             if (i + 1 < Main.maxTilesX && j + 1 < Main.maxTilesY && Main.tile[i + 1, j + 1] != null && Main.tile[i + 1, j + 1].active)
  11255.             {
  11256.                 byte arg_275_0 = Main.tile[i + 1, j + 1].type;
  11257.             }
  11258.             if ((type == 3 && num != 2 && num != 78) || (type == 24 && num != 23) || (type == 61 && num != 60) || (type == 71 && num != 70) || (type == 73 && num != 2 && num != 78) || (type == 74 && num != 60))
  11259.             {
  11260.                 WorldGen.KillTile(i, j, false, false, false);
  11261.             }
  11262.         }
  11263.         public static void WallFrame(int i, int j, bool resetFrame = false)
  11264.         {
  11265.             if (i >= 0 && j >= 0 && i < Main.maxTilesX && j < Main.maxTilesY && Main.tile[i, j] != null && Main.tile[i, j].wall > 0)
  11266.             {
  11267.                 int num = -1;
  11268.                 int num2 = -1;
  11269.                 int num3 = -1;
  11270.                 int num4 = -1;
  11271.                 int num5 = -1;
  11272.                 int num6 = -1;
  11273.                 int num7 = -1;
  11274.                 int num8 = -1;
  11275.                 int wall = (int)Main.tile[i, j].wall;
  11276.                 if (wall == 0)
  11277.                 {
  11278.                     return;
  11279.                 }
  11280.                 byte arg_89_0 = Main.tile[i, j].wallFrameX;
  11281.                 byte arg_9B_0 = Main.tile[i, j].wallFrameY;
  11282.                 Rectangle rectangle;
  11283.                 rectangle.X = -1;
  11284.                 rectangle.Y = -1;
  11285.                 if (i - 1 < 0)
  11286.                 {
  11287.                     num = wall;
  11288.                     num4 = wall;
  11289.                     num6 = wall;
  11290.                 }
  11291.                 if (i + 1 >= Main.maxTilesX)
  11292.                 {
  11293.                     num3 = wall;
  11294.                     num5 = wall;
  11295.                     num8 = wall;
  11296.                 }
  11297.                 if (j - 1 < 0)
  11298.                 {
  11299.                     num = wall;
  11300.                     num2 = wall;
  11301.                     num3 = wall;
  11302.                 }
  11303.                 if (j + 1 >= Main.maxTilesY)
  11304.                 {
  11305.                     num6 = wall;
  11306.                     num7 = wall;
  11307.                     num8 = wall;
  11308.                 }
  11309.                 if (i - 1 >= 0 && Main.tile[i - 1, j] != null)
  11310.                 {
  11311.                     num4 = (int)Main.tile[i - 1, j].wall;
  11312.                 }
  11313.                 if (i + 1 < Main.maxTilesX && Main.tile[i + 1, j] != null)
  11314.                 {
  11315.                     num5 = (int)Main.tile[i + 1, j].wall;
  11316.                 }
  11317.                 if (j - 1 >= 0 && Main.tile[i, j - 1] != null)
  11318.                 {
  11319.                     num2 = (int)Main.tile[i, j - 1].wall;
  11320.                 }
  11321.                 if (j + 1 < Main.maxTilesY && Main.tile[i, j + 1] != null)
  11322.                 {
  11323.                     num7 = (int)Main.tile[i, j + 1].wall;
  11324.                 }
  11325.                 if (i - 1 >= 0 && j - 1 >= 0 && Main.tile[i - 1, j - 1] != null)
  11326.                 {
  11327.                     num = (int)Main.tile[i - 1, j - 1].wall;
  11328.                 }
  11329.                 if (i + 1 < Main.maxTilesX && j - 1 >= 0 && Main.tile[i + 1, j - 1] != null)
  11330.                 {
  11331.                     num3 = (int)Main.tile[i + 1, j - 1].wall;
  11332.                 }
  11333.                 if (i - 1 >= 0 && j + 1 < Main.maxTilesY && Main.tile[i - 1, j + 1] != null)
  11334.                 {
  11335.                     num6 = (int)Main.tile[i - 1, j + 1].wall;
  11336.                 }
  11337.                 if (i + 1 < Main.maxTilesX && j + 1 < Main.maxTilesY && Main.tile[i + 1, j + 1] != null)
  11338.                 {
  11339.                     num8 = (int)Main.tile[i + 1, j + 1].wall;
  11340.                 }
  11341.                 if (wall == 2)
  11342.                 {
  11343.                     if (j == (int)Main.worldSurface)
  11344.                     {
  11345.                         num7 = wall;
  11346.                         num6 = wall;
  11347.                         num8 = wall;
  11348.                     }
  11349.                     else
  11350.                     {
  11351.                         if (j >= (int)Main.worldSurface)
  11352.                         {
  11353.                             num7 = wall;
  11354.                             num6 = wall;
  11355.                             num8 = wall;
  11356.                             num2 = wall;
  11357.                             num = wall;
  11358.                             num3 = wall;
  11359.                             num4 = wall;
  11360.                             num5 = wall;
  11361.                         }
  11362.                     }
  11363.                 }
  11364.                 int num9 = 0;
  11365.                 if (resetFrame)
  11366.                 {
  11367.                     num9 = WorldGen.genRand.Next(0, 3);
  11368.                     Main.tile[i, j].wallFrameNumber = (byte)num9;
  11369.                 }
  11370.                 else
  11371.                 {
  11372.                     num9 = (int)Main.tile[i, j].wallFrameNumber;
  11373.                 }
  11374.                 if (rectangle.X < 0 || rectangle.Y < 0)
  11375.                 {
  11376.                     if (num2 == wall && num7 == wall && (num4 == wall & num5 == wall))
  11377.                     {
  11378.                         if (num != wall && num3 != wall)
  11379.                         {
  11380.                             if (num9 == 0)
  11381.                             {
  11382.                                 rectangle.X = 108;
  11383.                                 rectangle.Y = 18;
  11384.                             }
  11385.                             if (num9 == 1)
  11386.                             {
  11387.                                 rectangle.X = 126;
  11388.                                 rectangle.Y = 18;
  11389.                             }
  11390.                             if (num9 == 2)
  11391.                             {
  11392.                                 rectangle.X = 144;
  11393.                                 rectangle.Y = 18;
  11394.                             }
  11395.                         }
  11396.                         else
  11397.                         {
  11398.                             if (num6 != wall && num8 != wall)
  11399.                             {
  11400.                                 if (num9 == 0)
  11401.                                 {
  11402.                                     rectangle.X = 108;
  11403.                                     rectangle.Y = 36;
  11404.                                 }
  11405.                                 if (num9 == 1)
  11406.                                 {
  11407.                                     rectangle.X = 126;
  11408.                                     rectangle.Y = 36;
  11409.                                 }
  11410.                                 if (num9 == 2)
  11411.                                 {
  11412.                                     rectangle.X = 144;
  11413.                                     rectangle.Y = 36;
  11414.                                 }
  11415.                             }
  11416.                             else
  11417.                             {
  11418.                                 if (num != wall && num6 != wall)
  11419.                                 {
  11420.                                     if (num9 == 0)
  11421.                                     {
  11422.                                         rectangle.X = 180;
  11423.                                         rectangle.Y = 0;
  11424.                                     }
  11425.                                     if (num9 == 1)
  11426.                                     {
  11427.                                         rectangle.X = 180;
  11428.                                         rectangle.Y = 18;
  11429.                                     }
  11430.                                     if (num9 == 2)
  11431.                                     {
  11432.                                         rectangle.X = 180;
  11433.                                         rectangle.Y = 36;
  11434.                                     }
  11435.                                 }
  11436.                                 else
  11437.                                 {
  11438.                                     if (num3 != wall && num8 != wall)
  11439.                                     {
  11440.                                         if (num9 == 0)
  11441.                                         {
  11442.                                             rectangle.X = 198;
  11443.                                             rectangle.Y = 0;
  11444.                                         }
  11445.                                         if (num9 == 1)
  11446.                                         {
  11447.                                             rectangle.X = 198;
  11448.                                             rectangle.Y = 18;
  11449.                                         }
  11450.                                         if (num9 == 2)
  11451.                                         {
  11452.                                             rectangle.X = 198;
  11453.                                             rectangle.Y = 36;
  11454.                                         }
  11455.                                     }
  11456.                                     else
  11457.                                     {
  11458.                                         if (num9 == 0)
  11459.                                         {
  11460.                                             rectangle.X = 18;
  11461.                                             rectangle.Y = 18;
  11462.                                         }
  11463.                                         if (num9 == 1)
  11464.                                         {
  11465.                                             rectangle.X = 36;
  11466.                                             rectangle.Y = 18;
  11467.                                         }
  11468.                                         if (num9 == 2)
  11469.                                         {
  11470.                                             rectangle.X = 54;
  11471.                                             rectangle.Y = 18;
  11472.                                         }
  11473.                                     }
  11474.                                 }
  11475.                             }
  11476.                         }
  11477.                     }
  11478.                     else
  11479.                     {
  11480.                         if (num2 != wall && num7 == wall && (num4 == wall & num5 == wall))
  11481.                         {
  11482.                             if (num9 == 0)
  11483.                             {
  11484.                                 rectangle.X = 18;
  11485.                                 rectangle.Y = 0;
  11486.                             }
  11487.                             if (num9 == 1)
  11488.                             {
  11489.                                 rectangle.X = 36;
  11490.                                 rectangle.Y = 0;
  11491.                             }
  11492.                             if (num9 == 2)
  11493.                             {
  11494.                                 rectangle.X = 54;
  11495.                                 rectangle.Y = 0;
  11496.                             }
  11497.                         }
  11498.                         else
  11499.                         {
  11500.                             if (num2 == wall && num7 != wall && (num4 == wall & num5 == wall))
  11501.                             {
  11502.                                 if (num9 == 0)
  11503.                                 {
  11504.                                     rectangle.X = 18;
  11505.                                     rectangle.Y = 36;
  11506.                                 }
  11507.                                 if (num9 == 1)
  11508.                                 {
  11509.                                     rectangle.X = 36;
  11510.                                     rectangle.Y = 36;
  11511.                                 }
  11512.                                 if (num9 == 2)
  11513.                                 {
  11514.                                     rectangle.X = 54;
  11515.                                     rectangle.Y = 36;
  11516.                                 }
  11517.                             }
  11518.                             else
  11519.                             {
  11520.                                 if (num2 == wall && num7 == wall && (num4 != wall & num5 == wall))
  11521.                                 {
  11522.                                     if (num9 == 0)
  11523.                                     {
  11524.                                         rectangle.X = 0;
  11525.                                         rectangle.Y = 0;
  11526.                                     }
  11527.                                     if (num9 == 1)
  11528.                                     {
  11529.                                         rectangle.X = 0;
  11530.                                         rectangle.Y = 18;
  11531.                                     }
  11532.                                     if (num9 == 2)
  11533.                                     {
  11534.                                         rectangle.X = 0;
  11535.                                         rectangle.Y = 36;
  11536.                                     }
  11537.                                 }
  11538.                                 else
  11539.                                 {
  11540.                                     if (num2 == wall && num7 == wall && (num4 == wall & num5 != wall))
  11541.                                     {
  11542.                                         if (num9 == 0)
  11543.                                         {
  11544.                                             rectangle.X = 72;
  11545.                                             rectangle.Y = 0;
  11546.                                         }
  11547.                                         if (num9 == 1)
  11548.                                         {
  11549.                                             rectangle.X = 72;
  11550.                                             rectangle.Y = 18;
  11551.                                         }
  11552.                                         if (num9 == 2)
  11553.                                         {
  11554.                                             rectangle.X = 72;
  11555.                                             rectangle.Y = 36;
  11556.                                         }
  11557.                                     }
  11558.                                     else
  11559.                                     {
  11560.                                         if (num2 != wall && num7 == wall && (num4 != wall & num5 == wall))
  11561.                                         {
  11562.                                             if (num9 == 0)
  11563.                                             {
  11564.                                                 rectangle.X = 0;
  11565.                                                 rectangle.Y = 54;
  11566.                                             }
  11567.                                             if (num9 == 1)
  11568.                                             {
  11569.                                                 rectangle.X = 36;
  11570.                                                 rectangle.Y = 54;
  11571.                                             }
  11572.                                             if (num9 == 2)
  11573.                                             {
  11574.                                                 rectangle.X = 72;
  11575.                                                 rectangle.Y = 54;
  11576.                                             }
  11577.                                         }
  11578.                                         else
  11579.                                         {
  11580.                                             if (num2 != wall && num7 == wall && (num4 == wall & num5 != wall))
  11581.                                             {
  11582.                                                 if (num9 == 0)
  11583.                                                 {
  11584.                                                     rectangle.X = 18;
  11585.                                                     rectangle.Y = 54;
  11586.                                                 }
  11587.                                                 if (num9 == 1)
  11588.                                                 {
  11589.                                                     rectangle.X = 54;
  11590.                                                     rectangle.Y = 54;
  11591.                                                 }
  11592.                                                 if (num9 == 2)
  11593.                                                 {
  11594.                                                     rectangle.X = 90;
  11595.                                                     rectangle.Y = 54;
  11596.                                                 }
  11597.                                             }
  11598.                                             else
  11599.                                             {
  11600.                                                 if (num2 == wall && num7 != wall && (num4 != wall & num5 == wall))
  11601.                                                 {
  11602.                                                     if (num9 == 0)
  11603.                                                     {
  11604.                                                         rectangle.X = 0;
  11605.                                                         rectangle.Y = 72;
  11606.                                                     }
  11607.                                                     if (num9 == 1)
  11608.                                                     {
  11609.                                                         rectangle.X = 36;
  11610.                                                         rectangle.Y = 72;
  11611.                                                     }
  11612.                                                     if (num9 == 2)
  11613.                                                     {
  11614.                                                         rectangle.X = 72;
  11615.                                                         rectangle.Y = 72;
  11616.                                                     }
  11617.                                                 }
  11618.                                                 else
  11619.                                                 {
  11620.                                                     if (num2 == wall && num7 != wall && (num4 == wall & num5 != wall))
  11621.                                                     {
  11622.                                                         if (num9 == 0)
  11623.                                                         {
  11624.                                                             rectangle.X = 18;
  11625.                                                             rectangle.Y = 72;
  11626.                                                         }
  11627.                                                         if (num9 == 1)
  11628.                                                         {
  11629.                                                             rectangle.X = 54;
  11630.                                                             rectangle.Y = 72;
  11631.                                                         }
  11632.                                                         if (num9 == 2)
  11633.                                                         {
  11634.                                                             rectangle.X = 90;
  11635.                                                             rectangle.Y = 72;
  11636.                                                         }
  11637.                                                     }
  11638.                                                     else
  11639.                                                     {
  11640.                                                         if (num2 == wall && num7 == wall && (num4 != wall & num5 != wall))
  11641.                                                         {
  11642.                                                             if (num9 == 0)
  11643.                                                             {
  11644.                                                                 rectangle.X = 90;
  11645.                                                                 rectangle.Y = 0;
  11646.                                                             }
  11647.                                                             if (num9 == 1)
  11648.                                                             {
  11649.                                                                 rectangle.X = 90;
  11650.                                                                 rectangle.Y = 18;
  11651.                                                             }
  11652.                                                             if (num9 == 2)
  11653.                                                             {
  11654.                                                                 rectangle.X = 90;
  11655.                                                                 rectangle.Y = 36;
  11656.                                                             }
  11657.                                                         }
  11658.                                                         else
  11659.                                                         {
  11660.                                                             if (num2 != wall && num7 != wall && (num4 == wall & num5 == wall))
  11661.                                                             {
  11662.                                                                 if (num9 == 0)
  11663.                                                                 {
  11664.                                                                     rectangle.X = 108;
  11665.                                                                     rectangle.Y = 72;
  11666.                                                                 }
  11667.                                                                 if (num9 == 1)
  11668.                                                                 {
  11669.                                                                     rectangle.X = 126;
  11670.                                                                     rectangle.Y = 72;
  11671.                                                                 }
  11672.                                                                 if (num9 == 2)
  11673.                                                                 {
  11674.                                                                     rectangle.X = 144;
  11675.                                                                     rectangle.Y = 72;
  11676.                                                                 }
  11677.                                                             }
  11678.                                                             else
  11679.                                                             {
  11680.                                                                 if (num2 != wall && num7 == wall && (num4 != wall & num5 != wall))
  11681.                                                                 {
  11682.                                                                     if (num9 == 0)
  11683.                                                                     {
  11684.                                                                         rectangle.X = 108;
  11685.                                                                         rectangle.Y = 0;
  11686.                                                                     }
  11687.                                                                     if (num9 == 1)
  11688.                                                                     {
  11689.                                                                         rectangle.X = 126;
  11690.                                                                         rectangle.Y = 0;
  11691.                                                                     }
  11692.                                                                     if (num9 == 2)
  11693.                                                                     {
  11694.                                                                         rectangle.X = 144;
  11695.                                                                         rectangle.Y = 0;
  11696.                                                                     }
  11697.                                                                 }
  11698.                                                                 else
  11699.                                                                 {
  11700.                                                                     if (num2 == wall && num7 != wall && (num4 != wall & num5 != wall))
  11701.                                                                     {
  11702.                                                                         if (num9 == 0)
  11703.                                                                         {
  11704.                                                                             rectangle.X = 108;
  11705.                                                                             rectangle.Y = 54;
  11706.                                                                         }
  11707.                                                                         if (num9 == 1)
  11708.                                                                         {
  11709.                                                                             rectangle.X = 126;
  11710.                                                                             rectangle.Y = 54;
  11711.                                                                         }
  11712.                                                                         if (num9 == 2)
  11713.                                                                         {
  11714.                                                                             rectangle.X = 144;
  11715.                                                                             rectangle.Y = 54;
  11716.                                                                         }
  11717.                                                                     }
  11718.                                                                     else
  11719.                                                                     {
  11720.                                                                         if (num2 != wall && num7 != wall && (num4 != wall & num5 == wall))
  11721.                                                                         {
  11722.                                                                             if (num9 == 0)
  11723.                                                                             {
  11724.                                                                                 rectangle.X = 162;
  11725.                                                                                 rectangle.Y = 0;
  11726.                                                                             }
  11727.                                                                             if (num9 == 1)
  11728.                                                                             {
  11729.                                                                                 rectangle.X = 162;
  11730.                                                                                 rectangle.Y = 18;
  11731.                                                                             }
  11732.                                                                             if (num9 == 2)
  11733.                                                                             {
  11734.                                                                                 rectangle.X = 162;
  11735.                                                                                 rectangle.Y = 36;
  11736.                                                                             }
  11737.                                                                         }
  11738.                                                                         else
  11739.                                                                         {
  11740.                                                                             if (num2 != wall && num7 != wall && (num4 == wall & num5 != wall))
  11741.                                                                             {
  11742.                                                                                 if (num9 == 0)
  11743.                                                                                 {
  11744.                                                                                     rectangle.X = 216;
  11745.                                                                                     rectangle.Y = 0;
  11746.                                                                                 }
  11747.                                                                                 if (num9 == 1)
  11748.                                                                                 {
  11749.                                                                                     rectangle.X = 216;
  11750.                                                                                     rectangle.Y = 18;
  11751.                                                                                 }
  11752.                                                                                 if (num9 == 2)
  11753.                                                                                 {
  11754.                                                                                     rectangle.X = 216;
  11755.                                                                                     rectangle.Y = 36;
  11756.                                                                                 }
  11757.                                                                             }
  11758.                                                                             else
  11759.                                                                             {
  11760.                                                                                 if (num2 != wall && num7 != wall && (num4 != wall & num5 != wall))
  11761.                                                                                 {
  11762.                                                                                     if (num9 == 0)
  11763.                                                                                     {
  11764.                                                                                         rectangle.X = 162;
  11765.                                                                                         rectangle.Y = 54;
  11766.                                                                                     }
  11767.                                                                                     if (num9 == 1)
  11768.                                                                                     {
  11769.                                                                                         rectangle.X = 180;
  11770.                                                                                         rectangle.Y = 54;
  11771.                                                                                     }
  11772.                                                                                     if (num9 == 2)
  11773.                                                                                     {
  11774.                                                                                         rectangle.X = 198;
  11775.                                                                                         rectangle.Y = 54;
  11776.                                                                                     }
  11777.                                                                                 }
  11778.                                                                             }
  11779.                                                                         }
  11780.                                                                     }
  11781.                                                                 }
  11782.                                                             }
  11783.                                                         }
  11784.                                                     }
  11785.                                                 }
  11786.                                             }
  11787.                                         }
  11788.                                     }
  11789.                                 }
  11790.                             }
  11791.                         }
  11792.                     }
  11793.                 }
  11794.                 if (rectangle.X <= -1 || rectangle.Y <= -1)
  11795.                 {
  11796.                     if (num9 <= 0)
  11797.                     {
  11798.                         rectangle.X = 18;
  11799.                         rectangle.Y = 18;
  11800.                     }
  11801.                     if (num9 == 1)
  11802.                     {
  11803.                         rectangle.X = 36;
  11804.                         rectangle.Y = 18;
  11805.                     }
  11806.                     if (num9 >= 2)
  11807.                     {
  11808.                         rectangle.X = 54;
  11809.                         rectangle.Y = 18;
  11810.                     }
  11811.                 }
  11812.                 Main.tile[i, j].wallFrameX = (byte)rectangle.X;
  11813.                 Main.tile[i, j].wallFrameY = (byte)rectangle.Y;
  11814.             }
  11815.         }
  11816.         public static void TileFrame(int i, int j, bool resetFrame = false, bool noBreak = false)
  11817.         {
  11818.             if (i >= 0 && j >= 0 && i < Main.maxTilesX && j < Main.maxTilesY && Main.tile[i, j] != null)
  11819.             {
  11820.                 if (Main.tile[i, j].liquid > 0 && Main.netMode != 1 && !WorldGen.noLiquidCheck)
  11821.                 {
  11822.                     Liquid.AddWater(i, j);
  11823.                 }
  11824.                 if (Main.tile[i, j].active)
  11825.                 {
  11826.                     if (noBreak && Main.tileFrameImportant[(int)Main.tile[i, j].type])
  11827.                     {
  11828.                         return;
  11829.                     }
  11830.                     int num = -1;
  11831.                     int num2 = -1;
  11832.                     int num3 = -1;
  11833.                     int num4 = -1;
  11834.                     int num5 = -1;
  11835.                     int num6 = -1;
  11836.                     int num7 = -1;
  11837.                     int num8 = -1;
  11838.                     int num9 = (int)Main.tile[i, j].type;
  11839.                     if (Main.tileStone[num9])
  11840.                     {
  11841.                         num9 = 1;
  11842.                     }
  11843.                     int frameX = (int)Main.tile[i, j].frameX;
  11844.                     int frameY = (int)Main.tile[i, j].frameY;
  11845.                     Rectangle rectangle;
  11846.                     rectangle.X = -1;
  11847.                     rectangle.Y = -1;
  11848.                     if (num9 == 3 || num9 == 24 || num9 == 61 || num9 == 71 || num9 == 73 || num9 == 74)
  11849.                     {
  11850.                         WorldGen.PlantCheck(i, j);
  11851.                         return;
  11852.                     }
  11853.                     WorldGen.mergeUp = false;
  11854.                     WorldGen.mergeDown = false;
  11855.                     WorldGen.mergeLeft = false;
  11856.                     WorldGen.mergeRight = false;
  11857.                     if (i - 1 < 0)
  11858.                     {
  11859.                         num = num9;
  11860.                         num4 = num9;
  11861.                         num6 = num9;
  11862.                     }
  11863.                     if (i + 1 >= Main.maxTilesX)
  11864.                     {
  11865.                         num3 = num9;
  11866.                         num5 = num9;
  11867.                         num8 = num9;
  11868.                     }
  11869.                     if (j - 1 < 0)
  11870.                     {
  11871.                         num = num9;
  11872.                         num2 = num9;
  11873.                         num3 = num9;
  11874.                     }
  11875.                     if (j + 1 >= Main.maxTilesY)
  11876.                     {
  11877.                         num6 = num9;
  11878.                         num7 = num9;
  11879.                         num8 = num9;
  11880.                     }
  11881.                     if (i - 1 >= 0 && Main.tile[i - 1, j] != null && Main.tile[i - 1, j].active)
  11882.                     {
  11883.                         num4 = (int)Main.tile[i - 1, j].type;
  11884.                     }
  11885.                     if (i + 1 < Main.maxTilesX && Main.tile[i + 1, j] != null && Main.tile[i + 1, j].active)
  11886.                     {
  11887.                         num5 = (int)Main.tile[i + 1, j].type;
  11888.                     }
  11889.                     if (j - 1 >= 0 && Main.tile[i, j - 1] != null && Main.tile[i, j - 1].active)
  11890.                     {
  11891.                         num2 = (int)Main.tile[i, j - 1].type;
  11892.                     }
  11893.                     if (j + 1 < Main.maxTilesY && Main.tile[i, j + 1] != null && Main.tile[i, j + 1].active)
  11894.                     {
  11895.                         num7 = (int)Main.tile[i, j + 1].type;
  11896.                     }
  11897.                     if (i - 1 >= 0 && j - 1 >= 0 && Main.tile[i - 1, j - 1] != null && Main.tile[i - 1, j - 1].active)
  11898.                     {
  11899.                         num = (int)Main.tile[i - 1, j - 1].type;
  11900.                     }
  11901.                     if (i + 1 < Main.maxTilesX && j - 1 >= 0 && Main.tile[i + 1, j - 1] != null && Main.tile[i + 1, j - 1].active)
  11902.                     {
  11903.                         num3 = (int)Main.tile[i + 1, j - 1].type;
  11904.                     }
  11905.                     if (i - 1 >= 0 && j + 1 < Main.maxTilesY && Main.tile[i - 1, j + 1] != null && Main.tile[i - 1, j + 1].active)
  11906.                     {
  11907.                         num6 = (int)Main.tile[i - 1, j + 1].type;
  11908.                     }
  11909.                     if (i + 1 < Main.maxTilesX && j + 1 < Main.maxTilesY && Main.tile[i + 1, j + 1] != null && Main.tile[i + 1, j + 1].active)
  11910.                     {
  11911.                         num8 = (int)Main.tile[i + 1, j + 1].type;
  11912.                     }
  11913.                     if (num4 >= 0 && Main.tileStone[num4])
  11914.                     {
  11915.                         num4 = 1;
  11916.                     }
  11917.                     if (num5 >= 0 && Main.tileStone[num5])
  11918.                     {
  11919.                         num5 = 1;
  11920.                     }
  11921.                     if (num2 >= 0 && Main.tileStone[num2])
  11922.                     {
  11923.                         num2 = 1;
  11924.                     }
  11925.                     if (num7 >= 0 && Main.tileStone[num7])
  11926.                     {
  11927.                         num7 = 1;
  11928.                     }
  11929.                     if (num >= 0 && Main.tileStone[num])
  11930.                     {
  11931.                         num = 1;
  11932.                     }
  11933.                     if (num3 >= 0 && Main.tileStone[num3])
  11934.                     {
  11935.                         num3 = 1;
  11936.                     }
  11937.                     if (num6 >= 0 && Main.tileStone[num6])
  11938.                     {
  11939.                         num6 = 1;
  11940.                     }
  11941.                     if (num8 >= 0 && Main.tileStone[num8])
  11942.                     {
  11943.                         num8 = 1;
  11944.                     }
  11945.                     if (num9 == 4)
  11946.                     {
  11947.                         if (num7 >= 0 && Main.tileSolid[num7] && !Main.tileNoAttach[num7])
  11948.                         {
  11949.                             Main.tile[i, j].frameX = 0;
  11950.                             return;
  11951.                         }
  11952.                         if ((num4 >= 0 && Main.tileSolid[num4] && !Main.tileNoAttach[num4]) || (num4 == 5 && num == 5 && num6 == 5))
  11953.                         {
  11954.                             Main.tile[i, j].frameX = 22;
  11955.                             return;
  11956.                         }
  11957.                         if ((num5 >= 0 && Main.tileSolid[num5] && !Main.tileNoAttach[num5]) || (num5 == 5 && num3 == 5 && num8 == 5))
  11958.                         {
  11959.                             Main.tile[i, j].frameX = 44;
  11960.                             return;
  11961.                         }
  11962.                         WorldGen.KillTile(i, j, false, false, false);
  11963.                         return;
  11964.                     }
  11965.                     else
  11966.                     {
  11967.                         if (num9 == 12 || num9 == 31)
  11968.                         {
  11969.                             if (!WorldGen.destroyObject)
  11970.                             {
  11971.                                 int num10 = i;
  11972.                                 int num11 = j;
  11973.                                 if (Main.tile[i, j].frameX == 0)
  11974.                                 {
  11975.                                     num10 = i;
  11976.                                 }
  11977.                                 else
  11978.                                 {
  11979.                                     num10 = i - 1;
  11980.                                 }
  11981.                                 if (Main.tile[i, j].frameY == 0)
  11982.                                 {
  11983.                                     num11 = j;
  11984.                                 }
  11985.                                 else
  11986.                                 {
  11987.                                     num11 = j - 1;
  11988.                                 }
  11989.                                 if (Main.tile[num10, num11] != null && Main.tile[num10 + 1, num11] != null && Main.tile[num10, num11 + 1] != null && Main.tile[num10 + 1, num11 + 1] != null && (!Main.tile[num10, num11].active || (int)Main.tile[num10, num11].type != num9 || !Main.tile[num10 + 1, num11].active || (int)Main.tile[num10 + 1, num11].type != num9 || !Main.tile[num10, num11 + 1].active || (int)Main.tile[num10, num11 + 1].type != num9 || !Main.tile[num10 + 1, num11 + 1].active || (int)Main.tile[num10 + 1, num11 + 1].type != num9))
  11990.                                 {
  11991.                                     WorldGen.destroyObject = true;
  11992.                                     if ((int)Main.tile[num10, num11].type == num9)
  11993.                                     {
  11994.                                         WorldGen.KillTile(num10, num11, false, false, false);
  11995.                                     }
  11996.                                     if ((int)Main.tile[num10 + 1, num11].type == num9)
  11997.                                     {
  11998.                                         WorldGen.KillTile(num10 + 1, num11, false, false, false);
  11999.                                     }
  12000.                                     if ((int)Main.tile[num10, num11 + 1].type == num9)
  12001.                                     {
  12002.                                         WorldGen.KillTile(num10, num11 + 1, false, false, false);
  12003.                                     }
  12004.                                     if ((int)Main.tile[num10 + 1, num11 + 1].type == num9)
  12005.                                     {
  12006.                                         WorldGen.KillTile(num10 + 1, num11 + 1, false, false, false);
  12007.                                     }
  12008.                                     if (num9 == 12)
  12009.                                     {
  12010.                                         Item.NewItem(num10 * 16, num11 * 16, 32, 32, 29, 1, false);
  12011.                                     }
  12012.                                     else
  12013.                                     {
  12014.                                         if (num9 == 31)
  12015.                                         {
  12016.                                             if (WorldGen.genRand.Next(2) == 0)
  12017.                                             {
  12018.                                                 WorldGen.spawnMeteor = true;
  12019.                                             }
  12020.                                             int num12 = Main.rand.Next(5);
  12021.                                             if (!WorldGen.shadowOrbSmashed)
  12022.                                             {
  12023.                                                 num12 = 0;
  12024.                                             }
  12025.                                             if (num12 == 0)
  12026.                                             {
  12027.                                                 Item.NewItem(num10 * 16, num11 * 16, 32, 32, 96, 1, false);
  12028.                                                 int stack = WorldGen.genRand.Next(25, 51);
  12029.                                                 Item.NewItem(num10 * 16, num11 * 16, 32, 32, 97, stack, false);
  12030.                                             }
  12031.                                             else
  12032.                                             {
  12033.                                                 if (num12 == 1)
  12034.                                                 {
  12035.                                                     Item.NewItem(num10 * 16, num11 * 16, 32, 32, 64, 1, false);
  12036.                                                 }
  12037.                                                 else
  12038.                                                 {
  12039.                                                     if (num12 == 2)
  12040.                                                     {
  12041.                                                         Item.NewItem(num10 * 16, num11 * 16, 32, 32, 162, 1, false);
  12042.                                                     }
  12043.                                                     else
  12044.                                                     {
  12045.                                                         if (num12 == 3)
  12046.                                                         {
  12047.                                                             Item.NewItem(num10 * 16, num11 * 16, 32, 32, 115, 1, false);
  12048.                                                         }
  12049.                                                         else
  12050.                                                         {
  12051.                                                             if (num12 == 4)
  12052.                                                             {
  12053.                                                                 Item.NewItem(num10 * 16, num11 * 16, 32, 32, 111, 1, false);
  12054.                                                             }
  12055.                                                         }
  12056.                                                     }
  12057.                                                 }
  12058.                                             }
  12059.                                             WorldGen.shadowOrbSmashed = true;
  12060.                                             WorldGen.shadowOrbCount++;
  12061.                                             if (WorldGen.shadowOrbCount >= 3)
  12062.                                             {
  12063.                                                 WorldGen.shadowOrbCount = 0;
  12064.                                                 float num13 = (float)(num10 * 16);
  12065.                                                 float num14 = (float)(num11 * 16);
  12066.                                                 float num15 = -1f;
  12067.                                                 int plr = 0;
  12068.                                                 for (int k = 0; k < 8; k++)
  12069.                                                 {
  12070.                                                     float num16 = Math.Abs(Main.player[k].position.X - num13) + Math.Abs(Main.player[k].position.Y - num14);
  12071.                                                     if (num16 < num15 || num15 == -1f)
  12072.                                                     {
  12073.                                                         plr = 0;
  12074.                                                         num15 = num16;
  12075.                                                     }
  12076.                                                 }
  12077.                                                 NPC.SpawnOnPlayer(plr, 13);
  12078.                                             }
  12079.                                             else
  12080.                                             {
  12081.                                                 string text = "A horrible chill goes down your spine...";
  12082.                                                 if (WorldGen.shadowOrbCount == 2)
  12083.                                                 {
  12084.                                                     text = "Screams echo around you...";
  12085.                                                 }
  12086.                                                 if (Main.netMode == 0)
  12087.                                                 {
  12088.                                                     Main.NewText(text, 50, 255, 130);
  12089.                                                 }
  12090.                                                 else
  12091.                                                 {
  12092.                                                     if (Main.netMode == 2)
  12093.                                                     {
  12094.                                                         NetMessage.SendData(25, -1, -1, text, 8, 50f, 255f, 130f);
  12095.                                                     }
  12096.                                                 }
  12097.                                             }
  12098.                                         }
  12099.                                     }
  12100.                                     Main.PlaySound(13, i * 16, j * 16, 1);
  12101.                                     WorldGen.destroyObject = false;
  12102.                                 }
  12103.                             }
  12104.                             return;
  12105.                         }
  12106.                         if (num9 == 19)
  12107.                         {
  12108.                             if (num4 == num9 && num5 == num9)
  12109.                             {
  12110.                                 if (Main.tile[i, j].frameNumber == 0)
  12111.                                 {
  12112.                                     rectangle.X = 0;
  12113.                                     rectangle.Y = 0;
  12114.                                 }
  12115.                                 if (Main.tile[i, j].frameNumber == 1)
  12116.                                 {
  12117.                                     rectangle.X = 0;
  12118.                                     rectangle.Y = 18;
  12119.                                 }
  12120.                                 if (Main.tile[i, j].frameNumber == 2)
  12121.                                 {
  12122.                                     rectangle.X = 0;
  12123.                                     rectangle.Y = 36;
  12124.                                 }
  12125.                             }
  12126.                             else
  12127.                             {
  12128.                                 if (num4 == num9 && num5 == -1)
  12129.                                 {
  12130.                                     if (Main.tile[i, j].frameNumber == 0)
  12131.                                     {
  12132.                                         rectangle.X = 18;
  12133.                                         rectangle.Y = 0;
  12134.                                     }
  12135.                                     if (Main.tile[i, j].frameNumber == 1)
  12136.                                     {
  12137.                                         rectangle.X = 18;
  12138.                                         rectangle.Y = 18;
  12139.                                     }
  12140.                                     if (Main.tile[i, j].frameNumber == 2)
  12141.                                     {
  12142.                                         rectangle.X = 18;
  12143.                                         rectangle.Y = 36;
  12144.                                     }
  12145.                                 }
  12146.                                 else
  12147.                                 {
  12148.                                     if (num4 == -1 && num5 == num9)
  12149.                                     {
  12150.                                         if (Main.tile[i, j].frameNumber == 0)
  12151.                                         {
  12152.                                             rectangle.X = 36;
  12153.                                             rectangle.Y = 0;
  12154.                                         }
  12155.                                         if (Main.tile[i, j].frameNumber == 1)
  12156.                                         {
  12157.                                             rectangle.X = 36;
  12158.                                             rectangle.Y = 18;
  12159.                                         }
  12160.                                         if (Main.tile[i, j].frameNumber == 2)
  12161.                                         {
  12162.                                             rectangle.X = 36;
  12163.                                             rectangle.Y = 36;
  12164.                                         }
  12165.                                     }
  12166.                                     else
  12167.                                     {
  12168.                                         if (num4 != num9 && num5 == num9)
  12169.                                         {
  12170.                                             if (Main.tile[i, j].frameNumber == 0)
  12171.                                             {
  12172.                                                 rectangle.X = 54;
  12173.                                                 rectangle.Y = 0;
  12174.                                             }
  12175.                                             if (Main.tile[i, j].frameNumber == 1)
  12176.                                             {
  12177.                                                 rectangle.X = 54;
  12178.                                                 rectangle.Y = 18;
  12179.                                             }
  12180.                                             if (Main.tile[i, j].frameNumber == 2)
  12181.                                             {
  12182.                                                 rectangle.X = 54;
  12183.                                                 rectangle.Y = 36;
  12184.                                             }
  12185.                                         }
  12186.                                         else
  12187.                                         {
  12188.                                             if (num4 == num9 && num5 != num9)
  12189.                                             {
  12190.                                                 if (Main.tile[i, j].frameNumber == 0)
  12191.                                                 {
  12192.                                                     rectangle.X = 72;
  12193.                                                     rectangle.Y = 0;
  12194.                                                 }
  12195.                                                 if (Main.tile[i, j].frameNumber == 1)
  12196.                                                 {
  12197.                                                     rectangle.X = 72;
  12198.                                                     rectangle.Y = 18;
  12199.                                                 }
  12200.                                                 if (Main.tile[i, j].frameNumber == 2)
  12201.                                                 {
  12202.                                                     rectangle.X = 72;
  12203.                                                     rectangle.Y = 36;
  12204.                                                 }
  12205.                                             }
  12206.                                             else
  12207.                                             {
  12208.                                                 if (num4 != num9 && num4 != -1 && num5 == -1)
  12209.                                                 {
  12210.                                                     if (Main.tile[i, j].frameNumber == 0)
  12211.                                                     {
  12212.                                                         rectangle.X = 108;
  12213.                                                         rectangle.Y = 0;
  12214.                                                     }
  12215.                                                     if (Main.tile[i, j].frameNumber == 1)
  12216.                                                     {
  12217.                                                         rectangle.X = 108;
  12218.                                                         rectangle.Y = 18;
  12219.                                                     }
  12220.                                                     if (Main.tile[i, j].frameNumber == 2)
  12221.                                                     {
  12222.                                                         rectangle.X = 108;
  12223.                                                         rectangle.Y = 36;
  12224.                                                     }
  12225.                                                 }
  12226.                                                 else
  12227.                                                 {
  12228.                                                     if (num4 == -1 && num5 != num9 && num5 != -1)
  12229.                                                     {
  12230.                                                         if (Main.tile[i, j].frameNumber == 0)
  12231.                                                         {
  12232.                                                             rectangle.X = 126;
  12233.                                                             rectangle.Y = 0;
  12234.                                                         }
  12235.                                                         if (Main.tile[i, j].frameNumber == 1)
  12236.                                                         {
  12237.                                                             rectangle.X = 126;
  12238.                                                             rectangle.Y = 18;
  12239.                                                         }
  12240.                                                         if (Main.tile[i, j].frameNumber == 2)
  12241.                                                         {
  12242.                                                             rectangle.X = 126;
  12243.                                                             rectangle.Y = 36;
  12244.                                                         }
  12245.                                                     }
  12246.                                                     else
  12247.                                                     {
  12248.                                                         if (Main.tile[i, j].frameNumber == 0)
  12249.                                                         {
  12250.                                                             rectangle.X = 90;
  12251.                                                             rectangle.Y = 0;
  12252.                                                         }
  12253.                                                         if (Main.tile[i, j].frameNumber == 1)
  12254.                                                         {
  12255.                                                             rectangle.X = 90;
  12256.                                                             rectangle.Y = 18;
  12257.                                                         }
  12258.                                                         if (Main.tile[i, j].frameNumber == 2)
  12259.                                                         {
  12260.                                                             rectangle.X = 90;
  12261.                                                             rectangle.Y = 36;
  12262.                                                         }
  12263.                                                     }
  12264.                                                 }
  12265.                                             }
  12266.                                         }
  12267.                                     }
  12268.                                 }
  12269.                             }
  12270.                         }
  12271.                         else
  12272.                         {
  12273.                             if (num9 == 10)
  12274.                             {
  12275.                                 if (!WorldGen.destroyObject)
  12276.                                 {
  12277.                                     int frameY2 = (int)Main.tile[i, j].frameY;
  12278.                                     int num17 = j;
  12279.                                     bool flag = false;
  12280.                                     if (frameY2 == 0)
  12281.                                     {
  12282.                                         num17 = j;
  12283.                                     }
  12284.                                     if (frameY2 == 18)
  12285.                                     {
  12286.                                         num17 = j - 1;
  12287.                                     }
  12288.                                     if (frameY2 == 36)
  12289.                                     {
  12290.                                         num17 = j - 2;
  12291.                                     }
  12292.                                     if (Main.tile[i, num17 - 1] == null)
  12293.                                     {
  12294.                                         Main.tile[i, num17 - 1] = new Tile();
  12295.                                     }
  12296.                                     if (Main.tile[i, num17 + 3] == null)
  12297.                                     {
  12298.                                         Main.tile[i, num17 + 3] = new Tile();
  12299.                                     }
  12300.                                     if (Main.tile[i, num17 + 2] == null)
  12301.                                     {
  12302.                                         Main.tile[i, num17 + 2] = new Tile();
  12303.                                     }
  12304.                                     if (Main.tile[i, num17 + 1] == null)
  12305.                                     {
  12306.                                         Main.tile[i, num17 + 1] = new Tile();
  12307.                                     }
  12308.                                     if (Main.tile[i, num17] == null)
  12309.                                     {
  12310.                                         Main.tile[i, num17] = new Tile();
  12311.                                     }
  12312.                                     if (!Main.tile[i, num17 - 1].active || !Main.tileSolid[(int)Main.tile[i, num17 - 1].type])
  12313.                                     {
  12314.                                         flag = true;
  12315.                                     }
  12316.                                     if (!Main.tile[i, num17 + 3].active || !Main.tileSolid[(int)Main.tile[i, num17 + 3].type])
  12317.                                     {
  12318.                                         flag = true;
  12319.                                     }
  12320.                                     if (!Main.tile[i, num17].active || (int)Main.tile[i, num17].type != num9)
  12321.                                     {
  12322.                                         flag = true;
  12323.                                     }
  12324.                                     if (!Main.tile[i, num17 + 1].active || (int)Main.tile[i, num17 + 1].type != num9)
  12325.                                     {
  12326.                                         flag = true;
  12327.                                     }
  12328.                                     if (!Main.tile[i, num17 + 2].active || (int)Main.tile[i, num17 + 2].type != num9)
  12329.                                     {
  12330.                                         flag = true;
  12331.                                     }
  12332.                                     if (flag)
  12333.                                     {
  12334.                                         WorldGen.destroyObject = true;
  12335.                                         WorldGen.KillTile(i, num17, false, false, false);
  12336.                                         WorldGen.KillTile(i, num17 + 1, false, false, false);
  12337.                                         WorldGen.KillTile(i, num17 + 2, false, false, false);
  12338.                                         Item.NewItem(i * 16, j * 16, 16, 16, 25, 1, false);
  12339.                                     }
  12340.                                     WorldGen.destroyObject = false;
  12341.                                 }
  12342.                                 return;
  12343.                             }
  12344.                             if (num9 == 11)
  12345.                             {
  12346.                                 if (!WorldGen.destroyObject)
  12347.                                 {
  12348.                                     int num18 = 0;
  12349.                                     int num19 = i;
  12350.                                     int num20 = j;
  12351.                                     int frameX2 = (int)Main.tile[i, j].frameX;
  12352.                                     int frameY3 = (int)Main.tile[i, j].frameY;
  12353.                                     bool flag2 = false;
  12354.                                     if (frameX2 == 0)
  12355.                                     {
  12356.                                         num19 = i;
  12357.                                         num18 = 1;
  12358.                                     }
  12359.                                     else
  12360.                                     {
  12361.                                         if (frameX2 == 18)
  12362.                                         {
  12363.                                             num19 = i - 1;
  12364.                                             num18 = 1;
  12365.                                         }
  12366.                                         else
  12367.                                         {
  12368.                                             if (frameX2 == 36)
  12369.                                             {
  12370.                                                 num19 = i + 1;
  12371.                                                 num18 = -1;
  12372.                                             }
  12373.                                             else
  12374.                                             {
  12375.                                                 if (frameX2 == 54)
  12376.                                                 {
  12377.                                                     num19 = i;
  12378.                                                     num18 = -1;
  12379.                                                 }
  12380.                                             }
  12381.                                         }
  12382.                                     }
  12383.                                     if (frameY3 == 0)
  12384.                                     {
  12385.                                         num20 = j;
  12386.                                     }
  12387.                                     else
  12388.                                     {
  12389.                                         if (frameY3 == 18)
  12390.                                         {
  12391.                                             num20 = j - 1;
  12392.                                         }
  12393.                                         else
  12394.                                         {
  12395.                                             if (frameY3 == 36)
  12396.                                             {
  12397.                                                 num20 = j - 2;
  12398.                                             }
  12399.                                         }
  12400.                                     }
  12401.                                     if (Main.tile[num19, num20 + 3] == null)
  12402.                                     {
  12403.                                         Main.tile[num19, num20 + 3] = new Tile();
  12404.                                     }
  12405.                                     if (Main.tile[num19, num20 - 1] == null)
  12406.                                     {
  12407.                                         Main.tile[num19, num20 - 1] = new Tile();
  12408.                                     }
  12409.                                     if (!Main.tile[num19, num20 - 1].active || !Main.tileSolid[(int)Main.tile[num19, num20 - 1].type] || !Main.tile[num19, num20 + 3].active || !Main.tileSolid[(int)Main.tile[num19, num20 + 3].type])
  12410.                                     {
  12411.                                         flag2 = true;
  12412.                                         WorldGen.destroyObject = true;
  12413.                                         Item.NewItem(i * 16, j * 16, 16, 16, 25, 1, false);
  12414.                                     }
  12415.                                     int num21 = num19;
  12416.                                     if (num18 == -1)
  12417.                                     {
  12418.                                         num21 = num19 - 1;
  12419.                                     }
  12420.                                     for (int l = num21; l < num21 + 2; l++)
  12421.                                     {
  12422.                                         for (int m = num20; m < num20 + 3; m++)
  12423.                                         {
  12424.                                             if (!flag2 && (Main.tile[l, m].type != 11 || !Main.tile[l, m].active))
  12425.                                             {
  12426.                                                 WorldGen.destroyObject = true;
  12427.                                                 Item.NewItem(i * 16, j * 16, 16, 16, 25, 1, false);
  12428.                                                 flag2 = true;
  12429.                                                 l = num21;
  12430.                                                 m = num20;
  12431.                                             }
  12432.                                             if (flag2)
  12433.                                             {
  12434.                                                 WorldGen.KillTile(l, m, false, false, false);
  12435.                                             }
  12436.                                         }
  12437.                                     }
  12438.                                     WorldGen.destroyObject = false;
  12439.                                 }
  12440.                                 return;
  12441.                             }
  12442.                             if (num9 == 34 || num9 == 35 || num9 == 36)
  12443.                             {
  12444.                                 WorldGen.Check3x3(i, j, (int)((byte)num9));
  12445.                                 return;
  12446.                             }
  12447.                             if (num9 == 15 || num9 == 20)
  12448.                             {
  12449.                                 WorldGen.Check1x2(i, j, (byte)num9);
  12450.                                 return;
  12451.                             }
  12452.                             if (num9 == 14 || num9 == 17 || num9 == 26 || num9 == 77)
  12453.                             {
  12454.                                 WorldGen.Check3x2(i, j, (int)((byte)num9));
  12455.                                 return;
  12456.                             }
  12457.                             if (num9 == 16 || num9 == 18 || num9 == 29)
  12458.                             {
  12459.                                 WorldGen.Check2x1(i, j, (byte)num9);
  12460.                                 return;
  12461.                             }
  12462.                             if (num9 == 13 || num9 == 33 || num9 == 49 || num9 == 50 || num9 == 78)
  12463.                             {
  12464.                                 WorldGen.CheckOnTable1x1(i, j, (int)((byte)num9));
  12465.                                 return;
  12466.                             }
  12467.                             if (num9 == 21)
  12468.                             {
  12469.                                 WorldGen.CheckChest(i, j, (int)((byte)num9));
  12470.                                 return;
  12471.                             }
  12472.                             if (num9 == 27)
  12473.                             {
  12474.                                 WorldGen.CheckSunflower(i, j, 27);
  12475.                                 return;
  12476.                             }
  12477.                             if (num9 == 28)
  12478.                             {
  12479.                                 WorldGen.CheckPot(i, j, 28);
  12480.                                 return;
  12481.                             }
  12482.                             if (num9 == 42)
  12483.                             {
  12484.                                 WorldGen.Check1x2Top(i, j, (byte)num9);
  12485.                                 return;
  12486.                             }
  12487.                             if (num9 == 55)
  12488.                             {
  12489.                                 WorldGen.CheckSign(i, j, num9);
  12490.                                 return;
  12491.                             }
  12492.                             if (num9 == 79)
  12493.                             {
  12494.                                 WorldGen.Check4x2(i, j, num9);
  12495.                                 return;
  12496.                             }
  12497.                         }
  12498.                         if (num9 == 72)
  12499.                         {
  12500.                             if (num7 != num9 && num7 != 70)
  12501.                             {
  12502.                                 WorldGen.KillTile(i, j, false, false, false);
  12503.                             }
  12504.                             else
  12505.                             {
  12506.                                 if (num2 != num9 && Main.tile[i, j].frameX == 0)
  12507.                                 {
  12508.                                     Main.tile[i, j].frameNumber = (byte)WorldGen.genRand.Next(3);
  12509.                                     if (Main.tile[i, j].frameNumber == 0)
  12510.                                     {
  12511.                                         Main.tile[i, j].frameX = 18;
  12512.                                         Main.tile[i, j].frameY = 0;
  12513.                                     }
  12514.                                     if (Main.tile[i, j].frameNumber == 1)
  12515.                                     {
  12516.                                         Main.tile[i, j].frameX = 18;
  12517.                                         Main.tile[i, j].frameY = 18;
  12518.                                     }
  12519.                                     if (Main.tile[i, j].frameNumber == 2)
  12520.                                     {
  12521.                                         Main.tile[i, j].frameX = 18;
  12522.                                         Main.tile[i, j].frameY = 36;
  12523.                                     }
  12524.                                 }
  12525.                             }
  12526.                         }
  12527.                         if (num9 == 5)
  12528.                         {
  12529.                             if (Main.tile[i, j].frameX >= 22 && Main.tile[i, j].frameX <= 44 && Main.tile[i, j].frameY >= 132 && Main.tile[i, j].frameY <= 176)
  12530.                             {
  12531.                                 if ((num4 != num9 && num5 != num9) || num7 != 2)
  12532.                                 {
  12533.                                     WorldGen.KillTile(i, j, false, false, false);
  12534.                                 }
  12535.                             }
  12536.                             else
  12537.                             {
  12538.                                 if ((Main.tile[i, j].frameX == 88 && Main.tile[i, j].frameY >= 0 && Main.tile[i, j].frameY <= 44) || (Main.tile[i, j].frameX == 66 && Main.tile[i, j].frameY >= 66 && Main.tile[i, j].frameY <= 130) || (Main.tile[i, j].frameX == 110 && Main.tile[i, j].frameY >= 66 && Main.tile[i, j].frameY <= 110) || (Main.tile[i, j].frameX == 132 && Main.tile[i, j].frameY >= 0 && Main.tile[i, j].frameY <= 176))
  12539.                                 {
  12540.                                     if (num4 == num9 && num5 == num9)
  12541.                                     {
  12542.                                         if (Main.tile[i, j].frameNumber == 0)
  12543.                                         {
  12544.                                             Main.tile[i, j].frameX = 110;
  12545.                                             Main.tile[i, j].frameY = 66;
  12546.                                         }
  12547.                                         if (Main.tile[i, j].frameNumber == 1)
  12548.                                         {
  12549.                                             Main.tile[i, j].frameX = 110;
  12550.                                             Main.tile[i, j].frameY = 88;
  12551.                                         }
  12552.                                         if (Main.tile[i, j].frameNumber == 2)
  12553.                                         {
  12554.                                             Main.tile[i, j].frameX = 110;
  12555.                                             Main.tile[i, j].frameY = 110;
  12556.                                         }
  12557.                                     }
  12558.                                     else
  12559.                                     {
  12560.                                         if (num4 == num9)
  12561.                                         {
  12562.                                             if (Main.tile[i, j].frameNumber == 0)
  12563.                                             {
  12564.                                                 Main.tile[i, j].frameX = 88;
  12565.                                                 Main.tile[i, j].frameY = 0;
  12566.                                             }
  12567.                                             if (Main.tile[i, j].frameNumber == 1)
  12568.                                             {
  12569.                                                 Main.tile[i, j].frameX = 88;
  12570.                                                 Main.tile[i, j].frameY = 22;
  12571.                                             }
  12572.                                             if (Main.tile[i, j].frameNumber == 2)
  12573.                                             {
  12574.                                                 Main.tile[i, j].frameX = 88;
  12575.                                                 Main.tile[i, j].frameY = 44;
  12576.                                             }
  12577.                                         }
  12578.                                         else
  12579.                                         {
  12580.                                             if (num5 == num9)
  12581.                                             {
  12582.                                                 if (Main.tile[i, j].frameNumber == 0)
  12583.                                                 {
  12584.                                                     Main.tile[i, j].frameX = 66;
  12585.                                                     Main.tile[i, j].frameY = 66;
  12586.                                                 }
  12587.                                                 if (Main.tile[i, j].frameNumber == 1)
  12588.                                                 {
  12589.                                                     Main.tile[i, j].frameX = 66;
  12590.                                                     Main.tile[i, j].frameY = 88;
  12591.                                                 }
  12592.                                                 if (Main.tile[i, j].frameNumber == 2)
  12593.                                                 {
  12594.                                                     Main.tile[i, j].frameX = 66;
  12595.                                                     Main.tile[i, j].frameY = 110;
  12596.                                                 }
  12597.                                             }
  12598.                                             else
  12599.                                             {
  12600.                                                 if (Main.tile[i, j].frameNumber == 0)
  12601.                                                 {
  12602.                                                     Main.tile[i, j].frameX = 0;
  12603.                                                     Main.tile[i, j].frameY = 0;
  12604.                                                 }
  12605.                                                 if (Main.tile[i, j].frameNumber == 1)
  12606.                                                 {
  12607.                                                     Main.tile[i, j].frameX = 0;
  12608.                                                     Main.tile[i, j].frameY = 22;
  12609.                                                 }
  12610.                                                 if (Main.tile[i, j].frameNumber == 2)
  12611.                                                 {
  12612.                                                     Main.tile[i, j].frameX = 0;
  12613.                                                     Main.tile[i, j].frameY = 44;
  12614.                                                 }
  12615.                                             }
  12616.                                         }
  12617.                                     }
  12618.                                 }
  12619.                             }
  12620.                             if (Main.tile[i, j].frameY >= 132 && Main.tile[i, j].frameY <= 176 && (Main.tile[i, j].frameX == 0 || Main.tile[i, j].frameX == 66 || Main.tile[i, j].frameX == 88))
  12621.                             {
  12622.                                 if (num7 != 2)
  12623.                                 {
  12624.                                     WorldGen.KillTile(i, j, false, false, false);
  12625.                                 }
  12626.                                 if (num4 != num9 && num5 != num9)
  12627.                                 {
  12628.                                     if (Main.tile[i, j].frameNumber == 0)
  12629.                                     {
  12630.                                         Main.tile[i, j].frameX = 0;
  12631.                                         Main.tile[i, j].frameY = 0;
  12632.                                     }
  12633.                                     if (Main.tile[i, j].frameNumber == 1)
  12634.                                     {
  12635.                                         Main.tile[i, j].frameX = 0;
  12636.                                         Main.tile[i, j].frameY = 22;
  12637.                                     }
  12638.                                     if (Main.tile[i, j].frameNumber == 2)
  12639.                                     {
  12640.                                         Main.tile[i, j].frameX = 0;
  12641.                                         Main.tile[i, j].frameY = 44;
  12642.                                     }
  12643.                                 }
  12644.                                 else
  12645.                                 {
  12646.                                     if (num4 != num9)
  12647.                                     {
  12648.                                         if (Main.tile[i, j].frameNumber == 0)
  12649.                                         {
  12650.                                             Main.tile[i, j].frameX = 0;
  12651.                                             Main.tile[i, j].frameY = 132;
  12652.                                         }
  12653.                                         if (Main.tile[i, j].frameNumber == 1)
  12654.                                         {
  12655.                                             Main.tile[i, j].frameX = 0;
  12656.                                             Main.tile[i, j].frameY = 154;
  12657.                                         }
  12658.                                         if (Main.tile[i, j].frameNumber == 2)
  12659.                                         {
  12660.                                             Main.tile[i, j].frameX = 0;
  12661.                                             Main.tile[i, j].frameY = 176;
  12662.                                         }
  12663.                                     }
  12664.                                     else
  12665.                                     {
  12666.                                         if (num5 != num9)
  12667.                                         {
  12668.                                             if (Main.tile[i, j].frameNumber == 0)
  12669.                                             {
  12670.                                                 Main.tile[i, j].frameX = 66;
  12671.                                                 Main.tile[i, j].frameY = 132;
  12672.                                             }
  12673.                                             if (Main.tile[i, j].frameNumber == 1)
  12674.                                             {
  12675.                                                 Main.tile[i, j].frameX = 66;
  12676.                                                 Main.tile[i, j].frameY = 154;
  12677.                                             }
  12678.                                             if (Main.tile[i, j].frameNumber == 2)
  12679.                                             {
  12680.                                                 Main.tile[i, j].frameX = 66;
  12681.                                                 Main.tile[i, j].frameY = 176;
  12682.                                             }
  12683.                                         }
  12684.                                         else
  12685.                                         {
  12686.                                             if (Main.tile[i, j].frameNumber == 0)
  12687.                                             {
  12688.                                                 Main.tile[i, j].frameX = 88;
  12689.                                                 Main.tile[i, j].frameY = 132;
  12690.                                             }
  12691.                                             if (Main.tile[i, j].frameNumber == 1)
  12692.                                             {
  12693.                                                 Main.tile[i, j].frameX = 88;
  12694.                                                 Main.tile[i, j].frameY = 154;
  12695.                                             }
  12696.                                             if (Main.tile[i, j].frameNumber == 2)
  12697.                                             {
  12698.                                                 Main.tile[i, j].frameX = 88;
  12699.                                                 Main.tile[i, j].frameY = 176;
  12700.                                             }
  12701.                                         }
  12702.                                     }
  12703.                                 }
  12704.                             }
  12705.                             if ((Main.tile[i, j].frameX == 66 && (Main.tile[i, j].frameY == 0 || Main.tile[i, j].frameY == 22 || Main.tile[i, j].frameY == 44)) || (Main.tile[i, j].frameX == 88 && (Main.tile[i, j].frameY == 66 || Main.tile[i, j].frameY == 88 || Main.tile[i, j].frameY == 110)) || (Main.tile[i, j].frameX == 44 && (Main.tile[i, j].frameY == 198 || Main.tile[i, j].frameY == 220 || Main.tile[i, j].frameY == 242)) || (Main.tile[i, j].frameX == 66 && (Main.tile[i, j].frameY == 198 || Main.tile[i, j].frameY == 220 || Main.tile[i, j].frameY == 242)))
  12706.                             {
  12707.                                 if (num4 != num9 && num5 != num9)
  12708.                                 {
  12709.                                     WorldGen.KillTile(i, j, false, false, false);
  12710.                                 }
  12711.                             }
  12712.                             else
  12713.                             {
  12714.                                 if (num7 == -1 || num7 == 23)
  12715.                                 {
  12716.                                     WorldGen.KillTile(i, j, false, false, false);
  12717.                                 }
  12718.                                 else
  12719.                                 {
  12720.                                     if (num2 != num9 && Main.tile[i, j].frameY < 198 && ((Main.tile[i, j].frameX != 22 && Main.tile[i, j].frameX != 44) || Main.tile[i, j].frameY < 132))
  12721.                                     {
  12722.                                         if (num4 == num9 || num5 == num9)
  12723.                                         {
  12724.                                             if (num7 == num9)
  12725.                                             {
  12726.                                                 if (num4 == num9 && num5 == num9)
  12727.                                                 {
  12728.                                                     if (Main.tile[i, j].frameNumber == 0)
  12729.                                                     {
  12730.                                                         Main.tile[i, j].frameX = 132;
  12731.                                                         Main.tile[i, j].frameY = 132;
  12732.                                                     }
  12733.                                                     if (Main.tile[i, j].frameNumber == 1)
  12734.                                                     {
  12735.                                                         Main.tile[i, j].frameX = 132;
  12736.                                                         Main.tile[i, j].frameY = 154;
  12737.                                                     }
  12738.                                                     if (Main.tile[i, j].frameNumber == 2)
  12739.                                                     {
  12740.                                                         Main.tile[i, j].frameX = 132;
  12741.                                                         Main.tile[i, j].frameY = 176;
  12742.                                                     }
  12743.                                                 }
  12744.                                                 else
  12745.                                                 {
  12746.                                                     if (num4 == num9)
  12747.                                                     {
  12748.                                                         if (Main.tile[i, j].frameNumber == 0)
  12749.                                                         {
  12750.                                                             Main.tile[i, j].frameX = 132;
  12751.                                                             Main.tile[i, j].frameY = 0;
  12752.                                                         }
  12753.                                                         if (Main.tile[i, j].frameNumber == 1)
  12754.                                                         {
  12755.                                                             Main.tile[i, j].frameX = 132;
  12756.                                                             Main.tile[i, j].frameY = 22;
  12757.                                                         }
  12758.                                                         if (Main.tile[i, j].frameNumber == 2)
  12759.                                                         {
  12760.                                                             Main.tile[i, j].frameX = 132;
  12761.                                                             Main.tile[i, j].frameY = 44;
  12762.                                                         }
  12763.                                                     }
  12764.                                                     else
  12765.                                                     {
  12766.                                                         if (num5 == num9)
  12767.                                                         {
  12768.                                                             if (Main.tile[i, j].frameNumber == 0)
  12769.                                                             {
  12770.                                                                 Main.tile[i, j].frameX = 132;
  12771.                                                                 Main.tile[i, j].frameY = 66;
  12772.                                                             }
  12773.                                                             if (Main.tile[i, j].frameNumber == 1)
  12774.                                                             {
  12775.                                                                 Main.tile[i, j].frameX = 132;
  12776.                                                                 Main.tile[i, j].frameY = 88;
  12777.                                                             }
  12778.                                                             if (Main.tile[i, j].frameNumber == 2)
  12779.                                                             {
  12780.                                                                 Main.tile[i, j].frameX = 132;
  12781.                                                                 Main.tile[i, j].frameY = 110;
  12782.                                                             }
  12783.                                                         }
  12784.                                                     }
  12785.                                                 }
  12786.                                             }
  12787.                                             else
  12788.                                             {
  12789.                                                 if (num4 == num9 && num5 == num9)
  12790.                                                 {
  12791.                                                     if (Main.tile[i, j].frameNumber == 0)
  12792.                                                     {
  12793.                                                         Main.tile[i, j].frameX = 154;
  12794.                                                         Main.tile[i, j].frameY = 132;
  12795.                                                     }
  12796.                                                     if (Main.tile[i, j].frameNumber == 1)
  12797.                                                     {
  12798.                                                         Main.tile[i, j].frameX = 154;
  12799.                                                         Main.tile[i, j].frameY = 154;
  12800.                                                     }
  12801.                                                     if (Main.tile[i, j].frameNumber == 2)
  12802.                                                     {
  12803.                                                         Main.tile[i, j].frameX = 154;
  12804.                                                         Main.tile[i, j].frameY = 176;
  12805.                                                     }
  12806.                                                 }
  12807.                                                 else
  12808.                                                 {
  12809.                                                     if (num4 == num9)
  12810.                                                     {
  12811.                                                         if (Main.tile[i, j].frameNumber == 0)
  12812.                                                         {
  12813.                                                             Main.tile[i, j].frameX = 154;
  12814.                                                             Main.tile[i, j].frameY = 0;
  12815.                                                         }
  12816.                                                         if (Main.tile[i, j].frameNumber == 1)
  12817.                                                         {
  12818.                                                             Main.tile[i, j].frameX = 154;
  12819.                                                             Main.tile[i, j].frameY = 22;
  12820.                                                         }
  12821.                                                         if (Main.tile[i, j].frameNumber == 2)
  12822.                                                         {
  12823.                                                             Main.tile[i, j].frameX = 154;
  12824.                                                             Main.tile[i, j].frameY = 44;
  12825.                                                         }
  12826.                                                     }
  12827.                                                     else
  12828.                                                     {
  12829.                                                         if (num5 == num9)
  12830.                                                         {
  12831.                                                             if (Main.tile[i, j].frameNumber == 0)
  12832.                                                             {
  12833.                                                                 Main.tile[i, j].frameX = 154;
  12834.                                                                 Main.tile[i, j].frameY = 66;
  12835.                                                             }
  12836.                                                             if (Main.tile[i, j].frameNumber == 1)
  12837.                                                             {
  12838.                                                                 Main.tile[i, j].frameX = 154;
  12839.                                                                 Main.tile[i, j].frameY = 88;
  12840.                                                             }
  12841.                                                             if (Main.tile[i, j].frameNumber == 2)
  12842.                                                             {
  12843.                                                                 Main.tile[i, j].frameX = 154;
  12844.                                                                 Main.tile[i, j].frameY = 110;
  12845.                                                             }
  12846.                                                         }
  12847.                                                     }
  12848.                                                 }
  12849.                                             }
  12850.                                         }
  12851.                                         else
  12852.                                         {
  12853.                                             if (Main.tile[i, j].frameNumber == 0)
  12854.                                             {
  12855.                                                 Main.tile[i, j].frameX = 110;
  12856.                                                 Main.tile[i, j].frameY = 0;
  12857.                                             }
  12858.                                             if (Main.tile[i, j].frameNumber == 1)
  12859.                                             {
  12860.                                                 Main.tile[i, j].frameX = 110;
  12861.                                                 Main.tile[i, j].frameY = 22;
  12862.                                             }
  12863.                                             if (Main.tile[i, j].frameNumber == 2)
  12864.                                             {
  12865.                                                 Main.tile[i, j].frameX = 110;
  12866.                                                 Main.tile[i, j].frameY = 44;
  12867.                                             }
  12868.                                         }
  12869.                                     }
  12870.                                 }
  12871.                             }
  12872.                             rectangle.X = (int)Main.tile[i, j].frameX;
  12873.                             rectangle.Y = (int)Main.tile[i, j].frameY;
  12874.                         }
  12875.                         if (Main.tileFrameImportant[(int)Main.tile[i, j].type])
  12876.                         {
  12877.                             return;
  12878.                         }
  12879.                         int num22 = 0;
  12880.                         if (resetFrame)
  12881.                         {
  12882.                             num22 = WorldGen.genRand.Next(0, 3);
  12883.                             Main.tile[i, j].frameNumber = (byte)num22;
  12884.                         }
  12885.                         else
  12886.                         {
  12887.                             num22 = (int)Main.tile[i, j].frameNumber;
  12888.                         }
  12889.                         if (num9 == 0)
  12890.                         {
  12891.                             for (int n = 0; n < 80; n++)
  12892.                             {
  12893.                                 if (n == 1 || n == 6 || n == 7 || n == 8 || n == 9 || n == 22 || n == 25 || n == 37 || n == 40 || n == 53 || n == 56)
  12894.                                 {
  12895.                                     if (num2 == n)
  12896.                                     {
  12897.                                         WorldGen.TileFrame(i, j - 1, false, false);
  12898.                                         if (WorldGen.mergeDown)
  12899.                                         {
  12900.                                             num2 = num9;
  12901.                                         }
  12902.                                     }
  12903.                                     if (num7 == n)
  12904.                                     {
  12905.                                         WorldGen.TileFrame(i, j + 1, false, false);
  12906.                                         if (WorldGen.mergeUp)
  12907.                                         {
  12908.                                             num7 = num9;
  12909.                                         }
  12910.                                     }
  12911.                                     if (num4 == n)
  12912.                                     {
  12913.                                         WorldGen.TileFrame(i - 1, j, false, false);
  12914.                                         if (WorldGen.mergeRight)
  12915.                                         {
  12916.                                             num4 = num9;
  12917.                                         }
  12918.                                     }
  12919.                                     if (num5 == n)
  12920.                                     {
  12921.                                         WorldGen.TileFrame(i + 1, j, false, false);
  12922.                                         if (WorldGen.mergeLeft)
  12923.                                         {
  12924.                                             num5 = num9;
  12925.                                         }
  12926.                                     }
  12927.                                     if (num == n)
  12928.                                     {
  12929.                                         num = num9;
  12930.                                     }
  12931.                                     if (num3 == n)
  12932.                                     {
  12933.                                         num3 = num9;
  12934.                                     }
  12935.                                     if (num6 == n)
  12936.                                     {
  12937.                                         num6 = num9;
  12938.                                     }
  12939.                                     if (num8 == n)
  12940.                                     {
  12941.                                         num8 = num9;
  12942.                                     }
  12943.                                 }
  12944.                             }
  12945.                             if (num2 == 2)
  12946.                             {
  12947.                                 num2 = num9;
  12948.                             }
  12949.                             if (num7 == 2)
  12950.                             {
  12951.                                 num7 = num9;
  12952.                             }
  12953.                             if (num4 == 2)
  12954.                             {
  12955.                                 num4 = num9;
  12956.                             }
  12957.                             if (num5 == 2)
  12958.                             {
  12959.                                 num5 = num9;
  12960.                             }
  12961.                             if (num == 2)
  12962.                             {
  12963.                                 num = num9;
  12964.                             }
  12965.                             if (num3 == 2)
  12966.                             {
  12967.                                 num3 = num9;
  12968.                             }
  12969.                             if (num6 == 2)
  12970.                             {
  12971.                                 num6 = num9;
  12972.                             }
  12973.                             if (num8 == 2)
  12974.                             {
  12975.                                 num8 = num9;
  12976.                             }
  12977.                             if (num2 == 23)
  12978.                             {
  12979.                                 num2 = num9;
  12980.                             }
  12981.                             if (num7 == 23)
  12982.                             {
  12983.                                 num7 = num9;
  12984.                             }
  12985.                             if (num4 == 23)
  12986.                             {
  12987.                                 num4 = num9;
  12988.                             }
  12989.                             if (num5 == 23)
  12990.                             {
  12991.                                 num5 = num9;
  12992.                             }
  12993.                             if (num == 23)
  12994.                             {
  12995.                                 num = num9;
  12996.                             }
  12997.                             if (num3 == 23)
  12998.                             {
  12999.                                 num3 = num9;
  13000.                             }
  13001.                             if (num6 == 23)
  13002.                             {
  13003.                                 num6 = num9;
  13004.                             }
  13005.                             if (num8 == 23)
  13006.                             {
  13007.                                 num8 = num9;
  13008.                             }
  13009.                         }
  13010.                         else
  13011.                         {
  13012.                             if (num9 == 57)
  13013.                             {
  13014.                                 if (num2 == 58)
  13015.                                 {
  13016.                                     WorldGen.TileFrame(i, j - 1, false, false);
  13017.                                     if (WorldGen.mergeDown)
  13018.                                     {
  13019.                                         num2 = num9;
  13020.                                     }
  13021.                                 }
  13022.                                 if (num7 == 58)
  13023.                                 {
  13024.                                     WorldGen.TileFrame(i, j + 1, false, false);
  13025.                                     if (WorldGen.mergeUp)
  13026.                                     {
  13027.                                         num7 = num9;
  13028.                                     }
  13029.                                 }
  13030.                                 if (num4 == 58)
  13031.                                 {
  13032.                                     WorldGen.TileFrame(i - 1, j, false, false);
  13033.                                     if (WorldGen.mergeRight)
  13034.                                     {
  13035.                                         num4 = num9;
  13036.                                     }
  13037.                                 }
  13038.                                 if (num5 == 58)
  13039.                                 {
  13040.                                     WorldGen.TileFrame(i + 1, j, false, false);
  13041.                                     if (WorldGen.mergeLeft)
  13042.                                     {
  13043.                                         num5 = num9;
  13044.                                     }
  13045.                                 }
  13046.                                 if (num == 58)
  13047.                                 {
  13048.                                     num = num9;
  13049.                                 }
  13050.                                 if (num3 == 58)
  13051.                                 {
  13052.                                     num3 = num9;
  13053.                                 }
  13054.                                 if (num6 == 58)
  13055.                                 {
  13056.                                     num6 = num9;
  13057.                                 }
  13058.                                 if (num8 == 58)
  13059.                                 {
  13060.                                     num8 = num9;
  13061.                                 }
  13062.                             }
  13063.                             else
  13064.                             {
  13065.                                 if (num9 == 59)
  13066.                                 {
  13067.                                     if (num2 == 60)
  13068.                                     {
  13069.                                         num2 = num9;
  13070.                                     }
  13071.                                     if (num7 == 60)
  13072.                                     {
  13073.                                         num7 = num9;
  13074.                                     }
  13075.                                     if (num4 == 60)
  13076.                                     {
  13077.                                         num4 = num9;
  13078.                                     }
  13079.                                     if (num5 == 60)
  13080.                                     {
  13081.                                         num5 = num9;
  13082.                                     }
  13083.                                     if (num == 60)
  13084.                                     {
  13085.                                         num = num9;
  13086.                                     }
  13087.                                     if (num3 == 60)
  13088.                                     {
  13089.                                         num3 = num9;
  13090.                                     }
  13091.                                     if (num6 == 60)
  13092.                                     {
  13093.                                         num6 = num9;
  13094.                                     }
  13095.                                     if (num8 == 60)
  13096.                                     {
  13097.                                         num8 = num9;
  13098.                                     }
  13099.                                     if (num2 == 70)
  13100.                                     {
  13101.                                         num2 = num9;
  13102.                                     }
  13103.                                     if (num7 == 70)
  13104.                                     {
  13105.                                         num7 = num9;
  13106.                                     }
  13107.                                     if (num4 == 70)
  13108.                                     {
  13109.                                         num4 = num9;
  13110.                                     }
  13111.                                     if (num5 == 70)
  13112.                                     {
  13113.                                         num5 = num9;
  13114.                                     }
  13115.                                     if (num == 70)
  13116.                                     {
  13117.                                         num = num9;
  13118.                                     }
  13119.                                     if (num3 == 70)
  13120.                                     {
  13121.                                         num3 = num9;
  13122.                                     }
  13123.                                     if (num6 == 70)
  13124.                                     {
  13125.                                         num6 = num9;
  13126.                                     }
  13127.                                     if (num8 == 70)
  13128.                                     {
  13129.                                         num8 = num9;
  13130.                                     }
  13131.                                 }
  13132.                                 else
  13133.                                 {
  13134.                                     if (num9 == 1)
  13135.                                     {
  13136.                                         if (num2 == 59)
  13137.                                         {
  13138.                                             WorldGen.TileFrame(i, j - 1, false, false);
  13139.                                             if (WorldGen.mergeDown)
  13140.                                             {
  13141.                                                 num2 = num9;
  13142.                                             }
  13143.                                         }
  13144.                                         if (num7 == 59)
  13145.                                         {
  13146.                                             WorldGen.TileFrame(i, j + 1, false, false);
  13147.                                             if (WorldGen.mergeUp)
  13148.                                             {
  13149.                                                 num7 = num9;
  13150.                                             }
  13151.                                         }
  13152.                                         if (num4 == 59)
  13153.                                         {
  13154.                                             WorldGen.TileFrame(i - 1, j, false, false);
  13155.                                             if (WorldGen.mergeRight)
  13156.                                             {
  13157.                                                 num4 = num9;
  13158.                                             }
  13159.                                         }
  13160.                                         if (num5 == 59)
  13161.                                         {
  13162.                                             WorldGen.TileFrame(i + 1, j, false, false);
  13163.                                             if (WorldGen.mergeLeft)
  13164.                                             {
  13165.                                                 num5 = num9;
  13166.                                             }
  13167.                                         }
  13168.                                         if (num == 59)
  13169.                                         {
  13170.                                             num = num9;
  13171.                                         }
  13172.                                         if (num3 == 59)
  13173.                                         {
  13174.                                             num3 = num9;
  13175.                                         }
  13176.                                         if (num6 == 59)
  13177.                                         {
  13178.                                             num6 = num9;
  13179.                                         }
  13180.                                         if (num8 == 59)
  13181.                                         {
  13182.                                             num8 = num9;
  13183.                                         }
  13184.                                     }
  13185.                                 }
  13186.                             }
  13187.                         }
  13188.                         if (num9 == 1 || num9 == 6 || num9 == 7 || num9 == 8 || num9 == 9 || num9 == 22 || num9 == 25 || num9 == 37 || num9 == 40 || num9 == 53 || num9 == 56)
  13189.                         {
  13190.                             for (int num23 = 0; num23 < 80; num23++)
  13191.                             {
  13192.                                 if (num23 == 1 || num23 == 6 || num23 == 7 || num23 == 8 || num23 == 9 || num23 == 22 || num23 == 25 || num23 == 37 || num23 == 40 || num23 == 53 || num23 == 56)
  13193.                                 {
  13194.                                     if (num2 == 0)
  13195.                                     {
  13196.                                         num2 = -2;
  13197.                                     }
  13198.                                     if (num7 == 0)
  13199.                                     {
  13200.                                         num7 = -2;
  13201.                                     }
  13202.                                     if (num4 == 0)
  13203.                                     {
  13204.                                         num4 = -2;
  13205.                                     }
  13206.                                     if (num5 == 0)
  13207.                                     {
  13208.                                         num5 = -2;
  13209.                                     }
  13210.                                     if (num == 0)
  13211.                                     {
  13212.                                         num = -2;
  13213.                                     }
  13214.                                     if (num3 == 0)
  13215.                                     {
  13216.                                         num3 = -2;
  13217.                                     }
  13218.                                     if (num6 == 0)
  13219.                                     {
  13220.                                         num6 = -2;
  13221.                                     }
  13222.                                     if (num8 == 0)
  13223.                                     {
  13224.                                         num8 = -2;
  13225.                                     }
  13226.                                 }
  13227.                             }
  13228.                         }
  13229.                         else
  13230.                         {
  13231.                             if (num9 == 58)
  13232.                             {
  13233.                                 if (num2 == 57)
  13234.                                 {
  13235.                                     num2 = -2;
  13236.                                 }
  13237.                                 if (num7 == 57)
  13238.                                 {
  13239.                                     num7 = -2;
  13240.                                 }
  13241.                                 if (num4 == 57)
  13242.                                 {
  13243.                                     num4 = -2;
  13244.                                 }
  13245.                                 if (num5 == 57)
  13246.                                 {
  13247.                                     num5 = -2;
  13248.                                 }
  13249.                                 if (num == 57)
  13250.                                 {
  13251.                                     num = -2;
  13252.                                 }
  13253.                                 if (num3 == 57)
  13254.                                 {
  13255.                                     num3 = -2;
  13256.                                 }
  13257.                                 if (num6 == 57)
  13258.                                 {
  13259.                                     num6 = -2;
  13260.                                 }
  13261.                                 if (num8 == 57)
  13262.                                 {
  13263.                                     num8 = -2;
  13264.                                 }
  13265.                             }
  13266.                             else
  13267.                             {
  13268.                                 if (num9 == 59)
  13269.                                 {
  13270.                                     if (num2 == 1)
  13271.                                     {
  13272.                                         num2 = -2;
  13273.                                     }
  13274.                                     if (num7 == 1)
  13275.                                     {
  13276.                                         num7 = -2;
  13277.                                     }
  13278.                                     if (num4 == 1)
  13279.                                     {
  13280.                                         num4 = -2;
  13281.                                     }
  13282.                                     if (num5 == 1)
  13283.                                     {
  13284.                                         num5 = -2;
  13285.                                     }
  13286.                                     if (num == 1)
  13287.                                     {
  13288.                                         num = -2;
  13289.                                     }
  13290.                                     if (num3 == 1)
  13291.                                     {
  13292.                                         num3 = -2;
  13293.                                     }
  13294.                                     if (num6 == 1)
  13295.                                     {
  13296.                                         num6 = -2;
  13297.                                     }
  13298.                                     if (num8 == 1)
  13299.                                     {
  13300.                                         num8 = -2;
  13301.                                     }
  13302.                                 }
  13303.                             }
  13304.                         }
  13305.                         if (num9 == 32 && num7 == 23)
  13306.                         {
  13307.                             num7 = num9;
  13308.                         }
  13309.                         if (num9 == 69 && num7 == 60)
  13310.                         {
  13311.                             num7 = num9;
  13312.                         }
  13313.                         if (num9 == 51)
  13314.                         {
  13315.                             if (num2 > -1 && !Main.tileNoAttach[num2])
  13316.                             {
  13317.                                 num2 = num9;
  13318.                             }
  13319.                             if (num7 > -1 && !Main.tileNoAttach[num7])
  13320.                             {
  13321.                                 num7 = num9;
  13322.                             }
  13323.                             if (num4 > -1 && !Main.tileNoAttach[num4])
  13324.                             {
  13325.                                 num4 = num9;
  13326.                             }
  13327.                             if (num5 > -1 && !Main.tileNoAttach[num5])
  13328.                             {
  13329.                                 num5 = num9;
  13330.                             }
  13331.                             if (num > -1 && !Main.tileNoAttach[num])
  13332.                             {
  13333.                                 num = num9;
  13334.                             }
  13335.                             if (num3 > -1 && !Main.tileNoAttach[num3])
  13336.                             {
  13337.                                 num3 = num9;
  13338.                             }
  13339.                             if (num6 > -1 && !Main.tileNoAttach[num6])
  13340.                             {
  13341.                                 num6 = num9;
  13342.                             }
  13343.                             if (num8 > -1 && !Main.tileNoAttach[num8])
  13344.                             {
  13345.                                 num8 = num9;
  13346.                             }
  13347.                         }
  13348.                         if (num2 > -1 && !Main.tileSolid[num2] && num2 != num9)
  13349.                         {
  13350.                             num2 = -1;
  13351.                         }
  13352.                         if (num7 > -1 && !Main.tileSolid[num7] && num7 != num9)
  13353.                         {
  13354.                             num7 = -1;
  13355.                         }
  13356.                         if (num4 > -1 && !Main.tileSolid[num4] && num4 != num9)
  13357.                         {
  13358.                             num4 = -1;
  13359.                         }
  13360.                         if (num5 > -1 && !Main.tileSolid[num5] && num5 != num9)
  13361.                         {
  13362.                             num5 = -1;
  13363.                         }
  13364.                         if (num > -1 && !Main.tileSolid[num] && num != num9)
  13365.                         {
  13366.                             num = -1;
  13367.                         }
  13368.                         if (num3 > -1 && !Main.tileSolid[num3] && num3 != num9)
  13369.                         {
  13370.                             num3 = -1;
  13371.                         }
  13372.                         if (num6 > -1 && !Main.tileSolid[num6] && num6 != num9)
  13373.                         {
  13374.                             num6 = -1;
  13375.                         }
  13376.                         if (num8 > -1 && !Main.tileSolid[num8] && num8 != num9)
  13377.                         {
  13378.                             num8 = -1;
  13379.                         }
  13380.                         if (num9 == 2 || num9 == 23 || num9 == 60 || num9 == 70)
  13381.                         {
  13382.                             int num24 = 0;
  13383.                             if (num9 == 60 || num9 == 70)
  13384.                             {
  13385.                                 num24 = 59;
  13386.                             }
  13387.                             else
  13388.                             {
  13389.                                 if (num9 == 2)
  13390.                                 {
  13391.                                     if (num2 == 23)
  13392.                                     {
  13393.                                         num2 = num24;
  13394.                                     }
  13395.                                     if (num7 == 23)
  13396.                                     {
  13397.                                         num7 = num24;
  13398.                                     }
  13399.                                     if (num4 == 23)
  13400.                                     {
  13401.                                         num4 = num24;
  13402.                                     }
  13403.                                     if (num5 == 23)
  13404.                                     {
  13405.                                         num5 = num24;
  13406.                                     }
  13407.                                     if (num == 23)
  13408.                                     {
  13409.                                         num = num24;
  13410.                                     }
  13411.                                     if (num3 == 23)
  13412.                                     {
  13413.                                         num3 = num24;
  13414.                                     }
  13415.                                     if (num6 == 23)
  13416.                                     {
  13417.                                         num6 = num24;
  13418.                                     }
  13419.                                     if (num8 == 23)
  13420.                                     {
  13421.                                         num8 = num24;
  13422.                                     }
  13423.                                 }
  13424.                                 else
  13425.                                 {
  13426.                                     if (num9 == 23)
  13427.                                     {
  13428.                                         if (num2 == 2)
  13429.                                         {
  13430.                                             num2 = num24;
  13431.                                         }
  13432.                                         if (num7 == 2)
  13433.                                         {
  13434.                                             num7 = num24;
  13435.                                         }
  13436.                                         if (num4 == 2)
  13437.                                         {
  13438.                                             num4 = num24;
  13439.                                         }
  13440.                                         if (num5 == 2)
  13441.                                         {
  13442.                                             num5 = num24;
  13443.                                         }
  13444.                                         if (num == 2)
  13445.                                         {
  13446.                                             num = num24;
  13447.                                         }
  13448.                                         if (num3 == 2)
  13449.                                         {
  13450.                                             num3 = num24;
  13451.                                         }
  13452.                                         if (num6 == 2)
  13453.                                         {
  13454.                                             num6 = num24;
  13455.                                         }
  13456.                                         if (num8 == 2)
  13457.                                         {
  13458.                                             num8 = num24;
  13459.                                         }
  13460.                                     }
  13461.                                 }
  13462.                             }
  13463.                             if (num2 != num9 && num2 != num24 && (num7 == num9 || num7 == num24))
  13464.                             {
  13465.                                 if (num4 == num24 && num5 == num9)
  13466.                                 {
  13467.                                     if (num22 == 0)
  13468.                                     {
  13469.                                         rectangle.X = 0;
  13470.                                         rectangle.Y = 198;
  13471.                                     }
  13472.                                     if (num22 == 1)
  13473.                                     {
  13474.                                         rectangle.X = 18;
  13475.                                         rectangle.Y = 198;
  13476.                                     }
  13477.                                     if (num22 == 2)
  13478.                                     {
  13479.                                         rectangle.X = 36;
  13480.                                         rectangle.Y = 198;
  13481.                                     }
  13482.                                 }
  13483.                                 else
  13484.                                 {
  13485.                                     if (num4 == num9 && num5 == num24)
  13486.                                     {
  13487.                                         if (num22 == 0)
  13488.                                         {
  13489.                                             rectangle.X = 54;
  13490.                                             rectangle.Y = 198;
  13491.                                         }
  13492.                                         if (num22 == 1)
  13493.                                         {
  13494.                                             rectangle.X = 72;
  13495.                                             rectangle.Y = 198;
  13496.                                         }
  13497.                                         if (num22 == 2)
  13498.                                         {
  13499.                                             rectangle.X = 90;
  13500.                                             rectangle.Y = 198;
  13501.                                         }
  13502.                                     }
  13503.                                 }
  13504.                             }
  13505.                             else
  13506.                             {
  13507.                                 if (num7 != num9 && num7 != num24 && (num2 == num9 || num2 == num24))
  13508.                                 {
  13509.                                     if (num4 == num24 && num5 == num9)
  13510.                                     {
  13511.                                         if (num22 == 0)
  13512.                                         {
  13513.                                             rectangle.X = 0;
  13514.                                             rectangle.Y = 216;
  13515.                                         }
  13516.                                         if (num22 == 1)
  13517.                                         {
  13518.                                             rectangle.X = 18;
  13519.                                             rectangle.Y = 216;
  13520.                                         }
  13521.                                         if (num22 == 2)
  13522.                                         {
  13523.                                             rectangle.X = 36;
  13524.                                             rectangle.Y = 216;
  13525.                                         }
  13526.                                     }
  13527.                                     else
  13528.                                     {
  13529.                                         if (num4 == num9 && num5 == num24)
  13530.                                         {
  13531.                                             if (num22 == 0)
  13532.                                             {
  13533.                                                 rectangle.X = 54;
  13534.                                                 rectangle.Y = 216;
  13535.                                             }
  13536.                                             if (num22 == 1)
  13537.                                             {
  13538.                                                 rectangle.X = 72;
  13539.                                                 rectangle.Y = 216;
  13540.                                             }
  13541.                                             if (num22 == 2)
  13542.                                             {
  13543.                                                 rectangle.X = 90;
  13544.                                                 rectangle.Y = 216;
  13545.                                             }
  13546.                                         }
  13547.                                     }
  13548.                                 }
  13549.                                 else
  13550.                                 {
  13551.                                     if (num4 != num9 && num4 != num24 && (num5 == num9 || num5 == num24))
  13552.                                     {
  13553.                                         if (num2 == num24 && num7 == num9)
  13554.                                         {
  13555.                                             if (num22 == 0)
  13556.                                             {
  13557.                                                 rectangle.X = 72;
  13558.                                                 rectangle.Y = 144;
  13559.                                             }
  13560.                                             if (num22 == 1)
  13561.                                             {
  13562.                                                 rectangle.X = 72;
  13563.                                                 rectangle.Y = 162;
  13564.                                             }
  13565.                                             if (num22 == 2)
  13566.                                             {
  13567.                                                 rectangle.X = 72;
  13568.                                                 rectangle.Y = 180;
  13569.                                             }
  13570.                                         }
  13571.                                         else
  13572.                                         {
  13573.                                             if (num7 == num9 && num5 == num2)
  13574.                                             {
  13575.                                                 if (num22 == 0)
  13576.                                                 {
  13577.                                                     rectangle.X = 72;
  13578.                                                     rectangle.Y = 90;
  13579.                                                 }
  13580.                                                 if (num22 == 1)
  13581.                                                 {
  13582.                                                     rectangle.X = 72;
  13583.                                                     rectangle.Y = 108;
  13584.                                                 }
  13585.                                                 if (num22 == 2)
  13586.                                                 {
  13587.                                                     rectangle.X = 72;
  13588.                                                     rectangle.Y = 126;
  13589.                                                 }
  13590.                                             }
  13591.                                         }
  13592.                                     }
  13593.                                     else
  13594.                                     {
  13595.                                         if (num5 != num9 && num5 != num24 && (num4 == num9 || num4 == num24))
  13596.                                         {
  13597.                                             if (num2 == num24 && num7 == num9)
  13598.                                             {
  13599.                                                 if (num22 == 0)
  13600.                                                 {
  13601.                                                     rectangle.X = 90;
  13602.                                                     rectangle.Y = 144;
  13603.                                                 }
  13604.                                                 if (num22 == 1)
  13605.                                                 {
  13606.                                                     rectangle.X = 90;
  13607.                                                     rectangle.Y = 162;
  13608.                                                 }
  13609.                                                 if (num22 == 2)
  13610.                                                 {
  13611.                                                     rectangle.X = 90;
  13612.                                                     rectangle.Y = 180;
  13613.                                                 }
  13614.                                             }
  13615.                                             else
  13616.                                             {
  13617.                                                 if (num7 == num9 && num5 == num2)
  13618.                                                 {
  13619.                                                     if (num22 == 0)
  13620.                                                     {
  13621.                                                         rectangle.X = 90;
  13622.                                                         rectangle.Y = 90;
  13623.                                                     }
  13624.                                                     if (num22 == 1)
  13625.                                                     {
  13626.                                                         rectangle.X = 90;
  13627.                                                         rectangle.Y = 108;
  13628.                                                     }
  13629.                                                     if (num22 == 2)
  13630.                                                     {
  13631.                                                         rectangle.X = 90;
  13632.                                                         rectangle.Y = 126;
  13633.                                                     }
  13634.                                                 }
  13635.                                             }
  13636.                                         }
  13637.                                         else
  13638.                                         {
  13639.                                             if (num2 == num9 && num7 == num9 && num4 == num9 && num5 == num9)
  13640.                                             {
  13641.                                                 if (num != num9 && num3 != num9 && num6 != num9 && num8 != num9)
  13642.                                                 {
  13643.                                                     if (num8 == num24)
  13644.                                                     {
  13645.                                                         if (num22 == 0)
  13646.                                                         {
  13647.                                                             rectangle.X = 108;
  13648.                                                             rectangle.Y = 324;
  13649.                                                         }
  13650.                                                         if (num22 == 1)
  13651.                                                         {
  13652.                                                             rectangle.X = 126;
  13653.                                                             rectangle.Y = 324;
  13654.                                                         }
  13655.                                                         if (num22 == 2)
  13656.                                                         {
  13657.                                                             rectangle.X = 144;
  13658.                                                             rectangle.Y = 324;
  13659.                                                         }
  13660.                                                     }
  13661.                                                     else
  13662.                                                     {
  13663.                                                         if (num3 == num24)
  13664.                                                         {
  13665.                                                             if (num22 == 0)
  13666.                                                             {
  13667.                                                                 rectangle.X = 108;
  13668.                                                                 rectangle.Y = 342;
  13669.                                                             }
  13670.                                                             if (num22 == 1)
  13671.                                                             {
  13672.                                                                 rectangle.X = 126;
  13673.                                                                 rectangle.Y = 342;
  13674.                                                             }
  13675.                                                             if (num22 == 2)
  13676.                                                             {
  13677.                                                                 rectangle.X = 144;
  13678.                                                                 rectangle.Y = 342;
  13679.                                                             }
  13680.                                                         }
  13681.                                                         else
  13682.                                                         {
  13683.                                                             if (num6 == num24)
  13684.                                                             {
  13685.                                                                 if (num22 == 0)
  13686.                                                                 {
  13687.                                                                     rectangle.X = 108;
  13688.                                                                     rectangle.Y = 360;
  13689.                                                                 }
  13690.                                                                 if (num22 == 1)
  13691.                                                                 {
  13692.                                                                     rectangle.X = 126;
  13693.                                                                     rectangle.Y = 360;
  13694.                                                                 }
  13695.                                                                 if (num22 == 2)
  13696.                                                                 {
  13697.                                                                     rectangle.X = 144;
  13698.                                                                     rectangle.Y = 360;
  13699.                                                                 }
  13700.                                                             }
  13701.                                                             else
  13702.                                                             {
  13703.                                                                 if (num == num24)
  13704.                                                                 {
  13705.                                                                     if (num22 == 0)
  13706.                                                                     {
  13707.                                                                         rectangle.X = 108;
  13708.                                                                         rectangle.Y = 378;
  13709.                                                                     }
  13710.                                                                     if (num22 == 1)
  13711.                                                                     {
  13712.                                                                         rectangle.X = 126;
  13713.                                                                         rectangle.Y = 378;
  13714.                                                                     }
  13715.                                                                     if (num22 == 2)
  13716.                                                                     {
  13717.                                                                         rectangle.X = 144;
  13718.                                                                         rectangle.Y = 378;
  13719.                                                                     }
  13720.                                                                 }
  13721.                                                                 else
  13722.                                                                 {
  13723.                                                                     if (num22 == 0)
  13724.                                                                     {
  13725.                                                                         rectangle.X = 144;
  13726.                                                                         rectangle.Y = 234;
  13727.                                                                     }
  13728.                                                                     if (num22 == 1)
  13729.                                                                     {
  13730.                                                                         rectangle.X = 198;
  13731.                                                                         rectangle.Y = 234;
  13732.                                                                     }
  13733.                                                                     if (num22 == 2)
  13734.                                                                     {
  13735.                                                                         rectangle.X = 252;
  13736.                                                                         rectangle.Y = 234;
  13737.                                                                     }
  13738.                                                                 }
  13739.                                                             }
  13740.                                                         }
  13741.                                                     }
  13742.                                                 }
  13743.                                                 else
  13744.                                                 {
  13745.                                                     if (num != num9 && num8 != num9)
  13746.                                                     {
  13747.                                                         if (num22 == 0)
  13748.                                                         {
  13749.                                                             rectangle.X = 36;
  13750.                                                             rectangle.Y = 306;
  13751.                                                         }
  13752.                                                         if (num22 == 1)
  13753.                                                         {
  13754.                                                             rectangle.X = 54;
  13755.                                                             rectangle.Y = 306;
  13756.                                                         }
  13757.                                                         if (num22 == 2)
  13758.                                                         {
  13759.                                                             rectangle.X = 72;
  13760.                                                             rectangle.Y = 306;
  13761.                                                         }
  13762.                                                     }
  13763.                                                     else
  13764.                                                     {
  13765.                                                         if (num3 != num9 && num6 != num9)
  13766.                                                         {
  13767.                                                             if (num22 == 0)
  13768.                                                             {
  13769.                                                                 rectangle.X = 90;
  13770.                                                                 rectangle.Y = 306;
  13771.                                                             }
  13772.                                                             if (num22 == 1)
  13773.                                                             {
  13774.                                                                 rectangle.X = 108;
  13775.                                                                 rectangle.Y = 306;
  13776.                                                             }
  13777.                                                             if (num22 == 2)
  13778.                                                             {
  13779.                                                                 rectangle.X = 126;
  13780.                                                                 rectangle.Y = 306;
  13781.                                                             }
  13782.                                                         }
  13783.                                                         else
  13784.                                                         {
  13785.                                                             if (num != num9 && num3 == num9 && num6 == num9 && num8 == num9)
  13786.                                                             {
  13787.                                                                 if (num22 == 0)
  13788.                                                                 {
  13789.                                                                     rectangle.X = 54;
  13790.                                                                     rectangle.Y = 108;
  13791.                                                                 }
  13792.                                                                 if (num22 == 1)
  13793.                                                                 {
  13794.                                                                     rectangle.X = 54;
  13795.                                                                     rectangle.Y = 144;
  13796.                                                                 }
  13797.                                                                 if (num22 == 2)
  13798.                                                                 {
  13799.                                                                     rectangle.X = 54;
  13800.                                                                     rectangle.Y = 180;
  13801.                                                                 }
  13802.                                                             }
  13803.                                                             else
  13804.                                                             {
  13805.                                                                 if (num == num9 && num3 != num9 && num6 == num9 && num8 == num9)
  13806.                                                                 {
  13807.                                                                     if (num22 == 0)
  13808.                                                                     {
  13809.                                                                         rectangle.X = 36;
  13810.                                                                         rectangle.Y = 108;
  13811.                                                                     }
  13812.                                                                     if (num22 == 1)
  13813.                                                                     {
  13814.                                                                         rectangle.X = 36;
  13815.                                                                         rectangle.Y = 144;
  13816.                                                                     }
  13817.                                                                     if (num22 == 2)
  13818.                                                                     {
  13819.                                                                         rectangle.X = 36;
  13820.                                                                         rectangle.Y = 180;
  13821.                                                                     }
  13822.                                                                 }
  13823.                                                                 else
  13824.                                                                 {
  13825.                                                                     if (num == num9 && num3 == num9 && num6 != num9 && num8 == num9)
  13826.                                                                     {
  13827.                                                                         if (num22 == 0)
  13828.                                                                         {
  13829.                                                                             rectangle.X = 54;
  13830.                                                                             rectangle.Y = 90;
  13831.                                                                         }
  13832.                                                                         if (num22 == 1)
  13833.                                                                         {
  13834.                                                                             rectangle.X = 54;
  13835.                                                                             rectangle.Y = 126;
  13836.                                                                         }
  13837.                                                                         if (num22 == 2)
  13838.                                                                         {
  13839.                                                                             rectangle.X = 54;
  13840.                                                                             rectangle.Y = 162;
  13841.                                                                         }
  13842.                                                                     }
  13843.                                                                     else
  13844.                                                                     {
  13845.                                                                         if (num == num9 && num3 == num9 && num6 == num9 && num8 != num9)
  13846.                                                                         {
  13847.                                                                             if (num22 == 0)
  13848.                                                                             {
  13849.                                                                                 rectangle.X = 36;
  13850.                                                                                 rectangle.Y = 90;
  13851.                                                                             }
  13852.                                                                             if (num22 == 1)
  13853.                                                                             {
  13854.                                                                                 rectangle.X = 36;
  13855.                                                                                 rectangle.Y = 126;
  13856.                                                                             }
  13857.                                                                             if (num22 == 2)
  13858.                                                                             {
  13859.                                                                                 rectangle.X = 36;
  13860.                                                                                 rectangle.Y = 162;
  13861.                                                                             }
  13862.                                                                         }
  13863.                                                                     }
  13864.                                                                 }
  13865.                                                             }
  13866.                                                         }
  13867.                                                     }
  13868.                                                 }
  13869.                                             }
  13870.                                             else
  13871.                                             {
  13872.                                                 if (num2 == num9 && num7 == num24 && num4 == num9 && num5 == num9 && num == -1 && num3 == -1)
  13873.                                                 {
  13874.                                                     if (num22 == 0)
  13875.                                                     {
  13876.                                                         rectangle.X = 108;
  13877.                                                         rectangle.Y = 18;
  13878.                                                     }
  13879.                                                     if (num22 == 1)
  13880.                                                     {
  13881.                                                         rectangle.X = 126;
  13882.                                                         rectangle.Y = 18;
  13883.                                                     }
  13884.                                                     if (num22 == 2)
  13885.                                                     {
  13886.                                                         rectangle.X = 144;
  13887.                                                         rectangle.Y = 18;
  13888.                                                     }
  13889.                                                 }
  13890.                                                 else
  13891.                                                 {
  13892.                                                     if (num2 == num24 && num7 == num9 && num4 == num9 && num5 == num9 && num6 == -1 && num8 == -1)
  13893.                                                     {
  13894.                                                         if (num22 == 0)
  13895.                                                         {
  13896.                                                             rectangle.X = 108;
  13897.                                                             rectangle.Y = 36;
  13898.                                                         }
  13899.                                                         if (num22 == 1)
  13900.                                                         {
  13901.                                                             rectangle.X = 126;
  13902.                                                             rectangle.Y = 36;
  13903.                                                         }
  13904.                                                         if (num22 == 2)
  13905.                                                         {
  13906.                                                             rectangle.X = 144;
  13907.                                                             rectangle.Y = 36;
  13908.                                                         }
  13909.                                                     }
  13910.                                                     else
  13911.                                                     {
  13912.                                                         if (num2 == num9 && num7 == num9 && num4 == num24 && num5 == num9 && num3 == -1 && num8 == -1)
  13913.                                                         {
  13914.                                                             if (num22 == 0)
  13915.                                                             {
  13916.                                                                 rectangle.X = 198;
  13917.                                                                 rectangle.Y = 0;
  13918.                                                             }
  13919.                                                             if (num22 == 1)
  13920.                                                             {
  13921.                                                                 rectangle.X = 198;
  13922.                                                                 rectangle.Y = 18;
  13923.                                                             }
  13924.                                                             if (num22 == 2)
  13925.                                                             {
  13926.                                                                 rectangle.X = 198;
  13927.                                                                 rectangle.Y = 36;
  13928.                                                             }
  13929.                                                         }
  13930.                                                         else
  13931.                                                         {
  13932.                                                             if (num2 == num9 && num7 == num9 && num4 == num9 && num5 == num24 && num == -1 && num6 == -1)
  13933.                                                             {
  13934.                                                                 if (num22 == 0)
  13935.                                                                 {
  13936.                                                                     rectangle.X = 180;
  13937.                                                                     rectangle.Y = 0;
  13938.                                                                 }
  13939.                                                                 if (num22 == 1)
  13940.                                                                 {
  13941.                                                                     rectangle.X = 180;
  13942.                                                                     rectangle.Y = 18;
  13943.                                                                 }
  13944.                                                                 if (num22 == 2)
  13945.                                                                 {
  13946.                                                                     rectangle.X = 180;
  13947.                                                                     rectangle.Y = 36;
  13948.                                                                 }
  13949.                                                             }
  13950.                                                             else
  13951.                                                             {
  13952.                                                                 if (num2 == num9 && num7 == num24 && num4 == num9 && num5 == num9)
  13953.                                                                 {
  13954.                                                                     if (num3 != -1)
  13955.                                                                     {
  13956.                                                                         if (num22 == 0)
  13957.                                                                         {
  13958.                                                                             rectangle.X = 54;
  13959.                                                                             rectangle.Y = 108;
  13960.                                                                         }
  13961.                                                                         if (num22 == 1)
  13962.                                                                         {
  13963.                                                                             rectangle.X = 54;
  13964.                                                                             rectangle.Y = 144;
  13965.                                                                         }
  13966.                                                                         if (num22 == 2)
  13967.                                                                         {
  13968.                                                                             rectangle.X = 54;
  13969.                                                                             rectangle.Y = 180;
  13970.                                                                         }
  13971.                                                                     }
  13972.                                                                     else
  13973.                                                                     {
  13974.                                                                         if (num != -1)
  13975.                                                                         {
  13976.                                                                             if (num22 == 0)
  13977.                                                                             {
  13978.                                                                                 rectangle.X = 36;
  13979.                                                                                 rectangle.Y = 108;
  13980.                                                                             }
  13981.                                                                             if (num22 == 1)
  13982.                                                                             {
  13983.                                                                                 rectangle.X = 36;
  13984.                                                                                 rectangle.Y = 144;
  13985.                                                                             }
  13986.                                                                             if (num22 == 2)
  13987.                                                                             {
  13988.                                                                                 rectangle.X = 36;
  13989.                                                                                 rectangle.Y = 180;
  13990.                                                                             }
  13991.                                                                         }
  13992.                                                                     }
  13993.                                                                 }
  13994.                                                                 else
  13995.                                                                 {
  13996.                                                                     if (num2 == num24 && num7 == num9 && num4 == num9 && num5 == num9)
  13997.                                                                     {
  13998.                                                                         if (num8 != -1)
  13999.                                                                         {
  14000.                                                                             if (num22 == 0)
  14001.                                                                             {
  14002.                                                                                 rectangle.X = 54;
  14003.                                                                                 rectangle.Y = 90;
  14004.                                                                             }
  14005.                                                                             if (num22 == 1)
  14006.                                                                             {
  14007.                                                                                 rectangle.X = 54;
  14008.                                                                                 rectangle.Y = 126;
  14009.                                                                             }
  14010.                                                                             if (num22 == 2)
  14011.                                                                             {
  14012.                                                                                 rectangle.X = 54;
  14013.                                                                                 rectangle.Y = 162;
  14014.                                                                             }
  14015.                                                                         }
  14016.                                                                         else
  14017.                                                                         {
  14018.                                                                             if (num6 != -1)
  14019.                                                                             {
  14020.                                                                                 if (num22 == 0)
  14021.                                                                                 {
  14022.                                                                                     rectangle.X = 36;
  14023.                                                                                     rectangle.Y = 90;
  14024.                                                                                 }
  14025.                                                                                 if (num22 == 1)
  14026.                                                                                 {
  14027.                                                                                     rectangle.X = 36;
  14028.                                                                                     rectangle.Y = 126;
  14029.                                                                                 }
  14030.                                                                                 if (num22 == 2)
  14031.                                                                                 {
  14032.                                                                                     rectangle.X = 36;
  14033.                                                                                     rectangle.Y = 162;
  14034.                                                                                 }
  14035.                                                                             }
  14036.                                                                         }
  14037.                                                                     }
  14038.                                                                     else
  14039.                                                                     {
  14040.                                                                         if (num2 == num9 && num7 == num9 && num4 == num9 && num5 == num24)
  14041.                                                                         {
  14042.                                                                             if (num != -1)
  14043.                                                                             {
  14044.                                                                                 if (num22 == 0)
  14045.                                                                                 {
  14046.                                                                                     rectangle.X = 54;
  14047.                                                                                     rectangle.Y = 90;
  14048.                                                                                 }
  14049.                                                                                 if (num22 == 1)
  14050.                                                                                 {
  14051.                                                                                     rectangle.X = 54;
  14052.                                                                                     rectangle.Y = 126;
  14053.                                                                                 }
  14054.                                                                                 if (num22 == 2)
  14055.                                                                                 {
  14056.                                                                                     rectangle.X = 54;
  14057.                                                                                     rectangle.Y = 162;
  14058.                                                                                 }
  14059.                                                                             }
  14060.                                                                             else
  14061.                                                                             {
  14062.                                                                                 if (num6 != -1)
  14063.                                                                                 {
  14064.                                                                                     if (num22 == 0)
  14065.                                                                                     {
  14066.                                                                                         rectangle.X = 54;
  14067.                                                                                         rectangle.Y = 108;
  14068.                                                                                     }
  14069.                                                                                     if (num22 == 1)
  14070.                                                                                     {
  14071.                                                                                         rectangle.X = 54;
  14072.                                                                                         rectangle.Y = 144;
  14073.                                                                                     }
  14074.                                                                                     if (num22 == 2)
  14075.                                                                                     {
  14076.                                                                                         rectangle.X = 54;
  14077.                                                                                         rectangle.Y = 180;
  14078.                                                                                     }
  14079.                                                                                 }
  14080.                                                                             }
  14081.                                                                         }
  14082.                                                                         else
  14083.                                                                         {
  14084.                                                                             if (num2 == num9 && num7 == num9 && num4 == num24 && num5 == num9)
  14085.                                                                             {
  14086.                                                                                 if (num3 != -1)
  14087.                                                                                 {
  14088.                                                                                     if (num22 == 0)
  14089.                                                                                     {
  14090.                                                                                         rectangle.X = 36;
  14091.                                                                                         rectangle.Y = 90;
  14092.                                                                                     }
  14093.                                                                                     if (num22 == 1)
  14094.                                                                                     {
  14095.                                                                                         rectangle.X = 36;
  14096.                                                                                         rectangle.Y = 126;
  14097.                                                                                     }
  14098.                                                                                     if (num22 == 2)
  14099.                                                                                     {
  14100.                                                                                         rectangle.X = 36;
  14101.                                                                                         rectangle.Y = 162;
  14102.                                                                                     }
  14103.                                                                                 }
  14104.                                                                                 else
  14105.                                                                                 {
  14106.                                                                                     if (num8 != -1)
  14107.                                                                                     {
  14108.                                                                                         if (num22 == 0)
  14109.                                                                                         {
  14110.                                                                                             rectangle.X = 36;
  14111.                                                                                             rectangle.Y = 108;
  14112.                                                                                         }
  14113.                                                                                         if (num22 == 1)
  14114.                                                                                         {
  14115.                                                                                             rectangle.X = 36;
  14116.                                                                                             rectangle.Y = 144;
  14117.                                                                                         }
  14118.                                                                                         if (num22 == 2)
  14119.                                                                                         {
  14120.                                                                                             rectangle.X = 36;
  14121.                                                                                             rectangle.Y = 180;
  14122.                                                                                         }
  14123.                                                                                     }
  14124.                                                                                 }
  14125.                                                                             }
  14126.                                                                             else
  14127.                                                                             {
  14128.                                                                                 if ((num2 == num24 && num7 == num9 && num4 == num9 && num5 == num9) || (num2 == num9 && num7 == num24 && num4 == num9 && num5 == num9) || (num2 == num9 && num7 == num9 && num4 == num24 && num5 == num9) || (num2 == num9 && num7 == num9 && num4 == num9 && num5 == num24))
  14129.                                                                                 {
  14130.                                                                                     if (num22 == 0)
  14131.                                                                                     {
  14132.                                                                                         rectangle.X = 18;
  14133.                                                                                         rectangle.Y = 18;
  14134.                                                                                     }
  14135.                                                                                     if (num22 == 1)
  14136.                                                                                     {
  14137.                                                                                         rectangle.X = 36;
  14138.                                                                                         rectangle.Y = 18;
  14139.                                                                                     }
  14140.                                                                                     if (num22 == 2)
  14141.                                                                                     {
  14142.                                                                                         rectangle.X = 54;
  14143.                                                                                         rectangle.Y = 18;
  14144.                                                                                     }
  14145.                                                                                 }
  14146.                                                                             }
  14147.                                                                         }
  14148.                                                                     }
  14149.                                                                 }
  14150.                                                             }
  14151.                                                         }
  14152.                                                     }
  14153.                                                 }
  14154.                                             }
  14155.                                         }
  14156.                                     }
  14157.                                 }
  14158.                             }
  14159.                             if ((num2 == num9 || num2 == num24) && (num7 == num9 || num7 == num24) && (num4 == num9 || num4 == num24) && (num5 == num9 || num5 == num24))
  14160.                             {
  14161.                                 if (num != num9 && num != num24 && (num3 == num9 || num3 == num24) && (num6 == num9 || num6 == num24) && (num8 == num9 || num8 == num24))
  14162.                                 {
  14163.                                     if (num22 == 0)
  14164.                                     {
  14165.                                         rectangle.X = 54;
  14166.                                         rectangle.Y = 108;
  14167.                                     }
  14168.                                     if (num22 == 1)
  14169.                                     {
  14170.                                         rectangle.X = 54;
  14171.                                         rectangle.Y = 144;
  14172.                                     }
  14173.                                     if (num22 == 2)
  14174.                                     {
  14175.                                         rectangle.X = 54;
  14176.                                         rectangle.Y = 180;
  14177.                                     }
  14178.                                 }
  14179.                                 else
  14180.                                 {
  14181.                                     if (num3 != num9 && num3 != num24 && (num == num9 || num == num24) && (num6 == num9 || num6 == num24) && (num8 == num9 || num8 == num24))
  14182.                                     {
  14183.                                         if (num22 == 0)
  14184.                                         {
  14185.                                             rectangle.X = 36;
  14186.                                             rectangle.Y = 108;
  14187.                                         }
  14188.                                         if (num22 == 1)
  14189.                                         {
  14190.                                             rectangle.X = 36;
  14191.                                             rectangle.Y = 144;
  14192.                                         }
  14193.                                         if (num22 == 2)
  14194.                                         {
  14195.                                             rectangle.X = 36;
  14196.                                             rectangle.Y = 180;
  14197.                                         }
  14198.                                     }
  14199.                                     else
  14200.                                     {
  14201.                                         if (num6 != num9 && num6 != num24 && (num == num9 || num == num24) && (num3 == num9 || num3 == num24) && (num8 == num9 || num8 == num24))
  14202.                                         {
  14203.                                             if (num22 == 0)
  14204.                                             {
  14205.                                                 rectangle.X = 54;
  14206.                                                 rectangle.Y = 90;
  14207.                                             }
  14208.                                             if (num22 == 1)
  14209.                                             {
  14210.                                                 rectangle.X = 54;
  14211.                                                 rectangle.Y = 126;
  14212.                                             }
  14213.                                             if (num22 == 2)
  14214.                                             {
  14215.                                                 rectangle.X = 54;
  14216.                                                 rectangle.Y = 162;
  14217.                                             }
  14218.                                         }
  14219.                                         else
  14220.                                         {
  14221.                                             if (num8 != num9 && num8 != num24 && (num == num9 || num == num24) && (num6 == num9 || num6 == num24) && (num3 == num9 || num3 == num24))
  14222.                                             {
  14223.                                                 if (num22 == 0)
  14224.                                                 {
  14225.                                                     rectangle.X = 36;
  14226.                                                     rectangle.Y = 90;
  14227.                                                 }
  14228.                                                 if (num22 == 1)
  14229.                                                 {
  14230.                                                     rectangle.X = 36;
  14231.                                                     rectangle.Y = 126;
  14232.                                                 }
  14233.                                                 if (num22 == 2)
  14234.                                                 {
  14235.                                                     rectangle.X = 36;
  14236.                                                     rectangle.Y = 162;
  14237.                                                 }
  14238.                                             }
  14239.                                         }
  14240.                                     }
  14241.                                 }
  14242.                             }
  14243.                             if (num2 != num24 && num2 != num9 && num7 == num9 && num4 != num24 && num4 != num9 && num5 == num9 && num8 != num24 && num8 != num9)
  14244.                             {
  14245.                                 if (num22 == 0)
  14246.                                 {
  14247.                                     rectangle.X = 90;
  14248.                                     rectangle.Y = 270;
  14249.                                 }
  14250.                                 if (num22 == 1)
  14251.                                 {
  14252.                                     rectangle.X = 108;
  14253.                                     rectangle.Y = 270;
  14254.                                 }
  14255.                                 if (num22 == 2)
  14256.                                 {
  14257.                                     rectangle.X = 126;
  14258.                                     rectangle.Y = 270;
  14259.                                 }
  14260.                             }
  14261.                             else
  14262.                             {
  14263.                                 if (num2 != num24 && num2 != num9 && num7 == num9 && num4 == num9 && num5 != num24 && num5 != num9 && num6 != num24 && num6 != num9)
  14264.                                 {
  14265.                                     if (num22 == 0)
  14266.                                     {
  14267.                                         rectangle.X = 144;
  14268.                                         rectangle.Y = 270;
  14269.                                     }
  14270.                                     if (num22 == 1)
  14271.                                     {
  14272.                                         rectangle.X = 162;
  14273.                                         rectangle.Y = 270;
  14274.                                     }
  14275.                                     if (num22 == 2)
  14276.                                     {
  14277.                                         rectangle.X = 180;
  14278.                                         rectangle.Y = 270;
  14279.                                     }
  14280.                                 }
  14281.                                 else
  14282.                                 {
  14283.                                     if (num7 != num24 && num7 != num9 && num2 == num9 && num4 != num24 && num4 != num9 && num5 == num9 && num3 != num24 && num3 != num9)
  14284.                                     {
  14285.                                         if (num22 == 0)
  14286.                                         {
  14287.                                             rectangle.X = 90;
  14288.                                             rectangle.Y = 288;
  14289.                                         }
  14290.                                         if (num22 == 1)
  14291.                                         {
  14292.                                             rectangle.X = 108;
  14293.                                             rectangle.Y = 288;
  14294.                                         }
  14295.                                         if (num22 == 2)
  14296.                                         {
  14297.                                             rectangle.X = 126;
  14298.                                             rectangle.Y = 288;
  14299.                                         }
  14300.                                     }
  14301.                                     else
  14302.                                     {
  14303.                                         if (num7 != num24 && num7 != num9 && num2 == num9 && num4 == num9 && num5 != num24 && num5 != num9 && num != num24 && num != num9)
  14304.                                         {
  14305.                                             if (num22 == 0)
  14306.                                             {
  14307.                                                 rectangle.X = 144;
  14308.                                                 rectangle.Y = 288;
  14309.                                             }
  14310.                                             if (num22 == 1)
  14311.                                             {
  14312.                                                 rectangle.X = 162;
  14313.                                                 rectangle.Y = 288;
  14314.                                             }
  14315.                                             if (num22 == 2)
  14316.                                             {
  14317.                                                 rectangle.X = 180;
  14318.                                                 rectangle.Y = 288;
  14319.                                             }
  14320.                                         }
  14321.                                         else
  14322.                                         {
  14323.                                             if (num2 != num9 && num2 != num24 && num7 == num9 && num4 == num9 && num5 == num9 && num6 != num9 && num6 != num24 && num8 != num9 && num8 != num24)
  14324.                                             {
  14325.                                                 if (num22 == 0)
  14326.                                                 {
  14327.                                                     rectangle.X = 144;
  14328.                                                     rectangle.Y = 216;
  14329.                                                 }
  14330.                                                 if (num22 == 1)
  14331.                                                 {
  14332.                                                     rectangle.X = 198;
  14333.                                                     rectangle.Y = 216;
  14334.                                                 }
  14335.                                                 if (num22 == 2)
  14336.                                                 {
  14337.                                                     rectangle.X = 252;
  14338.                                                     rectangle.Y = 216;
  14339.                                                 }
  14340.                                             }
  14341.                                             else
  14342.                                             {
  14343.                                                 if (num7 != num9 && num7 != num24 && num2 == num9 && num4 == num9 && num5 == num9 && num != num9 && num != num24 && num3 != num9 && num3 != num24)
  14344.                                                 {
  14345.                                                     if (num22 == 0)
  14346.                                                     {
  14347.                                                         rectangle.X = 144;
  14348.                                                         rectangle.Y = 252;
  14349.                                                     }
  14350.                                                     if (num22 == 1)
  14351.                                                     {
  14352.                                                         rectangle.X = 198;
  14353.                                                         rectangle.Y = 252;
  14354.                                                     }
  14355.                                                     if (num22 == 2)
  14356.                                                     {
  14357.                                                         rectangle.X = 252;
  14358.                                                         rectangle.Y = 252;
  14359.                                                     }
  14360.                                                 }
  14361.                                                 else
  14362.                                                 {
  14363.                                                     if (num4 != num9 && num4 != num24 && num7 == num9 && num2 == num9 && num5 == num9 && num3 != num9 && num3 != num24 && num8 != num9 && num8 != num24)
  14364.                                                     {
  14365.                                                         if (num22 == 0)
  14366.                                                         {
  14367.                                                             rectangle.X = 126;
  14368.                                                             rectangle.Y = 234;
  14369.                                                         }
  14370.                                                         if (num22 == 1)
  14371.                                                         {
  14372.                                                             rectangle.X = 180;
  14373.                                                             rectangle.Y = 234;
  14374.                                                         }
  14375.                                                         if (num22 == 2)
  14376.                                                         {
  14377.                                                             rectangle.X = 234;
  14378.                                                             rectangle.Y = 234;
  14379.                                                         }
  14380.                                                     }
  14381.                                                     else
  14382.                                                     {
  14383.                                                         if (num5 != num9 && num5 != num24 && num7 == num9 && num2 == num9 && num4 == num9 && num != num9 && num != num24 && num6 != num9 && num6 != num24)
  14384.                                                         {
  14385.                                                             if (num22 == 0)
  14386.                                                             {
  14387.                                                                 rectangle.X = 162;
  14388.                                                                 rectangle.Y = 234;
  14389.                                                             }
  14390.                                                             if (num22 == 1)
  14391.                                                             {
  14392.                                                                 rectangle.X = 216;
  14393.                                                                 rectangle.Y = 234;
  14394.                                                             }
  14395.                                                             if (num22 == 2)
  14396.                                                             {
  14397.                                                                 rectangle.X = 270;
  14398.                                                                 rectangle.Y = 234;
  14399.                                                             }
  14400.                                                         }
  14401.                                                         else
  14402.                                                         {
  14403.                                                             if (num2 != num24 && num2 != num9 && (num7 == num24 || num7 == num9) && num4 == num24 && num5 == num24)
  14404.                                                             {
  14405.                                                                 if (num22 == 0)
  14406.                                                                 {
  14407.                                                                     rectangle.X = 36;
  14408.                                                                     rectangle.Y = 270;
  14409.                                                                 }
  14410.                                                                 if (num22 == 1)
  14411.                                                                 {
  14412.                                                                     rectangle.X = 54;
  14413.                                                                     rectangle.Y = 270;
  14414.                                                                 }
  14415.                                                                 if (num22 == 2)
  14416.                                                                 {
  14417.                                                                     rectangle.X = 72;
  14418.                                                                     rectangle.Y = 270;
  14419.                                                                 }
  14420.                                                             }
  14421.                                                             else
  14422.                                                             {
  14423.                                                                 if (num7 != num24 && num7 != num9 && (num2 == num24 || num2 == num9) && num4 == num24 && num5 == num24)
  14424.                                                                 {
  14425.                                                                     if (num22 == 0)
  14426.                                                                     {
  14427.                                                                         rectangle.X = 36;
  14428.                                                                         rectangle.Y = 288;
  14429.                                                                     }
  14430.                                                                     if (num22 == 1)
  14431.                                                                     {
  14432.                                                                         rectangle.X = 54;
  14433.                                                                         rectangle.Y = 288;
  14434.                                                                     }
  14435.                                                                     if (num22 == 2)
  14436.                                                                     {
  14437.                                                                         rectangle.X = 72;
  14438.                                                                         rectangle.Y = 288;
  14439.                                                                     }
  14440.                                                                 }
  14441.                                                                 else
  14442.                                                                 {
  14443.                                                                     if (num4 != num24 && num4 != num9 && (num5 == num24 || num5 == num9) && num2 == num24 && num7 == num24)
  14444.                                                                     {
  14445.                                                                         if (num22 == 0)
  14446.                                                                         {
  14447.                                                                             rectangle.X = 0;
  14448.                                                                             rectangle.Y = 270;
  14449.                                                                         }
  14450.                                                                         if (num22 == 1)
  14451.                                                                         {
  14452.                                                                             rectangle.X = 0;
  14453.                                                                             rectangle.Y = 288;
  14454.                                                                         }
  14455.                                                                         if (num22 == 2)
  14456.                                                                         {
  14457.                                                                             rectangle.X = 0;
  14458.                                                                             rectangle.Y = 306;
  14459.                                                                         }
  14460.                                                                     }
  14461.                                                                     else
  14462.                                                                     {
  14463.                                                                         if (num5 != num24 && num5 != num9 && (num4 == num24 || num4 == num9) && num2 == num24 && num7 == num24)
  14464.                                                                         {
  14465.                                                                             if (num22 == 0)
  14466.                                                                             {
  14467.                                                                                 rectangle.X = 18;
  14468.                                                                                 rectangle.Y = 270;
  14469.                                                                             }
  14470.                                                                             if (num22 == 1)
  14471.                                                                             {
  14472.                                                                                 rectangle.X = 18;
  14473.                                                                                 rectangle.Y = 288;
  14474.                                                                             }
  14475.                                                                             if (num22 == 2)
  14476.                                                                             {
  14477.                                                                                 rectangle.X = 18;
  14478.                                                                                 rectangle.Y = 306;
  14479.                                                                             }
  14480.                                                                         }
  14481.                                                                         else
  14482.                                                                         {
  14483.                                                                             if (num2 == num9 && num7 == num24 && num4 == num24 && num5 == num24)
  14484.                                                                             {
  14485.                                                                                 if (num22 == 0)
  14486.                                                                                 {
  14487.                                                                                     rectangle.X = 198;
  14488.                                                                                     rectangle.Y = 288;
  14489.                                                                                 }
  14490.                                                                                 if (num22 == 1)
  14491.                                                                                 {
  14492.                                                                                     rectangle.X = 216;
  14493.                                                                                     rectangle.Y = 288;
  14494.                                                                                 }
  14495.                                                                                 if (num22 == 2)
  14496.                                                                                 {
  14497.                                                                                     rectangle.X = 234;
  14498.                                                                                     rectangle.Y = 288;
  14499.                                                                                 }
  14500.                                                                             }
  14501.                                                                             else
  14502.                                                                             {
  14503.                                                                                 if (num2 == num24 && num7 == num9 && num4 == num24 && num5 == num24)
  14504.                                                                                 {
  14505.                                                                                     if (num22 == 0)
  14506.                                                                                     {
  14507.                                                                                         rectangle.X = 198;
  14508.                                                                                         rectangle.Y = 270;
  14509.                                                                                     }
  14510.                                                                                     if (num22 == 1)
  14511.                                                                                     {
  14512.                                                                                         rectangle.X = 216;
  14513.                                                                                         rectangle.Y = 270;
  14514.                                                                                     }
  14515.                                                                                     if (num22 == 2)
  14516.                                                                                     {
  14517.                                                                                         rectangle.X = 234;
  14518.                                                                                         rectangle.Y = 270;
  14519.                                                                                     }
  14520.                                                                                 }
  14521.                                                                                 else
  14522.                                                                                 {
  14523.                                                                                     if (num2 == num24 && num7 == num24 && num4 == num9 && num5 == num24)
  14524.                                                                                     {
  14525.                                                                                         if (num22 == 0)
  14526.                                                                                         {
  14527.                                                                                             rectangle.X = 198;
  14528.                                                                                             rectangle.Y = 306;
  14529.                                                                                         }
  14530.                                                                                         if (num22 == 1)
  14531.                                                                                         {
  14532.                                                                                             rectangle.X = 216;
  14533.                                                                                             rectangle.Y = 306;
  14534.                                                                                         }
  14535.                                                                                         if (num22 == 2)
  14536.                                                                                         {
  14537.                                                                                             rectangle.X = 234;
  14538.                                                                                             rectangle.Y = 306;
  14539.                                                                                         }
  14540.                                                                                     }
  14541.                                                                                     else
  14542.                                                                                     {
  14543.                                                                                         if (num2 == num24 && num7 == num24 && num4 == num24 && num5 == num9)
  14544.                                                                                         {
  14545.                                                                                             if (num22 == 0)
  14546.                                                                                             {
  14547.                                                                                                 rectangle.X = 144;
  14548.                                                                                                 rectangle.Y = 306;
  14549.                                                                                             }
  14550.                                                                                             if (num22 == 1)
  14551.                                                                                             {
  14552.                                                                                                 rectangle.X = 162;
  14553.                                                                                                 rectangle.Y = 306;
  14554.                                                                                             }
  14555.                                                                                             if (num22 == 2)
  14556.                                                                                             {
  14557.                                                                                                 rectangle.X = 180;
  14558.                                                                                                 rectangle.Y = 306;
  14559.                                                                                             }
  14560.                                                                                         }
  14561.                                                                                     }
  14562.                                                                                 }
  14563.                                                                             }
  14564.                                                                         }
  14565.                                                                     }
  14566.                                                                 }
  14567.                                                             }
  14568.                                                         }
  14569.                                                     }
  14570.                                                 }
  14571.                                             }
  14572.                                         }
  14573.                                     }
  14574.                                 }
  14575.                             }
  14576.                             if (num2 != num9 && num2 != num24 && num7 == num9 && num4 == num9 && num5 == num9)
  14577.                             {
  14578.                                 if ((num6 == num24 || num6 == num9) && num8 != num24 && num8 != num9)
  14579.                                 {
  14580.                                     if (num22 == 0)
  14581.                                     {
  14582.                                         rectangle.X = 0;
  14583.                                         rectangle.Y = 324;
  14584.                                     }
  14585.                                     if (num22 == 1)
  14586.                                     {
  14587.                                         rectangle.X = 18;
  14588.                                         rectangle.Y = 324;
  14589.                                     }
  14590.                                     if (num22 == 2)
  14591.                                     {
  14592.                                         rectangle.X = 36;
  14593.                                         rectangle.Y = 324;
  14594.                                     }
  14595.                                 }
  14596.                                 else
  14597.                                 {
  14598.                                     if ((num8 == num24 || num8 == num9) && num6 != num24 && num6 != num9)
  14599.                                     {
  14600.                                         if (num22 == 0)
  14601.                                         {
  14602.                                             rectangle.X = 54;
  14603.                                             rectangle.Y = 324;
  14604.                                         }
  14605.                                         if (num22 == 1)
  14606.                                         {
  14607.                                             rectangle.X = 72;
  14608.                                             rectangle.Y = 324;
  14609.                                         }
  14610.                                         if (num22 == 2)
  14611.                                         {
  14612.                                             rectangle.X = 90;
  14613.                                             rectangle.Y = 324;
  14614.                                         }
  14615.                                     }
  14616.                                 }
  14617.                             }
  14618.                             else
  14619.                             {
  14620.                                 if (num7 != num9 && num7 != num24 && num2 == num9 && num4 == num9 && num5 == num9)
  14621.                                 {
  14622.                                     if ((num == num24 || num == num9) && num3 != num24 && num3 != num9)
  14623.                                     {
  14624.                                         if (num22 == 0)
  14625.                                         {
  14626.                                             rectangle.X = 0;
  14627.                                             rectangle.Y = 342;
  14628.                                         }
  14629.                                         if (num22 == 1)
  14630.                                         {
  14631.                                             rectangle.X = 18;
  14632.                                             rectangle.Y = 342;
  14633.                                         }
  14634.                                         if (num22 == 2)
  14635.                                         {
  14636.                                             rectangle.X = 36;
  14637.                                             rectangle.Y = 342;
  14638.                                         }
  14639.                                     }
  14640.                                     else
  14641.                                     {
  14642.                                         if ((num3 == num24 || num3 == num9) && num != num24 && num != num9)
  14643.                                         {
  14644.                                             if (num22 == 0)
  14645.                                             {
  14646.                                                 rectangle.X = 54;
  14647.                                                 rectangle.Y = 342;
  14648.                                             }
  14649.                                             if (num22 == 1)
  14650.                                             {
  14651.                                                 rectangle.X = 72;
  14652.                                                 rectangle.Y = 342;
  14653.                                             }
  14654.                                             if (num22 == 2)
  14655.                                             {
  14656.                                                 rectangle.X = 90;
  14657.                                                 rectangle.Y = 342;
  14658.                                             }
  14659.                                         }
  14660.                                     }
  14661.                                 }
  14662.                                 else
  14663.                                 {
  14664.                                     if (num4 != num9 && num4 != num24 && num2 == num9 && num7 == num9 && num5 == num9)
  14665.                                     {
  14666.                                         if ((num3 == num24 || num3 == num9) && num8 != num24 && num8 != num9)
  14667.                                         {
  14668.                                             if (num22 == 0)
  14669.                                             {
  14670.                                                 rectangle.X = 54;
  14671.                                                 rectangle.Y = 360;
  14672.                                             }
  14673.                                             if (num22 == 1)
  14674.                                             {
  14675.                                                 rectangle.X = 72;
  14676.                                                 rectangle.Y = 360;
  14677.                                             }
  14678.                                             if (num22 == 2)
  14679.                                             {
  14680.                                                 rectangle.X = 90;
  14681.                                                 rectangle.Y = 360;
  14682.                                             }
  14683.                                         }
  14684.                                         else
  14685.                                         {
  14686.                                             if ((num8 == num24 || num8 == num9) && num3 != num24 && num3 != num9)
  14687.                                             {
  14688.                                                 if (num22 == 0)
  14689.                                                 {
  14690.                                                     rectangle.X = 0;
  14691.                                                     rectangle.Y = 360;
  14692.                                                 }
  14693.                                                 if (num22 == 1)
  14694.                                                 {
  14695.                                                     rectangle.X = 18;
  14696.                                                     rectangle.Y = 360;
  14697.                                                 }
  14698.                                                 if (num22 == 2)
  14699.                                                 {
  14700.                                                     rectangle.X = 36;
  14701.                                                     rectangle.Y = 360;
  14702.                                                 }
  14703.                                             }
  14704.                                         }
  14705.                                     }
  14706.                                     else
  14707.                                     {
  14708.                                         if (num5 != num9 && num5 != num24 && num2 == num9 && num7 == num9 && num4 == num9)
  14709.                                         {
  14710.                                             if ((num == num24 || num == num9) && num6 != num24 && num6 != num9)
  14711.                                             {
  14712.                                                 if (num22 == 0)
  14713.                                                 {
  14714.                                                     rectangle.X = 0;
  14715.                                                     rectangle.Y = 378;
  14716.                                                 }
  14717.                                                 if (num22 == 1)
  14718.                                                 {
  14719.                                                     rectangle.X = 18;
  14720.                                                     rectangle.Y = 378;
  14721.                                                 }
  14722.                                                 if (num22 == 2)
  14723.                                                 {
  14724.                                                     rectangle.X = 36;
  14725.                                                     rectangle.Y = 378;
  14726.                                                 }
  14727.                                             }
  14728.                                             else
  14729.                                             {
  14730.                                                 if ((num6 == num24 || num6 == num9) && num != num24 && num != num9)
  14731.                                                 {
  14732.                                                     if (num22 == 0)
  14733.                                                     {
  14734.                                                         rectangle.X = 54;
  14735.                                                         rectangle.Y = 378;
  14736.                                                     }
  14737.                                                     if (num22 == 1)
  14738.                                                     {
  14739.                                                         rectangle.X = 72;
  14740.                                                         rectangle.Y = 378;
  14741.                                                     }
  14742.                                                     if (num22 == 2)
  14743.                                                     {
  14744.                                                         rectangle.X = 90;
  14745.                                                         rectangle.Y = 378;
  14746.                                                     }
  14747.                                                 }
  14748.                                             }
  14749.                                         }
  14750.                                     }
  14751.                                 }
  14752.                             }
  14753.                             if ((num2 == num9 || num2 == num24) && (num7 == num9 || num7 == num24) && (num4 == num9 || num4 == num24) && (num5 == num9 || num5 == num24) && num != -1 && num3 != -1 && num6 != -1 && num8 != -1)
  14754.                             {
  14755.                                 if (num22 == 0)
  14756.                                 {
  14757.                                     rectangle.X = 18;
  14758.                                     rectangle.Y = 18;
  14759.                                 }
  14760.                                 if (num22 == 1)
  14761.                                 {
  14762.                                     rectangle.X = 36;
  14763.                                     rectangle.Y = 18;
  14764.                                 }
  14765.                                 if (num22 == 2)
  14766.                                 {
  14767.                                     rectangle.X = 54;
  14768.                                     rectangle.Y = 18;
  14769.                                 }
  14770.                             }
  14771.                             if (num2 == num24)
  14772.                             {
  14773.                                 num2 = -2;
  14774.                             }
  14775.                             if (num7 == num24)
  14776.                             {
  14777.                                 num7 = -2;
  14778.                             }
  14779.                             if (num4 == num24)
  14780.                             {
  14781.                                 num4 = -2;
  14782.                             }
  14783.                             if (num5 == num24)
  14784.                             {
  14785.                                 num5 = -2;
  14786.                             }
  14787.                             if (num == num24)
  14788.                             {
  14789.                                 num = -2;
  14790.                             }
  14791.                             if (num3 == num24)
  14792.                             {
  14793.                                 num3 = -2;
  14794.                             }
  14795.                             if (num6 == num24)
  14796.                             {
  14797.                                 num6 = -2;
  14798.                             }
  14799.                             if (num8 == num24)
  14800.                             {
  14801.                                 num8 = -2;
  14802.                             }
  14803.                         }
  14804.                         if ((num9 == 1 || num9 == 2 || num9 == 6 || num9 == 7 || num9 == 8 || num9 == 9 || num9 == 22 || num9 == 23 || num9 == 25 || num9 == 37 || num9 == 40 || num9 == 53 || num9 == 56 || num9 == 58 || num9 == 59 || num9 == 60 || num9 == 70) && rectangle.X == -1 && rectangle.Y == -1)
  14805.                         {
  14806.                             if (num2 >= 0 && num2 != num9)
  14807.                             {
  14808.                                 num2 = -1;
  14809.                             }
  14810.                             if (num7 >= 0 && num7 != num9)
  14811.                             {
  14812.                                 num7 = -1;
  14813.                             }
  14814.                             if (num4 >= 0 && num4 != num9)
  14815.                             {
  14816.                                 num4 = -1;
  14817.                             }
  14818.                             if (num5 >= 0 && num5 != num9)
  14819.                             {
  14820.                                 num5 = -1;
  14821.                             }
  14822.                             if (num2 != -1 && num7 != -1 && num4 != -1 && num5 != -1)
  14823.                             {
  14824.                                 if (num2 == -2 && num7 == num9 && num4 == num9 && num5 == num9)
  14825.                                 {
  14826.                                     if (num22 == 0)
  14827.                                     {
  14828.                                         rectangle.X = 144;
  14829.                                         rectangle.Y = 108;
  14830.                                     }
  14831.                                     if (num22 == 1)
  14832.                                     {
  14833.                                         rectangle.X = 162;
  14834.                                         rectangle.Y = 108;
  14835.                                     }
  14836.                                     if (num22 == 2)
  14837.                                     {
  14838.                                         rectangle.X = 180;
  14839.                                         rectangle.Y = 108;
  14840.                                     }
  14841.                                     WorldGen.mergeUp = true;
  14842.                                 }
  14843.                                 else
  14844.                                 {
  14845.                                     if (num2 == num9 && num7 == -2 && num4 == num9 && num5 == num9)
  14846.                                     {
  14847.                                         if (num22 == 0)
  14848.                                         {
  14849.                                             rectangle.X = 144;
  14850.                                             rectangle.Y = 90;
  14851.                                         }
  14852.                                         if (num22 == 1)
  14853.                                         {
  14854.                                             rectangle.X = 162;
  14855.                                             rectangle.Y = 90;
  14856.                                         }
  14857.                                         if (num22 == 2)
  14858.                                         {
  14859.                                             rectangle.X = 180;
  14860.                                             rectangle.Y = 90;
  14861.                                         }
  14862.                                         WorldGen.mergeDown = true;
  14863.                                     }
  14864.                                     else
  14865.                                     {
  14866.                                         if (num2 == num9 && num7 == num9 && num4 == -2 && num5 == num9)
  14867.                                         {
  14868.                                             if (num22 == 0)
  14869.                                             {
  14870.                                                 rectangle.X = 162;
  14871.                                                 rectangle.Y = 126;
  14872.                                             }
  14873.                                             if (num22 == 1)
  14874.                                             {
  14875.                                                 rectangle.X = 162;
  14876.                                                 rectangle.Y = 144;
  14877.                                             }
  14878.                                             if (num22 == 2)
  14879.                                             {
  14880.                                                 rectangle.X = 162;
  14881.                                                 rectangle.Y = 162;
  14882.                                             }
  14883.                                             WorldGen.mergeLeft = true;
  14884.                                         }
  14885.                                         else
  14886.                                         {
  14887.                                             if (num2 == num9 && num7 == num9 && num4 == num9 && num5 == -2)
  14888.                                             {
  14889.                                                 if (num22 == 0)
  14890.                                                 {
  14891.                                                     rectangle.X = 144;
  14892.                                                     rectangle.Y = 126;
  14893.                                                 }
  14894.                                                 if (num22 == 1)
  14895.                                                 {
  14896.                                                     rectangle.X = 144;
  14897.                                                     rectangle.Y = 144;
  14898.                                                 }
  14899.                                                 if (num22 == 2)
  14900.                                                 {
  14901.                                                     rectangle.X = 144;
  14902.                                                     rectangle.Y = 162;
  14903.                                                 }
  14904.                                                 WorldGen.mergeRight = true;
  14905.                                             }
  14906.                                             else
  14907.                                             {
  14908.                                                 if (num2 == -2 && num7 == num9 && num4 == -2 && num5 == num9)
  14909.                                                 {
  14910.                                                     if (num22 == 0)
  14911.                                                     {
  14912.                                                         rectangle.X = 36;
  14913.                                                         rectangle.Y = 90;
  14914.                                                     }
  14915.                                                     if (num22 == 1)
  14916.                                                     {
  14917.                                                         rectangle.X = 36;
  14918.                                                         rectangle.Y = 126;
  14919.                                                     }
  14920.                                                     if (num22 == 2)
  14921.                                                     {
  14922.                                                         rectangle.X = 36;
  14923.                                                         rectangle.Y = 162;
  14924.                                                     }
  14925.                                                     WorldGen.mergeUp = true;
  14926.                                                     WorldGen.mergeLeft = true;
  14927.                                                 }
  14928.                                                 else
  14929.                                                 {
  14930.                                                     if (num2 == -2 && num7 == num9 && num4 == num9 && num5 == -2)
  14931.                                                     {
  14932.                                                         if (num22 == 0)
  14933.                                                         {
  14934.                                                             rectangle.X = 54;
  14935.                                                             rectangle.Y = 90;
  14936.                                                         }
  14937.                                                         if (num22 == 1)
  14938.                                                         {
  14939.                                                             rectangle.X = 54;
  14940.                                                             rectangle.Y = 126;
  14941.                                                         }
  14942.                                                         if (num22 == 2)
  14943.                                                         {
  14944.                                                             rectangle.X = 54;
  14945.                                                             rectangle.Y = 162;
  14946.                                                         }
  14947.                                                         WorldGen.mergeUp = true;
  14948.                                                         WorldGen.mergeRight = true;
  14949.                                                     }
  14950.                                                     else
  14951.                                                     {
  14952.                                                         if (num2 == num9 && num7 == -2 && num4 == -2 && num5 == num9)
  14953.                                                         {
  14954.                                                             if (num22 == 0)
  14955.                                                             {
  14956.                                                                 rectangle.X = 36;
  14957.                                                                 rectangle.Y = 108;
  14958.                                                             }
  14959.                                                             if (num22 == 1)
  14960.                                                             {
  14961.                                                                 rectangle.X = 36;
  14962.                                                                 rectangle.Y = 144;
  14963.                                                             }
  14964.                                                             if (num22 == 2)
  14965.                                                             {
  14966.                                                                 rectangle.X = 36;
  14967.                                                                 rectangle.Y = 180;
  14968.                                                             }
  14969.                                                             WorldGen.mergeDown = true;
  14970.                                                             WorldGen.mergeLeft = true;
  14971.                                                         }
  14972.                                                         else
  14973.                                                         {
  14974.                                                             if (num2 == num9 && num7 == -2 && num4 == num9 && num5 == -2)
  14975.                                                             {
  14976.                                                                 if (num22 == 0)
  14977.                                                                 {
  14978.                                                                     rectangle.X = 54;
  14979.                                                                     rectangle.Y = 108;
  14980.                                                                 }
  14981.                                                                 if (num22 == 1)
  14982.                                                                 {
  14983.                                                                     rectangle.X = 54;
  14984.                                                                     rectangle.Y = 144;
  14985.                                                                 }
  14986.                                                                 if (num22 == 2)
  14987.                                                                 {
  14988.                                                                     rectangle.X = 54;
  14989.                                                                     rectangle.Y = 180;
  14990.                                                                 }
  14991.                                                                 WorldGen.mergeDown = true;
  14992.                                                                 WorldGen.mergeRight = true;
  14993.                                                             }
  14994.                                                             else
  14995.                                                             {
  14996.                                                                 if (num2 == num9 && num7 == num9 && num4 == -2 && num5 == -2)
  14997.                                                                 {
  14998.                                                                     if (num22 == 0)
  14999.                                                                     {
  15000.                                                                         rectangle.X = 180;
  15001.                                                                         rectangle.Y = 126;
  15002.                                                                     }
  15003.                                                                     if (num22 == 1)
  15004.                                                                     {
  15005.                                                                         rectangle.X = 180;
  15006.                                                                         rectangle.Y = 144;
  15007.                                                                     }
  15008.                                                                     if (num22 == 2)
  15009.                                                                     {
  15010.                                                                         rectangle.X = 180;
  15011.                                                                         rectangle.Y = 162;
  15012.                                                                     }
  15013.                                                                     WorldGen.mergeLeft = true;
  15014.                                                                     WorldGen.mergeRight = true;
  15015.                                                                 }
  15016.                                                                 else
  15017.                                                                 {
  15018.                                                                     if (num2 == -2 && num7 == -2 && num4 == num9 && num5 == num9)
  15019.                                                                     {
  15020.                                                                         if (num22 == 0)
  15021.                                                                         {
  15022.                                                                             rectangle.X = 144;
  15023.                                                                             rectangle.Y = 180;
  15024.                                                                         }
  15025.                                                                         if (num22 == 1)
  15026.                                                                         {
  15027.                                                                             rectangle.X = 162;
  15028.                                                                             rectangle.Y = 180;
  15029.                                                                         }
  15030.                                                                         if (num22 == 2)
  15031.                                                                         {
  15032.                                                                             rectangle.X = 180;
  15033.                                                                             rectangle.Y = 180;
  15034.                                                                         }
  15035.                                                                         WorldGen.mergeUp = true;
  15036.                                                                         WorldGen.mergeDown = true;
  15037.                                                                     }
  15038.                                                                     else
  15039.                                                                     {
  15040.                                                                         if (num2 == -2 && num7 == num9 && num4 == -2 && num5 == -2)
  15041.                                                                         {
  15042.                                                                             if (num22 == 0)
  15043.                                                                             {
  15044.                                                                                 rectangle.X = 198;
  15045.                                                                                 rectangle.Y = 90;
  15046.                                                                             }
  15047.                                                                             if (num22 == 1)
  15048.                                                                             {
  15049.                                                                                 rectangle.X = 198;
  15050.                                                                                 rectangle.Y = 108;
  15051.                                                                             }
  15052.                                                                             if (num22 == 2)
  15053.                                                                             {
  15054.                                                                                 rectangle.X = 198;
  15055.                                                                                 rectangle.Y = 126;
  15056.                                                                             }
  15057.                                                                             WorldGen.mergeUp = true;
  15058.                                                                             WorldGen.mergeLeft = true;
  15059.                                                                             WorldGen.mergeRight = true;
  15060.                                                                         }
  15061.                                                                         else
  15062.                                                                         {
  15063.                                                                             if (num2 == num9 && num7 == -2 && num4 == -2 && num5 == -2)
  15064.                                                                             {
  15065.                                                                                 if (num22 == 0)
  15066.                                                                                 {
  15067.                                                                                     rectangle.X = 198;
  15068.                                                                                     rectangle.Y = 144;
  15069.                                                                                 }
  15070.                                                                                 if (num22 == 1)
  15071.                                                                                 {
  15072.                                                                                     rectangle.X = 198;
  15073.                                                                                     rectangle.Y = 162;
  15074.                                                                                 }
  15075.                                                                                 if (num22 == 2)
  15076.                                                                                 {
  15077.                                                                                     rectangle.X = 198;
  15078.                                                                                     rectangle.Y = 180;
  15079.                                                                                 }
  15080.                                                                                 WorldGen.mergeDown = true;
  15081.                                                                                 WorldGen.mergeLeft = true;
  15082.                                                                                 WorldGen.mergeRight = true;
  15083.                                                                             }
  15084.                                                                             else
  15085.                                                                             {
  15086.                                                                                 if (num2 == -2 && num7 == -2 && num4 == num9 && num5 == -2)
  15087.                                                                                 {
  15088.                                                                                     if (num22 == 0)
  15089.                                                                                     {
  15090.                                                                                         rectangle.X = 216;
  15091.                                                                                         rectangle.Y = 144;
  15092.                                                                                     }
  15093.                                                                                     if (num22 == 1)
  15094.                                                                                     {
  15095.                                                                                         rectangle.X = 216;
  15096.                                                                                         rectangle.Y = 162;
  15097.                                                                                     }
  15098.                                                                                     if (num22 == 2)
  15099.                                                                                     {
  15100.                                                                                         rectangle.X = 216;
  15101.                                                                                         rectangle.Y = 180;
  15102.                                                                                     }
  15103.                                                                                     WorldGen.mergeUp = true;
  15104.                                                                                     WorldGen.mergeDown = true;
  15105.                                                                                     WorldGen.mergeRight = true;
  15106.                                                                                 }
  15107.                                                                                 else
  15108.                                                                                 {
  15109.                                                                                     if (num2 == -2 && num7 == -2 && num4 == -2 && num5 == num9)
  15110.                                                                                     {
  15111.                                                                                         if (num22 == 0)
  15112.                                                                                         {
  15113.                                                                                             rectangle.X = 216;
  15114.                                                                                             rectangle.Y = 90;
  15115.                                                                                         }
  15116.                                                                                         if (num22 == 1)
  15117.                                                                                         {
  15118.                                                                                             rectangle.X = 216;
  15119.                                                                                             rectangle.Y = 108;
  15120.                                                                                         }
  15121.                                                                                         if (num22 == 2)
  15122.                                                                                         {
  15123.                                                                                             rectangle.X = 216;
  15124.                                                                                             rectangle.Y = 126;
  15125.                                                                                         }
  15126.                                                                                         WorldGen.mergeUp = true;
  15127.                                                                                         WorldGen.mergeDown = true;
  15128.                                                                                         WorldGen.mergeLeft = true;
  15129.                                                                                     }
  15130.                                                                                     else
  15131.                                                                                     {
  15132.                                                                                         if (num2 == -2 && num7 == -2 && num4 == -2 && num5 == -2)
  15133.                                                                                         {
  15134.                                                                                             if (num22 == 0)
  15135.                                                                                             {
  15136.                                                                                                 rectangle.X = 108;
  15137.                                                                                                 rectangle.Y = 198;
  15138.                                                                                             }
  15139.                                                                                             if (num22 == 1)
  15140.                                                                                             {
  15141.                                                                                                 rectangle.X = 126;
  15142.                                                                                                 rectangle.Y = 198;
  15143.                                                                                             }
  15144.                                                                                             if (num22 == 2)
  15145.                                                                                             {
  15146.                                                                                                 rectangle.X = 144;
  15147.                                                                                                 rectangle.Y = 198;
  15148.                                                                                             }
  15149.                                                                                             WorldGen.mergeUp = true;
  15150.                                                                                             WorldGen.mergeDown = true;
  15151.                                                                                             WorldGen.mergeLeft = true;
  15152.                                                                                             WorldGen.mergeRight = true;
  15153.                                                                                         }
  15154.                                                                                         else
  15155.                                                                                         {
  15156.                                                                                             if (num2 == num9 && num7 == num9 && num4 == num9 && num5 == num9)
  15157.                                                                                             {
  15158.                                                                                                 if (num == -2)
  15159.                                                                                                 {
  15160.                                                                                                     if (num22 == 0)
  15161.                                                                                                     {
  15162.                                                                                                         rectangle.X = 18;
  15163.                                                                                                         rectangle.Y = 108;
  15164.                                                                                                     }
  15165.                                                                                                     if (num22 == 1)
  15166.                                                                                                     {
  15167.                                                                                                         rectangle.X = 18;
  15168.                                                                                                         rectangle.Y = 144;
  15169.                                                                                                     }
  15170.                                                                                                     if (num22 == 2)
  15171.                                                                                                     {
  15172.                                                                                                         rectangle.X = 18;
  15173.                                                                                                         rectangle.Y = 180;
  15174.                                                                                                     }
  15175.                                                                                                 }
  15176.                                                                                                 if (num3 == -2)
  15177.                                                                                                 {
  15178.                                                                                                     if (num22 == 0)
  15179.                                                                                                     {
  15180.                                                                                                         rectangle.X = 0;
  15181.                                                                                                         rectangle.Y = 108;
  15182.                                                                                                     }
  15183.                                                                                                     if (num22 == 1)
  15184.                                                                                                     {
  15185.                                                                                                         rectangle.X = 0;
  15186.                                                                                                         rectangle.Y = 144;
  15187.                                                                                                     }
  15188.                                                                                                     if (num22 == 2)
  15189.                                                                                                     {
  15190.                                                                                                         rectangle.X = 0;
  15191.                                                                                                         rectangle.Y = 180;
  15192.                                                                                                     }
  15193.                                                                                                 }
  15194.                                                                                                 if (num6 == -2)
  15195.                                                                                                 {
  15196.                                                                                                     if (num22 == 0)
  15197.                                                                                                     {
  15198.                                                                                                         rectangle.X = 18;
  15199.                                                                                                         rectangle.Y = 90;
  15200.                                                                                                     }
  15201.                                                                                                     if (num22 == 1)
  15202.                                                                                                     {
  15203.                                                                                                         rectangle.X = 18;
  15204.                                                                                                         rectangle.Y = 126;
  15205.                                                                                                     }
  15206.                                                                                                     if (num22 == 2)
  15207.                                                                                                     {
  15208.                                                                                                         rectangle.X = 18;
  15209.                                                                                                         rectangle.Y = 162;
  15210.                                                                                                     }
  15211.                                                                                                 }
  15212.                                                                                                 if (num8 == -2)
  15213.                                                                                                 {
  15214.                                                                                                     if (num22 == 0)
  15215.                                                                                                     {
  15216.                                                                                                         rectangle.X = 0;
  15217.                                                                                                         rectangle.Y = 90;
  15218.                                                                                                     }
  15219.                                                                                                     if (num22 == 1)
  15220.                                                                                                     {
  15221.                                                                                                         rectangle.X = 0;
  15222.                                                                                                         rectangle.Y = 126;
  15223.                                                                                                     }
  15224.                                                                                                     if (num22 == 2)
  15225.                                                                                                     {
  15226.                                                                                                         rectangle.X = 0;
  15227.                                                                                                         rectangle.Y = 162;
  15228.                                                                                                     }
  15229.                                                                                                 }
  15230.                                                                                             }
  15231.                                                                                         }
  15232.                                                                                     }
  15233.                                                                                 }
  15234.                                                                             }
  15235.                                                                         }
  15236.                                                                     }
  15237.                                                                 }
  15238.                                                             }
  15239.                                                         }
  15240.                                                     }
  15241.                                                 }
  15242.                                             }
  15243.                                         }
  15244.                                     }
  15245.                                 }
  15246.                             }
  15247.                             else
  15248.                             {
  15249.                                 if (num9 != 2 && num9 != 23 && num9 != 60 && num9 != 70)
  15250.                                 {
  15251.                                     if (num2 == -1 && num7 == -2 && num4 == num9 && num5 == num9)
  15252.                                     {
  15253.                                         if (num22 == 0)
  15254.                                         {
  15255.                                             rectangle.X = 234;
  15256.                                             rectangle.Y = 0;
  15257.                                         }
  15258.                                         if (num22 == 1)
  15259.                                         {
  15260.                                             rectangle.X = 252;
  15261.                                             rectangle.Y = 0;
  15262.                                         }
  15263.                                         if (num22 == 2)
  15264.                                         {
  15265.                                             rectangle.X = 270;
  15266.                                             rectangle.Y = 0;
  15267.                                         }
  15268.                                         WorldGen.mergeDown = true;
  15269.                                     }
  15270.                                     else
  15271.                                     {
  15272.                                         if (num2 == -2 && num7 == -1 && num4 == num9 && num5 == num9)
  15273.                                         {
  15274.                                             if (num22 == 0)
  15275.                                             {
  15276.                                                 rectangle.X = 234;
  15277.                                                 rectangle.Y = 18;
  15278.                                             }
  15279.                                             if (num22 == 1)
  15280.                                             {
  15281.                                                 rectangle.X = 252;
  15282.                                                 rectangle.Y = 18;
  15283.                                             }
  15284.                                             if (num22 == 2)
  15285.                                             {
  15286.                                                 rectangle.X = 270;
  15287.                                                 rectangle.Y = 18;
  15288.                                             }
  15289.                                             WorldGen.mergeUp = true;
  15290.                                         }
  15291.                                         else
  15292.                                         {
  15293.                                             if (num2 == num9 && num7 == num9 && num4 == -1 && num5 == -2)
  15294.                                             {
  15295.                                                 if (num22 == 0)
  15296.                                                 {
  15297.                                                     rectangle.X = 234;
  15298.                                                     rectangle.Y = 36;
  15299.                                                 }
  15300.                                                 if (num22 == 1)
  15301.                                                 {
  15302.                                                     rectangle.X = 252;
  15303.                                                     rectangle.Y = 36;
  15304.                                                 }
  15305.                                                 if (num22 == 2)
  15306.                                                 {
  15307.                                                     rectangle.X = 270;
  15308.                                                     rectangle.Y = 36;
  15309.                                                 }
  15310.                                                 WorldGen.mergeRight = true;
  15311.                                             }
  15312.                                             else
  15313.                                             {
  15314.                                                 if (num2 == num9 && num7 == num9 && num4 == -2 && num5 == -1)
  15315.                                                 {
  15316.                                                     if (num22 == 0)
  15317.                                                     {
  15318.                                                         rectangle.X = 234;
  15319.                                                         rectangle.Y = 54;
  15320.                                                     }
  15321.                                                     if (num22 == 1)
  15322.                                                     {
  15323.                                                         rectangle.X = 252;
  15324.                                                         rectangle.Y = 54;
  15325.                                                     }
  15326.                                                     if (num22 == 2)
  15327.                                                     {
  15328.                                                         rectangle.X = 270;
  15329.                                                         rectangle.Y = 54;
  15330.                                                     }
  15331.                                                     WorldGen.mergeLeft = true;
  15332.                                                 }
  15333.                                             }
  15334.                                         }
  15335.                                     }
  15336.                                 }
  15337.                                 if (num2 != -1 && num7 != -1 && num4 == -1 && num5 == num9)
  15338.                                 {
  15339.                                     if (num2 == -2 && num7 == num9)
  15340.                                     {
  15341.                                         if (num22 == 0)
  15342.                                         {
  15343.                                             rectangle.X = 72;
  15344.                                             rectangle.Y = 144;
  15345.                                         }
  15346.                                         if (num22 == 1)
  15347.                                         {
  15348.                                             rectangle.X = 72;
  15349.                                             rectangle.Y = 162;
  15350.                                         }
  15351.                                         if (num22 == 2)
  15352.                                         {
  15353.                                             rectangle.X = 72;
  15354.                                             rectangle.Y = 180;
  15355.                                         }
  15356.                                         WorldGen.mergeUp = true;
  15357.                                     }
  15358.                                     else
  15359.                                     {
  15360.                                         if (num7 == -2 && num2 == num9)
  15361.                                         {
  15362.                                             if (num22 == 0)
  15363.                                             {
  15364.                                                 rectangle.X = 72;
  15365.                                                 rectangle.Y = 90;
  15366.                                             }
  15367.                                             if (num22 == 1)
  15368.                                             {
  15369.                                                 rectangle.X = 72;
  15370.                                                 rectangle.Y = 108;
  15371.                                             }
  15372.                                             if (num22 == 2)
  15373.                                             {
  15374.                                                 rectangle.X = 72;
  15375.                                                 rectangle.Y = 126;
  15376.                                             }
  15377.                                             WorldGen.mergeDown = true;
  15378.                                         }
  15379.                                     }
  15380.                                 }
  15381.                                 else
  15382.                                 {
  15383.                                     if (num2 != -1 && num7 != -1 && num4 == num9 && num5 == -1)
  15384.                                     {
  15385.                                         if (num2 == -2 && num7 == num9)
  15386.                                         {
  15387.                                             if (num22 == 0)
  15388.                                             {
  15389.                                                 rectangle.X = 90;
  15390.                                                 rectangle.Y = 144;
  15391.                                             }
  15392.                                             if (num22 == 1)
  15393.                                             {
  15394.                                                 rectangle.X = 90;
  15395.                                                 rectangle.Y = 162;
  15396.                                             }
  15397.                                             if (num22 == 2)
  15398.                                             {
  15399.                                                 rectangle.X = 90;
  15400.                                                 rectangle.Y = 180;
  15401.                                             }
  15402.                                             WorldGen.mergeUp = true;
  15403.                                         }
  15404.                                         else
  15405.                                         {
  15406.                                             if (num7 == -2 && num2 == num9)
  15407.                                             {
  15408.                                                 if (num22 == 0)
  15409.                                                 {
  15410.                                                     rectangle.X = 90;
  15411.                                                     rectangle.Y = 90;
  15412.                                                 }
  15413.                                                 if (num22 == 1)
  15414.                                                 {
  15415.                                                     rectangle.X = 90;
  15416.                                                     rectangle.Y = 108;
  15417.                                                 }
  15418.                                                 if (num22 == 2)
  15419.                                                 {
  15420.                                                     rectangle.X = 90;
  15421.                                                     rectangle.Y = 126;
  15422.                                                 }
  15423.                                                 WorldGen.mergeDown = true;
  15424.                                             }
  15425.                                         }
  15426.                                     }
  15427.                                     else
  15428.                                     {
  15429.                                         if (num2 == -1 && num7 == num9 && num4 != -1 && num5 != -1)
  15430.                                         {
  15431.                                             if (num4 == -2 && num5 == num9)
  15432.                                             {
  15433.                                                 if (num22 == 0)
  15434.                                                 {
  15435.                                                     rectangle.X = 0;
  15436.                                                     rectangle.Y = 198;
  15437.                                                 }
  15438.                                                 if (num22 == 1)
  15439.                                                 {
  15440.                                                     rectangle.X = 18;
  15441.                                                     rectangle.Y = 198;
  15442.                                                 }
  15443.                                                 if (num22 == 2)
  15444.                                                 {
  15445.                                                     rectangle.X = 36;
  15446.                                                     rectangle.Y = 198;
  15447.                                                 }
  15448.                                                 WorldGen.mergeLeft = true;
  15449.                                             }
  15450.                                             else
  15451.                                             {
  15452.                                                 if (num5 == -2 && num4 == num9)
  15453.                                                 {
  15454.                                                     if (num22 == 0)
  15455.                                                     {
  15456.                                                         rectangle.X = 54;
  15457.                                                         rectangle.Y = 198;
  15458.                                                     }
  15459.                                                     if (num22 == 1)
  15460.                                                     {
  15461.                                                         rectangle.X = 72;
  15462.                                                         rectangle.Y = 198;
  15463.                                                     }
  15464.                                                     if (num22 == 2)
  15465.                                                     {
  15466.                                                         rectangle.X = 90;
  15467.                                                         rectangle.Y = 198;
  15468.                                                     }
  15469.                                                     WorldGen.mergeRight = true;
  15470.                                                 }
  15471.                                             }
  15472.                                         }
  15473.                                         else
  15474.                                         {
  15475.                                             if (num2 == num9 && num7 == -1 && num4 != -1 && num5 != -1)
  15476.                                             {
  15477.                                                 if (num4 == -2 && num5 == num9)
  15478.                                                 {
  15479.                                                     if (num22 == 0)
  15480.                                                     {
  15481.                                                         rectangle.X = 0;
  15482.                                                         rectangle.Y = 216;
  15483.                                                     }
  15484.                                                     if (num22 == 1)
  15485.                                                     {
  15486.                                                         rectangle.X = 18;
  15487.                                                         rectangle.Y = 216;
  15488.                                                     }
  15489.                                                     if (num22 == 2)
  15490.                                                     {
  15491.                                                         rectangle.X = 36;
  15492.                                                         rectangle.Y = 216;
  15493.                                                     }
  15494.                                                     WorldGen.mergeLeft = true;
  15495.                                                 }
  15496.                                                 else
  15497.                                                 {
  15498.                                                     if (num5 == -2 && num4 == num9)
  15499.                                                     {
  15500.                                                         if (num22 == 0)
  15501.                                                         {
  15502.                                                             rectangle.X = 54;
  15503.                                                             rectangle.Y = 216;
  15504.                                                         }
  15505.                                                         if (num22 == 1)
  15506.                                                         {
  15507.                                                             rectangle.X = 72;
  15508.                                                             rectangle.Y = 216;
  15509.                                                         }
  15510.                                                         if (num22 == 2)
  15511.                                                         {
  15512.                                                             rectangle.X = 90;
  15513.                                                             rectangle.Y = 216;
  15514.                                                         }
  15515.                                                         WorldGen.mergeRight = true;
  15516.                                                     }
  15517.                                                 }
  15518.                                             }
  15519.                                             else
  15520.                                             {
  15521.                                                 if (num2 != -1 && num7 != -1 && num4 == -1 && num5 == -1)
  15522.                                                 {
  15523.                                                     if (num2 == -2 && num7 == -2)
  15524.                                                     {
  15525.                                                         if (num22 == 0)
  15526.                                                         {
  15527.                                                             rectangle.X = 108;
  15528.                                                             rectangle.Y = 216;
  15529.                                                         }
  15530.                                                         if (num22 == 1)
  15531.                                                         {
  15532.                                                             rectangle.X = 108;
  15533.                                                             rectangle.Y = 234;
  15534.                                                         }
  15535.                                                         if (num22 == 2)
  15536.                                                         {
  15537.                                                             rectangle.X = 108;
  15538.                                                             rectangle.Y = 252;
  15539.                                                         }
  15540.                                                         WorldGen.mergeUp = true;
  15541.                                                         WorldGen.mergeDown = true;
  15542.                                                     }
  15543.                                                     else
  15544.                                                     {
  15545.                                                         if (num2 == -2)
  15546.                                                         {
  15547.                                                             if (num22 == 0)
  15548.                                                             {
  15549.                                                                 rectangle.X = 126;
  15550.                                                                 rectangle.Y = 144;
  15551.                                                             }
  15552.                                                             if (num22 == 1)
  15553.                                                             {
  15554.                                                                 rectangle.X = 126;
  15555.                                                                 rectangle.Y = 162;
  15556.                                                             }
  15557.                                                             if (num22 == 2)
  15558.                                                             {
  15559.                                                                 rectangle.X = 126;
  15560.                                                                 rectangle.Y = 180;
  15561.                                                             }
  15562.                                                             WorldGen.mergeUp = true;
  15563.                                                         }
  15564.                                                         else
  15565.                                                         {
  15566.                                                             if (num7 == -2)
  15567.                                                             {
  15568.                                                                 if (num22 == 0)
  15569.                                                                 {
  15570.                                                                     rectangle.X = 126;
  15571.                                                                     rectangle.Y = 90;
  15572.                                                                 }
  15573.                                                                 if (num22 == 1)
  15574.                                                                 {
  15575.                                                                     rectangle.X = 126;
  15576.                                                                     rectangle.Y = 108;
  15577.                                                                 }
  15578.                                                                 if (num22 == 2)
  15579.                                                                 {
  15580.                                                                     rectangle.X = 126;
  15581.                                                                     rectangle.Y = 126;
  15582.                                                                 }
  15583.                                                                 WorldGen.mergeDown = true;
  15584.                                                             }
  15585.                                                         }
  15586.                                                     }
  15587.                                                 }
  15588.                                                 else
  15589.                                                 {
  15590.                                                     if (num2 == -1 && num7 == -1 && num4 != -1 && num5 != -1)
  15591.                                                     {
  15592.                                                         if (num4 == -2 && num5 == -2)
  15593.                                                         {
  15594.                                                             if (num22 == 0)
  15595.                                                             {
  15596.                                                                 rectangle.X = 162;
  15597.                                                                 rectangle.Y = 198;
  15598.                                                             }
  15599.                                                             if (num22 == 1)
  15600.                                                             {
  15601.                                                                 rectangle.X = 180;
  15602.                                                                 rectangle.Y = 198;
  15603.                                                             }
  15604.                                                             if (num22 == 2)
  15605.                                                             {
  15606.                                                                 rectangle.X = 198;
  15607.                                                                 rectangle.Y = 198;
  15608.                                                             }
  15609.                                                             WorldGen.mergeLeft = true;
  15610.                                                             WorldGen.mergeRight = true;
  15611.                                                         }
  15612.                                                         else
  15613.                                                         {
  15614.                                                             if (num4 == -2)
  15615.                                                             {
  15616.                                                                 if (num22 == 0)
  15617.                                                                 {
  15618.                                                                     rectangle.X = 0;
  15619.                                                                     rectangle.Y = 252;
  15620.                                                                 }
  15621.                                                                 if (num22 == 1)
  15622.                                                                 {
  15623.                                                                     rectangle.X = 18;
  15624.                                                                     rectangle.Y = 252;
  15625.                                                                 }
  15626.                                                                 if (num22 == 2)
  15627.                                                                 {
  15628.                                                                     rectangle.X = 36;
  15629.                                                                     rectangle.Y = 252;
  15630.                                                                 }
  15631.                                                                 WorldGen.mergeLeft = true;
  15632.                                                             }
  15633.                                                             else
  15634.                                                             {
  15635.                                                                 if (num5 == -2)
  15636.                                                                 {
  15637.                                                                     if (num22 == 0)
  15638.                                                                     {
  15639.                                                                         rectangle.X = 54;
  15640.                                                                         rectangle.Y = 252;
  15641.                                                                     }
  15642.                                                                     if (num22 == 1)
  15643.                                                                     {
  15644.                                                                         rectangle.X = 72;
  15645.                                                                         rectangle.Y = 252;
  15646.                                                                     }
  15647.                                                                     if (num22 == 2)
  15648.                                                                     {
  15649.                                                                         rectangle.X = 90;
  15650.                                                                         rectangle.Y = 252;
  15651.                                                                     }
  15652.                                                                     WorldGen.mergeRight = true;
  15653.                                                                 }
  15654.                                                             }
  15655.                                                         }
  15656.                                                     }
  15657.                                                     else
  15658.                                                     {
  15659.                                                         if (num2 == -2 && num7 == -1 && num4 == -1 && num5 == -1)
  15660.                                                         {
  15661.                                                             if (num22 == 0)
  15662.                                                             {
  15663.                                                                 rectangle.X = 108;
  15664.                                                                 rectangle.Y = 144;
  15665.                                                             }
  15666.                                                             if (num22 == 1)
  15667.                                                             {
  15668.                                                                 rectangle.X = 108;
  15669.                                                                 rectangle.Y = 162;
  15670.                                                             }
  15671.                                                             if (num22 == 2)
  15672.                                                             {
  15673.                                                                 rectangle.X = 108;
  15674.                                                                 rectangle.Y = 180;
  15675.                                                             }
  15676.                                                             WorldGen.mergeUp = true;
  15677.                                                         }
  15678.                                                         else
  15679.                                                         {
  15680.                                                             if (num2 == -1 && num7 == -2 && num4 == -1 && num5 == -1)
  15681.                                                             {
  15682.                                                                 if (num22 == 0)
  15683.                                                                 {
  15684.                                                                     rectangle.X = 108;
  15685.                                                                     rectangle.Y = 90;
  15686.                                                                 }
  15687.                                                                 if (num22 == 1)
  15688.                                                                 {
  15689.                                                                     rectangle.X = 108;
  15690.                                                                     rectangle.Y = 108;
  15691.                                                                 }
  15692.                                                                 if (num22 == 2)
  15693.                                                                 {
  15694.                                                                     rectangle.X = 108;
  15695.                                                                     rectangle.Y = 126;
  15696.                                                                 }
  15697.                                                                 WorldGen.mergeDown = true;
  15698.                                                             }
  15699.                                                             else
  15700.                                                             {
  15701.                                                                 if (num2 == -1 && num7 == -1 && num4 == -2 && num5 == -1)
  15702.                                                                 {
  15703.                                                                     if (num22 == 0)
  15704.                                                                     {
  15705.                                                                         rectangle.X = 0;
  15706.                                                                         rectangle.Y = 234;
  15707.                                                                     }
  15708.                                                                     if (num22 == 1)
  15709.                                                                     {
  15710.                                                                         rectangle.X = 18;
  15711.                                                                         rectangle.Y = 234;
  15712.                                                                     }
  15713.                                                                     if (num22 == 2)
  15714.                                                                     {
  15715.                                                                         rectangle.X = 36;
  15716.                                                                         rectangle.Y = 234;
  15717.                                                                     }
  15718.                                                                     WorldGen.mergeLeft = true;
  15719.                                                                 }
  15720.                                                                 else
  15721.                                                                 {
  15722.                                                                     if (num2 == -1 && num7 == -1 && num4 == -1 && num5 == -2)
  15723.                                                                     {
  15724.                                                                         if (num22 == 0)
  15725.                                                                         {
  15726.                                                                             rectangle.X = 54;
  15727.                                                                             rectangle.Y = 234;
  15728.                                                                         }
  15729.                                                                         if (num22 == 1)
  15730.                                                                         {
  15731.                                                                             rectangle.X = 72;
  15732.                                                                             rectangle.Y = 234;
  15733.                                                                         }
  15734.                                                                         if (num22 == 2)
  15735.                                                                         {
  15736.                                                                             rectangle.X = 90;
  15737.                                                                             rectangle.Y = 234;
  15738.                                                                         }
  15739.                                                                         WorldGen.mergeRight = true;
  15740.                                                                     }
  15741.                                                                 }
  15742.                                                             }
  15743.                                                         }
  15744.                                                     }
  15745.                                                 }
  15746.                                             }
  15747.                                         }
  15748.                                     }
  15749.                                 }
  15750.                             }
  15751.                         }
  15752.                         if (rectangle.X < 0 || rectangle.Y < 0)
  15753.                         {
  15754.                             if (num9 == 2 || num9 == 23 || num9 == 60 || num9 == 70)
  15755.                             {
  15756.                                 if (num2 == -2)
  15757.                                 {
  15758.                                     num2 = num9;
  15759.                                 }
  15760.                                 if (num7 == -2)
  15761.                                 {
  15762.                                     num7 = num9;
  15763.                                 }
  15764.                                 if (num4 == -2)
  15765.                                 {
  15766.                                     num4 = num9;
  15767.                                 }
  15768.                                 if (num5 == -2)
  15769.                                 {
  15770.                                     num5 = num9;
  15771.                                 }
  15772.                                 if (num == -2)
  15773.                                 {
  15774.                                     num = num9;
  15775.                                 }
  15776.                                 if (num3 == -2)
  15777.                                 {
  15778.                                     num3 = num9;
  15779.                                 }
  15780.                                 if (num6 == -2)
  15781.                                 {
  15782.                                     num6 = num9;
  15783.                                 }
  15784.                                 if (num8 == -2)
  15785.                                 {
  15786.                                     num8 = num9;
  15787.                                 }
  15788.                             }
  15789.                             if (num2 == num9 && num7 == num9 && (num4 == num9 & num5 == num9))
  15790.                             {
  15791.                                 if (num != num9 && num3 != num9)
  15792.                                 {
  15793.                                     if (num22 == 0)
  15794.                                     {
  15795.                                         rectangle.X = 108;
  15796.                                         rectangle.Y = 18;
  15797.                                     }
  15798.                                     if (num22 == 1)
  15799.                                     {
  15800.                                         rectangle.X = 126;
  15801.                                         rectangle.Y = 18;
  15802.                                     }
  15803.                                     if (num22 == 2)
  15804.                                     {
  15805.                                         rectangle.X = 144;
  15806.                                         rectangle.Y = 18;
  15807.                                     }
  15808.                                 }
  15809.                                 else
  15810.                                 {
  15811.                                     if (num6 != num9 && num8 != num9)
  15812.                                     {
  15813.                                         if (num22 == 0)
  15814.                                         {
  15815.                                             rectangle.X = 108;
  15816.                                             rectangle.Y = 36;
  15817.                                         }
  15818.                                         if (num22 == 1)
  15819.                                         {
  15820.                                             rectangle.X = 126;
  15821.                                             rectangle.Y = 36;
  15822.                                         }
  15823.                                         if (num22 == 2)
  15824.                                         {
  15825.                                             rectangle.X = 144;
  15826.                                             rectangle.Y = 36;
  15827.                                         }
  15828.                                     }
  15829.                                     else
  15830.                                     {
  15831.                                         if (num != num9 && num6 != num9)
  15832.                                         {
  15833.                                             if (num22 == 0)
  15834.                                             {
  15835.                                                 rectangle.X = 180;
  15836.                                                 rectangle.Y = 0;
  15837.                                             }
  15838.                                             if (num22 == 1)
  15839.                                             {
  15840.                                                 rectangle.X = 180;
  15841.                                                 rectangle.Y = 18;
  15842.                                             }
  15843.                                             if (num22 == 2)
  15844.                                             {
  15845.                                                 rectangle.X = 180;
  15846.                                                 rectangle.Y = 36;
  15847.                                             }
  15848.                                         }
  15849.                                         else
  15850.                                         {
  15851.                                             if (num3 != num9 && num8 != num9)
  15852.                                             {
  15853.                                                 if (num22 == 0)
  15854.                                                 {
  15855.                                                     rectangle.X = 198;
  15856.                                                     rectangle.Y = 0;
  15857.                                                 }
  15858.                                                 if (num22 == 1)
  15859.                                                 {
  15860.                                                     rectangle.X = 198;
  15861.                                                     rectangle.Y = 18;
  15862.                                                 }
  15863.                                                 if (num22 == 2)
  15864.                                                 {
  15865.                                                     rectangle.X = 198;
  15866.                                                     rectangle.Y = 36;
  15867.                                                 }
  15868.                                             }
  15869.                                             else
  15870.                                             {
  15871.                                                 if (num22 == 0)
  15872.                                                 {
  15873.                                                     rectangle.X = 18;
  15874.                                                     rectangle.Y = 18;
  15875.                                                 }
  15876.                                                 if (num22 == 1)
  15877.                                                 {
  15878.                                                     rectangle.X = 36;
  15879.                                                     rectangle.Y = 18;
  15880.                                                 }
  15881.                                                 if (num22 == 2)
  15882.                                                 {
  15883.                                                     rectangle.X = 54;
  15884.                                                     rectangle.Y = 18;
  15885.                                                 }
  15886.                                             }
  15887.                                         }
  15888.                                     }
  15889.                                 }
  15890.                             }
  15891.                             else
  15892.                             {
  15893.                                 if (num2 != num9 && num7 == num9 && (num4 == num9 & num5 == num9))
  15894.                                 {
  15895.                                     if (num22 == 0)
  15896.                                     {
  15897.                                         rectangle.X = 18;
  15898.                                         rectangle.Y = 0;
  15899.                                     }
  15900.                                     if (num22 == 1)
  15901.                                     {
  15902.                                         rectangle.X = 36;
  15903.                                         rectangle.Y = 0;
  15904.                                     }
  15905.                                     if (num22 == 2)
  15906.                                     {
  15907.                                         rectangle.X = 54;
  15908.                                         rectangle.Y = 0;
  15909.                                     }
  15910.                                 }
  15911.                                 else
  15912.                                 {
  15913.                                     if (num2 == num9 && num7 != num9 && (num4 == num9 & num5 == num9))
  15914.                                     {
  15915.                                         if (num22 == 0)
  15916.                                         {
  15917.                                             rectangle.X = 18;
  15918.                                             rectangle.Y = 36;
  15919.                                         }
  15920.                                         if (num22 == 1)
  15921.                                         {
  15922.                                             rectangle.X = 36;
  15923.                                             rectangle.Y = 36;
  15924.                                         }
  15925.                                         if (num22 == 2)
  15926.                                         {
  15927.                                             rectangle.X = 54;
  15928.                                             rectangle.Y = 36;
  15929.                                         }
  15930.                                     }
  15931.                                     else
  15932.                                     {
  15933.                                         if (num2 == num9 && num7 == num9 && (num4 != num9 & num5 == num9))
  15934.                                         {
  15935.                                             if (num22 == 0)
  15936.                                             {
  15937.                                                 rectangle.X = 0;
  15938.                                                 rectangle.Y = 0;
  15939.                                             }
  15940.                                             if (num22 == 1)
  15941.                                             {
  15942.                                                 rectangle.X = 0;
  15943.                                                 rectangle.Y = 18;
  15944.                                             }
  15945.                                             if (num22 == 2)
  15946.                                             {
  15947.                                                 rectangle.X = 0;
  15948.                                                 rectangle.Y = 36;
  15949.                                             }
  15950.                                         }
  15951.                                         else
  15952.                                         {
  15953.                                             if (num2 == num9 && num7 == num9 && (num4 == num9 & num5 != num9))
  15954.                                             {
  15955.                                                 if (num22 == 0)
  15956.                                                 {
  15957.                                                     rectangle.X = 72;
  15958.                                                     rectangle.Y = 0;
  15959.                                                 }
  15960.                                                 if (num22 == 1)
  15961.                                                 {
  15962.                                                     rectangle.X = 72;
  15963.                                                     rectangle.Y = 18;
  15964.                                                 }
  15965.                                                 if (num22 == 2)
  15966.                                                 {
  15967.                                                     rectangle.X = 72;
  15968.                                                     rectangle.Y = 36;
  15969.                                                 }
  15970.                                             }
  15971.                                             else
  15972.                                             {
  15973.                                                 if (num2 != num9 && num7 == num9 && (num4 != num9 & num5 == num9))
  15974.                                                 {
  15975.                                                     if (num22 == 0)
  15976.                                                     {
  15977.                                                         rectangle.X = 0;
  15978.                                                         rectangle.Y = 54;
  15979.                                                     }
  15980.                                                     if (num22 == 1)
  15981.                                                     {
  15982.                                                         rectangle.X = 36;
  15983.                                                         rectangle.Y = 54;
  15984.                                                     }
  15985.                                                     if (num22 == 2)
  15986.                                                     {
  15987.                                                         rectangle.X = 72;
  15988.                                                         rectangle.Y = 54;
  15989.                                                     }
  15990.                                                 }
  15991.                                                 else
  15992.                                                 {
  15993.                                                     if (num2 != num9 && num7 == num9 && (num4 == num9 & num5 != num9))
  15994.                                                     {
  15995.                                                         if (num22 == 0)
  15996.                                                         {
  15997.                                                             rectangle.X = 18;
  15998.                                                             rectangle.Y = 54;
  15999.                                                         }
  16000.                                                         if (num22 == 1)
  16001.                                                         {
  16002.                                                             rectangle.X = 54;
  16003.                                                             rectangle.Y = 54;
  16004.                                                         }
  16005.                                                         if (num22 == 2)
  16006.                                                         {
  16007.                                                             rectangle.X = 90;
  16008.                                                             rectangle.Y = 54;
  16009.                                                         }
  16010.                                                     }
  16011.                                                     else
  16012.                                                     {
  16013.                                                         if (num2 == num9 && num7 != num9 && (num4 != num9 & num5 == num9))
  16014.                                                         {
  16015.                                                             if (num22 == 0)
  16016.                                                             {
  16017.                                                                 rectangle.X = 0;
  16018.                                                                 rectangle.Y = 72;
  16019.                                                             }
  16020.                                                             if (num22 == 1)
  16021.                                                             {
  16022.                                                                 rectangle.X = 36;
  16023.                                                                 rectangle.Y = 72;
  16024.                                                             }
  16025.                                                             if (num22 == 2)
  16026.                                                             {
  16027.                                                                 rectangle.X = 72;
  16028.                                                                 rectangle.Y = 72;
  16029.                                                             }
  16030.                                                         }
  16031.                                                         else
  16032.                                                         {
  16033.                                                             if (num2 == num9 && num7 != num9 && (num4 == num9 & num5 != num9))
  16034.                                                             {
  16035.                                                                 if (num22 == 0)
  16036.                                                                 {
  16037.                                                                     rectangle.X = 18;
  16038.                                                                     rectangle.Y = 72;
  16039.                                                                 }
  16040.                                                                 if (num22 == 1)
  16041.                                                                 {
  16042.                                                                     rectangle.X = 54;
  16043.                                                                     rectangle.Y = 72;
  16044.                                                                 }
  16045.                                                                 if (num22 == 2)
  16046.                                                                 {
  16047.                                                                     rectangle.X = 90;
  16048.                                                                     rectangle.Y = 72;
  16049.                                                                 }
  16050.                                                             }
  16051.                                                             else
  16052.                                                             {
  16053.                                                                 if (num2 == num9 && num7 == num9 && (num4 != num9 & num5 != num9))
  16054.                                                                 {
  16055.                                                                     if (num22 == 0)
  16056.                                                                     {
  16057.                                                                         rectangle.X = 90;
  16058.                                                                         rectangle.Y = 0;
  16059.                                                                     }
  16060.                                                                     if (num22 == 1)
  16061.                                                                     {
  16062.                                                                         rectangle.X = 90;
  16063.                                                                         rectangle.Y = 18;
  16064.                                                                     }
  16065.                                                                     if (num22 == 2)
  16066.                                                                     {
  16067.                                                                         rectangle.X = 90;
  16068.                                                                         rectangle.Y = 36;
  16069.                                                                     }
  16070.                                                                 }
  16071.                                                                 else
  16072.                                                                 {
  16073.                                                                     if (num2 != num9 && num7 != num9 && (num4 == num9 & num5 == num9))
  16074.                                                                     {
  16075.                                                                         if (num22 == 0)
  16076.                                                                         {
  16077.                                                                             rectangle.X = 108;
  16078.                                                                             rectangle.Y = 72;
  16079.                                                                         }
  16080.                                                                         if (num22 == 1)
  16081.                                                                         {
  16082.                                                                             rectangle.X = 126;
  16083.                                                                             rectangle.Y = 72;
  16084.                                                                         }
  16085.                                                                         if (num22 == 2)
  16086.                                                                         {
  16087.                                                                             rectangle.X = 144;
  16088.                                                                             rectangle.Y = 72;
  16089.                                                                         }
  16090.                                                                     }
  16091.                                                                     else
  16092.                                                                     {
  16093.                                                                         if (num2 != num9 && num7 == num9 && (num4 != num9 & num5 != num9))
  16094.                                                                         {
  16095.                                                                             if (num22 == 0)
  16096.                                                                             {
  16097.                                                                                 rectangle.X = 108;
  16098.                                                                                 rectangle.Y = 0;
  16099.                                                                             }
  16100.                                                                             if (num22 == 1)
  16101.                                                                             {
  16102.                                                                                 rectangle.X = 126;
  16103.                                                                                 rectangle.Y = 0;
  16104.                                                                             }
  16105.                                                                             if (num22 == 2)
  16106.                                                                             {
  16107.                                                                                 rectangle.X = 144;
  16108.                                                                                 rectangle.Y = 0;
  16109.                                                                             }
  16110.                                                                         }
  16111.                                                                         else
  16112.                                                                         {
  16113.                                                                             if (num2 == num9 && num7 != num9 && (num4 != num9 & num5 != num9))
  16114.                                                                             {
  16115.                                                                                 if (num22 == 0)
  16116.                                                                                 {
  16117.                                                                                     rectangle.X = 108;
  16118.                                                                                     rectangle.Y = 54;
  16119.                                                                                 }
  16120.                                                                                 if (num22 == 1)
  16121.                                                                                 {
  16122.                                                                                     rectangle.X = 126;
  16123.                                                                                     rectangle.Y = 54;
  16124.                                                                                 }
  16125.                                                                                 if (num22 == 2)
  16126.                                                                                 {
  16127.                                                                                     rectangle.X = 144;
  16128.                                                                                     rectangle.Y = 54;
  16129.                                                                                 }
  16130.                                                                             }
  16131.                                                                             else
  16132.                                                                             {
  16133.                                                                                 if (num2 != num9 && num7 != num9 && (num4 != num9 & num5 == num9))
  16134.                                                                                 {
  16135.                                                                                     if (num22 == 0)
  16136.                                                                                     {
  16137.                                                                                         rectangle.X = 162;
  16138.                                                                                         rectangle.Y = 0;
  16139.                                                                                     }
  16140.                                                                                     if (num22 == 1)
  16141.                                                                                     {
  16142.                                                                                         rectangle.X = 162;
  16143.                                                                                         rectangle.Y = 18;
  16144.                                                                                     }
  16145.                                                                                     if (num22 == 2)
  16146.                                                                                     {
  16147.                                                                                         rectangle.X = 162;
  16148.                                                                                         rectangle.Y = 36;
  16149.                                                                                     }
  16150.                                                                                 }
  16151.                                                                                 else
  16152.                                                                                 {
  16153.                                                                                     if (num2 != num9 && num7 != num9 && (num4 == num9 & num5 != num9))
  16154.                                                                                     {
  16155.                                                                                         if (num22 == 0)
  16156.                                                                                         {
  16157.                                                                                             rectangle.X = 216;
  16158.                                                                                             rectangle.Y = 0;
  16159.                                                                                         }
  16160.                                                                                         if (num22 == 1)
  16161.                                                                                         {
  16162.                                                                                             rectangle.X = 216;
  16163.                                                                                             rectangle.Y = 18;
  16164.                                                                                         }
  16165.                                                                                         if (num22 == 2)
  16166.                                                                                         {
  16167.                                                                                             rectangle.X = 216;
  16168.                                                                                             rectangle.Y = 36;
  16169.                                                                                         }
  16170.                                                                                     }
  16171.                                                                                     else
  16172.                                                                                     {
  16173.                                                                                         if (num2 != num9 && num7 != num9 && (num4 != num9 & num5 != num9))
  16174.                                                                                         {
  16175.                                                                                             if (num22 == 0)
  16176.                                                                                             {
  16177.                                                                                                 rectangle.X = 162;
  16178.                                                                                                 rectangle.Y = 54;
  16179.                                                                                             }
  16180.                                                                                             if (num22 == 1)
  16181.                                                                                             {
  16182.                                                                                                 rectangle.X = 180;
  16183.                                                                                                 rectangle.Y = 54;
  16184.                                                                                             }
  16185.                                                                                             if (num22 == 2)
  16186.                                                                                             {
  16187.                                                                                                 rectangle.X = 198;
  16188.                                                                                                 rectangle.Y = 54;
  16189.                                                                                             }
  16190.                                                                                         }
  16191.                                                                                     }
  16192.                                                                                 }
  16193.                                                                             }
  16194.                                                                         }
  16195.                                                                     }
  16196.                                                                 }
  16197.                                                             }
  16198.                                                         }
  16199.                                                     }
  16200.                                                 }
  16201.                                             }
  16202.                                         }
  16203.                                     }
  16204.                                 }
  16205.                             }
  16206.                         }
  16207.                         if (rectangle.X <= -1 || rectangle.Y <= -1)
  16208.                         {
  16209.                             if (num22 <= 0)
  16210.                             {
  16211.                                 rectangle.X = 18;
  16212.                                 rectangle.Y = 18;
  16213.                             }
  16214.                             if (num22 == 1)
  16215.                             {
  16216.                                 rectangle.X = 36;
  16217.                                 rectangle.Y = 18;
  16218.                             }
  16219.                             if (num22 >= 2)
  16220.                             {
  16221.                                 rectangle.X = 54;
  16222.                                 rectangle.Y = 18;
  16223.                             }
  16224.                         }
  16225.                         Main.tile[i, j].frameX = (short)rectangle.X;
  16226.                         Main.tile[i, j].frameY = (short)rectangle.Y;
  16227.                         if (num9 == 52 || num9 == 62)
  16228.                         {
  16229.                             if (Main.tile[i, j - 1] != null)
  16230.                             {
  16231.                                 if (!Main.tile[i, j - 1].active)
  16232.                                 {
  16233.                                     num2 = -1;
  16234.                                 }
  16235.                                 else
  16236.                                 {
  16237.                                     num2 = (int)Main.tile[i, j - 1].type;
  16238.                                 }
  16239.                             }
  16240.                             else
  16241.                             {
  16242.                                 num2 = num9;
  16243.                             }
  16244.                             if (num2 != num9 && num2 != 2 && num2 != 60)
  16245.                             {
  16246.                                 WorldGen.KillTile(i, j, false, false, false);
  16247.                             }
  16248.                         }
  16249.                         if (num9 == 53)
  16250.                         {
  16251.                             if (Main.netMode == 0)
  16252.                             {
  16253.                                 if (Main.tile[i, j + 1] != null && !Main.tile[i, j + 1].active)
  16254.                                 {
  16255.                                     bool flag3 = true;
  16256.                                     if (Main.tile[i, j - 1].active && Main.tile[i, j - 1].type == 21)
  16257.                                     {
  16258.                                         flag3 = false;
  16259.                                     }
  16260.                                     if (flag3)
  16261.                                     {
  16262.                                         Main.tile[i, j].active = false;
  16263.                                         Projectile.NewProjectile((float)(i * 16 + 8), (float)(j * 16 + 8), 0f, 0.41f, 31, 10, 0f, Main.myPlayer);
  16264.                                         WorldGen.SquareTileFrame(i, j, true);
  16265.                                     }
  16266.                                 }
  16267.                             }
  16268.                             else
  16269.                             {
  16270.                                 if (Main.netMode == 2 && Main.tile[i, j + 1] != null && !Main.tile[i, j + 1].active)
  16271.                                 {
  16272.                                     bool flag4 = true;
  16273.                                     if (Main.tile[i, j - 1].active && Main.tile[i, j - 1].type == 21)
  16274.                                     {
  16275.                                         flag4 = false;
  16276.                                     }
  16277.                                     if (flag4)
  16278.                                     {
  16279.                                         Main.tile[i, j].active = false;
  16280.                                         int num25 = Projectile.NewProjectile((float)(i * 16 + 8), (float)(j * 16 + 8), 0f, 0.41f, 31, 10, 0f, Main.myPlayer);
  16281.                                         Main.projectile[num25].velocity.Y = 0.5f;
  16282.                                         Projectile expr_652F_cp_0 = Main.projectile[num25];
  16283.                                         expr_652F_cp_0.position.Y = expr_652F_cp_0.position.Y + 2f;
  16284.                                         NetMessage.SendTileSquare(-1, i, j, 1);
  16285.                                         WorldGen.SquareTileFrame(i, j, true);
  16286.                                     }
  16287.                                 }
  16288.                             }
  16289.                         }
  16290.                         if (rectangle.X != frameX && rectangle.Y != frameY && frameX >= 0 && frameY >= 0)
  16291.                         {
  16292.                             bool flag5 = WorldGen.mergeUp;
  16293.                             bool flag6 = WorldGen.mergeDown;
  16294.                             bool flag7 = WorldGen.mergeLeft;
  16295.                             bool flag8 = WorldGen.mergeRight;
  16296.                             WorldGen.TileFrame(i - 1, j, false, false);
  16297.                             WorldGen.TileFrame(i + 1, j, false, false);
  16298.                             WorldGen.TileFrame(i, j - 1, false, false);
  16299.                             WorldGen.TileFrame(i, j + 1, false, false);
  16300.                             WorldGen.mergeUp = flag5;
  16301.                             WorldGen.mergeDown = flag6;
  16302.                             WorldGen.mergeLeft = flag7;
  16303.                             WorldGen.mergeRight = flag8;
  16304.                         }
  16305.                     }
  16306.                 }
  16307.             }
  16308.         }
  16309.     }
  16310. }
Advertisement
Add Comment
Please, Sign In to add comment