// Decompiled with JetBrains decompiler // Type: Terraria.WorldGen // Assembly: Terraria, Version=1.0.4.0, Culture=neutral, PublicKeyToken=null // MVID: FF258283-FE37-4E8A-A035-CB1E6DC74C3C // Assembly location: C:\Users\mikeyisbaeyt\Downloads\depotdownloader-2.4.5\depots\105601\6707058\Terraria.exe using Microsoft.Xna.Framework; using System; using System.Diagnostics; using System.IO; using System.Threading; namespace Terraria { internal class WorldGen { public static int c = 0; public static int m = 0; public static int a = 0; public static int co = 0; public static int ir = 0; public static int si = 0; public static int go = 0; public static int maxMech = 1000; public static int[] mechX = new int[WorldGen.maxMech]; public static int[] mechY = new int[WorldGen.maxMech]; public static int numMechs = 0; public static int[] mechTime = new int[WorldGen.maxMech]; public static int maxWire = 1000; public static int[] wireX = new int[WorldGen.maxWire]; public static int[] wireY = new int[WorldGen.maxWire]; public static int numWire = 0; public static int[] noWireX = new int[WorldGen.maxWire]; public static int[] noWireY = new int[WorldGen.maxWire]; public static int numNoWire = 0; public static int maxPump = 20; public static int[] inPumpX = new int[WorldGen.maxPump]; public static int[] inPumpY = new int[WorldGen.maxPump]; public static int numInPump = 0; public static int[] outPumpX = new int[WorldGen.maxPump]; public static int[] outPumpY = new int[WorldGen.maxPump]; public static int numOutPump = 0; public static int totalEvil = 0; public static int totalGood = 0; public static int totalSolid = 0; public static int totalEvil2 = 0; public static int totalGood2 = 0; public static int totalSolid2 = 0; public static byte tEvil = 0; public static byte tGood = 0; public static int totalX = 0; public static int totalD = 0; public static bool hardLock = false; private static object padlock = new object(); public static int lavaLine; public static int waterLine; public static bool noTileActions = false; public static bool spawnEye = false; public static bool gen = false; public static bool shadowOrbSmashed = false; public static int shadowOrbCount = 0; public static int altarCount = 0; public static bool spawnMeteor = false; public static bool loadFailed = false; public static bool loadSuccess = false; public static bool worldCleared = false; public static bool worldBackup = false; public static bool loadBackup = false; private static int lastMaxTilesX = 0; private static int lastMaxTilesY = 0; public static bool saveLock = false; private static bool mergeUp = false; private static bool mergeDown = false; private static bool mergeLeft = false; private static bool mergeRight = false; private static int tempMoonPhase = Main.moonPhase; private static bool tempDayTime = Main.dayTime; private static bool tempBloodMoon = Main.bloodMoon; private static double tempTime = Main.time; private static bool stopDrops = false; private static bool mudWall = false; private static int grassSpread = 0; public static bool noLiquidCheck = false; [ThreadStatic] public static Random genRand = new Random(); public static string statusText = ""; public static bool destroyObject = false; public static int spawnDelay = 0; public static int spawnNPC = 0; public static int maxRoomTiles = 1900; public static int numRoomTiles; public static int[] roomX = new int[WorldGen.maxRoomTiles]; public static int[] roomY = new int[WorldGen.maxRoomTiles]; public static int roomX1; public static int roomX2; public static int roomY1; public static int roomY2; public static bool canSpawn; public static bool[] houseTile = new bool[150]; public static int bestX = 0; public static int bestY = 0; public static int hiScore = 0; public static int dungeonX; public static int dungeonY; public static Vector2 lastDungeonHall = new Vector2(); public static int maxDRooms = 100; public static int numDRooms = 0; public static int[] dRoomX = new int[WorldGen.maxDRooms]; public static int[] dRoomY = new int[WorldGen.maxDRooms]; public static int[] dRoomSize = new int[WorldGen.maxDRooms]; private static bool[] dRoomTreasure = new bool[WorldGen.maxDRooms]; private static int[] dRoomL = new int[WorldGen.maxDRooms]; private static int[] dRoomR = new int[WorldGen.maxDRooms]; private static int[] dRoomT = new int[WorldGen.maxDRooms]; private static int[] dRoomB = new int[WorldGen.maxDRooms]; private static int numDDoors; private static int[] DDoorX = new int[300]; private static int[] DDoorY = new int[300]; private static int[] DDoorPos = new int[300]; private static int numDPlats; private static int[] DPlatX = new int[300]; private static int[] DPlatY = new int[300]; private static int[] JChestX = new int[100]; private static int[] JChestY = new int[100]; private static int numJChests = 0; public static int dEnteranceX = 0; public static bool dSurface = false; private static double dxStrength1; private static double dyStrength1; private static double dxStrength2; private static double dyStrength2; private static int dMinX; private static int dMaxX; private static int dMinY; private static int dMaxY; private static int numIslandHouses = 0; private static int houseCount = 0; private static int[] fihX = new int[300]; private static int[] fihY = new int[300]; private static int numMCaves = 0; private static int[] mCaveX = new int[300]; private static int[] mCaveY = new int[300]; private static int JungleX = 0; private static int hellChest = 0; private static bool roomTorch; private static bool roomDoor; private static bool roomChair; private static bool roomTable; private static bool roomOccupied; private static bool roomEvil; public static bool MoveNPC(int x, int y, int n) { if (!WorldGen.StartRoomCheck(x, y)) { Main.NewText(Lang.inter[40], G: (byte) 240, B: (byte) 20); return false; } if (!WorldGen.RoomNeeds(WorldGen.spawnNPC)) { if (Lang.lang <= 1) { int index1 = 0; string[] strArray = new string[4]; if (!WorldGen.roomTorch) { strArray[index1] = "a light source"; ++index1; } if (!WorldGen.roomDoor) { strArray[index1] = "a door"; ++index1; } if (!WorldGen.roomTable) { strArray[index1] = "a table"; ++index1; } if (!WorldGen.roomChair) { strArray[index1] = "a chair"; ++index1; } string str = ""; for (int index2 = 0; index2 < index1; ++index2) { if (index1 == 2 && index2 == 1) str += " and "; else if (index2 > 0 && index2 != index1 - 1) str += ", and "; else if (index2 > 0) str += ", "; str += strArray[index2]; } Main.NewText("This housing is missing " + str + ".", G: (byte) 240, B: (byte) 20); } else Main.NewText(Lang.inter[39], G: (byte) 240, B: (byte) 20); return false; } WorldGen.ScoreRoom(); if (WorldGen.hiScore > 0) return true; if (WorldGen.roomOccupied) Main.NewText(Lang.inter[41], G: (byte) 240, B: (byte) 20); else if (WorldGen.roomEvil) Main.NewText(Lang.inter[42], G: (byte) 240, B: (byte) 20); else Main.NewText(Lang.inter[39], G: (byte) 240, B: (byte) 20); return false; } public static void moveRoom(int x, int y, int n) { if (Main.netMode == 1) { NetMessage.SendData(60, number: n, number2: ((float) x), number3: ((float) y), number4: 1f); } else { WorldGen.spawnNPC = Main.npc[n].type; Main.npc[n].homeless = true; WorldGen.SpawnNPC(x, y); } } public static void kickOut(int n) { if (Main.netMode == 1) NetMessage.SendData(60, number: n); else Main.npc[n].homeless = true; } public static void SpawnNPC(int x, int y) { if (Main.wallHouse[(int) Main.tile[x, y].wall]) WorldGen.canSpawn = true; if (!WorldGen.canSpawn || !WorldGen.StartRoomCheck(x, y) || !WorldGen.RoomNeeds(WorldGen.spawnNPC)) return; WorldGen.ScoreRoom(); if (WorldGen.hiScore <= 0) return; int index1 = -1; for (int index2 = 0; index2 < 200; ++index2) { if (Main.npc[index2].active && Main.npc[index2].homeless && Main.npc[index2].type == WorldGen.spawnNPC) { index1 = index2; break; } } if (index1 == -1) { int index3 = WorldGen.bestX; int index4 = WorldGen.bestY; bool flag = false; if (!flag) { flag = true; Rectangle rectangle = new Rectangle(index3 * 16 + 8 - NPC.sWidth / 2 - NPC.safeRangeX, index4 * 16 + 8 - NPC.sHeight / 2 - NPC.safeRangeY, NPC.sWidth + NPC.safeRangeX * 2, NPC.sHeight + NPC.safeRangeY * 2); for (int index5 = 0; index5 < (int) byte.MaxValue; ++index5) { if (Main.player[index5].active && new Rectangle((int) Main.player[index5].position.X, (int) Main.player[index5].position.Y, Main.player[index5].width, Main.player[index5].height).Intersects(rectangle)) { flag = false; break; } } } if (!flag && (double) index4 <= Main.worldSurface) { for (int index6 = 1; index6 < 500; ++index6) { for (int index7 = 0; index7 < 2; ++index7) { index3 = index7 != 0 ? WorldGen.bestX - index6 : WorldGen.bestX + index6; if (index3 > 10 && index3 < Main.maxTilesX - 10) { int num1 = WorldGen.bestY - index6; double num2 = (double) (WorldGen.bestY + index6); if (num1 < 10) num1 = 10; if (num2 > Main.worldSurface) num2 = Main.worldSurface; for (int index8 = num1; (double) index8 < num2; ++index8) { index4 = index8; if (Main.tile[index3, index4].active && Main.tileSolid[(int) Main.tile[index3, index4].type]) { if (!Collision.SolidTiles(index3 - 1, index3 + 1, index4 - 3, index4 - 1)) { flag = true; Rectangle rectangle = new Rectangle(index3 * 16 + 8 - NPC.sWidth / 2 - NPC.safeRangeX, index4 * 16 + 8 - NPC.sHeight / 2 - NPC.safeRangeY, NPC.sWidth + NPC.safeRangeX * 2, NPC.sHeight + NPC.safeRangeY * 2); for (int index9 = 0; index9 < (int) byte.MaxValue; ++index9) { if (Main.player[index9].active && new Rectangle((int) Main.player[index9].position.X, (int) Main.player[index9].position.Y, Main.player[index9].width, Main.player[index9].height).Intersects(rectangle)) { flag = false; break; } } break; } break; } } } if (flag) break; } if (flag) break; } } int index10 = NPC.NewNPC(index3 * 16, index4 * 16, WorldGen.spawnNPC, 1); Main.npc[index10].homeTileX = WorldGen.bestX; Main.npc[index10].homeTileY = WorldGen.bestY; if (index3 < WorldGen.bestX) Main.npc[index10].direction = 1; else if (index3 > WorldGen.bestX) Main.npc[index10].direction = -1; Main.npc[index10].netUpdate = true; string str = Main.npc[index10].name; if (Main.chrName[Main.npc[index10].type] != "") str = Lang.lang > 1 ? Main.chrName[Main.npc[index10].type] : Main.chrName[Main.npc[index10].type] + " " + Lang.the + Main.npc[index10].name; switch (Main.netMode) { case 0: Main.NewText(str + " " + Lang.misc[18], (byte) 50, (byte) 125); break; case 2: NetMessage.SendData(25, text: (str + " " + Lang.misc[18]), number: ((int) byte.MaxValue), number2: 50f, number3: 125f, number4: ((float) byte.MaxValue)); break; } } else { WorldGen.spawnNPC = 0; Main.npc[index1].homeTileX = WorldGen.bestX; Main.npc[index1].homeTileY = WorldGen.bestY; Main.npc[index1].homeless = false; } WorldGen.spawnNPC = 0; } public static bool RoomNeeds(int npcType) { WorldGen.roomChair = false; WorldGen.roomDoor = false; WorldGen.roomTable = false; WorldGen.roomTorch = false; if (WorldGen.houseTile[15] || WorldGen.houseTile[79] || WorldGen.houseTile[89] || WorldGen.houseTile[102]) WorldGen.roomChair = true; if (WorldGen.houseTile[14] || WorldGen.houseTile[18] || WorldGen.houseTile[87] || WorldGen.houseTile[88] || WorldGen.houseTile[90] || WorldGen.houseTile[101]) WorldGen.roomTable = true; if (WorldGen.houseTile[4] || WorldGen.houseTile[33] || WorldGen.houseTile[34] || WorldGen.houseTile[35] || WorldGen.houseTile[36] || WorldGen.houseTile[42] || WorldGen.houseTile[49] || WorldGen.houseTile[93] || WorldGen.houseTile[95] || WorldGen.houseTile[98] || WorldGen.houseTile[100] || WorldGen.houseTile[149]) WorldGen.roomTorch = true; if (WorldGen.houseTile[10] || WorldGen.houseTile[11] || WorldGen.houseTile[19]) WorldGen.roomDoor = true; WorldGen.canSpawn = WorldGen.roomChair && WorldGen.roomTable && WorldGen.roomDoor && WorldGen.roomTorch; return WorldGen.canSpawn; } public static void QuickFindHome(int npc) { if (Main.npc[npc].homeTileX <= 10 || Main.npc[npc].homeTileY <= 10 || Main.npc[npc].homeTileX >= Main.maxTilesX - 10 || Main.npc[npc].homeTileY >= Main.maxTilesY) return; WorldGen.canSpawn = false; WorldGen.StartRoomCheck(Main.npc[npc].homeTileX, Main.npc[npc].homeTileY - 1); if (!WorldGen.canSpawn) { for (int x = Main.npc[npc].homeTileX - 1; x < Main.npc[npc].homeTileX + 2; ++x) { int y = Main.npc[npc].homeTileY - 1; while (y < Main.npc[npc].homeTileY + 2 && !WorldGen.StartRoomCheck(x, y)) ++y; } } if (!WorldGen.canSpawn) { int num = 10; for (int x = Main.npc[npc].homeTileX - num; x <= Main.npc[npc].homeTileX + num; x += 2) { int y = Main.npc[npc].homeTileY - num; while (y <= Main.npc[npc].homeTileY + num && !WorldGen.StartRoomCheck(x, y)) y += 2; } } if (WorldGen.canSpawn) { WorldGen.RoomNeeds(Main.npc[npc].type); if (WorldGen.canSpawn) WorldGen.ScoreRoom(npc); if (WorldGen.canSpawn && WorldGen.hiScore > 0) { Main.npc[npc].homeTileX = WorldGen.bestX; Main.npc[npc].homeTileY = WorldGen.bestY; Main.npc[npc].homeless = false; WorldGen.canSpawn = false; } else Main.npc[npc].homeless = true; } else Main.npc[npc].homeless = true; } public static void ScoreRoom(int ignoreNPC = -1) { WorldGen.roomOccupied = false; WorldGen.roomEvil = false; for (int index1 = 0; index1 < 200; ++index1) { if (Main.npc[index1].active && Main.npc[index1].townNPC && ignoreNPC != index1 && !Main.npc[index1].homeless) { for (int index2 = 0; index2 < WorldGen.numRoomTiles; ++index2) { if (Main.npc[index1].homeTileX == WorldGen.roomX[index2] && Main.npc[index1].homeTileY == WorldGen.roomY[index2]) { bool flag = false; for (int index3 = 0; index3 < WorldGen.numRoomTiles; ++index3) { if (Main.npc[index1].homeTileX == WorldGen.roomX[index3] && Main.npc[index1].homeTileY - 1 == WorldGen.roomY[index3]) { flag = true; break; } } if (flag) { WorldGen.roomOccupied = true; WorldGen.hiScore = -1; return; } } } } } WorldGen.hiScore = 0; int num1 = 0; int num2 = WorldGen.roomX1 - Main.zoneX / 2 / 16 - 1 - Lighting.offScreenTiles; int num3 = WorldGen.roomX2 + Main.zoneX / 2 / 16 + 1 + Lighting.offScreenTiles; int num4 = WorldGen.roomY1 - Main.zoneY / 2 / 16 - 1 - Lighting.offScreenTiles; int num5 = WorldGen.roomY2 + Main.zoneY / 2 / 16 + 1 + Lighting.offScreenTiles; if (num2 < 0) num2 = 0; if (num3 >= Main.maxTilesX) num3 = Main.maxTilesX - 1; if (num4 < 0) num4 = 0; if (num5 > Main.maxTilesX) num5 = Main.maxTilesX; for (int index4 = num2 + 1; index4 < num3; ++index4) { for (int index5 = num4 + 2; index5 < num5 + 2; ++index5) { if (Main.tile[index4, index5].active) { if (Main.tile[index4, index5].type == (byte) 23 || Main.tile[index4, index5].type == (byte) 24 || Main.tile[index4, index5].type == (byte) 25 || Main.tile[index4, index5].type == (byte) 32 || Main.tile[index4, index5].type == (byte) 112) ++num1; else if (Main.tile[index4, index5].type == (byte) 27) num1 -= 5; else if (Main.tile[index4, index5].type == (byte) 109 || Main.tile[index4, index5].type == (byte) 110 || Main.tile[index4, index5].type == (byte) 113 || Main.tile[index4, index5].type == (byte) 116) --num1; } } } if (num1 < 50) num1 = 0; int num6 = -num1; if (num6 <= -250) { WorldGen.hiScore = num6; WorldGen.roomEvil = true; } else { int roomX1 = WorldGen.roomX1; int roomX2 = WorldGen.roomX2; int roomY1 = WorldGen.roomY1; int roomY2 = WorldGen.roomY2; for (int index6 = roomX1 + 1; index6 < roomX2; ++index6) { for (int index7 = roomY1 + 2; index7 < roomY2 + 2; ++index7) { if (Main.tile[index6, index7].active) { int num7 = num6; if (Main.tileSolid[(int) Main.tile[index6, index7].type] && !Main.tileSolidTop[(int) Main.tile[index6, index7].type] && !Collision.SolidTiles(index6 - 1, index6 + 1, index7 - 3, index7 - 1) && Main.tile[index6 - 1, index7].active && Main.tileSolid[(int) Main.tile[index6 - 1, index7].type] && Main.tile[index6 + 1, index7].active && Main.tileSolid[(int) Main.tile[index6 + 1, index7].type]) { for (int index8 = index6 - 2; index8 < index6 + 3; ++index8) { for (int index9 = index7 - 4; index9 < index7; ++index9) { if (Main.tile[index8, index9].active) { if (index8 == index6) num7 -= 15; else if (Main.tile[index8, index9].type == (byte) 10 || Main.tile[index8, index9].type == (byte) 11) num7 -= 20; else if (Main.tileSolid[(int) Main.tile[index8, index9].type]) num7 -= 5; else num7 += 5; } } } if (num7 > WorldGen.hiScore) { bool flag = false; for (int index10 = 0; index10 < WorldGen.numRoomTiles; ++index10) { if (WorldGen.roomX[index10] == index6 && WorldGen.roomY[index10] == index7) { flag = true; break; } } if (flag) { WorldGen.hiScore = num7; WorldGen.bestX = index6; WorldGen.bestY = index7; } } } } } } } } public static bool StartRoomCheck(int x, int y) { WorldGen.roomX1 = x; WorldGen.roomX2 = x; WorldGen.roomY1 = y; WorldGen.roomY2 = y; WorldGen.numRoomTiles = 0; for (int index = 0; index < 150; ++index) WorldGen.houseTile[index] = false; WorldGen.canSpawn = true; if (Main.tile[x, y].active && Main.tileSolid[(int) Main.tile[x, y].type]) WorldGen.canSpawn = false; WorldGen.CheckRoom(x, y); if (WorldGen.numRoomTiles < 60) WorldGen.canSpawn = false; return WorldGen.canSpawn; } public static void CheckRoom(int x, int y) { if (!WorldGen.canSpawn) return; if (x < 10 || y < 10 || x >= Main.maxTilesX - 10 || y >= WorldGen.lastMaxTilesY - 10) { WorldGen.canSpawn = false; } else { for (int index = 0; index < WorldGen.numRoomTiles; ++index) { if (WorldGen.roomX[index] == x && WorldGen.roomY[index] == y) return; } WorldGen.roomX[WorldGen.numRoomTiles] = x; WorldGen.roomY[WorldGen.numRoomTiles] = y; ++WorldGen.numRoomTiles; if (WorldGen.numRoomTiles >= WorldGen.maxRoomTiles) { WorldGen.canSpawn = false; } else { if (Main.tile[x, y].active) { WorldGen.houseTile[(int) Main.tile[x, y].type] = true; if (Main.tileSolid[(int) Main.tile[x, y].type] || Main.tile[x, y].type == (byte) 11) return; } if (x < WorldGen.roomX1) WorldGen.roomX1 = x; if (x > WorldGen.roomX2) WorldGen.roomX2 = x; if (y < WorldGen.roomY1) WorldGen.roomY1 = y; if (y > WorldGen.roomY2) WorldGen.roomY2 = y; bool flag1 = false; bool flag2 = false; for (int index = -2; index < 3; ++index) { if (Main.wallHouse[(int) Main.tile[x + index, y].wall]) flag1 = true; if (Main.tile[x + index, y].active && (Main.tileSolid[(int) Main.tile[x + index, y].type] || Main.tile[x + index, y].type == (byte) 11)) flag1 = true; if (Main.wallHouse[(int) Main.tile[x, y + index].wall]) flag2 = true; if (Main.tile[x, y + index].active && (Main.tileSolid[(int) Main.tile[x, y + index].type] || Main.tile[x, y + index].type == (byte) 11)) flag2 = true; } if (!flag1 || !flag2) { WorldGen.canSpawn = false; } else { for (int x1 = x - 1; x1 < x + 2; ++x1) { for (int y1 = y - 1; y1 < y + 2; ++y1) { if ((x1 != x || y1 != y) && WorldGen.canSpawn) WorldGen.CheckRoom(x1, y1); } } } } } } public static void dropMeteor() { bool flag = true; int num1 = 0; if (Main.netMode == 1) return; for (int index = 0; index < (int) byte.MaxValue; ++index) { if (Main.player[index].active) { flag = false; break; } } int num2 = 0; int num3 = (int) (400.0 * (double) (Main.maxTilesX / 4200)); for (int index1 = 5; index1 < Main.maxTilesX - 5; ++index1) { for (int index2 = 5; (double) index2 < Main.worldSurface; ++index2) { if (Main.tile[index1, index2].active && Main.tile[index1, index2].type == (byte) 37) { ++num2; if (num2 > num3) return; } } } while (!flag) { float num4 = (float) Main.maxTilesX * 0.08f; int i = Main.rand.Next(50, Main.maxTilesX - 50); while ((double) i > (double) Main.spawnTileX - (double) num4 && (double) i < (double) Main.spawnTileX + (double) num4) i = Main.rand.Next(50, Main.maxTilesX - 50); for (int j = Main.rand.Next(100); j < Main.maxTilesY; ++j) { if (Main.tile[i, j].active && Main.tileSolid[(int) Main.tile[i, j].type]) { flag = WorldGen.meteor(i, j); break; } } ++num1; if (num1 >= 100) break; } } public static bool meteor(int i, int j) { if (i < 50 || i > Main.maxTilesX - 50 || j < 50 || j > Main.maxTilesY - 50) return false; int num1 = 25; Rectangle rectangle1 = new Rectangle((i - num1) * 16, (j - num1) * 16, num1 * 2 * 16, num1 * 2 * 16); for (int index = 0; index < (int) byte.MaxValue; ++index) { if (Main.player[index].active) { Rectangle rectangle2 = new Rectangle((int) ((double) Main.player[index].position.X + (double) (Main.player[index].width / 2) - (double) (NPC.sWidth / 2) - (double) NPC.safeRangeX), (int) ((double) Main.player[index].position.Y + (double) (Main.player[index].height / 2) - (double) (NPC.sHeight / 2) - (double) NPC.safeRangeY), NPC.sWidth + NPC.safeRangeX * 2, NPC.sHeight + NPC.safeRangeY * 2); if (rectangle1.Intersects(rectangle2)) return false; } } for (int index = 0; index < 200; ++index) { if (Main.npc[index].active) { Rectangle rectangle3 = new Rectangle((int) Main.npc[index].position.X, (int) Main.npc[index].position.Y, Main.npc[index].width, Main.npc[index].height); if (rectangle1.Intersects(rectangle3)) return false; } } for (int index1 = i - num1; index1 < i + num1; ++index1) { for (int index2 = j - num1; index2 < j + num1; ++index2) { if (Main.tile[index1, index2].active && Main.tile[index1, index2].type == (byte) 21) return false; } } WorldGen.stopDrops = true; int num2 = 15; for (int index3 = i - num2; index3 < i + num2; ++index3) { for (int index4 = j - num2; index4 < j + num2; ++index4) { if (index4 > j + Main.rand.Next(-2, 3) - 5 && (double) (Math.Abs(i - index3) + Math.Abs(j - index4)) < (double) num2 * 1.5 + (double) Main.rand.Next(-5, 5)) { if (!Main.tileSolid[(int) Main.tile[index3, index4].type]) Main.tile[index3, index4].active = false; Main.tile[index3, index4].type = (byte) 37; } } } int num3 = 10; for (int index5 = i - num3; index5 < i + num3; ++index5) { for (int index6 = j - num3; index6 < j + num3; ++index6) { if (index6 > j + Main.rand.Next(-2, 3) - 5 && Math.Abs(i - index5) + Math.Abs(j - index6) < num3 + Main.rand.Next(-3, 4)) Main.tile[index5, index6].active = false; } } int num4 = 16; for (int i1 = i - num4; i1 < i + num4; ++i1) { for (int j1 = j - num4; j1 < j + num4; ++j1) { if (Main.tile[i1, j1].type == (byte) 5 || Main.tile[i1, j1].type == (byte) 32) WorldGen.KillTile(i1, j1); WorldGen.SquareTileFrame(i1, j1); WorldGen.SquareWallFrame(i1, j1); } } int num5 = 23; for (int i2 = i - num5; i2 < i + num5; ++i2) { for (int j2 = j - num5; j2 < j + num5; ++j2) { if (Main.tile[i2, j2].active && Main.rand.Next(10) == 0 && (double) (Math.Abs(i - i2) + Math.Abs(j - j2)) < (double) num5 * 1.3) { if (Main.tile[i2, j2].type == (byte) 5 || Main.tile[i2, j2].type == (byte) 32) WorldGen.KillTile(i2, j2); Main.tile[i2, j2].type = (byte) 37; WorldGen.SquareTileFrame(i2, j2); } } } WorldGen.stopDrops = false; if (Main.netMode == 0) Main.NewText(Lang.gen[59], (byte) 50, B: (byte) 130); else if (Main.netMode == 2) NetMessage.SendData(25, text: Lang.gen[59], number: ((int) byte.MaxValue), number2: 50f, number3: ((float) byte.MaxValue), number4: 130f); if (Main.netMode != 1) NetMessage.SendTileSquare(-1, i, j, 30); return true; } public static void setWorldSize() { Main.bottomWorld = (float) (Main.maxTilesY * 16); Main.rightWorld = (float) (Main.maxTilesX * 16); Main.maxSectionsX = Main.maxTilesX / 200; Main.maxSectionsY = Main.maxTilesY / 150; } public static void worldGenCallBack(object threadContext) { Main.PlaySound(10); WorldGen.clearWorld(); WorldGen.generateWorld(); WorldGen.saveWorld(true); Main.LoadWorlds(); if (Main.menuMode == 10) Main.menuMode = 6; Main.PlaySound(10); } public static void CreateNewWorld() => ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.worldGenCallBack), (object) 1); public static void SaveAndQuitCallBack(object threadContext) { Main.menuMode = 10; Main.gameMenu = true; Player.SavePlayer(Main.player[Main.myPlayer], Main.playerPathName); if (Main.netMode == 0) { WorldGen.saveWorld(); Main.PlaySound(10); } else { Netplay.disconnect = true; Main.netMode = 0; } Main.menuMode = 0; } public static void SaveAndQuit() { Main.PlaySound(11); ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.SaveAndQuitCallBack), (object) 1); } public static void playWorldCallBack(object threadContext) { if (Main.rand == null) Main.rand = new Random((int) DateTime.Now.Ticks); for (int index = 0; index < (int) byte.MaxValue; ++index) { if (index != Main.myPlayer) Main.player[index].active = false; } WorldGen.loadWorld(); if (WorldGen.loadFailed || !WorldGen.loadSuccess) { WorldGen.loadWorld(); if (WorldGen.loadFailed || !WorldGen.loadSuccess) { WorldGen.worldBackup = File.Exists(Main.worldPathName + ".bak"); if (!Main.dedServ) { if (WorldGen.worldBackup) { Main.menuMode = 200; return; } Main.menuMode = 201; return; } if (WorldGen.worldBackup) { File.Copy(Main.worldPathName + ".bak", Main.worldPathName, true); File.Delete(Main.worldPathName + ".bak"); WorldGen.loadWorld(); if (WorldGen.loadFailed || !WorldGen.loadSuccess) { WorldGen.loadWorld(); if (WorldGen.loadFailed || !WorldGen.loadSuccess) { Console.WriteLine("Load failed!"); return; } } } else { Console.WriteLine("Load failed! No backup found."); return; } } } WorldGen.EveryTileFrame(); if (Main.gameMenu) Main.gameMenu = false; Main.player[Main.myPlayer].Spawn(); Main.player[Main.myPlayer].UpdatePlayer(Main.myPlayer); Main.dayTime = WorldGen.tempDayTime; Main.time = WorldGen.tempTime; Main.moonPhase = WorldGen.tempMoonPhase; Main.bloodMoon = WorldGen.tempBloodMoon; Main.PlaySound(11); Main.resetClouds = true; } public static void playWorld() => ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.playWorldCallBack), (object) 1); public static void saveAndPlayCallBack(object threadContext) => WorldGen.saveWorld(); public static void saveAndPlay() => ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.saveAndPlayCallBack), (object) 1); public static void saveToonWhilePlayingCallBack(object threadContext) => Player.SavePlayer(Main.player[Main.myPlayer], Main.playerPathName); public static void saveToonWhilePlaying() => ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.saveToonWhilePlayingCallBack), (object) 1); public static void serverLoadWorldCallBack(object threadContext) { WorldGen.loadWorld(); if (WorldGen.loadFailed || !WorldGen.loadSuccess) { WorldGen.loadWorld(); if (WorldGen.loadFailed || !WorldGen.loadSuccess) { WorldGen.worldBackup = File.Exists(Main.worldPathName + ".bak"); if (!Main.dedServ) { if (WorldGen.worldBackup) { Main.menuMode = 200; return; } Main.menuMode = 201; return; } if (WorldGen.worldBackup) { File.Copy(Main.worldPathName + ".bak", Main.worldPathName, true); File.Delete(Main.worldPathName + ".bak"); WorldGen.loadWorld(); if (WorldGen.loadFailed || !WorldGen.loadSuccess) { WorldGen.loadWorld(); if (WorldGen.loadFailed || !WorldGen.loadSuccess) { Console.WriteLine("Load failed!"); return; } } } else { Console.WriteLine("Load failed! No backup found."); return; } } } Main.PlaySound(10); Netplay.StartServer(); Main.dayTime = WorldGen.tempDayTime; Main.time = WorldGen.tempTime; Main.moonPhase = WorldGen.tempMoonPhase; Main.bloodMoon = WorldGen.tempBloodMoon; } public static void serverLoadWorld() => ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.serverLoadWorldCallBack), (object) 1); public static void clearWorld() { WorldGen.totalSolid2 = 0; WorldGen.totalGood2 = 0; WorldGen.totalEvil2 = 0; WorldGen.totalSolid = 0; WorldGen.totalGood = 0; WorldGen.totalEvil = 0; WorldGen.totalX = 0; WorldGen.totalD = 0; WorldGen.tEvil = (byte) 0; WorldGen.tGood = (byte) 0; NPC.clrNames(); Main.trashItem = new Item(); WorldGen.spawnEye = false; WorldGen.spawnNPC = 0; WorldGen.shadowOrbCount = 0; WorldGen.altarCount = 0; Main.hardMode = false; Main.helpText = 0; Main.dungeonX = 0; Main.dungeonY = 0; NPC.downedBoss1 = false; NPC.downedBoss2 = false; NPC.downedBoss3 = false; NPC.savedGoblin = false; NPC.savedWizard = false; NPC.savedMech = false; NPC.downedGoblins = false; NPC.downedClown = false; NPC.downedFrost = false; WorldGen.shadowOrbSmashed = false; WorldGen.spawnMeteor = false; WorldGen.stopDrops = false; Main.invasionDelay = 0; Main.invasionType = 0; Main.invasionSize = 0; Main.invasionWarn = 0; Main.invasionX = 0.0; WorldGen.noLiquidCheck = false; Liquid.numLiquid = 0; LiquidBuffer.numLiquidBuffer = 0; if (Main.netMode == 1 || WorldGen.lastMaxTilesX > Main.maxTilesX || WorldGen.lastMaxTilesY > Main.maxTilesY) { for (int index1 = 0; index1 < WorldGen.lastMaxTilesX; ++index1) { float num = (float) index1 / (float) WorldGen.lastMaxTilesX; Main.statusText = Lang.gen[46] + " " + (object) (int) ((double) num * 100.0 + 1.0) + "%"; for (int index2 = 0; index2 < WorldGen.lastMaxTilesY; ++index2) Main.tile[index1, index2] = (Tile) null; } } WorldGen.lastMaxTilesX = Main.maxTilesX; WorldGen.lastMaxTilesY = Main.maxTilesY; if (Main.netMode != 1) { for (int index3 = 0; index3 < Main.maxTilesX; ++index3) { float num = (float) index3 / (float) Main.maxTilesX; Main.statusText = Lang.gen[47] + " " + (object) (int) ((double) num * 100.0 + 1.0) + "%"; for (int index4 = 0; index4 < Main.maxTilesY; ++index4) Main.tile[index3, index4] = new Tile(); } } for (int index = 0; index < 2000; ++index) Main.dust[index] = new Dust(); for (int index = 0; index < 200; ++index) Main.gore[index] = new Gore(); for (int index = 0; index < 200; ++index) Main.item[index] = new Item(); for (int index = 0; index < 200; ++index) Main.npc[index] = new NPC(); for (int index = 0; index < 1000; ++index) Main.projectile[index] = new Projectile(); for (int index = 0; index < 1000; ++index) Main.chest[index] = (Chest) null; for (int index = 0; index < 1000; ++index) Main.sign[index] = (Sign) null; for (int index = 0; index < Liquid.resLiquid; ++index) Main.liquid[index] = new Liquid(); for (int index = 0; index < 10000; ++index) Main.liquidBuffer[index] = new LiquidBuffer(); WorldGen.setWorldSize(); WorldGen.worldCleared = true; } public static void saveWorld(bool resetTime = false) { if (Main.worldName == "") Main.worldName = "World"; if (WorldGen.saveLock) return; WorldGen.saveLock = true; while (WorldGen.hardLock) Main.statusText = Lang.gen[48]; lock (WorldGen.padlock) { try { Directory.CreateDirectory(Main.WorldPath); } catch { } if (Main.skipMenu) return; bool flag = Main.dayTime; WorldGen.tempTime = Main.time; WorldGen.tempMoonPhase = Main.moonPhase; WorldGen.tempBloodMoon = Main.bloodMoon; if (resetTime) { flag = true; WorldGen.tempTime = 13500.0; WorldGen.tempMoonPhase = 0; WorldGen.tempBloodMoon = false; } if (Main.worldPathName == null) return; new Stopwatch().Start(); string str = Main.worldPathName + ".sav"; using (FileStream fileStream = new FileStream(str, FileMode.Create)) { using (BinaryWriter binaryWriter = new BinaryWriter((Stream) fileStream)) { binaryWriter.Write(Main.curRelease); binaryWriter.Write(Main.worldName); binaryWriter.Write(Main.worldID); binaryWriter.Write((int) Main.leftWorld); binaryWriter.Write((int) Main.rightWorld); binaryWriter.Write((int) Main.topWorld); binaryWriter.Write((int) Main.bottomWorld); binaryWriter.Write(Main.maxTilesY); binaryWriter.Write(Main.maxTilesX); binaryWriter.Write(Main.spawnTileX); binaryWriter.Write(Main.spawnTileY); binaryWriter.Write(Main.worldSurface); binaryWriter.Write(Main.rockLayer); binaryWriter.Write(WorldGen.tempTime); binaryWriter.Write(flag); binaryWriter.Write(WorldGen.tempMoonPhase); binaryWriter.Write(WorldGen.tempBloodMoon); binaryWriter.Write(Main.dungeonX); binaryWriter.Write(Main.dungeonY); binaryWriter.Write(NPC.downedBoss1); binaryWriter.Write(NPC.downedBoss2); binaryWriter.Write(NPC.downedBoss3); binaryWriter.Write(NPC.savedGoblin); binaryWriter.Write(NPC.savedWizard); binaryWriter.Write(NPC.savedMech); binaryWriter.Write(NPC.downedGoblins); binaryWriter.Write(NPC.downedClown); binaryWriter.Write(NPC.downedFrost); binaryWriter.Write(WorldGen.shadowOrbSmashed); binaryWriter.Write(WorldGen.spawnMeteor); binaryWriter.Write((byte) WorldGen.shadowOrbCount); binaryWriter.Write(WorldGen.altarCount); binaryWriter.Write(Main.hardMode); binaryWriter.Write(Main.invasionDelay); binaryWriter.Write(Main.invasionSize); binaryWriter.Write(Main.invasionType); binaryWriter.Write(Main.invasionX); for (int i = 0; i < Main.maxTilesX; ++i) { float num1 = (float) i / (float) Main.maxTilesX; Main.statusText = Lang.gen[49] + " " + (object) (int) ((double) num1 * 100.0 + 1.0) + "%"; int num2; for (int j = 0; j < Main.maxTilesY; j = j + num2 + 1) { if (Main.tile[i, j].type == (byte) 127 && Main.tile[i, j].active) { WorldGen.KillTile(i, j); WorldGen.KillTile(i, j); if (!Main.tile[i, j].active && Main.netMode != 0) NetMessage.SendData(17, number2: ((float) i), number3: ((float) j)); } Tile tile = (Tile) Main.tile[i, j].Clone(); binaryWriter.Write(tile.active); if (tile.active) { binaryWriter.Write(tile.type); if (Main.tileFrameImportant[(int) tile.type]) { binaryWriter.Write(tile.frameX); binaryWriter.Write(tile.frameY); } } if (Main.tile[i, j].wall > (byte) 0) { binaryWriter.Write(true); binaryWriter.Write(tile.wall); } else binaryWriter.Write(false); if (tile.liquid > (byte) 0) { binaryWriter.Write(true); binaryWriter.Write(tile.liquid); binaryWriter.Write(tile.lava); } else binaryWriter.Write(false); binaryWriter.Write(tile.wire); int num3 = 1; while (j + num3 < Main.maxTilesY && tile.isTheSameAs(Main.tile[i, j + num3])) ++num3; num2 = num3 - 1; binaryWriter.Write((short) num2); } } for (int index1 = 0; index1 < 1000; ++index1) { if (Main.chest[index1] == null) { binaryWriter.Write(false); } else { Chest chest = (Chest) Main.chest[index1].Clone(); binaryWriter.Write(true); binaryWriter.Write(chest.x); binaryWriter.Write(chest.y); for (int index2 = 0; index2 < Chest.maxItems; ++index2) { if (chest.item[index2].type == 0) chest.item[index2].stack = 0; binaryWriter.Write((byte) chest.item[index2].stack); if (chest.item[index2].stack > 0) { binaryWriter.Write(chest.item[index2].netID); binaryWriter.Write(chest.item[index2].prefix); } } } } for (int index = 0; index < 1000; ++index) { if (Main.sign[index] == null || Main.sign[index].text == null) { binaryWriter.Write(false); } else { Sign sign = (Sign) Main.sign[index].Clone(); binaryWriter.Write(true); binaryWriter.Write(sign.text); binaryWriter.Write(sign.x); binaryWriter.Write(sign.y); } } for (int index = 0; index < 200; ++index) { NPC npc = (NPC) Main.npc[index].Clone(); if (npc.active && npc.townNPC) { binaryWriter.Write(true); binaryWriter.Write(npc.name); binaryWriter.Write(npc.position.X); binaryWriter.Write(npc.position.Y); binaryWriter.Write(npc.homeless); binaryWriter.Write(npc.homeTileX); binaryWriter.Write(npc.homeTileY); } } binaryWriter.Write(false); binaryWriter.Write(Main.chrName[17]); binaryWriter.Write(Main.chrName[18]); binaryWriter.Write(Main.chrName[19]); binaryWriter.Write(Main.chrName[20]); binaryWriter.Write(Main.chrName[22]); binaryWriter.Write(Main.chrName[54]); binaryWriter.Write(Main.chrName[38]); binaryWriter.Write(Main.chrName[107]); binaryWriter.Write(Main.chrName[108]); binaryWriter.Write(Main.chrName[124]); binaryWriter.Write(true); binaryWriter.Write(Main.worldName); binaryWriter.Write(Main.worldID); binaryWriter.Close(); fileStream.Close(); if (File.Exists(Main.worldPathName)) { Main.statusText = Lang.gen[50]; string destFileName = Main.worldPathName + ".bak"; File.Copy(Main.worldPathName, destFileName, true); } File.Copy(str, Main.worldPathName, true); File.Delete(str); } } WorldGen.saveLock = false; } } public static void loadWorld() { Main.checkXMas(); if (!File.Exists(Main.worldPathName) && Main.autoGen) { for (int index = Main.worldPathName.Length - 1; index >= 0; --index) { if (Main.worldPathName.Substring(index, 1) == string.Concat((object) Path.DirectorySeparatorChar)) { Directory.CreateDirectory(Main.worldPathName.Substring(0, index)); break; } } WorldGen.clearWorld(); WorldGen.generateWorld(); WorldGen.saveWorld(); } if (WorldGen.genRand == null) WorldGen.genRand = new Random((int) DateTime.Now.Ticks); using (FileStream fileStream = new FileStream(Main.worldPathName, FileMode.Open)) { using (BinaryReader binaryReader = new BinaryReader((Stream) fileStream)) { try { WorldGen.loadFailed = false; WorldGen.loadSuccess = false; int release = binaryReader.ReadInt32(); if (release > Main.curRelease) { WorldGen.loadFailed = true; WorldGen.loadSuccess = false; try { binaryReader.Close(); fileStream.Close(); } catch { } } else { Main.worldName = binaryReader.ReadString(); Main.worldID = binaryReader.ReadInt32(); Main.leftWorld = (float) binaryReader.ReadInt32(); Main.rightWorld = (float) binaryReader.ReadInt32(); Main.topWorld = (float) binaryReader.ReadInt32(); Main.bottomWorld = (float) binaryReader.ReadInt32(); Main.maxTilesY = binaryReader.ReadInt32(); Main.maxTilesX = binaryReader.ReadInt32(); WorldGen.clearWorld(); Main.spawnTileX = binaryReader.ReadInt32(); Main.spawnTileY = binaryReader.ReadInt32(); Main.worldSurface = binaryReader.ReadDouble(); Main.rockLayer = binaryReader.ReadDouble(); WorldGen.tempTime = binaryReader.ReadDouble(); WorldGen.tempDayTime = binaryReader.ReadBoolean(); WorldGen.tempMoonPhase = binaryReader.ReadInt32(); WorldGen.tempBloodMoon = binaryReader.ReadBoolean(); Main.dungeonX = binaryReader.ReadInt32(); Main.dungeonY = binaryReader.ReadInt32(); NPC.downedBoss1 = binaryReader.ReadBoolean(); NPC.downedBoss2 = binaryReader.ReadBoolean(); NPC.downedBoss3 = binaryReader.ReadBoolean(); if (release >= 29) { NPC.savedGoblin = binaryReader.ReadBoolean(); NPC.savedWizard = binaryReader.ReadBoolean(); if (release >= 34) NPC.savedMech = binaryReader.ReadBoolean(); NPC.downedGoblins = binaryReader.ReadBoolean(); } if (release >= 32) NPC.downedClown = binaryReader.ReadBoolean(); if (release >= 37) NPC.downedFrost = binaryReader.ReadBoolean(); WorldGen.shadowOrbSmashed = binaryReader.ReadBoolean(); WorldGen.spawnMeteor = binaryReader.ReadBoolean(); WorldGen.shadowOrbCount = (int) binaryReader.ReadByte(); if (release >= 23) { WorldGen.altarCount = binaryReader.ReadInt32(); Main.hardMode = binaryReader.ReadBoolean(); } Main.invasionDelay = binaryReader.ReadInt32(); Main.invasionSize = binaryReader.ReadInt32(); Main.invasionType = binaryReader.ReadInt32(); Main.invasionX = binaryReader.ReadDouble(); for (int index1 = 0; index1 < Main.maxTilesX; ++index1) { float num1 = (float) index1 / (float) Main.maxTilesX; Main.statusText = Lang.gen[51] + " " + (object) (int) ((double) num1 * 100.0 + 1.0) + "%"; for (int index2 = 0; index2 < Main.maxTilesY; ++index2) { Main.tile[index1, index2].active = binaryReader.ReadBoolean(); if (Main.tile[index1, index2].active) { Main.tile[index1, index2].type = binaryReader.ReadByte(); if (Main.tile[index1, index2].type == (byte) 127) Main.tile[index1, index2].active = false; if (Main.tileFrameImportant[(int) Main.tile[index1, index2].type]) { if (release < 28 && Main.tile[index1, index2].type == (byte) 4) { Main.tile[index1, index2].frameX = (short) 0; Main.tile[index1, index2].frameY = (short) 0; } else { Main.tile[index1, index2].frameX = binaryReader.ReadInt16(); Main.tile[index1, index2].frameY = binaryReader.ReadInt16(); if (Main.tile[index1, index2].type == (byte) 144) Main.tile[index1, index2].frameY = (short) 0; } } else { Main.tile[index1, index2].frameX = (short) -1; Main.tile[index1, index2].frameY = (short) -1; } } if (release <= 25) binaryReader.ReadBoolean(); if (binaryReader.ReadBoolean()) Main.tile[index1, index2].wall = binaryReader.ReadByte(); if (binaryReader.ReadBoolean()) { Main.tile[index1, index2].liquid = binaryReader.ReadByte(); Main.tile[index1, index2].lava = binaryReader.ReadBoolean(); } if (release >= 33) Main.tile[index1, index2].wire = binaryReader.ReadBoolean(); if (release >= 25) { int num2 = (int) binaryReader.ReadInt16(); if (num2 > 0) { for (int index3 = index2 + 1; index3 < index2 + num2 + 1; ++index3) { Main.tile[index1, index3].active = Main.tile[index1, index2].active; Main.tile[index1, index3].type = Main.tile[index1, index2].type; Main.tile[index1, index3].wall = Main.tile[index1, index2].wall; Main.tile[index1, index3].frameX = Main.tile[index1, index2].frameX; Main.tile[index1, index3].frameY = Main.tile[index1, index2].frameY; Main.tile[index1, index3].liquid = Main.tile[index1, index2].liquid; Main.tile[index1, index3].lava = Main.tile[index1, index2].lava; Main.tile[index1, index3].wire = Main.tile[index1, index2].wire; } index2 += num2; } } } } for (int index4 = 0; index4 < 1000; ++index4) { if (binaryReader.ReadBoolean()) { Main.chest[index4] = new Chest(); Main.chest[index4].x = binaryReader.ReadInt32(); Main.chest[index4].y = binaryReader.ReadInt32(); for (int index5 = 0; index5 < Chest.maxItems; ++index5) { Main.chest[index4].item[index5] = new Item(); byte num = binaryReader.ReadByte(); if (num > (byte) 0) { if (release >= 38) { Main.chest[index4].item[index5].netDefaults(binaryReader.ReadInt32()); } else { string ItemName = Item.VersionName(binaryReader.ReadString(), release); Main.chest[index4].item[index5].SetDefaults(ItemName); } Main.chest[index4].item[index5].stack = (int) num; if (release >= 36) Main.chest[index4].item[index5].Prefix((int) binaryReader.ReadByte()); } } } } for (int index6 = 0; index6 < 1000; ++index6) { if (binaryReader.ReadBoolean()) { string str = binaryReader.ReadString(); int index7 = binaryReader.ReadInt32(); int index8 = binaryReader.ReadInt32(); if (Main.tile[index7, index8].active && (Main.tile[index7, index8].type == (byte) 55 || Main.tile[index7, index8].type == (byte) 85)) { Main.sign[index6] = new Sign(); Main.sign[index6].x = index7; Main.sign[index6].y = index8; Main.sign[index6].text = str; } } } bool flag1 = binaryReader.ReadBoolean(); int index = 0; while (flag1) { Main.npc[index].SetDefaults(binaryReader.ReadString()); Main.npc[index].position.X = binaryReader.ReadSingle(); Main.npc[index].position.Y = binaryReader.ReadSingle(); Main.npc[index].homeless = binaryReader.ReadBoolean(); Main.npc[index].homeTileX = binaryReader.ReadInt32(); Main.npc[index].homeTileY = binaryReader.ReadInt32(); flag1 = binaryReader.ReadBoolean(); ++index; } if (release >= 31) { Main.chrName[17] = binaryReader.ReadString(); Main.chrName[18] = binaryReader.ReadString(); Main.chrName[19] = binaryReader.ReadString(); Main.chrName[20] = binaryReader.ReadString(); Main.chrName[22] = binaryReader.ReadString(); Main.chrName[54] = binaryReader.ReadString(); Main.chrName[38] = binaryReader.ReadString(); Main.chrName[107] = binaryReader.ReadString(); Main.chrName[108] = binaryReader.ReadString(); if (release >= 35) Main.chrName[124] = binaryReader.ReadString(); } if (release >= 7) { bool flag2 = binaryReader.ReadBoolean(); string str = binaryReader.ReadString(); int num = binaryReader.ReadInt32(); if (flag2 && str == Main.worldName && num == Main.worldID) { WorldGen.loadSuccess = true; } else { WorldGen.loadSuccess = false; WorldGen.loadFailed = true; binaryReader.Close(); fileStream.Close(); return; } } else WorldGen.loadSuccess = true; binaryReader.Close(); fileStream.Close(); if (WorldGen.loadFailed || !WorldGen.loadSuccess) return; WorldGen.gen = true; for (int X = 0; X < Main.maxTilesX; ++X) { float num = (float) X / (float) Main.maxTilesX; Main.statusText = Lang.gen[52] + " " + (object) (int) ((double) num * 100.0 + 1.0) + "%"; WorldGen.CountTiles(X); } WorldGen.waterLine = Main.maxTilesY; NPC.setNames(); Liquid.QuickWater(2); WorldGen.WaterCheck(); int num3 = 0; Liquid.quickSettle = true; int num4 = Liquid.numLiquid + LiquidBuffer.numLiquidBuffer; float num5 = 0.0f; while (Liquid.numLiquid > 0 && num3 < 100000) { ++num3; float num6 = (float) (num4 - (Liquid.numLiquid + LiquidBuffer.numLiquidBuffer)) / (float) num4; if (Liquid.numLiquid + LiquidBuffer.numLiquidBuffer > num4) num4 = Liquid.numLiquid + LiquidBuffer.numLiquidBuffer; if ((double) num6 > (double) num5) num5 = num6; else num6 = num5; Main.statusText = Lang.gen[27] + " " + (object) (int) ((double) num6 * 100.0 / 2.0 + 50.0) + "%"; Liquid.UpdateLiquid(); } Liquid.quickSettle = false; WorldGen.WaterCheck(); WorldGen.gen = false; } } catch { WorldGen.loadFailed = true; WorldGen.loadSuccess = false; try { binaryReader.Close(); fileStream.Close(); } catch { } } } } } private static void resetGen() { WorldGen.mudWall = false; WorldGen.hellChest = 0; WorldGen.JungleX = 0; WorldGen.numMCaves = 0; WorldGen.numIslandHouses = 0; WorldGen.houseCount = 0; WorldGen.dEnteranceX = 0; WorldGen.numDRooms = 0; WorldGen.numDDoors = 0; WorldGen.numDPlats = 0; WorldGen.numJChests = 0; } public static bool placeTrap(int x2, int y2, int type = -1) { int i1 = x2; int j1 = y2; while (!WorldGen.SolidTile(i1, j1)) { ++j1; if (j1 >= Main.maxTilesY - 300) return false; } int j2 = j1 - 1; if (Main.tile[i1, j2].liquid > (byte) 0 && Main.tile[i1, j2].lava) return false; if (type == -1 && Main.rand.Next(20) == 0) type = 2; else if (type == -1) type = Main.rand.Next(2); if (Main.tile[i1, j2].active || Main.tile[i1 - 1, j2].active || Main.tile[i1 + 1, j2].active || Main.tile[i1, j2 - 1].active || Main.tile[i1 - 1, j2 - 1].active || Main.tile[i1 + 1, j2 - 1].active || Main.tile[i1, j2 - 2].active || Main.tile[i1 - 1, j2 - 2].active || Main.tile[i1 + 1, j2 - 2].active || Main.tile[i1, j2 + 1].type == (byte) 48) return false; switch (type) { case 0: int i2 = i1; int j3 = j2 - WorldGen.genRand.Next(3); while (!WorldGen.SolidTile(i2, j3)) --i2; int i3 = i2; int i4 = i1; while (!WorldGen.SolidTile(i4, j3)) ++i4; int i5 = i4; int num1 = i1 - i3; int num2 = i5 - i1; bool flag1 = false; bool flag2 = false; if (num1 > 5 && num1 < 50) flag1 = true; if (num2 > 5 && num2 < 50) flag2 = true; if (flag1 && !WorldGen.SolidTile(i3, j3 + 1)) flag1 = false; if (flag2 && !WorldGen.SolidTile(i5, j3 + 1)) flag2 = false; if (flag1 && (Main.tile[i3, j3].type == (byte) 10 || Main.tile[i3, j3].type == (byte) 48 || Main.tile[i3, j3 + 1].type == (byte) 10 || Main.tile[i3, j3 + 1].type == (byte) 48)) flag1 = false; if (flag2 && (Main.tile[i5, j3].type == (byte) 10 || Main.tile[i5, j3].type == (byte) 48 || Main.tile[i5, j3 + 1].type == (byte) 10 || Main.tile[i5, j3 + 1].type == (byte) 48)) flag2 = false; int style; int i6; if (flag1 && flag2) { style = 1; i6 = i3; if (WorldGen.genRand.Next(2) == 0) { i6 = i5; style = -1; } } else if (flag2) { i6 = i5; style = -1; } else { if (!flag1) return false; i6 = i3; style = 1; } if (Main.tile[i1, j2].wall > (byte) 0) WorldGen.PlaceTile(i1, j2, 135, true, true, style: 2); else WorldGen.PlaceTile(i1, j2, 135, true, true, style: WorldGen.genRand.Next(2, 4)); WorldGen.KillTile(i6, j3); WorldGen.PlaceTile(i6, j3, 137, true, true, style: style); int index1 = i1; int index2 = j2; while (index1 != i6 || index2 != j3) { Main.tile[index1, index2].wire = true; if (index1 > i6) --index1; if (index1 < i6) ++index1; Main.tile[index1, index2].wire = true; if (index2 > j3) --index2; if (index2 < j3) ++index2; Main.tile[index1, index2].wire = true; } return true; case 1: int num3 = i1; int num4 = j2 - 8; int i7 = num3 + WorldGen.genRand.Next(-1, 2); bool flag3 = true; while (flag3) { bool flag4 = true; int num5 = 0; for (int i8 = i7 - 2; i8 <= i7 + 3; ++i8) { for (int j4 = num4; j4 <= num4 + 3; ++j4) { if (!WorldGen.SolidTile(i8, j4)) flag4 = false; if (Main.tile[i8, j4].active && (Main.tile[i8, j4].type == (byte) 0 || Main.tile[i8, j4].type == (byte) 1 || Main.tile[i8, j4].type == (byte) 59)) ++num5; } } --num4; if ((double) num4 < Main.worldSurface) return false; if (flag4 && num5 > 2) flag3 = false; } if (j2 - num4 <= 5 || j2 - num4 >= 40) return false; for (int i9 = i7; i9 <= i7 + 1; ++i9) { for (int j5 = num4; j5 <= j2; ++j5) { if (WorldGen.SolidTile(i9, j5)) WorldGen.KillTile(i9, j5); } } for (int i10 = i7 - 2; i10 <= i7 + 3; ++i10) { for (int j6 = num4 - 2; j6 <= num4 + 3; ++j6) { if (WorldGen.SolidTile(i10, j6)) Main.tile[i10, j6].type = (byte) 1; } } WorldGen.PlaceTile(i1, j2, 135, true, true, style: WorldGen.genRand.Next(2, 4)); WorldGen.PlaceTile(i7, num4 + 2, 130, true); WorldGen.PlaceTile(i7 + 1, num4 + 2, 130, true); WorldGen.PlaceTile(i7 + 1, num4 + 1, 138, true); int index3 = num4 + 2; Main.tile[i7, index3].wire = true; Main.tile[i7 + 1, index3].wire = true; int j7 = index3 + 1; WorldGen.PlaceTile(i7, j7, 130, true); WorldGen.PlaceTile(i7 + 1, j7, 130, true); Main.tile[i7, j7].wire = true; Main.tile[i7 + 1, j7].wire = true; WorldGen.PlaceTile(i7, j7 + 1, 130, true); WorldGen.PlaceTile(i7 + 1, j7 + 1, 130, true); Main.tile[i7, j7 + 1].wire = true; Main.tile[i7 + 1, j7 + 1].wire = true; int index4 = i1; int index5 = j2; while (index4 != i7 || index5 != j7) { Main.tile[index4, index5].wire = true; if (index4 > i7) --index4; if (index4 < i7) ++index4; Main.tile[index4, index5].wire = true; if (index5 > j7) --index5; if (index5 < j7) ++index5; Main.tile[index4, index5].wire = true; } return true; case 2: int num6 = Main.rand.Next(4, 7); int i11 = i1 + Main.rand.Next(-1, 2); int j8 = j2; for (int index6 = 0; index6 < num6; ++index6) { ++j8; if (!WorldGen.SolidTile(i11, j8)) return false; } for (int i12 = i11 - 2; i12 <= i11 + 2; ++i12) { for (int j9 = j8 - 2; j9 <= j8 + 2; ++j9) { if (!WorldGen.SolidTile(i12, j9)) return false; } } WorldGen.KillTile(i11, j8); Main.tile[i11, j8].active = true; Main.tile[i11, j8].type = (byte) 141; Main.tile[i11, j8].frameX = (short) 0; Main.tile[i11, j8].frameY = (short) (18 * Main.rand.Next(2)); WorldGen.PlaceTile(i1, j2, 135, true, true, style: WorldGen.genRand.Next(2, 4)); int index7 = i1; int index8 = j2; while (index7 != i11 || index8 != j8) { Main.tile[index7, index8].wire = true; if (index7 > i11) --index7; if (index7 < i11) ++index7; Main.tile[index7, index8].wire = true; if (index8 > j8) --index8; if (index8 < j8) ++index8; Main.tile[index7, index8].wire = true; } break; } return false; } public static void generateWorld(int seed = -1) { Main.checkXMas(); NPC.clrNames(); NPC.setNames(); WorldGen.gen = true; WorldGen.resetGen(); WorldGen.genRand = seed <= 0 ? new Random((int) DateTime.Now.Ticks) : new Random(seed); Main.worldID = WorldGen.genRand.Next(int.MaxValue); int num1 = 0; int num2 = 0; double num3 = (double) Main.maxTilesY * 0.3 * ((double) WorldGen.genRand.Next(90, 110) * 0.005); double num4 = (num3 + (double) Main.maxTilesY * 0.2) * ((double) WorldGen.genRand.Next(90, 110) * 0.01); double num5 = num3; double num6 = num3; double num7 = num4; double num8 = num4; int num9 = WorldGen.genRand.Next(2) != 0 ? 1 : -1; for (int index1 = 0; index1 < Main.maxTilesX; ++index1) { float num10 = (float) index1 / (float) Main.maxTilesX; Main.statusText = Lang.gen[0] + " " + (object) (int) ((double) num10 * 100.0 + 1.0) + "%"; if (num3 < num5) num5 = num3; if (num3 > num6) num6 = num3; if (num4 < num7) num7 = num4; if (num4 > num8) num8 = num4; if (num2 <= 0) { num1 = WorldGen.genRand.Next(0, 5); num2 = WorldGen.genRand.Next(5, 40); if (num1 == 0) num2 *= (int) ((double) WorldGen.genRand.Next(5, 30) * 0.2); } --num2; if (num1 == 0) { while (WorldGen.genRand.Next(0, 7) == 0) num3 += (double) WorldGen.genRand.Next(-1, 2); } else if (num1 == 1) { while (WorldGen.genRand.Next(0, 4) == 0) --num3; while (WorldGen.genRand.Next(0, 10) == 0) ++num3; } else if (num1 == 2) { while (WorldGen.genRand.Next(0, 4) == 0) ++num3; while (WorldGen.genRand.Next(0, 10) == 0) --num3; } else if (num1 == 3) { while (WorldGen.genRand.Next(0, 2) == 0) --num3; while (WorldGen.genRand.Next(0, 6) == 0) ++num3; } else if (num1 == 4) { while (WorldGen.genRand.Next(0, 2) == 0) ++num3; while (WorldGen.genRand.Next(0, 5) == 0) --num3; } if (num3 < (double) Main.maxTilesY * 0.17) { num3 = (double) Main.maxTilesY * 0.17; num2 = 0; } else if (num3 > (double) Main.maxTilesY * 0.3) { num3 = (double) Main.maxTilesY * 0.3; num2 = 0; } if ((index1 < 275 || index1 > Main.maxTilesX - 275) && num3 > (double) Main.maxTilesY * 0.25) { num3 = (double) Main.maxTilesY * 0.25; num2 = 1; } while (WorldGen.genRand.Next(0, 3) == 0) num4 += (double) WorldGen.genRand.Next(-2, 3); if (num4 < num3 + (double) Main.maxTilesY * 0.05) ++num4; if (num4 > num3 + (double) Main.maxTilesY * 0.35) --num4; for (int index2 = 0; (double) index2 < num3; ++index2) { Main.tile[index1, index2].active = false; Main.tile[index1, index2].frameX = (short) -1; Main.tile[index1, index2].frameY = (short) -1; } for (int index3 = (int) num3; index3 < Main.maxTilesY; ++index3) { if ((double) index3 < num4) { Main.tile[index1, index3].active = true; Main.tile[index1, index3].type = (byte) 0; Main.tile[index1, index3].frameX = (short) -1; Main.tile[index1, index3].frameY = (short) -1; } else { Main.tile[index1, index3].active = true; Main.tile[index1, index3].type = (byte) 1; Main.tile[index1, index3].frameX = (short) -1; Main.tile[index1, index3].frameY = (short) -1; } } } Main.worldSurface = num6 + 25.0; Main.rockLayer = num8; double num11 = (double) ((int) ((Main.rockLayer - Main.worldSurface) / 6.0) * 6); Main.rockLayer = Main.worldSurface + num11; WorldGen.waterLine = (int) (Main.rockLayer + (double) Main.maxTilesY) / 2; WorldGen.waterLine += WorldGen.genRand.Next(-100, 20); WorldGen.lavaLine = WorldGen.waterLine + WorldGen.genRand.Next(50, 80); int num12 = 0; for (int index4 = 0; index4 < (int) ((double) Main.maxTilesX * 0.0015); ++index4) { int[] numArray1 = new int[10]; int[] numArray2 = new int[10]; int index5 = WorldGen.genRand.Next(450, Main.maxTilesX - 450); int index6 = 0; for (int index7 = 0; index7 < 10; ++index7) { while (!Main.tile[index5, index6].active) ++index6; numArray1[index7] = index5; numArray2[index7] = index6 - WorldGen.genRand.Next(11, 16); index5 += WorldGen.genRand.Next(5, 11); } for (int index8 = 0; index8 < 10; ++index8) { WorldGen.TileRunner(numArray1[index8], numArray2[index8], (double) WorldGen.genRand.Next(5, 8), WorldGen.genRand.Next(6, 9), 0, true, -2f, -0.3f); WorldGen.TileRunner(numArray1[index8], numArray2[index8], (double) WorldGen.genRand.Next(5, 8), WorldGen.genRand.Next(6, 9), 0, true, 2f, -0.3f); } } Main.statusText = Lang.gen[1]; int num13 = WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.0008), (int) ((double) Main.maxTilesX * (1.0 / 400.0))) + 2; for (int index9 = 0; index9 < num13; ++index9) { int num14 = WorldGen.genRand.Next(Main.maxTilesX); while ((double) num14 > (double) Main.maxTilesX * 0.400000005960464 && (double) num14 < (double) Main.maxTilesX * 0.600000023841858) num14 = WorldGen.genRand.Next(Main.maxTilesX); int num15 = WorldGen.genRand.Next(35, 90); if (index9 == 1) { float num16 = (float) (Main.maxTilesX / 4200); num15 += (int) ((double) WorldGen.genRand.Next(20, 40) * (double) num16); } if (WorldGen.genRand.Next(3) == 0) num15 *= 2; if (index9 == 1) num15 *= 2; int num17 = num14 - num15; int num18 = WorldGen.genRand.Next(35, 90); if (WorldGen.genRand.Next(3) == 0) num18 *= 2; if (index9 == 1) num18 *= 2; int num19 = num14 + num18; if (num17 < 0) num17 = 0; if (num19 > Main.maxTilesX) num19 = Main.maxTilesX; switch (index9) { case 0: num17 = 0; num19 = WorldGen.genRand.Next(260, 300); if (num9 == 1) { num19 += 40; break; } break; case 2: num17 = Main.maxTilesX - WorldGen.genRand.Next(260, 300); num19 = Main.maxTilesX; if (num9 == -1) { num17 -= 40; break; } break; } int num20 = WorldGen.genRand.Next(50, 100); for (int index10 = num17; index10 < num19; ++index10) { if (WorldGen.genRand.Next(2) == 0) { num20 += WorldGen.genRand.Next(-1, 2); if (num20 < 50) num20 = 50; if (num20 > 100) num20 = 100; } for (int index11 = 0; (double) index11 < Main.worldSurface; ++index11) { if (Main.tile[index10, index11].active) { int num21 = num20; if (index10 - num17 < num21) num21 = index10 - num17; if (num19 - index10 < num21) num21 = num19 - index10; int num22 = num21 + WorldGen.genRand.Next(5); for (int index12 = index11; index12 < index11 + num22; ++index12) { if (index10 > num17 + WorldGen.genRand.Next(5) && index10 < num19 - WorldGen.genRand.Next(5)) Main.tile[index10, index12].type = (byte) 53; } break; } } } } for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 8E-06); ++index) 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); WorldGen.numMCaves = 0; Main.statusText = Lang.gen[2]; for (int index13 = 0; index13 < (int) ((double) Main.maxTilesX * 0.0008); ++index13) { int num23 = 0; bool flag1 = false; bool flag2 = false; int i = WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.25), (int) ((double) Main.maxTilesX * 0.75)); while (!flag2) { flag2 = true; while (i > Main.maxTilesX / 2 - 100 && i < Main.maxTilesX / 2 + 100) i = WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.25), (int) ((double) Main.maxTilesX * 0.75)); for (int index14 = 0; index14 < WorldGen.numMCaves; ++index14) { if (i > WorldGen.mCaveX[index14] - 50 && i < WorldGen.mCaveX[index14] + 50) { ++num23; flag2 = false; break; } } if (num23 >= 200) { flag1 = true; break; } } if (!flag1) { for (int j = 0; (double) j < Main.worldSurface; ++j) { if (Main.tile[i, j].active) { WorldGen.Mountinater(i, j); WorldGen.mCaveX[WorldGen.numMCaves] = i; WorldGen.mCaveY[WorldGen.numMCaves] = j; ++WorldGen.numMCaves; break; } } } } bool flag3 = false; if (Main.xMas) flag3 = true; else if (WorldGen.genRand.Next(3) == 0) flag3 = true; if (flag3) { Main.statusText = Lang.gen[56]; int num24 = WorldGen.genRand.Next(Main.maxTilesX); while ((double) num24 < (double) Main.maxTilesX * 0.349999994039536 || (double) num24 > (double) Main.maxTilesX * 0.649999976158142) num24 = WorldGen.genRand.Next(Main.maxTilesX); int num25 = WorldGen.genRand.Next(35, 90); float num26 = (float) (Main.maxTilesX / 4200); int num27 = num25 + (int) ((double) WorldGen.genRand.Next(20, 40) * (double) num26) + (int) ((double) WorldGen.genRand.Next(20, 40) * (double) num26); int num28 = num24 - num27; int num29 = WorldGen.genRand.Next(35, 90) + (int) ((double) WorldGen.genRand.Next(20, 40) * (double) num26) + (int) ((double) WorldGen.genRand.Next(20, 40) * (double) num26); int num30 = num24 + num29; if (num28 < 0) num28 = 0; if (num30 > Main.maxTilesX) num30 = Main.maxTilesX; int num31 = WorldGen.genRand.Next(50, 100); for (int index15 = num28; index15 < num30; ++index15) { if (WorldGen.genRand.Next(2) == 0) { num31 += WorldGen.genRand.Next(-1, 2); if (num31 < 50) num31 = 50; if (num31 > 100) num31 = 100; } for (int index16 = 0; (double) index16 < Main.worldSurface; ++index16) { if (Main.tile[index15, index16].active) { int num32 = num31; if (index15 - num28 < num32) num32 = index15 - num28; if (num30 - index15 < num32) num32 = num30 - index15; int num33 = num32 + WorldGen.genRand.Next(5); for (int index17 = index16; index17 < index16 + num33; ++index17) { if (index15 > num28 + WorldGen.genRand.Next(5) && index15 < num30 - WorldGen.genRand.Next(5)) Main.tile[index15, index17].type = (byte) 147; } break; } } } } for (int index18 = 1; index18 < Main.maxTilesX - 1; ++index18) { float num34 = (float) index18 / (float) Main.maxTilesX; Main.statusText = Lang.gen[3] + " " + (object) (int) ((double) num34 * 100.0 + 1.0) + "%"; bool flag4 = false; num12 += WorldGen.genRand.Next(-1, 2); if (num12 < 0) num12 = 0; if (num12 > 10) num12 = 10; for (int index19 = 0; (double) index19 < Main.worldSurface + 10.0 && (double) index19 <= Main.worldSurface + (double) num12; ++index19) { if (flag4) Main.tile[index18, index19].wall = (byte) 2; if (Main.tile[index18, index19].active && Main.tile[index18 - 1, index19].active && Main.tile[index18 + 1, index19].active && Main.tile[index18, index19 + 1].active && Main.tile[index18 - 1, index19 + 1].active && Main.tile[index18 + 1, index19 + 1].active) flag4 = true; } } Main.statusText = Lang.gen[4]; for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 0.0002); ++index) 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); for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 0.0002); ++index) 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); for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 0.0045); ++index) 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); Main.statusText = Lang.gen[5]; for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 0.005); ++index) 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); Main.statusText = Lang.gen[6]; for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 2E-05); ++index) 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); for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 5E-05); ++index) 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); for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 2E-05); ++index) 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); for (int index20 = 5; index20 < Main.maxTilesX - 5; ++index20) { for (int index21 = 1; (double) index21 < Main.worldSurface - 1.0; ++index21) { if (Main.tile[index20, index21].active) { for (int index22 = index21; index22 < index21 + 5; ++index22) { if (Main.tile[index20, index22].type == (byte) 40) Main.tile[index20, index22].type = (byte) 0; } break; } } } for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 0.0015); ++index) { float num35 = (float) index / ((float) (Main.maxTilesX * Main.maxTilesY) * 0.0015f); Main.statusText = Lang.gen[7] + " " + (object) (int) ((double) num35 * 100.0 + 1.0) + "%"; int type = -1; if (WorldGen.genRand.Next(5) == 0) type = -2; 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); 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); } for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 3E-05); ++index) { float num36 = (float) index / ((float) (Main.maxTilesX * Main.maxTilesY) * 3E-05f); Main.statusText = Lang.gen[8] + " " + (object) (int) ((double) num36 * 100.0 + 1.0) + "%"; if (num8 <= (double) Main.maxTilesY) { int type = -1; if (WorldGen.genRand.Next(6) == 0) type = -2; 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), type); } } for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 0.00013); ++index) { float num37 = (float) index / ((float) (Main.maxTilesX * Main.maxTilesY) * 0.00013f); Main.statusText = Lang.gen[9] + " " + (object) (int) ((double) num37 * 100.0 + 1.0) + "%"; if (num8 <= (double) Main.maxTilesY) { int type = -1; if (WorldGen.genRand.Next(10) == 0) type = -2; 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), type); } } Main.statusText = Lang.gen[10]; for (int index = 0; index < (int) ((double) Main.maxTilesX * (1.0 / 400.0)); ++index) { int i = WorldGen.genRand.Next(0, Main.maxTilesX); for (int j = 0; (double) j < num6; ++j) { if (Main.tile[i, j].active) { WorldGen.TileRunner(i, j, (double) WorldGen.genRand.Next(3, 6), WorldGen.genRand.Next(5, 50), -1, speedX: ((float) WorldGen.genRand.Next(-10, 11) * 0.1f), speedY: 1f); break; } } } for (int index = 0; index < (int) ((double) Main.maxTilesX * 0.0007); ++index) { int i = WorldGen.genRand.Next(0, Main.maxTilesX); for (int j = 0; (double) j < num6; ++j) { if (Main.tile[i, j].active) { WorldGen.TileRunner(i, j, (double) WorldGen.genRand.Next(10, 15), WorldGen.genRand.Next(50, 130), -1, speedX: ((float) WorldGen.genRand.Next(-10, 11) * 0.1f), speedY: 2f); break; } } } for (int index = 0; index < (int) ((double) Main.maxTilesX * 0.0003); ++index) { int i = WorldGen.genRand.Next(0, Main.maxTilesX); for (int j = 0; (double) j < num6; ++j) { if (Main.tile[i, j].active) { WorldGen.TileRunner(i, j, (double) WorldGen.genRand.Next(12, 25), WorldGen.genRand.Next(150, 500), -1, speedX: ((float) WorldGen.genRand.Next(-10, 11) * 0.1f), speedY: 4f); WorldGen.TileRunner(i, j, (double) WorldGen.genRand.Next(8, 17), WorldGen.genRand.Next(60, 200), -1, speedX: ((float) WorldGen.genRand.Next(-10, 11) * 0.1f), speedY: 2f); WorldGen.TileRunner(i, j, (double) WorldGen.genRand.Next(5, 13), WorldGen.genRand.Next(40, 170), -1, speedX: ((float) WorldGen.genRand.Next(-10, 11) * 0.1f), speedY: 2f); break; } } } for (int index = 0; index < (int) ((double) Main.maxTilesX * 0.0004); ++index) { int i = WorldGen.genRand.Next(0, Main.maxTilesX); for (int j = 0; (double) j < num6; ++j) { if (Main.tile[i, j].active) { WorldGen.TileRunner(i, j, (double) WorldGen.genRand.Next(7, 12), WorldGen.genRand.Next(150, 250), -1, speedY: 1f, noYChange: true); break; } } } float num38 = (float) (Main.maxTilesX / 4200); for (int index = 0; (double) index < 5.0 * (double) num38; ++index) { try { WorldGen.Caverer(WorldGen.genRand.Next(100, Main.maxTilesX - 100), WorldGen.genRand.Next((int) Main.rockLayer, Main.maxTilesY - 400)); } catch { } } for (int index23 = 0; index23 < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 0.002); ++index23) { int index24 = WorldGen.genRand.Next(1, Main.maxTilesX - 1); int index25 = WorldGen.genRand.Next((int) num5, (int) num6); if (index25 >= Main.maxTilesY) index25 = Main.maxTilesY - 2; if (Main.tile[index24 - 1, index25].active && Main.tile[index24 - 1, index25].type == (byte) 0 && Main.tile[index24 + 1, index25].active && Main.tile[index24 + 1, index25].type == (byte) 0 && Main.tile[index24, index25 - 1].active && Main.tile[index24, index25 - 1].type == (byte) 0 && Main.tile[index24, index25 + 1].active && Main.tile[index24, index25 + 1].type == (byte) 0) { Main.tile[index24, index25].active = true; Main.tile[index24, index25].type = (byte) 2; } int index26 = WorldGen.genRand.Next(1, Main.maxTilesX - 1); int index27 = WorldGen.genRand.Next(0, (int) num5); if (index27 >= Main.maxTilesY) index27 = Main.maxTilesY - 2; if (Main.tile[index26 - 1, index27].active && Main.tile[index26 - 1, index27].type == (byte) 0 && Main.tile[index26 + 1, index27].active && Main.tile[index26 + 1, index27].type == (byte) 0 && Main.tile[index26, index27 - 1].active && Main.tile[index26, index27 - 1].type == (byte) 0 && Main.tile[index26, index27 + 1].active && Main.tile[index26, index27 + 1].type == (byte) 0) { Main.tile[index26, index27].active = true; Main.tile[index26, index27].type = (byte) 2; } } Main.statusText = Lang.gen[11] + " 0%"; float num39 = (float) (Main.maxTilesX / 4200) * 1.5f; int num40 = 0; float num41 = (float) WorldGen.genRand.Next(15, 30) * 0.01f; int num42; if (num9 == -1) { float num43 = 1f - num41; num42 = (int) ((double) Main.maxTilesX * (double) num43); } else num42 = (int) ((double) Main.maxTilesX * (double) num41); int num44 = (int) ((double) Main.maxTilesY + Main.rockLayer) / 2; int i1 = num42 + WorldGen.genRand.Next((int) (-100.0 * (double) num39), (int) (101.0 * (double) num39)); int j1 = num44 + WorldGen.genRand.Next((int) (-100.0 * (double) num39), (int) (101.0 * (double) num39)); int num45 = i1; int num46 = j1; WorldGen.TileRunner(i1, j1, (double) WorldGen.genRand.Next((int) (250.0 * (double) num39), (int) (500.0 * (double) num39)), WorldGen.genRand.Next(50, 150), 59, speedX: ((float) (num9 * 3))); for (int index = 0; (double) index < 6.0 * (double) num39; ++index) WorldGen.TileRunner(i1 + WorldGen.genRand.Next(-(int) (125.0 * (double) num39), (int) (125.0 * (double) num39)), j1 + WorldGen.genRand.Next(-(int) (125.0 * (double) num39), (int) (125.0 * (double) num39)), (double) WorldGen.genRand.Next(3, 7), WorldGen.genRand.Next(3, 8), WorldGen.genRand.Next(63, 65)); WorldGen.mudWall = true; Main.statusText = Lang.gen[11] + " 15%"; int i2 = i1 + WorldGen.genRand.Next((int) (-250.0 * (double) num39), (int) (251.0 * (double) num39)); int j2 = j1 + WorldGen.genRand.Next((int) (-150.0 * (double) num39), (int) (151.0 * (double) num39)); int num47 = i2; int num48 = j2; int num49 = i2; int num50 = j2; WorldGen.TileRunner(i2, j2, (double) WorldGen.genRand.Next((int) (250.0 * (double) num39), (int) (500.0 * (double) num39)), WorldGen.genRand.Next(50, 150), 59); WorldGen.mudWall = false; for (int index = 0; (double) index < 6.0 * (double) num39; ++index) WorldGen.TileRunner(i2 + WorldGen.genRand.Next(-(int) (125.0 * (double) num39), (int) (125.0 * (double) num39)), j2 + WorldGen.genRand.Next(-(int) (125.0 * (double) num39), (int) (125.0 * (double) num39)), (double) WorldGen.genRand.Next(3, 7), WorldGen.genRand.Next(3, 8), WorldGen.genRand.Next(65, 67)); WorldGen.mudWall = true; Main.statusText = Lang.gen[11] + " 30%"; int i3 = i2 + WorldGen.genRand.Next((int) (-400.0 * (double) num39), (int) (401.0 * (double) num39)); int j3 = j2 + WorldGen.genRand.Next((int) (-150.0 * (double) num39), (int) (151.0 * (double) num39)); int num51 = i3; int num52 = j3; WorldGen.TileRunner(i3, j3, (double) WorldGen.genRand.Next((int) (250.0 * (double) num39), (int) (500.0 * (double) num39)), WorldGen.genRand.Next(50, 150), 59, speedX: ((float) (num9 * -3))); WorldGen.mudWall = false; for (int index = 0; (double) index < 6.0 * (double) num39; ++index) WorldGen.TileRunner(i3 + WorldGen.genRand.Next(-(int) (125.0 * (double) num39), (int) (125.0 * (double) num39)), j3 + WorldGen.genRand.Next(-(int) (125.0 * (double) num39), (int) (125.0 * (double) num39)), (double) WorldGen.genRand.Next(3, 7), WorldGen.genRand.Next(3, 8), WorldGen.genRand.Next(67, 69)); WorldGen.mudWall = true; Main.statusText = Lang.gen[11] + " 45%"; int i4 = (num45 + num47 + num51) / 3; int j4 = (num46 + num48 + num52) / 3; WorldGen.TileRunner(i4, j4, (double) WorldGen.genRand.Next((int) (400.0 * (double) num39), (int) (600.0 * (double) num39)), 10000, 59, speedY: -20f, noYChange: true); WorldGen.JungleRunner(i4, j4); Main.statusText = Lang.gen[11] + " 60%"; WorldGen.mudWall = false; for (int index = 0; index < Main.maxTilesX / 10; ++index) { int i5 = WorldGen.genRand.Next(20, Main.maxTilesX - 20); int j5; for (j5 = WorldGen.genRand.Next((int) Main.rockLayer, Main.maxTilesY - 200); Main.tile[i5, j5].wall != (byte) 15; j5 = WorldGen.genRand.Next((int) Main.rockLayer, Main.maxTilesY - 200)) i5 = WorldGen.genRand.Next(20, Main.maxTilesX - 20); WorldGen.MudWallRunner(i5, j5); } int i6 = num49; int j6 = num50; for (int index = 0; (double) index <= 20.0 * (double) num39; ++index) { Main.statusText = Lang.gen[11] + " " + (object) (int) (60.0 + (double) index / (double) num39) + "%"; i6 += WorldGen.genRand.Next((int) (-5.0 * (double) num39), (int) (6.0 * (double) num39)); j6 += WorldGen.genRand.Next((int) (-5.0 * (double) num39), (int) (6.0 * (double) num39)); WorldGen.TileRunner(i6, j6, (double) WorldGen.genRand.Next(40, 100), WorldGen.genRand.Next(300, 500), 59); } for (int index28 = 0; (double) index28 <= 10.0 * (double) num39; ++index28) { Main.statusText = Lang.gen[11] + " " + (object) (int) (80.0 + (double) index28 / (double) num39 * 2.0) + "%"; int i7 = num49 + WorldGen.genRand.Next((int) (-600.0 * (double) num39), (int) (600.0 * (double) num39)); int j7; for (j7 = num50 + WorldGen.genRand.Next((int) (-200.0 * (double) num39), (int) (200.0 * (double) num39)); i7 < 1 || i7 >= Main.maxTilesX - 1 || j7 < 1 || j7 >= Main.maxTilesY - 1 || Main.tile[i7, j7].type != (byte) 59; j7 = num50 + WorldGen.genRand.Next((int) (-200.0 * (double) num39), (int) (200.0 * (double) num39))) i7 = num49 + WorldGen.genRand.Next((int) (-600.0 * (double) num39), (int) (600.0 * (double) num39)); for (int index29 = 0; (double) index29 < 8.0 * (double) num39; ++index29) { i7 += WorldGen.genRand.Next(-30, 31); j7 += WorldGen.genRand.Next(-30, 31); int type = -1; if (WorldGen.genRand.Next(7) == 0) type = -2; WorldGen.TileRunner(i7, j7, (double) WorldGen.genRand.Next(10, 20), WorldGen.genRand.Next(30, 70), type); } } for (int index = 0; (double) index <= 300.0 * (double) num39; ++index) { int i8 = num49 + WorldGen.genRand.Next((int) (-600.0 * (double) num39), (int) (600.0 * (double) num39)); int j8; for (j8 = num50 + WorldGen.genRand.Next((int) (-200.0 * (double) num39), (int) (200.0 * (double) num39)); i8 < 1 || i8 >= Main.maxTilesX - 1 || j8 < 1 || j8 >= Main.maxTilesY - 1 || Main.tile[i8, j8].type != (byte) 59; j8 = num50 + WorldGen.genRand.Next((int) (-200.0 * (double) num39), (int) (200.0 * (double) num39))) i8 = num49 + WorldGen.genRand.Next((int) (-600.0 * (double) num39), (int) (600.0 * (double) num39)); WorldGen.TileRunner(i8, j8, (double) WorldGen.genRand.Next(4, 10), WorldGen.genRand.Next(5, 30), 1); if (WorldGen.genRand.Next(4) == 0) { int type = WorldGen.genRand.Next(63, 69); WorldGen.TileRunner(i8 + WorldGen.genRand.Next(-1, 2), j8 + WorldGen.genRand.Next(-1, 2), (double) WorldGen.genRand.Next(3, 7), WorldGen.genRand.Next(4, 8), type); } } num40 = num49; float num53 = (float) WorldGen.genRand.Next(6, 10) * (float) (Main.maxTilesX / 4200); for (int index30 = 0; (double) index30 < (double) num53; ++index30) { bool flag5 = true; while (flag5) { int index31 = WorldGen.genRand.Next(20, Main.maxTilesX - 20); int index32 = WorldGen.genRand.Next((int) (Main.worldSurface + Main.rockLayer) / 2, Main.maxTilesY - 300); if (Main.tile[index31, index32].type == (byte) 59) { flag5 = false; int num54 = WorldGen.genRand.Next(2, 4); int num55 = WorldGen.genRand.Next(2, 4); for (int index33 = index31 - num54 - 1; index33 <= index31 + num54 + 1; ++index33) { for (int index34 = index32 - num55 - 1; index34 <= index32 + num55 + 1; ++index34) { Main.tile[index33, index34].active = true; Main.tile[index33, index34].type = (byte) 45; Main.tile[index33, index34].liquid = (byte) 0; Main.tile[index33, index34].lava = false; } } for (int index35 = index31 - num54; index35 <= index31 + num54; ++index35) { for (int index36 = index32 - num55; index36 <= index32 + num55; ++index36) Main.tile[index35, index36].active = false; } bool flag6 = false; int num56 = 0; while (!flag6 && num56 < 100) { ++num56; int i9 = WorldGen.genRand.Next(index31 - num54, index31 + num54 + 1); int j9 = WorldGen.genRand.Next(index32 - num55, index32 + num55 - 2); WorldGen.PlaceTile(i9, j9, 4, true); if (Main.tile[i9, j9].type == (byte) 4) flag6 = true; } for (int index37 = index31 - num54 - 1; index37 <= index31 + num54 + 1; ++index37) { for (int index38 = index32 + num55 - 2; index38 <= index32 + num55; ++index38) Main.tile[index37, index38].active = false; } for (int index39 = index31 - num54 - 1; index39 <= index31 + num54 + 1; ++index39) { for (int index40 = index32 + num55 - 2; index40 <= index32 + num55 - 1; ++index40) Main.tile[index39, index40].active = false; } for (int index41 = index31 - num54 - 1; index41 <= index31 + num54 + 1; ++index41) { int num57 = 4; for (int index42 = index32 + num55 + 2; !Main.tile[index41, index42].active && index42 < Main.maxTilesY && num57 > 0; --num57) { Main.tile[index41, index42].active = true; Main.tile[index41, index42].type = (byte) 59; ++index42; } } int num58 = num54 - WorldGen.genRand.Next(1, 3); int index43 = index32 - num55 - 2; while (num58 > -1) { for (int index44 = index31 - num58 - 1; index44 <= index31 + num58 + 1; ++index44) { Main.tile[index44, index43].active = true; Main.tile[index44, index43].type = (byte) 45; } num58 -= WorldGen.genRand.Next(1, 3); --index43; } WorldGen.JChestX[WorldGen.numJChests] = index31; WorldGen.JChestY[WorldGen.numJChests] = index32; ++WorldGen.numJChests; } } } for (int i10 = 0; i10 < Main.maxTilesX; ++i10) { for (int j10 = 0; j10 < Main.maxTilesY; ++j10) { if (Main.tile[i10, j10].active) { try { WorldGen.grassSpread = 0; WorldGen.SpreadGrass(i10, j10, 59, 60); } catch { WorldGen.grassSpread = 0; WorldGen.SpreadGrass(i10, j10, 59, 60, false); } } } } WorldGen.numIslandHouses = 0; WorldGen.houseCount = 0; Main.statusText = Lang.gen[12]; for (int index45 = 0; index45 < (int) ((double) Main.maxTilesX * 0.0008); ++index45) { int num59 = 0; bool flag7 = false; int index46 = WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.1), (int) ((double) Main.maxTilesX * 0.9)); bool flag8 = false; while (!flag8) { flag8 = true; while (index46 > Main.maxTilesX / 2 - 80 && index46 < Main.maxTilesX / 2 + 80) index46 = WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.1), (int) ((double) Main.maxTilesX * 0.9)); for (int index47 = 0; index47 < WorldGen.numIslandHouses; ++index47) { if (index46 > WorldGen.fihX[index47] - 80 && index46 < WorldGen.fihX[index47] + 80) { ++num59; flag8 = false; break; } } if (num59 >= 200) { flag7 = true; break; } } if (!flag7) { for (int index48 = 200; (double) index48 < Main.worldSurface; ++index48) { if (Main.tile[index46, index48].active) { int i11 = index46; int j11 = WorldGen.genRand.Next(90, index48 - 100); while ((double) j11 > num5 - 50.0) --j11; WorldGen.FloatingIsland(i11, j11); WorldGen.fihX[WorldGen.numIslandHouses] = i11; WorldGen.fihY[WorldGen.numIslandHouses] = j11; ++WorldGen.numIslandHouses; break; } } } } Main.statusText = Lang.gen[13]; for (int index = 0; index < Main.maxTilesX / 500; ++index) WorldGen.ShroomPatch(WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.3), (int) ((double) Main.maxTilesX * 0.7)), WorldGen.genRand.Next((int) Main.rockLayer, Main.maxTilesY - 350)); for (int i12 = 0; i12 < Main.maxTilesX; ++i12) { for (int worldSurface = (int) Main.worldSurface; worldSurface < Main.maxTilesY; ++worldSurface) { if (Main.tile[i12, worldSurface].active) { WorldGen.grassSpread = 0; WorldGen.SpreadGrass(i12, worldSurface, 59, 70, false); } } } Main.statusText = Lang.gen[14]; for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 0.001); ++index) 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); Main.statusText = Lang.gen[15]; for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 0.0001); ++index) WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int) num8, Main.maxTilesY), (double) WorldGen.genRand.Next(5, 12), WorldGen.genRand.Next(15, 50), 123); for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 0.0005); ++index) WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int) num8, Main.maxTilesY), (double) WorldGen.genRand.Next(2, 5), WorldGen.genRand.Next(2, 5), 123); Main.statusText = Lang.gen[16]; for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 6E-05); ++index) 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); for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 8E-05); ++index) 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); for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 0.0002); ++index) 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); for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 3E-05); ++index) 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); for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 8E-05); ++index) 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); for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 0.0002); ++index) 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); for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 2.6E-05); ++index) 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); for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 0.00015); ++index) 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); for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 0.00017); ++index) 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); for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 0.00012); ++index) 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); for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 0.00012); ++index) 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); for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 2E-05); ++index) WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int) num7, Main.maxTilesY), (double) WorldGen.genRand.Next(2, 4), WorldGen.genRand.Next(3, 6), 22); Main.statusText = Lang.gen[17]; for (int index49 = 0; index49 < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 0.0006); ++index49) { int index50 = WorldGen.genRand.Next(20, Main.maxTilesX - 20); int index51 = WorldGen.genRand.Next((int) num5, Main.maxTilesY - 20); if (index49 < WorldGen.numMCaves) { index50 = WorldGen.mCaveX[index49]; index51 = WorldGen.mCaveY[index49]; } if (!Main.tile[index50, index51].active && ((double) index51 > Main.worldSurface || Main.tile[index50, index51].wall > (byte) 0)) { while (!Main.tile[index50, index51].active && index51 > (int) num5) --index51; int j12 = index51 + 1; int num60 = 1; if (WorldGen.genRand.Next(2) == 0) num60 = -1; while (!Main.tile[index50, j12].active && index50 > 10 && index50 < Main.maxTilesX - 10) index50 += num60; int i13 = index50 - num60; if ((double) j12 > Main.worldSurface || Main.tile[i13, j12].wall > (byte) 0) WorldGen.TileRunner(i13, j12, (double) WorldGen.genRand.Next(4, 11), WorldGen.genRand.Next(2, 4), 51, true, (float) num60, -1f, overRide: false); } } Main.statusText = Lang.gen[18] + " 0%"; int num61 = Main.maxTilesY - WorldGen.genRand.Next(150, 190); for (int index52 = 0; index52 < Main.maxTilesX; ++index52) { num61 += WorldGen.genRand.Next(-3, 4); if (num61 < Main.maxTilesY - 190) num61 = Main.maxTilesY - 190; if (num61 > Main.maxTilesY - 160) num61 = Main.maxTilesY - 160; for (int index53 = num61 - 20 - WorldGen.genRand.Next(3); index53 < Main.maxTilesY; ++index53) { if (index53 >= num61) { Main.tile[index52, index53].active = false; Main.tile[index52, index53].lava = false; Main.tile[index52, index53].liquid = (byte) 0; } else Main.tile[index52, index53].type = (byte) 57; } } int num62 = Main.maxTilesY - WorldGen.genRand.Next(40, 70); for (int index54 = 10; index54 < Main.maxTilesX - 10; ++index54) { num62 += WorldGen.genRand.Next(-10, 11); if (num62 > Main.maxTilesY - 60) num62 = Main.maxTilesY - 60; if (num62 < Main.maxTilesY - 100) num62 = Main.maxTilesY - 120; for (int index55 = num62; index55 < Main.maxTilesY - 10; ++index55) { if (!Main.tile[index54, index55].active) { Main.tile[index54, index55].lava = true; Main.tile[index54, index55].liquid = byte.MaxValue; } } } for (int index56 = 0; index56 < Main.maxTilesX; ++index56) { if (WorldGen.genRand.Next(50) == 0) { int index57 = Main.maxTilesY - 65; while (!Main.tile[index56, index57].active && index57 > Main.maxTilesY - 135) --index57; WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), index57 + WorldGen.genRand.Next(20, 50), (double) WorldGen.genRand.Next(15, 20), 1000, 57, true, speedY: ((float) WorldGen.genRand.Next(1, 3)), noYChange: true); } } Liquid.QuickWater(-2); for (int i14 = 0; i14 < Main.maxTilesX; ++i14) { float num63 = (float) i14 / (float) (Main.maxTilesX - 1); Main.statusText = Lang.gen[18] + " " + (object) (int) ((double) num63 * 100.0 / 2.0 + 50.0) + "%"; if (WorldGen.genRand.Next(13) == 0) { int index = Main.maxTilesY - 65; while ((Main.tile[i14, index].liquid > (byte) 0 || Main.tile[i14, index].active) && index > Main.maxTilesY - 140) --index; WorldGen.TileRunner(i14, index - WorldGen.genRand.Next(2, 5), (double) WorldGen.genRand.Next(5, 30), 1000, 57, true, speedY: ((float) WorldGen.genRand.Next(1, 3)), noYChange: true); float num64 = (float) WorldGen.genRand.Next(1, 3); if (WorldGen.genRand.Next(3) == 0) num64 *= 0.5f; if (WorldGen.genRand.Next(2) == 0) WorldGen.TileRunner(i14, index - WorldGen.genRand.Next(2, 5), (double) (int) ((double) WorldGen.genRand.Next(5, 15) * (double) num64), (int) ((double) WorldGen.genRand.Next(10, 15) * (double) num64), 57, true, 1f, 0.3f); if (WorldGen.genRand.Next(2) == 0) { float num65 = (float) WorldGen.genRand.Next(1, 3); WorldGen.TileRunner(i14, index - WorldGen.genRand.Next(2, 5), (double) (int) ((double) WorldGen.genRand.Next(5, 15) * (double) num65), (int) ((double) WorldGen.genRand.Next(10, 15) * (double) num65), 57, true, -1f, 0.3f); } WorldGen.TileRunner(i14 + WorldGen.genRand.Next(-10, 10), index + WorldGen.genRand.Next(-10, 10), (double) WorldGen.genRand.Next(5, 15), WorldGen.genRand.Next(5, 10), -2, speedX: ((float) WorldGen.genRand.Next(-1, 3)), speedY: ((float) WorldGen.genRand.Next(-1, 3))); if (WorldGen.genRand.Next(3) == 0) WorldGen.TileRunner(i14 + WorldGen.genRand.Next(-10, 10), index + WorldGen.genRand.Next(-10, 10), (double) WorldGen.genRand.Next(10, 30), WorldGen.genRand.Next(10, 20), -2, speedX: ((float) WorldGen.genRand.Next(-1, 3)), speedY: ((float) WorldGen.genRand.Next(-1, 3))); if (WorldGen.genRand.Next(5) == 0) WorldGen.TileRunner(i14 + WorldGen.genRand.Next(-15, 15), index + WorldGen.genRand.Next(-15, 10), (double) WorldGen.genRand.Next(15, 30), WorldGen.genRand.Next(5, 20), -2, speedX: ((float) WorldGen.genRand.Next(-1, 3)), speedY: ((float) WorldGen.genRand.Next(-1, 3))); } } for (int index = 0; index < Main.maxTilesX; ++index) WorldGen.TileRunner(WorldGen.genRand.Next(20, Main.maxTilesX - 20), WorldGen.genRand.Next(Main.maxTilesY - 180, Main.maxTilesY - 10), (double) WorldGen.genRand.Next(2, 7), WorldGen.genRand.Next(2, 7), -2); for (int index = 0; index < Main.maxTilesX; ++index) { if (!Main.tile[index, Main.maxTilesY - 145].active) { Main.tile[index, Main.maxTilesY - 145].liquid = byte.MaxValue; Main.tile[index, Main.maxTilesY - 145].lava = true; } if (!Main.tile[index, Main.maxTilesY - 144].active) { Main.tile[index, Main.maxTilesY - 144].liquid = byte.MaxValue; Main.tile[index, Main.maxTilesY - 144].lava = true; } } for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 0.0008); ++index) WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next(Main.maxTilesY - 140, Main.maxTilesY), (double) WorldGen.genRand.Next(2, 7), WorldGen.genRand.Next(3, 7), 58); WorldGen.AddHellHouses(); int num66 = WorldGen.genRand.Next(2, (int) ((double) Main.maxTilesX * 0.005)); for (int index = 0; index < num66; ++index) { float num67 = (float) index / (float) num66; Main.statusText = Lang.gen[19] + " " + (object) (int) ((double) num67 * 100.0) + "%"; int i15 = WorldGen.genRand.Next(300, Main.maxTilesX - 300); while (i15 > Main.maxTilesX / 2 - 50 && i15 < Main.maxTilesX / 2 + 50) i15 = WorldGen.genRand.Next(300, Main.maxTilesX - 300); int j13 = (int) num5 - 20; while (!Main.tile[i15, j13].active) ++j13; WorldGen.Lakinater(i15, j13); } int x1; int num68; if (num9 == -1) { x1 = WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.05), (int) ((double) Main.maxTilesX * 0.2)); num68 = -1; } else { x1 = WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.8), (int) ((double) Main.maxTilesX * 0.95)); num68 = 1; } int y1 = (int) ((Main.rockLayer + (double) Main.maxTilesY) / 2.0) + WorldGen.genRand.Next(-200, 200); WorldGen.MakeDungeon(x1, y1); for (int index58 = 0; (double) index58 < (double) Main.maxTilesX * 0.00045; ++index58) { float num69 = (float) index58 / ((float) Main.maxTilesX * 0.00045f); Main.statusText = Lang.gen[20] + " " + (object) (int) ((double) num69 * 100.0) + "%"; bool flag9 = false; int num70 = 0; int num71 = 0; int num72 = 0; while (!flag9) { int num73 = 0; flag9 = true; int num74 = Main.maxTilesX / 2; int num75 = 200; num70 = WorldGen.genRand.Next(320, Main.maxTilesX - 320); num71 = num70 - WorldGen.genRand.Next(200) - 100; num72 = num70 + WorldGen.genRand.Next(200) + 100; if (num71 < 285) num71 = 285; if (num72 > Main.maxTilesX - 285) num72 = Main.maxTilesX - 285; if (num70 > num74 - num75 && num70 < num74 + num75) flag9 = false; if (num71 > num74 - num75 && num71 < num74 + num75) flag9 = false; if (num72 > num74 - num75 && num72 < num74 + num75) flag9 = false; for (int index59 = num71; index59 < num72; ++index59) { for (int index60 = 0; index60 < (int) Main.worldSurface; index60 += 5) { if (Main.tile[index59, index60].active && Main.tileDungeon[(int) Main.tile[index59, index60].type]) { flag9 = false; break; } if (!flag9) break; } } if (num73 < 200 && WorldGen.JungleX > num71 && WorldGen.JungleX < num72) { int num76 = num73 + 1; flag9 = false; } } int num77 = 0; for (int i16 = num71; i16 < num72; ++i16) { if (num77 > 0) --num77; if (i16 == num70 || num77 == 0) { for (int j14 = (int) num5; (double) j14 < Main.worldSurface - 1.0; ++j14) { if (Main.tile[i16, j14].active || Main.tile[i16, j14].wall > (byte) 0) { if (i16 == num70) { num77 = 20; WorldGen.ChasmRunner(i16, j14, WorldGen.genRand.Next(150) + 150, true); break; } if (WorldGen.genRand.Next(35) == 0 && num77 == 0) { num77 = 30; bool makeOrb = true; WorldGen.ChasmRunner(i16, j14, WorldGen.genRand.Next(50) + 50, makeOrb); break; } break; } } } for (int index61 = (int) num5; (double) index61 < Main.worldSurface - 1.0; ++index61) { if (Main.tile[i16, index61].active) { int num78 = index61 + WorldGen.genRand.Next(10, 14); for (int index62 = index61; index62 < num78; ++index62) { if ((Main.tile[i16, index62].type == (byte) 59 || Main.tile[i16, index62].type == (byte) 60) && i16 >= num71 + WorldGen.genRand.Next(5) && i16 < num72 - WorldGen.genRand.Next(5)) Main.tile[i16, index62].type = (byte) 0; } break; } } } double num79 = Main.worldSurface + 40.0; for (int index63 = num71; index63 < num72; ++index63) { num79 += (double) WorldGen.genRand.Next(-2, 3); if (num79 < Main.worldSurface + 30.0) num79 = Main.worldSurface + 30.0; if (num79 > Main.worldSurface + 50.0) num79 = Main.worldSurface + 50.0; int i17 = index63; bool flag10 = false; for (int j15 = (int) num5; (double) j15 < num79; ++j15) { if (Main.tile[i17, j15].active) { if (Main.tile[i17, j15].type == (byte) 53 && i17 >= num71 + WorldGen.genRand.Next(5) && i17 <= num72 - WorldGen.genRand.Next(5)) Main.tile[i17, j15].type = (byte) 0; if (Main.tile[i17, j15].type == (byte) 0 && (double) j15 < Main.worldSurface - 1.0 && !flag10) { WorldGen.grassSpread = 0; WorldGen.SpreadGrass(i17, j15, grass: 23); } flag10 = true; if (Main.tile[i17, j15].type == (byte) 1 && i17 >= num71 + WorldGen.genRand.Next(5) && i17 <= num72 - WorldGen.genRand.Next(5)) Main.tile[i17, j15].type = (byte) 25; if (Main.tile[i17, j15].type == (byte) 2) Main.tile[i17, j15].type = (byte) 23; } } } for (int index64 = num71; index64 < num72; ++index64) { for (int index65 = 0; index65 < Main.maxTilesY - 50; ++index65) { if (Main.tile[index64, index65].active && Main.tile[index64, index65].type == (byte) 31) { int num80 = index64 - 13; int num81 = index64 + 13; int num82 = index65 - 13; int num83 = index65 + 13; for (int index66 = num80; index66 < num81; ++index66) { if (index66 > 10 && index66 < Main.maxTilesX - 10) { for (int index67 = num82; index67 < num83; ++index67) { if (Math.Abs(index66 - index64) + Math.Abs(index67 - index65) < 9 + WorldGen.genRand.Next(11) && WorldGen.genRand.Next(3) != 0 && Main.tile[index66, index67].type != (byte) 31) { Main.tile[index66, index67].active = true; Main.tile[index66, index67].type = (byte) 25; if (Math.Abs(index66 - index64) <= 1 && Math.Abs(index67 - index65) <= 1) Main.tile[index66, index67].active = false; } if (Main.tile[index66, index67].type != (byte) 31 && Math.Abs(index66 - index64) <= 2 + WorldGen.genRand.Next(3) && Math.Abs(index67 - index65) <= 2 + WorldGen.genRand.Next(3)) Main.tile[index66, index67].active = false; } } } } } } } Main.statusText = Lang.gen[21]; for (int index = 0; index < WorldGen.numMCaves; ++index) { int i18 = WorldGen.mCaveX[index]; int j16 = WorldGen.mCaveY[index]; WorldGen.CaveOpenater(i18, j16); WorldGen.Cavinator(i18, j16, WorldGen.genRand.Next(40, 50)); } int index68 = 0; int index69 = 0; int index70 = 20; int index71 = Main.maxTilesX - 20; Main.statusText = Lang.gen[22]; for (int index72 = 0; index72 < 2; ++index72) { if (index72 == 0) { int num84 = 0; int num85 = WorldGen.genRand.Next(125, 200) + 50; if (num68 == 1) num85 = 275; int num86 = 0; float num87 = 1f; int index73 = 0; while (!Main.tile[num85 - 1, index73].active) ++index73; index68 = index73; int num88 = index73 + WorldGen.genRand.Next(1, 5); for (int index74 = num85 - 1; index74 >= num84; --index74) { ++num86; if (num86 < 3) num87 += (float) WorldGen.genRand.Next(10, 20) * 0.2f; else if (num86 < 6) num87 += (float) WorldGen.genRand.Next(10, 20) * 0.15f; else if (num86 < 9) num87 += (float) WorldGen.genRand.Next(10, 20) * 0.1f; else if (num86 < 15) num87 += (float) WorldGen.genRand.Next(10, 20) * 0.07f; else if (num86 < 50) num87 += (float) WorldGen.genRand.Next(10, 20) * 0.05f; else if (num86 < 75) num87 += (float) WorldGen.genRand.Next(10, 20) * 0.04f; else if (num86 < 100) num87 += (float) WorldGen.genRand.Next(10, 20) * 0.03f; else if (num86 < 125) num87 += (float) WorldGen.genRand.Next(10, 20) * 0.02f; else if (num86 < 150) num87 += (float) WorldGen.genRand.Next(10, 20) * 0.01f; else if (num86 < 175) num87 += (float) WorldGen.genRand.Next(10, 20) * 0.005f; else if (num86 < 200) num87 += (float) WorldGen.genRand.Next(10, 20) * (1f / 1000f); else if (num86 < 230) num87 += (float) WorldGen.genRand.Next(10, 20) * 0.01f; else if (num86 < 235) num87 += (float) WorldGen.genRand.Next(10, 20) * 0.05f; else if (num86 < 240) num87 += (float) WorldGen.genRand.Next(10, 20) * 0.1f; else if (num86 < 245) num87 += (float) WorldGen.genRand.Next(10, 20) * 0.05f; else if (num86 < (int) byte.MaxValue) num87 += (float) WorldGen.genRand.Next(10, 20) * 0.01f; if (num86 == 235) index71 = index74; if (num86 == 235) index70 = index74; int num89 = WorldGen.genRand.Next(15, 20); for (int index75 = 0; (double) index75 < (double) num88 + (double) num87 + (double) num89; ++index75) { if ((double) index75 < (double) num88 + (double) num87 * 0.75 - 3.0) { Main.tile[index74, index75].active = false; if (index75 > num88) Main.tile[index74, index75].liquid = byte.MaxValue; else if (index75 == num88) Main.tile[index74, index75].liquid = (byte) 127; } else if (index75 > num88) { Main.tile[index74, index75].type = (byte) 53; Main.tile[index74, index75].active = true; } Main.tile[index74, index75].wall = (byte) 0; } } } else { int index76 = Main.maxTilesX - WorldGen.genRand.Next(125, 200) - 50; int maxTilesX = Main.maxTilesX; if (num68 == -1) index76 = Main.maxTilesX - 275; float num90 = 1f; int num91 = 0; int index77 = 0; while (!Main.tile[index76, index77].active) ++index77; index69 = index77; int num92 = index77 + WorldGen.genRand.Next(1, 5); for (int index78 = index76; index78 < maxTilesX; ++index78) { ++num91; if (num91 < 3) num90 += (float) WorldGen.genRand.Next(10, 20) * 0.2f; else if (num91 < 6) num90 += (float) WorldGen.genRand.Next(10, 20) * 0.15f; else if (num91 < 9) num90 += (float) WorldGen.genRand.Next(10, 20) * 0.1f; else if (num91 < 15) num90 += (float) WorldGen.genRand.Next(10, 20) * 0.07f; else if (num91 < 50) num90 += (float) WorldGen.genRand.Next(10, 20) * 0.05f; else if (num91 < 75) num90 += (float) WorldGen.genRand.Next(10, 20) * 0.04f; else if (num91 < 100) num90 += (float) WorldGen.genRand.Next(10, 20) * 0.03f; else if (num91 < 125) num90 += (float) WorldGen.genRand.Next(10, 20) * 0.02f; else if (num91 < 150) num90 += (float) WorldGen.genRand.Next(10, 20) * 0.01f; else if (num91 < 175) num90 += (float) WorldGen.genRand.Next(10, 20) * 0.005f; else if (num91 < 200) num90 += (float) WorldGen.genRand.Next(10, 20) * (1f / 1000f); else if (num91 < 230) num90 += (float) WorldGen.genRand.Next(10, 20) * 0.01f; else if (num91 < 235) num90 += (float) WorldGen.genRand.Next(10, 20) * 0.05f; else if (num91 < 240) num90 += (float) WorldGen.genRand.Next(10, 20) * 0.1f; else if (num91 < 245) num90 += (float) WorldGen.genRand.Next(10, 20) * 0.05f; else if (num91 < (int) byte.MaxValue) num90 += (float) WorldGen.genRand.Next(10, 20) * 0.01f; if (num91 == 235) index71 = index78; int num93 = WorldGen.genRand.Next(15, 20); for (int index79 = 0; (double) index79 < (double) num92 + (double) num90 + (double) num93; ++index79) { if ((double) index79 < (double) num92 + (double) num90 * 0.75 - 3.0 && (double) index79 < Main.worldSurface - 2.0) { Main.tile[index78, index79].active = false; if (index79 > num92) Main.tile[index78, index79].liquid = byte.MaxValue; else if (index79 == num92) Main.tile[index78, index79].liquid = (byte) 127; } else if (index79 > num92) { Main.tile[index78, index79].type = (byte) 53; Main.tile[index78, index79].active = true; } Main.tile[index78, index79].wall = (byte) 0; } } } } while (!Main.tile[index70, index68].active) ++index68; int num94 = index68 + 1; while (!Main.tile[index71, index69].active) ++index69; int num95 = index69 + 1; Main.statusText = Lang.gen[23]; for (int type = 63; type <= 68; ++type) { float num96 = 0.0f; switch (type) { case 63: num96 = (float) Main.maxTilesX * 0.3f; break; case 64: num96 = (float) Main.maxTilesX * 0.1f; break; case 65: num96 = (float) Main.maxTilesX * 0.25f; break; case 66: num96 = (float) Main.maxTilesX * 0.45f; break; case 67: num96 = (float) Main.maxTilesX * 0.5f; break; case 68: num96 = (float) Main.maxTilesX * 0.05f; break; } float num97 = num96 * 0.2f; for (int index80 = 0; (double) index80 < (double) num97; ++index80) { int i19 = WorldGen.genRand.Next(0, Main.maxTilesX); int j17; for (j17 = WorldGen.genRand.Next((int) Main.worldSurface, Main.maxTilesY); Main.tile[i19, j17].type != (byte) 1; j17 = WorldGen.genRand.Next((int) Main.worldSurface, Main.maxTilesY)) i19 = WorldGen.genRand.Next(0, Main.maxTilesX); WorldGen.TileRunner(i19, j17, (double) WorldGen.genRand.Next(2, 6), WorldGen.genRand.Next(3, 7), type); } } for (int index81 = 0; index81 < 2; ++index81) { int num98 = 1; int num99 = 5; int num100 = Main.maxTilesX - 5; if (index81 == 1) { num98 = -1; num99 = Main.maxTilesX - 5; num100 = 5; } for (int index82 = num99; index82 != num100; index82 += num98) { for (int index83 = 10; index83 < Main.maxTilesY - 10; ++index83) { if (Main.tile[index82, index83].active && Main.tile[index82, index83].type == (byte) 53 && Main.tile[index82, index83 + 1].active && Main.tile[index82, index83 + 1].type == (byte) 53) { int index84 = index82 + num98; int index85 = index83 + 1; if (!Main.tile[index84, index83].active && !Main.tile[index84, index83 + 1].active) { while (!Main.tile[index84, index85].active) ++index85; int index86 = index85 - 1; Main.tile[index82, index83].active = false; Main.tile[index84, index86].active = true; Main.tile[index84, index86].type = (byte) 53; } } } } } for (int index87 = 0; index87 < Main.maxTilesX; ++index87) { float num101 = (float) index87 / (float) (Main.maxTilesX - 1); Main.statusText = Lang.gen[24] + " " + (object) (int) ((double) num101 * 100.0) + "%"; for (int index88 = Main.maxTilesY - 5; index88 > 0; --index88) { if (Main.tile[index87, index88].active) { if (Main.tile[index87, index88].type == (byte) 53) { for (int index89 = index88; !Main.tile[index87, index89 + 1].active && index89 < Main.maxTilesY - 5; ++index89) { Main.tile[index87, index89 + 1].active = true; Main.tile[index87, index89 + 1].type = (byte) 53; } } else if (Main.tile[index87, index88].type == (byte) 123) { for (int index90 = index88; !Main.tile[index87, index90 + 1].active && index90 < Main.maxTilesY - 5; ++index90) { Main.tile[index87, index90 + 1].active = true; Main.tile[index87, index90 + 1].type = (byte) 123; Main.tile[index87, index90].active = false; } } } } } for (int index91 = 3; index91 < Main.maxTilesX - 3; ++index91) { float num102 = (float) index91 / (float) Main.maxTilesX; Main.statusText = Lang.gen[25] + " " + (object) (int) ((double) num102 * 100.0 + 1.0) + "%"; bool flag11 = true; for (int index92 = 0; (double) index92 < Main.worldSurface; ++index92) { if (flag11) { if (Main.tile[index91, index92].wall == (byte) 2) Main.tile[index91, index92].wall = (byte) 0; if (Main.tile[index91, index92].type != (byte) 53) { if (Main.tile[index91 - 1, index92].wall == (byte) 2) Main.tile[index91 - 1, index92].wall = (byte) 0; if (Main.tile[index91 - 2, index92].wall == (byte) 2 && WorldGen.genRand.Next(2) == 0) Main.tile[index91 - 2, index92].wall = (byte) 0; if (Main.tile[index91 - 3, index92].wall == (byte) 2 && WorldGen.genRand.Next(2) == 0) Main.tile[index91 - 3, index92].wall = (byte) 0; if (Main.tile[index91 + 1, index92].wall == (byte) 2) Main.tile[index91 + 1, index92].wall = (byte) 0; if (Main.tile[index91 + 2, index92].wall == (byte) 2 && WorldGen.genRand.Next(2) == 0) Main.tile[index91 + 2, index92].wall = (byte) 0; if (Main.tile[index91 + 3, index92].wall == (byte) 2 && WorldGen.genRand.Next(2) == 0) Main.tile[index91 + 3, index92].wall = (byte) 0; if (Main.tile[index91, index92].active) flag11 = false; } } else if (Main.tile[index91, index92].wall == (byte) 0 && Main.tile[index91, index92 + 1].wall == (byte) 0 && Main.tile[index91, index92 + 2].wall == (byte) 0 && Main.tile[index91, index92 + 3].wall == (byte) 0 && Main.tile[index91, index92 + 4].wall == (byte) 0 && Main.tile[index91 - 1, index92].wall == (byte) 0 && Main.tile[index91 + 1, index92].wall == (byte) 0 && Main.tile[index91 - 2, index92].wall == (byte) 0 && Main.tile[index91 + 2, index92].wall == (byte) 0 && !Main.tile[index91, index92].active && !Main.tile[index91, index92 + 1].active && !Main.tile[index91, index92 + 2].active && !Main.tile[index91, index92 + 3].active) flag11 = true; } } for (int index93 = 0; index93 < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 2E-05); ++index93) { float num103 = (float) index93 / ((float) (Main.maxTilesX * Main.maxTilesY) * 2E-05f); Main.statusText = Lang.gen[26] + " " + (object) (int) ((double) num103 * 100.0 + 1.0) + "%"; bool flag12 = false; int num104 = 0; while (!flag12) { int x2 = WorldGen.genRand.Next(1, Main.maxTilesX); int y2 = (int) (num6 + 20.0); WorldGen.Place3x2(x2, y2, 26); if (Main.tile[x2, y2].type == (byte) 26) { flag12 = true; } else { ++num104; if (num104 >= 10000) flag12 = true; } } } for (int index94 = 0; index94 < Main.maxTilesX; ++index94) { int index95 = index94; for (int index96 = (int) num5; (double) index96 < Main.worldSurface - 1.0; ++index96) { if (Main.tile[index95, index96].active) { if (Main.tile[index95, index96].type == (byte) 60) { Main.tile[index95, index96 - 1].liquid = byte.MaxValue; Main.tile[index95, index96 - 2].liquid = byte.MaxValue; break; } break; } } } for (int index97 = 400; index97 < Main.maxTilesX - 400; ++index97) { int index98 = index97; for (int index99 = (int) num5; (double) index99 < Main.worldSurface - 1.0; ++index99) { if (Main.tile[index98, index99].active) { if (Main.tile[index98, index99].type == (byte) 53) { int index100 = index99; while ((double) index100 > num5) { --index100; Main.tile[index98, index100].liquid = (byte) 0; } break; } break; } } } Liquid.QuickWater(3); WorldGen.WaterCheck(); int num105 = 0; Liquid.quickSettle = true; while (num105 < 10) { int num106 = Liquid.numLiquid + LiquidBuffer.numLiquidBuffer; ++num105; float num107 = 0.0f; while (Liquid.numLiquid > 0) { float num108 = (float) (num106 - (Liquid.numLiquid + LiquidBuffer.numLiquidBuffer)) / (float) num106; if (Liquid.numLiquid + LiquidBuffer.numLiquidBuffer > num106) num106 = Liquid.numLiquid + LiquidBuffer.numLiquidBuffer; if ((double) num108 > (double) num107) num107 = num108; else num108 = num107; if (num105 == 1) Main.statusText = Lang.gen[27] + " " + (object) (int) ((double) num108 * 100.0 / 3.0 + 33.0) + "%"; int num109 = 10; if (num105 > num109) ; Liquid.UpdateLiquid(); } WorldGen.WaterCheck(); Main.statusText = Lang.gen[27] + " " + (object) (int) ((double) num105 * 10.0 / 3.0 + 66.0) + "%"; } Liquid.quickSettle = false; float num110 = (float) (Main.maxTilesX / 4200); for (int index101 = 0; index101 < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 2E-05); ++index101) { float num111 = (float) index101 / ((float) (Main.maxTilesX * Main.maxTilesY) * 2E-05f); Main.statusText = Lang.gen[28] + " " + (object) (int) ((double) num111 * 100.0 + 1.0) + "%"; bool flag13 = false; int num112 = 0; while (!flag13) { if (WorldGen.AddLifeCrystal(WorldGen.genRand.Next(1, Main.maxTilesX), WorldGen.genRand.Next((int) (num6 + 20.0), Main.maxTilesY))) { flag13 = true; } else { ++num112; if (num112 >= 10000) flag13 = true; } } } int style = 0; for (int index102 = 0; (double) index102 < 82.0 * (double) num110; ++index102) { if (style > 41) style = 0; float num113 = (float) index102 / (200f * num110); Main.statusText = Lang.gen[29] + " " + (object) (int) ((double) num113 * 100.0 + 1.0) + "%"; bool flag14 = false; int num114 = 0; while (!flag14) { int i20 = WorldGen.genRand.Next(20, Main.maxTilesX - 20); int index103 = WorldGen.genRand.Next((int) (num6 + 20.0), Main.maxTilesY - 300); while (!Main.tile[i20, index103].active) ++index103; int j18 = index103 - 1; WorldGen.PlaceTile(i20, j18, 105, true, true, style: style); if (Main.tile[i20, j18].active && Main.tile[i20, j18].type == (byte) 105) { flag14 = true; ++style; } else { ++num114; if (num114 >= 10000) flag14 = true; } } } for (int index104 = 0; index104 < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 1.6E-05); ++index104) { float num115 = (float) index104 / ((float) (Main.maxTilesX * Main.maxTilesY) * 1.6E-05f); Main.statusText = Lang.gen[30] + " " + (object) (int) ((double) num115 * 100.0 + 1.0) + "%"; bool flag15 = false; int num116 = 0; while (!flag15) { int i21 = WorldGen.genRand.Next(20, Main.maxTilesX - 20); int j19 = WorldGen.genRand.Next((int) (num6 + 20.0), Main.maxTilesY - 230); if ((double) index104 <= 3.0 * (double) num110) j19 = WorldGen.genRand.Next(Main.maxTilesY - 200, Main.maxTilesY - 50); while (Main.tile[i21, j19].wall == (byte) 7 || Main.tile[i21, j19].wall == (byte) 8 || Main.tile[i21, j19].wall == (byte) 9) { i21 = WorldGen.genRand.Next(1, Main.maxTilesX); j19 = WorldGen.genRand.Next((int) (num6 + 20.0), Main.maxTilesY - 230); if (index104 <= 3) j19 = WorldGen.genRand.Next(Main.maxTilesY - 200, Main.maxTilesY - 50); } if (WorldGen.AddBuriedChest(i21, j19)) { flag15 = true; if (WorldGen.genRand.Next(2) == 0) { int j20 = j19; while (Main.tile[i21, j20].type != (byte) 21 && j20 < Main.maxTilesY - 300) ++j20; if (j19 < Main.maxTilesY - 300) WorldGen.MineHouse(i21, j20); } } else { ++num116; if (num116 >= 5000) flag15 = true; } } } for (int index105 = 0; index105 < (int) ((double) Main.maxTilesX * 0.005); ++index105) { float num117 = (float) index105 / ((float) Main.maxTilesX * 0.005f); Main.statusText = Lang.gen[31] + " " + (object) (int) ((double) num117 * 100.0 + 1.0) + "%"; bool flag16 = false; int num118 = 0; while (!flag16) { int i22 = WorldGen.genRand.Next(300, Main.maxTilesX - 300); int j21 = WorldGen.genRand.Next((int) num5, (int) Main.worldSurface); bool flag17 = false; if (Main.tile[i22, j21].wall == (byte) 2 && !Main.tile[i22, j21].active) flag17 = true; if (flag17 && WorldGen.AddBuriedChest(i22, j21, notNearOtherChests: true)) { flag16 = true; } else { ++num118; if (num118 >= 2000) flag16 = true; } } } int num119 = 0; for (int index106 = 0; index106 < WorldGen.numJChests; ++index106) { float num120 = (float) (index106 / WorldGen.numJChests); Main.statusText = Lang.gen[32] + " " + (object) (int) ((double) num120 * 100.0 + 1.0) + "%"; ++num119; int contain = 211; switch (num119) { case 1: contain = 211; break; case 2: contain = 212; break; case 3: contain = 213; break; } if (num119 > 3) num119 = 0; if (!WorldGen.AddBuriedChest(WorldGen.JChestX[index106] + WorldGen.genRand.Next(2), WorldGen.JChestY[index106], contain)) { for (int i23 = WorldGen.JChestX[index106]; i23 <= WorldGen.JChestX[index106] + 1; ++i23) { for (int j22 = WorldGen.JChestY[index106]; j22 <= WorldGen.JChestY[index106] + 1; ++j22) WorldGen.KillTile(i23, j22); } WorldGen.AddBuriedChest(WorldGen.JChestX[index106], WorldGen.JChestY[index106], contain); } } int num121 = 0; for (int index107 = 0; (double) index107 < 9.0 * (double) num110; ++index107) { float num122 = (float) index107 / (9f * num110); Main.statusText = Lang.gen[33] + " " + (object) (int) ((double) num122 * 100.0 + 1.0) + "%"; ++num121; int contain; switch (num121) { case 1: contain = 186; break; case 2: contain = 277; break; default: contain = 187; num121 = 0; break; } int i24; int j23; for (bool flag18 = false; !flag18; flag18 = WorldGen.AddBuriedChest(i24, j23, contain)) { i24 = WorldGen.genRand.Next(1, Main.maxTilesX); for (j23 = WorldGen.genRand.Next(1, Main.maxTilesY - 200); Main.tile[i24, j23].liquid < (byte) 200 || Main.tile[i24, j23].lava; j23 = WorldGen.genRand.Next(1, Main.maxTilesY - 200)) i24 = WorldGen.genRand.Next(1, Main.maxTilesX); } } for (int index108 = 0; index108 < WorldGen.numIslandHouses; ++index108) WorldGen.IslandHouse(WorldGen.fihX[index108], WorldGen.fihY[index108]); for (int index109 = 0; index109 < (int) ((double) Main.maxTilesX * 0.05); ++index109) { float num123 = (float) index109 / ((float) Main.maxTilesX * 0.05f); Main.statusText = Lang.gen[34] + " " + (object) (int) ((double) num123 * 100.0 + 1.0) + "%"; for (int index110 = 0; index110 < 1000; ++index110) { int x2 = Main.rand.Next(200, Main.maxTilesX - 200); int y2 = Main.rand.Next((int) Main.worldSurface, Main.maxTilesY - 300); if (Main.tile[x2, y2].wall == (byte) 0 && WorldGen.placeTrap(x2, y2)) break; } } for (int index111 = 0; index111 < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 0.0008); ++index111) { float num124 = (float) index111 / ((float) (Main.maxTilesX * Main.maxTilesY) * 0.0008f); Main.statusText = Lang.gen[35] + " " + (object) (int) ((double) num124 * 100.0 + 1.0) + "%"; bool flag19 = false; int num125 = 0; while (!flag19) { int num126 = WorldGen.genRand.Next((int) num6, Main.maxTilesY - 10); if ((double) num124 > 0.93) num126 = Main.maxTilesY - 150; else if ((double) num124 > 0.75) num126 = (int) num5; int x3 = WorldGen.genRand.Next(1, Main.maxTilesX); bool flag20 = false; for (int y3 = num126; y3 < Main.maxTilesY; ++y3) { if (!flag20) { if (Main.tile[x3, y3].active && Main.tileSolid[(int) Main.tile[x3, y3].type] && !Main.tile[x3, y3 - 1].lava) flag20 = true; } else { if (WorldGen.PlacePot(x3, y3)) { flag19 = true; break; } ++num125; if (num125 >= 10000) { flag19 = true; break; } } } } } for (int index112 = 0; index112 < Main.maxTilesX / 200; ++index112) { float num127 = (float) (index112 / (Main.maxTilesX / 200)); Main.statusText = Lang.gen[36] + " " + (object) (int) ((double) num127 * 100.0 + 1.0) + "%"; bool flag21 = false; int num128 = 0; while (!flag21) { int i25 = WorldGen.genRand.Next(1, Main.maxTilesX); int index113 = WorldGen.genRand.Next(Main.maxTilesY - 250, Main.maxTilesY - 5); try { if (Main.tile[i25, index113].wall != (byte) 13) { if (Main.tile[i25, index113].wall != (byte) 14) continue; } while (!Main.tile[i25, index113].active) ++index113; int j24 = index113 - 1; WorldGen.PlaceTile(i25, j24, 77); if (Main.tile[i25, j24].type == (byte) 77) { flag21 = true; } else { ++num128; if (num128 >= 10000) flag21 = true; } } catch { } } } Main.statusText = Lang.gen[37]; for (int index114 = 0; index114 < Main.maxTilesX; ++index114) { int i26 = index114; bool flag22 = true; for (int j25 = 0; (double) j25 < Main.worldSurface - 1.0; ++j25) { if (Main.tile[i26, j25].active) { if (flag22) { if (Main.tile[i26, j25].type == (byte) 0) { try { WorldGen.grassSpread = 0; WorldGen.SpreadGrass(i26, j25); } catch { WorldGen.grassSpread = 0; WorldGen.SpreadGrass(i26, j25, repeat: false); } } } if ((double) j25 <= num6) flag22 = false; else break; } else if (Main.tile[i26, j25].wall == (byte) 0) flag22 = true; } } Main.statusText = Lang.gen[38]; for (int i27 = 5; i27 < Main.maxTilesX - 5; ++i27) { if (WorldGen.genRand.Next(8) == 0) { for (int j26 = 0; (double) j26 < Main.worldSurface - 1.0; ++j26) { if (Main.tile[i27, j26].active && Main.tile[i27, j26].type == (byte) 53 && !Main.tile[i27, j26 - 1].active && Main.tile[i27, j26 - 1].wall == (byte) 0) { if (i27 < 250 || i27 > Main.maxTilesX - 250) { if (Main.tile[i27, j26 - 2].liquid == byte.MaxValue && Main.tile[i27, j26 - 3].liquid == byte.MaxValue && Main.tile[i27, j26 - 4].liquid == byte.MaxValue) WorldGen.PlaceTile(i27, j26 - 1, 81, true); } else if (i27 > 400 && i27 < Main.maxTilesX - 400) WorldGen.PlantCactus(i27, j26); } } } } int num129 = 5; bool flag23 = true; while (flag23) { int index115 = Main.maxTilesX / 2 + WorldGen.genRand.Next(-num129, num129 + 1); for (int index116 = 0; index116 < Main.maxTilesY; ++index116) { if (Main.tile[index115, index116].active) { Main.spawnTileX = index115; Main.spawnTileY = index116; break; } } flag23 = false; ++num129; if ((double) Main.spawnTileY > Main.worldSurface) flag23 = true; if (Main.tile[Main.spawnTileX, Main.spawnTileY - 1].liquid > (byte) 0) flag23 = true; } int num130 = 10; while ((double) Main.spawnTileY > Main.worldSurface) { int index117 = WorldGen.genRand.Next(Main.maxTilesX / 2 - num130, Main.maxTilesX / 2 + num130); for (int index118 = 0; index118 < Main.maxTilesY; ++index118) { if (Main.tile[index117, index118].active) { Main.spawnTileX = index117; Main.spawnTileY = index118; break; } } ++num130; } int index119 = NPC.NewNPC(Main.spawnTileX * 16, Main.spawnTileY * 16, 22); Main.npc[index119].homeTileX = Main.spawnTileX; Main.npc[index119].homeTileY = Main.spawnTileY; Main.npc[index119].direction = 1; Main.npc[index119].homeless = true; Main.statusText = Lang.gen[39]; for (int index120 = 0; (double) index120 < (double) Main.maxTilesX * 0.002; ++index120) { int num131 = Main.maxTilesX / 2; int num132 = WorldGen.genRand.Next(Main.maxTilesX); int num133 = num132 - WorldGen.genRand.Next(10) - 7; int num134 = num132 + WorldGen.genRand.Next(10) + 7; if (num133 < 0) num133 = 0; if (num134 > Main.maxTilesX - 1) num134 = Main.maxTilesX - 1; for (int i28 = num133; i28 < num134; ++i28) { for (int index121 = 1; (double) index121 < Main.worldSurface - 1.0; ++index121) { if (Main.tile[i28, index121].type == (byte) 2 && Main.tile[i28, index121].active && !Main.tile[i28, index121 - 1].active) WorldGen.PlaceTile(i28, index121 - 1, 27, true); if (Main.tile[i28, index121].active) break; } } } Main.statusText = Lang.gen[40]; for (int index122 = 0; (double) index122 < (double) Main.maxTilesX * 0.003; ++index122) { int num135 = WorldGen.genRand.Next(50, Main.maxTilesX - 50); int num136 = WorldGen.genRand.Next(25, 50); for (int i29 = num135 - num136; i29 < num135 + num136; ++i29) { for (int y4 = 20; (double) y4 < Main.worldSurface; ++y4) WorldGen.GrowEpicTree(i29, y4); } } WorldGen.AddTrees(); Main.statusText = Lang.gen[41]; for (int index123 = 0; (double) index123 < (double) Main.maxTilesX * 1.7; ++index123) WorldGen.PlantAlch(); Main.statusText = Lang.gen[42]; WorldGen.AddPlants(); for (int i30 = 0; i30 < Main.maxTilesX; ++i30) { for (int y5 = 0; y5 < Main.maxTilesY; ++y5) { if (Main.tile[i30, y5].active) { if (y5 >= (int) Main.worldSurface && Main.tile[i30, y5].type == (byte) 70 && !Main.tile[i30, y5 - 1].active) { WorldGen.GrowShroom(i30, y5); if (!Main.tile[i30, y5 - 1].active) WorldGen.PlaceTile(i30, y5 - 1, 71, true); } if (Main.tile[i30, y5].type == (byte) 60 && !Main.tile[i30, y5 - 1].active) WorldGen.PlaceTile(i30, y5 - 1, 61, true); } } } Main.statusText = Lang.gen[43]; for (int index124 = 0; index124 < Main.maxTilesX; ++index124) { int num137 = 0; for (int index125 = 0; (double) index125 < Main.worldSurface; ++index125) { if (num137 > 0 && !Main.tile[index124, index125].active) { Main.tile[index124, index125].active = true; Main.tile[index124, index125].type = (byte) 52; --num137; } else num137 = 0; if (Main.tile[index124, index125].active && Main.tile[index124, index125].type == (byte) 2 && WorldGen.genRand.Next(5) < 3) num137 = WorldGen.genRand.Next(1, 10); } int num138 = 0; for (int index126 = 0; index126 < Main.maxTilesY; ++index126) { if (num138 > 0 && !Main.tile[index124, index126].active) { Main.tile[index124, index126].active = true; Main.tile[index124, index126].type = (byte) 62; --num138; } else num138 = 0; if (Main.tile[index124, index126].active && Main.tile[index124, index126].type == (byte) 60 && WorldGen.genRand.Next(5) < 3) num138 = WorldGen.genRand.Next(1, 10); } } Main.statusText = Lang.gen[44]; for (int index127 = 0; (double) index127 < (double) Main.maxTilesX * 0.005; ++index127) { int index128 = WorldGen.genRand.Next(20, Main.maxTilesX - 20); int num139 = WorldGen.genRand.Next(5, 15); int num140 = WorldGen.genRand.Next(15, 30); for (int index129 = 1; (double) index129 < Main.worldSurface - 1.0; ++index129) { if (Main.tile[index128, index129].active) { for (int index130 = index128 - num139; index130 < index128 + num139; ++index130) { for (int index131 = index129 - num140; index131 < index129 + num140; ++index131) { if (Main.tile[index130, index131].type == (byte) 3 || Main.tile[index130, index131].type == (byte) 24) Main.tile[index130, index131].frameX = (short) (WorldGen.genRand.Next(6, 8) * 18); } } break; } } } Main.statusText = Lang.gen[45]; for (int index132 = 0; (double) index132 < (double) Main.maxTilesX * 0.002; ++index132) { int index133 = WorldGen.genRand.Next(20, Main.maxTilesX - 20); int num141 = WorldGen.genRand.Next(4, 10); int num142 = WorldGen.genRand.Next(15, 30); for (int index134 = 1; (double) index134 < Main.worldSurface - 1.0; ++index134) { if (Main.tile[index133, index134].active) { for (int index135 = index133 - num141; index135 < index133 + num141; ++index135) { for (int index136 = index134 - num142; index136 < index134 + num142; ++index136) { if (Main.tile[index135, index136].type == (byte) 3 || Main.tile[index135, index136].type == (byte) 24) Main.tile[index135, index136].frameX = (short) 144; } } break; } } } WorldGen.gen = false; } public static bool GrowEpicTree(int i, int y) { int index1 = y; while (Main.tile[i, index1].type == (byte) 20) ++index1; if (Main.tile[i, index1].active && Main.tile[i, index1].type == (byte) 2 && Main.tile[i, index1 - 1].wall == (byte) 0 && Main.tile[i, index1 - 1].liquid == (byte) 0 && (Main.tile[i - 1, index1].active && (Main.tile[i - 1, index1].type == (byte) 2 || Main.tile[i - 1, index1].type == (byte) 23 || Main.tile[i - 1, index1].type == (byte) 60 || Main.tile[i - 1, index1].type == (byte) 109) || Main.tile[i + 1, index1].active && (Main.tile[i + 1, index1].type == (byte) 2 || Main.tile[i + 1, index1].type == (byte) 23 || Main.tile[i + 1, index1].type == (byte) 60 || Main.tile[i + 1, index1].type == (byte) 109))) { int num1 = 1; if (WorldGen.EmptyTileCheck(i - num1, i + num1, index1 - 55, index1 - 1, 20)) { bool flag1 = false; bool flag2 = false; int num2 = WorldGen.genRand.Next(20, 30); for (int index2 = index1 - num2; index2 < index1; ++index2) { Main.tile[i, index2].frameNumber = (byte) WorldGen.genRand.Next(3); Main.tile[i, index2].active = true; Main.tile[i, index2].type = (byte) 5; int num3 = WorldGen.genRand.Next(3); int num4 = WorldGen.genRand.Next(10); if (index2 == index1 - 1 || index2 == index1 - num2) num4 = 0; while ((num4 == 5 || num4 == 7) && flag1 || (num4 == 6 || num4 == 7) && flag2) num4 = WorldGen.genRand.Next(10); flag1 = false; flag2 = false; if (num4 == 5 || num4 == 7) flag1 = true; if (num4 == 6 || num4 == 7) flag2 = true; switch (num4) { case 1: if (num3 == 0) { Main.tile[i, index2].frameX = (short) 0; Main.tile[i, index2].frameY = (short) 66; } if (num3 == 1) { Main.tile[i, index2].frameX = (short) 0; Main.tile[i, index2].frameY = (short) 88; } if (num3 == 2) { Main.tile[i, index2].frameX = (short) 0; Main.tile[i, index2].frameY = (short) 110; break; } break; case 2: if (num3 == 0) { Main.tile[i, index2].frameX = (short) 22; Main.tile[i, index2].frameY = (short) 0; } if (num3 == 1) { Main.tile[i, index2].frameX = (short) 22; Main.tile[i, index2].frameY = (short) 22; } if (num3 == 2) { Main.tile[i, index2].frameX = (short) 22; Main.tile[i, index2].frameY = (short) 44; break; } break; case 3: if (num3 == 0) { Main.tile[i, index2].frameX = (short) 44; Main.tile[i, index2].frameY = (short) 66; } if (num3 == 1) { Main.tile[i, index2].frameX = (short) 44; Main.tile[i, index2].frameY = (short) 88; } if (num3 == 2) { Main.tile[i, index2].frameX = (short) 44; Main.tile[i, index2].frameY = (short) 110; break; } break; case 4: if (num3 == 0) { Main.tile[i, index2].frameX = (short) 22; Main.tile[i, index2].frameY = (short) 66; } if (num3 == 1) { Main.tile[i, index2].frameX = (short) 22; Main.tile[i, index2].frameY = (short) 88; } if (num3 == 2) { Main.tile[i, index2].frameX = (short) 22; Main.tile[i, index2].frameY = (short) 110; break; } break; case 5: if (num3 == 0) { Main.tile[i, index2].frameX = (short) 88; Main.tile[i, index2].frameY = (short) 0; } if (num3 == 1) { Main.tile[i, index2].frameX = (short) 88; Main.tile[i, index2].frameY = (short) 22; } if (num3 == 2) { Main.tile[i, index2].frameX = (short) 88; Main.tile[i, index2].frameY = (short) 44; break; } break; case 6: if (num3 == 0) { Main.tile[i, index2].frameX = (short) 66; Main.tile[i, index2].frameY = (short) 66; } if (num3 == 1) { Main.tile[i, index2].frameX = (short) 66; Main.tile[i, index2].frameY = (short) 88; } if (num3 == 2) { Main.tile[i, index2].frameX = (short) 66; Main.tile[i, index2].frameY = (short) 110; break; } break; case 7: if (num3 == 0) { Main.tile[i, index2].frameX = (short) 110; Main.tile[i, index2].frameY = (short) 66; } if (num3 == 1) { Main.tile[i, index2].frameX = (short) 110; Main.tile[i, index2].frameY = (short) 88; } if (num3 == 2) { Main.tile[i, index2].frameX = (short) 110; Main.tile[i, index2].frameY = (short) 110; break; } break; default: if (num3 == 0) { Main.tile[i, index2].frameX = (short) 0; Main.tile[i, index2].frameY = (short) 0; } if (num3 == 1) { Main.tile[i, index2].frameX = (short) 0; Main.tile[i, index2].frameY = (short) 22; } if (num3 == 2) { Main.tile[i, index2].frameX = (short) 0; Main.tile[i, index2].frameY = (short) 44; break; } break; } if (num4 == 5 || num4 == 7) { Main.tile[i - 1, index2].active = true; Main.tile[i - 1, index2].type = (byte) 5; int num5 = WorldGen.genRand.Next(3); if (WorldGen.genRand.Next(3) < 2) { if (num5 == 0) { Main.tile[i - 1, index2].frameX = (short) 44; Main.tile[i - 1, index2].frameY = (short) 198; } if (num5 == 1) { Main.tile[i - 1, index2].frameX = (short) 44; Main.tile[i - 1, index2].frameY = (short) 220; } if (num5 == 2) { Main.tile[i - 1, index2].frameX = (short) 44; Main.tile[i - 1, index2].frameY = (short) 242; } } else { if (num5 == 0) { Main.tile[i - 1, index2].frameX = (short) 66; Main.tile[i - 1, index2].frameY = (short) 0; } if (num5 == 1) { Main.tile[i - 1, index2].frameX = (short) 66; Main.tile[i - 1, index2].frameY = (short) 22; } if (num5 == 2) { Main.tile[i - 1, index2].frameX = (short) 66; Main.tile[i - 1, index2].frameY = (short) 44; } } } if (num4 == 6 || num4 == 7) { Main.tile[i + 1, index2].active = true; Main.tile[i + 1, index2].type = (byte) 5; int num6 = WorldGen.genRand.Next(3); if (WorldGen.genRand.Next(3) < 2) { if (num6 == 0) { Main.tile[i + 1, index2].frameX = (short) 66; Main.tile[i + 1, index2].frameY = (short) 198; } if (num6 == 1) { Main.tile[i + 1, index2].frameX = (short) 66; Main.tile[i + 1, index2].frameY = (short) 220; } if (num6 == 2) { Main.tile[i + 1, index2].frameX = (short) 66; Main.tile[i + 1, index2].frameY = (short) 242; } } else { if (num6 == 0) { Main.tile[i + 1, index2].frameX = (short) 88; Main.tile[i + 1, index2].frameY = (short) 66; } if (num6 == 1) { Main.tile[i + 1, index2].frameX = (short) 88; Main.tile[i + 1, index2].frameY = (short) 88; } if (num6 == 2) { Main.tile[i + 1, index2].frameX = (short) 88; Main.tile[i + 1, index2].frameY = (short) 110; } } } } int num7 = WorldGen.genRand.Next(3); bool flag3 = false; bool flag4 = false; if (Main.tile[i - 1, index1].active && (Main.tile[i - 1, index1].type == (byte) 2 || Main.tile[i - 1, index1].type == (byte) 23 || Main.tile[i - 1, index1].type == (byte) 60 || Main.tile[i - 1, index1].type == (byte) 109)) flag3 = true; if (Main.tile[i + 1, index1].active && (Main.tile[i + 1, index1].type == (byte) 2 || Main.tile[i + 1, index1].type == (byte) 23 || Main.tile[i + 1, index1].type == (byte) 60 || Main.tile[i + 1, index1].type == (byte) 109)) flag4 = true; if (!flag3) { if (num7 == 0) num7 = 2; if (num7 == 1) num7 = 3; } if (!flag4) { if (num7 == 0) num7 = 1; if (num7 == 2) num7 = 3; } if (flag3 && !flag4) num7 = 1; if (flag4 && !flag3) num7 = 2; if (num7 == 0 || num7 == 1) { Main.tile[i + 1, index1 - 1].active = true; Main.tile[i + 1, index1 - 1].type = (byte) 5; int num8 = WorldGen.genRand.Next(3); if (num8 == 0) { Main.tile[i + 1, index1 - 1].frameX = (short) 22; Main.tile[i + 1, index1 - 1].frameY = (short) 132; } if (num8 == 1) { Main.tile[i + 1, index1 - 1].frameX = (short) 22; Main.tile[i + 1, index1 - 1].frameY = (short) 154; } if (num8 == 2) { Main.tile[i + 1, index1 - 1].frameX = (short) 22; Main.tile[i + 1, index1 - 1].frameY = (short) 176; } } if (num7 == 0 || num7 == 2) { Main.tile[i - 1, index1 - 1].active = true; Main.tile[i - 1, index1 - 1].type = (byte) 5; int num9 = WorldGen.genRand.Next(3); if (num9 == 0) { Main.tile[i - 1, index1 - 1].frameX = (short) 44; Main.tile[i - 1, index1 - 1].frameY = (short) 132; } if (num9 == 1) { Main.tile[i - 1, index1 - 1].frameX = (short) 44; Main.tile[i - 1, index1 - 1].frameY = (short) 154; } if (num9 == 2) { Main.tile[i - 1, index1 - 1].frameX = (short) 44; Main.tile[i - 1, index1 - 1].frameY = (short) 176; } } int num10 = WorldGen.genRand.Next(3); switch (num7) { case 0: if (num10 == 0) { Main.tile[i, index1 - 1].frameX = (short) 88; Main.tile[i, index1 - 1].frameY = (short) 132; } if (num10 == 1) { Main.tile[i, index1 - 1].frameX = (short) 88; Main.tile[i, index1 - 1].frameY = (short) 154; } if (num10 == 2) { Main.tile[i, index1 - 1].frameX = (short) 88; Main.tile[i, index1 - 1].frameY = (short) 176; break; } break; case 1: if (num10 == 0) { Main.tile[i, index1 - 1].frameX = (short) 0; Main.tile[i, index1 - 1].frameY = (short) 132; } if (num10 == 1) { Main.tile[i, index1 - 1].frameX = (short) 0; Main.tile[i, index1 - 1].frameY = (short) 154; } if (num10 == 2) { Main.tile[i, index1 - 1].frameX = (short) 0; Main.tile[i, index1 - 1].frameY = (short) 176; break; } break; case 2: if (num10 == 0) { Main.tile[i, index1 - 1].frameX = (short) 66; Main.tile[i, index1 - 1].frameY = (short) 132; } if (num10 == 1) { Main.tile[i, index1 - 1].frameX = (short) 66; Main.tile[i, index1 - 1].frameY = (short) 154; } if (num10 == 2) { Main.tile[i, index1 - 1].frameX = (short) 66; Main.tile[i, index1 - 1].frameY = (short) 176; break; } break; } if (WorldGen.genRand.Next(3) < 2) { int num11 = WorldGen.genRand.Next(3); if (num11 == 0) { Main.tile[i, index1 - num2].frameX = (short) 22; Main.tile[i, index1 - num2].frameY = (short) 198; } if (num11 == 1) { Main.tile[i, index1 - num2].frameX = (short) 22; Main.tile[i, index1 - num2].frameY = (short) 220; } if (num11 == 2) { Main.tile[i, index1 - num2].frameX = (short) 22; Main.tile[i, index1 - num2].frameY = (short) 242; } } else { int num12 = WorldGen.genRand.Next(3); if (num12 == 0) { Main.tile[i, index1 - num2].frameX = (short) 0; Main.tile[i, index1 - num2].frameY = (short) 198; } if (num12 == 1) { Main.tile[i, index1 - num2].frameX = (short) 0; Main.tile[i, index1 - num2].frameY = (short) 220; } if (num12 == 2) { Main.tile[i, index1 - num2].frameX = (short) 0; Main.tile[i, index1 - num2].frameY = (short) 242; } } WorldGen.RangeFrame(i - 2, index1 - num2 - 1, i + 2, index1 + 1); if (Main.netMode == 2) NetMessage.SendTileSquare(-1, i, (int) ((double) index1 - (double) num2 * 0.5), num2 + 1); return true; } } return false; } public static void GrowTree(int i, int y) { int index1 = y; while (Main.tile[i, index1].type == (byte) 20) ++index1; if ((Main.tile[i - 1, index1 - 1].liquid != (byte) 0 || Main.tile[i - 1, index1 - 1].liquid != (byte) 0 || Main.tile[i + 1, index1 - 1].liquid != (byte) 0) && Main.tile[i, index1].type != (byte) 60 || !Main.tile[i, index1].active || Main.tile[i, index1].type != (byte) 2 && Main.tile[i, index1].type != (byte) 23 && Main.tile[i, index1].type != (byte) 60 && Main.tile[i, index1].type != (byte) 109 && Main.tile[i, index1].type != (byte) 147 || Main.tile[i, index1 - 1].wall != (byte) 0 || (!Main.tile[i - 1, index1].active || Main.tile[i - 1, index1].type != (byte) 2 && Main.tile[i - 1, index1].type != (byte) 23 && Main.tile[i - 1, index1].type != (byte) 60 && Main.tile[i - 1, index1].type != (byte) 109 && Main.tile[i - 1, index1].type != (byte) 147) && (!Main.tile[i + 1, index1].active || Main.tile[i + 1, index1].type != (byte) 2 && Main.tile[i + 1, index1].type != (byte) 23 && Main.tile[i + 1, index1].type != (byte) 60 && Main.tile[i + 1, index1].type != (byte) 109 && Main.tile[i + 1, index1].type != (byte) 147)) return; int num1 = 1; int num2 = 16; if (Main.tile[i, index1].type == (byte) 60) num2 += 5; if (!WorldGen.EmptyTileCheck(i - num1, i + num1, index1 - num2, index1 - 1, 20)) return; bool flag1 = false; bool flag2 = false; int num3 = WorldGen.genRand.Next(5, num2 + 1); for (int index2 = index1 - num3; index2 < index1; ++index2) { Main.tile[i, index2].frameNumber = (byte) WorldGen.genRand.Next(3); Main.tile[i, index2].active = true; Main.tile[i, index2].type = (byte) 5; int num4 = WorldGen.genRand.Next(3); int num5 = WorldGen.genRand.Next(10); if (index2 == index1 - 1 || index2 == index1 - num3) num5 = 0; while ((num5 == 5 || num5 == 7) && flag1 || (num5 == 6 || num5 == 7) && flag2) num5 = WorldGen.genRand.Next(10); flag1 = false; flag2 = false; if (num5 == 5 || num5 == 7) flag1 = true; if (num5 == 6 || num5 == 7) flag2 = true; switch (num5) { case 1: if (num4 == 0) { Main.tile[i, index2].frameX = (short) 0; Main.tile[i, index2].frameY = (short) 66; } if (num4 == 1) { Main.tile[i, index2].frameX = (short) 0; Main.tile[i, index2].frameY = (short) 88; } if (num4 == 2) { Main.tile[i, index2].frameX = (short) 0; Main.tile[i, index2].frameY = (short) 110; break; } break; case 2: if (num4 == 0) { Main.tile[i, index2].frameX = (short) 22; Main.tile[i, index2].frameY = (short) 0; } if (num4 == 1) { Main.tile[i, index2].frameX = (short) 22; Main.tile[i, index2].frameY = (short) 22; } if (num4 == 2) { Main.tile[i, index2].frameX = (short) 22; Main.tile[i, index2].frameY = (short) 44; break; } break; case 3: if (num4 == 0) { Main.tile[i, index2].frameX = (short) 44; Main.tile[i, index2].frameY = (short) 66; } if (num4 == 1) { Main.tile[i, index2].frameX = (short) 44; Main.tile[i, index2].frameY = (short) 88; } if (num4 == 2) { Main.tile[i, index2].frameX = (short) 44; Main.tile[i, index2].frameY = (short) 110; break; } break; case 4: if (num4 == 0) { Main.tile[i, index2].frameX = (short) 22; Main.tile[i, index2].frameY = (short) 66; } if (num4 == 1) { Main.tile[i, index2].frameX = (short) 22; Main.tile[i, index2].frameY = (short) 88; } if (num4 == 2) { Main.tile[i, index2].frameX = (short) 22; Main.tile[i, index2].frameY = (short) 110; break; } break; case 5: if (num4 == 0) { Main.tile[i, index2].frameX = (short) 88; Main.tile[i, index2].frameY = (short) 0; } if (num4 == 1) { Main.tile[i, index2].frameX = (short) 88; Main.tile[i, index2].frameY = (short) 22; } if (num4 == 2) { Main.tile[i, index2].frameX = (short) 88; Main.tile[i, index2].frameY = (short) 44; break; } break; case 6: if (num4 == 0) { Main.tile[i, index2].frameX = (short) 66; Main.tile[i, index2].frameY = (short) 66; } if (num4 == 1) { Main.tile[i, index2].frameX = (short) 66; Main.tile[i, index2].frameY = (short) 88; } if (num4 == 2) { Main.tile[i, index2].frameX = (short) 66; Main.tile[i, index2].frameY = (short) 110; break; } break; case 7: if (num4 == 0) { Main.tile[i, index2].frameX = (short) 110; Main.tile[i, index2].frameY = (short) 66; } if (num4 == 1) { Main.tile[i, index2].frameX = (short) 110; Main.tile[i, index2].frameY = (short) 88; } if (num4 == 2) { Main.tile[i, index2].frameX = (short) 110; Main.tile[i, index2].frameY = (short) 110; break; } break; default: if (num4 == 0) { Main.tile[i, index2].frameX = (short) 0; Main.tile[i, index2].frameY = (short) 0; } if (num4 == 1) { Main.tile[i, index2].frameX = (short) 0; Main.tile[i, index2].frameY = (short) 22; } if (num4 == 2) { Main.tile[i, index2].frameX = (short) 0; Main.tile[i, index2].frameY = (short) 44; break; } break; } if (num5 == 5 || num5 == 7) { Main.tile[i - 1, index2].active = true; Main.tile[i - 1, index2].type = (byte) 5; int num6 = WorldGen.genRand.Next(3); if (WorldGen.genRand.Next(3) < 2) { if (num6 == 0) { Main.tile[i - 1, index2].frameX = (short) 44; Main.tile[i - 1, index2].frameY = (short) 198; } if (num6 == 1) { Main.tile[i - 1, index2].frameX = (short) 44; Main.tile[i - 1, index2].frameY = (short) 220; } if (num6 == 2) { Main.tile[i - 1, index2].frameX = (short) 44; Main.tile[i - 1, index2].frameY = (short) 242; } } else { if (num6 == 0) { Main.tile[i - 1, index2].frameX = (short) 66; Main.tile[i - 1, index2].frameY = (short) 0; } if (num6 == 1) { Main.tile[i - 1, index2].frameX = (short) 66; Main.tile[i - 1, index2].frameY = (short) 22; } if (num6 == 2) { Main.tile[i - 1, index2].frameX = (short) 66; Main.tile[i - 1, index2].frameY = (short) 44; } } } if (num5 == 6 || num5 == 7) { Main.tile[i + 1, index2].active = true; Main.tile[i + 1, index2].type = (byte) 5; int num7 = WorldGen.genRand.Next(3); if (WorldGen.genRand.Next(3) < 2) { if (num7 == 0) { Main.tile[i + 1, index2].frameX = (short) 66; Main.tile[i + 1, index2].frameY = (short) 198; } if (num7 == 1) { Main.tile[i + 1, index2].frameX = (short) 66; Main.tile[i + 1, index2].frameY = (short) 220; } if (num7 == 2) { Main.tile[i + 1, index2].frameX = (short) 66; Main.tile[i + 1, index2].frameY = (short) 242; } } else { if (num7 == 0) { Main.tile[i + 1, index2].frameX = (short) 88; Main.tile[i + 1, index2].frameY = (short) 66; } if (num7 == 1) { Main.tile[i + 1, index2].frameX = (short) 88; Main.tile[i + 1, index2].frameY = (short) 88; } if (num7 == 2) { Main.tile[i + 1, index2].frameX = (short) 88; Main.tile[i + 1, index2].frameY = (short) 110; } } } } int num8 = WorldGen.genRand.Next(3); bool flag3 = false; bool flag4 = false; if (Main.tile[i - 1, index1].active && (Main.tile[i - 1, index1].type == (byte) 2 || Main.tile[i - 1, index1].type == (byte) 23 || Main.tile[i - 1, index1].type == (byte) 60 || Main.tile[i - 1, index1].type == (byte) 109 || Main.tile[i - 1, index1].type == (byte) 147)) flag3 = true; if (Main.tile[i + 1, index1].active && (Main.tile[i + 1, index1].type == (byte) 2 || Main.tile[i + 1, index1].type == (byte) 23 || Main.tile[i + 1, index1].type == (byte) 60 || Main.tile[i + 1, index1].type == (byte) 109 || Main.tile[i + 1, index1].type == (byte) 147)) flag4 = true; if (!flag3) { if (num8 == 0) num8 = 2; if (num8 == 1) num8 = 3; } if (!flag4) { if (num8 == 0) num8 = 1; if (num8 == 2) num8 = 3; } if (flag3 && !flag4) num8 = 1; if (flag4 && !flag3) num8 = 2; if (num8 == 0 || num8 == 1) { Main.tile[i + 1, index1 - 1].active = true; Main.tile[i + 1, index1 - 1].type = (byte) 5; int num9 = WorldGen.genRand.Next(3); if (num9 == 0) { Main.tile[i + 1, index1 - 1].frameX = (short) 22; Main.tile[i + 1, index1 - 1].frameY = (short) 132; } if (num9 == 1) { Main.tile[i + 1, index1 - 1].frameX = (short) 22; Main.tile[i + 1, index1 - 1].frameY = (short) 154; } if (num9 == 2) { Main.tile[i + 1, index1 - 1].frameX = (short) 22; Main.tile[i + 1, index1 - 1].frameY = (short) 176; } } if (num8 == 0 || num8 == 2) { Main.tile[i - 1, index1 - 1].active = true; Main.tile[i - 1, index1 - 1].type = (byte) 5; int num10 = WorldGen.genRand.Next(3); if (num10 == 0) { Main.tile[i - 1, index1 - 1].frameX = (short) 44; Main.tile[i - 1, index1 - 1].frameY = (short) 132; } if (num10 == 1) { Main.tile[i - 1, index1 - 1].frameX = (short) 44; Main.tile[i - 1, index1 - 1].frameY = (short) 154; } if (num10 == 2) { Main.tile[i - 1, index1 - 1].frameX = (short) 44; Main.tile[i - 1, index1 - 1].frameY = (short) 176; } } int num11 = WorldGen.genRand.Next(3); switch (num8) { case 0: if (num11 == 0) { Main.tile[i, index1 - 1].frameX = (short) 88; Main.tile[i, index1 - 1].frameY = (short) 132; } if (num11 == 1) { Main.tile[i, index1 - 1].frameX = (short) 88; Main.tile[i, index1 - 1].frameY = (short) 154; } if (num11 == 2) { Main.tile[i, index1 - 1].frameX = (short) 88; Main.tile[i, index1 - 1].frameY = (short) 176; break; } break; case 1: if (num11 == 0) { Main.tile[i, index1 - 1].frameX = (short) 0; Main.tile[i, index1 - 1].frameY = (short) 132; } if (num11 == 1) { Main.tile[i, index1 - 1].frameX = (short) 0; Main.tile[i, index1 - 1].frameY = (short) 154; } if (num11 == 2) { Main.tile[i, index1 - 1].frameX = (short) 0; Main.tile[i, index1 - 1].frameY = (short) 176; break; } break; case 2: if (num11 == 0) { Main.tile[i, index1 - 1].frameX = (short) 66; Main.tile[i, index1 - 1].frameY = (short) 132; } if (num11 == 1) { Main.tile[i, index1 - 1].frameX = (short) 66; Main.tile[i, index1 - 1].frameY = (short) 154; } if (num11 == 2) { Main.tile[i, index1 - 1].frameX = (short) 66; Main.tile[i, index1 - 1].frameY = (short) 176; break; } break; } if (WorldGen.genRand.Next(4) < 3) { int num12 = WorldGen.genRand.Next(3); if (num12 == 0) { Main.tile[i, index1 - num3].frameX = (short) 22; Main.tile[i, index1 - num3].frameY = (short) 198; } if (num12 == 1) { Main.tile[i, index1 - num3].frameX = (short) 22; Main.tile[i, index1 - num3].frameY = (short) 220; } if (num12 == 2) { Main.tile[i, index1 - num3].frameX = (short) 22; Main.tile[i, index1 - num3].frameY = (short) 242; } } else { int num13 = WorldGen.genRand.Next(3); if (num13 == 0) { Main.tile[i, index1 - num3].frameX = (short) 0; Main.tile[i, index1 - num3].frameY = (short) 198; } if (num13 == 1) { Main.tile[i, index1 - num3].frameX = (short) 0; Main.tile[i, index1 - num3].frameY = (short) 220; } if (num13 == 2) { Main.tile[i, index1 - num3].frameX = (short) 0; Main.tile[i, index1 - num3].frameY = (short) 242; } } WorldGen.RangeFrame(i - 2, index1 - num3 - 1, i + 2, index1 + 1); if (Main.netMode != 2) return; NetMessage.SendTileSquare(-1, i, (int) ((double) index1 - (double) num3 * 0.5), num3 + 1); } public static void GrowShroom(int i, int y) { int index1 = y; if (Main.tile[i - 1, index1 - 1].lava || Main.tile[i - 1, index1 - 1].lava || Main.tile[i + 1, index1 - 1].lava || !Main.tile[i, index1].active || Main.tile[i, index1].type != (byte) 70 || Main.tile[i, index1 - 1].wall != (byte) 0 || !Main.tile[i - 1, index1].active || Main.tile[i - 1, index1].type != (byte) 70 || !Main.tile[i + 1, index1].active || Main.tile[i + 1, index1].type != (byte) 70 || !WorldGen.EmptyTileCheck(i - 2, i + 2, index1 - 13, index1 - 1, 71)) return; int num1 = WorldGen.genRand.Next(4, 11); for (int index2 = index1 - num1; index2 < index1; ++index2) { Main.tile[i, index2].frameNumber = (byte) WorldGen.genRand.Next(3); Main.tile[i, index2].active = true; Main.tile[i, index2].type = (byte) 72; int num2 = WorldGen.genRand.Next(3); if (num2 == 0) { Main.tile[i, index2].frameX = (short) 0; Main.tile[i, index2].frameY = (short) 0; } if (num2 == 1) { Main.tile[i, index2].frameX = (short) 0; Main.tile[i, index2].frameY = (short) 18; } if (num2 == 2) { Main.tile[i, index2].frameX = (short) 0; Main.tile[i, index2].frameY = (short) 36; } } int num3 = WorldGen.genRand.Next(3); if (num3 == 0) { Main.tile[i, index1 - num1].frameX = (short) 36; Main.tile[i, index1 - num1].frameY = (short) 0; } if (num3 == 1) { Main.tile[i, index1 - num1].frameX = (short) 36; Main.tile[i, index1 - num1].frameY = (short) 18; } if (num3 == 2) { Main.tile[i, index1 - num1].frameX = (short) 36; Main.tile[i, index1 - num1].frameY = (short) 36; } WorldGen.RangeFrame(i - 2, index1 - num1 - 1, i + 2, index1 + 1); if (Main.netMode != 2) return; NetMessage.SendTileSquare(-1, i, (int) ((double) index1 - (double) num1 * 0.5), num1 + 1); } public static void AddTrees() { for (int i = 1; i < Main.maxTilesX - 1; ++i) { for (int y = 20; (double) y < Main.worldSurface; ++y) WorldGen.GrowTree(i, y); if (WorldGen.genRand.Next(3) == 0) ++i; if (WorldGen.genRand.Next(4) == 0) ++i; } } public static bool EmptyTileCheck( int startX, int endX, int startY, int endY, int ignoreStyle = -1) { if (startX < 0 || endX >= Main.maxTilesX || startY < 0 || endY >= Main.maxTilesY) return false; for (int index1 = startX; index1 < endX + 1; ++index1) { for (int index2 = startY; index2 < endY + 1; ++index2) { if (Main.tile[index1, index2].active && (ignoreStyle == -1 || ignoreStyle == 11 && Main.tile[index1, index2].type != (byte) 11 || ignoreStyle == 20 && Main.tile[index1, index2].type != (byte) 20 && Main.tile[index1, index2].type != (byte) 3 && Main.tile[index1, index2].type != (byte) 24 && Main.tile[index1, index2].type != (byte) 61 && Main.tile[index1, index2].type != (byte) 32 && Main.tile[index1, index2].type != (byte) 69 && Main.tile[index1, index2].type != (byte) 73 && Main.tile[index1, index2].type != (byte) 74 && Main.tile[index1, index2].type != (byte) 110 && Main.tile[index1, index2].type != (byte) 113 || ignoreStyle == 71 && Main.tile[index1, index2].type != (byte) 71)) return false; } } return true; } public static void smCallBack(object threadContext) { if (Main.hardMode) return; WorldGen.hardLock = true; Main.hardMode = true; if (WorldGen.genRand == null) WorldGen.genRand = new Random((int) DateTime.Now.Ticks); float num1 = (float) WorldGen.genRand.Next(300, 400) * (1f / 1000f); int i1 = (int) ((double) Main.maxTilesX * (double) num1); int i2 = (int) ((double) Main.maxTilesX * (1.0 - (double) num1)); int num2 = 1; if (WorldGen.genRand.Next(2) == 0) { i2 = (int) ((double) Main.maxTilesX * (double) num1); i1 = (int) ((double) Main.maxTilesX * (1.0 - (double) num1)); num2 = -1; } WorldGen.GERunner(i1, 0, (float) (3 * num2), 5f); WorldGen.GERunner(i2, 0, (float) (3 * -num2), 5f, false); if (Main.netMode == 0) Main.NewText(Lang.misc[15], (byte) 50, B: (byte) 130); else if (Main.netMode == 2) NetMessage.SendData(25, text: Lang.misc[15], number: ((int) byte.MaxValue), number2: 50f, number3: ((float) byte.MaxValue), number4: 130f); if (Main.netMode == 2) Netplay.ResetSections(); WorldGen.hardLock = false; } public static void StartHardmode() { if (Main.netMode == 1) return; ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.smCallBack), (object) 1); } public static bool PlaceDoor(int i, int j, int type) { try { 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]) return false; Main.tile[i, j - 1].active = true; Main.tile[i, j - 1].type = (byte) 10; Main.tile[i, j - 1].frameY = (short) 0; Main.tile[i, j - 1].frameX = (short) (WorldGen.genRand.Next(3) * 18); Main.tile[i, j].active = true; Main.tile[i, j].type = (byte) 10; Main.tile[i, j].frameY = (short) 18; Main.tile[i, j].frameX = (short) (WorldGen.genRand.Next(3) * 18); Main.tile[i, j + 1].active = true; Main.tile[i, j + 1].type = (byte) 10; Main.tile[i, j + 1].frameY = (short) 36; Main.tile[i, j + 1].frameX = (short) (WorldGen.genRand.Next(3) * 18); return true; } catch { return false; } } public static bool CloseDoor(int i, int j, bool forced = false) { int num1 = 0; int i1 = i; int num2 = j; if (Main.tile[i, j] == null) Main.tile[i, j] = new Tile(); int frameX = (int) Main.tile[i, j].frameX; int frameY = (int) Main.tile[i, j].frameY; switch (frameX) { case 0: i1 = i; num1 = 1; break; case 18: i1 = i - 1; num1 = 1; break; case 36: i1 = i + 1; num1 = -1; break; case 54: i1 = i; num1 = -1; break; } switch (frameY) { case 0: num2 = j; break; case 18: num2 = j - 1; break; case 36: num2 = j - 2; break; } int num3 = i1; if (num1 == -1) num3 = i1 - 1; if (!forced) { for (int j1 = num2; j1 < num2 + 3; ++j1) { if (!Collision.EmptyTile(i1, j1, true)) return false; } } for (int index1 = num3; index1 < num3 + 2; ++index1) { for (int index2 = num2; index2 < num2 + 3; ++index2) { if (index1 == i1) { if (Main.tile[index1, index2] == null) Main.tile[index1, index2] = new Tile(); Main.tile[index1, index2].type = (byte) 10; Main.tile[index1, index2].frameX = (short) (WorldGen.genRand.Next(3) * 18); } else { if (Main.tile[index1, index2] == null) Main.tile[index1, index2] = new Tile(); Main.tile[index1, index2].active = false; } } } if (Main.netMode != 1) { int num4 = i1; for (int index = num2; index <= num2 + 2; ++index) { if (WorldGen.numNoWire < WorldGen.maxWire - 1) { WorldGen.noWireX[WorldGen.numNoWire] = num4; WorldGen.noWireY[WorldGen.numNoWire] = index; ++WorldGen.numNoWire; } } } for (int i2 = i1 - 1; i2 <= i1 + 1; ++i2) { for (int j2 = num2 - 1; j2 <= num2 + 2; ++j2) WorldGen.TileFrame(i2, j2); } Main.PlaySound(9, i * 16, j * 16); return true; } public static bool AddLifeCrystal(int i, int j) { for (int index = j; index < Main.maxTilesY; ++index) { if (Main.tile[i, index].active && Main.tileSolid[(int) Main.tile[i, index].type]) { int endX = i; int endY = index - 1; if (Main.tile[endX, endY - 1].lava || Main.tile[endX - 1, endY - 1].lava || !WorldGen.EmptyTileCheck(endX - 1, endX, endY - 1, endY)) return false; Main.tile[endX - 1, endY - 1].active = true; Main.tile[endX - 1, endY - 1].type = (byte) 12; Main.tile[endX - 1, endY - 1].frameX = (short) 0; Main.tile[endX - 1, endY - 1].frameY = (short) 0; Main.tile[endX, endY - 1].active = true; Main.tile[endX, endY - 1].type = (byte) 12; Main.tile[endX, endY - 1].frameX = (short) 18; Main.tile[endX, endY - 1].frameY = (short) 0; Main.tile[endX - 1, endY].active = true; Main.tile[endX - 1, endY].type = (byte) 12; Main.tile[endX - 1, endY].frameX = (short) 0; Main.tile[endX - 1, endY].frameY = (short) 18; Main.tile[endX, endY].active = true; Main.tile[endX, endY].type = (byte) 12; Main.tile[endX, endY].frameX = (short) 18; Main.tile[endX, endY].frameY = (short) 18; return true; } } return false; } public static void AddShadowOrb(int x, int y) { if (x < 10 || x > Main.maxTilesX - 10 || y < 10 || y > Main.maxTilesY - 10) return; for (int index1 = x - 1; index1 < x + 1; ++index1) { for (int index2 = y - 1; index2 < y + 1; ++index2) { if (Main.tile[index1, index2].active && Main.tile[index1, index2].type == (byte) 31) return; } } Main.tile[x - 1, y - 1].active = true; Main.tile[x - 1, y - 1].type = (byte) 31; Main.tile[x - 1, y - 1].frameX = (short) 0; Main.tile[x - 1, y - 1].frameY = (short) 0; Main.tile[x, y - 1].active = true; Main.tile[x, y - 1].type = (byte) 31; Main.tile[x, y - 1].frameX = (short) 18; Main.tile[x, y - 1].frameY = (short) 0; Main.tile[x - 1, y].active = true; Main.tile[x - 1, y].type = (byte) 31; Main.tile[x - 1, y].frameX = (short) 0; Main.tile[x - 1, y].frameY = (short) 18; Main.tile[x, y].active = true; Main.tile[x, y].type = (byte) 31; Main.tile[x, y].frameX = (short) 18; Main.tile[x, y].frameY = (short) 18; } public static void AddHellHouses() { int num1 = (int) ((double) Main.maxTilesX * 0.25); for (int i = num1; i < Main.maxTilesX - num1; ++i) { int j = Main.maxTilesY - 40; while (Main.tile[i, j].active || Main.tile[i, j].liquid > (byte) 0) --j; if (Main.tile[i, j + 1].active) { byte type = (byte) WorldGen.genRand.Next(75, 77); byte wall = 13; if (WorldGen.genRand.Next(5) > 0) type = (byte) 75; if (type == (byte) 75) wall = (byte) 14; WorldGen.HellHouse(i, j, type, wall); i += WorldGen.genRand.Next(15, 80); } } float num2 = (float) (Main.maxTilesX / 4200); for (int index1 = 0; (double) index1 < 200.0 * (double) num2; ++index1) { int num3 = 0; bool flag1 = false; while (!flag1) { ++num3; int index2 = WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.2), (int) ((double) Main.maxTilesX * 0.8)); int j = WorldGen.genRand.Next(Main.maxTilesY - 300, Main.maxTilesY - 20); if (Main.tile[index2, j].active && (Main.tile[index2, j].type == (byte) 75 || Main.tile[index2, j].type == (byte) 76)) { int num4 = 0; if (Main.tile[index2 - 1, j].wall > (byte) 0) num4 = -1; else if (Main.tile[index2 + 1, j].wall > (byte) 0) num4 = 1; if (!Main.tile[index2 + num4, j].active && !Main.tile[index2 + num4, j + 1].active) { bool flag2 = false; for (int index3 = index2 - 8; index3 < index2 + 8; ++index3) { for (int index4 = j - 8; index4 < j + 8; ++index4) { if (Main.tile[index3, index4].active && Main.tile[index3, index4].type == (byte) 4) { flag2 = true; break; } } } if (!flag2) { WorldGen.PlaceTile(index2 + num4, j, 4, true, true, style: 7); flag1 = true; } } } if (num3 > 1000) flag1 = true; } } } public static void HellHouse(int i, int j, byte type = 76, byte wall = 13) { int width = WorldGen.genRand.Next(8, 20); int num1 = WorldGen.genRand.Next(1, 3); int num2 = WorldGen.genRand.Next(4, 13); int i1 = i; int j1 = j; for (int index = 0; index < num1; ++index) { int height = WorldGen.genRand.Next(5, 9); WorldGen.HellRoom(i1, j1, width, height, type, wall); j1 -= height; } int j2 = j; for (int index = 0; index < num2; ++index) { int height = WorldGen.genRand.Next(5, 9); j2 += height; WorldGen.HellRoom(i1, j2, width, height, type, wall); } for (int index1 = i - width / 2; index1 <= i + width / 2; ++index1) { int index2 = j; while (index2 < Main.maxTilesY && (Main.tile[index1, index2].active && (Main.tile[index1, index2].type == (byte) 76 || Main.tile[index1, index2].type == (byte) 75) || Main.tile[i, index2].wall == (byte) 13 || Main.tile[i, index2].wall == (byte) 14)) ++index2; int num3 = 6 + WorldGen.genRand.Next(3); while (index2 < Main.maxTilesY && !Main.tile[index1, index2].active) { --num3; Main.tile[index1, index2].active = true; Main.tile[index1, index2].type = (byte) 57; ++index2; if (num3 <= 0) break; } } int index3 = j; while (index3 < Main.maxTilesY && (Main.tile[i, index3].active && (Main.tile[i, index3].type == (byte) 76 || Main.tile[i, index3].type == (byte) 75) || Main.tile[i, index3].wall == (byte) 13 || Main.tile[i, index3].wall == (byte) 14)) ++index3; int index4 = index3 - 1; int maxValue = index4; while (Main.tile[i, index4].active && (Main.tile[i, index4].type == (byte) 76 || Main.tile[i, index4].type == (byte) 75) || Main.tile[i, index4].wall == (byte) 13 || Main.tile[i, index4].wall == (byte) 14) { --index4; if (Main.tile[i, index4].active && (Main.tile[i, index4].type == (byte) 76 || Main.tile[i, index4].type == (byte) 75)) { int num4 = WorldGen.genRand.Next(i - width / 2 + 1, i + width / 2 - 1); int num5 = WorldGen.genRand.Next(i - width / 2 + 1, i + width / 2 - 1); if (num4 > num5) { int num6 = num4; num4 = num5; num5 = num6; } if (num4 == num5) { if (num4 < i) ++num5; else --num4; } for (int index5 = num4; index5 <= num5; ++index5) { if (Main.tile[index5, index4 - 1].wall == (byte) 13) Main.tile[index5, index4].wall = (byte) 13; if (Main.tile[index5, index4 - 1].wall == (byte) 14) Main.tile[index5, index4].wall = (byte) 14; Main.tile[index5, index4].type = (byte) 19; Main.tile[index5, index4].active = true; } --index4; } } int minValue = index4; float num7 = (float) ((maxValue - minValue) * width) * 0.02f; for (int index6 = 0; (double) index6 < (double) num7; ++index6) { int num8 = WorldGen.genRand.Next(i - width / 2, i + width / 2 + 1); int num9 = WorldGen.genRand.Next(minValue, maxValue); int num10 = WorldGen.genRand.Next(3, 8); for (int index7 = num8 - num10; index7 <= num8 + num10; ++index7) { for (int index8 = num9 - num10; index8 <= num9 + num10; ++index8) { float num11 = (float) Math.Abs(index7 - num8); float num12 = (float) Math.Abs(index8 - num9); if (Math.Sqrt((double) num11 * (double) num11 + (double) num12 * (double) num12) < (double) num10 * 0.4) { try { if (Main.tile[index7, index8].type == (byte) 76 || Main.tile[index7, index8].type == (byte) 19) Main.tile[index7, index8].active = false; Main.tile[index7, index8].wall = (byte) 0; } catch { } } } } } } public static void HellRoom(int i, int j, int width, int height, byte type = 76, byte wall = 13) { if (j > Main.maxTilesY - 40) return; for (int index1 = i - width / 2; index1 <= i + width / 2; ++index1) { for (int index2 = j - height; index2 <= j; ++index2) { try { Main.tile[index1, index2].active = true; Main.tile[index1, index2].type = type; Main.tile[index1, index2].liquid = (byte) 0; Main.tile[index1, index2].lava = false; } catch { } } } for (int index3 = i - width / 2 + 1; index3 <= i + width / 2 - 1; ++index3) { for (int index4 = j - height + 1; index4 <= j - 1; ++index4) { try { Main.tile[index3, index4].active = false; Main.tile[index3, index4].wall = wall; Main.tile[index3, index4].liquid = (byte) 0; Main.tile[index3, index4].lava = false; } catch { } } } } public static void MakeDungeon(int x, int y, int tileType = 41, int wallType = 7) { int num1 = WorldGen.genRand.Next(3); int num2 = WorldGen.genRand.Next(3); switch (num1) { case 1: tileType = 43; break; case 2: tileType = 44; break; } switch (num2) { case 1: wallType = 8; break; case 2: wallType = 9; break; } WorldGen.numDDoors = 0; WorldGen.numDPlats = 0; WorldGen.numDRooms = 0; WorldGen.dungeonX = x; WorldGen.dungeonY = y; WorldGen.dMinX = x; WorldGen.dMaxX = x; WorldGen.dMinY = y; WorldGen.dMaxY = y; WorldGen.dxStrength1 = (double) WorldGen.genRand.Next(25, 30); WorldGen.dyStrength1 = (double) WorldGen.genRand.Next(20, 25); WorldGen.dxStrength2 = (double) WorldGen.genRand.Next(35, 50); WorldGen.dyStrength2 = (double) WorldGen.genRand.Next(10, 15); float num3 = (float) (Main.maxTilesX / 60); float num4 = num3 + (float) WorldGen.genRand.Next(0, (int) ((double) num3 / 3.0)); float num5 = num4; int num6 = 5; WorldGen.DungeonRoom(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType); while ((double) num4 > 0.0) { if (WorldGen.dungeonX < WorldGen.dMinX) WorldGen.dMinX = WorldGen.dungeonX; if (WorldGen.dungeonX > WorldGen.dMaxX) WorldGen.dMaxX = WorldGen.dungeonX; if (WorldGen.dungeonY > WorldGen.dMaxY) WorldGen.dMaxY = WorldGen.dungeonY; --num4; Main.statusText = Lang.gen[58] + " " + (object) (int) (((double) num5 - (double) num4) / (double) num5 * 60.0) + "%"; if (num6 > 0) --num6; if (num6 == 0 & WorldGen.genRand.Next(3) == 0) { num6 = 5; if (WorldGen.genRand.Next(2) == 0) { int dungeonX = WorldGen.dungeonX; int dungeonY = WorldGen.dungeonY; WorldGen.DungeonHalls(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType); if (WorldGen.genRand.Next(2) == 0) WorldGen.DungeonHalls(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType); WorldGen.DungeonRoom(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType); WorldGen.dungeonX = dungeonX; WorldGen.dungeonY = dungeonY; } else WorldGen.DungeonRoom(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType); } else WorldGen.DungeonHalls(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType); } WorldGen.DungeonRoom(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType); int num7 = WorldGen.dRoomX[0]; int num8 = WorldGen.dRoomY[0]; for (int index = 0; index < WorldGen.numDRooms; ++index) { if (WorldGen.dRoomY[index] < num8) { num7 = WorldGen.dRoomX[index]; num8 = WorldGen.dRoomY[index]; } } WorldGen.dungeonX = num7; WorldGen.dungeonY = num8; WorldGen.dEnteranceX = num7; WorldGen.dSurface = false; int num9 = 5; while (!WorldGen.dSurface) { if (num9 > 0) --num9; if (num9 == 0 & WorldGen.genRand.Next(5) == 0 && (double) WorldGen.dungeonY > Main.worldSurface + 50.0) { num9 = 10; int dungeonX = WorldGen.dungeonX; int dungeonY = WorldGen.dungeonY; WorldGen.DungeonHalls(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType, true); WorldGen.DungeonRoom(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType); WorldGen.dungeonX = dungeonX; WorldGen.dungeonY = dungeonY; } WorldGen.DungeonStairs(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType); } WorldGen.DungeonEnt(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType); Main.statusText = Lang.gen[58] + " 65%"; for (int index1 = 0; index1 < WorldGen.numDRooms; ++index1) { for (int index2 = WorldGen.dRoomL[index1]; index2 <= WorldGen.dRoomR[index1]; ++index2) { if (!Main.tile[index2, WorldGen.dRoomT[index1] - 1].active) { WorldGen.DPlatX[WorldGen.numDPlats] = index2; WorldGen.DPlatY[WorldGen.numDPlats] = WorldGen.dRoomT[index1] - 1; ++WorldGen.numDPlats; break; } } for (int index3 = WorldGen.dRoomL[index1]; index3 <= WorldGen.dRoomR[index1]; ++index3) { if (!Main.tile[index3, WorldGen.dRoomB[index1] + 1].active) { WorldGen.DPlatX[WorldGen.numDPlats] = index3; WorldGen.DPlatY[WorldGen.numDPlats] = WorldGen.dRoomB[index1] + 1; ++WorldGen.numDPlats; break; } } for (int index4 = WorldGen.dRoomT[index1]; index4 <= WorldGen.dRoomB[index1]; ++index4) { if (!Main.tile[WorldGen.dRoomL[index1] - 1, index4].active) { WorldGen.DDoorX[WorldGen.numDDoors] = WorldGen.dRoomL[index1] - 1; WorldGen.DDoorY[WorldGen.numDDoors] = index4; WorldGen.DDoorPos[WorldGen.numDDoors] = -1; ++WorldGen.numDDoors; break; } } for (int index5 = WorldGen.dRoomT[index1]; index5 <= WorldGen.dRoomB[index1]; ++index5) { if (!Main.tile[WorldGen.dRoomR[index1] + 1, index5].active) { WorldGen.DDoorX[WorldGen.numDDoors] = WorldGen.dRoomR[index1] + 1; WorldGen.DDoorY[WorldGen.numDDoors] = index5; WorldGen.DDoorPos[WorldGen.numDDoors] = 1; ++WorldGen.numDDoors; break; } } } Main.statusText = Lang.gen[58] + " 70%"; int num10 = 0; int num11 = 1000; int num12 = 0; while (num12 < Main.maxTilesX / 100) { ++num10; int index6 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX); int index7 = WorldGen.genRand.Next((int) Main.worldSurface + 25, WorldGen.dMaxY); int num13 = index6; if ((int) Main.tile[index6, index7].wall == wallType && !Main.tile[index6, index7].active) { int num14 = 1; if (WorldGen.genRand.Next(2) == 0) num14 = -1; while (!Main.tile[index6, index7].active) index7 += num14; if (Main.tile[index6 - 1, index7].active && Main.tile[index6 + 1, index7].active && !Main.tile[index6 - 1, index7 - num14].active && !Main.tile[index6 + 1, index7 - num14].active) { ++num12; for (int index8 = WorldGen.genRand.Next(5, 13); Main.tile[index6 - 1, index7].active && Main.tile[index6, index7 + num14].active && Main.tile[index6, index7].active && !Main.tile[index6, index7 - num14].active && index8 > 0; --index8) { Main.tile[index6, index7].type = (byte) 48; if (!Main.tile[index6 - 1, index7 - num14].active && !Main.tile[index6 + 1, index7 - num14].active) { Main.tile[index6, index7 - num14].type = (byte) 48; Main.tile[index6, index7 - num14].active = true; } --index6; } int num15 = WorldGen.genRand.Next(5, 13); for (int index9 = num13 + 1; Main.tile[index9 + 1, index7].active && Main.tile[index9, index7 + num14].active && Main.tile[index9, index7].active && !Main.tile[index9, index7 - num14].active && num15 > 0; --num15) { Main.tile[index9, index7].type = (byte) 48; if (!Main.tile[index9 - 1, index7 - num14].active && !Main.tile[index9 + 1, index7 - num14].active) { Main.tile[index9, index7 - num14].type = (byte) 48; Main.tile[index9, index7 - num14].active = true; } ++index9; } } } if (num10 > num11) { num10 = 0; ++num12; } } int num16 = 0; int num17 = 1000; int num18 = 0; Main.statusText = Lang.gen[58] + " 75%"; while (num18 < Main.maxTilesX / 100) { ++num16; int index10 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX); int index11 = WorldGen.genRand.Next((int) Main.worldSurface + 25, WorldGen.dMaxY); int num19 = index11; if ((int) Main.tile[index10, index11].wall == wallType && !Main.tile[index10, index11].active) { int num20 = 1; if (WorldGen.genRand.Next(2) == 0) num20 = -1; while (index10 > 5 && index10 < Main.maxTilesX - 5 && !Main.tile[index10, index11].active) index10 += num20; if (Main.tile[index10, index11 - 1].active && Main.tile[index10, index11 + 1].active && !Main.tile[index10 - num20, index11 - 1].active && !Main.tile[index10 - num20, index11 + 1].active) { ++num18; for (int index12 = WorldGen.genRand.Next(5, 13); Main.tile[index10, index11 - 1].active && Main.tile[index10 + num20, index11].active && Main.tile[index10, index11].active && !Main.tile[index10 - num20, index11].active && index12 > 0; --index12) { Main.tile[index10, index11].type = (byte) 48; if (!Main.tile[index10 - num20, index11 - 1].active && !Main.tile[index10 - num20, index11 + 1].active) { Main.tile[index10 - num20, index11].type = (byte) 48; Main.tile[index10 - num20, index11].active = true; } --index11; } int num21 = WorldGen.genRand.Next(5, 13); for (int index13 = num19 + 1; Main.tile[index10, index13 + 1].active && Main.tile[index10 + num20, index13].active && Main.tile[index10, index13].active && !Main.tile[index10 - num20, index13].active && num21 > 0; --num21) { Main.tile[index10, index13].type = (byte) 48; if (!Main.tile[index10 - num20, index13 - 1].active && !Main.tile[index10 - num20, index13 + 1].active) { Main.tile[index10 - num20, index13].type = (byte) 48; Main.tile[index10 - num20, index13].active = true; } ++index13; } } } if (num16 > num17) { num16 = 0; ++num18; } } Main.statusText = Lang.gen[58] + " 80%"; for (int index14 = 0; index14 < WorldGen.numDDoors; ++index14) { int num22 = WorldGen.DDoorX[index14] - 10; int num23 = WorldGen.DDoorX[index14] + 10; int num24 = 100; int num25 = 0; for (int index15 = num22; index15 < num23; ++index15) { bool flag1 = true; int index16 = WorldGen.DDoorY[index14]; while (!Main.tile[index15, index16].active) --index16; if (!Main.tileDungeon[(int) Main.tile[index15, index16].type]) flag1 = false; int num26 = index16; int index17 = WorldGen.DDoorY[index14]; while (!Main.tile[index15, index17].active) ++index17; if (!Main.tileDungeon[(int) Main.tile[index15, index17].type]) flag1 = false; int num27 = index17; if (num27 - num26 >= 3) { int num28 = index15 - 20; int num29 = index15 + 20; int num30 = num27 - 10; int num31 = num27 + 10; for (int index18 = num28; index18 < num29; ++index18) { for (int index19 = num30; index19 < num31; ++index19) { if (Main.tile[index18, index19].active && Main.tile[index18, index19].type == (byte) 10) { flag1 = false; break; } } } if (flag1) { for (int index20 = num27 - 3; index20 < num27; ++index20) { for (int index21 = index15 - 3; index21 <= index15 + 3; ++index21) { if (Main.tile[index21, index20].active) { flag1 = false; break; } } } } if (flag1 && num27 - num26 < 20) { bool flag2 = false; if (WorldGen.DDoorPos[index14] == 0 && num27 - num26 < num24) flag2 = true; if (WorldGen.DDoorPos[index14] == -1 && index15 > num25) flag2 = true; if (WorldGen.DDoorPos[index14] == 1 && (index15 < num25 || num25 == 0)) flag2 = true; if (flag2) { num25 = index15; num24 = num27 - num26; } } } } if (num24 < 20) { int i = num25; int index22 = WorldGen.DDoorY[index14]; int index23 = index22; for (; !Main.tile[i, index22].active; ++index22) Main.tile[i, index22].active = false; while (!Main.tile[i, index23].active) --index23; int j = index22 - 1; int num32 = index23 + 1; for (int index24 = num32; index24 < j - 2; ++index24) { Main.tile[i, index24].active = true; Main.tile[i, index24].type = (byte) tileType; } WorldGen.PlaceTile(i, j, 10, true); int index25 = i - 1; int index26 = j - 3; while (!Main.tile[index25, index26].active) --index26; if (j - index26 < j - num32 + 5 && Main.tileDungeon[(int) Main.tile[index25, index26].type]) { for (int index27 = j - 4 - WorldGen.genRand.Next(3); index27 > index26; --index27) { Main.tile[index25, index27].active = true; Main.tile[index25, index27].type = (byte) tileType; } } int index28 = index25 + 2; int index29 = j - 3; while (!Main.tile[index28, index29].active) --index29; if (j - index29 < j - num32 + 5 && Main.tileDungeon[(int) Main.tile[index28, index29].type]) { for (int index30 = j - 4 - WorldGen.genRand.Next(3); index30 > index29; --index30) { Main.tile[index28, index30].active = true; Main.tile[index28, index30].type = (byte) tileType; } } int index31 = j + 1; int num33 = index28 - 1; Main.tile[num33 - 1, index31].active = true; Main.tile[num33 - 1, index31].type = (byte) tileType; Main.tile[num33 + 1, index31].active = true; Main.tile[num33 + 1, index31].type = (byte) tileType; } } Main.statusText = Lang.gen[58] + " 85%"; for (int index32 = 0; index32 < WorldGen.numDPlats; ++index32) { int index33 = WorldGen.DPlatX[index32]; int num34 = WorldGen.DPlatY[index32]; int num35 = Main.maxTilesX; int num36 = 10; for (int index34 = num34 - 5; index34 <= num34 + 5; ++index34) { int index35 = index33; int index36 = index33; bool flag3 = false; if (Main.tile[index35, index34].active) { flag3 = true; } else { while (!Main.tile[index35, index34].active) { --index35; if (!Main.tileDungeon[(int) Main.tile[index35, index34].type]) flag3 = true; } while (!Main.tile[index36, index34].active) { ++index36; if (!Main.tileDungeon[(int) Main.tile[index36, index34].type]) flag3 = true; } } if (!flag3 && index36 - index35 <= num36) { bool flag4 = true; int num37 = index33 - num36 / 2 - 2; int num38 = index33 + num36 / 2 + 2; int num39 = index34 - 5; int num40 = index34 + 5; for (int index37 = num37; index37 <= num38; ++index37) { for (int index38 = num39; index38 <= num40; ++index38) { if (Main.tile[index37, index38].active && Main.tile[index37, index38].type == (byte) 19) { flag4 = false; break; } } } for (int index39 = index34 + 3; index39 >= index34 - 5; --index39) { if (Main.tile[index33, index39].active) { flag4 = false; break; } } if (flag4) { num35 = index34; break; } } } if (num35 > num34 - 10 && num35 < num34 + 10) { int index40 = index33; int index41 = num35; int index42 = index33 + 1; for (; !Main.tile[index40, index41].active; --index40) { Main.tile[index40, index41].active = true; Main.tile[index40, index41].type = (byte) 19; } for (; !Main.tile[index42, index41].active; ++index42) { Main.tile[index42, index41].active = true; Main.tile[index42, index41].type = (byte) 19; } } } Main.statusText = Lang.gen[58] + " 90%"; int num41 = 0; int num42 = 1000; int num43 = 0; while (num43 < Main.maxTilesX / 20) { ++num41; int index43 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX); int index44 = WorldGen.genRand.Next(WorldGen.dMinY, WorldGen.dMaxY); bool flag5 = true; if ((int) Main.tile[index43, index44].wall == wallType && !Main.tile[index43, index44].active) { int num44 = 1; if (WorldGen.genRand.Next(2) == 0) num44 = -1; while (flag5 && !Main.tile[index43, index44].active) { index43 -= num44; if (index43 < 5 || index43 > Main.maxTilesX - 5) flag5 = false; else if (Main.tile[index43, index44].active && !Main.tileDungeon[(int) Main.tile[index43, index44].type]) flag5 = false; } if (flag5 && Main.tile[index43, index44].active && Main.tileDungeon[(int) Main.tile[index43, index44].type] && Main.tile[index43, index44 - 1].active && Main.tileDungeon[(int) Main.tile[index43, index44 - 1].type] && Main.tile[index43, index44 + 1].active && Main.tileDungeon[(int) Main.tile[index43, index44 + 1].type]) { int i1 = index43 + num44; for (int index45 = i1 - 3; index45 <= i1 + 3; ++index45) { for (int index46 = index44 - 3; index46 <= index44 + 3; ++index46) { if (Main.tile[index45, index46].active && Main.tile[index45, index46].type == (byte) 19) { flag5 = false; break; } } } if (flag5 && !Main.tile[i1, index44 - 1].active & !Main.tile[i1, index44 - 2].active & !Main.tile[i1, index44 - 3].active) { int index47 = i1; int num45 = i1; while (index47 > WorldGen.dMinX && index47 < WorldGen.dMaxX && !Main.tile[index47, index44].active && !Main.tile[index47, index44 - 1].active && !Main.tile[index47, index44 + 1].active) index47 += num44; int num46 = Math.Abs(i1 - index47); bool flag6 = false; if (WorldGen.genRand.Next(2) == 0) flag6 = true; if (num46 > 5) { for (int index48 = WorldGen.genRand.Next(1, 4); index48 > 0; --index48) { Main.tile[i1, index44].active = true; Main.tile[i1, index44].type = (byte) 19; if (flag6) { WorldGen.PlaceTile(i1, index44 - 1, 50, true); if (WorldGen.genRand.Next(50) == 0 && Main.tile[i1, index44 - 1].type == (byte) 50) Main.tile[i1, index44 - 1].frameX = (short) 90; } i1 += num44; } num41 = 0; ++num43; if (!flag6 && WorldGen.genRand.Next(2) == 0) { int i2 = num45; int j = index44 - 1; int type = 0; if (WorldGen.genRand.Next(4) == 0) type = 1; switch (type) { case 0: type = 13; break; case 1: type = 49; break; } WorldGen.PlaceTile(i2, j, type, true); if (Main.tile[i2, j].type == (byte) 13) Main.tile[i2, j].frameX = WorldGen.genRand.Next(2) != 0 ? (short) 36 : (short) 18; } } } } } if (num41 > num42) { num41 = 0; ++num43; } } Main.statusText = Lang.gen[58] + " 95%"; int num47 = 0; for (int index = 0; index < WorldGen.numDRooms; ++index) { int num48 = 0; while (num48 < 1000) { int num49 = (int) ((double) WorldGen.dRoomSize[index] * 0.4); int i = WorldGen.dRoomX[index] + WorldGen.genRand.Next(-num49, num49 + 1); int j = WorldGen.dRoomY[index] + WorldGen.genRand.Next(-num49, num49 + 1); ++num47; int Style = 2; int contain; switch (num47) { case 1: contain = 329; break; case 2: contain = 155; break; case 3: contain = 156; break; case 4: contain = 157; break; case 5: contain = 163; break; case 6: contain = 113; break; case 7: contain = 327; Style = 0; break; default: contain = 164; num47 = 0; break; } if ((double) j < Main.worldSurface + 50.0) { contain = 327; Style = 0; } if (contain == 0 && WorldGen.genRand.Next(2) == 0) { num48 = 1000; } else { if (WorldGen.AddBuriedChest(i, j, contain, Style: Style)) num48 += 1000; ++num48; } } } WorldGen.dMinX -= 25; WorldGen.dMaxX += 25; WorldGen.dMinY -= 25; WorldGen.dMaxY += 25; if (WorldGen.dMinX < 0) WorldGen.dMinX = 0; if (WorldGen.dMaxX > Main.maxTilesX) WorldGen.dMaxX = Main.maxTilesX; if (WorldGen.dMinY < 0) WorldGen.dMinY = 0; if (WorldGen.dMaxY > Main.maxTilesY) WorldGen.dMaxY = Main.maxTilesY; int num50 = 0; int num51 = 1000; int num52 = 0; while (num52 < Main.maxTilesX / 150) { ++num50; int x1 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX); int index49 = WorldGen.genRand.Next(WorldGen.dMinY, WorldGen.dMaxY); if ((int) Main.tile[x1, index49].wall == wallType) { for (int y1 = index49; y1 > WorldGen.dMinY; --y1) { if (Main.tile[x1, y1 - 1].active && (int) Main.tile[x1, y1 - 1].type == tileType) { bool flag = false; for (int index50 = x1 - 15; index50 < x1 + 15; ++index50) { for (int index51 = y1 - 15; index51 < y1 + 15; ++index51) { if (index50 > 0 && index50 < Main.maxTilesX && index51 > 0 && index51 < Main.maxTilesY && Main.tile[index50, index51].type == (byte) 42) { flag = true; break; } } } if (Main.tile[x1 - 1, y1].active || Main.tile[x1 + 1, y1].active || Main.tile[x1 - 1, y1 + 1].active || Main.tile[x1 + 1, y1 + 1].active || Main.tile[x1, y1 + 2].active) flag = true; if (!flag) { WorldGen.Place1x2Top(x1, y1, 42); if (Main.tile[x1, y1].type == (byte) 42) { num50 = 0; ++num52; for (int index52 = 0; index52 < 1000; ++index52) { int i = x1 + WorldGen.genRand.Next(-12, 13); int j = y1 + WorldGen.genRand.Next(3, 21); if (!Main.tile[i, j].active && !Main.tile[i, j + 1].active && Main.tile[i - 1, j].type != (byte) 48 && Main.tile[i + 1, j].type != (byte) 48 && Collision.CanHit(new Vector2((float) (i * 16), (float) (j * 16)), 16, 16, new Vector2((float) (x1 * 16), (float) (y1 * 16 + 1)), 16, 16)) { WorldGen.PlaceTile(i, j, 136, true); if (Main.tile[i, j].active) { while (i != x1 || j != y1) { Main.tile[i, j].wire = true; if (i > x1) --i; if (i < x1) ++i; Main.tile[i, j].wire = true; if (j > y1) --j; if (j < y1) ++j; Main.tile[i, j].wire = true; } if (Main.rand.Next(3) > 0) { Main.tile[x1, y1].frameX = (short) 18; Main.tile[x1, y1 + 1].frameX = (short) 18; break; } break; } } } break; } break; } break; } } } if (num50 > num51) { ++num52; num50 = 0; } } int num53 = 0; int num54 = 1000; int num55 = 0; while (num55 < Main.maxTilesX / 500) { ++num53; int x2 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX); int y2 = WorldGen.genRand.Next(WorldGen.dMinY, WorldGen.dMaxY); if ((int) Main.tile[x2, y2].wall == wallType && WorldGen.placeTrap(x2, y2, 0)) num53 = num54; if (num53 > num54) { ++num55; num53 = 0; } } } public static void DungeonStairs(int i, int j, int tileType, int wallType) { Vector2 vector2_1 = new Vector2(); double num1 = (double) WorldGen.genRand.Next(5, 9); Vector2 vector2_2; vector2_2.X = (float) i; vector2_2.Y = (float) j; int num2 = WorldGen.genRand.Next(10, 30); int num3 = i <= WorldGen.dEnteranceX ? 1 : -1; if (i > Main.maxTilesX - 400) num3 = -1; else if (i < 400) num3 = 1; vector2_1.Y = -1f; vector2_1.X = (float) num3; if (WorldGen.genRand.Next(3) == 0) vector2_1.X *= 0.5f; else if (WorldGen.genRand.Next(3) == 0) vector2_1.Y *= 2f; while (num2 > 0) { --num2; int num4 = (int) ((double) vector2_2.X - num1 - 4.0 - (double) WorldGen.genRand.Next(6)); int num5 = (int) ((double) vector2_2.X + num1 + 4.0 + (double) WorldGen.genRand.Next(6)); int num6 = (int) ((double) vector2_2.Y - num1 - 4.0); int num7 = (int) ((double) vector2_2.Y + num1 + 4.0 + (double) WorldGen.genRand.Next(6)); if (num4 < 0) num4 = 0; if (num5 > Main.maxTilesX) num5 = Main.maxTilesX; if (num6 < 0) num6 = 0; if (num7 > Main.maxTilesY) num7 = Main.maxTilesY; int num8 = 1; if ((double) vector2_2.X > (double) (Main.maxTilesX / 2)) num8 = -1; int i1 = (int) ((double) vector2_2.X + WorldGen.dxStrength1 * 0.600000023841858 * (double) num8 + WorldGen.dxStrength2 * (double) num8); int num9 = (int) (WorldGen.dyStrength2 * 0.5); if ((double) vector2_2.Y < Main.worldSurface - 5.0 && Main.tile[i1, (int) ((double) vector2_2.Y - num1 - 6.0 + (double) num9)].wall == (byte) 0 && Main.tile[i1, (int) ((double) vector2_2.Y - num1 - 7.0 + (double) num9)].wall == (byte) 0 && Main.tile[i1, (int) ((double) vector2_2.Y - num1 - 8.0 + (double) num9)].wall == (byte) 0) { WorldGen.dSurface = true; WorldGen.TileRunner(i1, (int) ((double) vector2_2.Y - num1 - 6.0 + (double) num9), (double) WorldGen.genRand.Next(25, 35), WorldGen.genRand.Next(10, 20), -1, speedY: -1f); } for (int index1 = num4; index1 < num5; ++index1) { for (int index2 = num6; index2 < num7; ++index2) { Main.tile[index1, index2].liquid = (byte) 0; if ((int) Main.tile[index1, index2].wall != wallType) { Main.tile[index1, index2].wall = (byte) 0; Main.tile[index1, index2].active = true; Main.tile[index1, index2].type = (byte) tileType; } } } for (int i2 = num4 + 1; i2 < num5 - 1; ++i2) { for (int j1 = num6 + 1; j1 < num7 - 1; ++j1) WorldGen.PlaceWall(i2, j1, wallType, true); } int num10 = 0; if (WorldGen.genRand.Next((int) num1) == 0) num10 = WorldGen.genRand.Next(1, 3); int num11 = (int) ((double) vector2_2.X - num1 * 0.5 - (double) num10); int num12 = (int) ((double) vector2_2.X + num1 * 0.5 + (double) num10); int num13 = (int) ((double) vector2_2.Y - num1 * 0.5 - (double) num10); int num14 = (int) ((double) vector2_2.Y + num1 * 0.5 + (double) num10); if (num11 < 0) num11 = 0; if (num12 > Main.maxTilesX) num12 = Main.maxTilesX; if (num13 < 0) num13 = 0; if (num14 > Main.maxTilesY) num14 = Main.maxTilesY; for (int i3 = num11; i3 < num12; ++i3) { for (int j2 = num13; j2 < num14; ++j2) { Main.tile[i3, j2].active = false; WorldGen.PlaceWall(i3, j2, wallType, true); } } if (WorldGen.dSurface) num2 = 0; vector2_2 += vector2_1; } WorldGen.dungeonX = (int) vector2_2.X; WorldGen.dungeonY = (int) vector2_2.Y; } public static void DungeonHalls(int i, int j, int tileType, int wallType, bool forceX = false) { Vector2 vector2_1 = new Vector2(); double num1 = (double) WorldGen.genRand.Next(4, 6); Vector2 vector2_2 = new Vector2(); Vector2 vector2_3 = new Vector2(); Vector2 vector2_4; vector2_4.X = (float) i; vector2_4.Y = (float) j; int num2 = WorldGen.genRand.Next(35, 80); if (forceX) { num2 += 20; WorldGen.lastDungeonHall = new Vector2(); } else if (WorldGen.genRand.Next(5) == 0) { num1 *= 2.0; num2 /= 2; } bool flag1 = false; while (!flag1) { int num3 = WorldGen.genRand.Next(2) != 0 ? 1 : -1; bool flag2 = false; if (WorldGen.genRand.Next(2) == 0) flag2 = true; if (forceX) flag2 = true; if (flag2) { vector2_2.Y = 0.0f; vector2_2.X = (float) num3; vector2_3.Y = 0.0f; vector2_3.X = (float) -num3; vector2_1.Y = 0.0f; vector2_1.X = (float) num3; if (WorldGen.genRand.Next(3) == 0) vector2_1.Y = WorldGen.genRand.Next(2) != 0 ? 0.2f : -0.2f; } else { ++num1; vector2_1.Y = (float) num3; vector2_1.X = 0.0f; vector2_2.X = 0.0f; vector2_2.Y = (float) num3; vector2_3.X = 0.0f; vector2_3.Y = (float) -num3; if (WorldGen.genRand.Next(2) == 0) vector2_1.X = WorldGen.genRand.Next(2) != 0 ? -0.3f : 0.3f; else num2 /= 2; } if (WorldGen.lastDungeonHall != vector2_3) flag1 = true; } if (!forceX) { if ((double) vector2_4.X > (double) (WorldGen.lastMaxTilesX - 200)) { int num4 = -1; vector2_2.Y = 0.0f; vector2_2.X = (float) num4; vector2_1.Y = 0.0f; vector2_1.X = (float) num4; if (WorldGen.genRand.Next(3) == 0) vector2_1.Y = WorldGen.genRand.Next(2) != 0 ? 0.2f : -0.2f; } else if ((double) vector2_4.X < 200.0) { int num5 = 1; vector2_2.Y = 0.0f; vector2_2.X = (float) num5; vector2_1.Y = 0.0f; vector2_1.X = (float) num5; if (WorldGen.genRand.Next(3) == 0) vector2_1.Y = WorldGen.genRand.Next(2) != 0 ? 0.2f : -0.2f; } else if ((double) vector2_4.Y > (double) (WorldGen.lastMaxTilesY - 300)) { int num6 = -1; ++num1; vector2_1.Y = (float) num6; vector2_1.X = 0.0f; vector2_2.X = 0.0f; vector2_2.Y = (float) num6; if (WorldGen.genRand.Next(2) == 0) vector2_1.X = WorldGen.genRand.Next(2) != 0 ? -0.3f : 0.3f; } else if ((double) vector2_4.Y < Main.rockLayer) { int num7 = 1; ++num1; vector2_1.Y = (float) num7; vector2_1.X = 0.0f; vector2_2.X = 0.0f; vector2_2.Y = (float) num7; if (WorldGen.genRand.Next(2) == 0) vector2_1.X = WorldGen.genRand.Next(2) != 0 ? -0.3f : 0.3f; } else if ((double) vector2_4.X < (double) (Main.maxTilesX / 2) && (double) vector2_4.X > (double) Main.maxTilesX * 0.25) { int num8 = -1; vector2_2.Y = 0.0f; vector2_2.X = (float) num8; vector2_1.Y = 0.0f; vector2_1.X = (float) num8; if (WorldGen.genRand.Next(3) == 0) vector2_1.Y = WorldGen.genRand.Next(2) != 0 ? 0.2f : -0.2f; } else if ((double) vector2_4.X > (double) (Main.maxTilesX / 2) && (double) vector2_4.X < (double) Main.maxTilesX * 0.75) { int num9 = 1; vector2_2.Y = 0.0f; vector2_2.X = (float) num9; vector2_1.Y = 0.0f; vector2_1.X = (float) num9; if (WorldGen.genRand.Next(3) == 0) vector2_1.Y = WorldGen.genRand.Next(2) != 0 ? 0.2f : -0.2f; } } if ((double) vector2_2.Y == 0.0) { WorldGen.DDoorX[WorldGen.numDDoors] = (int) vector2_4.X; WorldGen.DDoorY[WorldGen.numDDoors] = (int) vector2_4.Y; WorldGen.DDoorPos[WorldGen.numDDoors] = 0; ++WorldGen.numDDoors; } else { WorldGen.DPlatX[WorldGen.numDPlats] = (int) vector2_4.X; WorldGen.DPlatY[WorldGen.numDPlats] = (int) vector2_4.Y; ++WorldGen.numDPlats; } WorldGen.lastDungeonHall = vector2_2; while (num2 > 0) { if ((double) vector2_2.X > 0.0 && (double) vector2_4.X > (double) (Main.maxTilesX - 100)) num2 = 0; else if ((double) vector2_2.X < 0.0 && (double) vector2_4.X < 100.0) num2 = 0; else if ((double) vector2_2.Y > 0.0 && (double) vector2_4.Y > (double) (Main.maxTilesY - 100)) num2 = 0; else if ((double) vector2_2.Y < 0.0 && (double) vector2_4.Y < Main.rockLayer + 50.0) num2 = 0; --num2; int num10 = (int) ((double) vector2_4.X - num1 - 4.0 - (double) WorldGen.genRand.Next(6)); int num11 = (int) ((double) vector2_4.X + num1 + 4.0 + (double) WorldGen.genRand.Next(6)); int num12 = (int) ((double) vector2_4.Y - num1 - 4.0 - (double) WorldGen.genRand.Next(6)); int num13 = (int) ((double) vector2_4.Y + num1 + 4.0 + (double) WorldGen.genRand.Next(6)); if (num10 < 0) num10 = 0; if (num11 > Main.maxTilesX) num11 = Main.maxTilesX; if (num12 < 0) num12 = 0; if (num13 > Main.maxTilesY) num13 = Main.maxTilesY; for (int index1 = num10; index1 < num11; ++index1) { for (int index2 = num12; index2 < num13; ++index2) { Main.tile[index1, index2].liquid = (byte) 0; if (Main.tile[index1, index2].wall == (byte) 0) { Main.tile[index1, index2].active = true; Main.tile[index1, index2].type = (byte) tileType; } } } for (int i1 = num10 + 1; i1 < num11 - 1; ++i1) { for (int j1 = num12 + 1; j1 < num13 - 1; ++j1) WorldGen.PlaceWall(i1, j1, wallType, true); } int num14 = 0; if ((double) vector2_1.Y == 0.0 && WorldGen.genRand.Next((int) num1 + 1) == 0) num14 = WorldGen.genRand.Next(1, 3); else if ((double) vector2_1.X == 0.0 && WorldGen.genRand.Next((int) num1 - 1) == 0) num14 = WorldGen.genRand.Next(1, 3); else if (WorldGen.genRand.Next((int) num1 * 3) == 0) num14 = WorldGen.genRand.Next(1, 3); int num15 = (int) ((double) vector2_4.X - num1 * 0.5 - (double) num14); int num16 = (int) ((double) vector2_4.X + num1 * 0.5 + (double) num14); int num17 = (int) ((double) vector2_4.Y - num1 * 0.5 - (double) num14); int num18 = (int) ((double) vector2_4.Y + num1 * 0.5 + (double) num14); if (num15 < 0) num15 = 0; if (num16 > Main.maxTilesX) num16 = Main.maxTilesX; if (num17 < 0) num17 = 0; if (num18 > Main.maxTilesY) num18 = Main.maxTilesY; for (int index3 = num15; index3 < num16; ++index3) { for (int index4 = num17; index4 < num18; ++index4) { Main.tile[index3, index4].active = false; Main.tile[index3, index4].wall = (byte) wallType; } } vector2_4 += vector2_1; } WorldGen.dungeonX = (int) vector2_4.X; WorldGen.dungeonY = (int) vector2_4.Y; if ((double) vector2_2.Y == 0.0) { WorldGen.DDoorX[WorldGen.numDDoors] = (int) vector2_4.X; WorldGen.DDoorY[WorldGen.numDDoors] = (int) vector2_4.Y; WorldGen.DDoorPos[WorldGen.numDDoors] = 0; ++WorldGen.numDDoors; } else { WorldGen.DPlatX[WorldGen.numDPlats] = (int) vector2_4.X; WorldGen.DPlatY[WorldGen.numDPlats] = (int) vector2_4.Y; ++WorldGen.numDPlats; } } public static void DungeonRoom(int i, int j, int tileType, int wallType) { double num1 = (double) WorldGen.genRand.Next(15, 30); Vector2 vector2_1; vector2_1.X = (float) WorldGen.genRand.Next(-10, 11) * 0.1f; vector2_1.Y = (float) WorldGen.genRand.Next(-10, 11) * 0.1f; Vector2 vector2_2; vector2_2.X = (float) i; vector2_2.Y = (float) j - (float) num1 / 2f; int num2 = WorldGen.genRand.Next(10, 20); double num3 = (double) vector2_2.X; double num4 = (double) vector2_2.X; double num5 = (double) vector2_2.Y; double num6 = (double) vector2_2.Y; while (num2 > 0) { --num2; int num7 = (int) ((double) vector2_2.X - num1 * 0.800000011920929 - 5.0); int num8 = (int) ((double) vector2_2.X + num1 * 0.800000011920929 + 5.0); int num9 = (int) ((double) vector2_2.Y - num1 * 0.800000011920929 - 5.0); int num10 = (int) ((double) vector2_2.Y + num1 * 0.800000011920929 + 5.0); if (num7 < 0) num7 = 0; if (num8 > Main.maxTilesX) num8 = Main.maxTilesX; if (num9 < 0) num9 = 0; if (num10 > Main.maxTilesY) num10 = Main.maxTilesY; for (int index1 = num7; index1 < num8; ++index1) { for (int index2 = num9; index2 < num10; ++index2) { Main.tile[index1, index2].liquid = (byte) 0; if (Main.tile[index1, index2].wall == (byte) 0) { Main.tile[index1, index2].active = true; Main.tile[index1, index2].type = (byte) tileType; } } } for (int i1 = num7 + 1; i1 < num8 - 1; ++i1) { for (int j1 = num9 + 1; j1 < num10 - 1; ++j1) WorldGen.PlaceWall(i1, j1, wallType, true); } int num11 = (int) ((double) vector2_2.X - num1 * 0.5); int num12 = (int) ((double) vector2_2.X + num1 * 0.5); int num13 = (int) ((double) vector2_2.Y - num1 * 0.5); int num14 = (int) ((double) vector2_2.Y + num1 * 0.5); if (num11 < 0) num11 = 0; if (num12 > Main.maxTilesX) num12 = Main.maxTilesX; if (num13 < 0) num13 = 0; if (num14 > Main.maxTilesY) num14 = Main.maxTilesY; if ((double) num11 < num3) num3 = (double) num11; if ((double) num12 > num4) num4 = (double) num12; if ((double) num13 < num5) num5 = (double) num13; if ((double) num14 > num6) num6 = (double) num14; for (int index3 = num11; index3 < num12; ++index3) { for (int index4 = num13; index4 < num14; ++index4) { Main.tile[index3, index4].active = false; Main.tile[index3, index4].wall = (byte) wallType; } } vector2_2 += vector2_1; vector2_1.X += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; vector2_1.Y += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; if ((double) vector2_1.X > 1.0) vector2_1.X = 1f; if ((double) vector2_1.X < -1.0) vector2_1.X = -1f; if ((double) vector2_1.Y > 1.0) vector2_1.Y = 1f; if ((double) vector2_1.Y < -1.0) vector2_1.Y = -1f; } WorldGen.dRoomX[WorldGen.numDRooms] = (int) vector2_2.X; WorldGen.dRoomY[WorldGen.numDRooms] = (int) vector2_2.Y; WorldGen.dRoomSize[WorldGen.numDRooms] = (int) num1; WorldGen.dRoomL[WorldGen.numDRooms] = (int) num3; WorldGen.dRoomR[WorldGen.numDRooms] = (int) num4; WorldGen.dRoomT[WorldGen.numDRooms] = (int) num5; WorldGen.dRoomB[WorldGen.numDRooms] = (int) num6; WorldGen.dRoomTreasure[WorldGen.numDRooms] = false; ++WorldGen.numDRooms; } public static void DungeonEnt(int i, int j, int tileType, int wallType) { int num1 = 60; for (int index1 = i - num1; index1 < i + num1; ++index1) { for (int index2 = j - num1; index2 < j + num1; ++index2) { Main.tile[index1, index2].liquid = (byte) 0; Main.tile[index1, index2].lava = false; } } double dxStrength1 = WorldGen.dxStrength1; double dyStrength1 = WorldGen.dyStrength1; Vector2 vector2; vector2.X = (float) i; vector2.Y = (float) j - (float) dyStrength1 / 2f; WorldGen.dMinY = (int) vector2.Y; int num2 = 1; if (i > Main.maxTilesX / 2) num2 = -1; int num3 = (int) ((double) vector2.X - dxStrength1 * 0.600000023841858 - (double) WorldGen.genRand.Next(2, 5)); int num4 = (int) ((double) vector2.X + dxStrength1 * 0.600000023841858 + (double) WorldGen.genRand.Next(2, 5)); int num5 = (int) ((double) vector2.Y - dyStrength1 * 0.600000023841858 - (double) WorldGen.genRand.Next(2, 5)); int num6 = (int) ((double) vector2.Y + dyStrength1 * 0.600000023841858 + (double) WorldGen.genRand.Next(8, 16)); if (num3 < 0) num3 = 0; if (num4 > Main.maxTilesX) num4 = Main.maxTilesX; if (num5 < 0) num5 = 0; if (num6 > Main.maxTilesY) num6 = Main.maxTilesY; for (int i1 = num3; i1 < num4; ++i1) { for (int j1 = num5; j1 < num6; ++j1) { Main.tile[i1, j1].liquid = (byte) 0; if ((int) Main.tile[i1, j1].wall != wallType) { Main.tile[i1, j1].wall = (byte) 0; if (i1 > num3 + 1 && i1 < num4 - 2 && j1 > num5 + 1 && j1 < num6 - 2) WorldGen.PlaceWall(i1, j1, wallType, true); Main.tile[i1, j1].active = true; Main.tile[i1, j1].type = (byte) tileType; } } } int num7 = num3; int num8 = num3 + 5 + WorldGen.genRand.Next(4); int num9 = num5 - 3 - WorldGen.genRand.Next(3); int num10 = num5; for (int index3 = num7; index3 < num8; ++index3) { for (int index4 = num9; index4 < num10; ++index4) { if ((int) Main.tile[index3, index4].wall != wallType) { Main.tile[index3, index4].active = true; Main.tile[index3, index4].type = (byte) tileType; } } } int num11 = num4 - 5 - WorldGen.genRand.Next(4); int num12 = num4; int num13 = num5 - 3 - WorldGen.genRand.Next(3); int num14 = num5; for (int index5 = num11; index5 < num12; ++index5) { for (int index6 = num13; index6 < num14; ++index6) { if ((int) Main.tile[index5, index6].wall != wallType) { Main.tile[index5, index6].active = true; Main.tile[index5, index6].type = (byte) tileType; } } } int num15 = 1 + WorldGen.genRand.Next(2); int num16 = 2 + WorldGen.genRand.Next(4); int num17 = 0; for (int index7 = num3; index7 < num4; ++index7) { for (int index8 = num5 - num15; index8 < num5; ++index8) { if ((int) Main.tile[index7, index8].wall != wallType) { Main.tile[index7, index8].active = true; Main.tile[index7, index8].type = (byte) tileType; } } ++num17; if (num17 >= num16) { index7 += num16; num17 = 0; } } for (int i2 = num3; i2 < num4; ++i2) { for (int j2 = num6; j2 < num6 + 100; ++j2) WorldGen.PlaceWall(i2, j2, 2, true); } int num18 = (int) ((double) vector2.X - dxStrength1 * 0.600000023841858); int num19 = (int) ((double) vector2.X + dxStrength1 * 0.600000023841858); int num20 = (int) ((double) vector2.Y - dyStrength1 * 0.600000023841858); int num21 = (int) ((double) vector2.Y + dyStrength1 * 0.600000023841858); if (num18 < 0) num18 = 0; if (num19 > Main.maxTilesX) num19 = Main.maxTilesX; if (num20 < 0) num20 = 0; if (num21 > Main.maxTilesY) num21 = Main.maxTilesY; for (int i3 = num18; i3 < num19; ++i3) { for (int j3 = num20; j3 < num21; ++j3) WorldGen.PlaceWall(i3, j3, wallType, true); } int num22 = (int) ((double) vector2.X - dxStrength1 * 0.6 - 1.0); int num23 = (int) ((double) vector2.X + dxStrength1 * 0.6 + 1.0); int num24 = (int) ((double) vector2.Y - dyStrength1 * 0.6 - 1.0); int num25 = (int) ((double) vector2.Y + dyStrength1 * 0.6 + 1.0); if (num22 < 0) num22 = 0; if (num23 > Main.maxTilesX) num23 = Main.maxTilesX; if (num24 < 0) num24 = 0; if (num25 > Main.maxTilesY) num25 = Main.maxTilesY; for (int index9 = num22; index9 < num23; ++index9) { for (int index10 = num24; index10 < num25; ++index10) Main.tile[index9, index10].wall = (byte) wallType; } int num26 = (int) ((double) vector2.X - dxStrength1 * 0.5); int num27 = (int) ((double) vector2.X + dxStrength1 * 0.5); int num28 = (int) ((double) vector2.Y - dyStrength1 * 0.5); int num29 = (int) ((double) vector2.Y + dyStrength1 * 0.5); if (num26 < 0) num26 = 0; if (num27 > Main.maxTilesX) num27 = Main.maxTilesX; if (num28 < 0) num28 = 0; if (num29 > Main.maxTilesY) num29 = Main.maxTilesY; for (int index11 = num26; index11 < num27; ++index11) { for (int index12 = num28; index12 < num29; ++index12) { Main.tile[index11, index12].active = false; Main.tile[index11, index12].wall = (byte) wallType; } } WorldGen.DPlatX[WorldGen.numDPlats] = (int) vector2.X; WorldGen.DPlatY[WorldGen.numDPlats] = num29; ++WorldGen.numDPlats; vector2.X += (float) (dxStrength1 * 0.600000023841858) * (float) num2; vector2.Y += (float) dyStrength1 * 0.5f; double dxStrength2 = WorldGen.dxStrength2; double dyStrength2 = WorldGen.dyStrength2; vector2.X += (float) (dxStrength2 * 0.550000011920929) * (float) num2; vector2.Y -= (float) dyStrength2 * 0.5f; int num30 = (int) ((double) vector2.X - dxStrength2 * 0.600000023841858 - (double) WorldGen.genRand.Next(1, 3)); int num31 = (int) ((double) vector2.X + dxStrength2 * 0.600000023841858 + (double) WorldGen.genRand.Next(1, 3)); int num32 = (int) ((double) vector2.Y - dyStrength2 * 0.600000023841858 - (double) WorldGen.genRand.Next(1, 3)); int num33 = (int) ((double) vector2.Y + dyStrength2 * 0.600000023841858 + (double) WorldGen.genRand.Next(6, 16)); if (num30 < 0) num30 = 0; if (num31 > Main.maxTilesX) num31 = Main.maxTilesX; if (num32 < 0) num32 = 0; if (num33 > Main.maxTilesY) num33 = Main.maxTilesY; for (int index13 = num30; index13 < num31; ++index13) { for (int index14 = num32; index14 < num33; ++index14) { if ((int) Main.tile[index13, index14].wall != wallType) { bool flag = true; if (num2 < 0) { if ((double) index13 < (double) vector2.X - dxStrength2 * 0.5) flag = false; } else if ((double) index13 > (double) vector2.X + dxStrength2 * 0.5 - 1.0) flag = false; if (flag) { Main.tile[index13, index14].wall = (byte) 0; Main.tile[index13, index14].active = true; Main.tile[index13, index14].type = (byte) tileType; } } } } for (int i4 = num30; i4 < num31; ++i4) { for (int j4 = num33; j4 < num33 + 100; ++j4) WorldGen.PlaceWall(i4, j4, 2, true); } int num34 = (int) ((double) vector2.X - dxStrength2 * 0.5); int num35 = (int) ((double) vector2.X + dxStrength2 * 0.5); int num36 = num34; if (num2 < 0) ++num36; int num37 = num36 + 5 + WorldGen.genRand.Next(4); int num38 = num32 - 3 - WorldGen.genRand.Next(3); int num39 = num32; for (int index15 = num36; index15 < num37; ++index15) { for (int index16 = num38; index16 < num39; ++index16) { if ((int) Main.tile[index15, index16].wall != wallType) { Main.tile[index15, index16].active = true; Main.tile[index15, index16].type = (byte) tileType; } } } int num40 = num35 - 5 - WorldGen.genRand.Next(4); int num41 = num35; int num42 = num32 - 3 - WorldGen.genRand.Next(3); int num43 = num32; for (int index17 = num40; index17 < num41; ++index17) { for (int index18 = num42; index18 < num43; ++index18) { if ((int) Main.tile[index17, index18].wall != wallType) { Main.tile[index17, index18].active = true; Main.tile[index17, index18].type = (byte) tileType; } } } int num44 = 1 + WorldGen.genRand.Next(2); int num45 = 2 + WorldGen.genRand.Next(4); int num46 = 0; if (num2 < 0) ++num35; for (int index19 = num34 + 1; index19 < num35 - 1; ++index19) { for (int index20 = num32 - num44; index20 < num32; ++index20) { if ((int) Main.tile[index19, index20].wall != wallType) { Main.tile[index19, index20].active = true; Main.tile[index19, index20].type = (byte) tileType; } } ++num46; if (num46 >= num45) { index19 += num45; num46 = 0; } } int num47 = (int) ((double) vector2.X - dxStrength2 * 0.6); int num48 = (int) ((double) vector2.X + dxStrength2 * 0.6); int num49 = (int) ((double) vector2.Y - dyStrength2 * 0.6); int num50 = (int) ((double) vector2.Y + dyStrength2 * 0.6); if (num47 < 0) num47 = 0; if (num48 > Main.maxTilesX) num48 = Main.maxTilesX; if (num49 < 0) num49 = 0; if (num50 > Main.maxTilesY) num50 = Main.maxTilesY; for (int index21 = num47; index21 < num48; ++index21) { for (int index22 = num49; index22 < num50; ++index22) Main.tile[index21, index22].wall = (byte) 0; } int num51 = (int) ((double) vector2.X - dxStrength2 * 0.5); int num52 = (int) ((double) vector2.X + dxStrength2 * 0.5); int num53 = (int) ((double) vector2.Y - dyStrength2 * 0.5); int index23 = (int) ((double) vector2.Y + dyStrength2 * 0.5); if (num51 < 0) num51 = 0; if (num52 > Main.maxTilesX) num52 = Main.maxTilesX; if (num53 < 0) num53 = 0; if (index23 > Main.maxTilesY) index23 = Main.maxTilesY; for (int index24 = num51; index24 < num52; ++index24) { for (int index25 = num53; index25 < index23; ++index25) { Main.tile[index24, index25].active = false; Main.tile[index24, index25].wall = (byte) 0; } } for (int index26 = num51; index26 < num52; ++index26) { if (!Main.tile[index26, index23].active) { Main.tile[index26, index23].active = true; Main.tile[index26, index23].type = (byte) 19; } } Main.dungeonX = (int) vector2.X; Main.dungeonY = index23; int index27 = NPC.NewNPC(Main.dungeonX * 16 + 8, Main.dungeonY * 16, 37); Main.npc[index27].homeless = false; Main.npc[index27].homeTileX = Main.dungeonX; Main.npc[index27].homeTileY = Main.dungeonY; if (num2 == 1) { int num54 = 0; for (int index28 = num52; index28 < num52 + 25; ++index28) { ++num54; for (int index29 = index23 + num54; index29 < index23 + 25; ++index29) { Main.tile[index28, index29].active = true; Main.tile[index28, index29].type = (byte) tileType; } } } else { int num55 = 0; for (int index30 = num51; index30 > num51 - 25; --index30) { ++num55; for (int index31 = index23 + num55; index31 < index23 + 25; ++index31) { Main.tile[index30, index31].active = true; Main.tile[index30, index31].type = (byte) tileType; } } } int num56 = 1 + WorldGen.genRand.Next(2); int num57 = 2 + WorldGen.genRand.Next(4); int num58 = 0; int num59 = (int) ((double) vector2.X - dxStrength2 * 0.5); int num60 = (int) ((double) vector2.X + dxStrength2 * 0.5); int num61 = num59 + 2; int num62 = num60 - 2; for (int i5 = num61; i5 < num62; ++i5) { for (int j5 = num53; j5 < index23; ++j5) WorldGen.PlaceWall(i5, j5, wallType, true); ++num58; if (num58 >= num57) { i5 += num57 * 2; num58 = 0; } } vector2.X -= (float) (dxStrength2 * 0.600000023841858) * (float) num2; vector2.Y += (float) dyStrength2 * 0.5f; double num63 = 15.0; double num64 = 3.0; vector2.Y -= (float) num64 * 0.5f; int num65 = (int) ((double) vector2.X - num63 * 0.5); int num66 = (int) ((double) vector2.X + num63 * 0.5); int num67 = (int) ((double) vector2.Y - num64 * 0.5); int num68 = (int) ((double) vector2.Y + num64 * 0.5); if (num65 < 0) num65 = 0; if (num66 > Main.maxTilesX) num66 = Main.maxTilesX; if (num67 < 0) num67 = 0; if (num68 > Main.maxTilesY) num68 = Main.maxTilesY; for (int index32 = num65; index32 < num66; ++index32) { for (int index33 = num67; index33 < num68; ++index33) Main.tile[index32, index33].active = false; } if (num2 < 0) --vector2.X; WorldGen.PlaceTile((int) vector2.X, (int) vector2.Y + 1, 10); } public static bool AddBuriedChest( int i, int j, int contain = 0, bool notNearOtherChests = false, int Style = -1) { if (WorldGen.genRand == null) WorldGen.genRand = new Random((int) DateTime.Now.Ticks); for (int index1 = j; index1 < Main.maxTilesY; ++index1) { if (Main.tile[i, index1].active && Main.tileSolid[(int) Main.tile[i, index1].type]) { bool flag = false; int num1 = i; int num2 = index1; int style = 0; if ((double) num2 >= Main.worldSurface + 25.0 || contain > 0) style = 1; if (Style >= 0) style = Style; if (num2 > Main.maxTilesY - 205 && contain == 0) { switch (WorldGen.hellChest) { case 0: contain = 274; style = 4; flag = true; break; case 1: contain = 220; style = 4; flag = true; break; case 2: contain = 112; style = 4; flag = true; break; case 3: contain = 218; style = 4; flag = true; WorldGen.hellChest = 0; break; } } int index2 = WorldGen.PlaceChest(num1 - 1, num2 - 1, notNearOtherChests: notNearOtherChests, style: style); if (index2 < 0) return false; if (flag) ++WorldGen.hellChest; int index3 = 0; while (index3 == 0) { if ((double) num2 < Main.worldSurface + 25.0) { if (contain > 0) { Main.chest[index2].item[index3].SetDefaults(contain); Main.chest[index2].item[index3].Prefix(-1); ++index3; } else { int num3 = WorldGen.genRand.Next(6); if (num3 == 0) { Main.chest[index2].item[index3].SetDefaults(280); Main.chest[index2].item[index3].Prefix(-1); } if (num3 == 1) { Main.chest[index2].item[index3].SetDefaults(281); Main.chest[index2].item[index3].Prefix(-1); } if (num3 == 2) { Main.chest[index2].item[index3].SetDefaults(284); Main.chest[index2].item[index3].Prefix(-1); } if (num3 == 3) { Main.chest[index2].item[index3].SetDefaults(282); Main.chest[index2].item[index3].stack = WorldGen.genRand.Next(50, 75); } if (num3 == 4) { Main.chest[index2].item[index3].SetDefaults(279); Main.chest[index2].item[index3].stack = WorldGen.genRand.Next(25, 50); } if (num3 == 5) { Main.chest[index2].item[index3].SetDefaults(285); Main.chest[index2].item[index3].Prefix(-1); } ++index3; } if (WorldGen.genRand.Next(3) == 0) { Main.chest[index2].item[index3].SetDefaults(168); Main.chest[index2].item[index3].stack = WorldGen.genRand.Next(3, 6); ++index3; } if (WorldGen.genRand.Next(2) == 0) { int num4 = WorldGen.genRand.Next(2); int num5 = WorldGen.genRand.Next(8) + 3; if (num4 == 0) Main.chest[index2].item[index3].SetDefaults(20); if (num4 == 1) Main.chest[index2].item[index3].SetDefaults(22); Main.chest[index2].item[index3].stack = num5; ++index3; } if (WorldGen.genRand.Next(2) == 0) { int num6 = WorldGen.genRand.Next(2); int num7 = WorldGen.genRand.Next(26) + 25; if (num6 == 0) Main.chest[index2].item[index3].SetDefaults(40); if (num6 == 1) Main.chest[index2].item[index3].SetDefaults(42); Main.chest[index2].item[index3].stack = num7; ++index3; } if (WorldGen.genRand.Next(2) == 0) { int num8 = WorldGen.genRand.Next(1); int num9 = WorldGen.genRand.Next(3) + 3; if (num8 == 0) Main.chest[index2].item[index3].SetDefaults(28); Main.chest[index2].item[index3].stack = num9; ++index3; } if (WorldGen.genRand.Next(3) > 0) { int num10 = WorldGen.genRand.Next(4); int num11 = WorldGen.genRand.Next(1, 3); if (num10 == 0) Main.chest[index2].item[index3].SetDefaults(292); if (num10 == 1) Main.chest[index2].item[index3].SetDefaults(298); if (num10 == 2) Main.chest[index2].item[index3].SetDefaults(299); if (num10 == 3) Main.chest[index2].item[index3].SetDefaults(290); Main.chest[index2].item[index3].stack = num11; ++index3; } if (WorldGen.genRand.Next(2) == 0) { int num12 = WorldGen.genRand.Next(2); int num13 = WorldGen.genRand.Next(11) + 10; if (num12 == 0) Main.chest[index2].item[index3].SetDefaults(8); if (num12 == 1) Main.chest[index2].item[index3].SetDefaults(31); Main.chest[index2].item[index3].stack = num13; ++index3; } if (WorldGen.genRand.Next(2) == 0) { Main.chest[index2].item[index3].SetDefaults(72); Main.chest[index2].item[index3].stack = WorldGen.genRand.Next(10, 30); ++index3; } } else if ((double) num2 < Main.rockLayer) { if (contain > 0) { Main.chest[index2].item[index3].SetDefaults(contain); Main.chest[index2].item[index3].Prefix(-1); ++index3; } else { int num14 = WorldGen.genRand.Next(7); if (num14 == 0) { Main.chest[index2].item[index3].SetDefaults(49); Main.chest[index2].item[index3].Prefix(-1); } if (num14 == 1) { Main.chest[index2].item[index3].SetDefaults(50); Main.chest[index2].item[index3].Prefix(-1); } if (num14 == 2) Main.chest[index2].item[index3].SetDefaults(52); if (num14 == 3) { Main.chest[index2].item[index3].SetDefaults(53); Main.chest[index2].item[index3].Prefix(-1); } if (num14 == 4) { Main.chest[index2].item[index3].SetDefaults(54); Main.chest[index2].item[index3].Prefix(-1); } if (num14 == 5) { Main.chest[index2].item[index3].SetDefaults(55); Main.chest[index2].item[index3].Prefix(-1); } if (num14 == 6) { Main.chest[index2].item[index3].SetDefaults(51); Main.chest[index2].item[index3].stack = WorldGen.genRand.Next(26) + 25; } ++index3; } if (WorldGen.genRand.Next(3) == 0) { Main.chest[index2].item[index3].SetDefaults(166); Main.chest[index2].item[index3].stack = WorldGen.genRand.Next(10, 20); ++index3; } if (WorldGen.genRand.Next(2) == 0) { int num15 = WorldGen.genRand.Next(2); int num16 = WorldGen.genRand.Next(10) + 5; if (num15 == 0) Main.chest[index2].item[index3].SetDefaults(22); if (num15 == 1) Main.chest[index2].item[index3].SetDefaults(21); Main.chest[index2].item[index3].stack = num16; ++index3; } if (WorldGen.genRand.Next(2) == 0) { int num17 = WorldGen.genRand.Next(2); int num18 = WorldGen.genRand.Next(25) + 25; if (num17 == 0) Main.chest[index2].item[index3].SetDefaults(40); if (num17 == 1) Main.chest[index2].item[index3].SetDefaults(42); Main.chest[index2].item[index3].stack = num18; ++index3; } if (WorldGen.genRand.Next(2) == 0) { int num19 = WorldGen.genRand.Next(1); int num20 = WorldGen.genRand.Next(3) + 3; if (num19 == 0) Main.chest[index2].item[index3].SetDefaults(28); Main.chest[index2].item[index3].stack = num20; ++index3; } if (WorldGen.genRand.Next(3) > 0) { int num21 = WorldGen.genRand.Next(7); int num22 = WorldGen.genRand.Next(1, 3); if (num21 == 0) Main.chest[index2].item[index3].SetDefaults(289); if (num21 == 1) Main.chest[index2].item[index3].SetDefaults(298); if (num21 == 2) Main.chest[index2].item[index3].SetDefaults(299); if (num21 == 3) Main.chest[index2].item[index3].SetDefaults(290); if (num21 == 4) Main.chest[index2].item[index3].SetDefaults(303); if (num21 == 5) Main.chest[index2].item[index3].SetDefaults(291); if (num21 == 6) Main.chest[index2].item[index3].SetDefaults(304); Main.chest[index2].item[index3].stack = num22; ++index3; } if (WorldGen.genRand.Next(2) == 0) { int num23 = WorldGen.genRand.Next(11) + 10; Main.chest[index2].item[index3].SetDefaults(8); Main.chest[index2].item[index3].stack = num23; ++index3; } if (WorldGen.genRand.Next(2) == 0) { Main.chest[index2].item[index3].SetDefaults(72); Main.chest[index2].item[index3].stack = WorldGen.genRand.Next(50, 90); ++index3; } } else if (num2 < Main.maxTilesY - 250) { if (contain > 0) { Main.chest[index2].item[index3].SetDefaults(contain); Main.chest[index2].item[index3].Prefix(-1); ++index3; } else { int num24 = WorldGen.genRand.Next(7); if (num24 == 2 && WorldGen.genRand.Next(2) == 0) num24 = WorldGen.genRand.Next(7); if (num24 == 0) { Main.chest[index2].item[index3].SetDefaults(49); Main.chest[index2].item[index3].Prefix(-1); } if (num24 == 1) { Main.chest[index2].item[index3].SetDefaults(50); Main.chest[index2].item[index3].Prefix(-1); } if (num24 == 2) { Main.chest[index2].item[index3].SetDefaults(52); Main.chest[index2].item[index3].Prefix(-1); } if (num24 == 3) { Main.chest[index2].item[index3].SetDefaults(53); Main.chest[index2].item[index3].Prefix(-1); } if (num24 == 4) { Main.chest[index2].item[index3].SetDefaults(54); Main.chest[index2].item[index3].Prefix(-1); } if (num24 == 5) { Main.chest[index2].item[index3].SetDefaults(55); Main.chest[index2].item[index3].Prefix(-1); } if (num24 == 6) { Main.chest[index2].item[index3].SetDefaults(51); Main.chest[index2].item[index3].stack = WorldGen.genRand.Next(26) + 25; } ++index3; } if (WorldGen.genRand.Next(5) == 0) { Main.chest[index2].item[index3].SetDefaults(43); ++index3; } if (WorldGen.genRand.Next(3) == 0) { Main.chest[index2].item[index3].SetDefaults(167); ++index3; } if (WorldGen.genRand.Next(2) == 0) { int num25 = WorldGen.genRand.Next(2); int num26 = WorldGen.genRand.Next(8) + 3; if (num25 == 0) Main.chest[index2].item[index3].SetDefaults(19); if (num25 == 1) Main.chest[index2].item[index3].SetDefaults(21); Main.chest[index2].item[index3].stack = num26; ++index3; } if (WorldGen.genRand.Next(2) == 0) { int num27 = WorldGen.genRand.Next(2); int num28 = WorldGen.genRand.Next(26) + 25; if (num27 == 0) Main.chest[index2].item[index3].SetDefaults(41); if (num27 == 1) Main.chest[index2].item[index3].SetDefaults(279); Main.chest[index2].item[index3].stack = num28; ++index3; } if (WorldGen.genRand.Next(2) == 0) { int num29 = WorldGen.genRand.Next(1); int num30 = WorldGen.genRand.Next(3) + 3; if (num29 == 0) Main.chest[index2].item[index3].SetDefaults(188); Main.chest[index2].item[index3].stack = num30; ++index3; } if (WorldGen.genRand.Next(3) > 0) { int num31 = WorldGen.genRand.Next(6); int num32 = WorldGen.genRand.Next(1, 3); if (num31 == 0) Main.chest[index2].item[index3].SetDefaults(296); if (num31 == 1) Main.chest[index2].item[index3].SetDefaults(295); if (num31 == 2) Main.chest[index2].item[index3].SetDefaults(299); if (num31 == 3) Main.chest[index2].item[index3].SetDefaults(302); if (num31 == 4) Main.chest[index2].item[index3].SetDefaults(303); if (num31 == 5) Main.chest[index2].item[index3].SetDefaults(305); Main.chest[index2].item[index3].stack = num32; ++index3; } if (WorldGen.genRand.Next(3) > 1) { int num33 = WorldGen.genRand.Next(4); int num34 = WorldGen.genRand.Next(1, 3); if (num33 == 0) Main.chest[index2].item[index3].SetDefaults(301); if (num33 == 1) Main.chest[index2].item[index3].SetDefaults(302); if (num33 == 2) Main.chest[index2].item[index3].SetDefaults(297); if (num33 == 3) Main.chest[index2].item[index3].SetDefaults(304); Main.chest[index2].item[index3].stack = num34; ++index3; } if (WorldGen.genRand.Next(2) == 0) { int num35 = WorldGen.genRand.Next(2); int num36 = WorldGen.genRand.Next(15) + 15; if (num35 == 0) Main.chest[index2].item[index3].SetDefaults(8); if (num35 == 1) Main.chest[index2].item[index3].SetDefaults(282); Main.chest[index2].item[index3].stack = num36; ++index3; } if (WorldGen.genRand.Next(2) == 0) { Main.chest[index2].item[index3].SetDefaults(73); Main.chest[index2].item[index3].stack = WorldGen.genRand.Next(1, 3); ++index3; } } else { if (contain > 0) { Main.chest[index2].item[index3].SetDefaults(contain); Main.chest[index2].item[index3].Prefix(-1); ++index3; } else { int num37 = WorldGen.genRand.Next(4); if (num37 == 0) { Main.chest[index2].item[index3].SetDefaults(49); Main.chest[index2].item[index3].Prefix(-1); } if (num37 == 1) { Main.chest[index2].item[index3].SetDefaults(50); Main.chest[index2].item[index3].Prefix(-1); } if (num37 == 2) { Main.chest[index2].item[index3].SetDefaults(53); Main.chest[index2].item[index3].Prefix(-1); } if (num37 == 3) { Main.chest[index2].item[index3].SetDefaults(54); Main.chest[index2].item[index3].Prefix(-1); } ++index3; } if (WorldGen.genRand.Next(3) == 0) { Main.chest[index2].item[index3].SetDefaults(167); ++index3; } if (WorldGen.genRand.Next(2) == 0) { int num38 = WorldGen.genRand.Next(2); int num39 = WorldGen.genRand.Next(15) + 15; if (num38 == 0) Main.chest[index2].item[index3].SetDefaults(117); if (num38 == 1) Main.chest[index2].item[index3].SetDefaults(19); Main.chest[index2].item[index3].stack = num39; ++index3; } if (WorldGen.genRand.Next(2) == 0) { int num40 = WorldGen.genRand.Next(2); int num41 = WorldGen.genRand.Next(25) + 50; if (num40 == 0) Main.chest[index2].item[index3].SetDefaults(265); if (num40 == 1) Main.chest[index2].item[index3].SetDefaults(278); Main.chest[index2].item[index3].stack = num41; ++index3; } if (WorldGen.genRand.Next(2) == 0) { int num42 = WorldGen.genRand.Next(2); int num43 = WorldGen.genRand.Next(15) + 15; if (num42 == 0) Main.chest[index2].item[index3].SetDefaults(226); if (num42 == 1) Main.chest[index2].item[index3].SetDefaults(227); Main.chest[index2].item[index3].stack = num43; ++index3; } if (WorldGen.genRand.Next(4) > 0) { int num44 = WorldGen.genRand.Next(7); int num45 = WorldGen.genRand.Next(1, 3); if (num44 == 0) Main.chest[index2].item[index3].SetDefaults(296); if (num44 == 1) Main.chest[index2].item[index3].SetDefaults(295); if (num44 == 2) Main.chest[index2].item[index3].SetDefaults(293); if (num44 == 3) Main.chest[index2].item[index3].SetDefaults(288); if (num44 == 4) Main.chest[index2].item[index3].SetDefaults(294); if (num44 == 5) Main.chest[index2].item[index3].SetDefaults(297); if (num44 == 6) Main.chest[index2].item[index3].SetDefaults(304); Main.chest[index2].item[index3].stack = num45; ++index3; } if (WorldGen.genRand.Next(3) > 0) { int num46 = WorldGen.genRand.Next(5); int num47 = WorldGen.genRand.Next(1, 3); if (num46 == 0) Main.chest[index2].item[index3].SetDefaults(305); if (num46 == 1) Main.chest[index2].item[index3].SetDefaults(301); if (num46 == 2) Main.chest[index2].item[index3].SetDefaults(302); if (num46 == 3) Main.chest[index2].item[index3].SetDefaults(288); if (num46 == 4) Main.chest[index2].item[index3].SetDefaults(300); Main.chest[index2].item[index3].stack = num47; ++index3; } if (WorldGen.genRand.Next(2) == 0) { int num48 = WorldGen.genRand.Next(2); int num49 = WorldGen.genRand.Next(15) + 15; if (num48 == 0) Main.chest[index2].item[index3].SetDefaults(8); if (num48 == 1) Main.chest[index2].item[index3].SetDefaults(282); Main.chest[index2].item[index3].stack = num49; ++index3; } if (WorldGen.genRand.Next(2) == 0) { Main.chest[index2].item[index3].SetDefaults(73); Main.chest[index2].item[index3].stack = WorldGen.genRand.Next(2, 5); ++index3; } } } return true; } } return false; } public static bool OpenDoor(int i, int j, int direction) { if (Main.tile[i, j - 1] == null) Main.tile[i, j - 1] = new Tile(); if (Main.tile[i, j - 2] == null) Main.tile[i, j - 2] = new Tile(); if (Main.tile[i, j + 1] == null) Main.tile[i, j + 1] = new Tile(); if (Main.tile[i, j] == null) Main.tile[i, j] = new Tile(); int index1 = Main.tile[i, j - 1].frameY != (short) 0 || (int) Main.tile[i, j - 1].type != (int) Main.tile[i, j].type ? (Main.tile[i, j - 2].frameY != (short) 0 || (int) Main.tile[i, j - 2].type != (int) Main.tile[i, j].type ? (Main.tile[i, j + 1].frameY != (short) 0 || (int) Main.tile[i, j + 1].type != (int) Main.tile[i, j].type ? j : j + 1) : j - 2) : j - 1; short num = 0; int index2; int i1; if (direction == -1) { index2 = i - 1; num = (short) 36; i1 = i - 1; } else { index2 = i; i1 = i + 1; } bool flag = true; for (int j1 = index1; j1 < index1 + 3; ++j1) { if (Main.tile[i1, j1] == null) Main.tile[i1, j1] = new Tile(); if (Main.tile[i1, j1].active) { if (Main.tileCut[(int) Main.tile[i1, j1].type] || Main.tile[i1, j1].type == (byte) 3 || Main.tile[i1, j1].type == (byte) 24 || Main.tile[i1, j1].type == (byte) 52 || Main.tile[i1, j1].type == (byte) 61 || Main.tile[i1, j1].type == (byte) 62 || Main.tile[i1, j1].type == (byte) 69 || Main.tile[i1, j1].type == (byte) 71 || Main.tile[i1, j1].type == (byte) 73 || Main.tile[i1, j1].type == (byte) 74 || Main.tile[i1, j1].type == (byte) 110 || Main.tile[i1, j1].type == (byte) 113 || Main.tile[i1, j1].type == (byte) 115) { WorldGen.KillTile(i1, j1); } else { flag = false; break; } } } if (flag) { if (Main.netMode != 1) { for (int index3 = index2; index3 <= index2 + 1; ++index3) { for (int index4 = index1; index4 <= index1 + 2; ++index4) { if (WorldGen.numNoWire < WorldGen.maxWire - 1) { WorldGen.noWireX[WorldGen.numNoWire] = index3; WorldGen.noWireY[WorldGen.numNoWire] = index4; ++WorldGen.numNoWire; } } } } Main.PlaySound(8, i * 16, j * 16); Main.tile[index2, index1].active = true; Main.tile[index2, index1].type = (byte) 11; Main.tile[index2, index1].frameY = (short) 0; Main.tile[index2, index1].frameX = num; if (Main.tile[index2 + 1, index1] == null) Main.tile[index2 + 1, index1] = new Tile(); Main.tile[index2 + 1, index1].active = true; Main.tile[index2 + 1, index1].type = (byte) 11; Main.tile[index2 + 1, index1].frameY = (short) 0; Main.tile[index2 + 1, index1].frameX = (short) ((int) num + 18); if (Main.tile[index2, index1 + 1] == null) Main.tile[index2, index1 + 1] = new Tile(); Main.tile[index2, index1 + 1].active = true; Main.tile[index2, index1 + 1].type = (byte) 11; Main.tile[index2, index1 + 1].frameY = (short) 18; Main.tile[index2, index1 + 1].frameX = num; if (Main.tile[index2 + 1, index1 + 1] == null) Main.tile[index2 + 1, index1 + 1] = new Tile(); Main.tile[index2 + 1, index1 + 1].active = true; Main.tile[index2 + 1, index1 + 1].type = (byte) 11; Main.tile[index2 + 1, index1 + 1].frameY = (short) 18; Main.tile[index2 + 1, index1 + 1].frameX = (short) ((int) num + 18); if (Main.tile[index2, index1 + 2] == null) Main.tile[index2, index1 + 2] = new Tile(); Main.tile[index2, index1 + 2].active = true; Main.tile[index2, index1 + 2].type = (byte) 11; Main.tile[index2, index1 + 2].frameY = (short) 36; Main.tile[index2, index1 + 2].frameX = num; if (Main.tile[index2 + 1, index1 + 2] == null) Main.tile[index2 + 1, index1 + 2] = new Tile(); Main.tile[index2 + 1, index1 + 2].active = true; Main.tile[index2 + 1, index1 + 2].type = (byte) 11; Main.tile[index2 + 1, index1 + 2].frameY = (short) 36; Main.tile[index2 + 1, index1 + 2].frameX = (short) ((int) num + 18); for (int i2 = index2 - 1; i2 <= index2 + 2; ++i2) { for (int j2 = index1 - 1; j2 <= index1 + 2; ++j2) WorldGen.TileFrame(i2, j2); } } return flag; } public static void Check1xX(int x, int j, byte type) { if (WorldGen.destroyObject) return; int num1 = j - (int) Main.tile[x, j].frameY / 18; int frameX = (int) Main.tile[x, j].frameX; int num2 = 3; if (type == (byte) 92) num2 = 6; bool flag = false; for (int index = 0; index < num2; ++index) { if (Main.tile[x, num1 + index] == null) Main.tile[x, num1 + index] = new Tile(); if (!Main.tile[x, num1 + index].active) flag = true; else if ((int) Main.tile[x, num1 + index].type != (int) type) flag = true; else if ((int) Main.tile[x, num1 + index].frameY != index * 18) flag = true; else if ((int) Main.tile[x, num1 + index].frameX != frameX) flag = true; } if (Main.tile[x, num1 + num2] == null) Main.tile[x, num1 + num2] = new Tile(); if (!Main.tile[x, num1 + num2].active) flag = true; if (!Main.tileSolid[(int) Main.tile[x, num1 + num2].type]) flag = true; if (!flag) return; WorldGen.destroyObject = true; for (int index = 0; index < num2; ++index) { if ((int) Main.tile[x, num1 + index].type == (int) type) WorldGen.KillTile(x, num1 + index); } if (type == (byte) 92) Item.NewItem(x * 16, j * 16, 32, 32, 341); if (type == (byte) 93) Item.NewItem(x * 16, j * 16, 32, 32, 342); WorldGen.destroyObject = false; } public static void Check2xX(int i, int j, byte type) { if (WorldGen.destroyObject) return; int i1 = i; int frameX1 = (int) Main.tile[i, j].frameX; while (frameX1 >= 36) frameX1 -= 36; if (frameX1 == 18) --i1; if (Main.tile[i1, j] == null) Main.tile[i1, j] = new Tile(); int index1 = j - (int) Main.tile[i1, j].frameY / 18; if (Main.tile[i1, index1] == null) Main.tile[i1, index1] = new Tile(); int frameX2 = (int) Main.tile[i1, j].frameX; int num1 = 3; if (type == (byte) 104) num1 = 5; bool flag = false; for (int index2 = 0; index2 < num1; ++index2) { if (Main.tile[i1, index1 + index2] == null) Main.tile[i1, index1 + index2] = new Tile(); if (!Main.tile[i1, index1 + index2].active) flag = true; else if ((int) Main.tile[i1, index1 + index2].type != (int) type) flag = true; else if ((int) Main.tile[i1, index1 + index2].frameY != index2 * 18) flag = true; else if ((int) Main.tile[i1, index1 + index2].frameX != frameX2) flag = true; if (Main.tile[i1 + 1, index1 + index2] == null) Main.tile[i1 + 1, index1 + index2] = new Tile(); if (!Main.tile[i1 + 1, index1 + index2].active) flag = true; else if ((int) Main.tile[i1 + 1, index1 + index2].type != (int) type) flag = true; else if ((int) Main.tile[i1 + 1, index1 + index2].frameY != index2 * 18) flag = true; else if ((int) Main.tile[i1 + 1, index1 + index2].frameX != frameX2 + 18) flag = true; } if (Main.tile[i1, index1 + num1] == null) Main.tile[i1, index1 + num1] = new Tile(); if (!Main.tile[i1, index1 + num1].active) flag = true; if (!Main.tileSolid[(int) Main.tile[i1, index1 + num1].type]) flag = true; if (Main.tile[i1 + 1, index1 + num1] == null) Main.tile[i1 + 1, index1 + num1] = new Tile(); if (!Main.tile[i1 + 1, index1 + num1].active) flag = true; if (!Main.tileSolid[(int) Main.tile[i1 + 1, index1 + num1].type]) flag = true; if (!flag) return; WorldGen.destroyObject = true; for (int index3 = 0; index3 < num1; ++index3) { if ((int) Main.tile[i1, index1 + index3].type == (int) type) WorldGen.KillTile(i1, index1 + index3); if ((int) Main.tile[i1 + 1, index1 + index3].type == (int) type) WorldGen.KillTile(i1 + 1, index1 + index3); } if (type == (byte) 104) Item.NewItem(i1 * 16, j * 16, 32, 32, 359); if (type == (byte) 105) { int num2 = frameX2 / 36; int Type; switch (num2) { case 0: Type = 360; break; case 1: Type = 52; break; default: Type = 438 + num2 - 2; break; } Item.NewItem(i1 * 16, j * 16, 32, 32, Type); } WorldGen.destroyObject = false; } public static void Place1xX(int x, int y, int type, int style = 0) { int num1 = style * 18; int num2 = 3; if (type == 92) num2 = 6; bool flag = true; for (int index = y - num2 + 1; index < y + 1; ++index) { if (Main.tile[x, index] == null) Main.tile[x, index] = new Tile(); if (Main.tile[x, index].active) flag = false; if (type == 93 && Main.tile[x, index].liquid > (byte) 0) flag = false; } if (!flag || !Main.tile[x, y + 1].active || !Main.tileSolid[(int) Main.tile[x, y + 1].type]) return; for (int index = 0; index < num2; ++index) { Main.tile[x, y - num2 + 1 + index].active = true; Main.tile[x, y - num2 + 1 + index].frameY = (short) (index * 18); Main.tile[x, y - num2 + 1 + index].frameX = (short) num1; Main.tile[x, y - num2 + 1 + index].type = (byte) type; } } public static void Place2xX(int x, int y, int type, int style = 0) { int num1 = style * 36; int num2 = 3; if (type == 104) num2 = 5; bool flag = true; for (int index = y - num2 + 1; index < y + 1; ++index) { if (Main.tile[x, index] == null) Main.tile[x, index] = new Tile(); if (Main.tile[x, index].active) flag = false; if (Main.tile[x + 1, index] == null) Main.tile[x + 1, index] = new Tile(); if (Main.tile[x + 1, index].active) flag = false; } if (!flag || !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]) return; for (int index = 0; index < num2; ++index) { Main.tile[x, y - num2 + 1 + index].active = true; Main.tile[x, y - num2 + 1 + index].frameY = (short) (index * 18); Main.tile[x, y - num2 + 1 + index].frameX = (short) num1; Main.tile[x, y - num2 + 1 + index].type = (byte) type; Main.tile[x + 1, y - num2 + 1 + index].active = true; Main.tile[x + 1, y - num2 + 1 + index].frameY = (short) (index * 18); Main.tile[x + 1, y - num2 + 1 + index].frameX = (short) (num1 + 18); Main.tile[x + 1, y - num2 + 1 + index].type = (byte) type; } } public static void Check1x2(int x, int j, byte type) { if (WorldGen.destroyObject) return; int j1 = j; bool flag = true; if (Main.tile[x, j1] == null) Main.tile[x, j1] = new Tile(); if (Main.tile[x, j1 + 1] == null) Main.tile[x, j1 + 1] = new Tile(); int frameY = (int) Main.tile[x, j1].frameY; int num = 0; while (frameY >= 40) { frameY -= 40; ++num; } if (frameY == 18) --j1; if (Main.tile[x, j1] == null) Main.tile[x, j1] = new Tile(); if ((int) Main.tile[x, j1].frameY == 40 * num && (int) Main.tile[x, j1 + 1].frameY == 40 * num + 18 && (int) Main.tile[x, j1].type == (int) type && (int) Main.tile[x, j1 + 1].type == (int) type) flag = false; if (Main.tile[x, j1 + 2] == null) Main.tile[x, j1 + 2] = new Tile(); if (!Main.tile[x, j1 + 2].active || !Main.tileSolid[(int) Main.tile[x, j1 + 2].type]) flag = true; if (Main.tile[x, j1 + 2].type != (byte) 2 && Main.tile[x, j1 + 2].type != (byte) 109 && Main.tile[x, j1 + 2].type != (byte) 147 && Main.tile[x, j1].type == (byte) 20) flag = true; if (!flag) return; WorldGen.destroyObject = true; if ((int) Main.tile[x, j1].type == (int) type) WorldGen.KillTile(x, j1); if ((int) Main.tile[x, j1 + 1].type == (int) type) WorldGen.KillTile(x, j1 + 1); switch (type) { case 15: if (num == 1) { Item.NewItem(x * 16, j1 * 16, 32, 32, 358); break; } Item.NewItem(x * 16, j1 * 16, 32, 32, 34); break; case 134: Item.NewItem(x * 16, j1 * 16, 32, 32, 525); break; } WorldGen.destroyObject = false; } public static void CheckOnTable1x1(int x, int y, int type) { if (Main.tile[x, y + 1] == null || Main.tile[x, y + 1].active && Main.tileTable[(int) Main.tile[x, y + 1].type]) return; if (type == 78) { if (Main.tile[x, y + 1].active && Main.tileSolid[(int) Main.tile[x, y + 1].type]) return; WorldGen.KillTile(x, y); } else WorldGen.KillTile(x, y); } public static void CheckSign(int x, int y, int type) { if (WorldGen.destroyObject) return; int num1 = x - 2; int num2 = x + 3; int num3 = y - 2; int num4 = y + 3; if (num1 < 0 || num2 > Main.maxTilesX || num3 < 0 || num4 > Main.maxTilesY) return; bool flag = false; for (int index1 = num1; index1 < num2; ++index1) { for (int index2 = num3; index2 < num4; ++index2) { if (Main.tile[index1, index2] == null) Main.tile[index1, index2] = new Tile(); } } int num5 = (int) Main.tile[x, y].frameX / 18; int num6 = (int) Main.tile[x, y].frameY / 18; while (num5 > 1) num5 -= 2; int x1 = x - num5; int y1 = y - num6; int num7 = (int) Main.tile[x1, y1].frameX / 18 / 2; int num8 = x1; int num9 = x1 + 2; int num10 = y1; int num11 = y1 + 2; int num12 = 0; for (int index3 = num8; index3 < num9; ++index3) { int num13 = 0; for (int index4 = num10; index4 < num11; ++index4) { if (!Main.tile[index3, index4].active || (int) Main.tile[index3, index4].type != type) { flag = true; break; } if ((int) Main.tile[index3, index4].frameX / 18 != num12 + num7 * 2 || (int) Main.tile[index3, index4].frameY / 18 != num13) { flag = true; break; } ++num13; } ++num12; } if (!flag) { if (type == 85) { if (Main.tile[x1, y1 + 2].active && Main.tileSolid[(int) Main.tile[x1, y1 + 2].type] && Main.tile[x1 + 1, y1 + 2].active && Main.tileSolid[(int) Main.tile[x1 + 1, y1 + 2].type]) num7 = 0; else flag = true; } else if (Main.tile[x1, y1 + 2].active && Main.tileSolid[(int) Main.tile[x1, y1 + 2].type] && Main.tile[x1 + 1, y1 + 2].active && Main.tileSolid[(int) Main.tile[x1 + 1, y1 + 2].type]) num7 = 0; else if (Main.tile[x1, y1 - 1].active && Main.tileSolid[(int) Main.tile[x1, y1 - 1].type] && !Main.tileSolidTop[(int) Main.tile[x1, y1 - 1].type] && Main.tile[x1 + 1, y1 - 1].active && Main.tileSolid[(int) Main.tile[x1 + 1, y1 - 1].type] && !Main.tileSolidTop[(int) Main.tile[x1 + 1, y1 - 1].type]) num7 = 1; else if (Main.tile[x1 - 1, y1].active && Main.tileSolid[(int) Main.tile[x1 - 1, y1].type] && !Main.tileSolidTop[(int) Main.tile[x1 - 1, y1].type] && Main.tile[x1 - 1, y1 + 1].active && Main.tileSolid[(int) Main.tile[x1 - 1, y1 + 1].type] && !Main.tileSolidTop[(int) Main.tile[x1 - 1, y1 + 1].type]) num7 = 2; else if (Main.tile[x1 + 2, y1].active && Main.tileSolid[(int) Main.tile[x1 + 2, y1].type] && !Main.tileSolidTop[(int) Main.tile[x1 + 2, y1].type] && Main.tile[x1 + 2, y1 + 1].active && Main.tileSolid[(int) Main.tile[x1 + 2, y1 + 1].type] && !Main.tileSolidTop[(int) Main.tile[x1 + 2, y1 + 1].type]) num7 = 3; else flag = true; } if (flag) { WorldGen.destroyObject = true; for (int i = num8; i < num9; ++i) { for (int j = num10; j < num11; ++j) { if ((int) Main.tile[i, j].type == type) WorldGen.KillTile(i, j); } } Sign.KillSign(x1, y1); if (type == 85) Item.NewItem(x * 16, y * 16, 32, 32, 321); else Item.NewItem(x * 16, y * 16, 32, 32, 171); WorldGen.destroyObject = false; } else { int num14 = 36 * num7; for (int index5 = 0; index5 < 2; ++index5) { for (int index6 = 0; index6 < 2; ++index6) { Main.tile[x1 + index5, y1 + index6].active = true; Main.tile[x1 + index5, y1 + index6].type = (byte) type; Main.tile[x1 + index5, y1 + index6].frameX = (short) (num14 + 18 * index5); Main.tile[x1 + index5, y1 + index6].frameY = (short) (18 * index6); } } } } public static bool PlaceSign(int x, int y, int type) { int num1 = x - 2; int num2 = x + 3; int num3 = y - 2; int num4 = y + 3; if (num1 < 0 || num2 > Main.maxTilesX || num3 < 0 || num4 > Main.maxTilesY) return false; for (int index1 = num1; index1 < num2; ++index1) { for (int index2 = num3; index2 < num4; ++index2) { if (Main.tile[index1, index2] == null) Main.tile[index1, index2] = new Tile(); } } int index3 = x; int index4 = y; int num5 = 0; switch (type) { case 55: 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]) { --index4; num5 = 0; break; } 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]) { num5 = 1; break; } 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.tileNoAttach[(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] && !Main.tileNoAttach[(int) Main.tile[x - 1, y + 1].type]) { num5 = 2; break; } 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.tileNoAttach[(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] || Main.tileNoAttach[(int) Main.tile[x + 1, y + 1].type]) return false; --index3; num5 = 3; break; case 85: 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]) return false; --index4; num5 = 0; break; } if (Main.tile[index3, index4].active || Main.tile[index3 + 1, index4].active || Main.tile[index3, index4 + 1].active || Main.tile[index3 + 1, index4 + 1].active) return false; int num6 = 36 * num5; for (int index5 = 0; index5 < 2; ++index5) { for (int index6 = 0; index6 < 2; ++index6) { Main.tile[index3 + index5, index4 + index6].active = true; Main.tile[index3 + index5, index4 + index6].type = (byte) type; Main.tile[index3 + index5, index4 + index6].frameX = (short) (num6 + 18 * index5); Main.tile[index3 + index5, index4 + index6].frameY = (short) (18 * index6); } } return true; } public static void Place1x1(int x, int y, int type, int style = 0) { if (Main.tile[x, y] == null) Main.tile[x, y] = new Tile(); if (Main.tile[x, y + 1] == null) Main.tile[x, y + 1] = new Tile(); if (!WorldGen.SolidTile(x, y + 1) || Main.tile[x, y].active) return; Main.tile[x, y].active = true; Main.tile[x, y].type = (byte) type; if (type == 144) { Main.tile[x, y].frameX = (short) (style * 18); Main.tile[x, y].frameY = (short) 0; } else Main.tile[x, y].frameY = (short) (style * 18); } public static void Check1x1(int x, int y, int type) { if (Main.tile[x, y + 1] == null || Main.tile[x, y + 1].active && Main.tileSolid[(int) Main.tile[x, y + 1].type]) return; WorldGen.KillTile(x, y); } public static void PlaceOnTable1x1(int x, int y, int type, int style = 0) { bool flag = false; if (Main.tile[x, y] == null) Main.tile[x, y] = new Tile(); if (Main.tile[x, y + 1] == null) Main.tile[x, y + 1] = new Tile(); if (!Main.tile[x, y].active && Main.tile[x, y + 1].active && Main.tileTable[(int) Main.tile[x, y + 1].type]) flag = true; if (type == 78 && !Main.tile[x, y].active && Main.tile[x, y + 1].active && Main.tileSolid[(int) Main.tile[x, y + 1].type]) flag = true; if (!flag) return; Main.tile[x, y].active = true; Main.tile[x, y].frameX = (short) (style * 18); Main.tile[x, y].frameY = (short) 0; Main.tile[x, y].type = (byte) type; if (type != 50) return; Main.tile[x, y].frameX = (short) (18 * WorldGen.genRand.Next(5)); } public static bool PlaceAlch(int x, int y, int style) { if (Main.tile[x, y] == null) Main.tile[x, y] = new Tile(); if (Main.tile[x, y + 1] == null) Main.tile[x, y + 1] = new Tile(); if (!Main.tile[x, y].active && Main.tile[x, y + 1].active) { bool flag = false; switch (style) { case 0: if (Main.tile[x, y + 1].type != (byte) 2 && Main.tile[x, y + 1].type != (byte) 78 && Main.tile[x, y + 1].type != (byte) 109) flag = true; if (Main.tile[x, y].liquid > (byte) 0) { flag = true; break; } break; case 1: if (Main.tile[x, y + 1].type != (byte) 60 && Main.tile[x, y + 1].type != (byte) 78) flag = true; if (Main.tile[x, y].liquid > (byte) 0) { flag = true; break; } break; case 2: if (Main.tile[x, y + 1].type != (byte) 0 && Main.tile[x, y + 1].type != (byte) 59 && Main.tile[x, y + 1].type != (byte) 78) flag = true; if (Main.tile[x, y].liquid > (byte) 0) { flag = true; break; } break; case 3: if (Main.tile[x, y + 1].type != (byte) 23 && Main.tile[x, y + 1].type != (byte) 25 && Main.tile[x, y + 1].type != (byte) 78) flag = true; if (Main.tile[x, y].liquid > (byte) 0) { flag = true; break; } break; case 4: if (Main.tile[x, y + 1].type != (byte) 53 && Main.tile[x, y + 1].type != (byte) 78 && Main.tile[x, y + 1].type != (byte) 116) flag = true; if (Main.tile[x, y].liquid > (byte) 0 && Main.tile[x, y].lava) { flag = true; break; } break; case 5: if (Main.tile[x, y + 1].type != (byte) 57 && Main.tile[x, y + 1].type != (byte) 78) flag = true; if (Main.tile[x, y].liquid > (byte) 0 && !Main.tile[x, y].lava) { flag = true; break; } break; } if (!flag) { Main.tile[x, y].active = true; Main.tile[x, y].type = (byte) 82; Main.tile[x, y].frameX = (short) (18 * style); Main.tile[x, y].frameY = (short) 0; return true; } } return false; } public static void GrowAlch(int x, int y) { if (!Main.tile[x, y].active) return; if (Main.tile[x, y].type == (byte) 82 && WorldGen.genRand.Next(50) == 0) { Main.tile[x, y].type = (byte) 83; if (Main.netMode == 2) NetMessage.SendTileSquare(-1, x, y, 1); WorldGen.SquareTileFrame(x, y); } else { if (Main.tile[x, y].frameX != (short) 36) return; Main.tile[x, y].type = Main.tile[x, y].type != (byte) 83 ? (byte) 83 : (byte) 84; if (Main.netMode != 2) return; NetMessage.SendTileSquare(-1, x, y, 1); } } public static void PlantAlch() { int index1 = WorldGen.genRand.Next(20, Main.maxTilesX - 20); int index2 = WorldGen.genRand.Next(40) != 0 ? (WorldGen.genRand.Next(10) != 0 ? WorldGen.genRand.Next((int) Main.worldSurface, Main.maxTilesY - 20) : WorldGen.genRand.Next(0, Main.maxTilesY - 20)) : WorldGen.genRand.Next((int) (Main.rockLayer + (double) Main.maxTilesY) / 2, Main.maxTilesY - 20); while (index2 < Main.maxTilesY - 20 && !Main.tile[index1, index2].active) ++index2; if (!Main.tile[index1, index2].active || Main.tile[index1, index2 - 1].active || Main.tile[index1, index2 - 1].liquid != (byte) 0) return; if (Main.tile[index1, index2].type == (byte) 2 || Main.tile[index1, index2].type == (byte) 109) WorldGen.PlaceAlch(index1, index2 - 1, 0); if (Main.tile[index1, index2].type == (byte) 60) WorldGen.PlaceAlch(index1, index2 - 1, 1); if (Main.tile[index1, index2].type == (byte) 0 || Main.tile[index1, index2].type == (byte) 59) WorldGen.PlaceAlch(index1, index2 - 1, 2); if (Main.tile[index1, index2].type == (byte) 23 || Main.tile[index1, index2].type == (byte) 25) WorldGen.PlaceAlch(index1, index2 - 1, 3); if (Main.tile[index1, index2].type == (byte) 53 || Main.tile[index1, index2].type == (byte) 116) WorldGen.PlaceAlch(index1, index2 - 1, 4); if (Main.tile[index1, index2].type == (byte) 57) WorldGen.PlaceAlch(index1, index2 - 1, 5); if (!Main.tile[index1, index2 - 1].active || Main.netMode != 2) return; NetMessage.SendTileSquare(-1, index1, index2 - 1, 1); } public static void CheckAlch(int x, int y) { if (Main.tile[x, y] == null) Main.tile[x, y] = new Tile(); if (Main.tile[x, y + 1] == null) Main.tile[x, y + 1] = new Tile(); bool flag = false; if (!Main.tile[x, y + 1].active) flag = true; int num = (int) Main.tile[x, y].frameX / 18; Main.tile[x, y].frameY = (short) 0; if (!flag) { switch (num) { case 0: if (Main.tile[x, y + 1].type != (byte) 109 && Main.tile[x, y + 1].type != (byte) 2 && Main.tile[x, y + 1].type != (byte) 78) flag = true; if (Main.tile[x, y].liquid > (byte) 0 && Main.tile[x, y].lava) { flag = true; break; } break; case 1: if (Main.tile[x, y + 1].type != (byte) 60 && Main.tile[x, y + 1].type != (byte) 78) flag = true; if (Main.tile[x, y].liquid > (byte) 0 && Main.tile[x, y].lava) { flag = true; break; } break; case 2: if (Main.tile[x, y + 1].type != (byte) 0 && Main.tile[x, y + 1].type != (byte) 59 && Main.tile[x, y + 1].type != (byte) 78) flag = true; if (Main.tile[x, y].liquid > (byte) 0 && Main.tile[x, y].lava) { flag = true; break; } break; case 3: if (Main.tile[x, y + 1].type != (byte) 23 && Main.tile[x, y + 1].type != (byte) 25 && Main.tile[x, y + 1].type != (byte) 78) flag = true; if (Main.tile[x, y].liquid > (byte) 0 && Main.tile[x, y].lava) { flag = true; break; } break; case 4: if (Main.tile[x, y + 1].type != (byte) 53 && Main.tile[x, y + 1].type != (byte) 78 && Main.tile[x, y + 1].type != (byte) 116) flag = true; if (Main.tile[x, y].liquid > (byte) 0 && Main.tile[x, y].lava) flag = true; if (Main.tile[x, y].type != (byte) 82 && !Main.tile[x, y].lava && Main.netMode != 1) { if (Main.tile[x, y].liquid > (byte) 16) { if (Main.tile[x, y].type == (byte) 83) { Main.tile[x, y].type = (byte) 84; if (Main.netMode == 2) { NetMessage.SendTileSquare(-1, x, y, 1); break; } break; } break; } if (Main.tile[x, y].type == (byte) 84) { Main.tile[x, y].type = (byte) 83; if (Main.netMode == 2) { NetMessage.SendTileSquare(-1, x, y, 1); break; } break; } break; } break; case 5: if (Main.tile[x, y + 1].type != (byte) 57 && Main.tile[x, y + 1].type != (byte) 78) flag = true; if (Main.tile[x, y].liquid > (byte) 0 && !Main.tile[x, y].lava) flag = true; if (Main.tile[x, y].type != (byte) 82 && Main.tile[x, y].lava && Main.tile[x, y].type != (byte) 82 && Main.tile[x, y].lava && Main.netMode != 1) { if (Main.tile[x, y].liquid > (byte) 16) { if (Main.tile[x, y].type == (byte) 83) { Main.tile[x, y].type = (byte) 84; if (Main.netMode == 2) { NetMessage.SendTileSquare(-1, x, y, 1); break; } break; } break; } if (Main.tile[x, y].type == (byte) 84) { Main.tile[x, y].type = (byte) 83; if (Main.netMode == 2) { NetMessage.SendTileSquare(-1, x, y, 1); break; } break; } break; } break; } } if (!flag) return; WorldGen.KillTile(x, y); } public static void CheckBanner(int x, int j, byte type) { if (WorldGen.destroyObject) return; int num1 = j - (int) Main.tile[x, j].frameY / 18; int frameX = (int) Main.tile[x, j].frameX; bool flag = false; for (int index = 0; index < 3; ++index) { if (Main.tile[x, num1 + index] == null) Main.tile[x, num1 + index] = new Tile(); if (!Main.tile[x, num1 + index].active) flag = true; else if ((int) Main.tile[x, num1 + index].type != (int) type) flag = true; else if ((int) Main.tile[x, num1 + index].frameY != index * 18) flag = true; else if ((int) Main.tile[x, num1 + index].frameX != frameX) flag = true; } if (Main.tile[x, num1 - 1] == null) Main.tile[x, num1 - 1] = new Tile(); if (!Main.tile[x, num1 - 1].active) flag = true; if (!Main.tileSolid[(int) Main.tile[x, num1 - 1].type]) flag = true; if (Main.tileSolidTop[(int) Main.tile[x, num1 - 1].type]) flag = true; if (!flag) return; WorldGen.destroyObject = true; for (int index = 0; index < 3; ++index) { if ((int) Main.tile[x, num1 + index].type == (int) type) WorldGen.KillTile(x, num1 + index); } if (type == (byte) 91) { int num2 = frameX / 18; Item.NewItem(x * 16, (num1 + 1) * 16, 32, 32, 337 + num2); } WorldGen.destroyObject = false; } public static void PlaceBanner(int x, int y, int type, int style = 0) { int num = style * 18; if (Main.tile[x, y - 1] == null) Main.tile[x, y - 1] = new Tile(); if (Main.tile[x, y] == null) Main.tile[x, y] = new Tile(); if (Main.tile[x, y + 1] == null) Main.tile[x, y + 1] = new Tile(); if (Main.tile[x, y + 2] == null) Main.tile[x, y + 2] = new Tile(); 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].active || Main.tile[x, y + 1].active || Main.tile[x, y + 2].active) return; Main.tile[x, y].active = true; Main.tile[x, y].frameY = (short) 0; Main.tile[x, y].frameX = (short) num; Main.tile[x, y].type = (byte) type; Main.tile[x, y + 1].active = true; Main.tile[x, y + 1].frameY = (short) 18; Main.tile[x, y + 1].frameX = (short) num; Main.tile[x, y + 1].type = (byte) type; Main.tile[x, y + 2].active = true; Main.tile[x, y + 2].frameY = (short) 36; Main.tile[x, y + 2].frameX = (short) num; Main.tile[x, y + 2].type = (byte) type; } public static void PlaceMan(int i, int j, int dir) { for (int index1 = i; index1 <= i + 1; ++index1) { for (int index2 = j - 2; index2 <= j; ++index2) { if (Main.tile[index1, index2].active) return; } } if (!WorldGen.SolidTile(i, j + 1) || !WorldGen.SolidTile(i + 1, j + 1)) return; byte num = 0; if (dir == 1) num = (byte) 36; Main.tile[i, j - 2].active = true; Main.tile[i, j - 2].frameY = (short) 0; Main.tile[i, j - 2].frameX = (short) num; Main.tile[i, j - 2].type = (byte) 128; Main.tile[i, j - 1].active = true; Main.tile[i, j - 1].frameY = (short) 18; Main.tile[i, j - 1].frameX = (short) num; Main.tile[i, j - 1].type = (byte) 128; Main.tile[i, j].active = true; Main.tile[i, j].frameY = (short) 36; Main.tile[i, j].frameX = (short) num; Main.tile[i, j].type = (byte) 128; Main.tile[i + 1, j - 2].active = true; Main.tile[i + 1, j - 2].frameY = (short) 0; Main.tile[i + 1, j - 2].frameX = (short) (byte) (18U + (uint) num); Main.tile[i + 1, j - 2].type = (byte) 128; Main.tile[i + 1, j - 1].active = true; Main.tile[i + 1, j - 1].frameY = (short) 18; Main.tile[i + 1, j - 1].frameX = (short) (byte) (18U + (uint) num); Main.tile[i + 1, j - 1].type = (byte) 128; Main.tile[i + 1, j].active = true; Main.tile[i + 1, j].frameY = (short) 36; Main.tile[i + 1, j].frameX = (short) (byte) (18U + (uint) num); Main.tile[i + 1, j].type = (byte) 128; } public static void CheckMan(int i, int j) { if (WorldGen.destroyObject) return; int num1 = i; int num2 = j - (int) Main.tile[i, j].frameY / 18; int frameX1 = (int) Main.tile[i, j].frameX; while (frameX1 >= 100) frameX1 -= 100; while (frameX1 >= 36) frameX1 -= 36; int i1 = num1 - frameX1 / 18; bool flag = false; for (int index1 = 0; index1 <= 1; ++index1) { for (int index2 = 0; index2 <= 2; ++index2) { int index3 = i1 + index1; int index4 = num2 + index2; int frameX2 = (int) Main.tile[index3, index4].frameX; while (frameX2 >= 100) frameX2 -= 100; if (frameX2 >= 36) frameX2 -= 36; if (!Main.tile[index3, index4].active || Main.tile[index3, index4].type != (byte) 128 || (int) Main.tile[index3, index4].frameY != index2 * 18 || frameX2 != index1 * 18) flag = true; } } if (!WorldGen.SolidTile(i1, num2 + 3) || !WorldGen.SolidTile(i1 + 1, num2 + 3)) flag = true; if (!flag) return; WorldGen.destroyObject = true; Item.NewItem(i * 16, j * 16, 32, 32, 498); for (int index5 = 0; index5 <= 1; ++index5) { for (int index6 = 0; index6 <= 2; ++index6) { int i2 = i1 + index5; int j1 = num2 + index6; if (Main.tile[i2, j1].active && Main.tile[i2, j1].type == (byte) 128) WorldGen.KillTile(i2, j1); } } WorldGen.destroyObject = false; } public static void Place1x2(int x, int y, int type, int style) { short num1 = 0; if (type == 20) num1 = (short) (WorldGen.genRand.Next(3) * 18); if (Main.tile[x, y - 1] == null) Main.tile[x, y - 1] = new Tile(); if (Main.tile[x, y + 1] == null) Main.tile[x, y + 1] = new Tile(); if (!Main.tile[x, y + 1].active || !Main.tileSolid[(int) Main.tile[x, y + 1].type] || Main.tile[x, y - 1].active) return; short num2 = (short) (style * 40); Main.tile[x, y - 1].active = true; Main.tile[x, y - 1].frameY = num2; Main.tile[x, y - 1].frameX = num1; Main.tile[x, y - 1].type = (byte) type; Main.tile[x, y].active = true; Main.tile[x, y].frameY = (short) ((int) num2 + 18); Main.tile[x, y].frameX = num1; Main.tile[x, y].type = (byte) type; } public static void Place1x2Top(int x, int y, int type) { short num = 0; if (Main.tile[x, y - 1] == null) Main.tile[x, y - 1] = new Tile(); if (Main.tile[x, y + 1] == null) Main.tile[x, y + 1] = new Tile(); 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) return; Main.tile[x, y].active = true; Main.tile[x, y].frameY = (short) 0; Main.tile[x, y].frameX = num; Main.tile[x, y].type = (byte) type; Main.tile[x, y + 1].active = true; Main.tile[x, y + 1].frameY = (short) 18; Main.tile[x, y + 1].frameX = num; Main.tile[x, y + 1].type = (byte) type; } public static void Check1x2Top(int x, int j, byte type) { if (WorldGen.destroyObject) return; int j1 = j; bool flag = true; if (Main.tile[x, j1] == null) Main.tile[x, j1] = new Tile(); if (Main.tile[x, j1 + 1] == null) Main.tile[x, j1 + 1] = new Tile(); if (Main.tile[x, j1].frameY == (short) 18) --j1; if (Main.tile[x, j1] == null) Main.tile[x, j1] = new Tile(); if (Main.tile[x, j1].frameY == (short) 0 && Main.tile[x, j1 + 1].frameY == (short) 18 && (int) Main.tile[x, j1].type == (int) type && (int) Main.tile[x, j1 + 1].type == (int) type) flag = false; if (Main.tile[x, j1 - 1] == null) Main.tile[x, j1 - 1] = new Tile(); if (!Main.tile[x, j1 - 1].active || !Main.tileSolid[(int) Main.tile[x, j1 - 1].type] || Main.tileSolidTop[(int) Main.tile[x, j1 - 1].type]) flag = true; if (!flag) return; WorldGen.destroyObject = true; if ((int) Main.tile[x, j1].type == (int) type) WorldGen.KillTile(x, j1); if ((int) Main.tile[x, j1 + 1].type == (int) type) WorldGen.KillTile(x, j1 + 1); if (type == (byte) 42) Item.NewItem(x * 16, j1 * 16, 32, 32, 136); WorldGen.destroyObject = false; } public static void Check2x1(int i, int y, byte type) { if (WorldGen.destroyObject) return; int i1 = i; bool flag = true; if (Main.tile[i1, y] == null) Main.tile[i1, y] = new Tile(); if (Main.tile[i1 + 1, y] == null) Main.tile[i1 + 1, y] = new Tile(); if (Main.tile[i1, y + 1] == null) Main.tile[i1, y + 1] = new Tile(); if (Main.tile[i1 + 1, y + 1] == null) Main.tile[i1 + 1, y + 1] = new Tile(); if (Main.tile[i1, y].frameX == (short) 18) --i1; if (Main.tile[i1, y].frameX == (short) 0 && Main.tile[i1 + 1, y].frameX == (short) 18 && (int) Main.tile[i1, y].type == (int) type && (int) Main.tile[i1 + 1, y].type == (int) type) flag = false; if (type == (byte) 29 || type == (byte) 103) { if (!Main.tile[i1, y + 1].active || !Main.tileTable[(int) Main.tile[i1, y + 1].type]) flag = true; if (!Main.tile[i1 + 1, y + 1].active || !Main.tileTable[(int) Main.tile[i1 + 1, y + 1].type]) flag = true; } else { if (!Main.tile[i1, y + 1].active || !Main.tileSolid[(int) Main.tile[i1, y + 1].type]) flag = true; if (!Main.tile[i1 + 1, y + 1].active || !Main.tileSolid[(int) Main.tile[i1 + 1, y + 1].type]) flag = true; } if (!flag) return; WorldGen.destroyObject = true; if ((int) Main.tile[i1, y].type == (int) type) WorldGen.KillTile(i1, y); if ((int) Main.tile[i1 + 1, y].type == (int) type) WorldGen.KillTile(i1 + 1, y); if (type == (byte) 16) Item.NewItem(i1 * 16, y * 16, 32, 32, 35); if (type == (byte) 18) Item.NewItem(i1 * 16, y * 16, 32, 32, 36); if (type == (byte) 29) { Item.NewItem(i1 * 16, y * 16, 32, 32, 87); Main.PlaySound(13, i * 16, y * 16); } if (type == (byte) 103) { Item.NewItem(i1 * 16, y * 16, 32, 32, 356); Main.PlaySound(13, i * 16, y * 16); } if (type == (byte) 134) Item.NewItem(i1 * 16, y * 16, 32, 32, 525); WorldGen.destroyObject = false; WorldGen.SquareTileFrame(i1, y); WorldGen.SquareTileFrame(i1 + 1, y); } public static void Place2x1(int x, int y, int type) { if (Main.tile[x, y] == null) Main.tile[x, y] = new Tile(); if (Main.tile[x + 1, y] == null) Main.tile[x + 1, y] = new Tile(); if (Main.tile[x, y + 1] == null) Main.tile[x, y + 1] = new Tile(); if (Main.tile[x + 1, y + 1] == null) Main.tile[x + 1, y + 1] = new Tile(); bool flag = false; if (type != 29 && type != 103 && 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) flag = true; else if ((type == 29 || type == 103) && 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) flag = true; if (!flag) return; Main.tile[x, y].active = true; Main.tile[x, y].frameY = (short) 0; Main.tile[x, y].frameX = (short) 0; Main.tile[x, y].type = (byte) type; Main.tile[x + 1, y].active = true; Main.tile[x + 1, y].frameY = (short) 0; Main.tile[x + 1, y].frameX = (short) 18; Main.tile[x + 1, y].type = (byte) type; } public static void Check4x2(int i, int j, int type) { if (WorldGen.destroyObject) return; bool flag = false; int num1 = i; int num2 = j; int num3 = num1 + (int) Main.tile[i, j].frameX / 18 * -1; if ((type == 79 || type == 90) && Main.tile[i, j].frameX >= (short) 72) num3 += 4; int num4 = num2 + (int) Main.tile[i, j].frameY / 18 * -1; for (int index1 = num3; index1 < num3 + 4; ++index1) { for (int index2 = num4; index2 < num4 + 2; ++index2) { int num5 = (index1 - num3) * 18; if ((type == 79 || type == 90) && Main.tile[i, j].frameX >= (short) 72) num5 = (index1 - num3 + 4) * 18; if (Main.tile[index1, index2] == null) Main.tile[index1, index2] = new Tile(); if (!Main.tile[index1, index2].active || (int) Main.tile[index1, index2].type != type || (int) Main.tile[index1, index2].frameX != num5 || (int) Main.tile[index1, index2].frameY != (index2 - num4) * 18) flag = true; } if (Main.tile[index1, num4 + 2] == null) Main.tile[index1, num4 + 2] = new Tile(); if (!Main.tile[index1, num4 + 2].active || !Main.tileSolid[(int) Main.tile[index1, num4 + 2].type]) flag = true; } if (!flag) return; WorldGen.destroyObject = true; for (int i1 = num3; i1 < num3 + 4; ++i1) { for (int j1 = num4; j1 < num4 + 3; ++j1) { if ((int) Main.tile[i1, j1].type == type && Main.tile[i1, j1].active) WorldGen.KillTile(i1, j1); } } if (type == 79) Item.NewItem(i * 16, j * 16, 32, 32, 224); if (type == 90) Item.NewItem(i * 16, j * 16, 32, 32, 336); WorldGen.destroyObject = false; for (int i2 = num3 - 1; i2 < num3 + 4; ++i2) { for (int j2 = num4 - 1; j2 < num4 + 4; ++j2) WorldGen.TileFrame(i2, j2); } } public static void Check2x2(int i, int j, int type) { if (WorldGen.destroyObject) return; bool flag = false; int num1 = 0; int num2 = (int) Main.tile[i, j].frameX / 18 * -1; int num3 = (int) Main.tile[i, j].frameY / 18 * -1; if (num2 < -1) { num2 += 2; num1 = 36; } int i1 = num2 + i; int num4 = num3 + j; for (int index1 = i1; index1 < i1 + 2; ++index1) { for (int index2 = num4; index2 < num4 + 2; ++index2) { if (Main.tile[index1, index2] == null) Main.tile[index1, index2] = new Tile(); if (!Main.tile[index1, index2].active || (int) Main.tile[index1, index2].type != type || (int) Main.tile[index1, index2].frameX != (index1 - i1) * 18 + num1 || (int) Main.tile[index1, index2].frameY != (index2 - num4) * 18) flag = true; } switch (type) { case 95: case 126: if (Main.tile[index1, num4 - 1] == null) Main.tile[index1, num4 - 1] = new Tile(); if (!Main.tile[index1, num4 - 1].active || !Main.tileSolid[(int) Main.tile[index1, num4 - 1].type] || Main.tileSolidTop[(int) Main.tile[index1, num4 - 1].type]) { flag = true; continue; } continue; case 138: continue; default: if (Main.tile[index1, num4 + 2] == null) Main.tile[index1, num4 + 2] = new Tile(); if (!Main.tile[index1, num4 + 2].active || !Main.tileSolid[(int) Main.tile[index1, num4 + 2].type] && !Main.tileTable[(int) Main.tile[index1, num4 + 2].type]) { flag = true; continue; } continue; } } if (type == 138 && !WorldGen.SolidTile(i1, num4 + 2) && !WorldGen.SolidTile(i1 + 1, num4 + 2)) flag = true; if (!flag) return; WorldGen.destroyObject = true; for (int i2 = i1; i2 < i1 + 2; ++i2) { for (int j1 = num4; j1 < num4 + 2; ++j1) { if ((int) Main.tile[i2, j1].type == type && Main.tile[i2, j1].active) WorldGen.KillTile(i2, j1); } } if (type == 85) Item.NewItem(i * 16, j * 16, 32, 32, 321); if (type == 94) Item.NewItem(i * 16, j * 16, 32, 32, 352); if (type == 95) Item.NewItem(i * 16, j * 16, 32, 32, 344); if (type == 96) Item.NewItem(i * 16, j * 16, 32, 32, 345); if (type == 97) Item.NewItem(i * 16, j * 16, 32, 32, 346); if (type == 98) Item.NewItem(i * 16, j * 16, 32, 32, 347); if (type == 99) Item.NewItem(i * 16, j * 16, 32, 32, 348); if (type == 100) Item.NewItem(i * 16, j * 16, 32, 32, 349); if (type == 125) Item.NewItem(i * 16, j * 16, 32, 32, 487); if (type == 126) Item.NewItem(i * 16, j * 16, 32, 32, 488); if (type == 132) Item.NewItem(i * 16, j * 16, 32, 32, 513); if (type == 142) Item.NewItem(i * 16, j * 16, 32, 32, 581); if (type == 143) Item.NewItem(i * 16, j * 16, 32, 32, 582); if (type == 138 && !WorldGen.gen && Main.netMode != 1) Projectile.NewProjectile((float) (i1 * 16) + 15.5f, (float) (num4 * 16 + 16), 0.0f, 0.0f, 99, 70, 10f, Main.myPlayer); WorldGen.destroyObject = false; for (int i3 = i1 - 1; i3 < i1 + 3; ++i3) { for (int j2 = num4 - 1; j2 < num4 + 3; ++j2) WorldGen.TileFrame(i3, j2); } } public static void OreRunner(int i, int j, double strength, int steps, int type) { double num1 = strength; float num2 = (float) steps; Vector2 vector2_1; vector2_1.X = (float) i; vector2_1.Y = (float) j; Vector2 vector2_2; vector2_2.X = (float) WorldGen.genRand.Next(-10, 11) * 0.1f; vector2_2.Y = (float) WorldGen.genRand.Next(-10, 11) * 0.1f; while (num1 > 0.0 && (double) num2 > 0.0) { if ((double) vector2_1.Y < 0.0 && (double) num2 > 0.0 && type == 59) num2 = 0.0f; num1 = strength * ((double) num2 / (double) steps); --num2; int num3 = (int) ((double) vector2_1.X - num1 * 0.5); int num4 = (int) ((double) vector2_1.X + num1 * 0.5); int num5 = (int) ((double) vector2_1.Y - num1 * 0.5); int num6 = (int) ((double) vector2_1.Y + num1 * 0.5); if (num3 < 0) num3 = 0; if (num4 > Main.maxTilesX) num4 = Main.maxTilesX; if (num5 < 0) num5 = 0; if (num6 > Main.maxTilesY) num6 = Main.maxTilesY; for (int index1 = num3; index1 < num4; ++index1) { for (int index2 = num5; index2 < num6; ++index2) { if ((double) Math.Abs((float) index1 - vector2_1.X) + (double) Math.Abs((float) index2 - vector2_1.Y) < strength * 0.5 * (1.0 + (double) WorldGen.genRand.Next(-10, 11) * 0.015) && Main.tile[index1, index2].active && (Main.tile[index1, index2].type == (byte) 0 || Main.tile[index1, index2].type == (byte) 1 || Main.tile[index1, index2].type == (byte) 23 || Main.tile[index1, index2].type == (byte) 25 || Main.tile[index1, index2].type == (byte) 40 || Main.tile[index1, index2].type == (byte) 53 || Main.tile[index1, index2].type == (byte) 57 || Main.tile[index1, index2].type == (byte) 59 || Main.tile[index1, index2].type == (byte) 60 || Main.tile[index1, index2].type == (byte) 70 || Main.tile[index1, index2].type == (byte) 109 || Main.tile[index1, index2].type == (byte) 112 || Main.tile[index1, index2].type == (byte) 116 || Main.tile[index1, index2].type == (byte) 117)) { Main.tile[index1, index2].type = (byte) type; WorldGen.SquareTileFrame(index1, index2); if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index1, index2, 1); } } } vector2_1 += vector2_2; vector2_2.X += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; if ((double) vector2_2.X > 1.0) vector2_2.X = 1f; if ((double) vector2_2.X < -1.0) vector2_2.X = -1f; } } public static void SmashAltar(int i, int j) { if (Main.netMode == 1 || !Main.hardMode || WorldGen.noTileActions || WorldGen.gen) return; int num1 = WorldGen.altarCount % 3; int num2 = WorldGen.altarCount / 3 + 1; float num3 = (float) (Main.maxTilesX / 4200); int num4 = 1 - num1; float num5 = (num3 * 310f - (float) (85 * num1)) * 0.85f / (float) num2; int type; switch (num1) { case 0: switch (Main.netMode) { case 0: Main.NewText(Lang.misc[12], (byte) 50, B: (byte) 130); break; case 2: NetMessage.SendData(25, text: Lang.misc[12], number: ((int) byte.MaxValue), number2: 50f, number3: ((float) byte.MaxValue), number4: 130f); break; } type = 107; num5 *= 1.05f; break; case 1: switch (Main.netMode) { case 0: Main.NewText(Lang.misc[13], (byte) 50, B: (byte) 130); break; case 2: NetMessage.SendData(25, text: Lang.misc[13], number: ((int) byte.MaxValue), number2: 50f, number3: ((float) byte.MaxValue), number4: 130f); break; } type = 108; break; default: switch (Main.netMode) { case 0: Main.NewText(Lang.misc[14], (byte) 50, B: (byte) 130); break; case 2: NetMessage.SendData(25, text: Lang.misc[14], number: ((int) byte.MaxValue), number2: 50f, number3: ((float) byte.MaxValue), number4: 130f); break; } type = 111; break; } for (int index = 0; (double) index < (double) num5; ++index) { int i1 = WorldGen.genRand.Next(100, Main.maxTilesX - 100); double num6 = Main.worldSurface; if (type == 108) num6 = Main.rockLayer; if (type == 111) num6 = (Main.rockLayer + Main.rockLayer + (double) Main.maxTilesY) / 3.0; int j1 = WorldGen.genRand.Next((int) num6, Main.maxTilesY - 150); WorldGen.OreRunner(i1, j1, (double) WorldGen.genRand.Next(5, 9 + num4), WorldGen.genRand.Next(5, 9 + num4), type); } int num7 = WorldGen.genRand.Next(3); while (num7 != 2) { int tileX = WorldGen.genRand.Next(100, Main.maxTilesX - 100); int tileY = WorldGen.genRand.Next((int) Main.rockLayer + 50, Main.maxTilesY - 300); if (Main.tile[tileX, tileY].active && Main.tile[tileX, tileY].type == (byte) 1) { Main.tile[tileX, tileY].type = num7 != 0 ? (byte) 117 : (byte) 25; if (Main.netMode == 2) { NetMessage.SendTileSquare(-1, tileX, tileY, 1); break; } break; } } if (Main.netMode != 1) { int num8 = Main.rand.Next(2) + 1; for (int index = 0; index < num8; ++index) NPC.SpawnOnPlayer((int) Player.FindClosest(new Vector2((float) (i * 16), (float) (j * 16)), 16, 16), 82); } ++WorldGen.altarCount; } public static void Check3x2(int i, int j, int type) { if (WorldGen.destroyObject) return; bool flag = false; int num1 = i; int num2 = j; int num3 = num1 + (int) Main.tile[i, j].frameX / 18 * -1; int num4 = num2 + (int) Main.tile[i, j].frameY / 18 * -1; for (int index1 = num3; index1 < num3 + 3; ++index1) { for (int index2 = num4; index2 < num4 + 2; ++index2) { if (Main.tile[index1, index2] == null) Main.tile[index1, index2] = new Tile(); if (!Main.tile[index1, index2].active || (int) Main.tile[index1, index2].type != type || (int) Main.tile[index1, index2].frameX != (index1 - num3) * 18 || (int) Main.tile[index1, index2].frameY != (index2 - num4) * 18) flag = true; } if (Main.tile[index1, num4 + 2] == null) Main.tile[index1, num4 + 2] = new Tile(); if (!Main.tile[index1, num4 + 2].active || !Main.tileSolid[(int) Main.tile[index1, num4 + 2].type]) flag = true; } if (!flag) return; WorldGen.destroyObject = true; for (int i1 = num3; i1 < num3 + 3; ++i1) { for (int j1 = num4; j1 < num4 + 3; ++j1) { if ((int) Main.tile[i1, j1].type == type && Main.tile[i1, j1].active) WorldGen.KillTile(i1, j1); } } switch (type) { case 14: Item.NewItem(i * 16, j * 16, 32, 32, 32); break; case 17: Item.NewItem(i * 16, j * 16, 32, 32, 33); break; case 26: if (!WorldGen.noTileActions) { WorldGen.SmashAltar(i, j); break; } break; case 77: Item.NewItem(i * 16, j * 16, 32, 32, 221); break; case 86: Item.NewItem(i * 16, j * 16, 32, 32, 332); break; case 87: Item.NewItem(i * 16, j * 16, 32, 32, 333); break; case 88: Item.NewItem(i * 16, j * 16, 32, 32, 334); break; case 89: Item.NewItem(i * 16, j * 16, 32, 32, 335); break; case 114: Item.NewItem(i * 16, j * 16, 32, 32, 398); break; case 133: Item.NewItem(i * 16, j * 16, 32, 32, 524); break; } WorldGen.destroyObject = false; for (int i2 = num3 - 1; i2 < num3 + 4; ++i2) { for (int j2 = num4 - 1; j2 < num4 + 4; ++j2) WorldGen.TileFrame(i2, j2); } } public static void Check3x4(int i, int j, int type) { if (WorldGen.destroyObject) return; bool flag = false; int num1 = i; int num2 = j; int num3 = num1 + (int) Main.tile[i, j].frameX / 18 * -1; int num4 = num2 + (int) Main.tile[i, j].frameY / 18 * -1; for (int index1 = num3; index1 < num3 + 3; ++index1) { for (int index2 = num4; index2 < num4 + 4; ++index2) { if (Main.tile[index1, index2] == null) Main.tile[index1, index2] = new Tile(); if (!Main.tile[index1, index2].active || (int) Main.tile[index1, index2].type != type || (int) Main.tile[index1, index2].frameX != (index1 - num3) * 18 || (int) Main.tile[index1, index2].frameY != (index2 - num4) * 18) flag = true; } if (Main.tile[index1, num4 + 4] == null) Main.tile[index1, num4 + 4] = new Tile(); if (!Main.tile[index1, num4 + 4].active || !Main.tileSolid[(int) Main.tile[index1, num4 + 4].type]) flag = true; } if (!flag) return; WorldGen.destroyObject = true; for (int i1 = num3; i1 < num3 + 3; ++i1) { for (int j1 = num4; j1 < num4 + 4; ++j1) { if ((int) Main.tile[i1, j1].type == type && Main.tile[i1, j1].active) WorldGen.KillTile(i1, j1); } } switch (type) { case 101: Item.NewItem(i * 16, j * 16, 32, 32, 354); break; case 102: Item.NewItem(i * 16, j * 16, 32, 32, 355); break; } WorldGen.destroyObject = false; for (int i2 = num3 - 1; i2 < num3 + 4; ++i2) { for (int j2 = num4 - 1; j2 < num4 + 4; ++j2) WorldGen.TileFrame(i2, j2); } } public static void Place4x2(int x, int y, int type, int direction = -1) { if (x < 5 || x > Main.maxTilesX - 5 || y < 5 || y > Main.maxTilesY - 5) return; bool flag = true; for (int index1 = x - 1; index1 < x + 3; ++index1) { for (int index2 = y - 1; index2 < y + 1; ++index2) { if (Main.tile[index1, index2] == null) Main.tile[index1, index2] = new Tile(); if (Main.tile[index1, index2].active) flag = false; } if (Main.tile[index1, y + 1] == null) Main.tile[index1, y + 1] = new Tile(); if (!Main.tile[index1, y + 1].active || !Main.tileSolid[(int) Main.tile[index1, y + 1].type]) flag = false; } short num = 0; if (direction == 1) num = (short) 72; if (!flag) return; Main.tile[x - 1, y - 1].active = true; Main.tile[x - 1, y - 1].frameY = (short) 0; Main.tile[x - 1, y - 1].frameX = num; Main.tile[x - 1, y - 1].type = (byte) type; Main.tile[x, y - 1].active = true; Main.tile[x, y - 1].frameY = (short) 0; Main.tile[x, y - 1].frameX = (short) (18 + (int) num); Main.tile[x, y - 1].type = (byte) type; Main.tile[x + 1, y - 1].active = true; Main.tile[x + 1, y - 1].frameY = (short) 0; Main.tile[x + 1, y - 1].frameX = (short) (36 + (int) num); Main.tile[x + 1, y - 1].type = (byte) type; Main.tile[x + 2, y - 1].active = true; Main.tile[x + 2, y - 1].frameY = (short) 0; Main.tile[x + 2, y - 1].frameX = (short) (54 + (int) num); Main.tile[x + 2, y - 1].type = (byte) type; Main.tile[x - 1, y].active = true; Main.tile[x - 1, y].frameY = (short) 18; Main.tile[x - 1, y].frameX = num; Main.tile[x - 1, y].type = (byte) type; Main.tile[x, y].active = true; Main.tile[x, y].frameY = (short) 18; Main.tile[x, y].frameX = (short) (18 + (int) num); Main.tile[x, y].type = (byte) type; Main.tile[x + 1, y].active = true; Main.tile[x + 1, y].frameY = (short) 18; Main.tile[x + 1, y].frameX = (short) (36 + (int) num); Main.tile[x + 1, y].type = (byte) type; Main.tile[x + 2, y].active = true; Main.tile[x + 2, y].frameY = (short) 18; Main.tile[x + 2, y].frameX = (short) (54 + (int) num); Main.tile[x + 2, y].type = (byte) type; } public static void SwitchMB(int i, int j) { int num1 = (int) Main.tile[i, j].frameY / 18; while (num1 >= 2) num1 -= 2; int num2 = (int) Main.tile[i, j].frameX / 18; if (num2 >= 2) num2 -= 2; int tileX = i - num2; int tileY = j - num1; for (int index1 = tileX; index1 < tileX + 2; ++index1) { for (int index2 = tileY; index2 < tileY + 2; ++index2) { if (Main.tile[index1, index2] == null) Main.tile[index1, index2] = new Tile(); if (Main.tile[index1, index2].active && Main.tile[index1, index2].type == (byte) 139) { if (Main.tile[index1, index2].frameX < (short) 36) Main.tile[index1, index2].frameX += (short) 36; else Main.tile[index1, index2].frameX -= (short) 36; WorldGen.noWireX[WorldGen.numNoWire] = index1; WorldGen.noWireY[WorldGen.numNoWire] = index2; ++WorldGen.numNoWire; } } } NetMessage.SendTileSquare(-1, tileX, tileY, 3); } public static void CheckMB(int i, int j, int type) { if (WorldGen.destroyObject) return; bool flag = false; int num1 = 0; int num2; for (num2 = (int) Main.tile[i, j].frameY / 18; num2 >= 2; num2 -= 2) ++num1; int num3 = (int) Main.tile[i, j].frameX / 18; int num4 = 0; if (num3 >= 2) { num3 -= 2; ++num4; } int num5 = i - num3; int num6 = j - num2; for (int index1 = num5; index1 < num5 + 2; ++index1) { for (int index2 = num6; index2 < num6 + 2; ++index2) { if (Main.tile[index1, index2] == null) Main.tile[index1, index2] = new Tile(); if (!Main.tile[index1, index2].active || (int) Main.tile[index1, index2].type != type || (int) Main.tile[index1, index2].frameX != (index1 - num5) * 18 + num4 * 36 || (int) Main.tile[index1, index2].frameY != (index2 - num6) * 18 + num1 * 36) flag = true; } if (!Main.tileSolid[(int) Main.tile[index1, num6 + 2].type]) flag = true; } if (!flag) return; WorldGen.destroyObject = true; for (int i1 = num5; i1 < num5 + 2; ++i1) { for (int j1 = num6; j1 < num6 + 3; ++j1) { if ((int) Main.tile[i1, j1].type == type && Main.tile[i1, j1].active) WorldGen.KillTile(i1, j1); } } Item.NewItem(i * 16, j * 16, 32, 32, 562 + num1); for (int i2 = num5 - 1; i2 < num5 + 3; ++i2) { for (int j2 = num6 - 1; j2 < num6 + 3; ++j2) WorldGen.TileFrame(i2, j2); } WorldGen.destroyObject = false; } public static void PlaceMB(int X, int y, int type, int style) { int index1 = X + 1; if (index1 < 5 || index1 > Main.maxTilesX - 5 || y < 5 || y > Main.maxTilesY - 5) return; bool flag = true; for (int index2 = index1 - 1; index2 < index1 + 1; ++index2) { for (int index3 = y - 1; index3 < y + 1; ++index3) { if (Main.tile[index2, index3] == null) Main.tile[index2, index3] = new Tile(); if (Main.tile[index2, index3].active) flag = false; } if (Main.tile[index2, y + 1] == null) Main.tile[index2, y + 1] = new Tile(); if (!Main.tile[index2, y + 1].active || !Main.tileSolid[(int) Main.tile[index2, y + 1].type] && !Main.tileTable[(int) Main.tile[index2, y + 1].type]) flag = false; } if (!flag) return; Main.tile[index1 - 1, y - 1].active = true; Main.tile[index1 - 1, y - 1].frameY = (short) (style * 36); Main.tile[index1 - 1, y - 1].frameX = (short) 0; Main.tile[index1 - 1, y - 1].type = (byte) type; Main.tile[index1, y - 1].active = true; Main.tile[index1, y - 1].frameY = (short) (style * 36); Main.tile[index1, y - 1].frameX = (short) 18; Main.tile[index1, y - 1].type = (byte) type; Main.tile[index1 - 1, y].active = true; Main.tile[index1 - 1, y].frameY = (short) (style * 36 + 18); Main.tile[index1 - 1, y].frameX = (short) 0; Main.tile[index1 - 1, y].type = (byte) type; Main.tile[index1, y].active = true; Main.tile[index1, y].frameY = (short) (style * 36 + 18); Main.tile[index1, y].frameX = (short) 18; Main.tile[index1, y].type = (byte) type; } public static void Place2x2(int x, int superY, int type) { int index1 = superY; if (type == 95 || type == 126) ++index1; if (x < 5 || x > Main.maxTilesX - 5 || index1 < 5 || index1 > Main.maxTilesY - 5) return; bool flag = true; for (int index2 = x - 1; index2 < x + 1; ++index2) { for (int index3 = index1 - 1; index3 < index1 + 1; ++index3) { if (Main.tile[index2, index3] == null) Main.tile[index2, index3] = new Tile(); if (Main.tile[index2, index3].active) flag = false; if (type == 98 && Main.tile[index2, index3].liquid > (byte) 0) flag = false; } if (type == 95 || type == 126) { if (Main.tile[index2, index1 - 2] == null) Main.tile[index2, index1 - 2] = new Tile(); if (!Main.tile[index2, index1 - 2].active || !Main.tileSolid[(int) Main.tile[index2, index1 - 2].type] || Main.tileSolidTop[(int) Main.tile[index2, index1 - 2].type]) flag = false; } else { if (Main.tile[index2, index1 + 1] == null) Main.tile[index2, index1 + 1] = new Tile(); if (!Main.tile[index2, index1 + 1].active || !Main.tileSolid[(int) Main.tile[index2, index1 + 1].type] && !Main.tileTable[(int) Main.tile[index2, index1 + 1].type]) flag = false; } } if (!flag) return; Main.tile[x - 1, index1 - 1].active = true; Main.tile[x - 1, index1 - 1].frameY = (short) 0; Main.tile[x - 1, index1 - 1].frameX = (short) 0; Main.tile[x - 1, index1 - 1].type = (byte) type; Main.tile[x, index1 - 1].active = true; Main.tile[x, index1 - 1].frameY = (short) 0; Main.tile[x, index1 - 1].frameX = (short) 18; Main.tile[x, index1 - 1].type = (byte) type; Main.tile[x - 1, index1].active = true; Main.tile[x - 1, index1].frameY = (short) 18; Main.tile[x - 1, index1].frameX = (short) 0; Main.tile[x - 1, index1].type = (byte) type; Main.tile[x, index1].active = true; Main.tile[x, index1].frameY = (short) 18; Main.tile[x, index1].frameX = (short) 18; Main.tile[x, index1].type = (byte) type; } public static void Place3x4(int x, int y, int type) { if (x < 5 || x > Main.maxTilesX - 5 || y < 5 || y > Main.maxTilesY - 5) return; bool flag = true; for (int index1 = x - 1; index1 < x + 2; ++index1) { for (int index2 = y - 3; index2 < y + 1; ++index2) { if (Main.tile[index1, index2] == null) Main.tile[index1, index2] = new Tile(); if (Main.tile[index1, index2].active) flag = false; } if (Main.tile[index1, y + 1] == null) Main.tile[index1, y + 1] = new Tile(); if (!Main.tile[index1, y + 1].active || !Main.tileSolid[(int) Main.tile[index1, y + 1].type]) flag = false; } if (!flag) return; for (int index = -3; index <= 0; ++index) { short num = (short) ((3 + index) * 18); Main.tile[x - 1, y + index].active = true; Main.tile[x - 1, y + index].frameY = num; Main.tile[x - 1, y + index].frameX = (short) 0; Main.tile[x - 1, y + index].type = (byte) type; Main.tile[x, y + index].active = true; Main.tile[x, y + index].frameY = num; Main.tile[x, y + index].frameX = (short) 18; Main.tile[x, y + index].type = (byte) type; Main.tile[x + 1, y + index].active = true; Main.tile[x + 1, y + index].frameY = num; Main.tile[x + 1, y + index].frameX = (short) 36; Main.tile[x + 1, y + index].type = (byte) type; } } public static void Place3x2(int x, int y, int type) { if (x < 5 || x > Main.maxTilesX - 5 || y < 5 || y > Main.maxTilesY - 5) return; bool flag = true; for (int index1 = x - 1; index1 < x + 2; ++index1) { for (int index2 = y - 1; index2 < y + 1; ++index2) { if (Main.tile[index1, index2] == null) Main.tile[index1, index2] = new Tile(); if (Main.tile[index1, index2].active) flag = false; } if (Main.tile[index1, y + 1] == null) Main.tile[index1, y + 1] = new Tile(); if (!Main.tile[index1, y + 1].active || !Main.tileSolid[(int) Main.tile[index1, y + 1].type]) flag = false; } if (!flag) return; Main.tile[x - 1, y - 1].active = true; Main.tile[x - 1, y - 1].frameY = (short) 0; Main.tile[x - 1, y - 1].frameX = (short) 0; Main.tile[x - 1, y - 1].type = (byte) type; Main.tile[x, y - 1].active = true; Main.tile[x, y - 1].frameY = (short) 0; Main.tile[x, y - 1].frameX = (short) 18; Main.tile[x, y - 1].type = (byte) type; Main.tile[x + 1, y - 1].active = true; Main.tile[x + 1, y - 1].frameY = (short) 0; Main.tile[x + 1, y - 1].frameX = (short) 36; Main.tile[x + 1, y - 1].type = (byte) type; Main.tile[x - 1, y].active = true; Main.tile[x - 1, y].frameY = (short) 18; Main.tile[x - 1, y].frameX = (short) 0; Main.tile[x - 1, y].type = (byte) type; Main.tile[x, y].active = true; Main.tile[x, y].frameY = (short) 18; Main.tile[x, y].frameX = (short) 18; Main.tile[x, y].type = (byte) type; Main.tile[x + 1, y].active = true; Main.tile[x + 1, y].frameY = (short) 18; Main.tile[x + 1, y].frameX = (short) 36; Main.tile[x + 1, y].type = (byte) type; } public static void Check3x3(int i, int j, int type) { if (WorldGen.destroyObject) return; bool flag = false; int num1 = j; int num2 = (int) Main.tile[i, j].frameX / 18; int num3 = i - num2; if (num2 >= 3) num2 -= 3; int num4 = i - num2; int num5 = num1 + (int) Main.tile[i, j].frameY / 18 * -1; for (int index1 = num4; index1 < num4 + 3; ++index1) { for (int index2 = num5; index2 < num5 + 3; ++index2) { if (Main.tile[index1, index2] == null) Main.tile[index1, index2] = new Tile(); if (!Main.tile[index1, index2].active || (int) Main.tile[index1, index2].type != type || (int) Main.tile[index1, index2].frameX != (index1 - num3) * 18 || (int) Main.tile[index1, index2].frameY != (index2 - num5) * 18) flag = true; } } if (type == 106) { for (int index = num4; index < num4 + 3; ++index) { if (Main.tile[index, num5 + 3] == null) Main.tile[index, num5 + 3] = new Tile(); if (!Main.tile[index, num5 + 3].active || !Main.tileSolid[(int) Main.tile[index, num5 + 3].type]) { flag = true; break; } } } else { if (Main.tile[num4 + 1, num5 - 1] == null) Main.tile[num4 + 1, num5 - 1] = new Tile(); if (!Main.tile[num4 + 1, num5 - 1].active || !Main.tileSolid[(int) Main.tile[num4 + 1, num5 - 1].type] || Main.tileSolidTop[(int) Main.tile[num4 + 1, num5 - 1].type]) flag = true; } if (!flag) return; WorldGen.destroyObject = true; for (int i1 = num4; i1 < num4 + 3; ++i1) { for (int j1 = num5; j1 < num5 + 3; ++j1) { if ((int) Main.tile[i1, j1].type == type && Main.tile[i1, j1].active) WorldGen.KillTile(i1, j1); } } switch (type) { case 34: Item.NewItem(i * 16, j * 16, 32, 32, 106); break; case 35: Item.NewItem(i * 16, j * 16, 32, 32, 107); break; case 36: Item.NewItem(i * 16, j * 16, 32, 32, 108); break; case 106: Item.NewItem(i * 16, j * 16, 32, 32, 363); break; } WorldGen.destroyObject = false; for (int i2 = num4 - 1; i2 < num4 + 4; ++i2) { for (int j2 = num5 - 1; j2 < num5 + 4; ++j2) WorldGen.TileFrame(i2, j2); } } public static void Place3x3(int x, int y, int type) { bool flag = true; int num = 0; if (type == 106) { num = -2; for (int index1 = x - 1; index1 < x + 2; ++index1) { for (int index2 = y - 2; index2 < y + 1; ++index2) { if (Main.tile[index1, index2] == null) Main.tile[index1, index2] = new Tile(); if (Main.tile[index1, index2].active) flag = false; } } for (int index = x - 1; index < x + 2; ++index) { if (Main.tile[index, y + 1] == null) Main.tile[index, y + 1] = new Tile(); if (!Main.tile[index, y + 1].active || !Main.tileSolid[(int) Main.tile[index, y + 1].type]) { flag = false; break; } } } else { for (int index3 = x - 1; index3 < x + 2; ++index3) { for (int index4 = y; index4 < y + 3; ++index4) { if (Main.tile[index3, index4] == null) Main.tile[index3, index4] = new Tile(); if (Main.tile[index3, index4].active) flag = false; } } if (Main.tile[x, y - 1] == null) Main.tile[x, y - 1] = new Tile(); 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]) flag = false; } if (!flag) return; Main.tile[x - 1, y + num].active = true; Main.tile[x - 1, y + num].frameY = (short) 0; Main.tile[x - 1, y + num].frameX = (short) 0; Main.tile[x - 1, y + num].type = (byte) type; Main.tile[x, y + num].active = true; Main.tile[x, y + num].frameY = (short) 0; Main.tile[x, y + num].frameX = (short) 18; Main.tile[x, y + num].type = (byte) type; Main.tile[x + 1, y + num].active = true; Main.tile[x + 1, y + num].frameY = (short) 0; Main.tile[x + 1, y + num].frameX = (short) 36; Main.tile[x + 1, y + num].type = (byte) type; Main.tile[x - 1, y + 1 + num].active = true; Main.tile[x - 1, y + 1 + num].frameY = (short) 18; Main.tile[x - 1, y + 1 + num].frameX = (short) 0; Main.tile[x - 1, y + 1 + num].type = (byte) type; Main.tile[x, y + 1 + num].active = true; Main.tile[x, y + 1 + num].frameY = (short) 18; Main.tile[x, y + 1 + num].frameX = (short) 18; Main.tile[x, y + 1 + num].type = (byte) type; Main.tile[x + 1, y + 1 + num].active = true; Main.tile[x + 1, y + 1 + num].frameY = (short) 18; Main.tile[x + 1, y + 1 + num].frameX = (short) 36; Main.tile[x + 1, y + 1 + num].type = (byte) type; Main.tile[x - 1, y + 2 + num].active = true; Main.tile[x - 1, y + 2 + num].frameY = (short) 36; Main.tile[x - 1, y + 2 + num].frameX = (short) 0; Main.tile[x - 1, y + 2 + num].type = (byte) type; Main.tile[x, y + 2 + num].active = true; Main.tile[x, y + 2 + num].frameY = (short) 36; Main.tile[x, y + 2 + num].frameX = (short) 18; Main.tile[x, y + 2 + num].type = (byte) type; Main.tile[x + 1, y + 2 + num].active = true; Main.tile[x + 1, y + 2 + num].frameY = (short) 36; Main.tile[x + 1, y + 2 + num].frameX = (short) 36; Main.tile[x + 1, y + 2 + num].type = (byte) type; } public static void PlaceSunflower(int x, int y, int type = 27) { if ((double) y > Main.worldSurface - 1.0) return; bool flag = true; for (int index1 = x; index1 < x + 2; ++index1) { for (int index2 = y - 3; index2 < y + 1; ++index2) { if (Main.tile[index1, index2] == null) Main.tile[index1, index2] = new Tile(); if (Main.tile[index1, index2].active || Main.tile[index1, index2].wall > (byte) 0) flag = false; } if (Main.tile[index1, y + 1] == null) Main.tile[index1, y + 1] = new Tile(); if (!Main.tile[index1, y + 1].active || Main.tile[index1, y + 1].type != (byte) 2 && Main.tile[index1, y + 1].type != (byte) 109) flag = false; } if (!flag) return; for (int index3 = 0; index3 < 2; ++index3) { for (int index4 = -3; index4 < 1; ++index4) { int num1 = index3 * 18 + WorldGen.genRand.Next(3) * 36; int num2 = (index4 + 3) * 18; Main.tile[x + index3, y + index4].active = true; Main.tile[x + index3, y + index4].frameX = (short) num1; Main.tile[x + index3, y + index4].frameY = (short) num2; Main.tile[x + index3, y + index4].type = (byte) type; } } } public static void CheckSunflower(int i, int j, int type = 27) { if (WorldGen.destroyObject) return; bool flag = false; int num1 = 0; int num2 = j; int num3 = num1 + (int) Main.tile[i, j].frameX / 18; int num4 = num2 + (int) Main.tile[i, j].frameY / 18 * -1; while (num3 > 1) num3 -= 2; int num5 = num3 * -1 + i; for (int index1 = num5; index1 < num5 + 2; ++index1) { for (int index2 = num4; index2 < num4 + 4; ++index2) { if (Main.tile[index1, index2] == null) Main.tile[index1, index2] = new Tile(); int num6 = (int) Main.tile[index1, index2].frameX / 18; while (num6 > 1) num6 -= 2; if (!Main.tile[index1, index2].active || (int) Main.tile[index1, index2].type != type || num6 != index1 - num5 || (int) Main.tile[index1, index2].frameY != (index2 - num4) * 18) flag = true; } if (Main.tile[index1, num4 + 4] == null) Main.tile[index1, num4 + 4] = new Tile(); if (!Main.tile[index1, num4 + 4].active || Main.tile[index1, num4 + 4].type != (byte) 2 && Main.tile[index1, num4 + 4].type != (byte) 109) flag = true; } if (!flag) return; WorldGen.destroyObject = true; for (int i1 = num5; i1 < num5 + 2; ++i1) { for (int j1 = num4; j1 < num4 + 4; ++j1) { if ((int) Main.tile[i1, j1].type == type && Main.tile[i1, j1].active) WorldGen.KillTile(i1, j1); } } Item.NewItem(i * 16, j * 16, 32, 32, 63); WorldGen.destroyObject = false; } public static bool PlacePot(int x, int y, int type = 28) { bool flag = true; for (int index1 = x; index1 < x + 2; ++index1) { for (int index2 = y - 1; index2 < y + 1; ++index2) { if (Main.tile[index1, index2] == null) Main.tile[index1, index2] = new Tile(); if (Main.tile[index1, index2].active) flag = false; } if (Main.tile[index1, y + 1] == null) Main.tile[index1, y + 1] = new Tile(); if (!Main.tile[index1, y + 1].active || !Main.tileSolid[(int) Main.tile[index1, y + 1].type]) flag = false; } if (!flag) return false; for (int index3 = 0; index3 < 2; ++index3) { for (int index4 = -1; index4 < 1; ++index4) { int num1 = index3 * 18 + WorldGen.genRand.Next(3) * 36; int num2 = (index4 + 1) * 18; Main.tile[x + index3, y + index4].active = true; Main.tile[x + index3, y + index4].frameX = (short) num1; Main.tile[x + index3, y + index4].frameY = (short) num2; Main.tile[x + index3, y + index4].type = (byte) type; } } return true; } public static bool CheckCactus(int i, int j) { int index1 = j; int index2 = i; while (Main.tile[index2, index1].active && Main.tile[index2, index1].type == (byte) 80) { ++index1; if (!Main.tile[index2, index1].active || Main.tile[index2, index1].type != (byte) 80) { if (Main.tile[index2 - 1, index1].active && Main.tile[index2 - 1, index1].type == (byte) 80 && Main.tile[index2 - 1, index1 - 1].active && Main.tile[index2 - 1, index1 - 1].type == (byte) 80 && index2 >= i) --index2; if (Main.tile[index2 + 1, index1].active && Main.tile[index2 + 1, index1].type == (byte) 80 && Main.tile[index2 + 1, index1 - 1].active && Main.tile[index2 + 1, index1 - 1].type == (byte) 80 && index2 <= i) ++index2; } } if (!Main.tile[index2, index1].active || Main.tile[index2, index1].type != (byte) 53 && Main.tile[index2, index1].type != (byte) 112 && Main.tile[index2, index1].type != (byte) 116) { WorldGen.KillTile(i, j); return true; } if (i != index2) { if ((!Main.tile[i, j + 1].active || Main.tile[i, j + 1].type != (byte) 80) && (!Main.tile[i - 1, j].active || Main.tile[i - 1, j].type != (byte) 80) && (!Main.tile[i + 1, j].active || Main.tile[i + 1, j].type != (byte) 80)) { WorldGen.KillTile(i, j); return true; } } else if (i == index2 && (!Main.tile[i, j + 1].active || Main.tile[i, j + 1].type != (byte) 80 && Main.tile[i, j + 1].type != (byte) 53 && Main.tile[i, j + 1].type != (byte) 112 && Main.tile[i, j + 1].type != (byte) 116)) { WorldGen.KillTile(i, j); return true; } return false; } public static void PlantCactus(int i, int j) { WorldGen.GrowCactus(i, j); for (int index = 0; index < 150; ++index) WorldGen.GrowCactus(WorldGen.genRand.Next(i - 1, i + 2), WorldGen.genRand.Next(j - 10, j + 2)); } public static void CheckOrb(int i, int j, int type) { if (WorldGen.destroyObject) return; int i1 = Main.tile[i, j].frameX != (short) 0 ? i - 1 : i; int j1 = Main.tile[i, j].frameY != (short) 0 ? j - 1 : j; if (Main.tile[i1, j1] == null || Main.tile[i1 + 1, j1] == null || Main.tile[i1, j1 + 1] == null || Main.tile[i1 + 1, j1 + 1] == null || Main.tile[i1, j1].active && (int) Main.tile[i1, j1].type == type && Main.tile[i1 + 1, j1].active && (int) Main.tile[i1 + 1, j1].type == type && Main.tile[i1, j1 + 1].active && (int) Main.tile[i1, j1 + 1].type == type && Main.tile[i1 + 1, j1 + 1].active && (int) Main.tile[i1 + 1, j1 + 1].type == type) return; WorldGen.destroyObject = true; if ((int) Main.tile[i1, j1].type == type) WorldGen.KillTile(i1, j1); if ((int) Main.tile[i1 + 1, j1].type == type) WorldGen.KillTile(i1 + 1, j1); if ((int) Main.tile[i1, j1 + 1].type == type) WorldGen.KillTile(i1, j1 + 1); if ((int) Main.tile[i1 + 1, j1 + 1].type == type) WorldGen.KillTile(i1 + 1, j1 + 1); if (Main.netMode != 1 && !WorldGen.noTileActions) { switch (type) { case 12: Item.NewItem(i1 * 16, j1 * 16, 32, 32, 29); break; case 31: if (WorldGen.genRand.Next(2) == 0) WorldGen.spawnMeteor = true; int num1 = Main.rand.Next(5); if (!WorldGen.shadowOrbSmashed) num1 = 0; switch (num1) { case 0: Item.NewItem(i1 * 16, j1 * 16, 32, 32, 96, pfix: -1); int Stack = WorldGen.genRand.Next(25, 51); Item.NewItem(i1 * 16, j1 * 16, 32, 32, 97, Stack); break; case 1: Item.NewItem(i1 * 16, j1 * 16, 32, 32, 64, pfix: -1); break; case 2: Item.NewItem(i1 * 16, j1 * 16, 32, 32, 162, pfix: -1); break; case 3: Item.NewItem(i1 * 16, j1 * 16, 32, 32, 115, pfix: -1); break; case 4: Item.NewItem(i1 * 16, j1 * 16, 32, 32, 111, pfix: -1); break; } WorldGen.shadowOrbSmashed = true; ++WorldGen.shadowOrbCount; if (WorldGen.shadowOrbCount >= 3) { WorldGen.shadowOrbCount = 0; float num2 = (float) (i1 * 16); float num3 = (float) (j1 * 16); float num4 = -1f; int plr = 0; for (int index = 0; index < (int) byte.MaxValue; ++index) { float num5 = Math.Abs(Main.player[index].position.X - num2) + Math.Abs(Main.player[index].position.Y - num3); if ((double) num5 < (double) num4 || (double) num4 == -1.0) { plr = index; num4 = num5; } } NPC.SpawnOnPlayer(plr, 13); break; } string str = Lang.misc[10]; if (WorldGen.shadowOrbCount == 2) str = Lang.misc[11]; switch (Main.netMode) { case 0: Main.NewText(str, (byte) 50, B: (byte) 130); break; case 2: NetMessage.SendData(25, text: str, number: ((int) byte.MaxValue), number2: 50f, number3: ((float) byte.MaxValue), number4: 130f); break; } break; } } Main.PlaySound(13, i * 16, j * 16); WorldGen.destroyObject = false; } public static void CheckTree(int i, int j) { int index1 = -1; int index2 = -1; int index3 = -1; int index4 = -1; int index5 = -1; int index6 = -1; int index7 = -1; int index8 = -1; int type = (int) Main.tile[i, j].type; int frameX = (int) Main.tile[i, j].frameX; int frameY = (int) Main.tile[i, j].frameY; if (Main.tile[i - 1, j] != null && Main.tile[i - 1, j].active) index4 = (int) Main.tile[i - 1, j].type; if (Main.tile[i + 1, j] != null && Main.tile[i + 1, j].active) index5 = (int) Main.tile[i + 1, j].type; if (Main.tile[i, j - 1] != null && Main.tile[i, j - 1].active) index2 = (int) Main.tile[i, j - 1].type; if (Main.tile[i, j + 1] != null && Main.tile[i, j + 1].active) index7 = (int) Main.tile[i, j + 1].type; if (Main.tile[i - 1, j - 1] != null && Main.tile[i - 1, j - 1].active) index1 = (int) Main.tile[i - 1, j - 1].type; if (Main.tile[i + 1, j - 1] != null && Main.tile[i + 1, j - 1].active) index3 = (int) Main.tile[i + 1, j - 1].type; if (Main.tile[i - 1, j + 1] != null && Main.tile[i - 1, j + 1].active) index6 = (int) Main.tile[i - 1, j + 1].type; if (Main.tile[i + 1, j + 1] != null && Main.tile[i + 1, j + 1].active) index8 = (int) Main.tile[i + 1, j + 1].type; if (index4 >= 0 && Main.tileStone[index4]) index4 = 1; if (index5 >= 0 && Main.tileStone[index5]) index5 = 1; if (index2 >= 0 && Main.tileStone[index2]) index2 = 1; if (index7 >= 0 && Main.tileStone[index7]) index7 = 1; if (index1 >= 0 && Main.tileStone[index1]) ; if (index3 >= 0 && Main.tileStone[index3]) ; if (index6 >= 0 && Main.tileStone[index6]) ; if (index8 >= 0 && Main.tileStone[index8]) ; if (index7 == 23) index7 = 2; if (index7 == 60) index7 = 2; if (index7 == 109) index7 = 2; if (index7 == 147) index7 = 2; if (Main.tile[i, j].frameX >= (short) 22 && Main.tile[i, j].frameX <= (short) 44 && Main.tile[i, j].frameY >= (short) 132 && Main.tile[i, j].frameY <= (short) 176) { if (index7 != 2) WorldGen.KillTile(i, j); else if ((Main.tile[i, j].frameX != (short) 22 || index4 != type) && (Main.tile[i, j].frameX != (short) 44 || index5 != type)) WorldGen.KillTile(i, j); } else if (Main.tile[i, j].frameX == (short) 88 && Main.tile[i, j].frameY >= (short) 0 && Main.tile[i, j].frameY <= (short) 44 || Main.tile[i, j].frameX == (short) 66 && Main.tile[i, j].frameY >= (short) 66 && Main.tile[i, j].frameY <= (short) 130 || Main.tile[i, j].frameX == (short) 110 && Main.tile[i, j].frameY >= (short) 66 && Main.tile[i, j].frameY <= (short) 110 || Main.tile[i, j].frameX == (short) 132 && Main.tile[i, j].frameY >= (short) 0 && Main.tile[i, j].frameY <= (short) 176) { if (index4 == type && index5 == type) { if (Main.tile[i, j].frameNumber == (byte) 0) { Main.tile[i, j].frameX = (short) 110; Main.tile[i, j].frameY = (short) 66; } if (Main.tile[i, j].frameNumber == (byte) 1) { Main.tile[i, j].frameX = (short) 110; Main.tile[i, j].frameY = (short) 88; } if (Main.tile[i, j].frameNumber == (byte) 2) { Main.tile[i, j].frameX = (short) 110; Main.tile[i, j].frameY = (short) 110; } } else if (index4 == type) { if (Main.tile[i, j].frameNumber == (byte) 0) { Main.tile[i, j].frameX = (short) 88; Main.tile[i, j].frameY = (short) 0; } if (Main.tile[i, j].frameNumber == (byte) 1) { Main.tile[i, j].frameX = (short) 88; Main.tile[i, j].frameY = (short) 22; } if (Main.tile[i, j].frameNumber == (byte) 2) { Main.tile[i, j].frameX = (short) 88; Main.tile[i, j].frameY = (short) 44; } } else if (index5 == type) { if (Main.tile[i, j].frameNumber == (byte) 0) { Main.tile[i, j].frameX = (short) 66; Main.tile[i, j].frameY = (short) 66; } if (Main.tile[i, j].frameNumber == (byte) 1) { Main.tile[i, j].frameX = (short) 66; Main.tile[i, j].frameY = (short) 88; } if (Main.tile[i, j].frameNumber == (byte) 2) { Main.tile[i, j].frameX = (short) 66; Main.tile[i, j].frameY = (short) 110; } } else { if (Main.tile[i, j].frameNumber == (byte) 0) { Main.tile[i, j].frameX = (short) 0; Main.tile[i, j].frameY = (short) 0; } if (Main.tile[i, j].frameNumber == (byte) 1) { Main.tile[i, j].frameX = (short) 0; Main.tile[i, j].frameY = (short) 22; } if (Main.tile[i, j].frameNumber == (byte) 2) { Main.tile[i, j].frameX = (short) 0; Main.tile[i, j].frameY = (short) 44; } } } if (Main.tile[i, j].frameY >= (short) 132 && Main.tile[i, j].frameY <= (short) 176 && (Main.tile[i, j].frameX == (short) 0 || Main.tile[i, j].frameX == (short) 66 || Main.tile[i, j].frameX == (short) 88)) { if (index7 != 2) WorldGen.KillTile(i, j); if (index4 != type && index5 != type) { if (Main.tile[i, j].frameNumber == (byte) 0) { Main.tile[i, j].frameX = (short) 0; Main.tile[i, j].frameY = (short) 0; } if (Main.tile[i, j].frameNumber == (byte) 1) { Main.tile[i, j].frameX = (short) 0; Main.tile[i, j].frameY = (short) 22; } if (Main.tile[i, j].frameNumber == (byte) 2) { Main.tile[i, j].frameX = (short) 0; Main.tile[i, j].frameY = (short) 44; } } else if (index4 != type) { if (Main.tile[i, j].frameNumber == (byte) 0) { Main.tile[i, j].frameX = (short) 0; Main.tile[i, j].frameY = (short) 132; } if (Main.tile[i, j].frameNumber == (byte) 1) { Main.tile[i, j].frameX = (short) 0; Main.tile[i, j].frameY = (short) 154; } if (Main.tile[i, j].frameNumber == (byte) 2) { Main.tile[i, j].frameX = (short) 0; Main.tile[i, j].frameY = (short) 176; } } else if (index5 != type) { if (Main.tile[i, j].frameNumber == (byte) 0) { Main.tile[i, j].frameX = (short) 66; Main.tile[i, j].frameY = (short) 132; } if (Main.tile[i, j].frameNumber == (byte) 1) { Main.tile[i, j].frameX = (short) 66; Main.tile[i, j].frameY = (short) 154; } if (Main.tile[i, j].frameNumber == (byte) 2) { Main.tile[i, j].frameX = (short) 66; Main.tile[i, j].frameY = (short) 176; } } else { if (Main.tile[i, j].frameNumber == (byte) 0) { Main.tile[i, j].frameX = (short) 88; Main.tile[i, j].frameY = (short) 132; } if (Main.tile[i, j].frameNumber == (byte) 1) { Main.tile[i, j].frameX = (short) 88; Main.tile[i, j].frameY = (short) 154; } if (Main.tile[i, j].frameNumber == (byte) 2) { Main.tile[i, j].frameX = (short) 88; Main.tile[i, j].frameY = (short) 176; } } } if (Main.tile[i, j].frameX == (short) 66 && (Main.tile[i, j].frameY == (short) 0 || Main.tile[i, j].frameY == (short) 22 || Main.tile[i, j].frameY == (short) 44) || Main.tile[i, j].frameX == (short) 44 && (Main.tile[i, j].frameY == (short) 198 || Main.tile[i, j].frameY == (short) 220 || Main.tile[i, j].frameY == (short) 242)) { if (index5 != type) WorldGen.KillTile(i, j); } else if (Main.tile[i, j].frameX == (short) 88 && (Main.tile[i, j].frameY == (short) 66 || Main.tile[i, j].frameY == (short) 88 || Main.tile[i, j].frameY == (short) 110) || Main.tile[i, j].frameX == (short) 66 && (Main.tile[i, j].frameY == (short) 198 || Main.tile[i, j].frameY == (short) 220 || Main.tile[i, j].frameY == (short) 242)) { if (index4 != type) WorldGen.KillTile(i, j); } else if (index7 == -1 || index7 == 23) WorldGen.KillTile(i, j); else if (index2 != type && Main.tile[i, j].frameY < (short) 198 && (Main.tile[i, j].frameX != (short) 22 && Main.tile[i, j].frameX != (short) 44 || Main.tile[i, j].frameY < (short) 132)) { if (index4 == type || index5 == type) { if (index7 == type) { if (index4 == type && index5 == type) { if (Main.tile[i, j].frameNumber == (byte) 0) { Main.tile[i, j].frameX = (short) 132; Main.tile[i, j].frameY = (short) 132; } if (Main.tile[i, j].frameNumber == (byte) 1) { Main.tile[i, j].frameX = (short) 132; Main.tile[i, j].frameY = (short) 154; } if (Main.tile[i, j].frameNumber == (byte) 2) { Main.tile[i, j].frameX = (short) 132; Main.tile[i, j].frameY = (short) 176; } } else if (index4 == type) { if (Main.tile[i, j].frameNumber == (byte) 0) { Main.tile[i, j].frameX = (short) 132; Main.tile[i, j].frameY = (short) 0; } if (Main.tile[i, j].frameNumber == (byte) 1) { Main.tile[i, j].frameX = (short) 132; Main.tile[i, j].frameY = (short) 22; } if (Main.tile[i, j].frameNumber == (byte) 2) { Main.tile[i, j].frameX = (short) 132; Main.tile[i, j].frameY = (short) 44; } } else if (index5 == type) { if (Main.tile[i, j].frameNumber == (byte) 0) { Main.tile[i, j].frameX = (short) 132; Main.tile[i, j].frameY = (short) 66; } if (Main.tile[i, j].frameNumber == (byte) 1) { Main.tile[i, j].frameX = (short) 132; Main.tile[i, j].frameY = (short) 88; } if (Main.tile[i, j].frameNumber == (byte) 2) { Main.tile[i, j].frameX = (short) 132; Main.tile[i, j].frameY = (short) 110; } } } else if (index4 == type && index5 == type) { if (Main.tile[i, j].frameNumber == (byte) 0) { Main.tile[i, j].frameX = (short) 154; Main.tile[i, j].frameY = (short) 132; } if (Main.tile[i, j].frameNumber == (byte) 1) { Main.tile[i, j].frameX = (short) 154; Main.tile[i, j].frameY = (short) 154; } if (Main.tile[i, j].frameNumber == (byte) 2) { Main.tile[i, j].frameX = (short) 154; Main.tile[i, j].frameY = (short) 176; } } else if (index4 == type) { if (Main.tile[i, j].frameNumber == (byte) 0) { Main.tile[i, j].frameX = (short) 154; Main.tile[i, j].frameY = (short) 0; } if (Main.tile[i, j].frameNumber == (byte) 1) { Main.tile[i, j].frameX = (short) 154; Main.tile[i, j].frameY = (short) 22; } if (Main.tile[i, j].frameNumber == (byte) 2) { Main.tile[i, j].frameX = (short) 154; Main.tile[i, j].frameY = (short) 44; } } else if (index5 == type) { if (Main.tile[i, j].frameNumber == (byte) 0) { Main.tile[i, j].frameX = (short) 154; Main.tile[i, j].frameY = (short) 66; } if (Main.tile[i, j].frameNumber == (byte) 1) { Main.tile[i, j].frameX = (short) 154; Main.tile[i, j].frameY = (short) 88; } if (Main.tile[i, j].frameNumber == (byte) 2) { Main.tile[i, j].frameX = (short) 154; Main.tile[i, j].frameY = (short) 110; } } } else { if (Main.tile[i, j].frameNumber == (byte) 0) { Main.tile[i, j].frameX = (short) 110; Main.tile[i, j].frameY = (short) 0; } if (Main.tile[i, j].frameNumber == (byte) 1) { Main.tile[i, j].frameX = (short) 110; Main.tile[i, j].frameY = (short) 22; } if (Main.tile[i, j].frameNumber == (byte) 2) { Main.tile[i, j].frameX = (short) 110; Main.tile[i, j].frameY = (short) 44; } } } if ((int) Main.tile[i, j].frameX == frameX || (int) Main.tile[i, j].frameY == frameY || frameX < 0 || frameY < 0) return; WorldGen.TileFrame(i - 1, j); WorldGen.TileFrame(i + 1, j); WorldGen.TileFrame(i, j - 1); WorldGen.TileFrame(i, j + 1); } public static void CactusFrame(int i, int j) { try { int index1 = j; int index2 = i; if (WorldGen.CheckCactus(i, j)) return; while (Main.tile[index2, index1].active && Main.tile[index2, index1].type == (byte) 80) { ++index1; if (!Main.tile[index2, index1].active || Main.tile[index2, index1].type != (byte) 80) { if (Main.tile[index2 - 1, index1].active && Main.tile[index2 - 1, index1].type == (byte) 80 && Main.tile[index2 - 1, index1 - 1].active && Main.tile[index2 - 1, index1 - 1].type == (byte) 80 && index2 >= i) --index2; if (Main.tile[index2 + 1, index1].active && Main.tile[index2 + 1, index1].type == (byte) 80 && Main.tile[index2 + 1, index1 - 1].active && Main.tile[index2 + 1, index1 - 1].type == (byte) 80 && index2 <= i) ++index2; } } int num1 = index1 - 1; int num2 = i - index2; num1 = j; int type = (int) Main.tile[i - 2, j].type; int num3 = (int) Main.tile[i - 1, j].type; int num4 = (int) Main.tile[i + 1, j].type; int num5 = (int) Main.tile[i, j - 1].type; int index3 = (int) Main.tile[i, j + 1].type; int num6 = (int) Main.tile[i - 1, j + 1].type; int num7 = (int) Main.tile[i + 1, j + 1].type; if (!Main.tile[i - 1, j].active) num3 = -1; if (!Main.tile[i + 1, j].active) num4 = -1; if (!Main.tile[i, j - 1].active) num5 = -1; if (!Main.tile[i, j + 1].active) index3 = -1; if (!Main.tile[i - 1, j + 1].active) num6 = -1; if (!Main.tile[i + 1, j + 1].active) num7 = -1; short num8 = Main.tile[i, j].frameX; short num9 = Main.tile[i, j].frameY; switch (num2) { case -1: if (num4 == 80) { if (num5 != 80 && index3 != 80) { num8 = (short) 108; num9 = (short) 36; break; } if (index3 != 80) { num8 = (short) 54; num9 = (short) 36; break; } if (num5 != 80) { num8 = (short) 54; num9 = (short) 0; break; } num8 = (short) 54; num9 = (short) 18; break; } if (num5 != 80) { num8 = (short) 54; num9 = (short) 0; break; } num8 = (short) 54; num9 = (short) 18; break; case 0: if (num5 != 80) { if (num3 == 80 && num4 == 80 && num6 != 80 && num7 != 80 && type != 80) { num8 = (short) 90; num9 = (short) 0; break; } if (num3 == 80 && num6 != 80 && type != 80) { num8 = (short) 72; num9 = (short) 0; break; } if (num4 == 80 && num7 != 80) { num8 = (short) 18; num9 = (short) 0; break; } num8 = (short) 0; num9 = (short) 0; break; } if (num3 == 80 && num4 == 80 && num6 != 80 && num7 != 80 && type != 80) { num8 = (short) 90; num9 = (short) 36; break; } if (num3 == 80 && num6 != 80 && type != 80) { num8 = (short) 72; num9 = (short) 36; break; } if (num4 == 80 && num7 != 80) { num8 = (short) 18; num9 = (short) 36; break; } if (index3 >= 0 && Main.tileSolid[index3]) { num8 = (short) 0; num9 = (short) 36; break; } num8 = (short) 0; num9 = (short) 18; break; case 1: if (num3 == 80) { if (num5 != 80 && index3 != 80) { num8 = (short) 108; num9 = (short) 16; break; } if (index3 != 80) { num8 = (short) 36; num9 = (short) 36; break; } if (num5 != 80) { num8 = (short) 36; num9 = (short) 0; break; } num8 = (short) 36; num9 = (short) 18; break; } if (num5 != 80) { num8 = (short) 36; num9 = (short) 0; break; } num8 = (short) 36; num9 = (short) 18; break; } if ((int) num8 == (int) Main.tile[i, j].frameX && (int) num9 == (int) Main.tile[i, j].frameY) return; Main.tile[i, j].frameX = num8; Main.tile[i, j].frameY = num9; WorldGen.SquareTileFrame(i, j); } catch { Main.tile[i, j].frameX = (short) 0; Main.tile[i, j].frameY = (short) 0; } } public static void GrowCactus(int i, int j) { int index1 = j; int i1 = i; if (!Main.tile[i, j].active || Main.tile[i, j - 1].liquid > (byte) 0 || Main.tile[i, j].type != (byte) 53 && Main.tile[i, j].type != (byte) 80 && Main.tile[i, j].type != (byte) 112 && Main.tile[i, j].type != (byte) 116) return; if (Main.tile[i, j].type == (byte) 53 || Main.tile[i, j].type == (byte) 112 || Main.tile[i, j].type == (byte) 116) { if (Main.tile[i, j - 1].active || Main.tile[i - 1, j - 1].active || Main.tile[i + 1, j - 1].active) return; int num1 = 0; int num2 = 0; for (int index2 = i - 6; index2 <= i + 6; ++index2) { for (int index3 = j - 3; index3 <= j + 1; ++index3) { try { if (Main.tile[index2, index3].active) { if (Main.tile[index2, index3].type == (byte) 80) { ++num1; if (num1 >= 4) return; } if (Main.tile[index2, index3].type != (byte) 53 && Main.tile[index2, index3].type != (byte) 112) { if (Main.tile[index2, index3].type != (byte) 116) continue; } ++num2; } } catch { } } } if (num2 <= 10) return; Main.tile[i, j - 1].active = true; Main.tile[i, j - 1].type = (byte) 80; if (Main.netMode == 2) NetMessage.SendTileSquare(-1, i, j - 1, 1); WorldGen.SquareTileFrame(i1, index1 - 1); } else { if (Main.tile[i, j].type != (byte) 80) return; while (Main.tile[i1, index1].active && Main.tile[i1, index1].type == (byte) 80) { ++index1; if (!Main.tile[i1, index1].active || Main.tile[i1, index1].type != (byte) 80) { if (Main.tile[i1 - 1, index1].active && Main.tile[i1 - 1, index1].type == (byte) 80 && Main.tile[i1 - 1, index1 - 1].active && Main.tile[i1 - 1, index1 - 1].type == (byte) 80 && i1 >= i) --i1; if (Main.tile[i1 + 1, index1].active && Main.tile[i1 + 1, index1].type == (byte) 80 && Main.tile[i1 + 1, index1 - 1].active && Main.tile[i1 + 1, index1 - 1].type == (byte) 80 && i1 <= i) ++i1; } } int num3 = index1 - 1 - j; int num4 = i - i1; int num5 = i - num4; int num6 = j; int num7 = 11 - num3; int num8 = 0; for (int index4 = num5 - 2; index4 <= num5 + 2; ++index4) { for (int index5 = num6 - num7; index5 <= num6 + num3; ++index5) { if (Main.tile[index4, index5].active && Main.tile[index4, index5].type == (byte) 80) ++num8; } } if (num8 >= WorldGen.genRand.Next(11, 13)) return; int index6 = i; int index7 = j; if (num4 == 0) { if (num3 == 0) { if (Main.tile[index6, index7 - 1].active) return; Main.tile[index6, index7 - 1].active = true; Main.tile[index6, index7 - 1].type = (byte) 80; WorldGen.SquareTileFrame(index6, index7 - 1); if (Main.netMode != 2) return; NetMessage.SendTileSquare(-1, index6, index7 - 1, 1); } else { bool flag1 = false; bool flag2 = false; if (Main.tile[index6, index7 - 1].active && Main.tile[index6, index7 - 1].type == (byte) 80) { if (!Main.tile[index6 - 1, index7].active && !Main.tile[index6 - 2, index7 + 1].active && !Main.tile[index6 - 1, index7 - 1].active && !Main.tile[index6 - 1, index7 + 1].active && !Main.tile[index6 - 2, index7].active) flag1 = true; if (!Main.tile[index6 + 1, index7].active && !Main.tile[index6 + 2, index7 + 1].active && !Main.tile[index6 + 1, index7 - 1].active && !Main.tile[index6 + 1, index7 + 1].active && !Main.tile[index6 + 2, index7].active) flag2 = true; } int num9 = WorldGen.genRand.Next(3); if (num9 == 0 && flag1) { Main.tile[index6 - 1, index7].active = true; Main.tile[index6 - 1, index7].type = (byte) 80; WorldGen.SquareTileFrame(index6 - 1, index7); if (Main.netMode != 2) return; NetMessage.SendTileSquare(-1, index6 - 1, index7, 1); } else if (num9 == 1 && flag2) { Main.tile[index6 + 1, index7].active = true; Main.tile[index6 + 1, index7].type = (byte) 80; WorldGen.SquareTileFrame(index6 + 1, index7); if (Main.netMode != 2) return; NetMessage.SendTileSquare(-1, index6 + 1, index7, 1); } else { if (num3 >= WorldGen.genRand.Next(2, 8)) return; if (Main.tile[index6 - 1, index7 - 1].active) { int type = (int) Main.tile[index6 - 1, index7 - 1].type; } if (Main.tile[index6 + 1, index7 - 1].active && Main.tile[index6 + 1, index7 - 1].type == (byte) 80 || Main.tile[index6, index7 - 1].active) return; Main.tile[index6, index7 - 1].active = true; Main.tile[index6, index7 - 1].type = (byte) 80; WorldGen.SquareTileFrame(index6, index7 - 1); if (Main.netMode != 2) return; NetMessage.SendTileSquare(-1, index6, index7 - 1, 1); } } } else { if (Main.tile[index6, index7 - 1].active || Main.tile[index6, index7 - 2].active || Main.tile[index6 + num4, index7 - 1].active || !Main.tile[index6 - num4, index7 - 1].active || Main.tile[index6 - num4, index7 - 1].type != (byte) 80) return; Main.tile[index6, index7 - 1].active = true; Main.tile[index6, index7 - 1].type = (byte) 80; WorldGen.SquareTileFrame(index6, index7 - 1); if (Main.netMode != 2) return; NetMessage.SendTileSquare(-1, index6, index7 - 1, 1); } } } public static void CheckPot(int i, int j, int type = 28) { if (WorldGen.destroyObject) return; bool flag = false; int num1 = 0; int num2 = j; int num3 = num1 + (int) Main.tile[i, j].frameX / 18; int index1 = num2 + (int) Main.tile[i, j].frameY / 18 * -1; while (num3 > 1) num3 -= 2; int index2 = num3 * -1 + i; for (int index3 = index2; index3 < index2 + 2; ++index3) { for (int index4 = index1; index4 < index1 + 2; ++index4) { if (Main.tile[index3, index4] == null) Main.tile[index3, index4] = new Tile(); int num4 = (int) Main.tile[index3, index4].frameX / 18; while (num4 > 1) num4 -= 2; if (!Main.tile[index3, index4].active || (int) Main.tile[index3, index4].type != type || num4 != index3 - index2 || (int) Main.tile[index3, index4].frameY != (index4 - index1) * 18) flag = true; } if (Main.tile[index3, index1 + 2] == null) Main.tile[index3, index1 + 2] = new Tile(); if (!Main.tile[index3, index1 + 2].active || !Main.tileSolid[(int) Main.tile[index3, index1 + 2].type]) flag = true; } if (!flag) return; WorldGen.destroyObject = true; Main.PlaySound(13, i * 16, j * 16); for (int i1 = index2; i1 < index2 + 2; ++i1) { for (int j1 = index1; j1 < index1 + 2; ++j1) { if ((int) Main.tile[i1, j1].type == type && Main.tile[i1, j1].active) WorldGen.KillTile(i1, j1); } } Gore.NewGore(new Vector2((float) (i * 16), (float) (j * 16)), new Vector2(), 51); Gore.NewGore(new Vector2((float) (i * 16), (float) (j * 16)), new Vector2(), 52); Gore.NewGore(new Vector2((float) (i * 16), (float) (j * 16)), new Vector2(), 53); if (WorldGen.genRand.Next(40) == 0 && (Main.tile[index2, index1].wall == (byte) 7 || Main.tile[index2, index1].wall == (byte) 8 || Main.tile[index2, index1].wall == (byte) 9)) Item.NewItem(i * 16, j * 16, 16, 16, 327); else if (WorldGen.genRand.Next(45) == 0) { if ((double) j < Main.worldSurface) { int num5 = WorldGen.genRand.Next(4); if (num5 == 0) Item.NewItem(i * 16, j * 16, 16, 16, 292); if (num5 == 1) Item.NewItem(i * 16, j * 16, 16, 16, 298); if (num5 == 2) Item.NewItem(i * 16, j * 16, 16, 16, 299); if (num5 == 3) Item.NewItem(i * 16, j * 16, 16, 16, 290); } else if ((double) j < Main.rockLayer) { int num6 = WorldGen.genRand.Next(7); if (num6 == 0) Item.NewItem(i * 16, j * 16, 16, 16, 289); if (num6 == 1) Item.NewItem(i * 16, j * 16, 16, 16, 298); if (num6 == 2) Item.NewItem(i * 16, j * 16, 16, 16, 299); if (num6 == 3) Item.NewItem(i * 16, j * 16, 16, 16, 290); if (num6 == 4) Item.NewItem(i * 16, j * 16, 16, 16, 303); if (num6 == 5) Item.NewItem(i * 16, j * 16, 16, 16, 291); if (num6 == 6) Item.NewItem(i * 16, j * 16, 16, 16, 304); } else if (j < Main.maxTilesY - 200) { int num7 = WorldGen.genRand.Next(10); if (num7 == 0) Item.NewItem(i * 16, j * 16, 16, 16, 296); if (num7 == 1) Item.NewItem(i * 16, j * 16, 16, 16, 295); if (num7 == 2) Item.NewItem(i * 16, j * 16, 16, 16, 299); if (num7 == 3) Item.NewItem(i * 16, j * 16, 16, 16, 302); if (num7 == 4) Item.NewItem(i * 16, j * 16, 16, 16, 303); if (num7 == 5) Item.NewItem(i * 16, j * 16, 16, 16, 305); if (num7 == 6) Item.NewItem(i * 16, j * 16, 16, 16, 301); if (num7 == 7) Item.NewItem(i * 16, j * 16, 16, 16, 302); if (num7 == 8) Item.NewItem(i * 16, j * 16, 16, 16, 297); if (num7 == 9) Item.NewItem(i * 16, j * 16, 16, 16, 304); } else { int num8 = WorldGen.genRand.Next(12); if (num8 == 0) Item.NewItem(i * 16, j * 16, 16, 16, 296); if (num8 == 1) Item.NewItem(i * 16, j * 16, 16, 16, 295); if (num8 == 2) Item.NewItem(i * 16, j * 16, 16, 16, 293); if (num8 == 3) Item.NewItem(i * 16, j * 16, 16, 16, 288); if (num8 == 4) Item.NewItem(i * 16, j * 16, 16, 16, 294); if (num8 == 5) Item.NewItem(i * 16, j * 16, 16, 16, 297); if (num8 == 6) Item.NewItem(i * 16, j * 16, 16, 16, 304); if (num8 == 7) Item.NewItem(i * 16, j * 16, 16, 16, 305); if (num8 == 8) Item.NewItem(i * 16, j * 16, 16, 16, 301); if (num8 == 9) Item.NewItem(i * 16, j * 16, 16, 16, 302); if (num8 == 10) Item.NewItem(i * 16, j * 16, 16, 16, 288); if (num8 == 11) Item.NewItem(i * 16, j * 16, 16, 16, 300); } } else { int num9 = Main.rand.Next(8); if (num9 == 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) Item.NewItem(i * 16, j * 16, 16, 16, 58); else if (num9 == 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) { Item.NewItem(i * 16, j * 16, 16, 16, 184); } else { switch (num9) { case 2: int Stack1 = Main.rand.Next(1, 6); if (Main.tile[i, j].liquid > (byte) 0) { Item.NewItem(i * 16, j * 16, 16, 16, 282, Stack1); break; } Item.NewItem(i * 16, j * 16, 16, 16, 8, Stack1); break; case 3: int Stack2 = Main.rand.Next(8) + 3; int Type1 = 40; if ((double) j < Main.rockLayer && WorldGen.genRand.Next(2) == 0) Type1 = !Main.hardMode ? 42 : 168; if (j > Main.maxTilesY - 200) Type1 = 265; else if (Main.hardMode) Type1 = Main.rand.Next(2) != 0 ? 47 : 278; Item.NewItem(i * 16, j * 16, 16, 16, Type1, Stack2); break; case 4: int Type2 = 28; if (j > Main.maxTilesY - 200 || Main.hardMode) Type2 = 188; Item.NewItem(i * 16, j * 16, 16, 16, Type2); break; default: if (num9 == 5 && (double) j > Main.rockLayer) { int Stack3 = Main.rand.Next(4) + 1; Item.NewItem(i * 16, j * 16, 16, 16, 166, Stack3); break; } float num10 = (float) (200 + WorldGen.genRand.Next(-100, 101)); if ((double) j < Main.worldSurface) num10 *= 0.5f; else if ((double) j < Main.rockLayer) num10 *= 0.75f; else if (j > Main.maxTilesY - 250) num10 *= 1.25f; float num11 = num10 * (float) (1.0 + (double) Main.rand.Next(-20, 21) * 0.00999999977648258); if (Main.rand.Next(5) == 0) num11 *= (float) (1.0 + (double) Main.rand.Next(5, 11) * 0.00999999977648258); if (Main.rand.Next(10) == 0) num11 *= (float) (1.0 + (double) Main.rand.Next(10, 21) * 0.00999999977648258); if (Main.rand.Next(15) == 0) num11 *= (float) (1.0 + (double) Main.rand.Next(20, 41) * 0.00999999977648258); if (Main.rand.Next(20) == 0) num11 *= (float) (1.0 + (double) Main.rand.Next(40, 81) * 0.00999999977648258); if (Main.rand.Next(25) == 0) num11 *= (float) (1.0 + (double) Main.rand.Next(50, 101) * 0.00999999977648258); while ((int) num11 > 0) { if ((double) num11 > 1000000.0) { int Stack4 = (int) ((double) num11 / 1000000.0); if (Stack4 > 50 && Main.rand.Next(2) == 0) Stack4 /= Main.rand.Next(3) + 1; if (Main.rand.Next(2) == 0) Stack4 /= Main.rand.Next(3) + 1; num11 -= (float) (1000000 * Stack4); Item.NewItem(i * 16, j * 16, 16, 16, 74, Stack4); } else if ((double) num11 > 10000.0) { int Stack5 = (int) ((double) num11 / 10000.0); if (Stack5 > 50 && Main.rand.Next(2) == 0) Stack5 /= Main.rand.Next(3) + 1; if (Main.rand.Next(2) == 0) Stack5 /= Main.rand.Next(3) + 1; num11 -= (float) (10000 * Stack5); Item.NewItem(i * 16, j * 16, 16, 16, 73, Stack5); } else if ((double) num11 > 100.0) { int Stack6 = (int) ((double) num11 / 100.0); if (Stack6 > 50 && Main.rand.Next(2) == 0) Stack6 /= Main.rand.Next(3) + 1; if (Main.rand.Next(2) == 0) Stack6 /= Main.rand.Next(3) + 1; num11 -= (float) (100 * Stack6); Item.NewItem(i * 16, j * 16, 16, 16, 72, Stack6); } else { int Stack7 = (int) num11; if (Stack7 > 50 && Main.rand.Next(2) == 0) Stack7 /= Main.rand.Next(3) + 1; if (Main.rand.Next(2) == 0) Stack7 /= Main.rand.Next(4) + 1; if (Stack7 < 1) Stack7 = 1; num11 -= (float) Stack7; Item.NewItem(i * 16, j * 16, 16, 16, 71, Stack7); } } break; } } } WorldGen.destroyObject = false; } public static int PlaceChest(int x, int y, int type = 21, bool notNearOtherChests = false, int style = 0) { bool flag = true; int num = -1; for (int index1 = x; index1 < x + 2; ++index1) { for (int index2 = y - 1; index2 < y + 1; ++index2) { if (Main.tile[index1, index2] == null) Main.tile[index1, index2] = new Tile(); if (Main.tile[index1, index2].active) flag = false; if (Main.tile[index1, index2].lava) flag = false; } if (Main.tile[index1, y + 1] == null) Main.tile[index1, y + 1] = new Tile(); if (!Main.tile[index1, y + 1].active || !Main.tileSolid[(int) Main.tile[index1, y + 1].type]) flag = false; } if (flag && notNearOtherChests) { for (int index3 = x - 25; index3 < x + 25; ++index3) { for (int index4 = y - 8; index4 < y + 8; ++index4) { try { if (Main.tile[index3, index4].active) { if (Main.tile[index3, index4].type == (byte) 21) { flag = false; return -1; } } } catch { } } } } if (flag) { num = Chest.CreateChest(x, y - 1); if (num == -1) flag = false; } if (flag) { Main.tile[x, y - 1].active = true; Main.tile[x, y - 1].frameY = (short) 0; Main.tile[x, y - 1].frameX = (short) (36 * style); Main.tile[x, y - 1].type = (byte) type; Main.tile[x + 1, y - 1].active = true; Main.tile[x + 1, y - 1].frameY = (short) 0; Main.tile[x + 1, y - 1].frameX = (short) (18 + 36 * style); Main.tile[x + 1, y - 1].type = (byte) type; Main.tile[x, y].active = true; Main.tile[x, y].frameY = (short) 18; Main.tile[x, y].frameX = (short) (36 * style); Main.tile[x, y].type = (byte) type; Main.tile[x + 1, y].active = true; Main.tile[x + 1, y].frameY = (short) 18; Main.tile[x + 1, y].frameX = (short) (18 + 36 * style); Main.tile[x + 1, y].type = (byte) type; } return num; } public static void CheckChest(int i, int j, int type) { if (WorldGen.destroyObject) return; bool flag = false; int num1 = 0; int num2 = j; int num3 = num1 + (int) Main.tile[i, j].frameX / 18; int num4 = num2 + (int) Main.tile[i, j].frameY / 18 * -1; while (num3 > 1) num3 -= 2; int num5 = num3 * -1 + i; for (int index1 = num5; index1 < num5 + 2; ++index1) { for (int index2 = num4; index2 < num4 + 2; ++index2) { if (Main.tile[index1, index2] == null) Main.tile[index1, index2] = new Tile(); int num6 = (int) Main.tile[index1, index2].frameX / 18; while (num6 > 1) num6 -= 2; if (!Main.tile[index1, index2].active || (int) Main.tile[index1, index2].type != type || num6 != index1 - num5 || (int) Main.tile[index1, index2].frameY != (index2 - num4) * 18) flag = true; } if (Main.tile[index1, num4 + 2] == null) Main.tile[index1, num4 + 2] = new Tile(); if (!Main.tile[index1, num4 + 2].active || !Main.tileSolid[(int) Main.tile[index1, num4 + 2].type]) flag = true; } if (!flag) return; int Type = 48; if (Main.tile[i, j].frameX >= (short) 216) Type = 348; else if (Main.tile[i, j].frameX >= (short) 180) Type = 343; else if (Main.tile[i, j].frameX >= (short) 108) Type = 328; else if (Main.tile[i, j].frameX >= (short) 36) Type = 306; WorldGen.destroyObject = true; for (int index3 = num5; index3 < num5 + 2; ++index3) { for (int index4 = num4; index4 < num4 + 3; ++index4) { if ((int) Main.tile[index3, index4].type == type && Main.tile[index3, index4].active) { Chest.DestroyChest(index3, index4); WorldGen.KillTile(index3, index4); } } } Item.NewItem(i * 16, j * 16, 32, 32, Type); WorldGen.destroyObject = false; } public static bool PlaceWire(int i, int j) { if (Main.tile[i, j].wire) return false; Main.PlaySound(0, i * 16, j * 16); Main.tile[i, j].wire = true; return true; } public static bool KillWire(int i, int j) { if (!Main.tile[i, j].wire) return false; Main.PlaySound(0, i * 16, j * 16); Main.tile[i, j].wire = false; if (Main.netMode != 1) Item.NewItem(i * 16, j * 16, 16, 16, 530); for (int index = 0; index < 5; ++index) Dust.NewDust(new Vector2((float) (i * 16), (float) (j * 16)), 16, 16, 50); return true; } public static bool PlaceTile( int i, int j, int type, bool mute = false, bool forced = false, int plr = -1, int style = 0) { if (type >= 150) return false; bool flag = false; if (i >= 0 && j >= 0 && i < Main.maxTilesX && j < Main.maxTilesY) { if (Main.tile[i, j] == null) Main.tile[i, j] = new Tile(); if (forced || Collision.EmptyTile(i, j) || !Main.tileSolid[type] || type == 23 && Main.tile[i, j].type == (byte) 0 && Main.tile[i, j].active || type == 2 && Main.tile[i, j].type == (byte) 0 && Main.tile[i, j].active || type == 109 && Main.tile[i, j].type == (byte) 0 && Main.tile[i, j].active || type == 60 && Main.tile[i, j].type == (byte) 59 && Main.tile[i, j].active || type == 70 && Main.tile[i, j].type == (byte) 59 && Main.tile[i, j].active) { if (type == 23 && (Main.tile[i, j].type != (byte) 0 || !Main.tile[i, j].active) || type == 2 && (Main.tile[i, j].type != (byte) 0 || !Main.tile[i, j].active) || type == 109 && (Main.tile[i, j].type != (byte) 0 || !Main.tile[i, j].active) || type == 60 && (Main.tile[i, j].type != (byte) 59 || !Main.tile[i, j].active)) return false; if (type == 81) { if (Main.tile[i - 1, j] == null) Main.tile[i - 1, j] = new Tile(); if (Main.tile[i + 1, j] == null) Main.tile[i + 1, j] = new Tile(); if (Main.tile[i, j - 1] == null) Main.tile[i, j - 1] = new Tile(); if (Main.tile[i, j + 1] == null) Main.tile[i, j + 1] = new Tile(); if (Main.tile[i - 1, j].active || Main.tile[i + 1, j].active || Main.tile[i, j - 1].active || !Main.tile[i, j + 1].active || !Main.tileSolid[(int) Main.tile[i, j + 1].type]) return false; } if (Main.tile[i, j].liquid > (byte) 0) { if (type == 4) { if (style != 8) return false; } else if (type == 3 || type == 4 || type == 20 || type == 24 || type == 27 || type == 32 || type == 51 || type == 69 || type == 72) return false; } Main.tile[i, j].frameY = (short) 0; Main.tile[i, j].frameX = (short) 0; if (type == 3 || type == 24 || type == 110) { if (j + 1 < Main.maxTilesY && Main.tile[i, j + 1].active && (Main.tile[i, j + 1].type == (byte) 2 && type == 3 || Main.tile[i, j + 1].type == (byte) 23 && type == 24 || Main.tile[i, j + 1].type == (byte) 78 && type == 3 || Main.tile[i, j + 1].type == (byte) 109 && type == 110)) { if (type == 24 && WorldGen.genRand.Next(13) == 0) { Main.tile[i, j].active = true; Main.tile[i, j].type = (byte) 32; WorldGen.SquareTileFrame(i, j); } else if (Main.tile[i, j + 1].type == (byte) 78) { Main.tile[i, j].active = true; Main.tile[i, j].type = (byte) type; Main.tile[i, j].frameX = (short) (WorldGen.genRand.Next(2) * 18 + 108); } else if (Main.tile[i, j].wall == (byte) 0 && Main.tile[i, j + 1].wall == (byte) 0) { if (WorldGen.genRand.Next(50) == 0 || type == 24 && WorldGen.genRand.Next(40) == 0) { Main.tile[i, j].active = true; Main.tile[i, j].type = (byte) type; Main.tile[i, j].frameX = (short) 144; } else if (WorldGen.genRand.Next(35) == 0) { Main.tile[i, j].active = true; Main.tile[i, j].type = (byte) type; Main.tile[i, j].frameX = (short) (WorldGen.genRand.Next(2) * 18 + 108); } else { Main.tile[i, j].active = true; Main.tile[i, j].type = (byte) type; Main.tile[i, j].frameX = (short) (WorldGen.genRand.Next(6) * 18); } } } } else { switch (type) { case 61: if (j + 1 < Main.maxTilesY && Main.tile[i, j + 1].active && Main.tile[i, j + 1].type == (byte) 60) { if (WorldGen.genRand.Next(16) == 0 && (double) j > Main.worldSurface) { Main.tile[i, j].active = true; Main.tile[i, j].type = (byte) 69; WorldGen.SquareTileFrame(i, j); break; } if (WorldGen.genRand.Next(60) == 0 && (double) j > Main.rockLayer) { Main.tile[i, j].active = true; Main.tile[i, j].type = (byte) type; Main.tile[i, j].frameX = (short) 144; break; } if (WorldGen.genRand.Next(1000) == 0 && (double) j > Main.rockLayer) { Main.tile[i, j].active = true; Main.tile[i, j].type = (byte) type; Main.tile[i, j].frameX = (short) 162; break; } if (WorldGen.genRand.Next(15) == 0) { Main.tile[i, j].active = true; Main.tile[i, j].type = (byte) type; Main.tile[i, j].frameX = (short) (WorldGen.genRand.Next(2) * 18 + 108); break; } Main.tile[i, j].active = true; Main.tile[i, j].type = (byte) type; Main.tile[i, j].frameX = (short) (WorldGen.genRand.Next(6) * 18); break; } break; case 71: if (j + 1 < Main.maxTilesY && Main.tile[i, j + 1].active && Main.tile[i, j + 1].type == (byte) 70) { Main.tile[i, j].active = true; Main.tile[i, j].type = (byte) type; Main.tile[i, j].frameX = (short) (WorldGen.genRand.Next(5) * 18); break; } break; case 129: if (WorldGen.SolidTile(i - 1, j) || WorldGen.SolidTile(i + 1, j) || WorldGen.SolidTile(i, j - 1) || WorldGen.SolidTile(i, j + 1)) { Main.tile[i, j].active = true; Main.tile[i, j].type = (byte) type; Main.tile[i, j].frameX = (short) (WorldGen.genRand.Next(8) * 18); WorldGen.SquareTileFrame(i, j); break; } break; default: if (type == 132 || type == 138 || type == 142 || type == 143) { WorldGen.Place2x2(i, j, type); break; } switch (type) { case 4: if (Main.tile[i - 1, j] == null) Main.tile[i - 1, j] = new Tile(); if (Main.tile[i + 1, j] == null) Main.tile[i + 1, j] = new Tile(); if (Main.tile[i, j + 1] == null) Main.tile[i, j + 1] = new Tile(); if (Main.tile[i - 1, j].active && (Main.tileSolid[(int) Main.tile[i - 1, j].type] || Main.tile[i - 1, j].type == (byte) 124 || Main.tile[i - 1, j].type == (byte) 5 && Main.tile[i - 1, j - 1].type == (byte) 5 && Main.tile[i - 1, j + 1].type == (byte) 5) || Main.tile[i + 1, j].active && (Main.tileSolid[(int) Main.tile[i + 1, j].type] || Main.tile[i + 1, j].type == (byte) 124 || Main.tile[i + 1, j].type == (byte) 5 && Main.tile[i + 1, j - 1].type == (byte) 5 && Main.tile[i + 1, j + 1].type == (byte) 5) || Main.tile[i, j + 1].active && Main.tileSolid[(int) Main.tile[i, j + 1].type]) { Main.tile[i, j].active = true; Main.tile[i, j].type = (byte) type; Main.tile[i, j].frameY = (short) (22 * style); WorldGen.SquareTileFrame(i, j); break; } break; case 10: if (Main.tile[i, j - 1] == null) Main.tile[i, j - 1] = new Tile(); if (Main.tile[i, j - 2] == null) Main.tile[i, j - 2] = new Tile(); if (Main.tile[i, j - 3] == null) Main.tile[i, j - 3] = new Tile(); if (Main.tile[i, j + 1] == null) Main.tile[i, j + 1] = new Tile(); if (Main.tile[i, j + 2] == null) Main.tile[i, j + 2] = new Tile(); if (Main.tile[i, j + 3] == null) Main.tile[i, j + 3] = new Tile(); 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]) { WorldGen.PlaceDoor(i, j - 1, type); WorldGen.SquareTileFrame(i, j); break; } 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]) return false; WorldGen.PlaceDoor(i, j + 1, type); WorldGen.SquareTileFrame(i, j); break; case 128: WorldGen.PlaceMan(i, j, style); WorldGen.SquareTileFrame(i, j); break; case 136: if (Main.tile[i - 1, j] == null) Main.tile[i - 1, j] = new Tile(); if (Main.tile[i + 1, j] == null) Main.tile[i + 1, j] = new Tile(); if (Main.tile[i, j + 1] == null) Main.tile[i, j + 1] = new Tile(); if (Main.tile[i - 1, j].active && (Main.tileSolid[(int) Main.tile[i - 1, j].type] || Main.tile[i - 1, j].type == (byte) 124 || Main.tile[i - 1, j].type == (byte) 5 && Main.tile[i - 1, j - 1].type == (byte) 5 && Main.tile[i - 1, j + 1].type == (byte) 5) || Main.tile[i + 1, j].active && (Main.tileSolid[(int) Main.tile[i + 1, j].type] || Main.tile[i + 1, j].type == (byte) 124 || Main.tile[i + 1, j].type == (byte) 5 && Main.tile[i + 1, j - 1].type == (byte) 5 && Main.tile[i + 1, j + 1].type == (byte) 5) || Main.tile[i, j + 1].active && Main.tileSolid[(int) Main.tile[i, j + 1].type]) { Main.tile[i, j].active = true; Main.tile[i, j].type = (byte) type; WorldGen.SquareTileFrame(i, j); break; } break; case 137: Main.tile[i, j].active = true; Main.tile[i, j].type = (byte) type; if (style == 1) { Main.tile[i, j].frameX = (short) 18; break; } break; case 139: WorldGen.PlaceMB(i, j, type, style); WorldGen.SquareTileFrame(i, j); break; case 149: if (WorldGen.SolidTile(i - 1, j) || WorldGen.SolidTile(i + 1, j) || WorldGen.SolidTile(i, j - 1) || WorldGen.SolidTile(i, j + 1)) { Main.tile[i, j].frameX = (short) (18 * style); Main.tile[i, j].active = true; Main.tile[i, j].type = (byte) type; WorldGen.SquareTileFrame(i, j); break; } break; default: if (type == 34 || type == 35 || type == 36 || type == 106) { WorldGen.Place3x3(i, j, type); WorldGen.SquareTileFrame(i, j); break; } if (type == 13 || type == 33 || type == 49 || type == 50 || type == 78) { WorldGen.PlaceOnTable1x1(i, j, type, style); WorldGen.SquareTileFrame(i, j); break; } if (type == 14 || type == 26 || type == 86 || type == 87 || type == 88 || type == 89 || type == 114) { WorldGen.Place3x2(i, j, type); WorldGen.SquareTileFrame(i, j); break; } switch (type) { case 15: if (Main.tile[i, j - 1] == null) Main.tile[i, j - 1] = new Tile(); if (Main.tile[i, j] == null) Main.tile[i, j] = new Tile(); WorldGen.Place1x2(i, j, type, style); WorldGen.SquareTileFrame(i, j); break; case 20: if (Main.tile[i, j + 1] == null) Main.tile[i, j + 1] = new Tile(); if (Main.tile[i, j + 1].active && (Main.tile[i, j + 1].type == (byte) 2 || Main.tile[i, j + 1].type == (byte) 109 || Main.tile[i, j + 1].type == (byte) 147)) { WorldGen.Place1x2(i, j, type, style); WorldGen.SquareTileFrame(i, j); break; } break; default: if (type == 16 || type == 18 || type == 29 || type == 103 || type == 134) { WorldGen.Place2x1(i, j, type); WorldGen.SquareTileFrame(i, j); break; } if (type == 92 || type == 93) { WorldGen.Place1xX(i, j, type); WorldGen.SquareTileFrame(i, j); break; } if (type == 104 || type == 105) { WorldGen.Place2xX(i, j, type, style); WorldGen.SquareTileFrame(i, j); break; } if (type == 17 || type == 77 || type == 133) { WorldGen.Place3x2(i, j, type); WorldGen.SquareTileFrame(i, j); break; } switch (type) { case 21: WorldGen.PlaceChest(i, j, type, style: style); WorldGen.SquareTileFrame(i, j); break; case 91: WorldGen.PlaceBanner(i, j, type, style); WorldGen.SquareTileFrame(i, j); break; default: if (type == 135 || type == 141 || type == 144) { WorldGen.Place1x1(i, j, type, style); WorldGen.SquareTileFrame(i, j); break; } if (type == 101 || type == 102) { WorldGen.Place3x4(i, j, type); WorldGen.SquareTileFrame(i, j); break; } switch (type) { case 27: WorldGen.PlaceSunflower(i, j); WorldGen.SquareTileFrame(i, j); break; case 28: WorldGen.PlacePot(i, j); WorldGen.SquareTileFrame(i, j); break; case 42: WorldGen.Place1x2Top(i, j, type); WorldGen.SquareTileFrame(i, j); break; default: if (type == 55 || type == 85) { WorldGen.PlaceSign(i, j, type); break; } if (Main.tileAlch[type]) { WorldGen.PlaceAlch(i, j, style); break; } switch (type) { case 79: case 90: int direction = 1; if (plr > -1) direction = Main.player[plr].direction; WorldGen.Place4x2(i, j, type, direction); break; case 81: Main.tile[i, j].frameX = (short) (26 * WorldGen.genRand.Next(6)); Main.tile[i, j].active = true; Main.tile[i, j].type = (byte) type; break; case 94: case 95: case 96: case 97: case 98: case 99: case 100: case 125: case 126: WorldGen.Place2x2(i, j, type); break; default: Main.tile[i, j].active = true; Main.tile[i, j].type = (byte) type; break; } break; } break; } break; } break; } break; } } if (Main.tile[i, j].active && !mute) { WorldGen.SquareTileFrame(i, j); flag = true; if (type == (int) sbyte.MaxValue) Main.PlaySound(2, i * 16, j * 16, 30); else Main.PlaySound(0, i * 16, j * 16); if (type == 22 || type == 140) { for (int index = 0; index < 3; ++index) Dust.NewDust(new Vector2((float) (i * 16), (float) (j * 16)), 16, 16, 14); } } } } return flag; } public static void UpdateMech() { for (int index1 = WorldGen.numMechs - 1; index1 >= 0; --index1) { --WorldGen.mechTime[index1]; if (Main.tile[WorldGen.mechX[index1], WorldGen.mechY[index1]].active && Main.tile[WorldGen.mechX[index1], WorldGen.mechY[index1]].type == (byte) 144) { if (Main.tile[WorldGen.mechX[index1], WorldGen.mechY[index1]].frameY == (short) 0) { WorldGen.mechTime[index1] = 0; } else { int num = (int) Main.tile[WorldGen.mechX[index1], WorldGen.mechY[index1]].frameX / 18; switch (num) { case 0: num = 60; break; case 1: num = 180; break; case 2: num = 300; break; } if (Math.IEEERemainder((double) WorldGen.mechTime[index1], (double) num) == 0.0) { WorldGen.mechTime[index1] = 18000; WorldGen.TripWire(WorldGen.mechX[index1], WorldGen.mechY[index1]); } } } if (WorldGen.mechTime[index1] <= 0) { if (Main.tile[WorldGen.mechX[index1], WorldGen.mechY[index1]].active && Main.tile[WorldGen.mechX[index1], WorldGen.mechY[index1]].type == (byte) 144) { Main.tile[WorldGen.mechX[index1], WorldGen.mechY[index1]].frameY = (short) 0; NetMessage.SendTileSquare(-1, WorldGen.mechX[index1], WorldGen.mechY[index1], 1); } for (int index2 = index1; index2 < WorldGen.numMechs; ++index2) { WorldGen.mechX[index2] = WorldGen.mechX[index2 + 1]; WorldGen.mechY[index2] = WorldGen.mechY[index2 + 1]; WorldGen.mechTime[index2] = WorldGen.mechTime[index2 + 1]; } --WorldGen.numMechs; } } } public static bool checkMech(int i, int j, int time) { for (int index = 0; index < WorldGen.numMechs; ++index) { if (WorldGen.mechX[index] == i && WorldGen.mechY[index] == j) return false; } if (WorldGen.numMechs >= WorldGen.maxMech - 1) return false; WorldGen.mechX[WorldGen.numMechs] = i; WorldGen.mechY[WorldGen.numMechs] = j; WorldGen.mechTime[WorldGen.numMechs] = time; ++WorldGen.numMechs; return true; } public static void hitSwitch(int i, int j) { if (Main.tile[i, j] == null) return; if (Main.tile[i, j].type == (byte) 135) { Main.PlaySound(28, i * 16, j * 16, 0); WorldGen.TripWire(i, j); } else if (Main.tile[i, j].type == (byte) 136) { Main.tile[i, j].frameY = Main.tile[i, j].frameY != (short) 0 ? (short) 0 : (short) 18; Main.PlaySound(28, i * 16, j * 16, 0); WorldGen.TripWire(i, j); } else if (Main.tile[i, j].type == (byte) 144) { if (Main.tile[i, j].frameY == (short) 0) { Main.tile[i, j].frameY = (short) 18; if (Main.netMode != 1) WorldGen.checkMech(i, j, 18000); } else Main.tile[i, j].frameY = (short) 0; Main.PlaySound(28, i * 16, j * 16, 0); } else { if (Main.tile[i, j].type != (byte) 132) return; short num1 = 36; int num2 = (int) Main.tile[i, j].frameX / 18 * -1; int num3 = (int) Main.tile[i, j].frameY / 18 * -1; if (num2 < -1) { num2 += 2; num1 = (short) -36; } int i1 = num2 + i; int j1 = num3 + j; for (int index1 = i1; index1 < i1 + 2; ++index1) { for (int index2 = j1; index2 < j1 + 2; ++index2) { if (Main.tile[index1, index2].type == (byte) 132) Main.tile[index1, index2].frameX += num1; } } WorldGen.TileFrame(i1, j1); Main.PlaySound(28, i * 16, j * 16, 0); for (int i2 = i1; i2 < i1 + 2; ++i2) { for (int j2 = j1; j2 < j1 + 2; ++j2) { if (Main.tile[i2, j2].type == (byte) 132 && Main.tile[i2, j2].active && Main.tile[i2, j2].wire) { WorldGen.TripWire(i2, j2); return; } } } } } public static void TripWire(int i, int j) { if (Main.netMode == 1) return; WorldGen.numWire = 0; WorldGen.numNoWire = 0; WorldGen.numInPump = 0; WorldGen.numOutPump = 0; WorldGen.noWire(i, j); WorldGen.hitWire(i, j); if (WorldGen.numInPump <= 0 || WorldGen.numOutPump <= 0) return; WorldGen.xferWater(); } public static void xferWater() { for (int index1 = 0; index1 < WorldGen.numInPump; ++index1) { int i1 = WorldGen.inPumpX[index1]; int j1 = WorldGen.inPumpY[index1]; int liquid1 = (int) Main.tile[i1, j1].liquid; if (liquid1 > 0) { bool lava = Main.tile[i1, j1].lava; for (int index2 = 0; index2 < WorldGen.numOutPump; ++index2) { int i2 = WorldGen.outPumpX[index2]; int j2 = WorldGen.outPumpY[index2]; int liquid2 = (int) Main.tile[i2, j2].liquid; if (liquid2 < (int) byte.MaxValue) { bool flag = Main.tile[i2, j2].lava; if (liquid2 == 0) flag = lava; if (lava == flag) { int num = liquid1; if (num + liquid2 > (int) byte.MaxValue) num = (int) byte.MaxValue - liquid2; Main.tile[i2, j2].liquid += (byte) num; Main.tile[i1, j1].liquid -= (byte) num; liquid1 = (int) Main.tile[i1, j1].liquid; Main.tile[i2, j2].lava = lava; WorldGen.SquareTileFrame(i2, j2); if (Main.tile[i1, j1].liquid == (byte) 0) { Main.tile[i1, j1].lava = false; WorldGen.SquareTileFrame(i1, j1); break; } } } } WorldGen.SquareTileFrame(i1, j1); } } } public static void noWire(int i, int j) { if (WorldGen.numNoWire >= WorldGen.maxWire - 1) return; WorldGen.noWireX[WorldGen.numNoWire] = i; WorldGen.noWireY[WorldGen.numNoWire] = j; ++WorldGen.numNoWire; } public static void hitWire(int i, int j) { if (WorldGen.numWire >= WorldGen.maxWire - 1 || !Main.tile[i, j].wire) return; for (int index = 0; index < WorldGen.numWire; ++index) { if (WorldGen.wireX[index] == i && WorldGen.wireY[index] == j) return; } WorldGen.wireX[WorldGen.numWire] = i; WorldGen.wireY[WorldGen.numWire] = j; ++WorldGen.numWire; int type = (int) Main.tile[i, j].type; bool flag = true; for (int index = 0; index < WorldGen.numNoWire; ++index) { if (WorldGen.noWireX[index] == i && WorldGen.noWireY[index] == j) flag = false; } if (flag && Main.tile[i, j].active) { switch (type) { case 4: if (Main.tile[i, j].frameX < (short) 66) Main.tile[i, j].frameX += (short) 66; else Main.tile[i, j].frameX -= (short) 66; NetMessage.SendTileSquare(-1, i, j, 1); break; case 10: int direction = 1; if (Main.rand.Next(2) == 0) direction = -1; if (!WorldGen.OpenDoor(i, j, direction)) { if (WorldGen.OpenDoor(i, j, -direction)) { NetMessage.SendData(19, number2: ((float) i), number3: ((float) j), number4: ((float) -direction)); break; } break; } NetMessage.SendData(19, number2: ((float) i), number3: ((float) j), number4: ((float) direction)); break; case 11: if (WorldGen.CloseDoor(i, j, true)) { NetMessage.SendData(19, number: 1, number2: ((float) i), number3: ((float) j)); break; } break; case 33: short num1 = 18; if (Main.tile[i, j].frameX > (short) 0) num1 = (short) -18; Main.tile[i, j].frameX += num1; NetMessage.SendTileSquare(-1, i, j, 3); break; case 34: case 35: case 36: int index1 = j - (int) Main.tile[i, j].frameY / 18; int num2 = (int) Main.tile[i, j].frameX / 18; if (num2 > 2) num2 -= 3; int index2 = i - num2; short num3 = 54; if (Main.tile[index2, index1].frameX > (short) 0) num3 = (short) -54; for (int i1 = index2; i1 < index2 + 3; ++i1) { for (int j1 = index1; j1 < index1 + 3; ++j1) { Main.tile[i1, j1].frameX += num3; WorldGen.noWire(i1, j1); } } NetMessage.SendTileSquare(-1, index2 + 1, index1 + 1, 3); break; case 42: int j2 = j - (int) Main.tile[i, j].frameY / 18; short num4 = 18; if (Main.tile[i, j].frameX > (short) 0) num4 = (short) -18; Main.tile[i, j2].frameX += num4; Main.tile[i, j2 + 1].frameX += num4; WorldGen.noWire(i, j2); WorldGen.noWire(i, j2 + 1); NetMessage.SendTileSquare(-1, i, j, 2); break; case 92: int j3 = j - (int) Main.tile[i, j].frameY / 18; short num5 = 18; if (Main.tile[i, j].frameX > (short) 0) num5 = (short) -18; Main.tile[i, j3].frameX += num5; Main.tile[i, j3 + 1].frameX += num5; Main.tile[i, j3 + 2].frameX += num5; Main.tile[i, j3 + 3].frameX += num5; Main.tile[i, j3 + 4].frameX += num5; Main.tile[i, j3 + 5].frameX += num5; WorldGen.noWire(i, j3); WorldGen.noWire(i, j3 + 1); WorldGen.noWire(i, j3 + 2); WorldGen.noWire(i, j3 + 3); WorldGen.noWire(i, j3 + 4); WorldGen.noWire(i, j3 + 5); NetMessage.SendTileSquare(-1, i, j3 + 3, 7); break; case 93: int j4 = j - (int) Main.tile[i, j].frameY / 18; short num6 = 18; if (Main.tile[i, j].frameX > (short) 0) num6 = (short) -18; Main.tile[i, j4].frameX += num6; Main.tile[i, j4 + 1].frameX += num6; Main.tile[i, j4 + 2].frameX += num6; WorldGen.noWire(i, j4); WorldGen.noWire(i, j4 + 1); WorldGen.noWire(i, j4 + 2); NetMessage.SendTileSquare(-1, i, j4 + 1, 3); break; case 95: case 100: case 126: int index3 = j - (int) Main.tile[i, j].frameY / 18; int num7 = (int) Main.tile[i, j].frameX / 18; if (num7 > 1) num7 -= 2; int index4 = i - num7; short num8 = 36; if (Main.tile[index4, index3].frameX > (short) 0) num8 = (short) -36; Main.tile[index4, index3].frameX += num8; Main.tile[index4, index3 + 1].frameX += num8; Main.tile[index4 + 1, index3].frameX += num8; Main.tile[index4 + 1, index3 + 1].frameX += num8; WorldGen.noWire(index4, index3); WorldGen.noWire(index4, index3 + 1); WorldGen.noWire(index4 + 1, index3); WorldGen.noWire(index4 + 1, index3 + 1); NetMessage.SendTileSquare(-1, index4, index3, 3); break; case 105: int j5 = j - (int) Main.tile[i, j].frameY / 18; int num9 = (int) Main.tile[i, j].frameX / 18; int num10 = 0; while (num9 >= 2) { num9 -= 2; ++num10; } int i2 = i - num9; WorldGen.noWire(i2, j5); WorldGen.noWire(i2, j5 + 1); WorldGen.noWire(i2, j5 + 2); WorldGen.noWire(i2 + 1, j5); WorldGen.noWire(i2 + 1, j5 + 1); WorldGen.noWire(i2 + 1, j5 + 2); int X = i2 * 16 + 16; int Y = (j5 + 3) * 16; int index5 = -1; switch (num10) { case 2: if (WorldGen.checkMech(i, j, 600) && Item.MechSpawn((float) X, (float) Y, 184)) { Item.NewItem(X, Y - 16, 0, 0, 184); break; } break; case 4: if (WorldGen.checkMech(i, j, 30) && NPC.MechSpawn((float) X, (float) Y, 1)) { index5 = NPC.NewNPC(X, Y - 12, 1); break; } break; case 7: if (WorldGen.checkMech(i, j, 30) && NPC.MechSpawn((float) X, (float) Y, 49)) { index5 = NPC.NewNPC(X - 4, Y - 6, 49); break; } break; case 8: if (WorldGen.checkMech(i, j, 30) && NPC.MechSpawn((float) X, (float) Y, 55)) { index5 = NPC.NewNPC(X, Y - 12, 55); break; } break; case 9: if (WorldGen.checkMech(i, j, 30) && NPC.MechSpawn((float) X, (float) Y, 46)) { index5 = NPC.NewNPC(X, Y - 12, 46); break; } break; case 10: if (WorldGen.checkMech(i, j, 30) && NPC.MechSpawn((float) X, (float) Y, 21)) { index5 = NPC.NewNPC(X, Y, 21); break; } break; case 17: if (WorldGen.checkMech(i, j, 600) && Item.MechSpawn((float) X, (float) Y, 166)) { Item.NewItem(X, Y - 20, 0, 0, 166); break; } break; case 18: if (WorldGen.checkMech(i, j, 30) && NPC.MechSpawn((float) X, (float) Y, 67)) { index5 = NPC.NewNPC(X, Y - 12, 67); break; } break; case 23: if (WorldGen.checkMech(i, j, 30) && NPC.MechSpawn((float) X, (float) Y, 63)) { index5 = NPC.NewNPC(X, Y - 12, 63); break; } break; case 27: if (WorldGen.checkMech(i, j, 30) && NPC.MechSpawn((float) X, (float) Y, 85)) { index5 = NPC.NewNPC(X - 9, Y, 85); break; } break; case 28: if (WorldGen.checkMech(i, j, 30) && NPC.MechSpawn((float) X, (float) Y, 74)) { index5 = NPC.NewNPC(X, Y - 12, 74); break; } break; case 37: if (WorldGen.checkMech(i, j, 600) && Item.MechSpawn((float) X, (float) Y, 58)) { Item.NewItem(X, Y - 16, 0, 0, 58); break; } break; case 40: if (WorldGen.checkMech(i, j, 300)) { int[] numArray = new int[10]; int maxValue = 0; for (int index6 = 0; index6 < 200; ++index6) { if (Main.npc[index6].active && (Main.npc[index6].type == 17 || Main.npc[index6].type == 19 || Main.npc[index6].type == 22 || Main.npc[index6].type == 38 || Main.npc[index6].type == 54 || Main.npc[index6].type == 107 || Main.npc[index6].type == 108)) { numArray[maxValue] = index6; ++maxValue; if (maxValue >= 9) break; } } if (maxValue > 0) { int number = numArray[Main.rand.Next(maxValue)]; Main.npc[number].position.X = (float) (X - Main.npc[number].width / 2); Main.npc[number].position.Y = (float) (Y - Main.npc[number].height - 1); NetMessage.SendData(23, number: number); break; } break; } break; case 41: if (WorldGen.checkMech(i, j, 300)) { int[] numArray = new int[10]; int maxValue = 0; for (int index7 = 0; index7 < 200; ++index7) { if (Main.npc[index7].active && (Main.npc[index7].type == 18 || Main.npc[index7].type == 20 || Main.npc[index7].type == 124)) { numArray[maxValue] = index7; ++maxValue; if (maxValue >= 9) break; } } if (maxValue > 0) { int number = numArray[Main.rand.Next(maxValue)]; Main.npc[number].position.X = (float) (X - Main.npc[number].width / 2); Main.npc[number].position.Y = (float) (Y - Main.npc[number].height - 1); NetMessage.SendData(23, number: number); break; } break; } break; case 42: if (WorldGen.checkMech(i, j, 30) && NPC.MechSpawn((float) X, (float) Y, 58)) { index5 = NPC.NewNPC(X, Y - 12, 58); break; } break; } if (index5 >= 0) { Main.npc[index5].value = 0.0f; Main.npc[index5].npcSlots = 0.0f; break; } break; case 130: Main.tile[i, j].type = (byte) 131; WorldGen.SquareTileFrame(i, j); NetMessage.SendTileSquare(-1, i, j, 1); break; case 131: Main.tile[i, j].type = (byte) 130; WorldGen.SquareTileFrame(i, j); NetMessage.SendTileSquare(-1, i, j, 1); break; case 137: if (WorldGen.checkMech(i, j, 180)) { int num11 = -1; if (Main.tile[i, j].frameX != (short) 0) num11 = 1; float SpeedX = (float) (12 * num11); int Damage = 20; int Type = 98; Vector2 vector2 = new Vector2((float) (i * 16 + 8), (float) (j * 16 + 7)); vector2.X += (float) (10 * num11); vector2.Y += 2f; Projectile.NewProjectile((float) (int) vector2.X, (float) (int) vector2.Y, SpeedX, 0.0f, Type, Damage, 2f, Main.myPlayer); break; } break; case 139: WorldGen.SwitchMB(i, j); break; case 141: WorldGen.KillTile(i, j, noItem: true); NetMessage.SendTileSquare(-1, i, j, 1); Projectile.NewProjectile((float) (i * 16 + 8), (float) (j * 16 + 8), 0.0f, 0.0f, 108, 250, 10f, Main.myPlayer); break; case 142: case 143: int j6 = j - (int) Main.tile[i, j].frameY / 18; int num12 = (int) Main.tile[i, j].frameX / 18; if (num12 > 1) num12 -= 2; int i3 = i - num12; WorldGen.noWire(i3, j6); WorldGen.noWire(i3, j6 + 1); WorldGen.noWire(i3 + 1, j6); WorldGen.noWire(i3 + 1, j6 + 1); if (type == 142) { for (int index8 = 0; index8 < 4 && WorldGen.numInPump < WorldGen.maxPump - 1; ++index8) { int num13; int num14; switch (index8) { case 0: num13 = i3; num14 = j6 + 1; break; case 1: num13 = i3 + 1; num14 = j6 + 1; break; case 2: num13 = i3; num14 = j6; break; default: num13 = i3 + 1; num14 = j6; break; } WorldGen.inPumpX[WorldGen.numInPump] = num13; WorldGen.inPumpY[WorldGen.numInPump] = num14; ++WorldGen.numInPump; } break; } for (int index9 = 0; index9 < 4 && WorldGen.numOutPump < WorldGen.maxPump - 1; ++index9) { int num15; int num16; switch (index9) { case 0: num15 = i3; num16 = j6 + 1; break; case 1: num15 = i3 + 1; num16 = j6 + 1; break; case 2: num15 = i3; num16 = j6; break; default: num15 = i3 + 1; num16 = j6; break; } WorldGen.outPumpX[WorldGen.numOutPump] = num15; WorldGen.outPumpY[WorldGen.numOutPump] = num16; ++WorldGen.numOutPump; } break; case 144: WorldGen.hitSwitch(i, j); WorldGen.SquareTileFrame(i, j); NetMessage.SendTileSquare(-1, i, j, 1); break; case 149: if (Main.tile[i, j].frameX < (short) 54) Main.tile[i, j].frameX += (short) 54; else Main.tile[i, j].frameX -= (short) 54; NetMessage.SendTileSquare(-1, i, j, 1); break; } } WorldGen.hitWire(i - 1, j); WorldGen.hitWire(i + 1, j); WorldGen.hitWire(i, j - 1); WorldGen.hitWire(i, j + 1); } public static void KillWall(int i, int j, bool fail = false) { if (i < 0 || j < 0 || i >= Main.maxTilesX || j >= Main.maxTilesY) return; if (Main.tile[i, j] == null) Main.tile[i, j] = new Tile(); if (Main.tile[i, j].wall <= (byte) 0) return; if (Main.tile[i, j].wall == (byte) 21) Main.PlaySound(13, i * 16, j * 16); else Main.PlaySound(0, i * 16, j * 16); int num = 10; if (fail) num = 3; for (int index = 0; index < num; ++index) { int Type = 0; if (Main.tile[i, j].wall == (byte) 1 || Main.tile[i, j].wall == (byte) 5 || Main.tile[i, j].wall == (byte) 6 || Main.tile[i, j].wall == (byte) 7 || Main.tile[i, j].wall == (byte) 8 || Main.tile[i, j].wall == (byte) 9) Type = 1; if (Main.tile[i, j].wall == (byte) 3) Type = WorldGen.genRand.Next(2) != 0 ? 1 : 14; if (Main.tile[i, j].wall == (byte) 4) Type = 7; if (Main.tile[i, j].wall == (byte) 12) Type = 9; if (Main.tile[i, j].wall == (byte) 10) Type = 10; if (Main.tile[i, j].wall == (byte) 11) Type = 11; if (Main.tile[i, j].wall == (byte) 21) Type = 13; if (Main.tile[i, j].wall == (byte) 22 || Main.tile[i, j].wall == (byte) 28) Type = 51; if (Main.tile[i, j].wall == (byte) 23) Type = 38; if (Main.tile[i, j].wall == (byte) 24) Type = 36; if (Main.tile[i, j].wall == (byte) 25) Type = 48; if (Main.tile[i, j].wall == (byte) 26 || Main.tile[i, j].wall == (byte) 30) Type = 49; if (Main.tile[i, j].wall == (byte) 29) Type = 50; if (Main.tile[i, j].wall == (byte) 31) Type = 51; if (Main.tile[i, j].wall == (byte) 27) Type = WorldGen.genRand.Next(2) != 0 ? 1 : 7; Dust.NewDust(new Vector2((float) (i * 16), (float) (j * 16)), 16, 16, Type); } if (fail) { WorldGen.SquareWallFrame(i, j); } else { int Type = 0; if (Main.tile[i, j].wall == (byte) 1) Type = 26; if (Main.tile[i, j].wall == (byte) 4) Type = 93; if (Main.tile[i, j].wall == (byte) 5) Type = 130; if (Main.tile[i, j].wall == (byte) 6) Type = 132; if (Main.tile[i, j].wall == (byte) 7) Type = 135; if (Main.tile[i, j].wall == (byte) 8) Type = 138; if (Main.tile[i, j].wall == (byte) 9) Type = 140; if (Main.tile[i, j].wall == (byte) 10) Type = 142; if (Main.tile[i, j].wall == (byte) 11) Type = 144; if (Main.tile[i, j].wall == (byte) 12) Type = 146; if (Main.tile[i, j].wall == (byte) 14) Type = 330; if (Main.tile[i, j].wall == (byte) 16) Type = 30; if (Main.tile[i, j].wall == (byte) 17) Type = 135; if (Main.tile[i, j].wall == (byte) 18) Type = 138; if (Main.tile[i, j].wall == (byte) 19) Type = 140; if (Main.tile[i, j].wall == (byte) 20) Type = 330; if (Main.tile[i, j].wall == (byte) 21) Type = 392; if (Main.tile[i, j].wall == (byte) 22) Type = 417; if (Main.tile[i, j].wall == (byte) 23) Type = 418; if (Main.tile[i, j].wall == (byte) 24) Type = 419; if (Main.tile[i, j].wall == (byte) 25) Type = 420; if (Main.tile[i, j].wall == (byte) 26) Type = 421; if (Main.tile[i, j].wall == (byte) 29) Type = 587; if (Main.tile[i, j].wall == (byte) 30) Type = 592; if (Main.tile[i, j].wall == (byte) 31) Type = 595; if (Main.tile[i, j].wall == (byte) 27) Type = 479; if (Type > 0) Item.NewItem(i * 16, j * 16, 16, 16, Type); Main.tile[i, j].wall = (byte) 0; WorldGen.SquareWallFrame(i, j); } } public static void KillTile(int i, int j, bool fail = false, bool effectOnly = false, bool noItem = false) { if (i < 0 || j < 0 || i >= Main.maxTilesX || j >= Main.maxTilesY) return; if (Main.tile[i, j] == null) Main.tile[i, j] = new Tile(); if (!Main.tile[i, j].active) return; if (j >= 1 && Main.tile[i, j - 1] == null) Main.tile[i, j - 1] = new Tile(); if (j >= 1 && Main.tile[i, j - 1].active && (Main.tile[i, j - 1].type == (byte) 5 && Main.tile[i, j].type != (byte) 5 || Main.tile[i, j - 1].type == (byte) 21 && Main.tile[i, j].type != (byte) 21 || Main.tile[i, j - 1].type == (byte) 26 && Main.tile[i, j].type != (byte) 26 || Main.tile[i, j - 1].type == (byte) 72 && Main.tile[i, j].type != (byte) 72 || Main.tile[i, j - 1].type == (byte) 12 && Main.tile[i, j].type != (byte) 12) && (Main.tile[i, j - 1].type != (byte) 5 || (Main.tile[i, j - 1].frameX != (short) 66 || Main.tile[i, j - 1].frameY < (short) 0 || Main.tile[i, j - 1].frameY > (short) 44) && (Main.tile[i, j - 1].frameX != (short) 88 || Main.tile[i, j - 1].frameY < (short) 66 || Main.tile[i, j - 1].frameY > (short) 110) && Main.tile[i, j - 1].frameY < (short) 198)) return; if (!effectOnly && !WorldGen.stopDrops) { if (Main.tile[i, j].type == (byte) 127) Main.PlaySound(2, i * 16, j * 16, 27); else if (Main.tile[i, j].type == (byte) 3 || Main.tile[i, j].type == (byte) 110) { Main.PlaySound(6, i * 16, j * 16); if (Main.tile[i, j].frameX == (short) 144) Item.NewItem(i * 16, j * 16, 16, 16, 5); } else if (Main.tile[i, j].type == (byte) 24) { Main.PlaySound(6, i * 16, j * 16); if (Main.tile[i, j].frameX == (short) 144) Item.NewItem(i * 16, j * 16, 16, 16, 60); } else if (Main.tileAlch[(int) Main.tile[i, j].type] || Main.tile[i, j].type == (byte) 32 || Main.tile[i, j].type == (byte) 51 || Main.tile[i, j].type == (byte) 52 || Main.tile[i, j].type == (byte) 61 || Main.tile[i, j].type == (byte) 62 || Main.tile[i, j].type == (byte) 69 || Main.tile[i, j].type == (byte) 71 || Main.tile[i, j].type == (byte) 73 || Main.tile[i, j].type == (byte) 74 || Main.tile[i, j].type == (byte) 113 || Main.tile[i, j].type == (byte) 115) Main.PlaySound(6, i * 16, j * 16); else if (Main.tile[i, j].type == (byte) 1 || Main.tile[i, j].type == (byte) 6 || Main.tile[i, j].type == (byte) 7 || Main.tile[i, j].type == (byte) 8 || Main.tile[i, j].type == (byte) 9 || Main.tile[i, j].type == (byte) 22 || Main.tile[i, j].type == (byte) 140 || Main.tile[i, j].type == (byte) 25 || Main.tile[i, j].type == (byte) 37 || Main.tile[i, j].type == (byte) 38 || Main.tile[i, j].type == (byte) 39 || Main.tile[i, j].type == (byte) 41 || Main.tile[i, j].type == (byte) 43 || Main.tile[i, j].type == (byte) 44 || Main.tile[i, j].type == (byte) 45 || Main.tile[i, j].type == (byte) 46 || Main.tile[i, j].type == (byte) 47 || Main.tile[i, j].type == (byte) 48 || Main.tile[i, j].type == (byte) 56 || Main.tile[i, j].type == (byte) 58 || Main.tile[i, j].type == (byte) 63 || Main.tile[i, j].type == (byte) 64 || Main.tile[i, j].type == (byte) 65 || Main.tile[i, j].type == (byte) 66 || Main.tile[i, j].type == (byte) 67 || Main.tile[i, j].type == (byte) 68 || Main.tile[i, j].type == (byte) 75 || Main.tile[i, j].type == (byte) 76 || Main.tile[i, j].type == (byte) 107 || Main.tile[i, j].type == (byte) 108 || Main.tile[i, j].type == (byte) 111 || Main.tile[i, j].type == (byte) 117 || Main.tile[i, j].type == (byte) 118 || Main.tile[i, j].type == (byte) 119 || Main.tile[i, j].type == (byte) 120 || Main.tile[i, j].type == (byte) 121 || Main.tile[i, j].type == (byte) 122) Main.PlaySound(21, i * 16, j * 16); else if (Main.tile[i, j].type != (byte) 138) Main.PlaySound(0, i * 16, j * 16); if (Main.tile[i, j].type == (byte) 129 && !fail) Main.PlaySound(2, i * 16, j * 16, 27); } int num1 = 10; if (Main.tile[i, j].type == (byte) 128) { int index1 = i; int frameX1 = (int) Main.tile[i, j].frameX; int frameX2 = (int) Main.tile[i, j].frameX; while (frameX2 >= 100) frameX2 -= 100; while (frameX2 >= 36) frameX2 -= 36; if (frameX2 == 18) { frameX1 = (int) Main.tile[i - 1, j].frameX; --index1; } if (frameX1 >= 100) { int index2 = 0; while (frameX1 >= 100) { frameX1 -= 100; ++index2; } int num2 = (int) Main.tile[index1, j].frameY / 18; if (num2 == 0) Item.NewItem(i * 16, j * 16, 16, 16, Item.headType[index2]); if (num2 == 1) Item.NewItem(i * 16, j * 16, 16, 16, Item.bodyType[index2]); if (num2 == 2) Item.NewItem(i * 16, j * 16, 16, 16, Item.legType[index2]); int frameX3 = (int) Main.tile[index1, j].frameX; while (frameX3 >= 100) frameX3 -= 100; Main.tile[index1, j].frameX = (short) frameX3; } } if (fail) num1 = 3; if (Main.tile[i, j].type == (byte) 138) num1 = 0; for (int index = 0; index < num1; ++index) { int Type = 0; if (Main.tile[i, j].type == (byte) 0) Type = 0; if (Main.tile[i, j].type == (byte) 1 || Main.tile[i, j].type == (byte) 16 || Main.tile[i, j].type == (byte) 17 || Main.tile[i, j].type == (byte) 38 || Main.tile[i, j].type == (byte) 39 || Main.tile[i, j].type == (byte) 41 || Main.tile[i, j].type == (byte) 43 || Main.tile[i, j].type == (byte) 44 || Main.tile[i, j].type == (byte) 48 || Main.tileStone[(int) Main.tile[i, j].type] || Main.tile[i, j].type == (byte) 85 || Main.tile[i, j].type == (byte) 90 || Main.tile[i, j].type == (byte) 92 || Main.tile[i, j].type == (byte) 96 || Main.tile[i, j].type == (byte) 97 || Main.tile[i, j].type == (byte) 99 || Main.tile[i, j].type == (byte) 105 || Main.tile[i, j].type == (byte) 117 || Main.tile[i, j].type == (byte) 130 || Main.tile[i, j].type == (byte) 131 || Main.tile[i, j].type == (byte) 132 || Main.tile[i, j].type == (byte) 135 || Main.tile[i, j].type == (byte) 135 || Main.tile[i, j].type == (byte) 137 || Main.tile[i, j].type == (byte) 142 || Main.tile[i, j].type == (byte) 143 || Main.tile[i, j].type == (byte) 144) Type = 1; if (Main.tile[i, j].type == (byte) 33 || Main.tile[i, j].type == (byte) 95 || Main.tile[i, j].type == (byte) 98 || Main.tile[i, j].type == (byte) 100) Type = 6; if (Main.tile[i, j].type == (byte) 5 || Main.tile[i, j].type == (byte) 10 || Main.tile[i, j].type == (byte) 11 || Main.tile[i, j].type == (byte) 14 || Main.tile[i, j].type == (byte) 15 || Main.tile[i, j].type == (byte) 19 || Main.tile[i, j].type == (byte) 30 || Main.tile[i, j].type == (byte) 86 || Main.tile[i, j].type == (byte) 87 || Main.tile[i, j].type == (byte) 88 || Main.tile[i, j].type == (byte) 89 || Main.tile[i, j].type == (byte) 93 || Main.tile[i, j].type == (byte) 94 || Main.tile[i, j].type == (byte) 104 || Main.tile[i, j].type == (byte) 106 || Main.tile[i, j].type == (byte) 114 || Main.tile[i, j].type == (byte) 124 || Main.tile[i, j].type == (byte) 128 || Main.tile[i, j].type == (byte) 139) Type = 7; if (Main.tile[i, j].type == (byte) 21) Type = Main.tile[i, j].frameX < (short) 108 ? (Main.tile[i, j].frameX < (short) 36 ? 7 : 10) : 37; if (Main.tile[i, j].type == (byte) 2) Type = WorldGen.genRand.Next(2) != 0 ? 2 : 0; if (Main.tile[i, j].type == (byte) 127) Type = 67; if (Main.tile[i, j].type == (byte) 91) Type = -1; if (Main.tile[i, j].type == (byte) 6 || Main.tile[i, j].type == (byte) 26) Type = 8; if (Main.tile[i, j].type == (byte) 7 || Main.tile[i, j].type == (byte) 34 || Main.tile[i, j].type == (byte) 47) Type = 9; if (Main.tile[i, j].type == (byte) 8 || Main.tile[i, j].type == (byte) 36 || Main.tile[i, j].type == (byte) 45 || Main.tile[i, j].type == (byte) 102) Type = 10; if (Main.tile[i, j].type == (byte) 9 || Main.tile[i, j].type == (byte) 35 || Main.tile[i, j].type == (byte) 42 || Main.tile[i, j].type == (byte) 46 || Main.tile[i, j].type == (byte) 126 || Main.tile[i, j].type == (byte) 136) Type = 11; if (Main.tile[i, j].type == (byte) 12) Type = 12; if (Main.tile[i, j].type == (byte) 3 || Main.tile[i, j].type == (byte) 73) Type = 3; if (Main.tile[i, j].type == (byte) 13 || Main.tile[i, j].type == (byte) 54) Type = 13; if (Main.tile[i, j].type == (byte) 22 || Main.tile[i, j].type == (byte) 140) Type = 14; if (Main.tile[i, j].type == (byte) 28 || Main.tile[i, j].type == (byte) 78) Type = 22; if (Main.tile[i, j].type == (byte) 29) Type = 23; if (Main.tile[i, j].type == (byte) 40 || Main.tile[i, j].type == (byte) 103) Type = 28; if (Main.tile[i, j].type == (byte) 49) Type = 29; if (Main.tile[i, j].type == (byte) 50) Type = 22; if (Main.tile[i, j].type == (byte) 51) Type = 30; if (Main.tile[i, j].type == (byte) 52) Type = 3; if (Main.tile[i, j].type == (byte) 53 || Main.tile[i, j].type == (byte) 81) Type = 32; if (Main.tile[i, j].type == (byte) 56 || Main.tile[i, j].type == (byte) 75) Type = 37; if (Main.tile[i, j].type == (byte) 57 || Main.tile[i, j].type == (byte) 119 || Main.tile[i, j].type == (byte) 141) Type = 36; if (Main.tile[i, j].type == (byte) 59 || Main.tile[i, j].type == (byte) 120) Type = 38; if (Main.tile[i, j].type == (byte) 61 || Main.tile[i, j].type == (byte) 62 || Main.tile[i, j].type == (byte) 74 || Main.tile[i, j].type == (byte) 80) Type = 40; if (Main.tile[i, j].type == (byte) 69) Type = 7; if (Main.tile[i, j].type == (byte) 71 || Main.tile[i, j].type == (byte) 72) Type = 26; if (Main.tile[i, j].type == (byte) 70) Type = 17; if (Main.tile[i, j].type == (byte) 112) Type = 14; if (Main.tile[i, j].type == (byte) 123) Type = 53; if (Main.tile[i, j].type == (byte) 116 || Main.tile[i, j].type == (byte) 118 || Main.tile[i, j].type == (byte) 147 || Main.tile[i, j].type == (byte) 148) Type = 51; if (Main.tile[i, j].type == (byte) 109) Type = WorldGen.genRand.Next(2) != 0 ? 47 : 0; if (Main.tile[i, j].type == (byte) 110 || Main.tile[i, j].type == (byte) 113 || Main.tile[i, j].type == (byte) 115) Type = 47; if (Main.tile[i, j].type == (byte) 107 || Main.tile[i, j].type == (byte) 121) Type = 48; if (Main.tile[i, j].type == (byte) 108 || Main.tile[i, j].type == (byte) 122 || Main.tile[i, j].type == (byte) 134 || Main.tile[i, j].type == (byte) 146) Type = 49; if (Main.tile[i, j].type == (byte) 111 || Main.tile[i, j].type == (byte) 133 || Main.tile[i, j].type == (byte) 145) Type = 50; if (Main.tile[i, j].type == (byte) 149) Type = 49; if (Main.tileAlch[(int) Main.tile[i, j].type]) { int num3 = (int) Main.tile[i, j].frameX / 18; if (num3 == 0) Type = 3; if (num3 == 1) Type = 3; if (num3 == 2) Type = 7; if (num3 == 3) Type = 17; if (num3 == 4) Type = 3; if (num3 == 5) Type = 6; } if (Main.tile[i, j].type == (byte) 61) Type = WorldGen.genRand.Next(2) != 0 ? 39 : 38; if (Main.tile[i, j].type == (byte) 58 || Main.tile[i, j].type == (byte) 76 || Main.tile[i, j].type == (byte) 77) Type = WorldGen.genRand.Next(2) != 0 ? 25 : 6; if (Main.tile[i, j].type == (byte) 37) Type = WorldGen.genRand.Next(2) != 0 ? 23 : 6; if (Main.tile[i, j].type == (byte) 32) Type = WorldGen.genRand.Next(2) != 0 ? 24 : 14; if (Main.tile[i, j].type == (byte) 23 || Main.tile[i, j].type == (byte) 24) Type = WorldGen.genRand.Next(2) != 0 ? 17 : 14; if (Main.tile[i, j].type == (byte) 25 || Main.tile[i, j].type == (byte) 31) Type = WorldGen.genRand.Next(2) != 0 ? 1 : 14; if (Main.tile[i, j].type == (byte) 20) Type = WorldGen.genRand.Next(2) != 0 ? 2 : 7; if (Main.tile[i, j].type == (byte) 27) Type = WorldGen.genRand.Next(2) != 0 ? 19 : 3; if (Main.tile[i, j].type == (byte) 129) Type = Main.tile[i, j].frameX == (short) 0 || Main.tile[i, j].frameX == (short) 54 || Main.tile[i, j].frameX == (short) 108 ? 68 : (Main.tile[i, j].frameX == (short) 18 || Main.tile[i, j].frameX == (short) 72 || Main.tile[i, j].frameX == (short) 126 ? 69 : 70); if (Main.tile[i, j].type == (byte) 4) { int num4 = (int) Main.tile[i, j].frameY / 22; switch (num4) { case 0: Type = 6; break; case 8: Type = 75; break; default: Type = 58 + num4; break; } } if ((Main.tile[i, j].type == (byte) 34 || Main.tile[i, j].type == (byte) 35 || Main.tile[i, j].type == (byte) 36 || Main.tile[i, j].type == (byte) 42) && Main.rand.Next(2) == 0) Type = 6; if (Type >= 0) Dust.NewDust(new Vector2((float) (i * 16), (float) (j * 16)), 16, 16, Type); } if (effectOnly) return; if (fail) { if (Main.tile[i, j].type == (byte) 2 || Main.tile[i, j].type == (byte) 23 || Main.tile[i, j].type == (byte) 109) Main.tile[i, j].type = (byte) 0; if (Main.tile[i, j].type == (byte) 60 || Main.tile[i, j].type == (byte) 70) Main.tile[i, j].type = (byte) 59; WorldGen.SquareTileFrame(i, j); } else { if (Main.tile[i, j].type == (byte) 21 && Main.netMode != 1) { int num5 = (int) Main.tile[i, j].frameX / 18; int Y = j - (int) Main.tile[i, j].frameY / 18; while (num5 > 1) num5 -= 2; if (!Chest.DestroyChest(i - num5, Y)) return; } if (!noItem && !WorldGen.stopDrops && Main.netMode != 1) { int Type = 0; if (Main.tile[i, j].type == (byte) 0 || Main.tile[i, j].type == (byte) 2 || Main.tile[i, j].type == (byte) 109) Type = 2; else if (Main.tile[i, j].type == (byte) 1) Type = 3; else if (Main.tile[i, j].type == (byte) 3 || Main.tile[i, j].type == (byte) 73) { if (Main.rand.Next(2) == 0 && Main.player[(int) Player.FindClosest(new Vector2((float) (i * 16), (float) (j * 16)), 16, 16)].HasItem(281)) Type = 283; } else if (Main.tile[i, j].type == (byte) 4) { int num6 = (int) Main.tile[i, j].frameY / 22; switch (num6) { case 0: Type = 8; break; case 8: Type = 523; break; default: Type = 426 + num6; break; } } else if (Main.tile[i, j].type == (byte) 5) { if (Main.tile[i, j].frameX >= (short) 22 && Main.tile[i, j].frameY >= (short) 198) { if (Main.netMode != 1) { if (WorldGen.genRand.Next(2) == 0) { int index = j; while (Main.tile[i, index] != null && (!Main.tile[i, index].active || !Main.tileSolid[(int) Main.tile[i, index].type] || Main.tileSolidTop[(int) Main.tile[i, index].type])) ++index; if (Main.tile[i, index] != null) Type = Main.tile[i, index].type == (byte) 2 || Main.tile[i, index].type == (byte) 109 ? 27 : 9; } else Type = 9; } } else Type = 9; } else if (Main.tile[i, j].type == (byte) 6) Type = 11; else if (Main.tile[i, j].type == (byte) 7) Type = 12; else if (Main.tile[i, j].type == (byte) 8) Type = 13; else if (Main.tile[i, j].type == (byte) 9) Type = 14; else if (Main.tile[i, j].type == (byte) 123) Type = 424; else if (Main.tile[i, j].type == (byte) 124) Type = 480; else if (Main.tile[i, j].type == (byte) 149) { if (Main.tile[i, j].frameX == (short) 0 || Main.tile[i, j].frameX == (short) 54) Type = 596; else if (Main.tile[i, j].frameX == (short) 18 || Main.tile[i, j].frameX == (short) 72) Type = 597; else if (Main.tile[i, j].frameX == (short) 36 || Main.tile[i, j].frameX == (short) 90) Type = 598; } else if (Main.tile[i, j].type == (byte) 13) { Main.PlaySound(13, i * 16, j * 16); Type = Main.tile[i, j].frameX != (short) 18 ? (Main.tile[i, j].frameX != (short) 36 ? (Main.tile[i, j].frameX != (short) 54 ? (Main.tile[i, j].frameX != (short) 72 ? 31 : 351) : 350) : 110) : 28; } else if (Main.tile[i, j].type == (byte) 19) Type = 94; else if (Main.tile[i, j].type == (byte) 22) Type = 56; else if (Main.tile[i, j].type == (byte) 140) Type = 577; else if (Main.tile[i, j].type == (byte) 23) Type = 2; else if (Main.tile[i, j].type == (byte) 25) Type = 61; else if (Main.tile[i, j].type == (byte) 30) Type = 9; else if (Main.tile[i, j].type == (byte) 33) Type = 105; else if (Main.tile[i, j].type == (byte) 37) Type = 116; else if (Main.tile[i, j].type == (byte) 38) Type = 129; else if (Main.tile[i, j].type == (byte) 39) Type = 131; else if (Main.tile[i, j].type == (byte) 40) Type = 133; else if (Main.tile[i, j].type == (byte) 41) Type = 134; else if (Main.tile[i, j].type == (byte) 43) Type = 137; else if (Main.tile[i, j].type == (byte) 44) Type = 139; else if (Main.tile[i, j].type == (byte) 45) Type = 141; else if (Main.tile[i, j].type == (byte) 46) Type = 143; else if (Main.tile[i, j].type == (byte) 47) Type = 145; else if (Main.tile[i, j].type == (byte) 48) Type = 147; else if (Main.tile[i, j].type == (byte) 49) Type = 148; else if (Main.tile[i, j].type == (byte) 51) Type = 150; else if (Main.tile[i, j].type == (byte) 53) Type = 169; else if (Main.tile[i, j].type == (byte) 54) { Type = 170; Main.PlaySound(13, i * 16, j * 16); } else if (Main.tile[i, j].type == (byte) 56) Type = 173; else if (Main.tile[i, j].type == (byte) 57) Type = 172; else if (Main.tile[i, j].type == (byte) 58) Type = 174; else if (Main.tile[i, j].type == (byte) 60) Type = 176; else if (Main.tile[i, j].type == (byte) 70) Type = 176; else if (Main.tile[i, j].type == (byte) 75) Type = 192; else if (Main.tile[i, j].type == (byte) 76) Type = 214; else if (Main.tile[i, j].type == (byte) 78) Type = 222; else if (Main.tile[i, j].type == (byte) 81) Type = 275; else if (Main.tile[i, j].type == (byte) 80) Type = 276; else if (Main.tile[i, j].type == (byte) 107) Type = 364; else if (Main.tile[i, j].type == (byte) 108) Type = 365; else if (Main.tile[i, j].type == (byte) 111) Type = 366; else if (Main.tile[i, j].type == (byte) 112) Type = 370; else if (Main.tile[i, j].type == (byte) 116) Type = 408; else if (Main.tile[i, j].type == (byte) 117) Type = 409; else if (Main.tile[i, j].type == (byte) 129) Type = 502; else if (Main.tile[i, j].type == (byte) 118) Type = 412; else if (Main.tile[i, j].type == (byte) 119) Type = 413; else if (Main.tile[i, j].type == (byte) 120) Type = 414; else if (Main.tile[i, j].type == (byte) 121) Type = 415; else if (Main.tile[i, j].type == (byte) 122) Type = 416; else if (Main.tile[i, j].type == (byte) 136) Type = 538; else if (Main.tile[i, j].type == (byte) 137) Type = 539; else if (Main.tile[i, j].type == (byte) 141) Type = 580; else if (Main.tile[i, j].type == (byte) 145) Type = 586; else if (Main.tile[i, j].type == (byte) 146) Type = 591; else if (Main.tile[i, j].type == (byte) 147) Type = 593; else if (Main.tile[i, j].type == (byte) 148) Type = 594; else if (Main.tile[i, j].type == (byte) 135) { if (Main.tile[i, j].frameY == (short) 0) Type = 529; if (Main.tile[i, j].frameY == (short) 18) Type = 541; if (Main.tile[i, j].frameY == (short) 36) Type = 542; if (Main.tile[i, j].frameY == (short) 54) Type = 543; } else if (Main.tile[i, j].type == (byte) 144) { if (Main.tile[i, j].frameX == (short) 0) Type = 583; if (Main.tile[i, j].frameX == (short) 18) Type = 584; if (Main.tile[i, j].frameX == (short) 36) Type = 585; } else if (Main.tile[i, j].type == (byte) 130) Type = 511; else if (Main.tile[i, j].type == (byte) 131) Type = 512; else if (Main.tile[i, j].type == (byte) 61 || Main.tile[i, j].type == (byte) 74) { if (Main.tile[i, j].frameX == (short) 144) Item.NewItem(i * 16, j * 16, 16, 16, 331, WorldGen.genRand.Next(2, 4)); else if (Main.tile[i, j].frameX == (short) 162) Type = 223; else if (Main.tile[i, j].frameX >= (short) 108 && Main.tile[i, j].frameX <= (short) 126 && WorldGen.genRand.Next(100) == 0) Type = 208; else if (WorldGen.genRand.Next(100) == 0) Type = 195; } else if (Main.tile[i, j].type == (byte) 59 || Main.tile[i, j].type == (byte) 60) Type = 176; else if (Main.tile[i, j].type == (byte) 71 || Main.tile[i, j].type == (byte) 72) { if (WorldGen.genRand.Next(50) == 0) Type = 194; else if (WorldGen.genRand.Next(2) == 0) Type = 183; } else if (Main.tile[i, j].type >= (byte) 63 && Main.tile[i, j].type <= (byte) 68) Type = (int) Main.tile[i, j].type - 63 + 177; else if (Main.tile[i, j].type == (byte) 50) Type = Main.tile[i, j].frameX != (short) 90 ? 149 : 165; else if (Main.tileAlch[(int) Main.tile[i, j].type] && Main.tile[i, j].type > (byte) 82) { int num7 = (int) Main.tile[i, j].frameX / 18; bool flag = false; if (Main.tile[i, j].type == (byte) 84) flag = true; if (num7 == 0 && Main.dayTime) flag = true; if (num7 == 1 && !Main.dayTime) flag = true; if (num7 == 3 && Main.bloodMoon) flag = true; Type = 313 + num7; if (flag) Item.NewItem(i * 16, j * 16, 16, 16, 307 + num7, WorldGen.genRand.Next(1, 4)); } if (Type > 0) Item.NewItem(i * 16, j * 16, 16, 16, Type, pfix: -1); } Main.tile[i, j].active = false; Main.tile[i, j].frameX = (short) -1; Main.tile[i, j].frameY = (short) -1; Main.tile[i, j].frameNumber = (byte) 0; if (Main.tile[i, j].type == (byte) 58 && j > Main.maxTilesY - 200) { Main.tile[i, j].lava = true; Main.tile[i, j].liquid = (byte) 128; } Main.tile[i, j].type = (byte) 0; WorldGen.SquareTileFrame(i, j); } } public static bool PlayerLOS(int x, int y) { Rectangle rectangle1 = new Rectangle(x * 16, y * 16, 16, 16); for (int index = 0; index < (int) byte.MaxValue; ++index) { if (Main.player[index].active) { Rectangle rectangle2 = new Rectangle((int) ((double) Main.player[index].position.X + (double) Main.player[index].width * 0.5 - (double) NPC.sWidth * 0.6), (int) ((double) Main.player[index].position.Y + (double) Main.player[index].height * 0.5 - (double) NPC.sHeight * 0.6), (int) ((double) NPC.sWidth * 1.2), (int) ((double) NPC.sHeight * 1.2)); if (rectangle1.Intersects(rectangle2)) return true; } } return false; } public static void hardUpdateWorld(int i, int j) { if (!Main.hardMode) return; int type = (int) Main.tile[i, j].type; if (type == 117 && (double) j > Main.rockLayer && Main.rand.Next(110) == 0) { int num1 = WorldGen.genRand.Next(4); int num2 = 0; int num3 = 0; switch (num1) { case 0: num2 = -1; break; case 1: num2 = 1; break; default: num3 = num1 != 0 ? 1 : -1; break; } if (!Main.tile[i + num2, j + num3].active) { int num4 = 0; int num5 = 6; for (int index1 = i - num5; index1 <= i + num5; ++index1) { for (int index2 = j - num5; index2 <= j + num5; ++index2) { if (Main.tile[index1, index2].active && Main.tile[index1, index2].type == (byte) 129) ++num4; } } if (num4 < 2) { WorldGen.PlaceTile(i + num2, j + num3, 129, true); NetMessage.SendTileSquare(-1, i + num2, j + num3, 1); } } } if (type == 23 || type == 25 || type == 32 || type == 112) { bool flag = true; while (flag) { flag = false; int index3 = i + WorldGen.genRand.Next(-3, 4); int index4 = j + WorldGen.genRand.Next(-3, 4); if (Main.tile[index3, index4].type == (byte) 2) { if (WorldGen.genRand.Next(2) == 0) flag = true; Main.tile[index3, index4].type = (byte) 23; WorldGen.SquareTileFrame(index3, index4); NetMessage.SendTileSquare(-1, index3, index4, 1); } else if (Main.tile[index3, index4].type == (byte) 1) { if (WorldGen.genRand.Next(2) == 0) flag = true; Main.tile[index3, index4].type = (byte) 25; WorldGen.SquareTileFrame(index3, index4); NetMessage.SendTileSquare(-1, index3, index4, 1); } else if (Main.tile[index3, index4].type == (byte) 53) { if (WorldGen.genRand.Next(2) == 0) flag = true; Main.tile[index3, index4].type = (byte) 112; WorldGen.SquareTileFrame(index3, index4); NetMessage.SendTileSquare(-1, index3, index4, 1); } else if (Main.tile[index3, index4].type == (byte) 59) { if (WorldGen.genRand.Next(2) == 0) flag = true; Main.tile[index3, index4].type = (byte) 0; WorldGen.SquareTileFrame(index3, index4); NetMessage.SendTileSquare(-1, index3, index4, 1); } else if (Main.tile[index3, index4].type == (byte) 60) { if (WorldGen.genRand.Next(2) == 0) flag = true; Main.tile[index3, index4].type = (byte) 23; WorldGen.SquareTileFrame(index3, index4); NetMessage.SendTileSquare(-1, index3, index4, 1); } else if (Main.tile[index3, index4].type == (byte) 69) { if (WorldGen.genRand.Next(2) == 0) flag = true; Main.tile[index3, index4].type = (byte) 32; WorldGen.SquareTileFrame(index3, index4); NetMessage.SendTileSquare(-1, index3, index4, 1); } } } if (type != 109 && type != 110 && type != 113 && type != 115 && type != 116 && type != 117 && type != 118) return; bool flag1 = true; while (flag1) { flag1 = false; int index5 = i + WorldGen.genRand.Next(-3, 4); int index6 = j + WorldGen.genRand.Next(-3, 4); if (Main.tile[index5, index6].type == (byte) 2) { if (WorldGen.genRand.Next(2) == 0) flag1 = true; Main.tile[index5, index6].type = (byte) 109; WorldGen.SquareTileFrame(index5, index6); NetMessage.SendTileSquare(-1, index5, index6, 1); } else if (Main.tile[index5, index6].type == (byte) 1) { if (WorldGen.genRand.Next(2) == 0) flag1 = true; Main.tile[index5, index6].type = (byte) 117; WorldGen.SquareTileFrame(index5, index6); NetMessage.SendTileSquare(-1, index5, index6, 1); } else if (Main.tile[index5, index6].type == (byte) 53) { if (WorldGen.genRand.Next(2) == 0) flag1 = true; Main.tile[index5, index6].type = (byte) 116; WorldGen.SquareTileFrame(index5, index6); NetMessage.SendTileSquare(-1, index5, index6, 1); } } } public static bool SolidTile(int i, int j) { try { if (Main.tile[i, j] == null) return true; if (Main.tile[i, j].active) { if (Main.tileSolid[(int) Main.tile[i, j].type]) { if (!Main.tileSolidTop[(int) Main.tile[i, j].type]) return true; } } } catch { } return false; } public static void MineHouse(int i, int j) { if (i < 50 || i > Main.maxTilesX - 50 || j < 50 || j > Main.maxTilesY - 50) return; int num1 = WorldGen.genRand.Next(6, 12); int num2 = WorldGen.genRand.Next(3, 6); int num3 = WorldGen.genRand.Next(15, 30); int num4 = WorldGen.genRand.Next(15, 30); if (WorldGen.SolidTile(i, j) || Main.tile[i, j].wall > (byte) 0) return; int num5 = j - num1; int num6 = j + num2; for (int index1 = 0; index1 < 2; ++index1) { bool flag1 = true; int i1 = i; int j1 = j; int num7 = -1; int num8 = num3; if (index1 == 1) { num7 = 1; num8 = num4; ++i1; } while (flag1) { if (j1 - num1 < num5) num5 = j1 - num1; if (j1 + num2 > num6) num6 = j1 + num2; for (int index2 = 0; index2 < 2; ++index2) { int j2 = j1; bool flag2 = true; int num9 = num1; int num10 = -1; if (index2 == 1) { ++j2; num9 = num2; num10 = 1; } while (flag2) { if (i1 != i && Main.tile[i1 - num7, j2].wall != (byte) 27 && (WorldGen.SolidTile(i1 - num7, j2) || !Main.tile[i1 - num7, j2].active)) { Main.tile[i1 - num7, j2].active = true; Main.tile[i1 - num7, j2].type = (byte) 30; } if (WorldGen.SolidTile(i1 - 1, j2)) Main.tile[i1 - 1, j2].type = (byte) 30; if (WorldGen.SolidTile(i1 + 1, j2)) Main.tile[i1 + 1, j2].type = (byte) 30; if (WorldGen.SolidTile(i1, j2)) { int num11 = 0; if (WorldGen.SolidTile(i1 - 1, j2)) ++num11; if (WorldGen.SolidTile(i1 + 1, j2)) ++num11; if (WorldGen.SolidTile(i1, j2 - 1)) ++num11; if (WorldGen.SolidTile(i1, j2 + 1)) ++num11; if (num11 < 2) { Main.tile[i1, j2].active = false; } else { flag2 = false; Main.tile[i1, j2].type = (byte) 30; } } else { Main.tile[i1, j2].wall = (byte) 27; Main.tile[i1, j2].liquid = (byte) 0; Main.tile[i1, j2].lava = false; } j2 += num10; --num9; if (num9 <= 0) { if (!Main.tile[i1, j2].active) { Main.tile[i1, j2].active = true; Main.tile[i1, j2].type = (byte) 30; } flag2 = false; } } } --num8; i1 += num7; if (WorldGen.SolidTile(i1, j1)) { int num12 = 0; int num13 = 0; int j3 = j1; bool flag3 = true; while (flag3) { --j3; ++num12; if (WorldGen.SolidTile(i1 - num7, j3)) { num12 = 999; flag3 = false; } else if (!WorldGen.SolidTile(i1, j3)) flag3 = false; } int j4 = j1; bool flag4 = true; while (flag4) { ++j4; ++num13; if (WorldGen.SolidTile(i1 - num7, j4)) { num13 = 999; flag4 = false; } else if (!WorldGen.SolidTile(i1, j4)) flag4 = false; } if (num13 <= num12) { if (num13 > num2) num8 = 0; else j1 += num13 + 1; } else if (num12 > num1) num8 = 0; else j1 -= num12 + 1; } if (num8 <= 0) flag1 = false; } } int num14 = i - num3 - 1; int num15 = i + num4 + 2; int num16 = num5 - 1; int num17 = num6 + 2; for (int i2 = num14; i2 < num15; ++i2) { for (int j5 = num16; j5 < num17; ++j5) { if (Main.tile[i2, j5].wall == (byte) 27 && !Main.tile[i2, j5].active) { if (Main.tile[i2 - 1, j5].wall != (byte) 27 && i2 < i && !WorldGen.SolidTile(i2 - 1, j5)) { WorldGen.PlaceTile(i2, j5, 30, true); Main.tile[i2, j5].wall = (byte) 0; } if (Main.tile[i2 + 1, j5].wall != (byte) 27 && i2 > i && !WorldGen.SolidTile(i2 + 1, j5)) { WorldGen.PlaceTile(i2, j5, 30, true); Main.tile[i2, j5].wall = (byte) 0; } for (int i3 = i2 - 1; i3 <= i2 + 1; ++i3) { for (int j6 = j5 - 1; j6 <= j5 + 1; ++j6) { if (WorldGen.SolidTile(i3, j6)) Main.tile[i3, j6].type = (byte) 30; } } } if (Main.tile[i2, j5].type == (byte) 30 && Main.tile[i2 - 1, j5].wall == (byte) 27 && Main.tile[i2 + 1, j5].wall == (byte) 27 && (Main.tile[i2, j5 - 1].wall == (byte) 27 || Main.tile[i2, j5 - 1].active) && (Main.tile[i2, j5 + 1].wall == (byte) 27 || Main.tile[i2, j5 + 1].active)) { Main.tile[i2, j5].active = false; Main.tile[i2, j5].wall = (byte) 27; } } } for (int index3 = num14; index3 < num15; ++index3) { for (int index4 = num16; index4 < num17; ++index4) { if (Main.tile[index3, index4].type == (byte) 30) { if (Main.tile[index3 - 1, index4].wall == (byte) 27 && Main.tile[index3 + 1, index4].wall == (byte) 27 && !Main.tile[index3 - 1, index4].active && !Main.tile[index3 + 1, index4].active) { Main.tile[index3, index4].active = false; Main.tile[index3, index4].wall = (byte) 27; } if (Main.tile[index3, index4 - 1].type != (byte) 21 && Main.tile[index3 - 1, index4].wall == (byte) 27 && Main.tile[index3 + 1, index4].type == (byte) 30 && Main.tile[index3 + 2, index4].wall == (byte) 27 && !Main.tile[index3 - 1, index4].active && !Main.tile[index3 + 2, index4].active) { Main.tile[index3, index4].active = false; Main.tile[index3, index4].wall = (byte) 27; Main.tile[index3 + 1, index4].active = false; Main.tile[index3 + 1, index4].wall = (byte) 27; } if (Main.tile[index3, index4 - 1].wall == (byte) 27 && Main.tile[index3, index4 + 1].wall == (byte) 27 && !Main.tile[index3, index4 - 1].active && !Main.tile[index3, index4 + 1].active) { Main.tile[index3, index4].active = false; Main.tile[index3, index4].wall = (byte) 27; } } } } for (int i4 = num14; i4 < num15; ++i4) { for (int j7 = num17; j7 > num16; --j7) { bool flag5 = false; if (Main.tile[i4, j7].active && Main.tile[i4, j7].type == (byte) 30) { int num18 = -1; for (int index5 = 0; index5 < 2; ++index5) { if (!WorldGen.SolidTile(i4 + num18, j7) && Main.tile[i4 + num18, j7].wall == (byte) 0) { int num19 = 0; int j8 = j7; int num20 = j7; while (Main.tile[i4, j8].active && Main.tile[i4, j8].type == (byte) 30 && !WorldGen.SolidTile(i4 + num18, j8) && Main.tile[i4 + num18, j8].wall == (byte) 0) { --j8; ++num19; } int num21 = j8 + 1 + 1; if (num19 > 4) { if (WorldGen.genRand.Next(2) == 0) { int j9 = num20 - 1; bool flag6 = true; for (int index6 = i4 - 2; index6 <= i4 + 2; ++index6) { for (int index7 = j9 - 2; index7 <= j9; ++index7) { if (index6 != i4 && Main.tile[index6, index7].active) flag6 = false; } } if (flag6) { Main.tile[i4, j9].active = false; Main.tile[i4, j9 - 1].active = false; Main.tile[i4, j9 - 2].active = false; WorldGen.PlaceTile(i4, j9, 10, true); flag5 = true; } } if (!flag5) { for (int index8 = num21; index8 < num20; ++index8) Main.tile[i4, index8].type = (byte) 124; } } } num18 = 1; } } if (flag5) break; } } for (int i5 = num14; i5 < num15; i5 = i5 + WorldGen.genRand.Next(3) + 1) { bool flag = true; for (int j10 = num16; j10 < num17; ++j10) { for (int i6 = i5 - 2; i6 <= i5 + 2; ++i6) { if (Main.tile[i6, j10].active && (!WorldGen.SolidTile(i6, j10) || Main.tile[i6, j10].type == (byte) 10)) flag = false; } } if (flag) { for (int j11 = num16; j11 < num17; ++j11) { if (Main.tile[i5, j11].wall == (byte) 27 && !Main.tile[i5, j11].active) WorldGen.PlaceTile(i5, j11, 124, true); } } } for (int index9 = 0; index9 < 4; ++index9) { int i7 = WorldGen.genRand.Next(num14 + 2, num15 - 1); int index10; for (index10 = WorldGen.genRand.Next(num16 + 2, num17 - 1); Main.tile[i7, index10].wall != (byte) 27; index10 = WorldGen.genRand.Next(num16 + 2, num17 - 1)) i7 = WorldGen.genRand.Next(num14 + 2, num15 - 1); while (Main.tile[i7, index10].active) --index10; while (!Main.tile[i7, index10].active) ++index10; int j12 = index10 - 1; if (Main.tile[i7, j12].wall == (byte) 27) { if (WorldGen.genRand.Next(3) == 0) { int type = WorldGen.genRand.Next(9); if (type == 0) type = 14; if (type == 1) type = 16; if (type == 2) type = 18; if (type == 3) type = 86; if (type == 4) type = 87; if (type == 5) type = 94; if (type == 6) type = 101; if (type == 7) type = 104; if (type == 8) type = 106; WorldGen.PlaceTile(i7, j12, type, true); } else { int style = WorldGen.genRand.Next(2, 43); WorldGen.PlaceTile(i7, j12, 105, true, true, style: style); } } } } public static void CountTiles(int X) { if (X == 0) { WorldGen.totalEvil = WorldGen.totalEvil2; WorldGen.totalSolid = WorldGen.totalSolid2; WorldGen.totalGood = WorldGen.totalGood2; float num1 = (float) Math.Round((double) ((float) WorldGen.totalGood / (float) WorldGen.totalSolid) * 100.0); float num2 = (float) Math.Round((double) ((float) WorldGen.totalEvil / (float) WorldGen.totalSolid) * 100.0); WorldGen.tGood = (byte) num1; WorldGen.tEvil = (byte) num2; if (Main.netMode == 2) NetMessage.SendData(57); WorldGen.totalEvil2 = 0; WorldGen.totalSolid2 = 0; WorldGen.totalGood2 = 0; } for (int j = 0; j < Main.maxTilesY; ++j) { int num = 1; if ((double) j <= Main.worldSurface) num *= 5; if (WorldGen.SolidTile(X, j)) { if (Main.tile[X, j].type == (byte) 109 || Main.tile[X, j].type == (byte) 116 || Main.tile[X, j].type == (byte) 117) WorldGen.totalGood2 += num; else if (Main.tile[X, j].type == (byte) 23 || Main.tile[X, j].type == (byte) 25 || Main.tile[X, j].type == (byte) 112) WorldGen.totalEvil2 += num; WorldGen.totalSolid2 += num; } } } public static void UpdateWorld() { WorldGen.UpdateMech(); ++WorldGen.totalD; if (WorldGen.totalD >= 10) { WorldGen.totalD = 0; WorldGen.CountTiles(WorldGen.totalX); ++WorldGen.totalX; if (WorldGen.totalX >= Main.maxTilesX) WorldGen.totalX = 0; } ++Liquid.skipCount; if (Liquid.skipCount > 1) { Liquid.UpdateLiquid(); Liquid.skipCount = 0; } float num1 = 3E-05f * (float) Main.worldRate; float num2 = 1.5E-05f * (float) Main.worldRate; bool flag1 = false; ++WorldGen.spawnDelay; if (Main.invasionType > 0) WorldGen.spawnDelay = 0; if (WorldGen.spawnDelay >= 20) { flag1 = true; WorldGen.spawnDelay = 0; if (WorldGen.spawnNPC != 37) { for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].homeless && Main.npc[index].townNPC) { WorldGen.spawnNPC = Main.npc[index].type; break; } } } } for (int index1 = 0; (double) index1 < (double) (Main.maxTilesX * Main.maxTilesY) * (double) num1; ++index1) { int index2 = WorldGen.genRand.Next(10, Main.maxTilesX - 10); int index3 = WorldGen.genRand.Next(10, (int) Main.worldSurface - 1); int num3 = index2 - 1; int num4 = index2 + 2; int index4 = index3 - 1; int num5 = index3 + 2; if (num3 < 10) num3 = 10; if (num4 > Main.maxTilesX - 10) num4 = Main.maxTilesX - 10; if (index4 < 10) index4 = 10; if (num5 > Main.maxTilesY - 10) num5 = Main.maxTilesY - 10; if (Main.tile[index2, index3] != null) { if (Main.tileAlch[(int) Main.tile[index2, index3].type]) WorldGen.GrowAlch(index2, index3); if (Main.tile[index2, index3].liquid > (byte) 32) { if (Main.tile[index2, index3].active && (Main.tile[index2, index3].type == (byte) 3 || Main.tile[index2, index3].type == (byte) 20 || Main.tile[index2, index3].type == (byte) 24 || Main.tile[index2, index3].type == (byte) 27 || Main.tile[index2, index3].type == (byte) 73)) { WorldGen.KillTile(index2, index3); if (Main.netMode == 2) NetMessage.SendData(17, number2: ((float) index2), number3: ((float) index3)); } } else if (Main.tile[index2, index3].active) { WorldGen.hardUpdateWorld(index2, index3); if (Main.tile[index2, index3].type == (byte) 80) { if (WorldGen.genRand.Next(15) == 0) WorldGen.GrowCactus(index2, index3); } else if (Main.tile[index2, index3].type == (byte) 53) { if (!Main.tile[index2, index4].active) { if (index2 < 250 || index2 > Main.maxTilesX - 250) { if (WorldGen.genRand.Next(500) == 0 && Main.tile[index2, index4].liquid == byte.MaxValue && Main.tile[index2, index4 - 1].liquid == byte.MaxValue && Main.tile[index2, index4 - 2].liquid == byte.MaxValue && Main.tile[index2, index4 - 3].liquid == byte.MaxValue && Main.tile[index2, index4 - 4].liquid == byte.MaxValue) { WorldGen.PlaceTile(index2, index4, 81, true); if (Main.netMode == 2 && Main.tile[index2, index4].active) NetMessage.SendTileSquare(-1, index2, index4, 1); } } else if (index2 > 400 && index2 < Main.maxTilesX - 400 && WorldGen.genRand.Next(300) == 0) WorldGen.GrowCactus(index2, index3); } } else if (Main.tile[index2, index3].type == (byte) 116 || Main.tile[index2, index3].type == (byte) 112) { if (!Main.tile[index2, index4].active && index2 > 400 && index2 < Main.maxTilesX - 400 && WorldGen.genRand.Next(300) == 0) WorldGen.GrowCactus(index2, index3); } else if (Main.tile[index2, index3].type == (byte) 78) { if (!Main.tile[index2, index4].active) { WorldGen.PlaceTile(index2, index4, 3, true); if (Main.netMode == 2 && Main.tile[index2, index4].active) NetMessage.SendTileSquare(-1, index2, index4, 1); } } else if (Main.tile[index2, index3].type == (byte) 2 || Main.tile[index2, index3].type == (byte) 23 || Main.tile[index2, index3].type == (byte) 32 || Main.tile[index2, index3].type == (byte) 109) { int grass = (int) Main.tile[index2, index3].type; if (!Main.tile[index2, index4].active && WorldGen.genRand.Next(12) == 0 && grass == 2) { WorldGen.PlaceTile(index2, index4, 3, true); if (Main.netMode == 2 && Main.tile[index2, index4].active) NetMessage.SendTileSquare(-1, index2, index4, 1); } if (!Main.tile[index2, index4].active && WorldGen.genRand.Next(10) == 0 && grass == 23) { WorldGen.PlaceTile(index2, index4, 24, true); if (Main.netMode == 2 && Main.tile[index2, index4].active) NetMessage.SendTileSquare(-1, index2, index4, 1); } if (!Main.tile[index2, index4].active && WorldGen.genRand.Next(10) == 0 && grass == 109) { WorldGen.PlaceTile(index2, index4, 110, true); if (Main.netMode == 2 && Main.tile[index2, index4].active) NetMessage.SendTileSquare(-1, index2, index4, 1); } bool flag2 = false; for (int i = num3; i < num4; ++i) { for (int j = index4; j < num5; ++j) { if ((index2 != i || index3 != j) && Main.tile[i, j].active) { if (grass == 32) grass = 23; if (Main.tile[i, j].type == (byte) 0 || grass == 23 && Main.tile[i, j].type == (byte) 2 || grass == 23 && Main.tile[i, j].type == (byte) 109) { WorldGen.SpreadGrass(i, j, grass: grass, repeat: false); if (grass == 23) WorldGen.SpreadGrass(i, j, 2, grass, false); if (grass == 23) WorldGen.SpreadGrass(i, j, 109, grass, false); if ((int) Main.tile[i, j].type == grass) { WorldGen.SquareTileFrame(i, j); flag2 = true; } } if (Main.tile[i, j].type == (byte) 0 || grass == 109 && Main.tile[i, j].type == (byte) 2 || grass == 109 && Main.tile[i, j].type == (byte) 23) { WorldGen.SpreadGrass(i, j, grass: grass, repeat: false); if (grass == 109) WorldGen.SpreadGrass(i, j, 2, grass, false); if (grass == 109) WorldGen.SpreadGrass(i, j, 23, grass, false); if ((int) Main.tile[i, j].type == grass) { WorldGen.SquareTileFrame(i, j); flag2 = true; } } } } } if (Main.netMode == 2 && flag2) NetMessage.SendTileSquare(-1, index2, index3, 3); } else if (Main.tile[index2, index3].type == (byte) 20 && WorldGen.genRand.Next(20) == 0 && !WorldGen.PlayerLOS(index2, index3)) WorldGen.GrowTree(index2, index3); if (Main.tile[index2, index3].type == (byte) 3 && WorldGen.genRand.Next(20) == 0 && Main.tile[index2, index3].frameX < (short) 144) { Main.tile[index2, index3].type = (byte) 73; if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index2, index3, 3); } if (Main.tile[index2, index3].type == (byte) 110 && WorldGen.genRand.Next(20) == 0 && Main.tile[index2, index3].frameX < (short) 144) { Main.tile[index2, index3].type = (byte) 113; if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index2, index3, 3); } if (Main.tile[index2, index3].type == (byte) 32 && WorldGen.genRand.Next(3) == 0) { int index5 = index2; int index6 = index3; int num6 = 0; if (Main.tile[index5 + 1, index6].active && Main.tile[index5 + 1, index6].type == (byte) 32) ++num6; if (Main.tile[index5 - 1, index6].active && Main.tile[index5 - 1, index6].type == (byte) 32) ++num6; if (Main.tile[index5, index6 + 1].active && Main.tile[index5, index6 + 1].type == (byte) 32) ++num6; if (Main.tile[index5, index6 - 1].active && Main.tile[index5, index6 - 1].type == (byte) 32) ++num6; if (num6 < 3 || Main.tile[index2, index3].type == (byte) 23) { switch (WorldGen.genRand.Next(4)) { case 0: --index6; break; case 1: ++index6; break; case 2: --index5; break; case 3: ++index5; break; } if (!Main.tile[index5, index6].active) { int num7 = 0; if (Main.tile[index5 + 1, index6].active && Main.tile[index5 + 1, index6].type == (byte) 32) ++num7; if (Main.tile[index5 - 1, index6].active && Main.tile[index5 - 1, index6].type == (byte) 32) ++num7; if (Main.tile[index5, index6 + 1].active && Main.tile[index5, index6 + 1].type == (byte) 32) ++num7; if (Main.tile[index5, index6 - 1].active && Main.tile[index5, index6 - 1].type == (byte) 32) ++num7; if (num7 < 2) { int num8 = 7; int num9 = index5 - num8; int num10 = index5 + num8; int num11 = index6 - num8; int num12 = index6 + num8; bool flag3 = false; for (int index7 = num9; index7 < num10; ++index7) { for (int index8 = num11; index8 < num12; ++index8) { if (Math.Abs(index7 - index5) * 2 + Math.Abs(index8 - index6) < 9 && Main.tile[index7, index8].active && Main.tile[index7, index8].type == (byte) 23 && Main.tile[index7, index8 - 1].active && Main.tile[index7, index8 - 1].type == (byte) 32 && Main.tile[index7, index8 - 1].liquid == (byte) 0) { flag3 = true; break; } } } if (flag3) { Main.tile[index5, index6].type = (byte) 32; Main.tile[index5, index6].active = true; WorldGen.SquareTileFrame(index5, index6); if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index5, index6, 3); } } } } } } else if (flag1 && WorldGen.spawnNPC > 0) WorldGen.SpawnNPC(index2, index3); if (Main.tile[index2, index3].active) { if ((Main.tile[index2, index3].type == (byte) 2 || Main.tile[index2, index3].type == (byte) 52) && WorldGen.genRand.Next(40) == 0 && !Main.tile[index2, index3 + 1].active && !Main.tile[index2, index3 + 1].lava) { bool flag4 = false; for (int index9 = index3; index9 > index3 - 10; --index9) { if (Main.tile[index2, index9].active && Main.tile[index2, index9].type == (byte) 2) { flag4 = true; break; } } if (flag4) { int index10 = index2; int index11 = index3 + 1; Main.tile[index10, index11].type = (byte) 52; Main.tile[index10, index11].active = true; WorldGen.SquareTileFrame(index10, index11); if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index10, index11, 3); } } if (Main.tile[index2, index3].type == (byte) 60) { int type = (int) Main.tile[index2, index3].type; if (!Main.tile[index2, index4].active && WorldGen.genRand.Next(7) == 0) { WorldGen.PlaceTile(index2, index4, 61, true); if (Main.netMode == 2 && Main.tile[index2, index4].active) NetMessage.SendTileSquare(-1, index2, index4, 1); } else if (WorldGen.genRand.Next(500) == 0 && (!Main.tile[index2, index4].active || Main.tile[index2, index4].type == (byte) 61 || Main.tile[index2, index4].type == (byte) 74 || Main.tile[index2, index4].type == (byte) 69) && !WorldGen.PlayerLOS(index2, index3)) WorldGen.GrowTree(index2, index3); bool flag5 = false; for (int i = num3; i < num4; ++i) { for (int j = index4; j < num5; ++j) { if ((index2 != i || index3 != j) && Main.tile[i, j].active && Main.tile[i, j].type == (byte) 59) { WorldGen.SpreadGrass(i, j, 59, type, false); if ((int) Main.tile[i, j].type == type) { WorldGen.SquareTileFrame(i, j); flag5 = true; } } } } if (Main.netMode == 2 && flag5) NetMessage.SendTileSquare(-1, index2, index3, 3); } if (Main.tile[index2, index3].type == (byte) 61 && WorldGen.genRand.Next(3) == 0 && Main.tile[index2, index3].frameX < (short) 144) { Main.tile[index2, index3].type = (byte) 74; if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index2, index3, 3); } if ((Main.tile[index2, index3].type == (byte) 60 || Main.tile[index2, index3].type == (byte) 62) && WorldGen.genRand.Next(15) == 0 && !Main.tile[index2, index3 + 1].active && !Main.tile[index2, index3 + 1].lava) { bool flag6 = false; for (int index12 = index3; index12 > index3 - 10; --index12) { if (Main.tile[index2, index12].active && Main.tile[index2, index12].type == (byte) 60) { flag6 = true; break; } } if (flag6) { int index13 = index2; int index14 = index3 + 1; Main.tile[index13, index14].type = (byte) 62; Main.tile[index13, index14].active = true; WorldGen.SquareTileFrame(index13, index14); if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index13, index14, 3); } } if ((Main.tile[index2, index3].type == (byte) 109 || Main.tile[index2, index3].type == (byte) 115) && WorldGen.genRand.Next(15) == 0 && !Main.tile[index2, index3 + 1].active && !Main.tile[index2, index3 + 1].lava) { bool flag7 = false; for (int index15 = index3; index15 > index3 - 10; --index15) { if (Main.tile[index2, index15].active && Main.tile[index2, index15].type == (byte) 109) { flag7 = true; break; } } if (flag7) { int index16 = index2; int index17 = index3 + 1; Main.tile[index16, index17].type = (byte) 115; Main.tile[index16, index17].active = true; WorldGen.SquareTileFrame(index16, index17); if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index16, index17, 3); } } } } } for (int index18 = 0; (double) index18 < (double) (Main.maxTilesX * Main.maxTilesY) * (double) num2; ++index18) { int index19 = WorldGen.genRand.Next(10, Main.maxTilesX - 10); int index20 = WorldGen.genRand.Next((int) Main.worldSurface - 1, Main.maxTilesY - 20); int num13 = index19 - 1; int num14 = index19 + 2; int index21 = index20 - 1; int num15 = index20 + 2; if (num13 < 10) num13 = 10; if (num14 > Main.maxTilesX - 10) num14 = Main.maxTilesX - 10; if (index21 < 10) index21 = 10; if (num15 > Main.maxTilesY - 10) num15 = Main.maxTilesY - 10; if (Main.tile[index19, index20] != null) { if (Main.tileAlch[(int) Main.tile[index19, index20].type]) WorldGen.GrowAlch(index19, index20); if (Main.tile[index19, index20].liquid <= (byte) 32) { if (Main.tile[index19, index20].active) { WorldGen.hardUpdateWorld(index19, index20); if (Main.tile[index19, index20].type == (byte) 23 && !Main.tile[index19, index21].active && WorldGen.genRand.Next(1) == 0) { WorldGen.PlaceTile(index19, index21, 24, true); if (Main.netMode == 2 && Main.tile[index19, index21].active) NetMessage.SendTileSquare(-1, index19, index21, 1); } if (Main.tile[index19, index20].type == (byte) 32 && WorldGen.genRand.Next(3) == 0) { int index22 = index19; int index23 = index20; int num16 = 0; if (Main.tile[index22 + 1, index23].active && Main.tile[index22 + 1, index23].type == (byte) 32) ++num16; if (Main.tile[index22 - 1, index23].active && Main.tile[index22 - 1, index23].type == (byte) 32) ++num16; if (Main.tile[index22, index23 + 1].active && Main.tile[index22, index23 + 1].type == (byte) 32) ++num16; if (Main.tile[index22, index23 - 1].active && Main.tile[index22, index23 - 1].type == (byte) 32) ++num16; if (num16 < 3 || Main.tile[index19, index20].type == (byte) 23) { switch (WorldGen.genRand.Next(4)) { case 0: --index23; break; case 1: ++index23; break; case 2: --index22; break; case 3: ++index22; break; } if (!Main.tile[index22, index23].active) { int num17 = 0; if (Main.tile[index22 + 1, index23].active && Main.tile[index22 + 1, index23].type == (byte) 32) ++num17; if (Main.tile[index22 - 1, index23].active && Main.tile[index22 - 1, index23].type == (byte) 32) ++num17; if (Main.tile[index22, index23 + 1].active && Main.tile[index22, index23 + 1].type == (byte) 32) ++num17; if (Main.tile[index22, index23 - 1].active && Main.tile[index22, index23 - 1].type == (byte) 32) ++num17; if (num17 < 2) { int num18 = 7; int num19 = index22 - num18; int num20 = index22 + num18; int num21 = index23 - num18; int num22 = index23 + num18; bool flag8 = false; for (int index24 = num19; index24 < num20; ++index24) { for (int index25 = num21; index25 < num22; ++index25) { if (Math.Abs(index24 - index22) * 2 + Math.Abs(index25 - index23) < 9 && Main.tile[index24, index25].active && Main.tile[index24, index25].type == (byte) 23 && Main.tile[index24, index25 - 1].active && Main.tile[index24, index25 - 1].type == (byte) 32 && Main.tile[index24, index25 - 1].liquid == (byte) 0) { flag8 = true; break; } } } if (flag8) { Main.tile[index22, index23].type = (byte) 32; Main.tile[index22, index23].active = true; WorldGen.SquareTileFrame(index22, index23); if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index22, index23, 3); } } } } } if (Main.tile[index19, index20].type == (byte) 60) { int type = (int) Main.tile[index19, index20].type; if (!Main.tile[index19, index21].active && WorldGen.genRand.Next(10) == 0) { WorldGen.PlaceTile(index19, index21, 61, true); if (Main.netMode == 2 && Main.tile[index19, index21].active) NetMessage.SendTileSquare(-1, index19, index21, 1); } bool flag9 = false; for (int i = num13; i < num14; ++i) { for (int j = index21; j < num15; ++j) { if ((index19 != i || index20 != j) && Main.tile[i, j].active && Main.tile[i, j].type == (byte) 59) { WorldGen.SpreadGrass(i, j, 59, type, false); if ((int) Main.tile[i, j].type == type) { WorldGen.SquareTileFrame(i, j); flag9 = true; } } } } if (Main.netMode == 2 && flag9) NetMessage.SendTileSquare(-1, index19, index20, 3); } if (Main.tile[index19, index20].type == (byte) 61 && WorldGen.genRand.Next(3) == 0 && Main.tile[index19, index20].frameX < (short) 144) { Main.tile[index19, index20].type = (byte) 74; if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index19, index20, 3); } if ((Main.tile[index19, index20].type == (byte) 60 || Main.tile[index19, index20].type == (byte) 62) && WorldGen.genRand.Next(5) == 0 && !Main.tile[index19, index20 + 1].active && !Main.tile[index19, index20 + 1].lava) { bool flag10 = false; for (int index26 = index20; index26 > index20 - 10; --index26) { if (Main.tile[index19, index26].active && Main.tile[index19, index26].type == (byte) 60) { flag10 = true; break; } } if (flag10) { int index27 = index19; int index28 = index20 + 1; Main.tile[index27, index28].type = (byte) 62; Main.tile[index27, index28].active = true; WorldGen.SquareTileFrame(index27, index28); if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index27, index28, 3); } } if (Main.tile[index19, index20].type == (byte) 69 && WorldGen.genRand.Next(3) == 0) { int index29 = index19; int index30 = index20; int num23 = 0; if (Main.tile[index29 + 1, index30].active && Main.tile[index29 + 1, index30].type == (byte) 69) ++num23; if (Main.tile[index29 - 1, index30].active && Main.tile[index29 - 1, index30].type == (byte) 69) ++num23; if (Main.tile[index29, index30 + 1].active && Main.tile[index29, index30 + 1].type == (byte) 69) ++num23; if (Main.tile[index29, index30 - 1].active && Main.tile[index29, index30 - 1].type == (byte) 69) ++num23; if (num23 < 3 || Main.tile[index19, index20].type == (byte) 60) { switch (WorldGen.genRand.Next(4)) { case 0: --index30; break; case 1: ++index30; break; case 2: --index29; break; case 3: ++index29; break; } if (!Main.tile[index29, index30].active) { int num24 = 0; if (Main.tile[index29 + 1, index30].active && Main.tile[index29 + 1, index30].type == (byte) 69) ++num24; if (Main.tile[index29 - 1, index30].active && Main.tile[index29 - 1, index30].type == (byte) 69) ++num24; if (Main.tile[index29, index30 + 1].active && Main.tile[index29, index30 + 1].type == (byte) 69) ++num24; if (Main.tile[index29, index30 - 1].active && Main.tile[index29, index30 - 1].type == (byte) 69) ++num24; if (num24 < 2) { int num25 = 7; int num26 = index29 - num25; int num27 = index29 + num25; int num28 = index30 - num25; int num29 = index30 + num25; bool flag11 = false; for (int index31 = num26; index31 < num27; ++index31) { for (int index32 = num28; index32 < num29; ++index32) { if (Math.Abs(index31 - index29) * 2 + Math.Abs(index32 - index30) < 9 && Main.tile[index31, index32].active && Main.tile[index31, index32].type == (byte) 60 && Main.tile[index31, index32 - 1].active && Main.tile[index31, index32 - 1].type == (byte) 69 && Main.tile[index31, index32 - 1].liquid == (byte) 0) { flag11 = true; break; } } } if (flag11) { Main.tile[index29, index30].type = (byte) 69; Main.tile[index29, index30].active = true; WorldGen.SquareTileFrame(index29, index30); if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index29, index30, 3); } } } } } if (Main.tile[index19, index20].type == (byte) 70) { int type = (int) Main.tile[index19, index20].type; if (!Main.tile[index19, index21].active && WorldGen.genRand.Next(10) == 0) { WorldGen.PlaceTile(index19, index21, 71, true); if (Main.netMode == 2 && Main.tile[index19, index21].active) NetMessage.SendTileSquare(-1, index19, index21, 1); } if (WorldGen.genRand.Next(200) == 0 && !WorldGen.PlayerLOS(index19, index20)) WorldGen.GrowShroom(index19, index20); bool flag12 = false; for (int i = num13; i < num14; ++i) { for (int j = index21; j < num15; ++j) { if ((index19 != i || index20 != j) && Main.tile[i, j].active && Main.tile[i, j].type == (byte) 59) { WorldGen.SpreadGrass(i, j, 59, type, false); if ((int) Main.tile[i, j].type == type) { WorldGen.SquareTileFrame(i, j); flag12 = true; } } } } if (Main.netMode == 2 && flag12) NetMessage.SendTileSquare(-1, index19, index20, 3); } } else if (flag1 && WorldGen.spawnNPC > 0) WorldGen.SpawnNPC(index19, index20); } } } if (Main.rand.Next(100) == 0) WorldGen.PlantAlch(); if (Main.dayTime) return; float num30 = (float) (Main.maxTilesX / 4200); if ((double) Main.rand.Next(8000) >= 10.0 * (double) num30) return; int num31 = 12; Vector2 vector2 = new Vector2((float) ((Main.rand.Next(Main.maxTilesX - 50) + 100) * 16), (float) (Main.rand.Next((int) ((double) Main.maxTilesY * 0.05)) * 16)); float num32 = (float) Main.rand.Next(-100, 101); float num33 = (float) (Main.rand.Next(200) + 100); float num34 = (float) Math.Sqrt((double) num32 * (double) num32 + (double) num33 * (double) num33); float num35 = (float) num31 / num34; float SpeedX = num32 * num35; float SpeedY = num33 * num35; Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, 12, 1000, 10f, Main.myPlayer); } public static void PlaceWall(int i, int j, int type, bool mute = false) { if (i <= 1 || j <= 1 || i >= Main.maxTilesX - 2 || j >= Main.maxTilesY - 2) return; if (Main.tile[i, j] == null) Main.tile[i, j] = new Tile(); if (Main.tile[i, j].wall != (byte) 0) return; Main.tile[i, j].wall = (byte) type; WorldGen.SquareWallFrame(i, j); if (mute) return; Main.PlaySound(0, i * 16, j * 16); } public static void AddPlants() { for (int i = 0; i < Main.maxTilesX; ++i) { for (int index = 1; index < Main.maxTilesY; ++index) { if (Main.tile[i, index].type == (byte) 2 && Main.tile[i, index].active) { if (!Main.tile[i, index - 1].active) WorldGen.PlaceTile(i, index - 1, 3, true); } else if (Main.tile[i, index].type == (byte) 23 && Main.tile[i, index].active && !Main.tile[i, index - 1].active) WorldGen.PlaceTile(i, index - 1, 24, true); } } } public static void SpreadGrass(int i, int j, int dirt = 0, int grass = 2, bool repeat = true) { try { if ((int) Main.tile[i, j].type != dirt || !Main.tile[i, j].active || (double) j < Main.worldSurface && grass == 70 || (double) j >= Main.worldSurface && dirt == 0) return; int num1 = i - 1; int num2 = i + 2; int num3 = j - 1; int num4 = j + 2; if (num1 < 0) num1 = 0; if (num2 > Main.maxTilesX) num2 = Main.maxTilesX; if (num3 < 0) num3 = 0; if (num4 > Main.maxTilesY) num4 = Main.maxTilesY; bool flag = true; for (int index1 = num1; index1 < num2; ++index1) { for (int index2 = num3; index2 < num4; ++index2) { if (!Main.tile[index1, index2].active || !Main.tileSolid[(int) Main.tile[index1, index2].type]) flag = false; if (Main.tile[index1, index2].lava && Main.tile[index1, index2].liquid > (byte) 0) { flag = true; break; } } } if (flag || grass == 23 && Main.tile[i, j - 1].type == (byte) 27) return; Main.tile[i, j].type = (byte) grass; for (int i1 = num1; i1 < num2; ++i1) { for (int j1 = num3; j1 < num4; ++j1) { if (Main.tile[i1, j1].active) { if ((int) Main.tile[i1, j1].type == dirt) { try { if (repeat) { if (WorldGen.grassSpread < 1000) { ++WorldGen.grassSpread; WorldGen.SpreadGrass(i1, j1, dirt, grass); --WorldGen.grassSpread; } } } catch { } } } } } } catch { } } public static void ChasmRunnerSideways(int i, int j, int direction, int steps) { float num1 = (float) steps; Vector2 vector2_1; vector2_1.X = (float) i; vector2_1.Y = (float) j; Vector2 vector2_2; vector2_2.X = (float) WorldGen.genRand.Next(10, 21) * 0.1f * (float) direction; vector2_2.Y = (float) WorldGen.genRand.Next(-10, 10) * 0.01f; double num2 = (double) (WorldGen.genRand.Next(5) + 7); while (num2 > 0.0) { if ((double) num1 > 0.0) { num2 = num2 + (double) WorldGen.genRand.Next(3) - (double) WorldGen.genRand.Next(3); if (num2 < 7.0) num2 = 7.0; if (num2 > 20.0) num2 = 20.0; if ((double) num1 == 1.0 && num2 < 10.0) num2 = 10.0; } else num2 -= (double) WorldGen.genRand.Next(4); if ((double) vector2_1.Y > Main.rockLayer && (double) num1 > 0.0) num1 = 0.0f; --num1; int num3 = (int) ((double) vector2_1.X - num2 * 0.5); int num4 = (int) ((double) vector2_1.X + num2 * 0.5); int num5 = (int) ((double) vector2_1.Y - num2 * 0.5); int num6 = (int) ((double) vector2_1.Y + num2 * 0.5); if (num3 < 0) num3 = 0; if (num4 > Main.maxTilesX - 1) num4 = Main.maxTilesX - 1; if (num5 < 0) num5 = 0; if (num6 > Main.maxTilesY) num6 = Main.maxTilesY; for (int index1 = num3; index1 < num4; ++index1) { for (int index2 = num5; index2 < num6; ++index2) { if ((double) Math.Abs((float) index1 - vector2_1.X) + (double) Math.Abs((float) index2 - vector2_1.Y) < num2 * 0.5 * (1.0 + (double) WorldGen.genRand.Next(-10, 11) * 0.015) && Main.tile[index1, index2].type != (byte) 31 && Main.tile[index1, index2].type != (byte) 22) Main.tile[index1, index2].active = false; } } vector2_1 += vector2_2; vector2_2.Y += (float) WorldGen.genRand.Next(-10, 10) * 0.1f; if ((double) vector2_1.Y < (double) (j - 20)) vector2_2.Y += (float) WorldGen.genRand.Next(20) * 0.01f; if ((double) vector2_1.Y > (double) (j + 20)) vector2_2.Y -= (float) WorldGen.genRand.Next(20) * 0.01f; if ((double) vector2_2.Y < -0.5) vector2_2.Y = -0.5f; if ((double) vector2_2.Y > 0.5) vector2_2.Y = 0.5f; vector2_2.X += (float) WorldGen.genRand.Next(-10, 11) * 0.01f; switch (direction) { case -1: if ((double) vector2_2.X > -0.5) vector2_2.X = -0.5f; if ((double) vector2_2.X < -2.0) { vector2_2.X = -2f; break; } break; case 1: if ((double) vector2_2.X < 0.5) vector2_2.X = 0.5f; if ((double) vector2_2.X > 2.0) { vector2_2.X = 2f; break; } break; } int num7 = (int) ((double) vector2_1.X - num2 * 1.1); int num8 = (int) ((double) vector2_1.X + num2 * 1.1); int num9 = (int) ((double) vector2_1.Y - num2 * 1.1); int num10 = (int) ((double) vector2_1.Y + num2 * 1.1); if (num7 < 1) num7 = 1; if (num8 > Main.maxTilesX - 1) num8 = Main.maxTilesX - 1; if (num9 < 0) num9 = 0; if (num10 > Main.maxTilesY) num10 = Main.maxTilesY; for (int index3 = num7; index3 < num8; ++index3) { for (int index4 = num9; index4 < num10; ++index4) { if ((double) Math.Abs((float) index3 - vector2_1.X) + (double) Math.Abs((float) index4 - vector2_1.Y) < num2 * 1.1 * (1.0 + (double) WorldGen.genRand.Next(-10, 11) * 0.015) && Main.tile[index3, index4].wall != (byte) 3) { if (Main.tile[index3, index4].type != (byte) 25 && index4 > j + WorldGen.genRand.Next(3, 20)) Main.tile[index3, index4].active = true; Main.tile[index3, index4].active = true; if (Main.tile[index3, index4].type != (byte) 31 && Main.tile[index3, index4].type != (byte) 22) Main.tile[index3, index4].type = (byte) 25; if (Main.tile[index3, index4].wall == (byte) 2) Main.tile[index3, index4].wall = (byte) 0; } } } for (int i1 = num7; i1 < num8; ++i1) { for (int j1 = num9; j1 < num10; ++j1) { if ((double) Math.Abs((float) i1 - vector2_1.X) + (double) Math.Abs((float) j1 - vector2_1.Y) < num2 * 1.1 * (1.0 + (double) WorldGen.genRand.Next(-10, 11) * 0.015) && Main.tile[i1, j1].wall != (byte) 3) { if (Main.tile[i1, j1].type != (byte) 31 && Main.tile[i1, j1].type != (byte) 22) Main.tile[i1, j1].type = (byte) 25; Main.tile[i1, j1].active = true; WorldGen.PlaceWall(i1, j1, 3, true); } } } } if (WorldGen.genRand.Next(3) != 0) return; int x = (int) vector2_1.X; int y = (int) vector2_1.Y; while (!Main.tile[x, y].active) ++y; WorldGen.TileRunner(x, y, (double) WorldGen.genRand.Next(2, 6), WorldGen.genRand.Next(3, 7), 22); } public static void ChasmRunner(int i, int j, int steps, bool makeOrb = false) { bool flag1 = false; bool flag2 = false; bool flag3 = false; if (!makeOrb) flag2 = true; float num1 = (float) steps; Vector2 vector2_1; vector2_1.X = (float) i; vector2_1.Y = (float) j; Vector2 vector2_2; vector2_2.X = (float) WorldGen.genRand.Next(-10, 11) * 0.1f; vector2_2.Y = (float) ((double) WorldGen.genRand.Next(11) * 0.200000002980232 + 0.5); int num2 = 5; double num3 = (double) (WorldGen.genRand.Next(5) + 7); while (num3 > 0.0) { if ((double) num1 > 0.0) { num3 = num3 + (double) WorldGen.genRand.Next(3) - (double) WorldGen.genRand.Next(3); if (num3 < 7.0) num3 = 7.0; if (num3 > 20.0) num3 = 20.0; if ((double) num1 == 1.0 && num3 < 10.0) num3 = 10.0; } else if ((double) vector2_1.Y > Main.worldSurface + 45.0) num3 -= (double) WorldGen.genRand.Next(4); if ((double) vector2_1.Y > Main.rockLayer && (double) num1 > 0.0) num1 = 0.0f; --num1; if (!flag1 && (double) vector2_1.Y > Main.worldSurface + 20.0) { flag1 = true; WorldGen.ChasmRunnerSideways((int) vector2_1.X, (int) vector2_1.Y, -1, WorldGen.genRand.Next(20, 40)); WorldGen.ChasmRunnerSideways((int) vector2_1.X, (int) vector2_1.Y, 1, WorldGen.genRand.Next(20, 40)); } if ((double) num1 > (double) num2) { int num4 = (int) ((double) vector2_1.X - num3 * 0.5); int num5 = (int) ((double) vector2_1.X + num3 * 0.5); int num6 = (int) ((double) vector2_1.Y - num3 * 0.5); int num7 = (int) ((double) vector2_1.Y + num3 * 0.5); if (num4 < 0) num4 = 0; if (num5 > Main.maxTilesX - 1) num5 = Main.maxTilesX - 1; if (num6 < 0) num6 = 0; if (num7 > Main.maxTilesY) num7 = Main.maxTilesY; for (int index1 = num4; index1 < num5; ++index1) { for (int index2 = num6; index2 < num7; ++index2) { if ((double) Math.Abs((float) index1 - vector2_1.X) + (double) Math.Abs((float) index2 - vector2_1.Y) < num3 * 0.5 * (1.0 + (double) WorldGen.genRand.Next(-10, 11) * 0.015) && Main.tile[index1, index2].type != (byte) 31 && Main.tile[index1, index2].type != (byte) 22) Main.tile[index1, index2].active = false; } } } if ((double) num1 <= 2.0 && (double) vector2_1.Y < Main.worldSurface + 45.0) num1 = 2f; if ((double) num1 <= 0.0) { if (!flag2) { flag2 = true; WorldGen.AddShadowOrb((int) vector2_1.X, (int) vector2_1.Y); } else if (!flag3) { flag3 = false; bool flag4 = false; int num8 = 0; while (!flag4) { int x = WorldGen.genRand.Next((int) vector2_1.X - 25, (int) vector2_1.X + 25); int y = WorldGen.genRand.Next((int) vector2_1.Y - 50, (int) vector2_1.Y); if (x < 5) x = 5; if (x > Main.maxTilesX - 5) x = Main.maxTilesX - 5; if (y < 5) y = 5; if (y > Main.maxTilesY - 5) y = Main.maxTilesY - 5; if ((double) y > Main.worldSurface) { WorldGen.Place3x2(x, y, 26); if (Main.tile[x, y].type == (byte) 26) { flag4 = true; } else { ++num8; if (num8 >= 10000) flag4 = true; } } else flag4 = true; } } } vector2_1 += vector2_2; vector2_2.X += (float) WorldGen.genRand.Next(-10, 11) * 0.01f; if ((double) vector2_2.X > 0.3) vector2_2.X = 0.3f; if ((double) vector2_2.X < -0.3) vector2_2.X = -0.3f; int num9 = (int) ((double) vector2_1.X - num3 * 1.1); int num10 = (int) ((double) vector2_1.X + num3 * 1.1); int num11 = (int) ((double) vector2_1.Y - num3 * 1.1); int num12 = (int) ((double) vector2_1.Y + num3 * 1.1); if (num9 < 1) num9 = 1; if (num10 > Main.maxTilesX - 1) num10 = Main.maxTilesX - 1; if (num11 < 0) num11 = 0; if (num12 > Main.maxTilesY) num12 = Main.maxTilesY; for (int index3 = num9; index3 < num10; ++index3) { for (int index4 = num11; index4 < num12; ++index4) { if ((double) Math.Abs((float) index3 - vector2_1.X) + (double) Math.Abs((float) index4 - vector2_1.Y) < num3 * 1.1 * (1.0 + (double) WorldGen.genRand.Next(-10, 11) * 0.015)) { if (Main.tile[index3, index4].type != (byte) 25 && index4 > j + WorldGen.genRand.Next(3, 20)) Main.tile[index3, index4].active = true; if (steps <= num2) Main.tile[index3, index4].active = true; if (Main.tile[index3, index4].type != (byte) 31) Main.tile[index3, index4].type = (byte) 25; if (Main.tile[index3, index4].wall == (byte) 2) Main.tile[index3, index4].wall = (byte) 0; } } } for (int i1 = num9; i1 < num10; ++i1) { for (int j1 = num11; j1 < num12; ++j1) { if ((double) Math.Abs((float) i1 - vector2_1.X) + (double) Math.Abs((float) j1 - vector2_1.Y) < num3 * 1.1 * (1.0 + (double) WorldGen.genRand.Next(-10, 11) * 0.015)) { if (Main.tile[i1, j1].type != (byte) 31) Main.tile[i1, j1].type = (byte) 25; if (steps <= num2) Main.tile[i1, j1].active = true; if (j1 > j + WorldGen.genRand.Next(3, 20)) WorldGen.PlaceWall(i1, j1, 3, true); } } } } } public static void JungleRunner(int i, int j) { double num1 = (double) WorldGen.genRand.Next(5, 11); Vector2 vector2_1; vector2_1.X = (float) i; vector2_1.Y = (float) j; Vector2 vector2_2; vector2_2.X = (float) WorldGen.genRand.Next(-10, 11) * 0.1f; vector2_2.Y = (float) WorldGen.genRand.Next(10, 20) * 0.1f; int num2 = 0; bool flag = true; while (flag) { if ((double) vector2_1.Y < Main.worldSurface) { int x = (int) vector2_1.X; int y = (int) vector2_1.Y; if (Main.tile[x, y].wall == (byte) 0 && !Main.tile[x, y].active && Main.tile[x, y - 3].wall == (byte) 0 && !Main.tile[x, y - 3].active && Main.tile[x, y - 1].wall == (byte) 0 && !Main.tile[x, y - 1].active && Main.tile[x, y - 4].wall == (byte) 0 && !Main.tile[x, y - 4].active && Main.tile[x, y - 2].wall == (byte) 0 && !Main.tile[x, y - 2].active && Main.tile[x, y - 5].wall == (byte) 0 && !Main.tile[x, y - 5].active) flag = false; } WorldGen.JungleX = (int) vector2_1.X; num1 += (double) WorldGen.genRand.Next(-20, 21) * 0.100000001490116; if (num1 < 5.0) num1 = 5.0; if (num1 > 10.0) num1 = 10.0; int num3 = (int) ((double) vector2_1.X - num1 * 0.5); int num4 = (int) ((double) vector2_1.X + num1 * 0.5); int num5 = (int) ((double) vector2_1.Y - num1 * 0.5); int num6 = (int) ((double) vector2_1.Y + num1 * 0.5); if (num3 < 0) num3 = 0; if (num4 > Main.maxTilesX) num4 = Main.maxTilesX; if (num5 < 0) num5 = 0; if (num6 > Main.maxTilesY) num6 = Main.maxTilesY; for (int i1 = num3; i1 < num4; ++i1) { for (int j1 = num5; j1 < num6; ++j1) { if ((double) Math.Abs((float) i1 - vector2_1.X) + (double) Math.Abs((float) j1 - vector2_1.Y) < num1 * 0.5 * (1.0 + (double) WorldGen.genRand.Next(-10, 11) * 0.015)) WorldGen.KillTile(i1, j1); } } ++num2; if (num2 > 10 && WorldGen.genRand.Next(50) < num2) { num2 = 0; int num7 = -2; if (WorldGen.genRand.Next(2) == 0) num7 = 2; WorldGen.TileRunner((int) vector2_1.X, (int) vector2_1.Y, (double) WorldGen.genRand.Next(3, 20), WorldGen.genRand.Next(10, 100), -1, speedX: ((float) num7)); } vector2_1 += vector2_2; vector2_2.Y += (float) WorldGen.genRand.Next(-10, 11) * 0.01f; if ((double) vector2_2.Y > 0.0) vector2_2.Y = 0.0f; if ((double) vector2_2.Y < -2.0) vector2_2.Y = -2f; vector2_2.X += (float) WorldGen.genRand.Next(-10, 11) * 0.1f; if ((double) vector2_1.X < (double) (i - 200)) vector2_2.X += (float) WorldGen.genRand.Next(5, 21) * 0.1f; if ((double) vector2_1.X > (double) (i + 200)) vector2_2.X -= (float) WorldGen.genRand.Next(5, 21) * 0.1f; if ((double) vector2_2.X > 1.5) vector2_2.X = 1.5f; if ((double) vector2_2.X < -1.5) vector2_2.X = -1.5f; } } public static void GERunner(int i, int j, float speedX = 0.0f, float speedY = 0.0f, bool good = true) { int num1 = (int) ((double) WorldGen.genRand.Next(200, 250) * (double) (Main.maxTilesX / 4200)); double num2 = (double) num1; Vector2 vector2_1; vector2_1.X = (float) i; vector2_1.Y = (float) j; Vector2 vector2_2; vector2_2.X = (float) WorldGen.genRand.Next(-10, 11) * 0.1f; vector2_2.Y = (float) WorldGen.genRand.Next(-10, 11) * 0.1f; if ((double) speedX != 0.0 || (double) speedY != 0.0) { vector2_2.X = speedX; vector2_2.Y = speedY; } bool flag = true; while (flag) { int num3 = (int) ((double) vector2_1.X - num2 * 0.5); int num4 = (int) ((double) vector2_1.X + num2 * 0.5); int num5 = (int) ((double) vector2_1.Y - num2 * 0.5); int num6 = (int) ((double) vector2_1.Y + num2 * 0.5); if (num3 < 0) num3 = 0; if (num4 > Main.maxTilesX) num4 = Main.maxTilesX; if (num5 < 0) num5 = 0; if (num6 > Main.maxTilesY) num6 = Main.maxTilesY; for (int i1 = num3; i1 < num4; ++i1) { for (int j1 = num5; j1 < num6; ++j1) { if ((double) Math.Abs((float) i1 - vector2_1.X) + (double) Math.Abs((float) j1 - vector2_1.Y) < (double) num1 * 0.5 * (1.0 + (double) WorldGen.genRand.Next(-10, 11) * 0.015)) { if (good) { if (Main.tile[i1, j1].wall == (byte) 3) Main.tile[i1, j1].wall = (byte) 28; if (Main.tile[i1, j1].type == (byte) 2) { Main.tile[i1, j1].type = (byte) 109; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (byte) 1) { Main.tile[i1, j1].type = (byte) 117; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (byte) 53 || Main.tile[i1, j1].type == (byte) 123) { Main.tile[i1, j1].type = (byte) 116; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (byte) 23) { Main.tile[i1, j1].type = (byte) 109; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (byte) 25) { Main.tile[i1, j1].type = (byte) 117; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (byte) 112) { Main.tile[i1, j1].type = (byte) 116; WorldGen.SquareTileFrame(i1, j1); } } else if (Main.tile[i1, j1].type == (byte) 2) { Main.tile[i1, j1].type = (byte) 23; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (byte) 1) { Main.tile[i1, j1].type = (byte) 25; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (byte) 53 || Main.tile[i1, j1].type == (byte) 123) { Main.tile[i1, j1].type = (byte) 112; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (byte) 109) { Main.tile[i1, j1].type = (byte) 23; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (byte) 117) { Main.tile[i1, j1].type = (byte) 25; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (byte) 116) { Main.tile[i1, j1].type = (byte) 112; WorldGen.SquareTileFrame(i1, j1); } } } } vector2_1 += vector2_2; vector2_2.X += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; if ((double) vector2_2.X > (double) speedX + 1.0) vector2_2.X = speedX + 1f; if ((double) vector2_2.X < (double) speedX - 1.0) vector2_2.X = speedX - 1f; if ((double) vector2_1.X < (double) -num1 || (double) vector2_1.Y < (double) -num1 || (double) vector2_1.X > (double) (Main.maxTilesX + num1) || (double) vector2_1.Y > (double) (Main.maxTilesX + num1)) flag = false; } } public static void TileRunner( int i, int j, double strength, int steps, int type, bool addTile = false, float speedX = 0.0f, float speedY = 0.0f, bool noYChange = false, bool overRide = true) { double num1 = strength; float num2 = (float) steps; Vector2 vector2_1; vector2_1.X = (float) i; vector2_1.Y = (float) j; Vector2 vector2_2; vector2_2.X = (float) WorldGen.genRand.Next(-10, 11) * 0.1f; vector2_2.Y = (float) WorldGen.genRand.Next(-10, 11) * 0.1f; if ((double) speedX != 0.0 || (double) speedY != 0.0) { vector2_2.X = speedX; vector2_2.Y = speedY; } while (num1 > 0.0 && (double) num2 > 0.0) { if ((double) vector2_1.Y < 0.0 && (double) num2 > 0.0 && type == 59) num2 = 0.0f; num1 = strength * ((double) num2 / (double) steps); --num2; int num3 = (int) ((double) vector2_1.X - num1 * 0.5); int num4 = (int) ((double) vector2_1.X + num1 * 0.5); int num5 = (int) ((double) vector2_1.Y - num1 * 0.5); int num6 = (int) ((double) vector2_1.Y + num1 * 0.5); if (num3 < 0) num3 = 0; if (num4 > Main.maxTilesX) num4 = Main.maxTilesX; if (num5 < 0) num5 = 0; if (num6 > Main.maxTilesY) num6 = Main.maxTilesY; for (int i1 = num3; i1 < num4; ++i1) { for (int j1 = num5; j1 < num6; ++j1) { if ((double) Math.Abs((float) i1 - vector2_1.X) + (double) Math.Abs((float) j1 - vector2_1.Y) < strength * 0.5 * (1.0 + (double) WorldGen.genRand.Next(-10, 11) * 0.015)) { if (WorldGen.mudWall && (double) j1 > Main.worldSurface && j1 < Main.maxTilesY - 210 - WorldGen.genRand.Next(3)) WorldGen.PlaceWall(i1, j1, 15, true); if (type < 0) { if (type == -2 && Main.tile[i1, j1].active && (j1 < WorldGen.waterLine || j1 > WorldGen.lavaLine)) { Main.tile[i1, j1].liquid = byte.MaxValue; if (j1 > WorldGen.lavaLine) Main.tile[i1, j1].lava = true; } Main.tile[i1, j1].active = false; } else { if ((overRide || !Main.tile[i1, j1].active) && (type != 40 || Main.tile[i1, j1].type != (byte) 53) && (!Main.tileStone[type] || Main.tile[i1, j1].type == (byte) 1) && Main.tile[i1, j1].type != (byte) 45 && Main.tile[i1, j1].type != (byte) 147 && (Main.tile[i1, j1].type != (byte) 1 || type != 59 || (double) j1 >= Main.worldSurface + (double) WorldGen.genRand.Next(-50, 50))) { if (Main.tile[i1, j1].type != (byte) 53 || (double) j1 >= Main.worldSurface) Main.tile[i1, j1].type = (byte) type; else if (type == 59) Main.tile[i1, j1].type = (byte) type; } if (addTile) { Main.tile[i1, j1].active = true; Main.tile[i1, j1].liquid = (byte) 0; Main.tile[i1, j1].lava = false; } if (noYChange && (double) j1 < Main.worldSurface && type != 59) Main.tile[i1, j1].wall = (byte) 2; if (type == 59 && j1 > WorldGen.waterLine && Main.tile[i1, j1].liquid > (byte) 0) { Main.tile[i1, j1].lava = false; Main.tile[i1, j1].liquid = (byte) 0; } } } } } vector2_1 += vector2_2; if (num1 > 50.0) { vector2_1 += vector2_2; --num2; vector2_2.Y += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; vector2_2.X += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; if (num1 > 100.0) { vector2_1 += vector2_2; --num2; vector2_2.Y += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; vector2_2.X += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; if (num1 > 150.0) { vector2_1 += vector2_2; --num2; vector2_2.Y += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; vector2_2.X += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; if (num1 > 200.0) { vector2_1 += vector2_2; --num2; vector2_2.Y += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; vector2_2.X += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; if (num1 > 250.0) { vector2_1 += vector2_2; --num2; vector2_2.Y += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; vector2_2.X += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; if (num1 > 300.0) { vector2_1 += vector2_2; --num2; vector2_2.Y += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; vector2_2.X += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; if (num1 > 400.0) { vector2_1 += vector2_2; --num2; vector2_2.Y += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; vector2_2.X += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; if (num1 > 500.0) { vector2_1 += vector2_2; --num2; vector2_2.Y += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; vector2_2.X += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; if (num1 > 600.0) { vector2_1 += vector2_2; --num2; vector2_2.Y += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; vector2_2.X += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; if (num1 > 700.0) { vector2_1 += vector2_2; --num2; vector2_2.Y += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; vector2_2.X += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; if (num1 > 800.0) { vector2_1 += vector2_2; --num2; vector2_2.Y += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; vector2_2.X += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; if (num1 > 900.0) { vector2_1 += vector2_2; --num2; vector2_2.Y += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; vector2_2.X += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; } } } } } } } } } } } } vector2_2.X += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; if ((double) vector2_2.X > 1.0) vector2_2.X = 1f; if ((double) vector2_2.X < -1.0) vector2_2.X = -1f; if (!noYChange) { vector2_2.Y += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; if ((double) vector2_2.Y > 1.0) vector2_2.Y = 1f; if ((double) vector2_2.Y < -1.0) vector2_2.Y = -1f; } else if (type != 59 && num1 < 3.0) { if ((double) vector2_2.Y > 1.0) vector2_2.Y = 1f; if ((double) vector2_2.Y < -1.0) vector2_2.Y = -1f; } if (type == 59 && !noYChange) { if ((double) vector2_2.Y > 0.5) vector2_2.Y = 0.5f; if ((double) vector2_2.Y < -0.5) vector2_2.Y = -0.5f; if ((double) vector2_1.Y < Main.rockLayer + 100.0) vector2_2.Y = 1f; if ((double) vector2_1.Y > (double) (Main.maxTilesY - 300)) vector2_2.Y = -1f; } } } public static void MudWallRunner(int i, int j) { double num1 = (double) WorldGen.genRand.Next(5, 15); float num2 = (float) WorldGen.genRand.Next(5, 20); float num3 = num2; Vector2 vector2_1; vector2_1.X = (float) i; vector2_1.Y = (float) j; Vector2 vector2_2; vector2_2.X = (float) WorldGen.genRand.Next(-10, 11) * 0.1f; vector2_2.Y = (float) WorldGen.genRand.Next(-10, 11) * 0.1f; while (num1 > 0.0 && (double) num3 > 0.0) { double num4 = num1 * ((double) num3 / (double) num2); --num3; int num5 = (int) ((double) vector2_1.X - num4 * 0.5); int num6 = (int) ((double) vector2_1.X + num4 * 0.5); int num7 = (int) ((double) vector2_1.Y - num4 * 0.5); int num8 = (int) ((double) vector2_1.Y + num4 * 0.5); if (num5 < 0) num5 = 0; if (num6 > Main.maxTilesX) num6 = Main.maxTilesX; if (num7 < 0) num7 = 0; if (num8 > Main.maxTilesY) num8 = Main.maxTilesY; for (int index1 = num5; index1 < num6; ++index1) { for (int index2 = num7; index2 < num8; ++index2) { if ((double) Math.Abs((float) index1 - vector2_1.X) + (double) Math.Abs((float) index2 - vector2_1.Y) < num1 * 0.5 * (1.0 + (double) WorldGen.genRand.Next(-10, 11) * 0.015)) Main.tile[index1, index2].wall = (byte) 0; } } vector2_1 += vector2_2; vector2_2.X += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; if ((double) vector2_2.X > 1.0) vector2_2.X = 1f; if ((double) vector2_2.X < -1.0) vector2_2.X = -1f; vector2_2.Y += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; if ((double) vector2_2.Y > 1.0) vector2_2.Y = 1f; if ((double) vector2_2.Y < -1.0) vector2_2.Y = -1f; } } public static void FloatingIsland(int i, int j) { double num1 = (double) WorldGen.genRand.Next(80, 120); float num2 = (float) WorldGen.genRand.Next(20, 25); Vector2 vector2_1; vector2_1.X = (float) i; vector2_1.Y = (float) j; Vector2 vector2_2; vector2_2.X = (float) WorldGen.genRand.Next(-20, 21) * 0.2f; while ((double) vector2_2.X > -2.0 && (double) vector2_2.X < 2.0) vector2_2.X = (float) WorldGen.genRand.Next(-20, 21) * 0.2f; vector2_2.Y = (float) WorldGen.genRand.Next(-20, -10) * 0.02f; while (num1 > 0.0 && (double) num2 > 0.0) { num1 -= (double) WorldGen.genRand.Next(4); --num2; int num3 = (int) ((double) vector2_1.X - num1 * 0.5); int num4 = (int) ((double) vector2_1.X + num1 * 0.5); int num5 = (int) ((double) vector2_1.Y - num1 * 0.5); int num6 = (int) ((double) vector2_1.Y + num1 * 0.5); if (num3 < 0) num3 = 0; if (num4 > Main.maxTilesX) num4 = Main.maxTilesX; if (num5 < 0) num5 = 0; if (num6 > Main.maxTilesY) num6 = Main.maxTilesY; double num7 = num1 * (double) WorldGen.genRand.Next(80, 120) * 0.01; float num8 = vector2_1.Y + 1f; for (int index1 = num3; index1 < num4; ++index1) { if (WorldGen.genRand.Next(2) == 0) num8 += (float) WorldGen.genRand.Next(-1, 2); if ((double) num8 < (double) vector2_1.Y) num8 = vector2_1.Y; if ((double) num8 > (double) vector2_1.Y + 2.0) num8 = vector2_1.Y + 2f; for (int index2 = num5; index2 < num6; ++index2) { if ((double) index2 > (double) num8) { float num9 = Math.Abs((float) index1 - vector2_1.X); float num10 = Math.Abs((float) index2 - vector2_1.Y) * 2f; if (Math.Sqrt((double) num9 * (double) num9 + (double) num10 * (double) num10) < num7 * 0.4) { Main.tile[index1, index2].active = true; if (Main.tile[index1, index2].type == (byte) 59) Main.tile[index1, index2].type = (byte) 0; } } } } WorldGen.TileRunner(WorldGen.genRand.Next(num3 + 10, num4 - 10), (int) ((double) vector2_1.Y + num7 * 0.1 + 5.0), (double) WorldGen.genRand.Next(5, 10), WorldGen.genRand.Next(10, 15), 0, true, speedY: 2f, noYChange: true); int num11 = (int) ((double) vector2_1.X - num1 * 0.4); int num12 = (int) ((double) vector2_1.X + num1 * 0.4); int num13 = (int) ((double) vector2_1.Y - num1 * 0.4); int num14 = (int) ((double) vector2_1.Y + num1 * 0.4); if (num11 < 0) num11 = 0; if (num12 > Main.maxTilesX) num12 = Main.maxTilesX; if (num13 < 0) num13 = 0; if (num14 > Main.maxTilesY) num14 = Main.maxTilesY; double num15 = num1 * (double) WorldGen.genRand.Next(80, 120) * 0.01; for (int index3 = num11; index3 < num12; ++index3) { for (int index4 = num13; index4 < num14; ++index4) { if ((double) index4 > (double) vector2_1.Y + 2.0) { float num16 = Math.Abs((float) index3 - vector2_1.X); float num17 = Math.Abs((float) index4 - vector2_1.Y) * 2f; if (Math.Sqrt((double) num16 * (double) num16 + (double) num17 * (double) num17) < num15 * 0.4) Main.tile[index3, index4].wall = (byte) 2; } } } vector2_1 += vector2_2; vector2_2.Y += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; if ((double) vector2_2.X > 1.0) vector2_2.X = 1f; if ((double) vector2_2.X < -1.0) vector2_2.X = -1f; if ((double) vector2_2.Y > 0.2) vector2_2.Y = -0.2f; if ((double) vector2_2.Y < -0.2) vector2_2.Y = -0.2f; } } public static void Caverer(int X, int Y) { switch (WorldGen.genRand.Next(2)) { case 0: int num1 = WorldGen.genRand.Next(7, 9); float xDir1 = (float) WorldGen.genRand.Next(100) * 0.01f; float yDir1 = 1f - xDir1; if (WorldGen.genRand.Next(2) == 0) xDir1 = -xDir1; if (WorldGen.genRand.Next(2) == 0) yDir1 = -yDir1; Vector2 vector2_1 = new Vector2((float) X, (float) Y); for (int index = 0; index < num1; ++index) { vector2_1 = WorldGen.digTunnel(vector2_1.X, vector2_1.Y, xDir1, yDir1, WorldGen.genRand.Next(6, 20), WorldGen.genRand.Next(4, 9)); xDir1 += (float) WorldGen.genRand.Next(-20, 21) * 0.1f; yDir1 += (float) WorldGen.genRand.Next(-20, 21) * 0.1f; if ((double) xDir1 < -1.5) xDir1 = -1.5f; if ((double) xDir1 > 1.5) xDir1 = 1.5f; if ((double) yDir1 < -1.5) yDir1 = -1.5f; if ((double) yDir1 > 1.5) yDir1 = 1.5f; float xDir2 = (float) WorldGen.genRand.Next(100) * 0.01f; float yDir2 = 1f - xDir2; if (WorldGen.genRand.Next(2) == 0) xDir2 = -xDir2; if (WorldGen.genRand.Next(2) == 0) yDir2 = -yDir2; Vector2 vector2_2 = WorldGen.digTunnel(vector2_1.X, vector2_1.Y, xDir2, yDir2, WorldGen.genRand.Next(30, 50), WorldGen.genRand.Next(3, 6)); WorldGen.TileRunner((int) vector2_2.X, (int) vector2_2.Y, (double) WorldGen.genRand.Next(10, 20), WorldGen.genRand.Next(5, 10), -1); } break; case 1: int num2 = WorldGen.genRand.Next(15, 30); float xDir3 = (float) WorldGen.genRand.Next(100) * 0.01f; float yDir3 = 1f - xDir3; if (WorldGen.genRand.Next(2) == 0) xDir3 = -xDir3; if (WorldGen.genRand.Next(2) == 0) yDir3 = -yDir3; Vector2 vector2_3 = new Vector2((float) X, (float) Y); for (int index = 0; index < num2; ++index) { vector2_3 = WorldGen.digTunnel(vector2_3.X, vector2_3.Y, xDir3, yDir3, WorldGen.genRand.Next(5, 15), WorldGen.genRand.Next(2, 6), true); xDir3 += (float) WorldGen.genRand.Next(-20, 21) * 0.1f; yDir3 += (float) WorldGen.genRand.Next(-20, 21) * 0.1f; if ((double) xDir3 < -1.5) xDir3 = -1.5f; if ((double) xDir3 > 1.5) xDir3 = 1.5f; if ((double) yDir3 < -1.5) yDir3 = -1.5f; if ((double) yDir3 > 1.5) yDir3 = 1.5f; } break; } } public static Vector2 digTunnel( float X, float Y, float xDir, float yDir, int Steps, int Size, bool Wet = false) { float x = X; float y = Y; try { float num1 = 0.0f; float num2 = 0.0f; int num3 = Steps; float num4 = (float) Size; for (int index1 = 0; index1 < num3; ++index1) { for (int index2 = (int) ((double) x - (double) num4); (double) index2 <= (double) x + (double) num4; ++index2) { for (int index3 = (int) ((double) y - (double) num4); (double) index3 <= (double) y + (double) num4; ++index3) { if ((double) Math.Abs((float) index2 - x) + (double) Math.Abs((float) index3 - y) < (double) num4 * (1.0 + (double) WorldGen.genRand.Next(-10, 11) * 0.005)) { Main.tile[index2, index3].active = false; if (Wet) Main.tile[index2, index3].liquid = byte.MaxValue; } } } num4 += (float) WorldGen.genRand.Next(-50, 51) * 0.03f; if ((double) num4 < (double) Size * 0.6) num4 = (float) Size * 0.6f; if ((double) num4 > (double) (Size * 2)) num4 = (float) Size * 2f; num1 += (float) WorldGen.genRand.Next(-20, 21) * 0.01f; num2 += (float) WorldGen.genRand.Next(-20, 21) * 0.01f; if ((double) num1 < -1.0) num1 = -1f; if ((double) num1 > 1.0) num1 = 1f; if ((double) num2 < -1.0) num2 = -1f; if ((double) num2 > 1.0) num2 = 1f; x += (float) (((double) xDir + (double) num1) * 0.600000023841858); y += (float) (((double) yDir + (double) num2) * 0.600000023841858); } } catch { } return new Vector2(x, y); } public static void IslandHouse(int i, int j) { byte num1 = (byte) WorldGen.genRand.Next(45, 48); byte num2 = (byte) WorldGen.genRand.Next(10, 13); Vector2 vector2 = new Vector2((float) i, (float) j); int num3 = 1; if (WorldGen.genRand.Next(2) == 0) num3 = -1; int num4 = WorldGen.genRand.Next(7, 12); int num5 = WorldGen.genRand.Next(5, 7); vector2.X = (float) (i + (num4 + 2) * num3); for (int index = j - 15; index < j + 30; ++index) { if (Main.tile[(int) vector2.X, index].active) { vector2.Y = (float) (index - 1); break; } } vector2.X = (float) i; int num6 = (int) ((double) vector2.X - (double) num4 - 2.0); int num7 = (int) ((double) vector2.X + (double) num4 + 2.0); int num8 = (int) ((double) vector2.Y - (double) num5 - 2.0); int num9 = (int) ((double) vector2.Y + 2.0 + (double) WorldGen.genRand.Next(3, 5)); if (num6 < 0) num6 = 0; if (num7 > Main.maxTilesX) num7 = Main.maxTilesX; if (num8 < 0) num8 = 0; if (num9 > Main.maxTilesY) num9 = Main.maxTilesY; for (int index1 = num6; index1 <= num7; ++index1) { for (int index2 = num8; index2 < num9; ++index2) { Main.tile[index1, index2].active = true; Main.tile[index1, index2].type = num1; Main.tile[index1, index2].wall = (byte) 0; } } int num10 = (int) ((double) vector2.X - (double) num4); int num11 = (int) ((double) vector2.X + (double) num4); int num12 = (int) ((double) vector2.Y - (double) num5); int num13 = (int) ((double) vector2.Y + 1.0); if (num10 < 0) num10 = 0; if (num11 > Main.maxTilesX) num11 = Main.maxTilesX; if (num12 < 0) num12 = 0; if (num13 > Main.maxTilesY) num13 = Main.maxTilesY; for (int index3 = num10; index3 <= num11; ++index3) { for (int index4 = num12; index4 < num13; ++index4) { if (Main.tile[index3, index4].wall == (byte) 0) { Main.tile[index3, index4].active = false; Main.tile[index3, index4].wall = num2; } } } int i1 = i + (num4 + 1) * num3; int y = (int) vector2.Y; for (int index = i1 - 2; index <= i1 + 2; ++index) { Main.tile[index, y].active = false; Main.tile[index, y - 1].active = false; Main.tile[index, y - 2].active = false; } WorldGen.PlaceTile(i1, y, 10, true); int contain = 0; int num14 = WorldGen.houseCount; if (num14 > 2) num14 = WorldGen.genRand.Next(3); switch (num14) { case 0: contain = 159; break; case 1: contain = 65; break; case 2: contain = 158; break; } WorldGen.AddBuriedChest(i, y - 3, contain, Style: 2); ++WorldGen.houseCount; } public static void Mountinater(int i, int j) { double num1 = (double) WorldGen.genRand.Next(80, 120); float num2 = (float) WorldGen.genRand.Next(40, 55); Vector2 vector2_1; vector2_1.X = (float) i; vector2_1.Y = (float) j + num2 / 2f; Vector2 vector2_2; vector2_2.X = (float) WorldGen.genRand.Next(-10, 11) * 0.1f; vector2_2.Y = (float) WorldGen.genRand.Next(-20, -10) * 0.1f; while (num1 > 0.0 && (double) num2 > 0.0) { num1 -= (double) WorldGen.genRand.Next(4); --num2; int num3 = (int) ((double) vector2_1.X - num1 * 0.5); int num4 = (int) ((double) vector2_1.X + num1 * 0.5); int num5 = (int) ((double) vector2_1.Y - num1 * 0.5); int num6 = (int) ((double) vector2_1.Y + num1 * 0.5); if (num3 < 0) num3 = 0; if (num4 > Main.maxTilesX) num4 = Main.maxTilesX; if (num5 < 0) num5 = 0; if (num6 > Main.maxTilesY) num6 = Main.maxTilesY; double num7 = num1 * (double) WorldGen.genRand.Next(80, 120) * 0.01; for (int index1 = num3; index1 < num4; ++index1) { for (int index2 = num5; index2 < num6; ++index2) { float num8 = Math.Abs((float) index1 - vector2_1.X); float num9 = Math.Abs((float) index2 - vector2_1.Y); if (Math.Sqrt((double) num8 * (double) num8 + (double) num9 * (double) num9) < num7 * 0.4 && !Main.tile[index1, index2].active) { Main.tile[index1, index2].active = true; Main.tile[index1, index2].type = (byte) 0; } } } vector2_1 += vector2_2; vector2_2.X += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; vector2_2.Y += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; if ((double) vector2_2.X > 0.5) vector2_2.X = 0.5f; if ((double) vector2_2.X < -0.5) vector2_2.X = -0.5f; if ((double) vector2_2.Y > -0.5) vector2_2.Y = -0.5f; if ((double) vector2_2.Y < -1.5) vector2_2.Y = -1.5f; } } public static void Lakinater(int i, int j) { double num1 = (double) WorldGen.genRand.Next(25, 50); double num2 = num1; float num3 = (float) WorldGen.genRand.Next(30, 80); if (WorldGen.genRand.Next(5) == 0) { num1 *= 1.5; num2 *= 1.5; num3 *= 1.2f; } Vector2 vector2_1; vector2_1.X = (float) i; vector2_1.Y = (float) j - num3 * 0.3f; Vector2 vector2_2; vector2_2.X = (float) WorldGen.genRand.Next(-10, 11) * 0.1f; vector2_2.Y = (float) WorldGen.genRand.Next(-20, -10) * 0.1f; while (num1 > 0.0 && (double) num3 > 0.0) { if ((double) vector2_1.Y + num2 * 0.5 > Main.worldSurface) num3 = 0.0f; num1 -= (double) WorldGen.genRand.Next(3); --num3; int num4 = (int) ((double) vector2_1.X - num1 * 0.5); int num5 = (int) ((double) vector2_1.X + num1 * 0.5); int num6 = (int) ((double) vector2_1.Y - num1 * 0.5); int num7 = (int) ((double) vector2_1.Y + num1 * 0.5); if (num4 < 0) num4 = 0; if (num5 > Main.maxTilesX) num5 = Main.maxTilesX; if (num6 < 0) num6 = 0; if (num7 > Main.maxTilesY) num7 = Main.maxTilesY; num2 = num1 * (double) WorldGen.genRand.Next(80, 120) * 0.01; for (int index1 = num4; index1 < num5; ++index1) { for (int index2 = num6; index2 < num7; ++index2) { float num8 = Math.Abs((float) index1 - vector2_1.X); float num9 = Math.Abs((float) index2 - vector2_1.Y); if (Math.Sqrt((double) num8 * (double) num8 + (double) num9 * (double) num9) < num2 * 0.4) { if (Main.tile[index1, index2].active) Main.tile[index1, index2].liquid = byte.MaxValue; Main.tile[index1, index2].active = false; } } } vector2_1 += vector2_2; vector2_2.X += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; vector2_2.Y += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; if ((double) vector2_2.X > 0.5) vector2_2.X = 0.5f; if ((double) vector2_2.X < -0.5) vector2_2.X = -0.5f; if ((double) vector2_2.Y > 1.5) vector2_2.Y = 1.5f; if ((double) vector2_2.Y < 0.5) vector2_2.Y = 0.5f; } } public static void ShroomPatch(int i, int j) { double num1 = (double) WorldGen.genRand.Next(40, 70); double num2 = num1; float num3 = (float) WorldGen.genRand.Next(20, 30); if (WorldGen.genRand.Next(5) == 0) { num1 *= 1.5; double num4 = num2 * 1.5; num3 *= 1.2f; } Vector2 vector2_1; vector2_1.X = (float) i; vector2_1.Y = (float) j - num3 * 0.3f; Vector2 vector2_2; vector2_2.X = (float) WorldGen.genRand.Next(-10, 11) * 0.1f; vector2_2.Y = (float) WorldGen.genRand.Next(-20, -10) * 0.1f; while (num1 > 0.0 && (double) num3 > 0.0) { num1 -= (double) WorldGen.genRand.Next(3); --num3; int num5 = (int) ((double) vector2_1.X - num1 * 0.5); int num6 = (int) ((double) vector2_1.X + num1 * 0.5); int num7 = (int) ((double) vector2_1.Y - num1 * 0.5); int num8 = (int) ((double) vector2_1.Y + num1 * 0.5); if (num5 < 0) num5 = 0; if (num6 > Main.maxTilesX) num6 = Main.maxTilesX; if (num7 < 0) num7 = 0; if (num8 > Main.maxTilesY) num8 = Main.maxTilesY; double num9 = num1 * (double) WorldGen.genRand.Next(80, 120) * 0.01; for (int index1 = num5; index1 < num6; ++index1) { for (int index2 = num7; index2 < num8; ++index2) { float num10 = Math.Abs((float) index1 - vector2_1.X); float num11 = Math.Abs((float) (((double) index2 - (double) vector2_1.Y) * 2.29999995231628)); if (Math.Sqrt((double) num10 * (double) num10 + (double) num11 * (double) num11) < num9 * 0.4) { if ((double) index2 < (double) vector2_1.Y + num9 * 0.02) { if (Main.tile[index1, index2].type != (byte) 59) Main.tile[index1, index2].active = false; } else Main.tile[index1, index2].type = (byte) 59; Main.tile[index1, index2].liquid = (byte) 0; Main.tile[index1, index2].lava = false; } } } vector2_1 += vector2_2; vector2_1.X += vector2_2.X; vector2_2.X += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; vector2_2.Y -= (float) WorldGen.genRand.Next(11) * 0.05f; if ((double) vector2_2.X > -0.5 && (double) vector2_2.X < 0.5) vector2_2.X = (double) vector2_2.X >= 0.0 ? 0.5f : -0.5f; if ((double) vector2_2.X > 2.0) vector2_2.X = 1f; if ((double) vector2_2.X < -2.0) vector2_2.X = -1f; if ((double) vector2_2.Y > 1.0) vector2_2.Y = 1f; if ((double) vector2_2.Y < -1.0) vector2_2.Y = -1f; for (int index = 0; index < 2; ++index) { int i1 = (int) vector2_1.X + WorldGen.genRand.Next(-20, 20); int j1; for (j1 = (int) vector2_1.Y + WorldGen.genRand.Next(0, 20); !Main.tile[i1, j1].active && Main.tile[i1, j1].type != (byte) 59; j1 = (int) vector2_1.Y + WorldGen.genRand.Next(0, 20)) i1 = (int) vector2_1.X + WorldGen.genRand.Next(-20, 20); int num12 = WorldGen.genRand.Next(7, 10); int steps = WorldGen.genRand.Next(7, 10); WorldGen.TileRunner(i1, j1, (double) num12, steps, 59, speedY: 2f, noYChange: true); if (WorldGen.genRand.Next(3) == 0) WorldGen.TileRunner(i1, j1, (double) (num12 - 3), steps - 3, -1, speedY: 2f, noYChange: true); } } } public static void Cavinator(int i, int j, int steps) { double num1 = (double) WorldGen.genRand.Next(7, 15); int num2 = 1; if (WorldGen.genRand.Next(2) == 0) num2 = -1; Vector2 vector2_1; vector2_1.X = (float) i; vector2_1.Y = (float) j; int num3 = WorldGen.genRand.Next(20, 40); Vector2 vector2_2; vector2_2.Y = (float) WorldGen.genRand.Next(10, 20) * 0.01f; vector2_2.X = (float) num2; while (num3 > 0) { --num3; int num4 = (int) ((double) vector2_1.X - num1 * 0.5); int num5 = (int) ((double) vector2_1.X + num1 * 0.5); int num6 = (int) ((double) vector2_1.Y - num1 * 0.5); int num7 = (int) ((double) vector2_1.Y + num1 * 0.5); if (num4 < 0) num4 = 0; if (num5 > Main.maxTilesX) num5 = Main.maxTilesX; if (num6 < 0) num6 = 0; if (num7 > Main.maxTilesY) num7 = Main.maxTilesY; double num8 = num1 * (double) WorldGen.genRand.Next(80, 120) * 0.01; for (int index1 = num4; index1 < num5; ++index1) { for (int index2 = num6; index2 < num7; ++index2) { float num9 = Math.Abs((float) index1 - vector2_1.X); float num10 = Math.Abs((float) index2 - vector2_1.Y); if (Math.Sqrt((double) num9 * (double) num9 + (double) num10 * (double) num10) < num8 * 0.4) Main.tile[index1, index2].active = false; } } vector2_1 += vector2_2; vector2_2.X += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; vector2_2.Y += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; if ((double) vector2_2.X > (double) num2 + 0.5) vector2_2.X = (float) num2 + 0.5f; if ((double) vector2_2.X < (double) num2 - 0.5) vector2_2.X = (float) num2 - 0.5f; if ((double) vector2_2.Y > 2.0) vector2_2.Y = 2f; if ((double) vector2_2.Y < 0.0) vector2_2.Y = 0.0f; } if (steps <= 0 || (double) (int) vector2_1.Y >= Main.rockLayer + 50.0) return; WorldGen.Cavinator((int) vector2_1.X, (int) vector2_1.Y, steps - 1); } public static void CaveOpenater(int i, int j) { double num1 = (double) WorldGen.genRand.Next(7, 12); int num2 = 1; if (WorldGen.genRand.Next(2) == 0) num2 = -1; Vector2 vector2_1; vector2_1.X = (float) i; vector2_1.Y = (float) j; int num3 = 100; Vector2 vector2_2; vector2_2.Y = 0.0f; vector2_2.X = (float) num2; while (num3 > 0) { if (Main.tile[(int) vector2_1.X, (int) vector2_1.Y].wall == (byte) 0) num3 = 0; --num3; int num4 = (int) ((double) vector2_1.X - num1 * 0.5); int num5 = (int) ((double) vector2_1.X + num1 * 0.5); int num6 = (int) ((double) vector2_1.Y - num1 * 0.5); int num7 = (int) ((double) vector2_1.Y + num1 * 0.5); if (num4 < 0) num4 = 0; if (num5 > Main.maxTilesX) num5 = Main.maxTilesX; if (num6 < 0) num6 = 0; if (num7 > Main.maxTilesY) num7 = Main.maxTilesY; double num8 = num1 * (double) WorldGen.genRand.Next(80, 120) * 0.01; for (int index1 = num4; index1 < num5; ++index1) { for (int index2 = num6; index2 < num7; ++index2) { float num9 = Math.Abs((float) index1 - vector2_1.X); float num10 = Math.Abs((float) index2 - vector2_1.Y); if (Math.Sqrt((double) num9 * (double) num9 + (double) num10 * (double) num10) < num8 * 0.4) Main.tile[index1, index2].active = false; } } vector2_1 += vector2_2; vector2_2.X += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; vector2_2.Y += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; if ((double) vector2_2.X > (double) num2 + 0.5) vector2_2.X = (float) num2 + 0.5f; if ((double) vector2_2.X < (double) num2 - 0.5) vector2_2.X = (float) num2 - 0.5f; if ((double) vector2_2.Y > 0.0) vector2_2.Y = 0.0f; if ((double) vector2_2.Y < -0.5) vector2_2.Y = -0.5f; } } public static void SquareTileFrame(int i, int j, bool resetFrame = true) { WorldGen.TileFrame(i - 1, j - 1); WorldGen.TileFrame(i - 1, j); WorldGen.TileFrame(i - 1, j + 1); WorldGen.TileFrame(i, j - 1); WorldGen.TileFrame(i, j, resetFrame); WorldGen.TileFrame(i, j + 1); WorldGen.TileFrame(i + 1, j - 1); WorldGen.TileFrame(i + 1, j); WorldGen.TileFrame(i + 1, j + 1); } public static void SquareWallFrame(int i, int j, bool resetFrame = true) { WorldGen.WallFrame(i - 1, j - 1); WorldGen.WallFrame(i - 1, j); WorldGen.WallFrame(i - 1, j + 1); WorldGen.WallFrame(i, j - 1); WorldGen.WallFrame(i, j, resetFrame); WorldGen.WallFrame(i, j + 1); WorldGen.WallFrame(i + 1, j - 1); WorldGen.WallFrame(i + 1, j); WorldGen.WallFrame(i + 1, j + 1); } public static void SectionTileFrame(int startX, int startY, int endX, int endY) { int num1 = startX * 200; int num2 = (endX + 1) * 200; int num3 = startY * 150; int num4 = (endY + 1) * 150; if (num1 < 1) num1 = 1; if (num3 < 1) num3 = 1; if (num1 > Main.maxTilesX - 2) num1 = Main.maxTilesX - 2; if (num3 > Main.maxTilesY - 2) num3 = Main.maxTilesY - 2; for (int i = num1 - 1; i < num2 + 1; ++i) { for (int j = num3 - 1; j < num4 + 1; ++j) { if (Main.tile[i, j] == null) Main.tile[i, j] = new Tile(); WorldGen.TileFrame(i, j, true, true); WorldGen.WallFrame(i, j, true); } } } public static void RangeFrame(int startX, int startY, int endX, int endY) { int num1 = startX; int num2 = endX + 1; int num3 = startY; int num4 = endY + 1; for (int i = num1 - 1; i < num2 + 1; ++i) { for (int j = num3 - 1; j < num4 + 1; ++j) { WorldGen.TileFrame(i, j); WorldGen.WallFrame(i, j); } } } public static void WaterCheck() { Liquid.numLiquid = 0; LiquidBuffer.numLiquidBuffer = 0; for (int index1 = 1; index1 < Main.maxTilesX - 1; ++index1) { for (int index2 = Main.maxTilesY - 2; index2 > 0; --index2) { Main.tile[index1, index2].checkingLiquid = false; if (Main.tile[index1, index2].liquid > (byte) 0 && Main.tile[index1, index2].active && Main.tileSolid[(int) Main.tile[index1, index2].type] && !Main.tileSolidTop[(int) Main.tile[index1, index2].type]) Main.tile[index1, index2].liquid = (byte) 0; else if (Main.tile[index1, index2].liquid > (byte) 0) { if (Main.tile[index1, index2].active) { if (Main.tileWaterDeath[(int) Main.tile[index1, index2].type] && (Main.tile[index1, index2].type != (byte) 4 || Main.tile[index1, index2].frameY != (short) 176)) WorldGen.KillTile(index1, index2); if (Main.tile[index1, index2].lava && Main.tileLavaDeath[(int) Main.tile[index1, index2].type]) WorldGen.KillTile(index1, index2); } if ((!Main.tile[index1, index2 + 1].active || !Main.tileSolid[(int) Main.tile[index1, index2 + 1].type] || Main.tileSolidTop[(int) Main.tile[index1, index2 + 1].type]) && Main.tile[index1, index2 + 1].liquid < byte.MaxValue) { if (Main.tile[index1, index2 + 1].liquid > (byte) 250) Main.tile[index1, index2 + 1].liquid = byte.MaxValue; else Liquid.AddWater(index1, index2); } if ((!Main.tile[index1 - 1, index2].active || !Main.tileSolid[(int) Main.tile[index1 - 1, index2].type] || Main.tileSolidTop[(int) Main.tile[index1 - 1, index2].type]) && (int) Main.tile[index1 - 1, index2].liquid != (int) Main.tile[index1, index2].liquid) Liquid.AddWater(index1, index2); else if ((!Main.tile[index1 + 1, index2].active || !Main.tileSolid[(int) Main.tile[index1 + 1, index2].type] || Main.tileSolidTop[(int) Main.tile[index1 + 1, index2].type]) && (int) Main.tile[index1 + 1, index2].liquid != (int) Main.tile[index1, index2].liquid) Liquid.AddWater(index1, index2); if (Main.tile[index1, index2].lava) { if (Main.tile[index1 - 1, index2].liquid > (byte) 0 && !Main.tile[index1 - 1, index2].lava) Liquid.AddWater(index1, index2); else if (Main.tile[index1 + 1, index2].liquid > (byte) 0 && !Main.tile[index1 + 1, index2].lava) Liquid.AddWater(index1, index2); else if (Main.tile[index1, index2 - 1].liquid > (byte) 0 && !Main.tile[index1, index2 - 1].lava) Liquid.AddWater(index1, index2); else if (Main.tile[index1, index2 + 1].liquid > (byte) 0 && !Main.tile[index1, index2 + 1].lava) Liquid.AddWater(index1, index2); } } } } } public static void EveryTileFrame() { WorldGen.noLiquidCheck = true; WorldGen.noTileActions = true; for (int i = 0; i < Main.maxTilesX; ++i) { float num = (float) i / (float) Main.maxTilesX; Main.statusText = Lang.gen[55] + " " + (object) (int) ((double) num * 100.0 + 1.0) + "%"; for (int j = 0; j < Main.maxTilesY; ++j) { if (Main.tile[i, j].active) WorldGen.TileFrame(i, j, true); if (Main.tile[i, j].wall > (byte) 0) WorldGen.WallFrame(i, j, true); } } WorldGen.noLiquidCheck = false; WorldGen.noTileActions = false; } public static void PlantCheck(int i, int j) { int num1 = -1; int num2 = (int) Main.tile[i, j].type; int num3 = i - 1; int num4 = i + 1; int maxTilesX = Main.maxTilesX; int num5 = j - 1; if (j + 1 >= Main.maxTilesY) num1 = num2; if (i - 1 >= 0 && Main.tile[i - 1, j] != null && Main.tile[i - 1, j].active) { int type1 = (int) Main.tile[i - 1, j].type; } if (i + 1 < Main.maxTilesX && Main.tile[i + 1, j] != null && Main.tile[i + 1, j].active) { int type2 = (int) Main.tile[i + 1, j].type; } if (j - 1 >= 0 && Main.tile[i, j - 1] != null && Main.tile[i, j - 1].active) { int type3 = (int) Main.tile[i, j - 1].type; } if (j + 1 < Main.maxTilesY && Main.tile[i, j + 1] != null && Main.tile[i, j + 1].active) num1 = (int) Main.tile[i, j + 1].type; if (i - 1 >= 0 && j - 1 >= 0 && Main.tile[i - 1, j - 1] != null && Main.tile[i - 1, j - 1].active) { int type4 = (int) Main.tile[i - 1, j - 1].type; } if (i + 1 < Main.maxTilesX && j - 1 >= 0 && Main.tile[i + 1, j - 1] != null && Main.tile[i + 1, j - 1].active) { int type5 = (int) Main.tile[i + 1, j - 1].type; } if (i - 1 >= 0 && j + 1 < Main.maxTilesY && Main.tile[i - 1, j + 1] != null && Main.tile[i - 1, j + 1].active) { int type6 = (int) Main.tile[i - 1, j + 1].type; } if (i + 1 < Main.maxTilesX && j + 1 < Main.maxTilesY && Main.tile[i + 1, j + 1] != null && Main.tile[i + 1, j + 1].active) { int type7 = (int) Main.tile[i + 1, j + 1].type; } if ((num2 != 3 || num1 == 2 || num1 == 78) && (num2 != 24 || num1 == 23) && (num2 != 61 || num1 == 60) && (num2 != 71 || num1 == 70) && (num2 != 73 || num1 == 2 || num1 == 78) && (num2 != 74 || num1 == 60) && (num2 != 110 || num1 == 109) && (num2 != 113 || num1 == 109)) return; switch (num1) { case 2: num2 = num2 != 113 ? 3 : 73; break; case 23: num2 = 24; if (Main.tile[i, j].frameX >= (short) 162) { Main.tile[i, j].frameX = (short) 126; break; } break; case 109: num2 = num2 != 73 ? 110 : 113; break; } if (num2 != (int) Main.tile[i, j].type) Main.tile[i, j].type = (byte) num2; else WorldGen.KillTile(i, j); } public static void WallFrame(int i, int j, bool resetFrame = false) { if (i < 0 || j < 0 || i >= Main.maxTilesX || j >= Main.maxTilesY || Main.tile[i, j] == null || Main.tile[i, j].wall <= (byte) 0) return; int num1 = -1; int num2 = -1; int num3 = -1; int num4 = -1; int num5 = -1; int num6 = -1; int num7 = -1; int num8 = -1; int wall = (int) Main.tile[i, j].wall; if (wall == 0) return; int wallFrameX = (int) Main.tile[i, j].wallFrameX; int wallFrameY = (int) Main.tile[i, j].wallFrameY; Rectangle rectangle; rectangle.X = -1; rectangle.Y = -1; if (i - 1 < 0) { num1 = wall; num4 = wall; num6 = wall; } if (i + 1 >= Main.maxTilesX) { num3 = wall; num5 = wall; num8 = wall; } if (j - 1 < 0) { num1 = wall; num2 = wall; num3 = wall; } if (j + 1 >= Main.maxTilesY) { num6 = wall; num7 = wall; num8 = wall; } if (i - 1 >= 0 && Main.tile[i - 1, j] != null) num4 = (int) Main.tile[i - 1, j].wall; if (i + 1 < Main.maxTilesX && Main.tile[i + 1, j] != null) num5 = (int) Main.tile[i + 1, j].wall; if (j - 1 >= 0 && Main.tile[i, j - 1] != null) num2 = (int) Main.tile[i, j - 1].wall; if (j + 1 < Main.maxTilesY && Main.tile[i, j + 1] != null) num7 = (int) Main.tile[i, j + 1].wall; if (i - 1 >= 0 && j - 1 >= 0 && Main.tile[i - 1, j - 1] != null) num1 = (int) Main.tile[i - 1, j - 1].wall; if (i + 1 < Main.maxTilesX && j - 1 >= 0 && Main.tile[i + 1, j - 1] != null) num3 = (int) Main.tile[i + 1, j - 1].wall; if (i - 1 >= 0 && j + 1 < Main.maxTilesY && Main.tile[i - 1, j + 1] != null) num6 = (int) Main.tile[i - 1, j + 1].wall; if (i + 1 < Main.maxTilesX && j + 1 < Main.maxTilesY && Main.tile[i + 1, j + 1] != null) num8 = (int) Main.tile[i + 1, j + 1].wall; if (wall == 2) { if (j == (int) Main.worldSurface) { num7 = wall; num6 = wall; num8 = wall; } else if (j >= (int) Main.worldSurface) { num7 = wall; num6 = wall; num8 = wall; num2 = wall; num1 = wall; num3 = wall; num4 = wall; num5 = wall; } } if (num7 > 0) num7 = wall; if (num6 > 0) num6 = wall; if (num8 > 0) num8 = wall; if (num2 > 0) num2 = wall; if (num1 > 0) num1 = wall; if (num3 > 0) num3 = wall; if (num4 > 0) num4 = wall; if (num5 > 0) num5 = wall; int num9; if (resetFrame) { num9 = WorldGen.genRand.Next(0, 3); Main.tile[i, j].wallFrameNumber = (byte) num9; } else num9 = (int) Main.tile[i, j].wallFrameNumber; if (rectangle.X < 0 || rectangle.Y < 0) { if (num2 == wall && num7 == wall && num4 == wall & num5 == wall) { if (num1 != wall && num3 != wall) { if (num9 == 0) { rectangle.X = 108; rectangle.Y = 18; } if (num9 == 1) { rectangle.X = 126; rectangle.Y = 18; } if (num9 == 2) { rectangle.X = 144; rectangle.Y = 18; } } else if (num6 != wall && num8 != wall) { if (num9 == 0) { rectangle.X = 108; rectangle.Y = 36; } if (num9 == 1) { rectangle.X = 126; rectangle.Y = 36; } if (num9 == 2) { rectangle.X = 144; rectangle.Y = 36; } } else if (num1 != wall && num6 != wall) { if (num9 == 0) { rectangle.X = 180; rectangle.Y = 0; } if (num9 == 1) { rectangle.X = 180; rectangle.Y = 18; } if (num9 == 2) { rectangle.X = 180; rectangle.Y = 36; } } else if (num3 != wall && num8 != wall) { if (num9 == 0) { rectangle.X = 198; rectangle.Y = 0; } if (num9 == 1) { rectangle.X = 198; rectangle.Y = 18; } if (num9 == 2) { rectangle.X = 198; rectangle.Y = 36; } } else { if (num9 == 0) { rectangle.X = 18; rectangle.Y = 18; } if (num9 == 1) { rectangle.X = 36; rectangle.Y = 18; } if (num9 == 2) { rectangle.X = 54; rectangle.Y = 18; } } } else if (num2 != wall && num7 == wall && num4 == wall & num5 == wall) { if (num9 == 0) { rectangle.X = 18; rectangle.Y = 0; } if (num9 == 1) { rectangle.X = 36; rectangle.Y = 0; } if (num9 == 2) { rectangle.X = 54; rectangle.Y = 0; } } else if (num2 == wall && num7 != wall && num4 == wall & num5 == wall) { if (num9 == 0) { rectangle.X = 18; rectangle.Y = 36; } if (num9 == 1) { rectangle.X = 36; rectangle.Y = 36; } if (num9 == 2) { rectangle.X = 54; rectangle.Y = 36; } } else if (num2 == wall && num7 == wall && num4 != wall & num5 == wall) { if (num9 == 0) { rectangle.X = 0; rectangle.Y = 0; } if (num9 == 1) { rectangle.X = 0; rectangle.Y = 18; } if (num9 == 2) { rectangle.X = 0; rectangle.Y = 36; } } else if (num2 == wall && num7 == wall && num4 == wall & num5 != wall) { if (num9 == 0) { rectangle.X = 72; rectangle.Y = 0; } if (num9 == 1) { rectangle.X = 72; rectangle.Y = 18; } if (num9 == 2) { rectangle.X = 72; rectangle.Y = 36; } } else if (num2 != wall && num7 == wall && num4 != wall & num5 == wall) { if (num9 == 0) { rectangle.X = 0; rectangle.Y = 54; } if (num9 == 1) { rectangle.X = 36; rectangle.Y = 54; } if (num9 == 2) { rectangle.X = 72; rectangle.Y = 54; } } else if (num2 != wall && num7 == wall && num4 == wall & num5 != wall) { if (num9 == 0) { rectangle.X = 18; rectangle.Y = 54; } if (num9 == 1) { rectangle.X = 54; rectangle.Y = 54; } if (num9 == 2) { rectangle.X = 90; rectangle.Y = 54; } } else if (num2 == wall && num7 != wall && num4 != wall & num5 == wall) { if (num9 == 0) { rectangle.X = 0; rectangle.Y = 72; } if (num9 == 1) { rectangle.X = 36; rectangle.Y = 72; } if (num9 == 2) { rectangle.X = 72; rectangle.Y = 72; } } else if (num2 == wall && num7 != wall && num4 == wall & num5 != wall) { if (num9 == 0) { rectangle.X = 18; rectangle.Y = 72; } if (num9 == 1) { rectangle.X = 54; rectangle.Y = 72; } if (num9 == 2) { rectangle.X = 90; rectangle.Y = 72; } } else if (num2 == wall && num7 == wall && num4 != wall & num5 != wall) { if (num9 == 0) { rectangle.X = 90; rectangle.Y = 0; } if (num9 == 1) { rectangle.X = 90; rectangle.Y = 18; } if (num9 == 2) { rectangle.X = 90; rectangle.Y = 36; } } else if (num2 != wall && num7 != wall && num4 == wall & num5 == wall) { if (num9 == 0) { rectangle.X = 108; rectangle.Y = 72; } if (num9 == 1) { rectangle.X = 126; rectangle.Y = 72; } if (num9 == 2) { rectangle.X = 144; rectangle.Y = 72; } } else if (num2 != wall && num7 == wall && num4 != wall & num5 != wall) { if (num9 == 0) { rectangle.X = 108; rectangle.Y = 0; } if (num9 == 1) { rectangle.X = 126; rectangle.Y = 0; } if (num9 == 2) { rectangle.X = 144; rectangle.Y = 0; } } else if (num2 == wall && num7 != wall && num4 != wall & num5 != wall) { if (num9 == 0) { rectangle.X = 108; rectangle.Y = 54; } if (num9 == 1) { rectangle.X = 126; rectangle.Y = 54; } if (num9 == 2) { rectangle.X = 144; rectangle.Y = 54; } } else if (num2 != wall && num7 != wall && num4 != wall & num5 == wall) { if (num9 == 0) { rectangle.X = 162; rectangle.Y = 0; } if (num9 == 1) { rectangle.X = 162; rectangle.Y = 18; } if (num9 == 2) { rectangle.X = 162; rectangle.Y = 36; } } else if (num2 != wall && num7 != wall && num4 == wall & num5 != wall) { if (num9 == 0) { rectangle.X = 216; rectangle.Y = 0; } if (num9 == 1) { rectangle.X = 216; rectangle.Y = 18; } if (num9 == 2) { rectangle.X = 216; rectangle.Y = 36; } } else if (num2 != wall && num7 != wall && num4 != wall & num5 != wall) { if (num9 == 0) { rectangle.X = 162; rectangle.Y = 54; } if (num9 == 1) { rectangle.X = 180; rectangle.Y = 54; } if (num9 == 2) { rectangle.X = 198; rectangle.Y = 54; } } } if (rectangle.X <= -1 || rectangle.Y <= -1) { if (num9 <= 0) { rectangle.X = 18; rectangle.Y = 18; } if (num9 == 1) { rectangle.X = 36; rectangle.Y = 18; } if (num9 >= 2) { rectangle.X = 54; rectangle.Y = 18; } } Main.tile[i, j].wallFrameX = (byte) rectangle.X; Main.tile[i, j].wallFrameY = (byte) rectangle.Y; } public static void TileFrame(int i, int j, bool resetFrame = false, bool noBreak = false) { try { if (i <= 5 || j <= 5 || i >= Main.maxTilesX - 5 || j >= Main.maxTilesY - 5 || Main.tile[i, j] == null) return; if (Main.tile[i, j].liquid > (byte) 0 && Main.netMode != 1 && !WorldGen.noLiquidCheck) Liquid.AddWater(i, j); if (!Main.tile[i, j].active || noBreak && Main.tileFrameImportant[(int) Main.tile[i, j].type] && Main.tile[i, j].type != (byte) 4) return; int type1 = (int) Main.tile[i, j].type; if (Main.tileStone[type1]) type1 = 1; int frameX1 = (int) Main.tile[i, j].frameX; int frameY1 = (int) Main.tile[i, j].frameY; Rectangle rectangle = new Rectangle(-1, -1, 0, 0); if (Main.tileFrameImportant[(int) Main.tile[i, j].type]) { switch (type1) { case 4: short num1 = 0; if (Main.tile[i, j].frameX >= (short) 66) num1 = (short) 66; int index1 = -1; int index2 = -1; int index3 = -1; int num2 = -1; int num3 = -1; int num4 = -1; int num5 = -1; if (Main.tile[i, j - 1] != null && Main.tile[i, j - 1].active) { int type2 = (int) Main.tile[i, j - 1].type; } if (Main.tile[i, j + 1] != null && Main.tile[i, j + 1].active) index1 = (int) Main.tile[i, j + 1].type; if (Main.tile[i - 1, j] != null && Main.tile[i - 1, j].active) index2 = (int) Main.tile[i - 1, j].type; if (Main.tile[i + 1, j] != null && Main.tile[i + 1, j].active) index3 = (int) Main.tile[i + 1, j].type; if (Main.tile[i - 1, j + 1] != null && Main.tile[i - 1, j + 1].active) num2 = (int) Main.tile[i - 1, j + 1].type; if (Main.tile[i + 1, j + 1] != null && Main.tile[i + 1, j + 1].active) num3 = (int) Main.tile[i + 1, j + 1].type; if (Main.tile[i - 1, j - 1] != null && Main.tile[i - 1, j - 1].active) num4 = (int) Main.tile[i - 1, j - 1].type; if (Main.tile[i + 1, j - 1] != null && Main.tile[i + 1, j - 1].active) num5 = (int) Main.tile[i + 1, j - 1].type; if (index1 >= 0 && Main.tileSolid[index1] && !Main.tileNoAttach[index1]) { Main.tile[i, j].frameX = num1; break; } if (index2 >= 0 && Main.tileSolid[index2] && !Main.tileNoAttach[index2] || index2 == 124 || index2 == 5 && num4 == 5 && num2 == 5) { Main.tile[i, j].frameX = (short) (22 + (int) num1); break; } if (index3 >= 0 && Main.tileSolid[index3] && !Main.tileNoAttach[index3] || index3 == 124 || index3 == 5 && num5 == 5 && num3 == 5) { Main.tile[i, j].frameX = (short) (44 + (int) num1); break; } WorldGen.KillTile(i, j); break; case 136: int index4 = -1; int index5 = -1; int index6 = -1; if (Main.tile[i, j - 1] != null && Main.tile[i, j - 1].active) { int type3 = (int) Main.tile[i, j - 1].type; } if (Main.tile[i, j + 1] != null && Main.tile[i, j + 1].active) index4 = (int) Main.tile[i, j + 1].type; if (Main.tile[i - 1, j] != null && Main.tile[i - 1, j].active) index5 = (int) Main.tile[i - 1, j].type; if (Main.tile[i + 1, j] != null && Main.tile[i + 1, j].active) index6 = (int) Main.tile[i + 1, j].type; if (index4 >= 0 && Main.tileSolid[index4] && !Main.tileNoAttach[index4]) { Main.tile[i, j].frameX = (short) 0; break; } if (index5 >= 0 && Main.tileSolid[index5] && !Main.tileNoAttach[index5] || index5 == 124 || index5 == 5) { Main.tile[i, j].frameX = (short) 18; break; } if (index6 >= 0 && Main.tileSolid[index6] && !Main.tileNoAttach[index6] || index6 == 124 || index6 == 5) { Main.tile[i, j].frameX = (short) 36; break; } WorldGen.KillTile(i, j); break; default: if (type1 == 129 || type1 == 149) { int index7 = -1; int index8 = -1; int index9 = -1; int index10 = -1; if (Main.tile[i, j - 1] != null && Main.tile[i, j - 1].active) index8 = (int) Main.tile[i, j - 1].type; if (Main.tile[i, j + 1] != null && Main.tile[i, j + 1].active) index7 = (int) Main.tile[i, j + 1].type; if (Main.tile[i - 1, j] != null && Main.tile[i - 1, j].active) index9 = (int) Main.tile[i - 1, j].type; if (Main.tile[i + 1, j] != null && Main.tile[i + 1, j].active) index10 = (int) Main.tile[i + 1, j].type; if (index7 >= 0 && Main.tileSolid[index7] && !Main.tileSolidTop[index7]) { Main.tile[i, j].frameY = (short) 0; break; } if (index9 >= 0 && Main.tileSolid[index9] && !Main.tileSolidTop[index9]) { Main.tile[i, j].frameY = (short) 54; break; } if (index10 >= 0 && Main.tileSolid[index10] && !Main.tileSolidTop[index10]) { Main.tile[i, j].frameY = (short) 36; break; } if (index8 >= 0 && Main.tileSolid[index8] && !Main.tileSolidTop[index8]) { Main.tile[i, j].frameY = (short) 18; break; } WorldGen.KillTile(i, j); break; } if (type1 == 3 || type1 == 24 || type1 == 61 || type1 == 71 || type1 == 73 || type1 == 74 || type1 == 110 || type1 == 113) { WorldGen.PlantCheck(i, j); break; } if (type1 == 12 || type1 == 31) { WorldGen.CheckOrb(i, j, type1); break; } switch (type1) { case 10: if (WorldGen.destroyObject) return; int frameY2 = (int) Main.tile[i, j].frameY; int j1 = j; bool flag1 = false; if (frameY2 == 0) j1 = j; if (frameY2 == 18) j1 = j - 1; if (frameY2 == 36) j1 = j - 2; if (Main.tile[i, j1 - 1] == null) Main.tile[i, j1 - 1] = new Tile(); if (Main.tile[i, j1 + 3] == null) Main.tile[i, j1 + 3] = new Tile(); if (Main.tile[i, j1 + 2] == null) Main.tile[i, j1 + 2] = new Tile(); if (Main.tile[i, j1 + 1] == null) Main.tile[i, j1 + 1] = new Tile(); if (Main.tile[i, j1] == null) Main.tile[i, j1] = new Tile(); if (!Main.tile[i, j1 - 1].active || !Main.tileSolid[(int) Main.tile[i, j1 - 1].type]) flag1 = true; if (!Main.tile[i, j1 + 3].active || !Main.tileSolid[(int) Main.tile[i, j1 + 3].type]) flag1 = true; if (!Main.tile[i, j1].active || (int) Main.tile[i, j1].type != type1) flag1 = true; if (!Main.tile[i, j1 + 1].active || (int) Main.tile[i, j1 + 1].type != type1) flag1 = true; if (!Main.tile[i, j1 + 2].active || (int) Main.tile[i, j1 + 2].type != type1) flag1 = true; if (flag1) { WorldGen.destroyObject = true; WorldGen.KillTile(i, j1); WorldGen.KillTile(i, j1 + 1); WorldGen.KillTile(i, j1 + 2); Item.NewItem(i * 16, j * 16, 16, 16, 25); } WorldGen.destroyObject = false; return; case 11: if (WorldGen.destroyObject) return; int num6 = 0; int index11 = i; int num7 = j; int frameX2 = (int) Main.tile[i, j].frameX; int frameY3 = (int) Main.tile[i, j].frameY; bool flag2 = false; switch (frameX2) { case 0: index11 = i; num6 = 1; break; case 18: index11 = i - 1; num6 = 1; break; case 36: index11 = i + 1; num6 = -1; break; case 54: index11 = i; num6 = -1; break; } switch (frameY3) { case 0: num7 = j; break; case 18: num7 = j - 1; break; case 36: num7 = j - 2; break; } if (Main.tile[index11, num7 + 3] == null) Main.tile[index11, num7 + 3] = new Tile(); if (Main.tile[index11, num7 - 1] == null) Main.tile[index11, num7 - 1] = new Tile(); if (!Main.tile[index11, num7 - 1].active || !Main.tileSolid[(int) Main.tile[index11, num7 - 1].type] || !Main.tile[index11, num7 + 3].active || !Main.tileSolid[(int) Main.tile[index11, num7 + 3].type]) { flag2 = true; WorldGen.destroyObject = true; Item.NewItem(i * 16, j * 16, 16, 16, 25); } int num8 = index11; if (num6 == -1) num8 = index11 - 1; for (int i1 = num8; i1 < num8 + 2; ++i1) { for (int j2 = num7; j2 < num7 + 3; ++j2) { if (!flag2 && (Main.tile[i1, j2].type != (byte) 11 || !Main.tile[i1, j2].active)) { WorldGen.destroyObject = true; Item.NewItem(i * 16, j * 16, 16, 16, 25); flag2 = true; i1 = num8; j2 = num7; } if (flag2) WorldGen.KillTile(i1, j2); } } WorldGen.destroyObject = false; return; default: if (type1 == 34 || type1 == 35 || type1 == 36 || type1 == 106) { WorldGen.Check3x3(i, j, (int) (byte) type1); return; } if (type1 == 15 || type1 == 20) { WorldGen.Check1x2(i, j, (byte) type1); return; } if (type1 == 14 || type1 == 17 || type1 == 26 || type1 == 77 || type1 == 86 || type1 == 87 || type1 == 88 || type1 == 89 || type1 == 114 || type1 == 133) { WorldGen.Check3x2(i, j, (int) (byte) type1); return; } if (type1 == 135 || type1 == 144 || type1 == 141) { WorldGen.Check1x1(i, j, type1); return; } if (type1 == 16 || type1 == 18 || type1 == 29 || type1 == 103 || type1 == 134) { WorldGen.Check2x1(i, j, (byte) type1); return; } if (type1 == 13 || type1 == 33 || type1 == 50 || type1 == 78) { WorldGen.CheckOnTable1x1(i, j, (int) (byte) type1); return; } switch (type1) { case 21: WorldGen.CheckChest(i, j, (int) (byte) type1); return; case 27: WorldGen.CheckSunflower(i, j); return; case 28: WorldGen.CheckPot(i, j); return; case 128: WorldGen.CheckMan(i, j); return; default: if (type1 == 132 || type1 == 138 || type1 == 142 || type1 == 143) { WorldGen.Check2x2(i, j, type1); return; } if (type1 == 91) { WorldGen.CheckBanner(i, j, (byte) type1); return; } if (type1 == 139) { WorldGen.CheckMB(i, j, (int) (byte) type1); return; } if (type1 == 92 || type1 == 93) { WorldGen.Check1xX(i, j, (byte) type1); return; } if (type1 == 104 || type1 == 105) { WorldGen.Check2xX(i, j, (byte) type1); return; } if (type1 == 101 || type1 == 102) { WorldGen.Check3x4(i, j, (int) (byte) type1); return; } if (type1 == 42) { WorldGen.Check1x2Top(i, j, (byte) type1); return; } if (type1 == 55 || type1 == 85) { WorldGen.CheckSign(i, j, type1); return; } if (type1 == 79 || type1 == 90) { WorldGen.Check4x2(i, j, type1); return; } if (type1 == 85 || type1 == 94 || type1 == 95 || type1 == 96 || type1 == 97 || type1 == 98 || type1 == 99 || type1 == 100 || type1 == 125 || type1 == 126) { WorldGen.Check2x2(i, j, type1); return; } if (type1 == 81) { int index12 = -1; int num9 = -1; int num10 = -1; int num11 = -1; if (Main.tile[i, j - 1] != null && Main.tile[i, j - 1].active) num9 = (int) Main.tile[i, j - 1].type; if (Main.tile[i, j + 1] != null && Main.tile[i, j + 1].active) index12 = (int) Main.tile[i, j + 1].type; if (Main.tile[i - 1, j] != null && Main.tile[i - 1, j].active) num10 = (int) Main.tile[i - 1, j].type; if (Main.tile[i + 1, j] != null && Main.tile[i + 1, j].active) num11 = (int) Main.tile[i + 1, j].type; if (num10 != -1 || num9 != -1 || num11 != -1) { WorldGen.KillTile(i, j); return; } if (index12 >= 0 && Main.tileSolid[index12]) return; WorldGen.KillTile(i, j); return; } if (Main.tileAlch[type1]) { WorldGen.CheckAlch(i, j); return; } switch (type1) { case 5: WorldGen.CheckTree(i, j); return; case 72: int num12 = -1; int num13 = -1; if (Main.tile[i, j - 1] != null && Main.tile[i, j - 1].active) num13 = (int) Main.tile[i, j - 1].type; if (Main.tile[i, j + 1] != null && Main.tile[i, j + 1].active) num12 = (int) Main.tile[i, j + 1].type; if (num12 != type1 && num12 != 70) { WorldGen.KillTile(i, j); return; } if (num13 == type1 || Main.tile[i, j].frameX != (short) 0) return; Main.tile[i, j].frameNumber = (byte) WorldGen.genRand.Next(3); if (Main.tile[i, j].frameNumber == (byte) 0) { Main.tile[i, j].frameX = (short) 18; Main.tile[i, j].frameY = (short) 0; } if (Main.tile[i, j].frameNumber == (byte) 1) { Main.tile[i, j].frameX = (short) 18; Main.tile[i, j].frameY = (short) 18; } if (Main.tile[i, j].frameNumber != (byte) 2) return; Main.tile[i, j].frameX = (short) 18; Main.tile[i, j].frameY = (short) 36; return; default: return; } } } } } else { int index13 = -1; int index14 = -1; int index15 = -1; int index16 = -1; int index17 = -1; int index18 = -1; int index19 = -1; int index20 = -1; if (Main.tile[i - 1, j] != null && Main.tile[i - 1, j].active) index16 = !Main.tileStone[(int) Main.tile[i - 1, j].type] ? (int) Main.tile[i - 1, j].type : 1; if (Main.tile[i + 1, j] != null && Main.tile[i + 1, j].active) index17 = !Main.tileStone[(int) Main.tile[i + 1, j].type] ? (int) Main.tile[i + 1, j].type : 1; if (Main.tile[i, j - 1] != null && Main.tile[i, j - 1].active) index14 = !Main.tileStone[(int) Main.tile[i, j - 1].type] ? (int) Main.tile[i, j - 1].type : 1; if (Main.tile[i, j + 1] != null && Main.tile[i, j + 1].active) index19 = !Main.tileStone[(int) Main.tile[i, j + 1].type] ? (int) Main.tile[i, j + 1].type : 1; if (Main.tile[i - 1, j - 1] != null && Main.tile[i - 1, j - 1].active) index13 = !Main.tileStone[(int) Main.tile[i - 1, j - 1].type] ? (int) Main.tile[i - 1, j - 1].type : 1; if (Main.tile[i + 1, j - 1] != null && Main.tile[i + 1, j - 1].active) index15 = !Main.tileStone[(int) Main.tile[i + 1, j - 1].type] ? (int) Main.tile[i + 1, j - 1].type : 1; if (Main.tile[i - 1, j + 1] != null && Main.tile[i - 1, j + 1].active) index18 = !Main.tileStone[(int) Main.tile[i - 1, j + 1].type] ? (int) Main.tile[i - 1, j + 1].type : 1; if (Main.tile[i + 1, j + 1] != null && Main.tile[i + 1, j + 1].active) index20 = !Main.tileStone[(int) Main.tile[i + 1, j + 1].type] ? (int) Main.tile[i + 1, j + 1].type : 1; if (!Main.tileSolid[type1]) { if (type1 == 49) { WorldGen.CheckOnTable1x1(i, j, (int) (byte) type1); return; } if (type1 == 80) { WorldGen.CactusFrame(i, j); return; } } else if (type1 == 19) { if (index17 >= 0 && !Main.tileSolid[index17]) index17 = -1; if (index16 >= 0 && !Main.tileSolid[index16]) index16 = -1; if (index16 == type1 && index17 == type1) { if (Main.tile[i, j].frameNumber == (byte) 0) { rectangle.X = 0; rectangle.Y = 0; } else if (Main.tile[i, j].frameNumber == (byte) 1) { rectangle.X = 0; rectangle.Y = 18; } else { rectangle.X = 0; rectangle.Y = 36; } } else if (index16 == type1 && index17 == -1) { if (Main.tile[i, j].frameNumber == (byte) 0) { rectangle.X = 18; rectangle.Y = 0; } else if (Main.tile[i, j].frameNumber == (byte) 1) { rectangle.X = 18; rectangle.Y = 18; } else { rectangle.X = 18; rectangle.Y = 36; } } else if (index16 == -1 && index17 == type1) { if (Main.tile[i, j].frameNumber == (byte) 0) { rectangle.X = 36; rectangle.Y = 0; } else if (Main.tile[i, j].frameNumber == (byte) 1) { rectangle.X = 36; rectangle.Y = 18; } else { rectangle.X = 36; rectangle.Y = 36; } } else if (index16 != type1 && index17 == type1) { if (Main.tile[i, j].frameNumber == (byte) 0) { rectangle.X = 54; rectangle.Y = 0; } else if (Main.tile[i, j].frameNumber == (byte) 1) { rectangle.X = 54; rectangle.Y = 18; } else { rectangle.X = 54; rectangle.Y = 36; } } else if (index16 == type1 && index17 != type1) { if (Main.tile[i, j].frameNumber == (byte) 0) { rectangle.X = 72; rectangle.Y = 0; } else if (Main.tile[i, j].frameNumber == (byte) 1) { rectangle.X = 72; rectangle.Y = 18; } else { rectangle.X = 72; rectangle.Y = 36; } } else if (index16 != type1 && index16 != -1 && index17 == -1) { if (Main.tile[i, j].frameNumber == (byte) 0) { rectangle.X = 108; rectangle.Y = 0; } else if (Main.tile[i, j].frameNumber == (byte) 1) { rectangle.X = 108; rectangle.Y = 18; } else { rectangle.X = 108; rectangle.Y = 36; } } else if (index16 == -1 && index17 != type1 && index17 != -1) { if (Main.tile[i, j].frameNumber == (byte) 0) { rectangle.X = 126; rectangle.Y = 0; } else if (Main.tile[i, j].frameNumber == (byte) 1) { rectangle.X = 126; rectangle.Y = 18; } else { rectangle.X = 126; rectangle.Y = 36; } } else if (Main.tile[i, j].frameNumber == (byte) 0) { rectangle.X = 90; rectangle.Y = 0; } else if (Main.tile[i, j].frameNumber == (byte) 1) { rectangle.X = 90; rectangle.Y = 18; } else { rectangle.X = 90; rectangle.Y = 36; } } WorldGen.mergeUp = false; WorldGen.mergeDown = false; WorldGen.mergeLeft = false; WorldGen.mergeRight = false; int num14; if (resetFrame) { num14 = WorldGen.genRand.Next(0, 3); Main.tile[i, j].frameNumber = (byte) num14; } else num14 = (int) Main.tile[i, j].frameNumber; if (type1 == 0) { if (index14 >= 0 && Main.tileMergeDirt[index14]) { WorldGen.TileFrame(i, j - 1); if (WorldGen.mergeDown) index14 = type1; } if (index19 >= 0 && Main.tileMergeDirt[index19]) { WorldGen.TileFrame(i, j + 1); if (WorldGen.mergeUp) index19 = type1; } if (index16 >= 0 && Main.tileMergeDirt[index16]) { WorldGen.TileFrame(i - 1, j); if (WorldGen.mergeRight) index16 = type1; } if (index17 >= 0 && Main.tileMergeDirt[index17]) { WorldGen.TileFrame(i + 1, j); if (WorldGen.mergeLeft) index17 = type1; } if (index14 == 2 || index14 == 23 || index14 == 109) index14 = type1; if (index19 == 2 || index19 == 23 || index19 == 109) index19 = type1; if (index16 == 2 || index16 == 23 || index16 == 109) index16 = type1; if (index17 == 2 || index17 == 23 || index17 == 109) index17 = type1; if (index13 >= 0 && Main.tileMergeDirt[index13]) index13 = type1; else if (index13 == 2 || index13 == 23 || index13 == 109) index13 = type1; if (index15 >= 0 && Main.tileMergeDirt[index15]) index15 = type1; else if (index15 == 2 || index15 == 23 || index15 == 109) index15 = type1; if (index18 >= 0 && Main.tileMergeDirt[index18]) index18 = type1; else if (index18 == 2 || index18 == 23 || index15 == 109) index18 = type1; if (index20 >= 0 && Main.tileMergeDirt[index20]) index20 = type1; else if (index20 == 2 || index20 == 23 || index20 == 109) index20 = type1; if ((double) j < Main.rockLayer) { if (index14 == 59) index14 = -2; if (index19 == 59) index19 = -2; if (index16 == 59) index16 = -2; if (index17 == 59) index17 = -2; if (index13 == 59) index13 = -2; if (index15 == 59) index15 = -2; if (index18 == 59) index18 = -2; if (index20 == 59) index20 = -2; } } else if (Main.tileMergeDirt[type1]) { if (index14 == 0) index14 = -2; if (index19 == 0) index19 = -2; if (index16 == 0) index16 = -2; if (index17 == 0) index17 = -2; if (index13 == 0) index13 = -2; if (index15 == 0) index15 = -2; if (index18 == 0) index18 = -2; if (index20 == 0) index20 = -2; if (type1 == 1) { if ((double) j > Main.rockLayer) { if (index14 == 59) { WorldGen.TileFrame(i, j - 1); if (WorldGen.mergeDown) index14 = type1; } if (index19 == 59) { WorldGen.TileFrame(i, j + 1); if (WorldGen.mergeUp) index19 = type1; } if (index16 == 59) { WorldGen.TileFrame(i - 1, j); if (WorldGen.mergeRight) index16 = type1; } if (index17 == 59) { WorldGen.TileFrame(i + 1, j); if (WorldGen.mergeLeft) index17 = type1; } if (index13 == 59) index13 = type1; if (index15 == 59) index15 = type1; if (index18 == 59) index18 = type1; if (index20 == 59) index20 = type1; } if (index14 == 57) { WorldGen.TileFrame(i, j - 1); if (WorldGen.mergeDown) index14 = type1; } if (index19 == 57) { WorldGen.TileFrame(i, j + 1); if (WorldGen.mergeUp) index19 = type1; } if (index16 == 57) { WorldGen.TileFrame(i - 1, j); if (WorldGen.mergeRight) index16 = type1; } if (index17 == 57) { WorldGen.TileFrame(i + 1, j); if (WorldGen.mergeLeft) index17 = type1; } if (index13 == 57) index13 = type1; if (index15 == 57) index15 = type1; if (index18 == 57) index18 = type1; if (index20 == 57) index20 = type1; } } else { switch (type1) { case 32: if (index19 == 23) { index19 = type1; break; } break; case 51: if (index14 > -1 && !Main.tileNoAttach[index14]) index14 = type1; if (index19 > -1 && !Main.tileNoAttach[index19]) index19 = type1; if (index16 > -1 && !Main.tileNoAttach[index16]) index16 = type1; if (index17 > -1 && !Main.tileNoAttach[index17]) index17 = type1; if (index13 > -1 && !Main.tileNoAttach[index13]) index13 = type1; if (index15 > -1 && !Main.tileNoAttach[index15]) index15 = type1; if (index18 > -1 && !Main.tileNoAttach[index18]) index18 = type1; if (index20 > -1 && !Main.tileNoAttach[index20]) { index20 = type1; break; } break; case 57: if (index14 == 1) index14 = -2; if (index19 == 1) index19 = -2; if (index16 == 1) index16 = -2; if (index17 == 1) index17 = -2; if (index13 == 1) index13 = -2; if (index15 == 1) index15 = -2; if (index18 == 1) index18 = -2; if (index20 == 1) index20 = -2; if (index14 == 58 || index14 == 76 || index14 == 75) { WorldGen.TileFrame(i, j - 1); if (WorldGen.mergeDown) index14 = type1; } if (index19 == 58 || index19 == 76 || index19 == 75) { WorldGen.TileFrame(i, j + 1); if (WorldGen.mergeUp) index19 = type1; } if (index16 == 58 || index16 == 76 || index16 == 75) { WorldGen.TileFrame(i - 1, j); if (WorldGen.mergeRight) index16 = type1; } if (index17 == 58 || index17 == 76 || index17 == 75) { WorldGen.TileFrame(i + 1, j); if (WorldGen.mergeLeft) index17 = type1; } if (index13 == 58 || index13 == 76 || index13 == 75) index13 = type1; if (index15 == 58 || index15 == 76 || index15 == 75) index15 = type1; if (index18 == 58 || index18 == 76 || index18 == 75) index18 = type1; if (index20 == 58 || index20 == 76 || index20 == 75) { index20 = type1; break; } break; case 58: case 75: case 76: if (index14 == 57) index14 = -2; if (index19 == 57) index19 = -2; if (index16 == 57) index16 = -2; if (index17 == 57) index17 = -2; if (index13 == 57) index13 = -2; if (index15 == 57) index15 = -2; if (index18 == 57) index18 = -2; if (index20 == 57) { index20 = -2; break; } break; case 59: if ((double) j > Main.rockLayer) { if (index14 == 1) index14 = -2; if (index19 == 1) index19 = -2; if (index16 == 1) index16 = -2; if (index17 == 1) index17 = -2; if (index13 == 1) index13 = -2; if (index15 == 1) index15 = -2; if (index18 == 1) index18 = -2; if (index20 == 1) index20 = -2; } if (index14 == 60) index14 = type1; if (index19 == 60) index19 = type1; if (index16 == 60) index16 = type1; if (index17 == 60) index17 = type1; if (index13 == 60) index13 = type1; if (index15 == 60) index15 = type1; if (index18 == 60) index18 = type1; if (index20 == 60) index20 = type1; if (index14 == 70) index14 = type1; if (index19 == 70) index19 = type1; if (index16 == 70) index16 = type1; if (index17 == 70) index17 = type1; if (index13 == 70) index13 = type1; if (index15 == 70) index15 = type1; if (index18 == 70) index18 = type1; if (index20 == 70) index20 = type1; if ((double) j < Main.rockLayer) { if (index14 == 0) { WorldGen.TileFrame(i, j - 1); if (WorldGen.mergeDown) index14 = type1; } if (index19 == 0) { WorldGen.TileFrame(i, j + 1); if (WorldGen.mergeUp) index19 = type1; } if (index16 == 0) { WorldGen.TileFrame(i - 1, j); if (WorldGen.mergeRight) index16 = type1; } if (index17 == 0) { WorldGen.TileFrame(i + 1, j); if (WorldGen.mergeLeft) index17 = type1; } if (index13 == 0) index13 = type1; if (index15 == 0) index15 = type1; if (index18 == 0) index18 = type1; if (index20 == 0) { index20 = type1; break; } break; } break; case 69: if (index19 == 60) { index19 = type1; break; } break; } } bool flag3 = false; if (type1 == 2 || type1 == 23 || type1 == 60 || type1 == 70 || type1 == 109) { flag3 = true; if (index14 > -1 && !Main.tileSolid[index14] && index14 != type1) index14 = -1; if (index19 > -1 && !Main.tileSolid[index19] && index19 != type1) index19 = -1; if (index16 > -1 && !Main.tileSolid[index16] && index16 != type1) index16 = -1; if (index17 > -1 && !Main.tileSolid[index17] && index17 != type1) index17 = -1; if (index13 > -1 && !Main.tileSolid[index13] && index13 != type1) index13 = -1; if (index15 > -1 && !Main.tileSolid[index15] && index15 != type1) index15 = -1; if (index18 > -1 && !Main.tileSolid[index18] && index18 != type1) index18 = -1; if (index20 > -1 && !Main.tileSolid[index20] && index20 != type1) index20 = -1; int num15 = 0; switch (type1) { case 2: if (index14 == 23) index14 = num15; if (index19 == 23) index19 = num15; if (index16 == 23) index16 = num15; if (index17 == 23) index17 = num15; if (index13 == 23) index13 = num15; if (index15 == 23) index15 = num15; if (index18 == 23) index18 = num15; if (index20 == 23) { index20 = num15; break; } break; case 23: if (index14 == 2) index14 = num15; if (index19 == 2) index19 = num15; if (index16 == 2) index16 = num15; if (index17 == 2) index17 = num15; if (index13 == 2) index13 = num15; if (index15 == 2) index15 = num15; if (index18 == 2) index18 = num15; if (index20 == 2) { index20 = num15; break; } break; case 60: case 70: num15 = 59; break; } if (index14 != type1 && index14 != num15 && (index19 == type1 || index19 == num15)) { if (index16 == num15 && index17 == type1) { switch (num14) { case 0: rectangle.X = 0; rectangle.Y = 198; break; case 1: rectangle.X = 18; rectangle.Y = 198; break; default: rectangle.X = 36; rectangle.Y = 198; break; } } else if (index16 == type1 && index17 == num15) { switch (num14) { case 0: rectangle.X = 54; rectangle.Y = 198; break; case 1: rectangle.X = 72; rectangle.Y = 198; break; default: rectangle.X = 90; rectangle.Y = 198; break; } } } else if (index19 != type1 && index19 != num15 && (index14 == type1 || index14 == num15)) { if (index16 == num15 && index17 == type1) { switch (num14) { case 0: rectangle.X = 0; rectangle.Y = 216; break; case 1: rectangle.X = 18; rectangle.Y = 216; break; default: rectangle.X = 36; rectangle.Y = 216; break; } } else if (index16 == type1 && index17 == num15) { switch (num14) { case 0: rectangle.X = 54; rectangle.Y = 216; break; case 1: rectangle.X = 72; rectangle.Y = 216; break; default: rectangle.X = 90; rectangle.Y = 216; break; } } } else if (index16 != type1 && index16 != num15 && (index17 == type1 || index17 == num15)) { if (index14 == num15 && index19 == type1) { switch (num14) { case 0: rectangle.X = 72; rectangle.Y = 144; break; case 1: rectangle.X = 72; rectangle.Y = 162; break; default: rectangle.X = 72; rectangle.Y = 180; break; } } else if (index19 == type1 && index17 == index14) { switch (num14) { case 0: rectangle.X = 72; rectangle.Y = 90; break; case 1: rectangle.X = 72; rectangle.Y = 108; break; default: rectangle.X = 72; rectangle.Y = 126; break; } } } else if (index17 != type1 && index17 != num15 && (index16 == type1 || index16 == num15)) { if (index14 == num15 && index19 == type1) { switch (num14) { case 0: rectangle.X = 90; rectangle.Y = 144; break; case 1: rectangle.X = 90; rectangle.Y = 162; break; default: rectangle.X = 90; rectangle.Y = 180; break; } } else if (index19 == type1 && index17 == index14) { switch (num14) { case 0: rectangle.X = 90; rectangle.Y = 90; break; case 1: rectangle.X = 90; rectangle.Y = 108; break; default: rectangle.X = 90; rectangle.Y = 126; break; } } } else if (index14 == type1 && index19 == type1 && index16 == type1 && index17 == type1) { if (index13 != type1 && index15 != type1 && index18 != type1 && index20 != type1) { if (index20 == num15) { switch (num14) { case 0: rectangle.X = 108; rectangle.Y = 324; break; case 1: rectangle.X = 126; rectangle.Y = 324; break; default: rectangle.X = 144; rectangle.Y = 324; break; } } else if (index15 == num15) { switch (num14) { case 0: rectangle.X = 108; rectangle.Y = 342; break; case 1: rectangle.X = 126; rectangle.Y = 342; break; default: rectangle.X = 144; rectangle.Y = 342; break; } } else if (index18 == num15) { switch (num14) { case 0: rectangle.X = 108; rectangle.Y = 360; break; case 1: rectangle.X = 126; rectangle.Y = 360; break; default: rectangle.X = 144; rectangle.Y = 360; break; } } else if (index13 == num15) { switch (num14) { case 0: rectangle.X = 108; rectangle.Y = 378; break; case 1: rectangle.X = 126; rectangle.Y = 378; break; default: rectangle.X = 144; rectangle.Y = 378; break; } } else { switch (num14) { case 0: rectangle.X = 144; rectangle.Y = 234; break; case 1: rectangle.X = 198; rectangle.Y = 234; break; default: rectangle.X = 252; rectangle.Y = 234; break; } } } else if (index13 != type1 && index20 != type1) { switch (num14) { case 0: rectangle.X = 36; rectangle.Y = 306; break; case 1: rectangle.X = 54; rectangle.Y = 306; break; default: rectangle.X = 72; rectangle.Y = 306; break; } } else if (index15 != type1 && index18 != type1) { switch (num14) { case 0: rectangle.X = 90; rectangle.Y = 306; break; case 1: rectangle.X = 108; rectangle.Y = 306; break; default: rectangle.X = 126; rectangle.Y = 306; break; } } else if (index13 != type1 && index15 == type1 && index18 == type1 && index20 == type1) { switch (num14) { case 0: rectangle.X = 54; rectangle.Y = 108; break; case 1: rectangle.X = 54; rectangle.Y = 144; break; default: rectangle.X = 54; rectangle.Y = 180; break; } } else if (index13 == type1 && index15 != type1 && index18 == type1 && index20 == type1) { switch (num14) { case 0: rectangle.X = 36; rectangle.Y = 108; break; case 1: rectangle.X = 36; rectangle.Y = 144; break; default: rectangle.X = 36; rectangle.Y = 180; break; } } else if (index13 == type1 && index15 == type1 && index18 != type1 && index20 == type1) { switch (num14) { case 0: rectangle.X = 54; rectangle.Y = 90; break; case 1: rectangle.X = 54; rectangle.Y = 126; break; default: rectangle.X = 54; rectangle.Y = 162; break; } } else if (index13 == type1 && index15 == type1 && index18 == type1 && index20 != type1) { switch (num14) { case 0: rectangle.X = 36; rectangle.Y = 90; break; case 1: rectangle.X = 36; rectangle.Y = 126; break; default: rectangle.X = 36; rectangle.Y = 162; break; } } } else if (index14 == type1 && index19 == num15 && index16 == type1 && index17 == type1 && index13 == -1 && index15 == -1) { switch (num14) { case 0: rectangle.X = 108; rectangle.Y = 18; break; case 1: rectangle.X = 126; rectangle.Y = 18; break; default: rectangle.X = 144; rectangle.Y = 18; break; } } else if (index14 == num15 && index19 == type1 && index16 == type1 && index17 == type1 && index18 == -1 && index20 == -1) { switch (num14) { case 0: rectangle.X = 108; rectangle.Y = 36; break; case 1: rectangle.X = 126; rectangle.Y = 36; break; default: rectangle.X = 144; rectangle.Y = 36; break; } } else if (index14 == type1 && index19 == type1 && index16 == num15 && index17 == type1 && index15 == -1 && index20 == -1) { switch (num14) { case 0: rectangle.X = 198; rectangle.Y = 0; break; case 1: rectangle.X = 198; rectangle.Y = 18; break; default: rectangle.X = 198; rectangle.Y = 36; break; } } else if (index14 == type1 && index19 == type1 && index16 == type1 && index17 == num15 && index13 == -1 && index18 == -1) { switch (num14) { case 0: rectangle.X = 180; rectangle.Y = 0; break; case 1: rectangle.X = 180; rectangle.Y = 18; break; default: rectangle.X = 180; rectangle.Y = 36; break; } } else if (index14 == type1 && index19 == num15 && index16 == type1 && index17 == type1) { if (index15 != -1) { switch (num14) { case 0: rectangle.X = 54; rectangle.Y = 108; break; case 1: rectangle.X = 54; rectangle.Y = 144; break; default: rectangle.X = 54; rectangle.Y = 180; break; } } else if (index13 != -1) { switch (num14) { case 0: rectangle.X = 36; rectangle.Y = 108; break; case 1: rectangle.X = 36; rectangle.Y = 144; break; default: rectangle.X = 36; rectangle.Y = 180; break; } } } else if (index14 == num15 && index19 == type1 && index16 == type1 && index17 == type1) { if (index20 != -1) { switch (num14) { case 0: rectangle.X = 54; rectangle.Y = 90; break; case 1: rectangle.X = 54; rectangle.Y = 126; break; default: rectangle.X = 54; rectangle.Y = 162; break; } } else if (index18 != -1) { switch (num14) { case 0: rectangle.X = 36; rectangle.Y = 90; break; case 1: rectangle.X = 36; rectangle.Y = 126; break; default: rectangle.X = 36; rectangle.Y = 162; break; } } } else if (index14 == type1 && index19 == type1 && index16 == type1 && index17 == num15) { if (index13 != -1) { switch (num14) { case 0: rectangle.X = 54; rectangle.Y = 90; break; case 1: rectangle.X = 54; rectangle.Y = 126; break; default: rectangle.X = 54; rectangle.Y = 162; break; } } else if (index18 != -1) { switch (num14) { case 0: rectangle.X = 54; rectangle.Y = 108; break; case 1: rectangle.X = 54; rectangle.Y = 144; break; default: rectangle.X = 54; rectangle.Y = 180; break; } } } else if (index14 == type1 && index19 == type1 && index16 == num15 && index17 == type1) { if (index15 != -1) { switch (num14) { case 0: rectangle.X = 36; rectangle.Y = 90; break; case 1: rectangle.X = 36; rectangle.Y = 126; break; default: rectangle.X = 36; rectangle.Y = 162; break; } } else if (index20 != -1) { switch (num14) { case 0: rectangle.X = 36; rectangle.Y = 108; break; case 1: rectangle.X = 36; rectangle.Y = 144; break; default: rectangle.X = 36; rectangle.Y = 180; break; } } } else if (index14 == num15 && index19 == type1 && index16 == type1 && index17 == type1 || index14 == type1 && index19 == num15 && index16 == type1 && index17 == type1 || index14 == type1 && index19 == type1 && index16 == num15 && index17 == type1 || index14 == type1 && index19 == type1 && index16 == type1 && index17 == num15) { switch (num14) { case 0: rectangle.X = 18; rectangle.Y = 18; break; case 1: rectangle.X = 36; rectangle.Y = 18; break; default: rectangle.X = 54; rectangle.Y = 18; break; } } if ((index14 == type1 || index14 == num15) && (index19 == type1 || index19 == num15) && (index16 == type1 || index16 == num15) && (index17 == type1 || index17 == num15)) { if (index13 != type1 && index13 != num15 && (index15 == type1 || index15 == num15) && (index18 == type1 || index18 == num15) && (index20 == type1 || index20 == num15)) { switch (num14) { case 0: rectangle.X = 54; rectangle.Y = 108; break; case 1: rectangle.X = 54; rectangle.Y = 144; break; default: rectangle.X = 54; rectangle.Y = 180; break; } } else if (index15 != type1 && index15 != num15 && (index13 == type1 || index13 == num15) && (index18 == type1 || index18 == num15) && (index20 == type1 || index20 == num15)) { switch (num14) { case 0: rectangle.X = 36; rectangle.Y = 108; break; case 1: rectangle.X = 36; rectangle.Y = 144; break; default: rectangle.X = 36; rectangle.Y = 180; break; } } else if (index18 != type1 && index18 != num15 && (index13 == type1 || index13 == num15) && (index15 == type1 || index15 == num15) && (index20 == type1 || index20 == num15)) { switch (num14) { case 0: rectangle.X = 54; rectangle.Y = 90; break; case 1: rectangle.X = 54; rectangle.Y = 126; break; default: rectangle.X = 54; rectangle.Y = 162; break; } } else if (index20 != type1 && index20 != num15 && (index13 == type1 || index13 == num15) && (index18 == type1 || index18 == num15) && (index15 == type1 || index15 == num15)) { switch (num14) { case 0: rectangle.X = 36; rectangle.Y = 90; break; case 1: rectangle.X = 36; rectangle.Y = 126; break; default: rectangle.X = 36; rectangle.Y = 162; break; } } } if (index14 != num15 && index14 != type1 && index19 == type1 && index16 != num15 && index16 != type1 && index17 == type1 && index20 != num15 && index20 != type1) { switch (num14) { case 0: rectangle.X = 90; rectangle.Y = 270; break; case 1: rectangle.X = 108; rectangle.Y = 270; break; default: rectangle.X = 126; rectangle.Y = 270; break; } } else if (index14 != num15 && index14 != type1 && index19 == type1 && index16 == type1 && index17 != num15 && index17 != type1 && index18 != num15 && index18 != type1) { switch (num14) { case 0: rectangle.X = 144; rectangle.Y = 270; break; case 1: rectangle.X = 162; rectangle.Y = 270; break; default: rectangle.X = 180; rectangle.Y = 270; break; } } else if (index19 != num15 && index19 != type1 && index14 == type1 && index16 != num15 && index16 != type1 && index17 == type1 && index15 != num15 && index15 != type1) { switch (num14) { case 0: rectangle.X = 90; rectangle.Y = 288; break; case 1: rectangle.X = 108; rectangle.Y = 288; break; default: rectangle.X = 126; rectangle.Y = 288; break; } } else if (index19 != num15 && index19 != type1 && index14 == type1 && index16 == type1 && index17 != num15 && index17 != type1 && index13 != num15 && index13 != type1) { switch (num14) { case 0: rectangle.X = 144; rectangle.Y = 288; break; case 1: rectangle.X = 162; rectangle.Y = 288; break; default: rectangle.X = 180; rectangle.Y = 288; break; } } else if (index14 != type1 && index14 != num15 && index19 == type1 && index16 == type1 && index17 == type1 && index18 != type1 && index18 != num15 && index20 != type1 && index20 != num15) { switch (num14) { case 0: rectangle.X = 144; rectangle.Y = 216; break; case 1: rectangle.X = 198; rectangle.Y = 216; break; default: rectangle.X = 252; rectangle.Y = 216; break; } } else if (index19 != type1 && index19 != num15 && index14 == type1 && index16 == type1 && index17 == type1 && index13 != type1 && index13 != num15 && index15 != type1 && index15 != num15) { switch (num14) { case 0: rectangle.X = 144; rectangle.Y = 252; break; case 1: rectangle.X = 198; rectangle.Y = 252; break; default: rectangle.X = 252; rectangle.Y = 252; break; } } else if (index16 != type1 && index16 != num15 && index19 == type1 && index14 == type1 && index17 == type1 && index15 != type1 && index15 != num15 && index20 != type1 && index20 != num15) { switch (num14) { case 0: rectangle.X = 126; rectangle.Y = 234; break; case 1: rectangle.X = 180; rectangle.Y = 234; break; default: rectangle.X = 234; rectangle.Y = 234; break; } } else if (index17 != type1 && index17 != num15 && index19 == type1 && index14 == type1 && index16 == type1 && index13 != type1 && index13 != num15 && index18 != type1 && index18 != num15) { switch (num14) { case 0: rectangle.X = 162; rectangle.Y = 234; break; case 1: rectangle.X = 216; rectangle.Y = 234; break; default: rectangle.X = 270; rectangle.Y = 234; break; } } else if (index14 != num15 && index14 != type1 && (index19 == num15 || index19 == type1) && index16 == num15 && index17 == num15) { switch (num14) { case 0: rectangle.X = 36; rectangle.Y = 270; break; case 1: rectangle.X = 54; rectangle.Y = 270; break; default: rectangle.X = 72; rectangle.Y = 270; break; } } else if (index19 != num15 && index19 != type1 && (index14 == num15 || index14 == type1) && index16 == num15 && index17 == num15) { switch (num14) { case 0: rectangle.X = 36; rectangle.Y = 288; break; case 1: rectangle.X = 54; rectangle.Y = 288; break; default: rectangle.X = 72; rectangle.Y = 288; break; } } else if (index16 != num15 && index16 != type1 && (index17 == num15 || index17 == type1) && index14 == num15 && index19 == num15) { switch (num14) { case 0: rectangle.X = 0; rectangle.Y = 270; break; case 1: rectangle.X = 0; rectangle.Y = 288; break; default: rectangle.X = 0; rectangle.Y = 306; break; } } else if (index17 != num15 && index17 != type1 && (index16 == num15 || index16 == type1) && index14 == num15 && index19 == num15) { switch (num14) { case 0: rectangle.X = 18; rectangle.Y = 270; break; case 1: rectangle.X = 18; rectangle.Y = 288; break; default: rectangle.X = 18; rectangle.Y = 306; break; } } else if (index14 == type1 && index19 == num15 && index16 == num15 && index17 == num15) { switch (num14) { case 0: rectangle.X = 198; rectangle.Y = 288; break; case 1: rectangle.X = 216; rectangle.Y = 288; break; default: rectangle.X = 234; rectangle.Y = 288; break; } } else if (index14 == num15 && index19 == type1 && index16 == num15 && index17 == num15) { switch (num14) { case 0: rectangle.X = 198; rectangle.Y = 270; break; case 1: rectangle.X = 216; rectangle.Y = 270; break; default: rectangle.X = 234; rectangle.Y = 270; break; } } else if (index14 == num15 && index19 == num15 && index16 == type1 && index17 == num15) { switch (num14) { case 0: rectangle.X = 198; rectangle.Y = 306; break; case 1: rectangle.X = 216; rectangle.Y = 306; break; default: rectangle.X = 234; rectangle.Y = 306; break; } } else if (index14 == num15 && index19 == num15 && index16 == num15 && index17 == type1) { switch (num14) { case 0: rectangle.X = 144; rectangle.Y = 306; break; case 1: rectangle.X = 162; rectangle.Y = 306; break; default: rectangle.X = 180; rectangle.Y = 306; break; } } if (index14 != type1 && index14 != num15 && index19 == type1 && index16 == type1 && index17 == type1) { if ((index18 == num15 || index18 == type1) && index20 != num15 && index20 != type1) { switch (num14) { case 0: rectangle.X = 0; rectangle.Y = 324; break; case 1: rectangle.X = 18; rectangle.Y = 324; break; default: rectangle.X = 36; rectangle.Y = 324; break; } } else if ((index20 == num15 || index20 == type1) && index18 != num15 && index18 != type1) { switch (num14) { case 0: rectangle.X = 54; rectangle.Y = 324; break; case 1: rectangle.X = 72; rectangle.Y = 324; break; default: rectangle.X = 90; rectangle.Y = 324; break; } } } else if (index19 != type1 && index19 != num15 && index14 == type1 && index16 == type1 && index17 == type1) { if ((index13 == num15 || index13 == type1) && index15 != num15 && index15 != type1) { switch (num14) { case 0: rectangle.X = 0; rectangle.Y = 342; break; case 1: rectangle.X = 18; rectangle.Y = 342; break; default: rectangle.X = 36; rectangle.Y = 342; break; } } else if ((index15 == num15 || index15 == type1) && index13 != num15 && index13 != type1) { switch (num14) { case 0: rectangle.X = 54; rectangle.Y = 342; break; case 1: rectangle.X = 72; rectangle.Y = 342; break; default: rectangle.X = 90; rectangle.Y = 342; break; } } } else if (index16 != type1 && index16 != num15 && index14 == type1 && index19 == type1 && index17 == type1) { if ((index15 == num15 || index15 == type1) && index20 != num15 && index20 != type1) { switch (num14) { case 0: rectangle.X = 54; rectangle.Y = 360; break; case 1: rectangle.X = 72; rectangle.Y = 360; break; default: rectangle.X = 90; rectangle.Y = 360; break; } } else if ((index20 == num15 || index20 == type1) && index15 != num15 && index15 != type1) { switch (num14) { case 0: rectangle.X = 0; rectangle.Y = 360; break; case 1: rectangle.X = 18; rectangle.Y = 360; break; default: rectangle.X = 36; rectangle.Y = 360; break; } } } else if (index17 != type1 && index17 != num15 && index14 == type1 && index19 == type1 && index16 == type1) { if ((index13 == num15 || index13 == type1) && index18 != num15 && index18 != type1) { switch (num14) { case 0: rectangle.X = 0; rectangle.Y = 378; break; case 1: rectangle.X = 18; rectangle.Y = 378; break; default: rectangle.X = 36; rectangle.Y = 378; break; } } else if ((index18 == num15 || index18 == type1) && index13 != num15 && index13 != type1) { switch (num14) { case 0: rectangle.X = 54; rectangle.Y = 378; break; case 1: rectangle.X = 72; rectangle.Y = 378; break; default: rectangle.X = 90; rectangle.Y = 378; break; } } } if ((index14 == type1 || index14 == num15) && (index19 == type1 || index19 == num15) && (index16 == type1 || index16 == num15) && (index17 == type1 || index17 == num15) && index13 != -1 && index15 != -1 && index18 != -1 && index20 != -1) { switch (num14) { case 0: rectangle.X = 18; rectangle.Y = 18; break; case 1: rectangle.X = 36; rectangle.Y = 18; break; default: rectangle.X = 54; rectangle.Y = 18; break; } } if (index14 == num15) index14 = -2; if (index19 == num15) index19 = -2; if (index16 == num15) index16 = -2; if (index17 == num15) index17 = -2; if (index13 == num15) index13 = -2; if (index15 == num15) index15 = -2; if (index18 == num15) index18 = -2; if (index20 == num15) index20 = -2; } if (rectangle.X == -1 && rectangle.Y == -1 && (Main.tileMergeDirt[type1] || type1 == 0 || type1 == 2 || type1 == 57 || type1 == 58 || type1 == 59 || type1 == 60 || type1 == 70 || type1 == 109 || type1 == 76 || type1 == 75)) { if (!flag3) { flag3 = true; if (index14 > -1 && !Main.tileSolid[index14] && index14 != type1) index14 = -1; if (index19 > -1 && !Main.tileSolid[index19] && index19 != type1) index19 = -1; if (index16 > -1 && !Main.tileSolid[index16] && index16 != type1) index16 = -1; if (index17 > -1 && !Main.tileSolid[index17] && index17 != type1) index17 = -1; if (index13 > -1 && !Main.tileSolid[index13] && index13 != type1) index13 = -1; if (index15 > -1 && !Main.tileSolid[index15] && index15 != type1) index15 = -1; if (index18 > -1 && !Main.tileSolid[index18] && index18 != type1) index18 = -1; if (index20 > -1 && !Main.tileSolid[index20] && index20 != type1) index20 = -1; } if (index14 >= 0 && index14 != type1) index14 = -1; if (index19 >= 0 && index19 != type1) index19 = -1; if (index16 >= 0 && index16 != type1) index16 = -1; if (index17 >= 0 && index17 != type1) index17 = -1; if (index14 != -1 && index19 != -1 && index16 != -1 && index17 != -1) { if (index14 == -2 && index19 == type1 && index16 == type1 && index17 == type1) { switch (num14) { case 0: rectangle.X = 144; rectangle.Y = 108; break; case 1: rectangle.X = 162; rectangle.Y = 108; break; default: rectangle.X = 180; rectangle.Y = 108; break; } WorldGen.mergeUp = true; } else if (index14 == type1 && index19 == -2 && index16 == type1 && index17 == type1) { switch (num14) { case 0: rectangle.X = 144; rectangle.Y = 90; break; case 1: rectangle.X = 162; rectangle.Y = 90; break; default: rectangle.X = 180; rectangle.Y = 90; break; } WorldGen.mergeDown = true; } else if (index14 == type1 && index19 == type1 && index16 == -2 && index17 == type1) { switch (num14) { case 0: rectangle.X = 162; rectangle.Y = 126; break; case 1: rectangle.X = 162; rectangle.Y = 144; break; default: rectangle.X = 162; rectangle.Y = 162; break; } WorldGen.mergeLeft = true; } else if (index14 == type1 && index19 == type1 && index16 == type1 && index17 == -2) { switch (num14) { case 0: rectangle.X = 144; rectangle.Y = 126; break; case 1: rectangle.X = 144; rectangle.Y = 144; break; default: rectangle.X = 144; rectangle.Y = 162; break; } WorldGen.mergeRight = true; } else if (index14 == -2 && index19 == type1 && index16 == -2 && index17 == type1) { switch (num14) { case 0: rectangle.X = 36; rectangle.Y = 90; break; case 1: rectangle.X = 36; rectangle.Y = 126; break; default: rectangle.X = 36; rectangle.Y = 162; break; } WorldGen.mergeUp = true; WorldGen.mergeLeft = true; } else if (index14 == -2 && index19 == type1 && index16 == type1 && index17 == -2) { switch (num14) { case 0: rectangle.X = 54; rectangle.Y = 90; break; case 1: rectangle.X = 54; rectangle.Y = 126; break; default: rectangle.X = 54; rectangle.Y = 162; break; } WorldGen.mergeUp = true; WorldGen.mergeRight = true; } else if (index14 == type1 && index19 == -2 && index16 == -2 && index17 == type1) { switch (num14) { case 0: rectangle.X = 36; rectangle.Y = 108; break; case 1: rectangle.X = 36; rectangle.Y = 144; break; default: rectangle.X = 36; rectangle.Y = 180; break; } WorldGen.mergeDown = true; WorldGen.mergeLeft = true; } else if (index14 == type1 && index19 == -2 && index16 == type1 && index17 == -2) { switch (num14) { case 0: rectangle.X = 54; rectangle.Y = 108; break; case 1: rectangle.X = 54; rectangle.Y = 144; break; default: rectangle.X = 54; rectangle.Y = 180; break; } WorldGen.mergeDown = true; WorldGen.mergeRight = true; } else if (index14 == type1 && index19 == type1 && index16 == -2 && index17 == -2) { switch (num14) { case 0: rectangle.X = 180; rectangle.Y = 126; break; case 1: rectangle.X = 180; rectangle.Y = 144; break; default: rectangle.X = 180; rectangle.Y = 162; break; } WorldGen.mergeLeft = true; WorldGen.mergeRight = true; } else if (index14 == -2 && index19 == -2 && index16 == type1 && index17 == type1) { switch (num14) { case 0: rectangle.X = 144; rectangle.Y = 180; break; case 1: rectangle.X = 162; rectangle.Y = 180; break; default: rectangle.X = 180; rectangle.Y = 180; break; } WorldGen.mergeUp = true; WorldGen.mergeDown = true; } else if (index14 == -2 && index19 == type1 && index16 == -2 && index17 == -2) { switch (num14) { case 0: rectangle.X = 198; rectangle.Y = 90; break; case 1: rectangle.X = 198; rectangle.Y = 108; break; default: rectangle.X = 198; rectangle.Y = 126; break; } WorldGen.mergeUp = true; WorldGen.mergeLeft = true; WorldGen.mergeRight = true; } else if (index14 == type1 && index19 == -2 && index16 == -2 && index17 == -2) { switch (num14) { case 0: rectangle.X = 198; rectangle.Y = 144; break; case 1: rectangle.X = 198; rectangle.Y = 162; break; default: rectangle.X = 198; rectangle.Y = 180; break; } WorldGen.mergeDown = true; WorldGen.mergeLeft = true; WorldGen.mergeRight = true; } else if (index14 == -2 && index19 == -2 && index16 == type1 && index17 == -2) { switch (num14) { case 0: rectangle.X = 216; rectangle.Y = 144; break; case 1: rectangle.X = 216; rectangle.Y = 162; break; default: rectangle.X = 216; rectangle.Y = 180; break; } WorldGen.mergeUp = true; WorldGen.mergeDown = true; WorldGen.mergeRight = true; } else if (index14 == -2 && index19 == -2 && index16 == -2 && index17 == type1) { switch (num14) { case 0: rectangle.X = 216; rectangle.Y = 90; break; case 1: rectangle.X = 216; rectangle.Y = 108; break; default: rectangle.X = 216; rectangle.Y = 126; break; } WorldGen.mergeUp = true; WorldGen.mergeDown = true; WorldGen.mergeLeft = true; } else if (index14 == -2 && index19 == -2 && index16 == -2 && index17 == -2) { switch (num14) { case 0: rectangle.X = 108; rectangle.Y = 198; break; case 1: rectangle.X = 126; rectangle.Y = 198; break; default: rectangle.X = 144; rectangle.Y = 198; break; } WorldGen.mergeUp = true; WorldGen.mergeDown = true; WorldGen.mergeLeft = true; WorldGen.mergeRight = true; } else if (index14 == type1 && index19 == type1 && index16 == type1 && index17 == type1) { if (index13 == -2) { switch (num14) { case 0: rectangle.X = 18; rectangle.Y = 108; break; case 1: rectangle.X = 18; rectangle.Y = 144; break; default: rectangle.X = 18; rectangle.Y = 180; break; } } if (index15 == -2) { switch (num14) { case 0: rectangle.X = 0; rectangle.Y = 108; break; case 1: rectangle.X = 0; rectangle.Y = 144; break; default: rectangle.X = 0; rectangle.Y = 180; break; } } if (index18 == -2) { switch (num14) { case 0: rectangle.X = 18; rectangle.Y = 90; break; case 1: rectangle.X = 18; rectangle.Y = 126; break; default: rectangle.X = 18; rectangle.Y = 162; break; } } if (index20 == -2) { switch (num14) { case 0: rectangle.X = 0; rectangle.Y = 90; break; case 1: rectangle.X = 0; rectangle.Y = 126; break; default: rectangle.X = 0; rectangle.Y = 162; break; } } } } else { if (type1 != 2 && type1 != 23 && type1 != 60 && type1 != 70 && type1 != 109) { if (index14 == -1 && index19 == -2 && index16 == type1 && index17 == type1) { switch (num14) { case 0: rectangle.X = 234; rectangle.Y = 0; break; case 1: rectangle.X = 252; rectangle.Y = 0; break; default: rectangle.X = 270; rectangle.Y = 0; break; } WorldGen.mergeDown = true; } else if (index14 == -2 && index19 == -1 && index16 == type1 && index17 == type1) { switch (num14) { case 0: rectangle.X = 234; rectangle.Y = 18; break; case 1: rectangle.X = 252; rectangle.Y = 18; break; default: rectangle.X = 270; rectangle.Y = 18; break; } WorldGen.mergeUp = true; } else if (index14 == type1 && index19 == type1 && index16 == -1 && index17 == -2) { switch (num14) { case 0: rectangle.X = 234; rectangle.Y = 36; break; case 1: rectangle.X = 252; rectangle.Y = 36; break; default: rectangle.X = 270; rectangle.Y = 36; break; } WorldGen.mergeRight = true; } else if (index14 == type1 && index19 == type1 && index16 == -2 && index17 == -1) { switch (num14) { case 0: rectangle.X = 234; rectangle.Y = 54; break; case 1: rectangle.X = 252; rectangle.Y = 54; break; default: rectangle.X = 270; rectangle.Y = 54; break; } WorldGen.mergeLeft = true; } } if (index14 != -1 && index19 != -1 && index16 == -1 && index17 == type1) { if (index14 == -2 && index19 == type1) { switch (num14) { case 0: rectangle.X = 72; rectangle.Y = 144; break; case 1: rectangle.X = 72; rectangle.Y = 162; break; default: rectangle.X = 72; rectangle.Y = 180; break; } WorldGen.mergeUp = true; } else if (index19 == -2 && index14 == type1) { switch (num14) { case 0: rectangle.X = 72; rectangle.Y = 90; break; case 1: rectangle.X = 72; rectangle.Y = 108; break; default: rectangle.X = 72; rectangle.Y = 126; break; } WorldGen.mergeDown = true; } } else if (index14 != -1 && index19 != -1 && index16 == type1 && index17 == -1) { if (index14 == -2 && index19 == type1) { switch (num14) { case 0: rectangle.X = 90; rectangle.Y = 144; break; case 1: rectangle.X = 90; rectangle.Y = 162; break; default: rectangle.X = 90; rectangle.Y = 180; break; } WorldGen.mergeUp = true; } else if (index19 == -2 && index14 == type1) { switch (num14) { case 0: rectangle.X = 90; rectangle.Y = 90; break; case 1: rectangle.X = 90; rectangle.Y = 108; break; default: rectangle.X = 90; rectangle.Y = 126; break; } WorldGen.mergeDown = true; } } else if (index14 == -1 && index19 == type1 && index16 != -1 && index17 != -1) { if (index16 == -2 && index17 == type1) { switch (num14) { case 0: rectangle.X = 0; rectangle.Y = 198; break; case 1: rectangle.X = 18; rectangle.Y = 198; break; default: rectangle.X = 36; rectangle.Y = 198; break; } WorldGen.mergeLeft = true; } else if (index17 == -2 && index16 == type1) { switch (num14) { case 0: rectangle.X = 54; rectangle.Y = 198; break; case 1: rectangle.X = 72; rectangle.Y = 198; break; default: rectangle.X = 90; rectangle.Y = 198; break; } WorldGen.mergeRight = true; } } else if (index14 == type1 && index19 == -1 && index16 != -1 && index17 != -1) { if (index16 == -2 && index17 == type1) { switch (num14) { case 0: rectangle.X = 0; rectangle.Y = 216; break; case 1: rectangle.X = 18; rectangle.Y = 216; break; default: rectangle.X = 36; rectangle.Y = 216; break; } WorldGen.mergeLeft = true; } else if (index17 == -2 && index16 == type1) { switch (num14) { case 0: rectangle.X = 54; rectangle.Y = 216; break; case 1: rectangle.X = 72; rectangle.Y = 216; break; default: rectangle.X = 90; rectangle.Y = 216; break; } WorldGen.mergeRight = true; } } else if (index14 != -1 && index19 != -1 && index16 == -1 && index17 == -1) { if (index14 == -2 && index19 == -2) { switch (num14) { case 0: rectangle.X = 108; rectangle.Y = 216; break; case 1: rectangle.X = 108; rectangle.Y = 234; break; default: rectangle.X = 108; rectangle.Y = 252; break; } WorldGen.mergeUp = true; WorldGen.mergeDown = true; } else if (index14 == -2) { switch (num14) { case 0: rectangle.X = 126; rectangle.Y = 144; break; case 1: rectangle.X = 126; rectangle.Y = 162; break; default: rectangle.X = 126; rectangle.Y = 180; break; } WorldGen.mergeUp = true; } else if (index19 == -2) { switch (num14) { case 0: rectangle.X = 126; rectangle.Y = 90; break; case 1: rectangle.X = 126; rectangle.Y = 108; break; default: rectangle.X = 126; rectangle.Y = 126; break; } WorldGen.mergeDown = true; } } else if (index14 == -1 && index19 == -1 && index16 != -1 && index17 != -1) { if (index16 == -2 && index17 == -2) { switch (num14) { case 0: rectangle.X = 162; rectangle.Y = 198; break; case 1: rectangle.X = 180; rectangle.Y = 198; break; default: rectangle.X = 198; rectangle.Y = 198; break; } WorldGen.mergeLeft = true; WorldGen.mergeRight = true; } else if (index16 == -2) { switch (num14) { case 0: rectangle.X = 0; rectangle.Y = 252; break; case 1: rectangle.X = 18; rectangle.Y = 252; break; default: rectangle.X = 36; rectangle.Y = 252; break; } WorldGen.mergeLeft = true; } else if (index17 == -2) { switch (num14) { case 0: rectangle.X = 54; rectangle.Y = 252; break; case 1: rectangle.X = 72; rectangle.Y = 252; break; default: rectangle.X = 90; rectangle.Y = 252; break; } WorldGen.mergeRight = true; } } else if (index14 == -2 && index19 == -1 && index16 == -1 && index17 == -1) { switch (num14) { case 0: rectangle.X = 108; rectangle.Y = 144; break; case 1: rectangle.X = 108; rectangle.Y = 162; break; default: rectangle.X = 108; rectangle.Y = 180; break; } WorldGen.mergeUp = true; } else if (index14 == -1 && index19 == -2 && index16 == -1 && index17 == -1) { switch (num14) { case 0: rectangle.X = 108; rectangle.Y = 90; break; case 1: rectangle.X = 108; rectangle.Y = 108; break; default: rectangle.X = 108; rectangle.Y = 126; break; } WorldGen.mergeDown = true; } else if (index14 == -1 && index19 == -1 && index16 == -2 && index17 == -1) { switch (num14) { case 0: rectangle.X = 0; rectangle.Y = 234; break; case 1: rectangle.X = 18; rectangle.Y = 234; break; default: rectangle.X = 36; rectangle.Y = 234; break; } WorldGen.mergeLeft = true; } else if (index14 == -1 && index19 == -1 && index16 == -1 && index17 == -2) { switch (num14) { case 0: rectangle.X = 54; rectangle.Y = 234; break; case 1: rectangle.X = 72; rectangle.Y = 234; break; default: rectangle.X = 90; rectangle.Y = 234; break; } WorldGen.mergeRight = true; } } } if (rectangle.X < 0 || rectangle.Y < 0) { if (!flag3) { if (index14 > -1 && !Main.tileSolid[index14] && index14 != type1) index14 = -1; if (index19 > -1 && !Main.tileSolid[index19] && index19 != type1) index19 = -1; if (index16 > -1 && !Main.tileSolid[index16] && index16 != type1) index16 = -1; if (index17 > -1 && !Main.tileSolid[index17] && index17 != type1) index17 = -1; if (index13 > -1 && !Main.tileSolid[index13] && index13 != type1) index13 = -1; if (index15 > -1 && !Main.tileSolid[index15] && index15 != type1) index15 = -1; if (index18 > -1 && !Main.tileSolid[index18] && index18 != type1) index18 = -1; if (index20 > -1 && !Main.tileSolid[index20] && index20 != type1) index20 = -1; } if (type1 == 2 || type1 == 23 || type1 == 60 || type1 == 70 || type1 == 109) { if (index14 == -2) index14 = type1; if (index19 == -2) index19 = type1; if (index16 == -2) index16 = type1; if (index17 == -2) index17 = type1; if (index13 == -2) index13 = type1; if (index15 == -2) index15 = type1; if (index18 == -2) index18 = type1; if (index20 == -2) index20 = type1; } if (index14 == type1 && index19 == type1 && index16 == type1 & index17 == type1) { if (index13 != type1 && index15 != type1) { switch (num14) { case 0: rectangle.X = 108; rectangle.Y = 18; break; case 1: rectangle.X = 126; rectangle.Y = 18; break; default: rectangle.X = 144; rectangle.Y = 18; break; } } else if (index18 != type1 && index20 != type1) { switch (num14) { case 0: rectangle.X = 108; rectangle.Y = 36; break; case 1: rectangle.X = 126; rectangle.Y = 36; break; default: rectangle.X = 144; rectangle.Y = 36; break; } } else if (index13 != type1 && index18 != type1) { switch (num14) { case 0: rectangle.X = 180; rectangle.Y = 0; break; case 1: rectangle.X = 180; rectangle.Y = 18; break; default: rectangle.X = 180; rectangle.Y = 36; break; } } else if (index15 != type1 && index20 != type1) { switch (num14) { case 0: rectangle.X = 198; rectangle.Y = 0; break; case 1: rectangle.X = 198; rectangle.Y = 18; break; default: rectangle.X = 198; rectangle.Y = 36; break; } } else { switch (num14) { case 0: rectangle.X = 18; rectangle.Y = 18; break; case 1: rectangle.X = 36; rectangle.Y = 18; break; default: rectangle.X = 54; rectangle.Y = 18; break; } } } else if (index14 != type1 && index19 == type1 && index16 == type1 & index17 == type1) { switch (num14) { case 0: rectangle.X = 18; rectangle.Y = 0; break; case 1: rectangle.X = 36; rectangle.Y = 0; break; default: rectangle.X = 54; rectangle.Y = 0; break; } } else if (index14 == type1 && index19 != type1 && index16 == type1 & index17 == type1) { switch (num14) { case 0: rectangle.X = 18; rectangle.Y = 36; break; case 1: rectangle.X = 36; rectangle.Y = 36; break; default: rectangle.X = 54; rectangle.Y = 36; break; } } else if (index14 == type1 && index19 == type1 && index16 != type1 & index17 == type1) { switch (num14) { case 0: rectangle.X = 0; rectangle.Y = 0; break; case 1: rectangle.X = 0; rectangle.Y = 18; break; default: rectangle.X = 0; rectangle.Y = 36; break; } } else if (index14 == type1 && index19 == type1 && index16 == type1 & index17 != type1) { switch (num14) { case 0: rectangle.X = 72; rectangle.Y = 0; break; case 1: rectangle.X = 72; rectangle.Y = 18; break; default: rectangle.X = 72; rectangle.Y = 36; break; } } else if (index14 != type1 && index19 == type1 && index16 != type1 & index17 == type1) { switch (num14) { case 0: rectangle.X = 0; rectangle.Y = 54; break; case 1: rectangle.X = 36; rectangle.Y = 54; break; default: rectangle.X = 72; rectangle.Y = 54; break; } } else if (index14 != type1 && index19 == type1 && index16 == type1 & index17 != type1) { switch (num14) { case 0: rectangle.X = 18; rectangle.Y = 54; break; case 1: rectangle.X = 54; rectangle.Y = 54; break; default: rectangle.X = 90; rectangle.Y = 54; break; } } else if (index14 == type1 && index19 != type1 && index16 != type1 & index17 == type1) { switch (num14) { case 0: rectangle.X = 0; rectangle.Y = 72; break; case 1: rectangle.X = 36; rectangle.Y = 72; break; default: rectangle.X = 72; rectangle.Y = 72; break; } } else if (index14 == type1 && index19 != type1 && index16 == type1 & index17 != type1) { switch (num14) { case 0: rectangle.X = 18; rectangle.Y = 72; break; case 1: rectangle.X = 54; rectangle.Y = 72; break; default: rectangle.X = 90; rectangle.Y = 72; break; } } else if (index14 == type1 && index19 == type1 && index16 != type1 & index17 != type1) { switch (num14) { case 0: rectangle.X = 90; rectangle.Y = 0; break; case 1: rectangle.X = 90; rectangle.Y = 18; break; default: rectangle.X = 90; rectangle.Y = 36; break; } } else if (index14 != type1 && index19 != type1 && index16 == type1 & index17 == type1) { switch (num14) { case 0: rectangle.X = 108; rectangle.Y = 72; break; case 1: rectangle.X = 126; rectangle.Y = 72; break; default: rectangle.X = 144; rectangle.Y = 72; break; } } else if (index14 != type1 && index19 == type1 && index16 != type1 & index17 != type1) { switch (num14) { case 0: rectangle.X = 108; rectangle.Y = 0; break; case 1: rectangle.X = 126; rectangle.Y = 0; break; default: rectangle.X = 144; rectangle.Y = 0; break; } } else if (index14 == type1 && index19 != type1 && index16 != type1 & index17 != type1) { switch (num14) { case 0: rectangle.X = 108; rectangle.Y = 54; break; case 1: rectangle.X = 126; rectangle.Y = 54; break; default: rectangle.X = 144; rectangle.Y = 54; break; } } else if (index14 != type1 && index19 != type1 && index16 != type1 & index17 == type1) { switch (num14) { case 0: rectangle.X = 162; rectangle.Y = 0; break; case 1: rectangle.X = 162; rectangle.Y = 18; break; default: rectangle.X = 162; rectangle.Y = 36; break; } } else if (index14 != type1 && index19 != type1 && index16 == type1 & index17 != type1) { switch (num14) { case 0: rectangle.X = 216; rectangle.Y = 0; break; case 1: rectangle.X = 216; rectangle.Y = 18; break; default: rectangle.X = 216; rectangle.Y = 36; break; } } else if (index14 != type1 && index19 != type1 && index16 != type1 & index17 != type1) { switch (num14) { case 0: rectangle.X = 162; rectangle.Y = 54; break; case 1: rectangle.X = 180; rectangle.Y = 54; break; default: rectangle.X = 198; rectangle.Y = 54; break; } } } if (rectangle.X <= -1 || rectangle.Y <= -1) { if (num14 <= 0) { rectangle.X = 18; rectangle.Y = 18; } else if (num14 == 1) { rectangle.X = 36; rectangle.Y = 18; } if (num14 >= 2) { rectangle.X = 54; rectangle.Y = 18; } } Main.tile[i, j].frameX = (short) rectangle.X; Main.tile[i, j].frameY = (short) rectangle.Y; if (type1 == 52 || type1 == 62 || type1 == 115) { int num16 = Main.tile[i, j - 1] == null ? type1 : (Main.tile[i, j - 1].active ? (int) Main.tile[i, j - 1].type : -1); if (type1 == 52 && (num16 == 109 || num16 == 115)) { Main.tile[i, j].type = (byte) 115; WorldGen.SquareTileFrame(i, j); return; } if (type1 == 115 && (num16 == 2 || num16 == 52)) { Main.tile[i, j].type = (byte) 52; WorldGen.SquareTileFrame(i, j); return; } if (num16 != type1) { bool flag4 = false; if (num16 == -1) flag4 = true; if (type1 == 52 && num16 != 2) flag4 = true; if (type1 == 62 && num16 != 60) flag4 = true; if (type1 == 115 && num16 != 109) flag4 = true; if (flag4) WorldGen.KillTile(i, j); } } if (!WorldGen.noTileActions && (type1 == 53 || type1 == 112 || type1 == 116 || type1 == 123)) { switch (Main.netMode) { case 0: if (Main.tile[i, j + 1] != null && !Main.tile[i, j + 1].active) { bool flag5 = true; if (Main.tile[i, j - 1].active && Main.tile[i, j - 1].type == (byte) 21) flag5 = false; if (flag5) { int Type = 31; if (type1 == 59) Type = 39; if (type1 == 57) Type = 40; if (type1 == 112) Type = 56; if (type1 == 116) Type = 67; if (type1 == 123) Type = 71; Main.tile[i, j].active = false; int index21 = Projectile.NewProjectile((float) (i * 16 + 8), (float) (j * 16 + 8), 0.0f, 0.41f, Type, 10, 0.0f, Main.myPlayer); Main.projectile[index21].ai[0] = 1f; WorldGen.SquareTileFrame(i, j); break; } break; } break; case 2: if (Main.tile[i, j + 1] != null && !Main.tile[i, j + 1].active) { bool flag6 = true; if (Main.tile[i, j - 1].active && Main.tile[i, j - 1].type == (byte) 21) flag6 = false; if (flag6) { int Type = 31; if (type1 == 59) Type = 39; if (type1 == 57) Type = 40; if (type1 == 112) Type = 56; if (type1 == 116) Type = 67; if (type1 == 123) Type = 71; Main.tile[i, j].active = false; int index22 = Projectile.NewProjectile((float) (i * 16 + 8), (float) (j * 16 + 8), 0.0f, 2.5f, Type, 10, 0.0f, Main.myPlayer); Main.projectile[index22].velocity.Y = 0.5f; Main.projectile[index22].position.Y += 2f; Main.projectile[index22].netUpdate = true; NetMessage.SendTileSquare(-1, i, j, 1); WorldGen.SquareTileFrame(i, j); break; } break; } break; } } if (rectangle.X == frameX1 || rectangle.Y == frameY1 || frameX1 < 0 || frameY1 < 0) return; bool mergeUp = WorldGen.mergeUp; bool mergeDown = WorldGen.mergeDown; bool mergeLeft = WorldGen.mergeLeft; bool mergeRight = WorldGen.mergeRight; WorldGen.TileFrame(i - 1, j); WorldGen.TileFrame(i + 1, j); WorldGen.TileFrame(i, j - 1); WorldGen.TileFrame(i, j + 1); WorldGen.mergeUp = mergeUp; WorldGen.mergeDown = mergeDown; WorldGen.mergeLeft = mergeLeft; WorldGen.mergeRight = mergeRight; } } catch { } } } }