// Decompiled with JetBrains decompiler // Type: Terraria.WorldGen // Assembly: Terraria, Version=1.3.5.3, Culture=neutral, PublicKeyToken=null // MVID: 68659D26-2BE6-448F-8663-74FA559E6F08 // Assembly location: C:\Users\mikeyisbaeyt\Downloads\depotdownloader-2.4.5\depots\105601\6707058\Terraria.exe using Microsoft.Xna.Framework; using System; using System.Collections.Generic; using System.Diagnostics; using System.Threading; using Terraria.DataStructures; using Terraria.Enums; using Terraria.GameContent; using Terraria.GameContent.Achievements; using Terraria.GameContent.Biomes; using Terraria.GameContent.Events; using Terraria.GameContent.Generation; using Terraria.GameContent.Tile_Entities; using Terraria.Graphics.Capture; using Terraria.ID; using Terraria.IO; using Terraria.Localization; using Terraria.Map; using Terraria.ObjectData; using Terraria.Utilities; using Terraria.World.Generation; namespace Terraria { public class WorldGen { public static TownRoomManager TownManager = new TownRoomManager(); private static int lAltarX; private static int lAltarY; public static int tileReframeCount = 0; public static bool noMapUpdate = false; public static double worldSurfaceLow; public static int tLeft; public static int tRight; public static int tTop; public static int tBottom; public static int tRooms; public static int[] mossType = new int[3]; 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 copperBar = 20; public static int ironBar = 22; public static int silverBar = 21; public static int goldBar = 19; public static ushort CopperTierOre = 7; public static ushort IronTierOre = 6; public static ushort SilverTierOre = 9; public static ushort GoldTierOre = 8; public static int treeBG = 0; public static int corruptBG = 0; public static int jungleBG = 0; public static int snowBG = 0; public static int hallowBG = 0; public static int crimsonBG = 0; public static int desertBG = 0; public static int oceanBG = 0; public static int oreTier1 = -1; public static int oreTier2 = -1; public static int oreTier3 = -1; public static bool crimson = false; public static byte mossTile = 179; public static byte mossWall = 54; public static bool[] gem = new bool[6]; public static int[] tileCounts = new int[470]; public static int totalEvil = 0; public static int totalBlood = 0; public static int totalGood = 0; public static int totalSolid = 0; public static int totalEvil2 = 0; public static int totalBlood2 = 0; public static int totalGood2 = 0; public static int totalSolid2 = 0; public static byte tEvil = 0; public static byte tBlood = 0; public static byte tGood = 0; public static int totalX = 0; public static int totalD = 0; public static bool IsGeneratingHardMode = false; private static Vector2[] heartPos = new Vector2[100]; private static int heartCount = 0; public static int lavaLine; public static int waterLine; public static bool noTileActions = false; public static bool spawnEye = false; public static int spawnHardBoss = 0; public static int numLarva = 0; public static int[] larvaX = new int[100]; public static int[] larvaY = new int[100]; 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 bool stopDrops = false; private static bool mudWall = false; private static int grassSpread = 0; public static bool noLiquidCheck = false; [ThreadStatic] public static UnifiedRandom _genRand; [ThreadStatic] public static int _genRandSeed = -2; public static int _lastSeed; public static string statusText = ""; public static bool destroyObject = false; public static int spawnDelay = 0; public static int prioritizedTownNPC = 0; public static int numTileCount = 0; public static int maxTileCount = 3500; public static int maxWallOut2 = 5000; public static int[] countX = new int[WorldGen.maxTileCount]; public static int[] countY = new int[WorldGen.maxTileCount]; public static int lavaCount = 0; public static int iceCount = 0; public static int rockCount = 0; public static int maxRoomTiles = 750; public static int numRoomTiles; public static int[] roomX = new int[WorldGen.maxRoomTiles]; public static int[] roomY = new int[WorldGen.maxRoomTiles]; public static int roomCeilingsCount; public static int[] roomCeilingX = new int[WorldGen.maxRoomTiles]; public static int[] roomCeilingY = 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[470]; 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 = Vector2.Zero; 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 JungleItemCount = 0; 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 bool[] skyLake = new bool[30]; private static int[] fihX = new int[30]; private static int[] fihY = new int[30]; private static int numMCaves = 0; private static int[] mCaveX = new int[30]; private static int[] mCaveY = new int[30]; private static int JungleX = 0; private static int hellChest = 0; private static int[] hellChestItem = new int[5]; 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 Point16[] statueList; public static List StatuesWithTraps = new List((IEnumerable) new int[4] { 4, 7, 10, 18 }); public static Microsoft.Xna.Framework.Rectangle UndergroundDesertLocation = Microsoft.Xna.Framework.Rectangle.Empty; private static bool currentlyTryingToUseAlternateHousingSpot = false; public static TownNPCRoomCheckFailureReason roomCheckFailureReason = TownNPCRoomCheckFailureReason.None; private static int[,] trapDiag = new int[4, 2]; private static int tileCounterNum = 0; private static int tileCounterMax = 20; private static int[] tileCounterX = new int[WorldGen.tileCounterMax]; private static int[] tileCounterY = new int[WorldGen.tileCounterMax]; private static WorldGenerator _generator; public static int WorldGenParam_Evil = -1; public static UnifiedRandom genRand { get { if (WorldGen._lastSeed != WorldGen._genRandSeed) { WorldGen._genRand = new UnifiedRandom(WorldGen._lastSeed); WorldGen._genRandSeed = WorldGen._lastSeed; } if (WorldGen._genRand == null) { WorldGen._genRand = new UnifiedRandom(WorldGen._lastSeed); WorldGen._genRandSeed = WorldGen._lastSeed; } return WorldGen._genRand; } } public static void SetupStatueList() { List point16List = new List(); for (int Y = 0; Y < 44; ++Y) point16List.Add(new Point16(105, Y)); point16List[34] = new Point16(349, 0); point16List[43] = new Point16(105, 50); point16List.Add(new Point16(105, 63)); point16List.Add(new Point16(105, 64)); point16List.Add(new Point16(105, 65)); point16List.Add(new Point16(105, 66)); point16List.Add(new Point16(105, 68)); point16List.Add(new Point16(105, 69)); point16List.Add(new Point16(105, 70)); point16List.Add(new Point16(105, 71)); point16List.Add(new Point16(105, 72)); point16List.Add(new Point16(105, 73)); point16List.Add(new Point16(105, 75)); if (Main.expertMode) { point16List.Add(new Point16(105, 67)); point16List.Add(new Point16(105, 74)); } WorldGen.statueList = point16List.ToArray(); } public static void PlaceStatueTrap(int x, int y) { for (int index1 = -10; index1 <= 10; ++index1) { for (int index2 = -10; index2 <= 10; ++index2) { Tile testTile = Main.tile[x + index1, y + index2 + 1]; Tile tile = Main.tile[x + index1, y + index2]; if (!tile.active() && WorldGen.SolidTile2(testTile)) { WorldGen.PlaceTile(x + index1, y + index2, 135, true); if (tile.active() && tile.type == (ushort) 135) { WorldUtils.WireLine(new Point(x, y), new Point(x + index1, y + index2)); return; } } } } } public static bool MoveTownNPC(int x, int y, int n) { if (!WorldGen.StartRoomCheck(x, y)) { string textValue = Lang.inter[40].Value; switch (WorldGen.roomCheckFailureReason) { case TownNPCRoomCheckFailureReason.TooCloseToWorldEdge: textValue = Language.GetTextValue("TownNPCHousingFailureReasons.TooCloseToWorldEdge"); break; case TownNPCRoomCheckFailureReason.RoomIsTooBig: textValue = Language.GetTextValue("TownNPCHousingFailureReasons.RoomIsTooBig"); break; case TownNPCRoomCheckFailureReason.RoomIsTooSmall: textValue = Language.GetTextValue("TownNPCHousingFailureReasons.RoomIsTooSmall"); break; case TownNPCRoomCheckFailureReason.HoleInWallIsTooBig: textValue = Language.GetTextValue("TownNPCHousingFailureReasons.HoleInWallIsTooBig"); break; case TownNPCRoomCheckFailureReason.RoomCheckStartedInASolidTile: textValue = Language.GetTextValue("TownNPCHousingFailureReasons.RoomCheckStartedInASolidTile"); break; } Main.NewText(textValue, G: (byte) 240, B: (byte) 20); return false; } if (!WorldGen.RoomNeeds(WorldGen.prioritizedTownNPC)) { int index = 0; int length = (WorldGen.roomTorch ? 0 : 1) + (WorldGen.roomDoor ? 0 : 1) + (WorldGen.roomTable ? 0 : 1) + (WorldGen.roomChair ? 0 : 1); string[] strArray = new string[length]; if (!WorldGen.roomTorch) { strArray[index] = Language.GetTextValue("Game.HouseLightSource"); ++index; } if (!WorldGen.roomDoor) { strArray[index] = Language.GetTextValue("Game.HouseDoor"); ++index; } if (!WorldGen.roomTable) { strArray[index] = Language.GetTextValue("Game.HouseTable"); ++index; } if (!WorldGen.roomChair) { strArray[index] = Language.GetTextValue("Game.HouseChair"); int num = index + 1; } Main.NewText(Language.GetTextValue("Game.HouseMissing_" + (object) length, (object[]) strArray), G: (byte) 240, B: (byte) 20); return false; } WorldGen.ScoreRoom(); if (WorldGen.hiScore <= 0) { if (WorldGen.roomOccupied) Main.NewText(Lang.inter[41].Value, G: (byte) 240, B: (byte) 20); else if (WorldGen.roomEvil) Main.NewText(Lang.inter[42].Value, G: (byte) 240, B: (byte) 20); else Main.NewText(Lang.inter[40].Value, G: (byte) 240, B: (byte) 20); return false; } if (n <= 0 || WorldGen.CheckSpecialTownNPCSpawningConditions(Main.npc[n].type)) return true; Main.NewText(Lang.inter[55].Value + " " + Main.npc[n].TypeName, 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)); } else { WorldGen.prioritizedTownNPC = Main.npc[n].type; Main.npc[n].homeless = true; int num = (int) WorldGen.SpawnTownNPC(x, y); WorldGen.TownManager.SetRoom(Main.npc[n].type, Main.npc[n].homeTileX, Main.npc[n].homeTileY); } } public static void kickOut(int n) { if (Main.netMode == 1) { NetMessage.SendData(60, number: n, number4: 1f); } else { Main.npc[n].homeless = true; WorldGen.TownManager.KickOut(Main.npc[n]); } } public static bool IsThereASpawnablePrioritizedTownNPC(int x, int y) { if (WorldGen.CheckSpecialTownNPCSpawningConditions(WorldGen.prioritizedTownNPC) && NPC.AnyNPCs(WorldGen.prioritizedTownNPC)) return true; int occupation = WorldGen.TownManager.FindOccupation(x, y); if (occupation != -1 && Main.townNPCCanSpawn[occupation] && !NPC.AnyNPCs(occupation) && WorldGen.CheckSpecialTownNPCSpawningConditions(occupation)) { WorldGen.prioritizedTownNPC = occupation; return true; } int num = -1; for (int index = 0; index < 580; ++index) { if (Main.townNPCCanSpawn[index] && WorldGen.CheckSpecialTownNPCSpawningConditions(index)) { if (NPC.AnyNPCs(index)) Main.townNPCCanSpawn[index] = false; else if (WorldGen.TownManager.HasRoomQuick(index)) { if (num == -1) num = index; } else { WorldGen.prioritizedTownNPC = index; return true; } } } if (num == -1) return false; WorldGen.prioritizedTownNPC = num; return true; } public static bool CheckSpecialTownNPCSpawningConditions(int type) { if (type != 160) return true; if ((double) WorldGen.roomY2 > Main.worldSurface) return false; 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 index1 = num2 + 1; index1 < num3; ++index1) { for (int index2 = num4 + 2; index2 < num5 + 2; ++index2) { if (Main.tile[index1, index2].active() && (Main.tile[index1, index2].type == (ushort) 70 || Main.tile[index1, index2].type == (ushort) 71 || Main.tile[index1, index2].type == (ushort) 72)) ++num1; } } return num1 >= 100; } public static void UnspawnTravelNPC() { int number = -1; for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].type == 368) { number = index; break; } } if (number < 0) return; int num1 = (int) ((double) Main.npc[number].Center.X / 16.0); int num2 = (int) ((double) Main.npc[number].Center.Y / 16.0); bool flag = true; Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(num1 * 16 + 8 - NPC.sWidth / 2 - NPC.safeRangeX, num2 * 16 + 8 - NPC.sHeight / 2 - NPC.safeRangeY, NPC.sWidth + NPC.safeRangeX * 2, NPC.sHeight + NPC.safeRangeY * 2); for (int index = 0; index < (int) byte.MaxValue; ++index) { if (Main.player[index].active && new Microsoft.Xna.Framework.Rectangle((int) Main.player[index].position.X, (int) Main.player[index].position.Y, Main.player[index].width, Main.player[index].height).Intersects(rectangle)) { flag = false; break; } } if (!flag) return; string fullName = Main.npc[number].FullName; switch (Main.netMode) { case 0: Main.NewText(Lang.misc[35].Format((object) fullName), (byte) 50, (byte) 125); break; case 2: NetMessage.BroadcastChatMessage(NetworkText.FromKey(Lang.misc[35].Key, (object) Main.npc[number].GetFullNetName()), new Color(50, 125, (int) byte.MaxValue)); break; } Main.npc[number].active = false; Main.npc[number].netSkip = -1; Main.npc[number].life = 0; NetMessage.SendData(23, number: number); } public static void SpawnTravelNPC() { if (Main.eclipse || !Main.dayTime || Main.invasionType > 0 && Main.invasionDelay == 0 && Main.invasionSize > 0) return; for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].type == 368) return; } Chest.SetupTravelShop(); NetMessage.SendTravelShop(-1); int[] numArray = new int[200]; int maxValue = 0; for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].townNPC && Main.npc[index].type != 37 && !Main.npc[index].homeless) { numArray[maxValue] = index; ++maxValue; } } if (maxValue == 0) return; int index1 = numArray[Main.rand.Next(maxValue)]; WorldGen.bestX = Main.npc[index1].homeTileX; WorldGen.bestY = Main.npc[index1].homeTileY; int minValue = WorldGen.bestX; int num1 = WorldGen.bestX; int bestY = WorldGen.bestY; for (int bestX = WorldGen.bestX; bestX > WorldGen.bestX - 10 && (WorldGen.SolidTile(bestX, bestY) || Main.tileSolidTop[(int) Main.tile[bestX, bestY].type]) && (!Main.tile[bestX, bestY - 1].active() || !Main.tileSolid[(int) Main.tile[bestX, bestY - 1].type] || Main.tileSolidTop[(int) Main.tile[bestX, bestY - 1].type]) && (!Main.tile[bestX, bestY - 2].active() || !Main.tileSolid[(int) Main.tile[bestX, bestY - 2].type] || Main.tileSolidTop[(int) Main.tile[bestX, bestY - 2].type]) && (!Main.tile[bestX, bestY - 3].active() || !Main.tileSolid[(int) Main.tile[bestX, bestY - 3].type] || Main.tileSolidTop[(int) Main.tile[bestX, bestY - 3].type]); --bestX) minValue = bestX; for (int bestX = WorldGen.bestX; bestX < WorldGen.bestX + 10 && (WorldGen.SolidTile(bestX, bestY) || Main.tileSolidTop[(int) Main.tile[bestX, bestY].type]) && (!Main.tile[bestX, bestY - 1].active() || !Main.tileSolid[(int) Main.tile[bestX, bestY - 1].type] || Main.tileSolidTop[(int) Main.tile[bestX, bestY - 1].type]) && (!Main.tile[bestX, bestY - 2].active() || !Main.tileSolid[(int) Main.tile[bestX, bestY - 2].type] || Main.tileSolidTop[(int) Main.tile[bestX, bestY - 2].type]) && (!Main.tile[bestX, bestY - 3].active() || !Main.tileSolid[(int) Main.tile[bestX, bestY - 3].type] || Main.tileSolidTop[(int) Main.tile[bestX, bestY - 3].type]); ++bestX) num1 = bestX; for (int index2 = 0; index2 < 30; ++index2) { int num2 = Main.rand.Next(minValue, num1 + 1); if (index2 < 20) { if (num2 < WorldGen.bestX - 1 || num2 > WorldGen.bestX + 1) { WorldGen.bestX = num2; break; } } else if (num2 != WorldGen.bestX) { WorldGen.bestX = num2; break; } } int index3 = WorldGen.bestX; int index4 = WorldGen.bestY; bool flag = false; if (!flag && (double) index4 <= Main.worldSurface) { for (int index5 = 20; index5 < 500; ++index5) { for (int index6 = 0; index6 < 2; ++index6) { index3 = index6 != 0 ? WorldGen.bestX - index5 * 2 : WorldGen.bestX + index5 * 2; if (index3 > 10 && index3 < Main.maxTilesX - 10) { int num3 = WorldGen.bestY - index5; double num4 = (double) (WorldGen.bestY + index5); if (num3 < 10) num3 = 10; if (num4 > Main.worldSurface) num4 = Main.worldSurface; for (int index7 = num3; (double) index7 < num4; ++index7) { index4 = index7; if (Main.tile[index3, index4].nactive() && Main.tileSolid[(int) Main.tile[index3, index4].type]) { if (Main.tile[index3, index4 - 3].liquid == (byte) 0 && Main.tile[index3, index4 - 2].liquid == (byte) 0 && Main.tile[index3, index4 - 1].liquid == (byte) 0 && !Collision.SolidTiles(index3 - 1, index3 + 1, index4 - 3, index4 - 1)) { flag = true; Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.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 index8 = 0; index8 < (int) byte.MaxValue; ++index8) { if (Main.player[index8].active && new Microsoft.Xna.Framework.Rectangle((int) Main.player[index8].position.X, (int) Main.player[index8].position.Y, Main.player[index8].width, Main.player[index8].height).Intersects(rectangle)) { flag = false; break; } } break; } break; } } } if (flag) break; } if (flag) break; } } int index9 = NPC.NewNPC(index3 * 16, index4 * 16, 368, 1); Main.npc[index9].homeTileX = WorldGen.bestX; Main.npc[index9].homeTileY = WorldGen.bestY; Main.npc[index9].homeless = true; if (index3 < WorldGen.bestX) Main.npc[index9].direction = 1; else if (index3 > WorldGen.bestX) Main.npc[index9].direction = -1; Main.npc[index9].netUpdate = true; string fullName = Main.npc[index9].FullName; if (Main.netMode == 0) { Main.NewText(Language.GetTextValue("Announcement.HasArrived", (object) fullName), (byte) 50, (byte) 125); } else { if (Main.netMode != 2) return; NetMessage.BroadcastChatMessage(NetworkText.FromKey("Announcement.HasArrived", (object) Main.npc[index9].GetFullNetName()), new Color(50, 125, (int) byte.MaxValue)); } } public static TownNPCSpawnResult SpawnTownNPC(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.prioritizedTownNPC)) return TownNPCSpawnResult.Blocked; WorldGen.ScoreRoom(); if (WorldGen.hiScore <= 0 || !WorldGen.IsThereASpawnablePrioritizedTownNPC(WorldGen.bestX, WorldGen.bestY)) return TownNPCSpawnResult.Blocked; int index1 = -1; for (int index2 = 0; index2 < 200; ++index2) { if (Main.npc[index2].active && Main.npc[index2].homeless && Main.npc[index2].type == WorldGen.prioritizedTownNPC && WorldGen.CheckSpecialTownNPCSpawningConditions(Main.npc[index2].type)) { index1 = index2; break; } } if (index1 != -1) { Main.townNPCCanSpawn[WorldGen.prioritizedTownNPC] = false; Main.npc[index1].homeTileX = WorldGen.bestX; Main.npc[index1].homeTileY = WorldGen.bestY; Main.npc[index1].homeless = false; AchievementsHelper.NotifyProgressionEvent(8); WorldGen.prioritizedTownNPC = 0; return TownNPCSpawnResult.RelocatedHomeless; } if (index1 == -1) { Point roomPosition; if (WorldGen.TownManager.HasRoom(WorldGen.prioritizedTownNPC, out roomPosition) && !WorldGen.currentlyTryingToUseAlternateHousingSpot) { int bestX = WorldGen.bestX; int bestY = WorldGen.bestY; WorldGen.currentlyTryingToUseAlternateHousingSpot = true; TownNPCSpawnResult townNpcSpawnResult = WorldGen.SpawnTownNPC(roomPosition.X, roomPosition.Y - 2); WorldGen.currentlyTryingToUseAlternateHousingSpot = false; WorldGen.bestX = bestX; WorldGen.bestY = bestY; if (townNpcSpawnResult == TownNPCSpawnResult.Successful) return townNpcSpawnResult; } int index3 = WorldGen.bestX; int index4 = WorldGen.bestY; bool flag1 = false; for (int index5 = 0; index5 < 200; ++index5) { NPC npc = Main.npc[index5]; if (npc.active && npc.townNPC && !npc.homeless && npc.homeTileX == index3 && npc.homeTileY == index4) { flag1 = true; break; } } if (flag1) return TownNPCSpawnResult.BlockedInfiHousing; bool flag2 = false; if (!flag2) { flag2 = true; Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.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 index6 = 0; index6 < (int) byte.MaxValue; ++index6) { if (Main.player[index6].active && new Microsoft.Xna.Framework.Rectangle((int) Main.player[index6].position.X, (int) Main.player[index6].position.Y, Main.player[index6].width, Main.player[index6].height).Intersects(rectangle)) { flag2 = false; break; } } } if (!flag2 && (double) index4 <= Main.worldSurface) { for (int index7 = 1; index7 < 500; ++index7) { for (int index8 = 0; index8 < 2; ++index8) { index3 = index8 != 0 ? WorldGen.bestX - index7 : WorldGen.bestX + index7; if (index3 > 10 && index3 < Main.maxTilesX - 10) { int num1 = WorldGen.bestY - index7; double num2 = (double) (WorldGen.bestY + index7); if (num1 < 10) num1 = 10; if (num2 > Main.worldSurface) num2 = Main.worldSurface; for (int index9 = num1; (double) index9 < num2; ++index9) { index4 = index9; if (Main.tile[index3, index4].nactive() && Main.tileSolid[(int) Main.tile[index3, index4].type]) { if (!Collision.SolidTiles(index3 - 1, index3 + 1, index4 - 3, index4 - 1)) { flag2 = true; Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.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 index10 = 0; index10 < (int) byte.MaxValue; ++index10) { if (Main.player[index10].active && new Microsoft.Xna.Framework.Rectangle((int) Main.player[index10].position.X, (int) Main.player[index10].position.Y, Main.player[index10].width, Main.player[index10].height).Intersects(rectangle)) { flag2 = false; break; } } break; } break; } } } if (flag2) break; } if (flag2) break; } } int index11 = NPC.NewNPC(index3 * 16, index4 * 16, WorldGen.prioritizedTownNPC, 1); Main.townNPCCanSpawn[WorldGen.prioritizedTownNPC] = false; Main.npc[index11].homeTileX = WorldGen.bestX; Main.npc[index11].homeTileY = WorldGen.bestY; if (index3 < WorldGen.bestX) Main.npc[index11].direction = 1; else if (index3 > WorldGen.bestX) Main.npc[index11].direction = -1; Main.npc[index11].netUpdate = true; string fullName = Main.npc[index11].FullName; switch (Main.netMode) { case 0: Main.NewText(Language.GetTextValue("Announcement.HasArrived", (object) fullName), (byte) 50, (byte) 125); break; case 2: NetMessage.BroadcastChatMessage(NetworkText.FromKey("Announcement.HasArrived", (object) Main.npc[index11].GetFullNetName()), new Color(50, 125, (int) byte.MaxValue)); break; } AchievementsHelper.NotifyProgressionEvent(8); if (Main.npc[index11].type == 160) AchievementsHelper.NotifyProgressionEvent(18); WorldGen.CheckAchievement_RealEstate(); WorldGen.prioritizedTownNPC = 0; } return TownNPCSpawnResult.Successful; } private static void CheckAchievement_RealEstate() { bool[] flagArray = new bool[580]; for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].type >= 0 && Main.npc[index].type < 580) flagArray[Main.npc[index].type] = true; } if (!flagArray[38] || !flagArray[17] || !flagArray[107] || !flagArray[19] || !flagArray[22] || !flagArray[124] || !flagArray[228] || !flagArray[178] || !flagArray[18] || !flagArray[229] || !flagArray[209] || !flagArray[54] || !flagArray[108] || !flagArray[160] || !flagArray[20] || !flagArray[369] || !flagArray[207] || !flagArray[227] || !flagArray[208] || !flagArray[441] || !flagArray[353]) return; AchievementsHelper.NotifyProgressionEvent(17); } public static bool RoomNeeds(int npcType) { WorldGen.roomChair = false; WorldGen.roomDoor = false; WorldGen.roomTable = false; WorldGen.roomTorch = false; for (int index = 0; index < TileID.Sets.RoomNeeds.CountsAsChair.Length; ++index) { if (WorldGen.houseTile[TileID.Sets.RoomNeeds.CountsAsChair[index]]) { WorldGen.roomChair = true; break; } } for (int index = 0; index < TileID.Sets.RoomNeeds.CountsAsTable.Length; ++index) { if (WorldGen.houseTile[TileID.Sets.RoomNeeds.CountsAsTable[index]]) { WorldGen.roomTable = true; break; } } for (int index = 0; index < TileID.Sets.RoomNeeds.CountsAsTorch.Length; ++index) { if (WorldGen.houseTile[TileID.Sets.RoomNeeds.CountsAsTorch[index]]) { WorldGen.roomTorch = true; break; } } for (int index = 0; index < TileID.Sets.RoomNeeds.CountsAsDoor.Length; ++index) { if (WorldGen.houseTile[TileID.Sets.RoomNeeds.CountsAsDoor[index]]) { WorldGen.roomDoor = true; break; } } 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) { for (int index = 0; index < 200; ++index) { if (index != npc) { NPC npc1 = Main.npc[index]; if (npc1.active && npc1.townNPC && !npc1.homeless && npc1.homeTileX == WorldGen.bestX && npc1.homeTileY == WorldGen.bestY) { WorldGen.canSpawn = false; break; } } } } if (WorldGen.canSpawn && WorldGen.hiScore > 0) { Main.npc[npc].homeTileX = WorldGen.bestX; Main.npc[npc].homeTileY = WorldGen.bestY; Main.npc[npc].homeless = false; AchievementsHelper.NotifyProgressionEvent(8); WorldGen.canSpawn = false; } else Main.npc[npc].homeless = true; } else Main.npc[npc].homeless = true; } private static bool ScoreRoom_IsThisRoomOccupiedBySomeone(int ignoreNPC = -1) { 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) return true; } } } } return false; } public static void CountTileTypesInArea( int[] tileTypeCounts, int startX, int endX, int startY, int endY) { for (int index1 = startX; index1 <= endX; ++index1) { for (int index2 = startY; index2 <= endY; ++index2) { if (Main.tile[index1, index2].active()) ++tileTypeCounts[(int) Main.tile[index1, index2].type]; } } } public static int GetTileTypeCountByCategory(int[] tileTypeCounts, TileScanGroup group) { switch (group) { case TileScanGroup.None: return 0; case TileScanGroup.Corruption: return tileTypeCounts[23] + tileTypeCounts[24] + tileTypeCounts[25] + tileTypeCounts[32] + tileTypeCounts[112] + tileTypeCounts[163] + tileTypeCounts[400] + tileTypeCounts[398] + -5 * tileTypeCounts[27]; case TileScanGroup.Crimson: return tileTypeCounts[199] + tileTypeCounts[203] + tileTypeCounts[200] + tileTypeCounts[401] + tileTypeCounts[399] + tileTypeCounts[234] + tileTypeCounts[352] - 5 * tileTypeCounts[27]; case TileScanGroup.Hallow: return tileTypeCounts[109] + tileTypeCounts[110] + tileTypeCounts[113] + tileTypeCounts[117] + tileTypeCounts[116] + tileTypeCounts[164] + tileTypeCounts[403] + tileTypeCounts[402]; case TileScanGroup.TotalGoodEvil: int typeCountByCategory1 = WorldGen.GetTileTypeCountByCategory(tileTypeCounts, TileScanGroup.Hallow); int typeCountByCategory2 = WorldGen.GetTileTypeCountByCategory(tileTypeCounts, TileScanGroup.Corruption); int typeCountByCategory3 = WorldGen.GetTileTypeCountByCategory(tileTypeCounts, TileScanGroup.Crimson); int num1 = 5 * tileTypeCounts[27]; int num2 = typeCountByCategory3; int num3 = typeCountByCategory2 + num2 + num1; return typeCountByCategory1 - num3; default: return 0; } } public static void ScoreRoom(int ignoreNPC = -1) { WorldGen.roomOccupied = false; WorldGen.roomEvil = false; if (WorldGen.ScoreRoom_IsThisRoomOccupiedBySomeone(ignoreNPC)) { WorldGen.roomOccupied = true; WorldGen.hiScore = -1; } else { WorldGen.hiScore = 0; int num1 = 50; int num2 = 40; int num3 = WorldGen.roomX1 - Main.zoneX / 2 / 16 - 1 - num2; int num4 = WorldGen.roomX2 + Main.zoneX / 2 / 16 + 1 + num2; int num5 = WorldGen.roomY1 - Main.zoneY / 2 / 16 - 1 - num2; int num6 = WorldGen.roomY2 + Main.zoneY / 2 / 16 + 1 + num2; if (num3 < 0) num3 = 0; if (num4 >= Main.maxTilesX) num4 = Main.maxTilesX - 1; if (num5 < 0) num5 = 0; if (num6 > Main.maxTilesY) num6 = Main.maxTilesY - 1; int[] tileTypeCounts = new int[470]; WorldGen.CountTileTypesInArea(tileTypeCounts, num3 + 1, num4 - 1, num5 + 2, num6 + 1); int num7 = -WorldGen.GetTileTypeCountByCategory(tileTypeCounts, TileScanGroup.TotalGoodEvil); if (num7 < 50) num7 = 0; int num8 = num1 - num7; if (num8 <= -250) { WorldGen.hiScore = num8; WorldGen.roomEvil = true; } else { int roomX1 = WorldGen.roomX1; int roomX2 = WorldGen.roomX2; int roomY1 = WorldGen.roomY1; int roomY2 = WorldGen.roomY2; for (int i = roomX1 + 1; i < roomX2; ++i) { for (int j = roomY1 + 2; j < roomY2 + 2; ++j) { if (Main.tile[i, j].nactive()) { int num9 = num8; if (Main.tileSolid[(int) Main.tile[i, j].type] && !Main.tileSolidTop[(int) Main.tile[i, j].type] && !Collision.SolidTiles(i - 1, i + 1, j - 3, j - 1) && Main.tile[i - 1, j].nactive() && Main.tileSolid[(int) Main.tile[i - 1, j].type] && Main.tile[i + 1, j].nactive() && Main.tileSolid[(int) Main.tile[i + 1, j].type]) { int num10 = 0; int num11 = 0; for (int x = i - 2; x < i + 3; ++x) { for (int y = j - 4; y < j; ++y) { if (Main.tile[x, y].nactive()) { if (x == i) { ++num10; } else { Tile tile = Main.tile[x, y]; if (TileID.Sets.BasicChest[(int) tile.type]) ++num11; else if (tile.type == (ushort) 10 || tile.type == (ushort) 388) num9 -= 20; else if (WorldGen.IsOpenDoorAnchorFrame(x, y)) num9 -= 20; else if (Main.tileSolid[(int) tile.type]) num9 -= 5; else num9 += 5; } } } } if (num9 > 0 && num11 > 0) { num9 -= 30 * num11; if (num9 < 1) num9 = 1; } if (num9 > 0 && num10 > 0) { num9 -= 15 * num10; if (num9 <= 0) num9 = 0; } if (num9 > WorldGen.hiScore) { bool flag1 = WorldGen.Housing_CheckIfInRoom(i, j); bool[] flagArray = new bool[3]; for (int index = 1; index <= 3; ++index) { if (!Main.tile[i, j - index].active() || !Main.tileSolid[(int) Main.tile[i, j - index].type]) flagArray[index - 1] = true; if (!WorldGen.Housing_CheckIfInRoom(i, j - index)) flagArray[index - 1] = false; } foreach (bool flag2 in flagArray) { if (!flag2) { flag1 = false; break; } } if (flag1 && !WorldGen.Housing_CheckIfIsCeiling(i, j)) { WorldGen.hiScore = num9; WorldGen.bestX = i; WorldGen.bestY = j; } } } } } } } } } private static void ScoreRoom_CountEvilTilesOld( ref int startScore, int startX, int endX, int startY, int endY) { int num = 0; for (int index1 = startX + 1; index1 < endX; ++index1) { for (int index2 = startY + 2; index2 < endY + 2; ++index2) { if (Main.tile[index1, index2].active()) { if (Main.tile[index1, index2].type == (ushort) 23 || Main.tile[index1, index2].type == (ushort) 24 || Main.tile[index1, index2].type == (ushort) 25 || Main.tile[index1, index2].type == (ushort) 32 || Main.tile[index1, index2].type == (ushort) 112 || Main.tile[index1, index2].type == (ushort) 163) ++num; else if (Main.tile[index1, index2].type == (ushort) 199 || Main.tile[index1, index2].type == (ushort) 201 || Main.tile[index1, index2].type == (ushort) 200 || Main.tile[index1, index2].type == (ushort) 203 || Main.tile[index1, index2].type == (ushort) 234) ++num; else if (Main.tile[index1, index2].type == (ushort) 27) num -= 5; else if (Main.tile[index1, index2].type == (ushort) 109 || Main.tile[index1, index2].type == (ushort) 110 || Main.tile[index1, index2].type == (ushort) 113 || Main.tile[index1, index2].type == (ushort) 116 || Main.tile[index1, index2].type == (ushort) 164) --num; } } } if (num < 50) num = 0; startScore -= num; } private static bool Housing_CheckIfIsCeiling(int i, int j) { bool flag = false; for (int index = 0; index < WorldGen.roomCeilingsCount; ++index) { if (WorldGen.roomCeilingX[index] == i) { if (WorldGen.roomCeilingY[index] == j) { flag = true; break; } break; } } return flag; } private static bool Housing_CheckIfInRoom(int i, int j) { bool flag = false; for (int index = 0; index < WorldGen.numRoomTiles; ++index) { if (WorldGen.roomX[index] == i && WorldGen.roomY[index] == j) { flag = true; break; } } return flag; } public static bool StartRoomCheck(int x, int y) { WorldGen.roomX1 = x; WorldGen.roomX2 = x; WorldGen.roomY1 = y; WorldGen.roomY2 = y; WorldGen.numRoomTiles = 0; WorldGen.roomCeilingsCount = 0; for (int index = 0; index < 470; ++index) WorldGen.houseTile[index] = false; WorldGen.canSpawn = true; if (Main.tile[x, y].nactive() && Main.tileSolid[(int) Main.tile[x, y].type]) { WorldGen.roomCheckFailureReason = TownNPCRoomCheckFailureReason.RoomCheckStartedInASolidTile; WorldGen.canSpawn = false; return false; } WorldGen.roomCheckFailureReason = TownNPCRoomCheckFailureReason.None; WorldGen.CheckRoom(x, y); if (!WorldGen.canSpawn) return false; if (WorldGen.numRoomTiles < 60) { WorldGen.roomCheckFailureReason = TownNPCRoomCheckFailureReason.RoomIsTooSmall; WorldGen.canSpawn = false; return 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.roomCheckFailureReason = TownNPCRoomCheckFailureReason.TooCloseToWorldEdge; 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; bool flag1 = false; for (int index = 0; index < WorldGen.roomCeilingsCount; ++index) { if (WorldGen.roomCeilingX[index] == x) { flag1 = true; if (WorldGen.roomCeilingY[index] > y) { WorldGen.roomCeilingY[index] = y; break; } break; } } if (!flag1) { WorldGen.roomCeilingX[WorldGen.roomCeilingsCount] = x; WorldGen.roomCeilingY[WorldGen.roomCeilingsCount] = y; ++WorldGen.roomCeilingsCount; } ++WorldGen.numRoomTiles; if (WorldGen.numRoomTiles >= WorldGen.maxRoomTiles) { WorldGen.roomCheckFailureReason = TownNPCRoomCheckFailureReason.RoomIsTooBig; WorldGen.canSpawn = false; } else { if (Main.tile[x, y].nactive()) { WorldGen.houseTile[(int) Main.tile[x, y].type] = true; if (Main.tileSolid[(int) Main.tile[x, y].type] || Main.tile[x, y].type == (ushort) 11 && (Main.tile[x, y].frameX == (short) 0 || Main.tile[x, y].frameX == (short) 54 || Main.tile[x, y].frameX == (short) 72 || Main.tile[x, y].frameX == (short) 126) || Main.tile[x, y].type == (ushort) 389 || Main.tile[x, y].type == (ushort) 386 && (Main.tile[x, y].frameX < (short) 36 && Main.tile[x, y].frameY == (short) 18 || Main.tile[x, y].frameX >= (short) 36 && Main.tile[x, y].frameY == (short) 0)) 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 flag2 = false; bool flag3 = false; for (int index = -2; index < 3; ++index) { if (Main.wallHouse[(int) Main.tile[x + index, y].wall]) flag2 = true; if (Main.tile[x + index, y].nactive() && (Main.tileSolid[(int) Main.tile[x + index, y].type] || TileID.Sets.HousingWalls[(int) Main.tile[x + index, y].type])) flag2 = true; if (Main.wallHouse[(int) Main.tile[x, y + index].wall]) flag3 = true; if (Main.tile[x, y + index].nactive() && (Main.tileSolid[(int) Main.tile[x, y + index].type] || TileID.Sets.HousingWalls[(int) Main.tile[x, y + index].type])) flag3 = true; } if (!flag2 || !flag3) { WorldGen.roomCheckFailureReason = TownNPCRoomCheckFailureReason.HoleInWallIsTooBig; 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; if (Main.netMode == 1) return; for (int index = 0; index < (int) byte.MaxValue; ++index) { if (Main.player[index].active) { flag = false; break; } } int num1 = 0; int num2 = (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 == (ushort) 37) { ++num1; if (num1 > num2) return; } } } float num3 = 600f; while (!flag) { float num4 = (float) Main.maxTilesX * 0.08f; int i1 = Main.rand.Next(150, Main.maxTilesX - 150); while ((double) i1 > (double) Main.spawnTileX - (double) num4 && (double) i1 < (double) Main.spawnTileX + (double) num4) i1 = Main.rand.Next(150, Main.maxTilesX - 150); for (int j1 = (int) (Main.worldSurface * 0.3); j1 < Main.maxTilesY; ++j1) { if (Main.tile[i1, j1].active() && Main.tileSolid[(int) Main.tile[i1, j1].type]) { int num5 = 0; int num6 = 15; for (int i2 = i1 - num6; i2 < i1 + num6; ++i2) { for (int j2 = j1 - num6; j2 < j1 + num6; ++j2) { if (WorldGen.SolidTile(i2, j2)) { ++num5; if (Main.tile[i2, j2].type == (ushort) 189 || Main.tile[i2, j2].type == (ushort) 202) num5 -= 100; } else if (Main.tile[i2, j2].liquid > (byte) 0) --num5; } } if ((double) num5 >= (double) num3) { flag = WorldGen.meteor(i1, j1); if (!flag) break; break; } num3 -= 0.5f; break; } } if ((double) num3 < 100.0) 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 = 35; Microsoft.Xna.Framework.Rectangle rectangle1 = new Microsoft.Xna.Framework.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) { Microsoft.Xna.Framework.Rectangle rectangle2 = new Microsoft.Xna.Framework.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) { Microsoft.Xna.Framework.Rectangle rectangle3 = new Microsoft.Xna.Framework.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() && TileID.Sets.BasicChest[(int) Main.tile[index1, index2].type]) return false; } } WorldGen.stopDrops = true; int num2 = WorldGen.genRand.Next(17, 23); 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 num3 = (double) Math.Abs(i - index3); float num4 = (float) Math.Abs(j - index4); if (Math.Sqrt(num3 * num3 + (double) num4 * (double) num4) < (double) num2 * 0.9 + (double) Main.rand.Next(-4, 5)) { if (!Main.tileSolid[(int) Main.tile[index3, index4].type]) Main.tile[index3, index4].active(false); Main.tile[index3, index4].type = (ushort) 37; } } } } int num5 = WorldGen.genRand.Next(8, 14); for (int index5 = i - num5; index5 < i + num5; ++index5) { for (int index6 = j - num5; index6 < j + num5; ++index6) { if (index6 > j + Main.rand.Next(-2, 3) - 4) { double num6 = (double) Math.Abs(i - index5); float num7 = (float) Math.Abs(j - index6); if (Math.Sqrt(num6 * num6 + (double) num7 * (double) num7) < (double) num5 * 0.8 + (double) Main.rand.Next(-3, 4)) Main.tile[index5, index6].active(false); } } } int num8 = WorldGen.genRand.Next(25, 35); for (int i1 = i - num8; i1 < i + num8; ++i1) { for (int j1 = j - num8; j1 < j + num8; ++j1) { double num9 = (double) Math.Abs(i - i1); float num10 = (float) Math.Abs(j - j1); if (Math.Sqrt(num9 * num9 + (double) num10 * (double) num10) < (double) num8 * 0.7) { if (Main.tile[i1, j1].type == (ushort) 5 || Main.tile[i1, j1].type == (ushort) 32 || Main.tile[i1, j1].type == (ushort) 352) WorldGen.KillTile(i1, j1); Main.tile[i1, j1].liquid = (byte) 0; } if (Main.tile[i1, j1].type == (ushort) 37) { if (!WorldGen.SolidTile(i1 - 1, j1) && !WorldGen.SolidTile(i1 + 1, j1) && !WorldGen.SolidTile(i1, j1 - 1) && !WorldGen.SolidTile(i1, j1 + 1)) Main.tile[i1, j1].active(false); else if ((Main.tile[i1, j1].halfBrick() || Main.tile[i1 - 1, j1].topSlope()) && !WorldGen.SolidTile(i1, j1 + 1)) Main.tile[i1, j1].active(false); } WorldGen.SquareTileFrame(i1, j1); WorldGen.SquareWallFrame(i1, j1); } } int num11 = WorldGen.genRand.Next(23, 32); for (int i2 = i - num11; i2 < i + num11; ++i2) { for (int j2 = j - num11; j2 < j + num11; ++j2) { if (j2 > j + WorldGen.genRand.Next(-3, 4) - 3 && Main.tile[i2, j2].active() && Main.rand.Next(10) == 0) { double num12 = (double) Math.Abs(i - i2); float num13 = (float) Math.Abs(j - j2); if (Math.Sqrt(num12 * num12 + (double) num13 * (double) num13) < (double) num11 * 0.8) { if (Main.tile[i2, j2].type == (ushort) 5 || Main.tile[i2, j2].type == (ushort) 32 || Main.tile[i2, j2].type == (ushort) 352) WorldGen.KillTile(i2, j2); Main.tile[i2, j2].type = (ushort) 37; WorldGen.SquareTileFrame(i2, j2); } } } } int num14 = WorldGen.genRand.Next(30, 38); for (int i3 = i - num14; i3 < i + num14; ++i3) { for (int j3 = j - num14; j3 < j + num14; ++j3) { if (j3 > j + WorldGen.genRand.Next(-2, 3) && Main.tile[i3, j3].active() && Main.rand.Next(20) == 0) { double num15 = (double) Math.Abs(i - i3); float num16 = (float) Math.Abs(j - j3); if (Math.Sqrt(num15 * num15 + (double) num16 * (double) num16) < (double) num14 * 0.85) { if (Main.tile[i3, j3].type == (ushort) 5 || Main.tile[i3, j3].type == (ushort) 32 || Main.tile[i3, j3].type == (ushort) 352) WorldGen.KillTile(i3, j3); Main.tile[i3, j3].type = (ushort) 37; WorldGen.SquareTileFrame(i3, j3); } } } } WorldGen.stopDrops = false; if (Main.netMode == 0) Main.NewText(Lang.gen[59].Value, (byte) 50, B: (byte) 130); else if (Main.netMode == 2) NetMessage.BroadcastChatMessage(NetworkText.FromKey(Lang.gen[59].Key), new Color(50, (int) byte.MaxValue, 130)); if (Main.netMode != 1) NetMessage.SendTileSquare(-1, i, j, 40); 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(Main.ActiveWorldFileData.Seed, threadContext as GenerationProgress); WorldFile.saveWorld(Main.ActiveWorldFileData.IsCloudSave, true); if (Main.menuMode == 10 || Main.menuMode == 888) Main.menuMode = 6; Main.PlaySound(10); } public static void CreateNewWorld(GenerationProgress progress = null) { Main.rand = new UnifiedRandom(Main.ActiveWorldFileData.Seed); ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.worldGenCallBack), (object) progress); } public static void SaveAndQuitCallBack(object threadContext) { try { Main.PlaySound(34, Style: 0); Main.PlaySound(35, Style: 0); } catch { } if (Main.netMode == 0) WorldFile.CacheSaveTime(); Main.invasionProgress = 0; Main.invasionProgressDisplayLeft = 0; Main.invasionProgressAlpha = 0.0f; Main.menuMode = 10; Main.gameMenu = true; Main.StopTrackedSounds(); CaptureInterface.ResetFocus(); Main.ActivePlayerFileData.StopPlayTimer(); Player.SavePlayer(Main.ActivePlayerFileData); if (Main.netMode == 0) { WorldFile.saveWorld(); Main.PlaySound(10); } else { Netplay.disconnect = true; Main.netMode = 0; } Main.fastForwardTime = false; Main.UpdateSundial(); Main.menuMode = 0; if (threadContext == null) return; ((Action) threadContext)(); } public static void SaveAndQuit(Action callback = null) { Main.PlaySound(11); ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.SaveAndQuitCallBack), (object) callback); } public static void playWorldCallBack(object threadContext) { if (Main.rand == null) Main.rand = new UnifiedRandom((int) DateTime.Now.Ticks); for (int index = 0; index < (int) byte.MaxValue; ++index) { if (index != Main.myPlayer) Main.player[index].active = false; } WorldGen.noMapUpdate = true; WorldFile.loadWorld(Main.ActiveWorldFileData.IsCloudSave); if (WorldGen.loadFailed || !WorldGen.loadSuccess) { WorldFile.loadWorld(Main.ActiveWorldFileData.IsCloudSave); if (WorldGen.loadFailed || !WorldGen.loadSuccess) { bool isCloudSave = Main.ActiveWorldFileData.IsCloudSave; WorldGen.worldBackup = FileUtilities.Exists(Main.worldPathName + ".bak", isCloudSave); if (!Main.dedServ) { if (WorldGen.worldBackup) { Main.menuMode = 200; return; } Main.menuMode = 201; return; } if (WorldGen.worldBackup) { FileUtilities.Copy(Main.worldPathName, Main.worldPathName + ".bad", isCloudSave); FileUtilities.Copy(Main.worldPathName + ".bak", Main.worldPathName, isCloudSave); FileUtilities.Delete(Main.worldPathName + ".bak", isCloudSave); WorldFile.loadWorld(Main.ActiveWorldFileData.IsCloudSave); if (WorldGen.loadFailed || !WorldGen.loadSuccess) { WorldFile.loadWorld(Main.ActiveWorldFileData.IsCloudSave); if (WorldGen.loadFailed || !WorldGen.loadSuccess) { FileUtilities.Copy(Main.worldPathName, Main.worldPathName + ".bak", isCloudSave); FileUtilities.Copy(Main.worldPathName + ".bad", Main.worldPathName, isCloudSave); FileUtilities.Delete(Main.worldPathName + ".bad", isCloudSave); Console.WriteLine(Language.GetTextValue("Error.LoadFailed")); return; } } } else { Console.WriteLine(Language.GetTextValue("Error.LoadFailedNoBackup")); return; } } } if (Main.mapEnabled) Main.Map.Load(); if (Main.netMode != 2) Main.sectionManager.SetAllFramesLoaded(); while (Main.loadMapLock) { float num = (float) Main.loadMapLastX / (float) Main.maxTilesX; Main.statusText = Lang.gen[68].Value + " " + (object) (int) ((double) num * 100.0 + 1.0) + "%"; Thread.Sleep(0); if (!Main.mapEnabled) break; } if (Main.gameMenu) Main.gameMenu = false; if (Main.netMode == 0 && Main.anglerWhoFinishedToday.Contains(Main.player[Main.myPlayer].name)) Main.anglerQuestFinished = true; Main.player[Main.myPlayer].Spawn(); Main.player[Main.myPlayer].Update(Main.myPlayer); Main.ActivePlayerFileData.StartPlayTimer(); WorldGen._lastSeed = Main.ActiveWorldFileData.Seed; Player.Hooks.EnterWorld(Main.myPlayer); WorldFile.SetOngoingToTemps(); Main.PlaySound(11); Main.resetClouds = true; WorldGen.noMapUpdate = false; } public static void playWorld() => ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.playWorldCallBack), (object) 1); public static void saveAndPlayCallBack(object threadContext) => WorldFile.saveWorld(); public static void saveAndPlay() => ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.saveAndPlayCallBack), (object) 1); public static void saveToonWhilePlayingCallBack(object threadContext) => Player.SavePlayer(Main.ActivePlayerFileData); public static void saveToonWhilePlaying() => ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.saveToonWhilePlayingCallBack), (object) 1); public static void serverLoadWorldCallBack(object threadContext) { Main.rand = new UnifiedRandom((int) DateTime.Now.Ticks); WorldFile.loadWorld(Main.ActiveWorldFileData.IsCloudSave); if (WorldGen.loadFailed || !WorldGen.loadSuccess) { WorldFile.loadWorld(Main.ActiveWorldFileData.IsCloudSave); if (WorldGen.loadFailed || !WorldGen.loadSuccess) { bool isCloudSave = Main.ActiveWorldFileData.IsCloudSave; WorldGen.worldBackup = FileUtilities.Exists(Main.worldPathName + ".bak", isCloudSave); if (!Main.dedServ) { if (WorldGen.worldBackup) { Main.menuMode = 200; return; } Main.menuMode = 201; return; } if (WorldGen.worldBackup) { FileUtilities.Copy(Main.worldPathName + ".bak", Main.worldPathName, isCloudSave); FileUtilities.Delete(Main.worldPathName + ".bak", isCloudSave); WorldFile.loadWorld(Main.ActiveWorldFileData.IsCloudSave); if (WorldGen.loadFailed || !WorldGen.loadSuccess) { WorldFile.loadWorld(Main.ActiveWorldFileData.IsCloudSave); if (WorldGen.loadFailed || !WorldGen.loadSuccess) { Console.WriteLine(Language.GetTextValue("Error.LoadFailed")); return; } } } else { Console.WriteLine(Language.GetTextValue("Error.LoadFailedNoBackup")); return; } } } WorldGen._lastSeed = Main.ActiveWorldFileData.Seed; Main.PlaySound(10); Netplay.StartServer(); WorldFile.SetOngoingToTemps(); WorldGen.Hooks.WorldLoaded(); } public static void serverLoadWorld() => ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.serverLoadWorldCallBack), (object) 1); public static void clearWorld() { WorldGen.TownManager = new TownRoomManager(); WorldGen.Hooks.ClearWorld(); TileEntity.Clear(); Main.checkXMas(); Main.checkHalloween(); if (Main.mapReady) { for (int index = 0; index < WorldGen.lastMaxTilesX; ++index) { double num = (double) index / (double) WorldGen.lastMaxTilesX; Main.statusText = Lang.gen[65].Value; } Main.Map.Clear(); } NPC.MoonLordCountdown = 0; Main.pumpkinMoon = false; Main.clearMap = true; Main.mapTime = 0; Main.updateMap = false; Main.mapReady = false; Main.refreshMap = false; Main.eclipse = false; Main.slimeRain = false; Main.slimeRainTime = 0.0; Main.sundialCooldown = 0; Main.fastForwardTime = false; BirthdayParty.WorldClear(); Sandstorm.WorldClear(); Main.UpdateSundial(); Main.wof = -1; NPC.waveKills = 0.0f; WorldGen.spawnHardBoss = 0; WorldGen.totalSolid2 = 0; WorldGen.totalGood2 = 0; WorldGen.totalEvil2 = 0; WorldGen.totalBlood2 = 0; WorldGen.totalSolid = 0; WorldGen.totalGood = 0; WorldGen.totalEvil = 0; WorldGen.totalBlood = 0; WorldFile.ResetTemps(); Main.maxRaining = 0.0f; WorldGen.totalX = 0; WorldGen.totalD = 0; WorldGen.tEvil = (byte) 0; WorldGen.tBlood = (byte) 0; WorldGen.tGood = (byte) 0; WorldGen.spawnEye = false; WorldGen.prioritizedTownNPC = 0; WorldGen.shadowOrbCount = 0; WorldGen.altarCount = 0; WorldGen.oreTier1 = -1; WorldGen.oreTier2 = -1; WorldGen.oreTier3 = -1; Main.cloudBGActive = 0.0f; Main.raining = false; Main.hardMode = false; Main.helpText = 0; Main.BartenderHelpTextIndex = 0; Main.dungeonX = 0; Main.dungeonY = 0; NPC.downedBoss1 = false; NPC.downedBoss2 = false; NPC.downedBoss3 = false; NPC.downedQueenBee = false; NPC.downedSlimeKing = false; NPC.downedMechBossAny = false; NPC.downedMechBoss1 = false; NPC.downedMechBoss2 = false; NPC.downedMechBoss3 = false; NPC.downedFishron = false; NPC.downedAncientCultist = false; NPC.downedMoonlord = false; NPC.downedHalloweenKing = false; NPC.downedHalloweenTree = false; NPC.downedChristmasIceQueen = false; NPC.downedChristmasSantank = false; NPC.downedChristmasTree = false; NPC.downedPlantBoss = false; NPC.downedGolemBoss = false; NPC.savedStylist = false; NPC.savedGoblin = false; NPC.savedWizard = false; NPC.savedMech = false; NPC.savedTaxCollector = false; NPC.savedAngler = false; NPC.savedBartender = false; NPC.downedGoblins = false; NPC.downedClown = false; NPC.downedFrost = false; NPC.downedPirates = false; NPC.downedMartians = false; int num1; NPC.LunarApocalypseIsUp = (num1 = 0) != 0; NPC.downedTowerStardust = num1 != 0; NPC.downedTowerNebula = num1 != 0; NPC.downedTowerVortex = num1 != 0; NPC.downedTowerSolar = num1 != 0; int num2; NPC.TowerActiveStardust = (num2 = 0) != 0; NPC.TowerActiveNebula = num2 != 0; NPC.TowerActiveVortex = num2 != 0; NPC.TowerActiveSolar = num2 != 0; DD2Event.ResetProgressEntirely(); NPC.ClearFoundActiveNPCs(); 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; Main.invasionSizeStart = 0; Main.treeX[0] = Main.maxTilesX; Main.treeX[1] = Main.maxTilesX; Main.treeX[2] = Main.maxTilesX; Main.treeStyle[0] = 0; Main.treeStyle[1] = 0; Main.treeStyle[2] = 0; Main.treeStyle[3] = 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 num3 = (float) index1 / (float) WorldGen.lastMaxTilesX; Main.statusText = Lang.gen[46].Value + " " + (object) (int) ((double) num3 * 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 != 2) Main.sectionManager = new WorldSections(Main.maxTilesX / 200, Main.maxTilesY / 150); if (Main.netMode != 1) { for (int index3 = 0; index3 < Main.maxTilesX; ++index3) { float num4 = (float) index3 / (float) Main.maxTilesX; Main.statusText = Lang.gen[47].Value + " " + (object) (int) ((double) num4 * 100.0 + 1.0) + "%"; for (int index4 = 0; index4 < Main.maxTilesY; ++index4) { if (Main.tile[index3, index4] == null) Main.tile[index3, index4] = new Tile(); else Main.tile[index3, index4].ClearEverything(); } } } CombatText.clearAll(); for (int index = 0; index < 6000; ++index) { Main.dust[index] = new Dust(); Main.dust[index].dustIndex = index; } for (int index = 0; index < 500; ++index) Main.gore[index] = new Gore(); for (int index = 0; index < 400; ++index) { Main.item[index] = new Item(); Main.itemLockoutTime[index] = 0; } 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 setBG(int bg, int style) { switch (bg) { case 0: WorldGen.treeBG = style; Main.treeMntBG[0] = 7; Main.treeMntBG[1] = 8; switch (style) { case 1: Main.treeBG[0] = 50; Main.treeBG[1] = 51; Main.treeBG[2] = 52; return; case 2: Main.treeBG[0] = 53; Main.treeBG[1] = 54; Main.treeBG[2] = 55; return; case 3: Main.treeMntBG[1] = 90; Main.treeBG[0] = 91; Main.treeBG[1] = -1; Main.treeBG[2] = 92; return; case 4: Main.treeMntBG[0] = 93; Main.treeMntBG[1] = 94; Main.treeBG[0] = -1; Main.treeBG[1] = -1; Main.treeBG[2] = -1; return; case 5: Main.treeMntBG[0] = 93; Main.treeMntBG[1] = 94; Main.treeBG[0] = -1; Main.treeBG[1] = -1; Main.treeBG[2] = 55; return; case 6: Main.treeMntBG[0] = 171; Main.treeMntBG[1] = 172; Main.treeBG[0] = 173; Main.treeBG[1] = -1; Main.treeBG[2] = -1; return; case 7: Main.treeMntBG[0] = 176; Main.treeMntBG[1] = 177; Main.treeBG[0] = 178; Main.treeBG[1] = -1; Main.treeBG[2] = -1; return; case 8: Main.treeMntBG[0] = 179; Main.treeMntBG[1] = 180; Main.treeBG[0] = 184; Main.treeBG[1] = -1; Main.treeBG[2] = -1; return; case 31: Main.treeMntBG[1] = 90; Main.treeBG[0] = 91; Main.treeBG[1] = -1; Main.treeBG[2] = 11; return; case 51: Main.treeMntBG[0] = 93; Main.treeMntBG[1] = 94; Main.treeBG[0] = -1; Main.treeBG[1] = -1; Main.treeBG[2] = 11; return; case 71: Main.treeMntBG[0] = 176; Main.treeMntBG[1] = 177; Main.treeBG[0] = 178; Main.treeBG[1] = -1; Main.treeBG[2] = 11; return; case 72: Main.treeMntBG[0] = 176; Main.treeMntBG[1] = 177; Main.treeBG[0] = 178; Main.treeBG[1] = -1; Main.treeBG[2] = 52; return; case 73: Main.treeMntBG[0] = 176; Main.treeMntBG[1] = 177; Main.treeBG[0] = 178; Main.treeBG[1] = -1; Main.treeBG[2] = 55; return; default: Main.treeBG[0] = 9; Main.treeBG[1] = 10; Main.treeBG[2] = 11; return; } case 1: WorldGen.corruptBG = style; if (style == 1) { Main.corruptBG[0] = 56; Main.corruptBG[1] = 57; Main.corruptBG[2] = 58; break; } Main.corruptBG[0] = 12; Main.corruptBG[1] = 13; Main.corruptBG[2] = 14; break; case 2: WorldGen.jungleBG = style; if (style == 1) { Main.jungleBG[0] = 59; Main.jungleBG[1] = 60; Main.jungleBG[2] = 61; break; } Main.jungleBG[0] = 15; Main.jungleBG[1] = 16; Main.jungleBG[2] = 17; break; case 3: WorldGen.snowBG = style; Main.snowMntBG[0] = 35; Main.snowMntBG[1] = 36; switch (style) { case 1: Main.snowBG[0] = 97; Main.snowBG[1] = 96; Main.snowBG[2] = 95; return; case 2: Main.snowMntBG[0] = 98; Main.snowMntBG[1] = 99; Main.snowBG[0] = -1; Main.snowBG[1] = -1; Main.snowBG[2] = -1; return; case 3: Main.snowMntBG[0] = 98; Main.snowMntBG[1] = 100; Main.snowBG[0] = -1; Main.snowBG[1] = -1; Main.snowBG[2] = -1; return; case 4: Main.snowMntBG[0] = 98; Main.snowMntBG[1] = 101; Main.snowBG[0] = -1; Main.snowBG[1] = -1; Main.snowBG[2] = -1; return; case 21: Main.snowMntBG[0] = 98; Main.snowMntBG[1] = 99; Main.snowBG[0] = 95; Main.snowBG[1] = 96; Main.snowBG[2] = 97; return; case 22: Main.snowMntBG[0] = 98; Main.snowMntBG[1] = 99; Main.snowBG[0] = 37; Main.snowBG[1] = 38; Main.snowBG[2] = 39; return; case 31: Main.snowMntBG[0] = 98; Main.snowMntBG[1] = 100; Main.snowBG[0] = 95; Main.snowBG[1] = 96; Main.snowBG[2] = 97; return; case 32: Main.snowMntBG[0] = 98; Main.snowMntBG[1] = 100; Main.snowBG[0] = 37; Main.snowBG[1] = 38; Main.snowBG[2] = 39; return; case 41: Main.snowMntBG[0] = 98; Main.snowMntBG[1] = 101; Main.snowBG[0] = 95; Main.snowBG[1] = 96; Main.snowBG[2] = 97; return; case 42: Main.snowMntBG[0] = 98; Main.snowMntBG[1] = 101; Main.snowBG[0] = 37; Main.snowBG[1] = 38; Main.snowBG[2] = 39; return; default: Main.snowBG[0] = 37; Main.snowBG[1] = 38; Main.snowBG[2] = 39; return; } case 4: WorldGen.hallowBG = style; if (style == 1) { Main.hallowBG[0] = 102; Main.hallowBG[1] = 103; Main.hallowBG[2] = 104; break; } Main.hallowBG[0] = 29; Main.hallowBG[1] = 30; Main.hallowBG[2] = 31; break; case 5: WorldGen.crimsonBG = style; if (style == 1) { Main.crimsonBG[0] = 105; Main.crimsonBG[1] = 106; Main.crimsonBG[2] = 107; } if (style == 2) { Main.crimsonBG[0] = 174; Main.crimsonBG[1] = -1; Main.crimsonBG[2] = 175; break; } Main.crimsonBG[0] = 43; Main.crimsonBG[1] = 44; Main.crimsonBG[2] = 45; break; case 6: WorldGen.desertBG = style; if (style == 1) { Main.desertBG[0] = 108; Main.desertBG[1] = 109; break; } Main.desertBG[0] = 21; Main.desertBG[1] = 20; break; case 7: WorldGen.oceanBG = style; if (style == 1) { Main.oceanBG = 110; break; } if (style == 2) { Main.oceanBG = 111; break; } Main.oceanBG = 28; break; } } public static void RandomizeWeather() { if (Main.cloudLimit < 10) return; Main.numClouds = WorldGen.genRand.Next(10, Main.cloudLimit); Main.windSpeed = 0.0f; while ((double) Main.windSpeed == 0.0) { Main.windSpeed = (float) WorldGen.genRand.Next(-100, 101) * 0.01f; Main.windSpeedSet = Main.windSpeed; } Cloud.resetClouds(); } public static void RandomizeMoonState() => Main.moonType = WorldGen.genRand.Next(Main.maxMoons); public static void RandomizeBackgrounds() { WorldGen.treeBG = WorldGen.genRand.Next(9); if ((WorldGen.treeBG == 1 || WorldGen.treeBG == 2) && WorldGen.genRand.Next(2) == 0) WorldGen.treeBG = WorldGen.genRand.Next(7); if (WorldGen.treeBG == 0) WorldGen.treeBG = WorldGen.genRand.Next(7); if (WorldGen.treeBG == 3 && WorldGen.genRand.Next(3) == 0) WorldGen.treeBG = 31; if (WorldGen.treeBG == 5 && WorldGen.genRand.Next(2) == 0) WorldGen.treeBG = 51; if (WorldGen.treeBG == 7 && WorldGen.genRand.Next(4) == 0) WorldGen.treeBG = WorldGen.genRand.Next(71, 74); WorldGen.setBG(0, WorldGen.treeBG); WorldGen.setBG(1, WorldGen.genRand.Next(2)); WorldGen.setBG(2, WorldGen.genRand.Next(2)); WorldGen.snowBG = WorldGen.genRand.Next(6); if (WorldGen.snowBG == 2 && WorldGen.genRand.Next(2) == 0) WorldGen.snowBG = WorldGen.genRand.Next(2) != 0 ? 22 : 21; if (WorldGen.snowBG == 3 && WorldGen.genRand.Next(2) == 0) WorldGen.snowBG = WorldGen.genRand.Next(2) != 0 ? 32 : 31; if (WorldGen.snowBG == 4 && WorldGen.genRand.Next(2) == 0) WorldGen.snowBG = WorldGen.genRand.Next(2) != 0 ? 42 : 41; WorldGen.setBG(3, WorldGen.snowBG); WorldGen.setBG(4, WorldGen.genRand.Next(2)); WorldGen.setBG(5, WorldGen.genRand.Next(3)); WorldGen.setBG(6, WorldGen.genRand.Next(2)); WorldGen.setBG(7, WorldGen.genRand.Next(3)); } public static void RandomizeTreeStyle() { switch (Main.maxTilesX) { case 4200: Main.treeX[0] = WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.5 - (double) Main.maxTilesX * 0.25), (int) ((double) Main.maxTilesX * 0.5 + (double) Main.maxTilesX * 0.25)); Main.treeStyle[0] = WorldGen.genRand.Next(6); Main.treeStyle[1] = WorldGen.genRand.Next(6); while (Main.treeStyle[1] == Main.treeStyle[0]) Main.treeStyle[1] = WorldGen.genRand.Next(6); Main.treeX[1] = Main.maxTilesX; Main.treeX[2] = Main.maxTilesX; break; case 6400: Main.treeX[0] = WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.334 - (double) Main.maxTilesX * 0.200000002980232), (int) ((double) Main.maxTilesX * 0.334 + (double) Main.maxTilesX * 0.200000002980232)); Main.treeX[1] = WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.667 - (double) Main.maxTilesX * 0.200000002980232), (int) ((double) Main.maxTilesX * 0.667 + (double) Main.maxTilesX * 0.200000002980232)); Main.treeStyle[0] = WorldGen.genRand.Next(6); Main.treeStyle[1] = WorldGen.genRand.Next(6); Main.treeStyle[2] = WorldGen.genRand.Next(6); while (Main.treeStyle[1] == Main.treeStyle[0]) Main.treeStyle[1] = WorldGen.genRand.Next(6); while (Main.treeStyle[2] == Main.treeStyle[0] || Main.treeStyle[2] == Main.treeStyle[1]) Main.treeStyle[2] = WorldGen.genRand.Next(6); Main.treeX[2] = Main.maxTilesX; break; default: Main.treeX[0] = WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.25 - (double) Main.maxTilesX * 0.150000005960464), (int) ((double) Main.maxTilesX * 0.25 + (double) Main.maxTilesX * 0.150000005960464)); Main.treeX[1] = WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.5 - (double) Main.maxTilesX * 0.150000005960464), (int) ((double) Main.maxTilesX * 0.5 + (double) Main.maxTilesX * 0.150000005960464)); Main.treeX[2] = WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.75 - (double) Main.maxTilesX * 0.150000005960464), (int) ((double) Main.maxTilesX * 0.75 + (double) Main.maxTilesX * 0.150000005960464)); Main.treeStyle[0] = WorldGen.genRand.Next(6); Main.treeStyle[1] = WorldGen.genRand.Next(6); Main.treeStyle[2] = WorldGen.genRand.Next(6); Main.treeStyle[3] = WorldGen.genRand.Next(6); while (Main.treeStyle[1] == Main.treeStyle[0]) Main.treeStyle[1] = WorldGen.genRand.Next(6); while (Main.treeStyle[2] == Main.treeStyle[0] || Main.treeStyle[2] == Main.treeStyle[1]) Main.treeStyle[2] = WorldGen.genRand.Next(6); while (Main.treeStyle[3] == Main.treeStyle[0] || Main.treeStyle[3] == Main.treeStyle[1] || Main.treeStyle[3] == Main.treeStyle[2]) Main.treeStyle[3] = WorldGen.genRand.Next(6); break; } } public static void RandomizeCaveBackgrounds() { int maxValue = 8; switch (Main.maxTilesX) { case 4200: Main.caveBackX[0] = WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.5 - (double) Main.maxTilesX * 0.25), (int) ((double) Main.maxTilesX * 0.5 + (double) Main.maxTilesX * 0.25)); Main.caveBackX[1] = Main.maxTilesX; Main.caveBackX[2] = Main.maxTilesX; Main.caveBackStyle[0] = WorldGen.genRand.Next(maxValue); Main.caveBackStyle[1] = WorldGen.genRand.Next(maxValue); while (Main.caveBackStyle[1] == Main.caveBackStyle[0]) Main.caveBackStyle[1] = WorldGen.genRand.Next(maxValue); break; case 6400: Main.caveBackX[0] = WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.334 - (double) Main.maxTilesX * 0.200000002980232), (int) ((double) Main.maxTilesX * 0.334 + (double) Main.maxTilesX * 0.200000002980232)); Main.caveBackX[1] = WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.667 - (double) Main.maxTilesX * 0.200000002980232), (int) ((double) Main.maxTilesX * 0.667 + (double) Main.maxTilesX * 0.200000002980232)); Main.caveBackX[2] = Main.maxTilesX; Main.caveBackStyle[0] = WorldGen.genRand.Next(maxValue); Main.caveBackStyle[1] = WorldGen.genRand.Next(maxValue); Main.caveBackStyle[2] = WorldGen.genRand.Next(maxValue); while (Main.caveBackStyle[1] == Main.caveBackStyle[0]) Main.caveBackStyle[1] = WorldGen.genRand.Next(maxValue); while (Main.caveBackStyle[2] == Main.caveBackStyle[0] || Main.caveBackStyle[2] == Main.caveBackStyle[1]) Main.caveBackStyle[2] = WorldGen.genRand.Next(maxValue); break; default: Main.caveBackX[0] = WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.25 - (double) Main.maxTilesX * 0.150000005960464), (int) ((double) Main.maxTilesX * 0.25 + (double) Main.maxTilesX * 0.150000005960464)); Main.caveBackX[1] = WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.5 - (double) Main.maxTilesX * 0.150000005960464), (int) ((double) Main.maxTilesX * 0.5 + (double) Main.maxTilesX * 0.150000005960464)); Main.caveBackX[2] = WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.75 - (double) Main.maxTilesX * 0.150000005960464), (int) ((double) Main.maxTilesX * 0.75 + (double) Main.maxTilesX * 0.150000005960464)); Main.caveBackStyle[0] = WorldGen.genRand.Next(maxValue); Main.caveBackStyle[1] = WorldGen.genRand.Next(maxValue); Main.caveBackStyle[2] = WorldGen.genRand.Next(maxValue); Main.caveBackStyle[3] = WorldGen.genRand.Next(maxValue); while (Main.caveBackStyle[1] == Main.caveBackStyle[0]) Main.caveBackStyle[1] = WorldGen.genRand.Next(maxValue); while (Main.caveBackStyle[2] == Main.caveBackStyle[0] || Main.caveBackStyle[2] == Main.caveBackStyle[1]) Main.caveBackStyle[2] = WorldGen.genRand.Next(maxValue); while (Main.caveBackStyle[3] == Main.caveBackStyle[0] || Main.caveBackStyle[3] == Main.caveBackStyle[1] || Main.caveBackStyle[3] == Main.caveBackStyle[2]) Main.caveBackStyle[3] = WorldGen.genRand.Next(maxValue); break; } Main.iceBackStyle = WorldGen.genRand.Next(4); Main.hellBackStyle = WorldGen.genRand.Next(3); Main.jungleBackStyle = WorldGen.genRand.Next(2); } private static void ResetGenerator() { 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; WorldGen.JungleItemCount = 0; } public static bool mayanTrap(int x2, int y2) { int num1 = 1; if (WorldGen.genRand.Next(3) == 0) num1 = 0; int i1 = x2; int j1 = y2; while (!WorldGen.SolidTile(i1, j1)) { ++j1; if (j1 >= Main.maxTilesY - 300) return false; } if (Main.tile[i1, j1].type == (ushort) 232) return false; int j2 = j1 - 1; if (Main.tile[i1, j2].liquid > (byte) 0 && Main.tile[i1, j2].lava()) return false; if (num1 == -1 && WorldGen.genRand.Next(20) == 0) num1 = 2; else if (num1 == -1) num1 = WorldGen.genRand.Next(2); if (Main.tile[i1, j2].nactive() || Main.tile[i1 - 1, j2].nactive() || Main.tile[i1 + 1, j2].nactive() || Main.tile[i1, j2 - 1].nactive() || Main.tile[i1 - 1, j2 - 1].nactive() || Main.tile[i1 + 1, j2 - 1].nactive() || Main.tile[i1, j2 - 2].nactive() || Main.tile[i1 - 1, j2 - 2].nactive() || Main.tile[i1 + 1, j2 - 2].nactive() || Main.tile[i1, j2 + 1].type == (ushort) 48 || Main.tile[i1, j2 + 1].type == (ushort) 232) return false; switch (num1) { 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 num2 = i1 - i3; int num3 = i5 - i1; bool flag1 = false; bool flag2 = false; if (num2 > 5 && num2 < 50) flag1 = true; if (num3 > 5 && num3 < 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 == (ushort) 10 || Main.tile[i3, j3].type == (ushort) 48 || Main.tile[i3, j3 + 1].type == (ushort) 10 || Main.tile[i3, j3 + 1].type == (ushort) 48)) flag1 = false; if (flag2 && (Main.tile[i5, j3].type == (ushort) 10 || Main.tile[i5, j3].type == (ushort) 48 || Main.tile[i5, j3 + 1].type == (ushort) 10 || Main.tile[i5, j3 + 1].type == (ushort) 48)) flag2 = false; int num4; int i6; if (flag1 & flag2) { num4 = 1; i6 = i3; if (WorldGen.genRand.Next(2) == 0) { i6 = i5; num4 = -1; } } else if (flag2) { i6 = i5; num4 = -1; } else { if (!flag1) return false; i6 = i3; num4 = 1; } if (Main.tile[i6, j3].wall != (byte) 87 || Main.tile[i6, j3].type == (ushort) 190 || Main.tile[i6, j3].type == (ushort) 135 || Main.tile[i6, j3].type == (ushort) 137 || Main.tile[i6, j3].type == (ushort) 232) return false; WorldGen.PlaceTile(i1, j2, 135, true, true, style: 6); WorldGen.KillTile(i6, j3); int num5 = WorldGen.genRand.Next(3); if (Main.tile[i1, j2].wire()) num5 = 0; if (Main.tile[i1, j2].wire2()) num5 = 1; if (Main.tile[i1, j2].wire3()) num5 = 2; int num6 = Math.Abs(i6 - i1); int style1 = 1; if (num6 < 10 && WorldGen.genRand.Next(3) != 0) style1 = 2; WorldGen.PlaceTile(i6, j3, 137, true, true, style: style1); if (num4 == 1) Main.tile[i6, j3].frameX += (short) 18; int num7 = WorldGen.genRand.Next(5); int j4 = j3; while (num7 > 0) { --num7; --j4; if (WorldGen.SolidTile(i6, j4) && WorldGen.SolidTile(i6 - num4, j4) && !WorldGen.SolidTile(i6 + num4, j4)) { WorldGen.PlaceTile(i6, j4, 137, true, true, style: style1); if (num4 == 1) Main.tile[i6, j4].frameX += (short) 18; switch (num5) { case 0: Main.tile[i6, j4].wire(true); continue; case 1: Main.tile[i6, j4].wire2(true); continue; case 2: Main.tile[i6, j4].wire3(true); continue; default: continue; } } else break; } int index1 = i1; int index2 = j2; while (index1 != i6 || index2 != j3) { switch (num5) { case 0: Main.tile[index1, index2].wire(true); break; case 1: Main.tile[index1, index2].wire2(true); break; case 2: Main.tile[index1, index2].wire3(true); break; } if (index1 > i6) --index1; if (index1 < i6) ++index1; switch (num5) { case 0: Main.tile[index1, index2].wire(true); break; case 1: Main.tile[index1, index2].wire2(true); break; case 2: Main.tile[index1, index2].wire3(true); break; } if (index2 > j3) --index2; if (index2 < j3) ++index2; switch (num5) { case 0: Main.tile[index1, index2].wire(true); continue; case 1: Main.tile[index1, index2].wire2(true); continue; case 2: Main.tile[index1, index2].wire3(true); continue; default: continue; } } return true; case 1: int i7 = i1; int j5 = j2; while (!WorldGen.SolidTile(i7, j5)) { --j5; if ((double) j5 < Main.worldSurface) return false; } int num8 = Math.Abs(j5 - j2); if (num8 < 3) return false; int num9 = WorldGen.genRand.Next(3); if (Main.tile[i1, j2].wire()) num9 = 0; if (Main.tile[i1, j2].wire2()) num9 = 1; if (Main.tile[i1, j2].wire3()) num9 = 2; int style2 = 3; if (num8 < 16 && WorldGen.genRand.Next(3) != 0) style2 = 4; if (Main.tile[i7, j5].type == (ushort) 135 || Main.tile[i7, j5].type == (ushort) 137 || Main.tile[i7, j5].type == (ushort) 232 || Main.tile[i7, j5].wall != (byte) 87) return false; WorldGen.PlaceTile(i1, j2, 135, true, true, style: 6); WorldGen.PlaceTile(i7, j5, 137, true, true, style: style2); for (int index3 = 0; index3 < 2; ++index3) { int num10 = WorldGen.genRand.Next(1, 5); int i8 = i7; int num11 = -1; if (index3 == 1) num11 = 1; while (num10 > 0) { --num10; i8 += num11; if (WorldGen.SolidTile(i8, j5 - 1) && !WorldGen.SolidTile(i8, j5 + 1)) { WorldGen.PlaceTile(i8, j5, 137, true, true, style: style2); switch (num9) { case 0: Main.tile[i8, j5].wire(true); continue; case 1: Main.tile[i8, j5].wire2(true); continue; case 2: Main.tile[i8, j5].wire3(true); continue; default: continue; } } else break; } } int index4 = i1; int index5 = j2; while (index4 != i7 || index5 != j5) { switch (num9) { case 0: Main.tile[index4, index5].wire(true); break; case 1: Main.tile[index4, index5].wire2(true); break; case 2: Main.tile[index4, index5].wire3(true); break; } if (index4 > i7) --index4; if (index4 < i7) ++index4; switch (num9) { case 0: Main.tile[index4, index5].wire(true); break; case 1: Main.tile[index4, index5].wire2(true); break; case 2: Main.tile[index4, index5].wire3(true); break; } if (index5 > j5) --index5; if (index5 < j5) ++index5; switch (num9) { case 0: Main.tile[index4, index5].wire(true); continue; case 1: Main.tile[index4, index5].wire2(true); continue; case 2: Main.tile[index4, index5].wire3(true); continue; default: continue; } } return true; default: return false; } } public static bool placeTrap(int x2, int y2, int type = -1) { int index1 = x2; int j1 = y2; bool flag1 = false; bool flag2 = false; while (!WorldGen.SolidTile(index1, j1)) { ++j1; if (j1 >= Main.maxTilesY - 300) flag2 = true; } int index2 = j1 - 1; if (Main.tile[index1, index2].wall == (byte) 87) return false; if (Main.tile[index1, index2].liquid > (byte) 0 && Main.tile[index1, index2].lava()) flag1 = true; if (type == -1 && WorldGen.genRand.Next(20) == 0) type = 2; else if (type == -1 && index2 > WorldGen.lavaLine + 30 && WorldGen.genRand.Next(6) != 0) type = 3; else if (type == -1) type = WorldGen.genRand.Next(2); if (!WorldGen.InWorld(index1, index2, 3) || flag1 && type != 3 || flag2 && type != 3 || Main.tile[index1, index2].nactive() || Main.tile[index1 - 1, index2].nactive() || Main.tile[index1 + 1, index2].nactive() || Main.tile[index1, index2 - 1].nactive() || Main.tile[index1 - 1, index2 - 1].nactive() || Main.tile[index1 + 1, index2 - 1].nactive() || Main.tile[index1, index2 - 2].nactive() || Main.tile[index1 - 1, index2 - 2].nactive() || Main.tile[index1 + 1, index2 - 2].nactive() || Main.tile[index1, index2 + 1].type == (ushort) 48 || Main.tile[index1, index2 + 1].type == (ushort) 232) return false; if (type == 1) { for (int index3 = index1 - 3; index3 <= index1 + 3; ++index3) { for (int index4 = index2 - 3; index4 <= index2 + 3; ++index4) { if (Main.tile[index3, index4].type == (ushort) 147 || Main.tile[index3, index4].type == (ushort) 161) type = 0; } } } if (type == 0) { int i1 = index1; int j2 = index2 - WorldGen.genRand.Next(3); while (!WorldGen.SolidTile(i1, j2)) --i1; int i2 = i1; int i3 = index1; while (!WorldGen.SolidTile(i3, j2)) ++i3; int i4 = i3; int num1 = index1 - i2; int num2 = i4 - index1; bool flag3 = false; bool flag4 = false; if (num1 > 5 && num1 < 50) flag3 = true; if (num2 > 5 && num2 < 50) flag4 = true; if (flag3 && !WorldGen.SolidTile(i2, j2 + 1)) flag3 = false; if (flag4 && !WorldGen.SolidTile(i4, j2 + 1)) flag4 = false; if (flag3 && (Main.tile[i2, j2].type == (ushort) 10 || Main.tile[i2, j2].type == (ushort) 48 || Main.tile[i2, j2 + 1].type == (ushort) 10 || Main.tile[i2, j2 + 1].type == (ushort) 48)) flag3 = false; if (flag4 && (Main.tile[i4, j2].type == (ushort) 10 || Main.tile[i4, j2].type == (ushort) 48 || Main.tile[i4, j2 + 1].type == (ushort) 10 || Main.tile[i4, j2 + 1].type == (ushort) 48)) flag4 = false; int num3; int i5; if (flag3 & flag4) { num3 = 1; i5 = i2; if (WorldGen.genRand.Next(2) == 0) { i5 = i4; num3 = -1; } } else if (flag4) { i5 = i4; num3 = -1; } else if (flag3) { i5 = i2; num3 = 1; } else { ++WorldGen.trapDiag[type, 0]; return false; } if (Main.tile[i5, j2].type == (ushort) 190) { ++WorldGen.trapDiag[type, 0]; return false; } if (Main.tile[index1, index2].wall > (byte) 0) WorldGen.PlaceTile(index1, index2, 135, true, true, style: 2); else WorldGen.PlaceTile(index1, index2, 135, true, true, style: WorldGen.genRand.Next(2, 4)); WorldGen.KillTile(i5, j2); WorldGen.PlaceTile(i5, j2, 137, true, true); if (num3 == 1) Main.tile[i5, j2].frameX += (short) 18; int index5 = index1; int index6 = index2; while (index5 != i5 || index6 != j2) { Main.tile[index5, index6].wire(true); if (index5 > i5) --index5; if (index5 < i5) ++index5; Main.tile[index5, index6].wire(true); if (index6 > j2) --index6; if (index6 < j2) ++index6; Main.tile[index5, index6].wire(true); } ++WorldGen.trapDiag[type, 1]; return true; } if (type == 1) { int num4 = index1; int num5 = index2 - 8; int i6 = num4 + WorldGen.genRand.Next(-1, 2); bool flag5 = true; while (flag5) { bool flag6 = true; int num6 = 0; for (int i7 = i6 - 2; i7 <= i6 + 3; ++i7) { for (int j3 = num5; j3 <= num5 + 3; ++j3) { if (!WorldGen.SolidTile(i7, j3)) flag6 = false; if (Main.tile[i7, j3].active() && (Main.tile[i7, j3].type == (ushort) 0 || Main.tile[i7, j3].type == (ushort) 1 || Main.tile[i7, j3].type == (ushort) 59)) ++num6; } } --num5; if ((double) num5 < Main.worldSurface) { ++WorldGen.trapDiag[type, 0]; return false; } if (flag6 && num6 > 2) flag5 = false; } if (index2 - num5 <= 5 || index2 - num5 >= 40) { ++WorldGen.trapDiag[type, 0]; return false; } for (int i8 = i6; i8 <= i6 + 1; ++i8) { for (int j4 = num5; j4 <= index2; ++j4) { if (WorldGen.SolidTile(i8, j4)) WorldGen.KillTile(i8, j4); } } for (int i9 = i6 - 2; i9 <= i6 + 3; ++i9) { for (int j5 = num5 - 2; j5 <= num5 + 3; ++j5) { if (WorldGen.SolidTile(i9, j5)) Main.tile[i9, j5].type = (ushort) 1; } } WorldGen.PlaceTile(index1, index2, 135, true, true, style: WorldGen.genRand.Next(2, 4)); WorldGen.PlaceTile(i6, num5 + 2, 130, true); WorldGen.PlaceTile(i6 + 1, num5 + 2, 130, true); WorldGen.PlaceTile(i6 + 1, num5 + 1, 138, true); int index7 = num5 + 2; Main.tile[i6, index7].wire(true); Main.tile[i6 + 1, index7].wire(true); int j6 = index7 + 1; WorldGen.PlaceTile(i6, j6, 130, true); WorldGen.PlaceTile(i6 + 1, j6, 130, true); Main.tile[i6, j6].wire(true); Main.tile[i6 + 1, j6].wire(true); WorldGen.PlaceTile(i6, j6 + 1, 130, true); WorldGen.PlaceTile(i6 + 1, j6 + 1, 130, true); Main.tile[i6, j6 + 1].wire(true); Main.tile[i6 + 1, j6 + 1].wire(true); int index8 = index1; int index9 = index2; while (index8 != i6 || index9 != j6) { Main.tile[index8, index9].wire(true); if (index8 > i6) --index8; if (index8 < i6) ++index8; Main.tile[index8, index9].wire(true); if (index9 > j6) --index9; if (index9 < j6) ++index9; Main.tile[index8, index9].wire(true); } ++WorldGen.trapDiag[type, 1]; return true; } if (type == 2) { int num = WorldGen.genRand.Next(4, 7); int i10 = index1 + WorldGen.genRand.Next(-1, 2); int j7 = index2; for (int index10 = 0; index10 < num; ++index10) { ++j7; if (!WorldGen.SolidTile(i10, j7)) { ++WorldGen.trapDiag[type, 0]; return false; } } for (int i11 = i10 - 2; i11 <= i10 + 2; ++i11) { for (int j8 = j7 - 2; j8 <= j7 + 2; ++j8) { if (!WorldGen.SolidTile(i11, j8)) return false; } } WorldGen.KillTile(i10, j7); Main.tile[i10, j7].active(true); Main.tile[i10, j7].type = (ushort) 141; Main.tile[i10, j7].frameX = (short) 0; Main.tile[i10, j7].frameY = (short) (18 * WorldGen.genRand.Next(2)); WorldGen.PlaceTile(index1, index2, 135, true, true, style: WorldGen.genRand.Next(2, 4)); int index11 = index1; int index12 = index2; while (index11 != i10 || index12 != j7) { Main.tile[index11, index12].wire(true); if (index11 > i10) --index11; if (index11 < i10) ++index11; Main.tile[index11, index12].wire(true); if (index12 > j7) --index12; if (index12 < j7) ++index12; Main.tile[index11, index12].wire(true); } ++WorldGen.trapDiag[type, 1]; } else if (type == 3) { int num7 = 0; int num8 = 0; for (int index13 = 0; index13 < 4; ++index13) { if (num7 < 2 && WorldGen.genRand.Next(5) == 0) { ++num7; } else { int num9 = index1; int j9 = index2; bool flag7 = false; int i12 = num8 != 0 ? num9 + WorldGen.genRand.Next(-15, 16) : num9 + WorldGen.genRand.Next(-1, 2); int num10 = WorldGen.genRand.Next(3, 6 + (num8 > 0).ToInt() * 3); for (int index14 = 0; index14 < num10; ++index14) { ++j9; if (!WorldGen.SolidTile(i12, j9)) { ++WorldGen.trapDiag[type, 0]; flag7 = true; break; } } if (!flag7) { int num11 = 2; for (int i13 = i12 - num11; i13 <= i12 + num11; ++i13) { for (int j10 = j9 - num11; j10 <= j9 + num11; ++j10) { if (!WorldGen.SolidTile(i13, j10)) { ++WorldGen.trapDiag[type, 0]; flag7 = true; break; } } if (flag7) break; } if (!flag7) { int num12 = 10; for (int i14 = i12; i14 <= i12 + 1; ++i14) { int j11 = j9; while (j11 > j9 - 20 && WorldGen.SolidTile(i14, j11)) --j11; for (int j12 = j11 - num12; j12 <= j11; ++j12) { if (WorldGen.SolidTile(i14, j12)) { ++WorldGen.trapDiag[type, 0]; flag7 = true; break; } } if (flag7) break; } if (!flag7) { WorldGen.KillTile(i12, j9); WorldGen.KillTile(i12 + 1, j9); int num13 = WorldGen.genRand.Next(2); for (int index15 = 0; index15 < 2; ++index15) { Main.tile[i12 + index15, j9].active(true); Main.tile[i12 + index15, j9].type = (ushort) 443; Main.tile[i12 + index15, j9].frameX = (short) (18 * index15 + 36 * num13); Main.tile[i12 + index15, j9].frameY = (short) 0; } WorldGen.PlaceTile(index1, index2, 135, true, true, style: WorldGen.genRand.Next(2, 4)); int index16 = index1; int index17 = index2; while (index16 != i12 || index17 != j9) { Main.tile[index16, index17].wire(true); if (index16 > i12) --index16; if (index16 < i12) ++index16; Main.tile[index16, index17].wire(true); if (index17 > j9) --index17; if (index17 < j9) ++index17; Main.tile[index16, index17].wire(true); } ++num8; ++WorldGen.trapDiag[type, 1]; } } } } } } return false; } public static int countTiles(int x, int y, bool jungle = false, bool lavaOk = false) { WorldGen.numTileCount = 0; WorldGen.lavaCount = 0; WorldGen.iceCount = 0; WorldGen.rockCount = 0; WorldGen.nextCount(x, y, jungle, lavaOk); return WorldGen.numTileCount; } public static void nextCount(int x, int y, bool jungle = false, bool lavaOk = false) { if (WorldGen.numTileCount >= WorldGen.maxTileCount) return; if (x <= 1 || x >= Main.maxTilesX - 1 || y <= 1 || y >= Main.maxTilesY - 1) { WorldGen.numTileCount = WorldGen.maxTileCount; } else { for (int index = 0; index < WorldGen.numTileCount; ++index) { if (WorldGen.countX[index] == x && WorldGen.countY[index] == y) return; } if (!jungle) { if (Main.tile[x, y].wall != (byte) 0) { WorldGen.numTileCount = WorldGen.maxTileCount; return; } if (!lavaOk) { if (Main.tile[x, y].lava() && Main.tile[x, y].liquid > (byte) 0) { ++WorldGen.lavaCount; WorldGen.numTileCount = WorldGen.maxTileCount; return; } } else if (Main.tile[x, y].lava() && Main.tile[x, y].liquid > (byte) 0) ++WorldGen.lavaCount; } if (Main.tile[x, y].active()) { if (Main.tile[x, y].type == (ushort) 1) ++WorldGen.rockCount; if (Main.tile[x, y].type == (ushort) 147 || Main.tile[x, y].type == (ushort) 161) ++WorldGen.iceCount; } if (WorldGen.SolidTile(x, y)) return; WorldGen.countX[WorldGen.numTileCount] = x; WorldGen.countY[WorldGen.numTileCount] = y; ++WorldGen.numTileCount; WorldGen.nextCount(x - 1, y, jungle, lavaOk); WorldGen.nextCount(x + 1, y, jungle, lavaOk); WorldGen.nextCount(x, y - 1, jungle, lavaOk); WorldGen.nextCount(x, y + 1, jungle, lavaOk); } } public static int countDirtTiles(int x, int y) { WorldGen.numTileCount = 0; WorldGen.nextDirtCount(x, y); return WorldGen.numTileCount; } public static void nextDirtCount(int x, int y) { if (WorldGen.numTileCount >= WorldGen.maxTileCount) return; if (x <= 1 || x >= Main.maxTilesX - 1 || y <= 1 || y >= Main.maxTilesY - 1) { WorldGen.numTileCount = WorldGen.maxTileCount; } else { for (int index = 0; index < WorldGen.numTileCount; ++index) { if (WorldGen.countX[index] == x && WorldGen.countY[index] == y) return; } if (Main.tile[x, y].active() && (Main.tile[x, y].type == (ushort) 147 || Main.tile[x, y].type == (ushort) 161)) WorldGen.numTileCount = WorldGen.maxTileCount; else if (Main.tile[x, y].wall == (byte) 78 || Main.tile[x, y].wall == (byte) 83 || Main.tile[x, y].wall == (byte) 3) { WorldGen.numTileCount = WorldGen.maxTileCount; } else { if (WorldGen.SolidTile(x, y) || Main.tile[x, y].wall != (byte) 2 && Main.tile[x, y].wall != (byte) 59) return; WorldGen.countX[WorldGen.numTileCount] = x; WorldGen.countY[WorldGen.numTileCount] = y; ++WorldGen.numTileCount; WorldGen.nextDirtCount(x - 1, y); WorldGen.nextDirtCount(x + 1, y); WorldGen.nextDirtCount(x, y - 1); WorldGen.nextDirtCount(x, y + 1); WorldGen.nextDirtCount(x - 1, y - 1); WorldGen.nextDirtCount(x - 1, y + 1); WorldGen.nextDirtCount(x + 1, y - 1); WorldGen.nextDirtCount(x + 1, y + 1); WorldGen.nextDirtCount(x - 2, y); WorldGen.nextDirtCount(x + 2, y); } } } public static bool InWorld(int x, int y, int fluff = 0) => x >= fluff && x < Main.maxTilesX - fluff && y >= fluff && y < Main.maxTilesY - fluff; public static void gemCave(int x, int y) { WorldGen.countTiles(x, y); for (int index = 0; index < 6; ++index) WorldGen.gem[index] = false; WorldGen.gem[WorldGen.genRand.Next(6)] = true; for (int index = 0; index < 6; ++index) { if (WorldGen.genRand.Next(6) == 0) WorldGen.gem[index] = true; } WorldGen.Spread.Gem(x, y); } public static int randGem() { int index = WorldGen.genRand.Next(6); while (!WorldGen.gem[index]) index = WorldGen.genRand.Next(6); return index; } public static ushort randGemTile() { if (WorldGen.genRand.Next(20) != 0) return 1; switch ((ushort) WorldGen.randGem()) { case 0: return 67; case 1: return 66; case 2: return 63; case 3: return 65; case 4: return 64; default: return 68; } } public static void randMoss() { WorldGen.mossType[0] = WorldGen.genRand.Next(5); WorldGen.mossType[1] = WorldGen.genRand.Next(5); while (WorldGen.mossType[1] == WorldGen.mossType[0]) WorldGen.mossType[1] = WorldGen.genRand.Next(5); WorldGen.mossType[2] = WorldGen.genRand.Next(5); while (WorldGen.mossType[2] == WorldGen.mossType[0] || WorldGen.mossType[2] == WorldGen.mossType[1]) WorldGen.mossType[2] = WorldGen.genRand.Next(5); } public static void setMoss(int x, int y) { int index = (double) x >= (double) Main.maxTilesX * 0.334 ? ((double) x >= (double) Main.maxTilesX * 0.667 ? 2 : 1) : 0; WorldGen.mossWall = (byte) (54 + WorldGen.mossType[index]); WorldGen.mossTile = (byte) (179 + WorldGen.mossType[index]); } public static void tileCountAndDestroy() { for (int x = 10; x < Main.maxTilesX - 10; ++x) { for (int y = 10; y < Main.maxTilesY - 10; ++y) { if (Main.tile[x, y].active() && WorldGen.tileCounter(x, y) < WorldGen.tileCounterMax) WorldGen.tileCounterKill(); } } } public static int tileCounter(int x, int y) { WorldGen.tileCounterNum = 0; WorldGen.tileCounterNext(x, y); return WorldGen.tileCounterNum; } public static void tileCounterNext(int x, int y) { if (WorldGen.tileCounterNum >= WorldGen.tileCounterMax || x < 5 || x > Main.maxTilesX - 5 || y < 5 || y > Main.maxTilesY - 5 || !Main.tile[x, y].active() || !Main.tileSolid[(int) Main.tile[x, y].type] || !TileID.Sets.CanBeClearedDuringGeneration[(int) Main.tile[x, y].type]) return; for (int index = 0; index < WorldGen.tileCounterNum; ++index) { if (WorldGen.tileCounterX[index] == x && WorldGen.tileCounterY[index] == y) return; } WorldGen.tileCounterX[WorldGen.tileCounterNum] = x; WorldGen.tileCounterY[WorldGen.tileCounterNum] = y; ++WorldGen.tileCounterNum; WorldGen.tileCounterNext(x - 1, y); WorldGen.tileCounterNext(x + 1, y); WorldGen.tileCounterNext(x, y - 1); WorldGen.tileCounterNext(x, y + 1); } public static void tileCounterKill() { for (int index1 = 0; index1 < WorldGen.tileCounterNum; ++index1) { int index2 = WorldGen.tileCounterX[index1]; int index3 = WorldGen.tileCounterY[index1]; Main.tile[index2, index3].active(false); } } private static void AddGenerationPass(string name, WorldGenLegacyMethod method) => WorldGen._generator.Append((GenPass) new PassLegacy(name, method)); private static void AddGenerationPass(string name, float weight, WorldGenLegacyMethod method) => WorldGen._generator.Append((GenPass) new PassLegacy(name, method, weight)); public static bool checkUnderground(int x, int y) { try { int num1 = 120; int num2 = 80; int num3 = 3; if ((double) y > Main.worldSurface + (double) num2) return true; if ((double) y < Main.worldSurface / 2.0) return false; int num4 = y - num2; int num5 = x - num1 / 2; int num6 = 0; if (num5 < 0) num5 = 0; if (num5 >= Main.maxTilesX - num1) num5 = Main.maxTilesX - num1 - 1; for (int i = num5; i < num5 + num1; ++i) { for (int j = num4; j < num4 + num3; ++j) { if (WorldGen.SolidTile(i, j) || Main.tile[x, y].wall > (byte) 0) ++num6; } } if ((double) num6 >= (double) (num1 * num3) * 0.8) return true; } catch { } return false; } public static int GetNextJungleChestItem() { int num = 211; switch (WorldGen.JungleItemCount % 4) { case 0: num = 211; break; case 1: num = 212; break; case 2: num = 213; break; case 3: num = 964; break; } if (WorldGen.genRand.Next(50) == 0) num = 753; else if (WorldGen.genRand.Next(30) == 0) num = 2292; else if (WorldGen.genRand.Next(20) == 0) num = 3017; ++WorldGen.JungleItemCount; return num; } public static void generateWorld(int seed, GenerationProgress customProgressObject = null) { WorldGen._lastSeed = seed; WorldGen._generator = new WorldGenerator(seed); Main.rand = new UnifiedRandom(seed); MicroBiome.ResetAll(); StructureMap structures = new StructureMap(); double worldSurface = 0.0; WorldGen.worldSurfaceLow = 0.0; double worldSurfaceHigh = 0.0; double rockLayer = 0.0; double rockLayerLow = 0.0; double rockLayerHigh = 0.0; int copper = 7; int iron = 6; int silver = 9; int gold = 8; int dungeonSide = 0; ushort jungleHut = (ushort) WorldGen.genRand.Next(5); int howFar = 0; int[] PyrX = (int[]) null; int[] PyrY = (int[]) null; int numPyr = 0; int[] snowMinX = new int[Main.maxTilesY]; int[] snowMaxX = new int[Main.maxTilesY]; int snowTop = 0; int snowBottom = 0; float dub2 = 0.0f; int skyLakes = 1; if (Main.maxTilesX > 8000) ++skyLakes; if (Main.maxTilesX > 6000) ++skyLakes; for (int index1 = 0; index1 < WorldGen.hellChestItem.Length; ++index1) { bool flag = true; while (flag) { flag = false; WorldGen.hellChestItem[index1] = WorldGen.genRand.Next(WorldGen.hellChestItem.Length); for (int index2 = 0; index2 < index1; ++index2) { if (WorldGen.hellChestItem[index2] == WorldGen.hellChestItem[index1]) flag = true; } } } WorldGen.AddGenerationPass("Reset", (WorldGenLegacyMethod) (progress => { Liquid.ReInit(); WorldGen.noTileActions = true; progress.Message = ""; WorldGen.SetupStatueList(); WorldGen.RandomizeWeather(); Main.cloudAlpha = 0.0f; Main.maxRaining = 0.0f; WorldFile.tempMaxRain = 0.0f; Main.raining = false; WorldGen.heartCount = 0; Main.checkXMas(); Main.checkHalloween(); WorldGen.gen = true; WorldGen.ResetGenerator(); WorldGen.numLarva = 0; int num = 86400; Main.slimeRainTime = (double) -WorldGen.genRand.Next(num * 2, num * 3); Main.cloudBGActive = (float) -WorldGen.genRand.Next(8640, 86400); WorldGen.CopperTierOre = (ushort) 7; WorldGen.IronTierOre = (ushort) 6; WorldGen.SilverTierOre = (ushort) 9; WorldGen.GoldTierOre = (ushort) 8; WorldGen.copperBar = 20; WorldGen.ironBar = 22; WorldGen.silverBar = 21; WorldGen.goldBar = 19; if (WorldGen.genRand.Next(2) == 0) { copper = 166; WorldGen.copperBar = 703; WorldGen.CopperTierOre = (ushort) 166; } if (WorldGen.genRand.Next(2) == 0) { iron = 167; WorldGen.ironBar = 704; WorldGen.IronTierOre = (ushort) 167; } if (WorldGen.genRand.Next(2) == 0) { silver = 168; WorldGen.silverBar = 705; WorldGen.SilverTierOre = (ushort) 168; } if (WorldGen.genRand.Next(2) == 0) { gold = 169; WorldGen.goldBar = 706; WorldGen.GoldTierOre = (ushort) 169; } WorldGen.crimson = WorldGen.genRand.Next(2) == 0; if (WorldGen.WorldGenParam_Evil == 0) WorldGen.crimson = false; if (WorldGen.WorldGenParam_Evil == 1) WorldGen.crimson = true; switch (jungleHut) { case 0: jungleHut = (ushort) 119; break; case 1: jungleHut = (ushort) 120; break; case 2: jungleHut = (ushort) 158; break; case 3: jungleHut = (ushort) 175; break; case 4: jungleHut = (ushort) 45; break; } Main.worldID = WorldGen.genRand.Next(int.MaxValue); WorldGen.RandomizeTreeStyle(); WorldGen.RandomizeCaveBackgrounds(); WorldGen.RandomizeBackgrounds(); WorldGen.RandomizeMoonState(); dungeonSide = WorldGen.genRand.Next(2) == 0 ? -1 : 1; })); WorldGen.AddGenerationPass("Terrain", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[0].Value; int num1 = 0; int num2 = 0; worldSurface = (double) Main.maxTilesY * 0.3; worldSurface *= (double) WorldGen.genRand.Next(90, 110) * 0.005; rockLayer = worldSurface + (double) Main.maxTilesY * 0.2; rockLayer *= (double) WorldGen.genRand.Next(90, 110) * 0.01; WorldGen.worldSurfaceLow = worldSurface; worldSurfaceHigh = worldSurface; rockLayerLow = rockLayer; rockLayerHigh = rockLayer; for (int index3 = 0; index3 < Main.maxTilesX; ++index3) { float num3 = (float) index3 / (float) Main.maxTilesX; progress.Set(num3); if (worldSurface < WorldGen.worldSurfaceLow) WorldGen.worldSurfaceLow = worldSurface; if (worldSurface > worldSurfaceHigh) worldSurfaceHigh = worldSurface; if (rockLayer < rockLayerLow) rockLayerLow = rockLayer; if (rockLayer > rockLayerHigh) rockLayerHigh = rockLayer; 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 ((double) index3 > (double) Main.maxTilesX * 0.43 && (double) index3 < (double) Main.maxTilesX * 0.57 && num1 >= 3) num1 = WorldGen.genRand.Next(3); if ((double) index3 > (double) Main.maxTilesX * 0.47 && (double) index3 < (double) Main.maxTilesX * 0.53) num1 = 0; switch (num1) { case 0: while (WorldGen.genRand.Next(0, 7) == 0) worldSurface += (double) WorldGen.genRand.Next(-1, 2); break; case 1: while (WorldGen.genRand.Next(0, 4) == 0) --worldSurface; while (WorldGen.genRand.Next(0, 10) == 0) ++worldSurface; break; case 2: while (WorldGen.genRand.Next(0, 4) == 0) ++worldSurface; while (WorldGen.genRand.Next(0, 10) == 0) --worldSurface; break; case 3: while (WorldGen.genRand.Next(0, 2) == 0) --worldSurface; while (WorldGen.genRand.Next(0, 6) == 0) ++worldSurface; break; case 4: while (WorldGen.genRand.Next(0, 2) == 0) ++worldSurface; while (WorldGen.genRand.Next(0, 5) == 0) --worldSurface; break; } if (worldSurface < (double) Main.maxTilesY * 0.17) { worldSurface = (double) Main.maxTilesY * 0.17; num2 = 0; } else if (worldSurface > (double) Main.maxTilesY * 0.3) { worldSurface = (double) Main.maxTilesY * 0.3; num2 = 0; } if ((index3 < 275 || index3 > Main.maxTilesX - 275) && worldSurface > (double) Main.maxTilesY * 0.25) { worldSurface = (double) Main.maxTilesY * 0.25; num2 = 1; } while (WorldGen.genRand.Next(0, 3) == 0) rockLayer += (double) WorldGen.genRand.Next(-2, 3); if (rockLayer < worldSurface + (double) Main.maxTilesY * 0.05) ++rockLayer; if (rockLayer > worldSurface + (double) Main.maxTilesY * 0.35) --rockLayer; for (int index4 = 0; (double) index4 < worldSurface; ++index4) { Main.tile[index3, index4].active(false); Main.tile[index3, index4].frameX = (short) -1; Main.tile[index3, index4].frameY = (short) -1; } for (int index5 = (int) worldSurface; index5 < Main.maxTilesY; ++index5) { if ((double) index5 < rockLayer) { Main.tile[index3, index5].active(true); Main.tile[index3, index5].type = (ushort) 0; Main.tile[index3, index5].frameX = (short) -1; Main.tile[index3, index5].frameY = (short) -1; } else { Main.tile[index3, index5].active(true); Main.tile[index3, index5].type = (ushort) 1; Main.tile[index3, index5].frameX = (short) -1; Main.tile[index3, index5].frameY = (short) -1; } } } Main.worldSurface = worldSurfaceHigh + 25.0; Main.rockLayer = rockLayerHigh; double num4 = (double) ((int) ((Main.rockLayer - Main.worldSurface) / 6.0) * 6); Main.rockLayer = Main.worldSurface + num4; 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); })); WorldGen.AddGenerationPass("Tunnels", (WorldGenLegacyMethod) (progress => { for (int index6 = 0; index6 < (int) ((double) Main.maxTilesX * 0.0015); ++index6) { int[] numArray1 = new int[10]; int[] numArray2 = new int[10]; int num = WorldGen.genRand.Next(450, Main.maxTilesX - 450); while ((double) num > (double) Main.maxTilesX * 0.449999988079071 && (double) num < (double) Main.maxTilesX * 0.550000011920929) num = WorldGen.genRand.Next(0, Main.maxTilesX); int index7 = 0; for (int index8 = 0; index8 < 10; ++index8) { int index9 = num % Main.maxTilesX; while (!Main.tile[index9, index7].active()) ++index7; numArray1[index8] = index9; numArray2[index8] = index7 - WorldGen.genRand.Next(11, 16); num = index9 + WorldGen.genRand.Next(5, 11); } for (int index10 = 0; index10 < 10; ++index10) { WorldGen.TileRunner(numArray1[index10], numArray2[index10], (double) WorldGen.genRand.Next(5, 8), WorldGen.genRand.Next(6, 9), 0, true, -2f, -0.3f); WorldGen.TileRunner(numArray1[index10], numArray2[index10], (double) WorldGen.genRand.Next(5, 8), WorldGen.genRand.Next(6, 9), 0, true, 2f, -0.3f); } } })); WorldGen.AddGenerationPass("Sand", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[1].Value; int length = WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.0008), (int) ((double) Main.maxTilesX * (1.0 / 400.0))) + 2; PyrX = new int[length]; PyrY = new int[length]; for (int index11 = 0; index11 < length; ++index11) { int num5 = WorldGen.genRand.Next(Main.maxTilesX); while ((double) num5 > (double) Main.maxTilesX * 0.400000005960464 && (double) num5 < (double) Main.maxTilesX * 0.600000023841858) num5 = WorldGen.genRand.Next(Main.maxTilesX); int num6 = WorldGen.genRand.Next(35, 90); if (index11 == 1) { float num7 = (float) (Main.maxTilesX / 4200); num6 += (int) ((double) WorldGen.genRand.Next(20, 40) * (double) num7); } if (WorldGen.genRand.Next(3) == 0) num6 *= 2; if (index11 == 1) num6 *= 2; int num8 = num5 - num6; int num9 = WorldGen.genRand.Next(35, 90); if (WorldGen.genRand.Next(3) == 0) num9 *= 2; if (index11 == 1) num9 *= 2; int num10 = num5 + num9; if (num8 < 0) num8 = 0; if (num10 > Main.maxTilesX) num10 = Main.maxTilesX; switch (index11) { case 0: num8 = 0; num10 = WorldGen.genRand.Next(260, 300); if (dungeonSide == 1) { num10 += 40; break; } break; case 2: num8 = Main.maxTilesX - WorldGen.genRand.Next(260, 300); num10 = Main.maxTilesX; if (dungeonSide == -1) { num8 -= 40; break; } break; } int num11 = WorldGen.genRand.Next(50, 100); for (int index12 = num8; index12 < num10; ++index12) { if (WorldGen.genRand.Next(2) == 0) { num11 += WorldGen.genRand.Next(-1, 2); if (num11 < 50) num11 = 50; if (num11 > 100) num11 = 100; } for (int index13 = 0; (double) index13 < Main.worldSurface; ++index13) { if (Main.tile[index12, index13].active()) { if (index12 == (num8 + num10) / 2 && WorldGen.genRand.Next(6) == 0) { PyrX[numPyr] = index12; PyrY[numPyr] = index13; ++numPyr; } int num12 = num11; if (index12 - num8 < num12) num12 = index12 - num8; if (num10 - index12 < num12) num12 = num10 - index12; int num13 = num12 + WorldGen.genRand.Next(5); for (int index14 = index13; index14 < index13 + num13; ++index14) { if (index12 > num8 + WorldGen.genRand.Next(5) && index12 < num10 - WorldGen.genRand.Next(5)) Main.tile[index12, index14].type = (ushort) 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.AddGenerationPass("Mount Caves", (WorldGenLegacyMethod) (progress => { WorldGen.numMCaves = 0; progress.Message = Lang.gen[2].Value; for (int index15 = 0; index15 < (int) ((double) Main.maxTilesX * 0.0008); ++index15) { int num = 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 index16 = 0; index16 < WorldGen.numMCaves; ++index16) { if (i > WorldGen.mCaveX[index16] - 50 && i < WorldGen.mCaveX[index16] + 50) { ++num; flag2 = false; break; } } if (num >= 200) { flag1 = true; break; } } if (!flag1) { for (int j = 0; (double) j < Main.worldSurface; ++j) { if (Main.tile[i, j].active()) { for (int index17 = i - 50; index17 < i + 50; ++index17) { for (int index18 = j - 25; index18 < j + 25; ++index18) { if (Main.tile[index17, index18].active() && (Main.tile[index17, index18].type == (ushort) 53 || Main.tile[index17, index18].type == (ushort) 151 || Main.tile[index17, index18].type == (ushort) 274)) flag1 = true; } } if (!flag1) { WorldGen.Mountinater(i, j); WorldGen.mCaveX[WorldGen.numMCaves] = i; WorldGen.mCaveY[WorldGen.numMCaves] = j; ++WorldGen.numMCaves; break; } } } } } })); WorldGen.AddGenerationPass("Dirt Wall Backgrounds", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[3].Value; for (int index19 = 1; index19 < Main.maxTilesX - 1; ++index19) { byte num14 = 2; float num15 = (float) index19 / (float) Main.maxTilesX; progress.Set(num15); bool flag = false; howFar += WorldGen.genRand.Next(-1, 2); if (howFar < 0) howFar = 0; if (howFar > 10) howFar = 10; for (int index20 = 0; (double) index20 < Main.worldSurface + 10.0 && (double) index20 <= Main.worldSurface + (double) howFar; ++index20) { if (Main.tile[index19, index20].active()) num14 = Main.tile[index19, index20].type != (ushort) 147 ? (byte) 2 : (byte) 40; if (flag && Main.tile[index19, index20].wall != (byte) 64) Main.tile[index19, index20].wall = num14; if (Main.tile[index19, index20].active() && Main.tile[index19 - 1, index20].active() && Main.tile[index19 + 1, index20].active() && Main.tile[index19, index20 + 1].active() && Main.tile[index19 - 1, index20 + 1].active() && Main.tile[index19 + 1, index20 + 1].active()) flag = true; } } })); WorldGen.AddGenerationPass("Rocks In Dirt", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[4].Value; 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(0, (int) WorldGen.worldSurfaceLow + 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) { int i = WorldGen.genRand.Next(0, Main.maxTilesX); int j = WorldGen.genRand.Next((int) WorldGen.worldSurfaceLow, (int) worldSurfaceHigh + 1); if (!Main.tile[i, j - 10].active()) j = WorldGen.genRand.Next((int) WorldGen.worldSurfaceLow, (int) worldSurfaceHigh + 1); WorldGen.TileRunner(i, j, (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) worldSurfaceHigh, (int) rockLayerHigh + 1), (double) WorldGen.genRand.Next(2, 7), WorldGen.genRand.Next(2, 23), 1); })); WorldGen.AddGenerationPass("Dirt In Rocks", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[5].Value; 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) rockLayerLow, Main.maxTilesY), (double) WorldGen.genRand.Next(2, 6), WorldGen.genRand.Next(2, 40), 0); })); WorldGen.AddGenerationPass("Clay", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[6].Value; 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) WorldGen.worldSurfaceLow), (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) WorldGen.worldSurfaceLow, (int) worldSurfaceHigh + 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) worldSurfaceHigh, (int) rockLayerHigh + 1), (double) WorldGen.genRand.Next(8, 15), WorldGen.genRand.Next(5, 50), 40); for (int index21 = 5; index21 < Main.maxTilesX - 5; ++index21) { for (int index22 = 1; (double) index22 < Main.worldSurface - 1.0; ++index22) { if (Main.tile[index21, index22].active()) { for (int index23 = index22; index23 < index22 + 5; ++index23) { if (Main.tile[index21, index23].type == (ushort) 40) Main.tile[index21, index23].type = (ushort) 0; } break; } } } })); int i2; WorldGen.AddGenerationPass("Small Holes", (WorldGenLegacyMethod) (progress => { i2 = 0; progress.Message = Lang.gen[7].Value; for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 0.0015); ++index) { float num = (float) index / ((float) (Main.maxTilesX * Main.maxTilesY) * 0.0015f); progress.Set(num); int type = -1; if (WorldGen.genRand.Next(5) == 0) type = -2; WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int) worldSurfaceHigh, 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) worldSurfaceHigh, Main.maxTilesY), (double) WorldGen.genRand.Next(8, 15), WorldGen.genRand.Next(7, 30), type); } })); WorldGen.AddGenerationPass("Dirt Layer Caves", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[8].Value; for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 3E-05); ++index) { float num = (float) index / ((float) (Main.maxTilesX * Main.maxTilesY) * 3E-05f); progress.Set(num); if (rockLayerHigh <= (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) WorldGen.worldSurfaceLow, (int) rockLayerHigh + 1), (double) WorldGen.genRand.Next(5, 15), WorldGen.genRand.Next(30, 200), type); } } })); WorldGen.AddGenerationPass("Rock Layer Caves", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[9].Value; for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 0.00013); ++index) { float num = (float) index / ((float) (Main.maxTilesX * Main.maxTilesY) * 0.00013f); progress.Set(num); if (rockLayerHigh <= (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) rockLayerHigh, Main.maxTilesY), (double) WorldGen.genRand.Next(6, 20), WorldGen.genRand.Next(50, 300), type); } } })); WorldGen.AddGenerationPass("Surface Caves", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[10].Value; for (int index = 0; index < (int) ((double) Main.maxTilesX * 0.002); ++index) { i2 = WorldGen.genRand.Next(0, Main.maxTilesX); while ((double) i2 > (double) Main.maxTilesX * 0.449999988079071 && (double) i2 < (double) Main.maxTilesX * 0.550000011920929) i2 = WorldGen.genRand.Next(0, Main.maxTilesX); for (int j = 0; (double) j < worldSurfaceHigh; ++j) { if (Main.tile[i2, j].active()) { WorldGen.TileRunner(i2, 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) { i2 = WorldGen.genRand.Next(0, Main.maxTilesX); while ((double) i2 > (double) Main.maxTilesX * 0.430000007152557 && (double) i2 < (double) Main.maxTilesX * 0.569999992847443) i2 = WorldGen.genRand.Next(0, Main.maxTilesX); for (int j = 0; (double) j < worldSurfaceHigh; ++j) { if (Main.tile[i2, j].active()) { WorldGen.TileRunner(i2, 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) { i2 = WorldGen.genRand.Next(0, Main.maxTilesX); while ((double) i2 > (double) Main.maxTilesX * 0.400000005960464 && (double) i2 < (double) Main.maxTilesX * 0.600000023841858) i2 = WorldGen.genRand.Next(0, Main.maxTilesX); for (int j = 0; (double) j < worldSurfaceHigh; ++j) { if (Main.tile[i2, j].active()) { WorldGen.TileRunner(i2, 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(i2, 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(i2, 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) { i2 = WorldGen.genRand.Next(0, Main.maxTilesX); while ((double) i2 > (double) Main.maxTilesX * 0.400000005960464 && (double) i2 < (double) Main.maxTilesX * 0.600000023841858) i2 = WorldGen.genRand.Next(0, Main.maxTilesX); for (int j = 0; (double) j < worldSurfaceHigh; ++j) { if (Main.tile[i2, j].active()) { WorldGen.TileRunner(i2, j, (double) WorldGen.genRand.Next(7, 12), WorldGen.genRand.Next(150, 250), -1, speedY: 1f, noYChange: true); break; } } } float num = (float) (Main.maxTilesX / 4200); for (int index = 0; (double) index < 5.0 * (double) num; ++index) { try { WorldGen.Caverer(WorldGen.genRand.Next(100, Main.maxTilesX - 100), WorldGen.genRand.Next((int) Main.rockLayer, Main.maxTilesY - 400)); } catch { } } })); WorldGen.AddGenerationPass("Slush Check", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[56].Value; snowTop = (int) Main.worldSurface; int num16 = WorldGen.genRand.Next(Main.maxTilesX); if (dungeonSide == 1) { while ((double) num16 < (double) Main.maxTilesX * 0.550000011920929 || (double) num16 > (double) Main.maxTilesX * 0.699999988079071) num16 = WorldGen.genRand.Next(Main.maxTilesX); } else { while ((double) num16 < (double) Main.maxTilesX * 0.300000011920929 || (double) num16 > (double) Main.maxTilesX * 0.449999988079071) num16 = WorldGen.genRand.Next(Main.maxTilesX); } int num17 = WorldGen.genRand.Next(50, 90); float num18 = (float) (Main.maxTilesX / 4200); int num19 = num17 + (int) ((double) WorldGen.genRand.Next(20, 40) * (double) num18) + (int) ((double) WorldGen.genRand.Next(20, 40) * (double) num18); int num20 = num16 - num19; int num21 = WorldGen.genRand.Next(50, 90) + (int) ((double) WorldGen.genRand.Next(20, 40) * (double) num18) + (int) ((double) WorldGen.genRand.Next(20, 40) * (double) num18); int num22 = num16 + num21; if (num20 < 0) num20 = 0; if (num22 > Main.maxTilesX) num22 = Main.maxTilesX; int num23 = 10; for (int index24 = 0; index24 <= WorldGen.lavaLine - 140; ++index24) { num20 += WorldGen.genRand.Next(-4, 4); num22 += WorldGen.genRand.Next(-3, 5); snowMinX[index24] = num20; snowMaxX[index24] = num22; for (int index25 = num20; index25 < num22; ++index25) { if (index24 < WorldGen.lavaLine - 140) { if (Main.tile[index25, index24].wall == (byte) 2) Main.tile[index25, index24].wall = (byte) 40; switch (Main.tile[index25, index24].type) { case 0: case 2: case 23: case 40: case 53: Main.tile[index25, index24].type = (ushort) 147; continue; case 1: Main.tile[index25, index24].type = (ushort) 161; continue; default: continue; } } else { num23 += WorldGen.genRand.Next(-3, 4); if (WorldGen.genRand.Next(3) == 0) { num23 += WorldGen.genRand.Next(-4, 5); if (WorldGen.genRand.Next(3) == 0) num23 += WorldGen.genRand.Next(-6, 7); } if (num23 < 0) num23 = WorldGen.genRand.Next(3); else if (num23 > 50) num23 = 50 - WorldGen.genRand.Next(3); for (int index26 = index24; index26 < index24 + num23; ++index26) { if (Main.tile[index25, index26].wall == (byte) 2) Main.tile[index25, index26].wall = (byte) 40; switch (Main.tile[index25, index26].type) { case 0: case 2: case 23: case 40: case 53: Main.tile[index25, index26].type = (ushort) 147; break; case 1: Main.tile[index25, index26].type = (ushort) 161; break; } } } } if (snowBottom < index24) snowBottom = index24; } })); WorldGen.AddGenerationPass("Grass", (WorldGenLegacyMethod) (progress => { for (int index27 = 0; index27 < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 0.002); ++index27) { int index28 = WorldGen.genRand.Next(1, Main.maxTilesX - 1); int index29 = WorldGen.genRand.Next((int) WorldGen.worldSurfaceLow, (int) worldSurfaceHigh); if (index29 >= Main.maxTilesY) index29 = Main.maxTilesY - 2; if (Main.tile[index28 - 1, index29].active() && Main.tile[index28 - 1, index29].type == (ushort) 0 && Main.tile[index28 + 1, index29].active() && Main.tile[index28 + 1, index29].type == (ushort) 0 && Main.tile[index28, index29 - 1].active() && Main.tile[index28, index29 - 1].type == (ushort) 0 && Main.tile[index28, index29 + 1].active() && Main.tile[index28, index29 + 1].type == (ushort) 0) { Main.tile[index28, index29].active(true); Main.tile[index28, index29].type = (ushort) 2; } int index30 = WorldGen.genRand.Next(1, Main.maxTilesX - 1); int index31 = WorldGen.genRand.Next(0, (int) WorldGen.worldSurfaceLow); if (index31 >= Main.maxTilesY) index31 = Main.maxTilesY - 2; if (Main.tile[index30 - 1, index31].active() && Main.tile[index30 - 1, index31].type == (ushort) 0 && Main.tile[index30 + 1, index31].active() && Main.tile[index30 + 1, index31].type == (ushort) 0 && Main.tile[index30, index31 - 1].active() && Main.tile[index30, index31 - 1].type == (ushort) 0 && Main.tile[index30, index31 + 1].active() && Main.tile[index30, index31 + 1].type == (ushort) 0) { Main.tile[index30, index31].active(true); Main.tile[index30, index31].type = (ushort) 2; } } })); WorldGen.AddGenerationPass("Jungle", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[11].Value; float num24 = (float) (Main.maxTilesX / 4200) * 1.5f; float num25 = (float) WorldGen.genRand.Next(15, 30) * 0.01f; int num26; if (dungeonSide == -1) { float num27 = 1f - num25; num26 = (int) ((double) Main.maxTilesX * (double) num27); } else num26 = (int) ((double) Main.maxTilesX * (double) num25); int num28 = (int) ((double) Main.maxTilesY + Main.rockLayer) / 2; int i1 = num26 + WorldGen.genRand.Next((int) (-100.0 * (double) num24), (int) (101.0 * (double) num24)); int j1 = num28 + WorldGen.genRand.Next((int) (-100.0 * (double) num24), (int) (101.0 * (double) num24)); int num29 = i1; int num30 = j1; WorldGen.TileRunner(i1, j1, (double) WorldGen.genRand.Next((int) (250.0 * (double) num24), (int) (500.0 * (double) num24)), WorldGen.genRand.Next(50, 150), 59, speedX: ((float) (dungeonSide * 3))); for (int index = 0; (double) index < 6.0 * (double) num24; ++index) WorldGen.TileRunner(i1 + WorldGen.genRand.Next(-(int) (125.0 * (double) num24), (int) (125.0 * (double) num24)), j1 + WorldGen.genRand.Next(-(int) (125.0 * (double) num24), (int) (125.0 * (double) num24)), (double) WorldGen.genRand.Next(3, 7), WorldGen.genRand.Next(3, 8), WorldGen.genRand.Next(63, 65)); WorldGen.mudWall = true; progress.Set(0.15f); int i3 = i1 + WorldGen.genRand.Next((int) (-250.0 * (double) num24), (int) (251.0 * (double) num24)); int j2 = j1 + WorldGen.genRand.Next((int) (-150.0 * (double) num24), (int) (151.0 * (double) num24)); int num31 = i3; int num32 = j2; int num33 = i3; int num34 = j2; WorldGen.TileRunner(i3, j2, (double) WorldGen.genRand.Next((int) (250.0 * (double) num24), (int) (500.0 * (double) num24)), WorldGen.genRand.Next(50, 150), 59); WorldGen.mudWall = false; for (int index = 0; (double) index < 6.0 * (double) num24; ++index) WorldGen.TileRunner(i3 + WorldGen.genRand.Next(-(int) (125.0 * (double) num24), (int) (125.0 * (double) num24)), j2 + WorldGen.genRand.Next(-(int) (125.0 * (double) num24), (int) (125.0 * (double) num24)), (double) WorldGen.genRand.Next(3, 7), WorldGen.genRand.Next(3, 8), WorldGen.genRand.Next(65, 67)); WorldGen.mudWall = true; progress.Set(0.3f); int i4 = i3 + WorldGen.genRand.Next((int) (-400.0 * (double) num24), (int) (401.0 * (double) num24)); int j3 = j2 + WorldGen.genRand.Next((int) (-150.0 * (double) num24), (int) (151.0 * (double) num24)); int num35 = i4; int num36 = j3; WorldGen.TileRunner(i4, j3, (double) WorldGen.genRand.Next((int) (250.0 * (double) num24), (int) (500.0 * (double) num24)), WorldGen.genRand.Next(50, 150), 59, speedX: ((float) (dungeonSide * -3))); WorldGen.mudWall = false; for (int index = 0; (double) index < 6.0 * (double) num24; ++index) WorldGen.TileRunner(i4 + WorldGen.genRand.Next(-(int) (125.0 * (double) num24), (int) (125.0 * (double) num24)), j3 + WorldGen.genRand.Next(-(int) (125.0 * (double) num24), (int) (125.0 * (double) num24)), (double) WorldGen.genRand.Next(3, 7), WorldGen.genRand.Next(3, 8), WorldGen.genRand.Next(67, 69)); WorldGen.mudWall = true; progress.Set(0.45f); int i5 = (num29 + num31 + num35) / 3; int j4 = (num30 + num32 + num36) / 3; WorldGen.TileRunner(i5, j4, (double) WorldGen.genRand.Next((int) (400.0 * (double) num24), (int) (600.0 * (double) num24)), 10000, 59, speedY: -20f, noYChange: true); WorldGen.JungleRunner(i5, j4); progress.Set(0.6f); WorldGen.mudWall = false; for (int index = 0; index < Main.maxTilesX / 4; ++index) { int i6 = WorldGen.genRand.Next(20, Main.maxTilesX - 20); int j5; for (j5 = WorldGen.genRand.Next((int) worldSurface + 10, Main.maxTilesY - 200); Main.tile[i6, j5].wall != (byte) 64 && Main.tile[i6, j5].wall != (byte) 15; j5 = WorldGen.genRand.Next((int) worldSurface + 10, Main.maxTilesY - 200)) i6 = WorldGen.genRand.Next(20, Main.maxTilesX - 20); WorldGen.MudWallRunner(i6, j5); } int i7 = num33; int j6 = num34; for (int index = 0; (double) index <= 20.0 * (double) num24; ++index) { progress.Set((float) ((60.0 + (double) index / (double) num24) * 0.00999999977648258)); i7 += WorldGen.genRand.Next((int) (-5.0 * (double) num24), (int) (6.0 * (double) num24)); j6 += WorldGen.genRand.Next((int) (-5.0 * (double) num24), (int) (6.0 * (double) num24)); WorldGen.TileRunner(i7, j6, (double) WorldGen.genRand.Next(40, 100), WorldGen.genRand.Next(300, 500), 59); } for (int index32 = 0; (double) index32 <= 10.0 * (double) num24; ++index32) { progress.Set((float) ((80.0 + (double) index32 / (double) num24 * 2.0) * 0.00999999977648258)); int i8 = num33 + WorldGen.genRand.Next((int) (-600.0 * (double) num24), (int) (600.0 * (double) num24)); int j7; for (j7 = num34 + WorldGen.genRand.Next((int) (-200.0 * (double) num24), (int) (200.0 * (double) num24)); i8 < 1 || i8 >= Main.maxTilesX - 1 || j7 < 1 || j7 >= Main.maxTilesY - 1 || Main.tile[i8, j7].type != (ushort) 59; j7 = num34 + WorldGen.genRand.Next((int) (-200.0 * (double) num24), (int) (200.0 * (double) num24))) i8 = num33 + WorldGen.genRand.Next((int) (-600.0 * (double) num24), (int) (600.0 * (double) num24)); for (int index33 = 0; (double) index33 < 8.0 * (double) num24; ++index33) { i8 += WorldGen.genRand.Next(-30, 31); j7 += WorldGen.genRand.Next(-30, 31); int type = -1; if (WorldGen.genRand.Next(7) == 0) type = -2; WorldGen.TileRunner(i8, j7, (double) WorldGen.genRand.Next(10, 20), WorldGen.genRand.Next(30, 70), type); } } for (int index = 0; (double) index <= 300.0 * (double) num24; ++index) { int i9 = num33 + WorldGen.genRand.Next((int) (-600.0 * (double) num24), (int) (600.0 * (double) num24)); int j8; for (j8 = num34 + WorldGen.genRand.Next((int) (-200.0 * (double) num24), (int) (200.0 * (double) num24)); i9 < 1 || i9 >= Main.maxTilesX - 1 || j8 < 1 || j8 >= Main.maxTilesY - 1 || Main.tile[i9, j8].type != (ushort) 59; j8 = num34 + WorldGen.genRand.Next((int) (-200.0 * (double) num24), (int) (200.0 * (double) num24))) i9 = num33 + WorldGen.genRand.Next((int) (-600.0 * (double) num24), (int) (600.0 * (double) num24)); WorldGen.TileRunner(i9, 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(i9 + WorldGen.genRand.Next(-1, 2), j8 + WorldGen.genRand.Next(-1, 2), (double) WorldGen.genRand.Next(3, 7), WorldGen.genRand.Next(4, 8), type); } } })); WorldGen.AddGenerationPass("Marble", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[80].Value; float num37 = (float) (Main.maxTilesX * Main.maxTilesY) / 5040000f; int num38 = (int) ((double) WorldGen.genRand.Next(10, 15) * (double) num37); float num39 = (float) (Main.maxTilesX - 160) / (float) num38; int num40 = 0; while (num40 < num38) { float num41 = (float) num40 / (float) num38; progress.Set(num41); if (Terraria.World.Generation.Biomes.Place(WorldGen.RandomRectanglePoint((int) ((double) num41 * (double) (Main.maxTilesX - 160)) + 80, (int) rockLayer + 20, (int) num39, Main.maxTilesY - ((int) rockLayer + 40) - 200), structures)) ++num40; } })); WorldGen.AddGenerationPass("Granite", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[81].Value; float num42 = (float) Main.maxTilesX / 4200f; int num43 = (int) ((double) WorldGen.genRand.Next(8, 14) * (double) num42); float num44 = (float) (Main.maxTilesX - 200) / (float) num43; int num45 = 0; while (num45 < num43) { float num46 = (float) num45 / (float) num43; progress.Set(num46); if (Terraria.World.Generation.Biomes.Place(WorldGen.RandomRectanglePoint((int) ((double) num46 * (double) (Main.maxTilesX - 200)) + 100, (int) rockLayer + 20, (int) num44, Main.maxTilesY - ((int) rockLayer + 40) - 200), structures)) ++num45; } })); WorldGen.AddGenerationPass("Mud Caves To Grass", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[77].Value; for (int i = 0; i < Main.maxTilesX; ++i) { for (int j = 0; j < Main.maxTilesY; ++j) { if (Main.tile[i, j].active()) { WorldGen.grassSpread = 0; WorldGen.SpreadGrass(i, j, 59, 60); } progress.Set((float) (0.200000002980232 * ((double) (i * Main.maxTilesY + j) / (double) (Main.maxTilesX * Main.maxTilesY)))); } } for (int x = 10; x < Main.maxTilesX - 10; ++x) { for (int y = 10; y < Main.maxTilesY - 10; ++y) { if (Main.tile[x, y].active() && WorldGen.tileCounter(x, y) < WorldGen.tileCounterMax) WorldGen.tileCounterKill(); float num = (float) ((x - 10) * (Main.maxTilesY - 20) + (y - 10)) / (float) ((Main.maxTilesX - 20) * (Main.maxTilesY - 20)); progress.Set((float) (0.200000002980232 + (double) num * 0.800000011920929)); } } })); WorldGen.AddGenerationPass("Full Desert", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[78].Value; int num47 = dungeonSide; int maxValue = Main.maxTilesX / 2; int num48 = WorldGen.genRand.Next(maxValue) / 8 + maxValue / 8; int x = maxValue + num48 * -num47; int num49 = 0; while (!Terraria.World.Generation.Biomes.Place(new Point(x, (int) worldSurface), structures)) { int num50 = WorldGen.genRand.Next(maxValue) / 2 + maxValue / 8; x = maxValue + num50 * -num47; if (++num49 > 1000) { num47 *= -1; num49 = 0; } } })); WorldGen.AddGenerationPass("Floating Islands", (WorldGenLegacyMethod) (progress => { WorldGen.numIslandHouses = 0; WorldGen.houseCount = 0; progress.Message = Lang.gen[12].Value; for (int index34 = 0; index34 < (int) ((double) Main.maxTilesX * 0.0008) + skyLakes; ++index34) { int num51 = 1000; int i = WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.1), (int) ((double) Main.maxTilesX * 0.9)); while (--num51 > 0) { bool flag3 = true; while (i > Main.maxTilesX / 2 - 80 && i < Main.maxTilesX / 2 + 80) i = WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.1), (int) ((double) Main.maxTilesX * 0.9)); for (int index35 = 0; index35 < WorldGen.numIslandHouses; ++index35) { if (i > WorldGen.fihX[index35] - 180 && i < WorldGen.fihX[index35] + 180) { flag3 = false; break; } } if (flag3) { bool flag4 = false; int num52 = 0; for (int index36 = 200; (double) index36 < Main.worldSurface; ++index36) { if (Main.tile[i, index36].active()) { num52 = index36; flag4 = true; break; } } if (flag4) { int j = Math.Min(WorldGen.genRand.Next(90, num52 - 100), (int) WorldGen.worldSurfaceLow - 50); if (index34 < skyLakes) { WorldGen.skyLake[WorldGen.numIslandHouses] = true; WorldGen.CloudLake(i, j); } else WorldGen.CloudIsland(i, j); WorldGen.fihX[WorldGen.numIslandHouses] = i; WorldGen.fihY[WorldGen.numIslandHouses] = j; ++WorldGen.numIslandHouses; } } } } })); WorldGen.AddGenerationPass("Mushroom Patches", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[13].Value; for (int index = 0; index < Main.maxTilesX / 500; ++index) { int num53 = 0; bool flag = true; while (flag) { int i = WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.3), (int) ((double) Main.maxTilesX * 0.7)); int j = WorldGen.genRand.Next((int) Main.rockLayer, Main.maxTilesY - 350); flag = false; int num54 = 60; for (int x = i - num54; x < i + num54; x += 3) { for (int y = j - num54; y < j + num54; y += 3) { if (Main.tile[x, y].type == (ushort) 147 || Main.tile[x, y].type == (ushort) 161 || Main.tile[x, y].type == (ushort) 162) { flag = true; break; } if (WorldGen.UndergroundDesertLocation.Contains(new Point(x, y))) { flag = true; break; } } } if (!flag) WorldGen.ShroomPatch(i, j); ++num53; if (num53 > 100) break; } } for (int i10 = 0; i10 < Main.maxTilesX; ++i10) { for (int worldSurface1 = (int) Main.worldSurface; worldSurface1 < Main.maxTilesY; ++worldSurface1) { if (Main.tile[i10, worldSurface1].active()) { WorldGen.grassSpread = 0; WorldGen.SpreadGrass(i10, worldSurface1, 59, 70, false); if (Main.tile[i10, worldSurface1].type == (ushort) 70 && WorldGen.genRand.Next(20) == 0) { int num55 = WorldGen.genRand.Next(5) != 0 ? 1 : 2; int num56 = WorldGen.genRand.Next(2, 6); int j9 = worldSurface1 - num56; bool flag = true; for (int index = i10 - num55; index <= i10 + num55; ++index) { if (Main.tile[index, j9].active()) flag = false; if (Main.tileBrick[(int) Main.tile[index, j9 - 1].type]) flag = false; if (Main.tileBrick[(int) Main.tile[index, j9 + 1].type]) flag = false; } if (Main.tile[i10 - num55 - 1, j9].type == (ushort) 190) flag = false; if (Main.tile[i10 + num55 + 1, j9].type == (ushort) 190) flag = false; for (int index = j9; index < worldSurface1; ++index) { if (Main.tile[i10, index].active()) flag = false; if (Main.tileBrick[(int) Main.tile[i10 - 1, index].type]) flag = false; if (Main.tileBrick[(int) Main.tile[i10 + 1, index].type]) flag = false; } if (flag) { for (int i11 = i10 - num55; i11 <= i10 + num55; ++i11) WorldGen.PlaceTile(i11, j9, 190, true, true); for (int j10 = j9; j10 < worldSurface1; ++j10) WorldGen.PlaceTile(i10, j10, 190, true, true); } } } } } })); WorldGen.AddGenerationPass("Mud To Dirt", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[14].Value; 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) rockLayerLow, Main.maxTilesY), (double) WorldGen.genRand.Next(2, 6), WorldGen.genRand.Next(2, 40), 59); })); WorldGen.AddGenerationPass("Silt", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[15].Value; 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) rockLayerHigh, 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) rockLayerHigh, Main.maxTilesY), (double) WorldGen.genRand.Next(2, 5), WorldGen.genRand.Next(2, 5), 123); })); WorldGen.AddGenerationPass("Shinies", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[16].Value; 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) WorldGen.worldSurfaceLow, (int) worldSurfaceHigh), (double) WorldGen.genRand.Next(3, 6), WorldGen.genRand.Next(2, 6), copper); 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) worldSurfaceHigh, (int) rockLayerHigh), (double) WorldGen.genRand.Next(3, 7), WorldGen.genRand.Next(3, 7), copper); 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) rockLayerLow, Main.maxTilesY), (double) WorldGen.genRand.Next(4, 9), WorldGen.genRand.Next(4, 8), copper); 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) WorldGen.worldSurfaceLow, (int) worldSurfaceHigh), (double) WorldGen.genRand.Next(3, 7), WorldGen.genRand.Next(2, 5), iron); 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) worldSurfaceHigh, (int) rockLayerHigh), (double) WorldGen.genRand.Next(3, 6), WorldGen.genRand.Next(3, 6), iron); 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) rockLayerLow, Main.maxTilesY), (double) WorldGen.genRand.Next(4, 9), WorldGen.genRand.Next(4, 8), iron); 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) worldSurfaceHigh, (int) rockLayerHigh), (double) WorldGen.genRand.Next(3, 6), WorldGen.genRand.Next(3, 6), silver); 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) rockLayerLow, Main.maxTilesY), (double) WorldGen.genRand.Next(4, 9), WorldGen.genRand.Next(4, 8), silver); 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) WorldGen.worldSurfaceLow), (double) WorldGen.genRand.Next(4, 9), WorldGen.genRand.Next(4, 8), silver); 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) rockLayerLow, Main.maxTilesY), (double) WorldGen.genRand.Next(4, 8), WorldGen.genRand.Next(4, 8), gold); 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) WorldGen.worldSurfaceLow - 20), (double) WorldGen.genRand.Next(4, 8), WorldGen.genRand.Next(4, 8), gold); if (WorldGen.crimson) { 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) rockLayerLow, Main.maxTilesY), (double) WorldGen.genRand.Next(2, 4), WorldGen.genRand.Next(3, 6), 204); } else { 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) rockLayerLow, Main.maxTilesY), (double) WorldGen.genRand.Next(2, 4), WorldGen.genRand.Next(3, 6), 22); } })); WorldGen.AddGenerationPass("Webs", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[17].Value; for (int index37 = 0; index37 < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 0.0006); ++index37) { int index38 = WorldGen.genRand.Next(20, Main.maxTilesX - 20); int index39 = WorldGen.genRand.Next((int) worldSurfaceHigh, Main.maxTilesY - 20); if (index37 < WorldGen.numMCaves) { index38 = WorldGen.mCaveX[index37]; index39 = WorldGen.mCaveY[index37]; } if (!Main.tile[index38, index39].active() && ((double) index39 > Main.worldSurface || Main.tile[index38, index39].wall > (byte) 0)) { while (!Main.tile[index38, index39].active() && index39 > (int) WorldGen.worldSurfaceLow) --index39; int j = index39 + 1; int num = 1; if (WorldGen.genRand.Next(2) == 0) num = -1; while (!Main.tile[index38, j].active() && index38 > 10 && index38 < Main.maxTilesX - 10) index38 += num; int i = index38 - num; if ((double) j > Main.worldSurface || Main.tile[i, j].wall > (byte) 0) WorldGen.TileRunner(i, j, (double) WorldGen.genRand.Next(4, 11), WorldGen.genRand.Next(2, 4), 51, true, (float) num, -1f, overRide: false); } } })); WorldGen.AddGenerationPass("Underworld", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[18].Value; progress.Set(0.0f); int num57 = Main.maxTilesY - WorldGen.genRand.Next(150, 190); for (int index40 = 0; index40 < Main.maxTilesX; ++index40) { num57 += WorldGen.genRand.Next(-3, 4); if (num57 < Main.maxTilesY - 190) num57 = Main.maxTilesY - 190; if (num57 > Main.maxTilesY - 160) num57 = Main.maxTilesY - 160; for (int index41 = num57 - 20 - WorldGen.genRand.Next(3); index41 < Main.maxTilesY; ++index41) { if (index41 >= num57) { Main.tile[index40, index41].active(false); Main.tile[index40, index41].lava(false); Main.tile[index40, index41].liquid = (byte) 0; } else Main.tile[index40, index41].type = (ushort) 57; } } int num58 = Main.maxTilesY - WorldGen.genRand.Next(40, 70); for (int index42 = 10; index42 < Main.maxTilesX - 10; ++index42) { num58 += WorldGen.genRand.Next(-10, 11); if (num58 > Main.maxTilesY - 60) num58 = Main.maxTilesY - 60; if (num58 < Main.maxTilesY - 100) num58 = Main.maxTilesY - 120; for (int index43 = num58; index43 < Main.maxTilesY - 10; ++index43) { if (!Main.tile[index42, index43].active()) { Main.tile[index42, index43].lava(true); Main.tile[index42, index43].liquid = byte.MaxValue; } } } for (int index44 = 0; index44 < Main.maxTilesX; ++index44) { if (WorldGen.genRand.Next(50) == 0) { int index45 = Main.maxTilesY - 65; while (!Main.tile[index44, index45].active() && index45 > Main.maxTilesY - 135) --index45; WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), index45 + 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 i = 0; i < Main.maxTilesX; ++i) { float num59 = (float) i / (float) (Main.maxTilesX - 1); progress.Set((float) ((double) num59 / 2.0 + 0.5)); if (WorldGen.genRand.Next(13) == 0) { int index = Main.maxTilesY - 65; while ((Main.tile[i, index].liquid > (byte) 0 || Main.tile[i, index].active()) && index > Main.maxTilesY - 140) --index; WorldGen.TileRunner(i, 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 num60 = (float) WorldGen.genRand.Next(1, 3); if (WorldGen.genRand.Next(3) == 0) num60 *= 0.5f; if (WorldGen.genRand.Next(2) == 0) WorldGen.TileRunner(i, index - WorldGen.genRand.Next(2, 5), (double) (int) ((double) WorldGen.genRand.Next(5, 15) * (double) num60), (int) ((double) WorldGen.genRand.Next(10, 15) * (double) num60), 57, true, 1f, 0.3f); if (WorldGen.genRand.Next(2) == 0) { float num61 = (float) WorldGen.genRand.Next(1, 3); WorldGen.TileRunner(i, index - WorldGen.genRand.Next(2, 5), (double) (int) ((double) WorldGen.genRand.Next(5, 15) * (double) num61), (int) ((double) WorldGen.genRand.Next(10, 15) * (double) num61), 57, true, -1f, 0.3f); } WorldGen.TileRunner(i + 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(i + 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(i + 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(); })); WorldGen.AddGenerationPass("Lakes", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[19].Value; int num62 = WorldGen.genRand.Next(2, (int) ((double) Main.maxTilesX * 0.005)); for (int index = 0; index < num62; ++index) { float num63 = (float) index / (float) num62; progress.Set(num63); int i = WorldGen.genRand.Next(300, Main.maxTilesX - 300); while (i > Main.maxTilesX / 2 - 100 && i < Main.maxTilesX / 2 + 100) i = WorldGen.genRand.Next(300, Main.maxTilesX - 300); int j = (int) WorldGen.worldSurfaceLow - 20; while (!Main.tile[i, j].active()) ++j; WorldGen.Lakinater(i, j); } })); WorldGen.AddGenerationPass("Dungeon", (WorldGenLegacyMethod) (progress => { int x; if (dungeonSide == -1) { x = WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.05), (int) ((double) Main.maxTilesX * 0.2)); dungeonSide = -1; } else { x = WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.8), (int) ((double) Main.maxTilesX * 0.95)); dungeonSide = 1; } int y = (int) ((Main.worldSurface + Main.rockLayer) / 2.0) + WorldGen.genRand.Next(-200, 200); WorldGen.MakeDungeon(x, y); })); WorldGen.AddGenerationPass("Corruption", (WorldGenLegacyMethod) (progress => { if (WorldGen.crimson) { progress.Message = Lang.gen[72].Value; for (int index46 = 0; (double) index46 < (double) Main.maxTilesX * 0.00045; ++index46) { float num64 = (float) index46 / ((float) Main.maxTilesX * 0.00045f); progress.Set(num64); bool flag5 = false; int i = 0; int num65 = 0; int num66 = 0; while (!flag5) { int num67 = 0; flag5 = true; int num68 = Main.maxTilesX / 2; int num69 = 200; i = dungeonSide >= 0 ? WorldGen.genRand.Next(320, Main.maxTilesX - 600) : WorldGen.genRand.Next(600, Main.maxTilesX - 320); num65 = i - WorldGen.genRand.Next(200) - 100; num66 = i + WorldGen.genRand.Next(200) + 100; if (num65 < 285) num65 = 285; if (num66 > Main.maxTilesX - 285) num66 = Main.maxTilesX - 285; if (dungeonSide < 0 && num65 < 400) num65 = 400; else if (dungeonSide > 0 && num65 > Main.maxTilesX - 400) num65 = Main.maxTilesX - 400; if (i > num68 - num69 && i < num68 + num69) flag5 = false; if (num65 > num68 - num69 && num65 < num68 + num69) flag5 = false; if (num66 > num68 - num69 && num66 < num68 + num69) flag5 = false; if (i > WorldGen.UndergroundDesertLocation.X && i < WorldGen.UndergroundDesertLocation.X + WorldGen.UndergroundDesertLocation.Width) flag5 = false; if (num65 > WorldGen.UndergroundDesertLocation.X && num65 < WorldGen.UndergroundDesertLocation.X + WorldGen.UndergroundDesertLocation.Width) flag5 = false; if (num66 > WorldGen.UndergroundDesertLocation.X && num66 < WorldGen.UndergroundDesertLocation.X + WorldGen.UndergroundDesertLocation.Width) flag5 = false; for (int index47 = num65; index47 < num66; ++index47) { for (int index48 = 0; index48 < (int) Main.worldSurface; index48 += 5) { if (Main.tile[index47, index48].active() && Main.tileDungeon[(int) Main.tile[index47, index48].type]) { flag5 = false; break; } if (!flag5) break; } } if (num67 < 200 && WorldGen.JungleX > num65 && WorldGen.JungleX < num66) { int num70 = num67 + 1; flag5 = false; } } WorldGen.CrimStart(i, (int) WorldGen.worldSurfaceLow - 10); for (int index49 = num65; index49 < num66; ++index49) { for (int worldSurfaceLow = (int) WorldGen.worldSurfaceLow; (double) worldSurfaceLow < Main.worldSurface - 1.0; ++worldSurfaceLow) { if (Main.tile[index49, worldSurfaceLow].active()) { int num71 = worldSurfaceLow + WorldGen.genRand.Next(10, 14); for (int index50 = worldSurfaceLow; index50 < num71; ++index50) { if ((Main.tile[index49, index50].type == (ushort) 59 || Main.tile[index49, index50].type == (ushort) 60) && index49 >= num65 + WorldGen.genRand.Next(5) && index49 < num66 - WorldGen.genRand.Next(5)) Main.tile[index49, index50].type = (ushort) 0; } break; } } } double num72 = Main.worldSurface + 40.0; for (int index51 = num65; index51 < num66; ++index51) { num72 += (double) WorldGen.genRand.Next(-2, 3); if (num72 < Main.worldSurface + 30.0) num72 = Main.worldSurface + 30.0; if (num72 > Main.worldSurface + 50.0) num72 = Main.worldSurface + 50.0; i2 = index51; bool flag6 = false; for (int worldSurfaceLow = (int) WorldGen.worldSurfaceLow; (double) worldSurfaceLow < num72; ++worldSurfaceLow) { if (Main.tile[i2, worldSurfaceLow].active()) { if (Main.tile[i2, worldSurfaceLow].type == (ushort) 53 && i2 >= num65 + WorldGen.genRand.Next(5) && i2 <= num66 - WorldGen.genRand.Next(5)) Main.tile[i2, worldSurfaceLow].type = (ushort) 234; if (Main.tile[i2, worldSurfaceLow].type == (ushort) 0 && (double) worldSurfaceLow < Main.worldSurface - 1.0 && !flag6) { WorldGen.grassSpread = 0; WorldGen.SpreadGrass(i2, worldSurfaceLow, grass: 199); } flag6 = true; if (Main.tile[i2, worldSurfaceLow].wall == (byte) 216) Main.tile[i2, worldSurfaceLow].wall = (byte) 218; else if (Main.tile[i2, worldSurfaceLow].wall == (byte) 187) Main.tile[i2, worldSurfaceLow].wall = (byte) 221; if (Main.tile[i2, worldSurfaceLow].type == (ushort) 1) { if (i2 >= num65 + WorldGen.genRand.Next(5) && i2 <= num66 - WorldGen.genRand.Next(5)) Main.tile[i2, worldSurfaceLow].type = (ushort) 203; } else if (Main.tile[i2, worldSurfaceLow].type == (ushort) 2) Main.tile[i2, worldSurfaceLow].type = (ushort) 199; else if (Main.tile[i2, worldSurfaceLow].type == (ushort) 161) Main.tile[i2, worldSurfaceLow].type = (ushort) 200; else if (Main.tile[i2, worldSurfaceLow].type == (ushort) 396) Main.tile[i2, worldSurfaceLow].type = (ushort) 401; else if (Main.tile[i2, worldSurfaceLow].type == (ushort) 397) Main.tile[i2, worldSurfaceLow].type = (ushort) 399; } } } int num73 = WorldGen.genRand.Next(10, 15); for (int index52 = 0; index52 < num73; ++index52) { int num74 = 0; bool flag7 = false; int num75 = 0; while (!flag7) { ++num74; int x = WorldGen.genRand.Next(num65 - num75, num66 + num75); int y = WorldGen.genRand.Next((int) (Main.worldSurface - (double) (num75 / 2)), (int) (Main.worldSurface + 100.0 + (double) num75)); if (num74 > 100) { ++num75; num74 = 0; } if (!Main.tile[x, y].active()) { while (!Main.tile[x, y].active()) ++y; --y; } else { while (Main.tile[x, y].active() && (double) y > Main.worldSurface) --y; } if (num75 > 10 || Main.tile[x, y + 1].active() && Main.tile[x, y + 1].type == (ushort) 203) { WorldGen.Place3x2(x, y, (ushort) 26, 1); if (Main.tile[x, y].type == (ushort) 26) flag7 = true; } if (num75 > 100) flag7 = true; } } } } else { progress.Message = Lang.gen[20].Value; for (int index53 = 0; (double) index53 < (double) Main.maxTilesX * 0.00045; ++index53) { float num76 = (float) index53 / ((float) Main.maxTilesX * 0.00045f); progress.Set(num76); bool flag8 = false; int num77 = 0; int num78 = 0; int num79 = 0; while (!flag8) { int num80 = 0; flag8 = true; int num81 = Main.maxTilesX / 2; int num82 = 200; num77 = WorldGen.genRand.Next(320, Main.maxTilesX - 320); num78 = num77 - WorldGen.genRand.Next(200) - 100; num79 = num77 + WorldGen.genRand.Next(200) + 100; if (num78 < 285) num78 = 285; if (num79 > Main.maxTilesX - 285) num79 = Main.maxTilesX - 285; if (num77 > num81 - num82 && num77 < num81 + num82) flag8 = false; if (num78 > num81 - num82 && num78 < num81 + num82) flag8 = false; if (num79 > num81 - num82 && num79 < num81 + num82) flag8 = false; if (num77 > WorldGen.UndergroundDesertLocation.X && num77 < WorldGen.UndergroundDesertLocation.X + WorldGen.UndergroundDesertLocation.Width) flag8 = false; if (num78 > WorldGen.UndergroundDesertLocation.X && num78 < WorldGen.UndergroundDesertLocation.X + WorldGen.UndergroundDesertLocation.Width) flag8 = false; if (num79 > WorldGen.UndergroundDesertLocation.X && num79 < WorldGen.UndergroundDesertLocation.X + WorldGen.UndergroundDesertLocation.Width) flag8 = false; for (int index54 = num78; index54 < num79; ++index54) { for (int index55 = 0; index55 < (int) Main.worldSurface; index55 += 5) { if (Main.tile[index54, index55].active() && Main.tileDungeon[(int) Main.tile[index54, index55].type]) { flag8 = false; break; } if (!flag8) break; } } if (num80 < 200 && WorldGen.JungleX > num78 && WorldGen.JungleX < num79) { int num83 = num80 + 1; flag8 = false; } } int num84 = 0; for (int i = num78; i < num79; ++i) { if (num84 > 0) --num84; if (i == num77 || num84 == 0) { for (int worldSurfaceLow = (int) WorldGen.worldSurfaceLow; (double) worldSurfaceLow < Main.worldSurface - 1.0; ++worldSurfaceLow) { if (Main.tile[i, worldSurfaceLow].active() || Main.tile[i, worldSurfaceLow].wall > (byte) 0) { if (i == num77) { num84 = 20; WorldGen.ChasmRunner(i, worldSurfaceLow, WorldGen.genRand.Next(150) + 150, true); break; } if (WorldGen.genRand.Next(35) == 0 && num84 == 0) { num84 = 30; bool makeOrb = true; WorldGen.ChasmRunner(i, worldSurfaceLow, WorldGen.genRand.Next(50) + 50, makeOrb); break; } break; } } } for (int worldSurfaceLow = (int) WorldGen.worldSurfaceLow; (double) worldSurfaceLow < Main.worldSurface - 1.0; ++worldSurfaceLow) { if (Main.tile[i, worldSurfaceLow].active()) { int num85 = worldSurfaceLow + WorldGen.genRand.Next(10, 14); for (int index56 = worldSurfaceLow; index56 < num85; ++index56) { if ((Main.tile[i, index56].type == (ushort) 59 || Main.tile[i, index56].type == (ushort) 60) && i >= num78 + WorldGen.genRand.Next(5) && i < num79 - WorldGen.genRand.Next(5)) Main.tile[i, index56].type = (ushort) 0; } break; } } } double num86 = Main.worldSurface + 40.0; for (int index57 = num78; index57 < num79; ++index57) { num86 += (double) WorldGen.genRand.Next(-2, 3); if (num86 < Main.worldSurface + 30.0) num86 = Main.worldSurface + 30.0; if (num86 > Main.worldSurface + 50.0) num86 = Main.worldSurface + 50.0; i2 = index57; bool flag9 = false; for (int worldSurfaceLow = (int) WorldGen.worldSurfaceLow; (double) worldSurfaceLow < num86; ++worldSurfaceLow) { if (Main.tile[i2, worldSurfaceLow].active()) { if (Main.tile[i2, worldSurfaceLow].type == (ushort) 53 && i2 >= num78 + WorldGen.genRand.Next(5) && i2 <= num79 - WorldGen.genRand.Next(5)) Main.tile[i2, worldSurfaceLow].type = (ushort) 112; if (Main.tile[i2, worldSurfaceLow].type == (ushort) 0 && (double) worldSurfaceLow < Main.worldSurface - 1.0 && !flag9) { WorldGen.grassSpread = 0; WorldGen.SpreadGrass(i2, worldSurfaceLow, grass: 23); } flag9 = true; if (Main.tile[i2, worldSurfaceLow].type == (ushort) 1 && i2 >= num78 + WorldGen.genRand.Next(5) && i2 <= num79 - WorldGen.genRand.Next(5)) Main.tile[i2, worldSurfaceLow].type = (ushort) 25; if (Main.tile[i2, worldSurfaceLow].wall == (byte) 216) Main.tile[i2, worldSurfaceLow].wall = (byte) 217; else if (Main.tile[i2, worldSurfaceLow].wall == (byte) 187) Main.tile[i2, worldSurfaceLow].wall = (byte) 220; if (Main.tile[i2, worldSurfaceLow].type == (ushort) 2) Main.tile[i2, worldSurfaceLow].type = (ushort) 23; if (Main.tile[i2, worldSurfaceLow].type == (ushort) 161) Main.tile[i2, worldSurfaceLow].type = (ushort) 163; else if (Main.tile[i2, worldSurfaceLow].type == (ushort) 396) Main.tile[i2, worldSurfaceLow].type = (ushort) 400; else if (Main.tile[i2, worldSurfaceLow].type == (ushort) 397) Main.tile[i2, worldSurfaceLow].type = (ushort) 398; } } } for (int index58 = num78; index58 < num79; ++index58) { for (int index59 = 0; index59 < Main.maxTilesY - 50; ++index59) { if (Main.tile[index58, index59].active() && Main.tile[index58, index59].type == (ushort) 31) { int num87 = index58 - 13; int num88 = index58 + 13; int num89 = index59 - 13; int num90 = index59 + 13; for (int index60 = num87; index60 < num88; ++index60) { if (index60 > 10 && index60 < Main.maxTilesX - 10) { for (int index61 = num89; index61 < num90; ++index61) { if (Math.Abs(index60 - index58) + Math.Abs(index61 - index59) < 9 + WorldGen.genRand.Next(11) && WorldGen.genRand.Next(3) != 0 && Main.tile[index60, index61].type != (ushort) 31) { Main.tile[index60, index61].active(true); Main.tile[index60, index61].type = (ushort) 25; if (Math.Abs(index60 - index58) <= 1 && Math.Abs(index61 - index59) <= 1) Main.tile[index60, index61].active(false); } if (Main.tile[index60, index61].type != (ushort) 31 && Math.Abs(index60 - index58) <= 2 + WorldGen.genRand.Next(3) && Math.Abs(index61 - index59) <= 2 + WorldGen.genRand.Next(3)) Main.tile[index60, index61].active(false); } } } } } } } } })); WorldGen.AddGenerationPass("Slush", (WorldGenLegacyMethod) (progress => { for (int index62 = snowTop; index62 < snowBottom; ++index62) { for (int index63 = snowMinX[index62]; index63 < snowMaxX[index62]; ++index63) { switch (Main.tile[index63, index62].type) { case 1: Main.tile[index63, index62].type = (ushort) 161; break; case 59: bool flag = true; int num = 3; for (int index64 = index63 - num; index64 <= index63 + num; ++index64) { for (int index65 = index62 - num; index65 <= index62 + num; ++index65) { if (Main.tile[index64, index65].type == (ushort) 60 || Main.tile[index64, index65].type == (ushort) 70 || Main.tile[index64, index65].type == (ushort) 71 || Main.tile[index64, index65].type == (ushort) 72) { flag = false; break; } } } if (flag) { Main.tile[index63, index62].type = (ushort) 224; break; } break; case 123: Main.tile[index63, index62].type = (ushort) 224; break; } } } })); WorldGen.AddGenerationPass("Mud Caves To Grass", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[21].Value; for (int index = 0; index < WorldGen.numMCaves; ++index) { int i = WorldGen.mCaveX[index]; int j = WorldGen.mCaveY[index]; WorldGen.CaveOpenater(i, j); WorldGen.Cavinator(i, j, WorldGen.genRand.Next(40, 50)); } })); WorldGen.AddGenerationPass("Beaches", (WorldGenLegacyMethod) (progress => { int index66 = 0; int index67 = 0; int index68 = 20; int index69 = Main.maxTilesX - 20; progress.Message = Lang.gen[22].Value; for (int index70 = 0; index70 < 2; ++index70) { if (index70 == 0) { int num91 = 0; int num92 = WorldGen.genRand.Next(125, 200) + 50; if (dungeonSide == 1) num92 = 275; int num93 = 0; float num94 = 1f; int index71 = 0; while (!Main.tile[num92 - 1, index71].active()) ++index71; index66 = index71; int num95 = index71 + WorldGen.genRand.Next(1, 5); for (int index72 = num92 - 1; index72 >= num91; --index72) { ++num93; if (num93 < 3) num94 += (float) WorldGen.genRand.Next(10, 20) * 0.2f; else if (num93 < 6) num94 += (float) WorldGen.genRand.Next(10, 20) * 0.15f; else if (num93 < 9) num94 += (float) WorldGen.genRand.Next(10, 20) * 0.1f; else if (num93 < 15) num94 += (float) WorldGen.genRand.Next(10, 20) * 0.07f; else if (num93 < 50) num94 += (float) WorldGen.genRand.Next(10, 20) * 0.05f; else if (num93 < 75) num94 += (float) WorldGen.genRand.Next(10, 20) * 0.04f; else if (num93 < 100) num94 += (float) WorldGen.genRand.Next(10, 20) * 0.03f; else if (num93 < 125) num94 += (float) WorldGen.genRand.Next(10, 20) * 0.02f; else if (num93 < 150) num94 += (float) WorldGen.genRand.Next(10, 20) * 0.01f; else if (num93 < 175) num94 += (float) WorldGen.genRand.Next(10, 20) * 0.005f; else if (num93 < 200) num94 += (float) WorldGen.genRand.Next(10, 20) * (1f / 1000f); else if (num93 < 230) num94 += (float) WorldGen.genRand.Next(10, 20) * 0.01f; else if (num93 < 235) num94 += (float) WorldGen.genRand.Next(10, 20) * 0.05f; else if (num93 < 240) num94 += (float) WorldGen.genRand.Next(10, 20) * 0.1f; else if (num93 < 245) num94 += (float) WorldGen.genRand.Next(10, 20) * 0.05f; else if (num93 < (int) byte.MaxValue) num94 += (float) WorldGen.genRand.Next(10, 20) * 0.01f; if (num93 == 235) index69 = index72; if (num93 == 235) index68 = index72; int num96 = WorldGen.genRand.Next(15, 20); for (int index73 = 0; (double) index73 < (double) num95 + (double) num94 + (double) num96; ++index73) { if ((double) index73 < (double) num95 + (double) num94 * 0.75 - 3.0) { Main.tile[index72, index73].active(false); if (index73 > num95) Main.tile[index72, index73].liquid = byte.MaxValue; else if (index73 == num95) Main.tile[index72, index73].liquid = (byte) 127; } else if (index73 > num95) { Main.tile[index72, index73].type = (ushort) 53; Main.tile[index72, index73].active(true); } Main.tile[index72, index73].wall = (byte) 0; } } } else { int index74 = Main.maxTilesX - WorldGen.genRand.Next(125, 200) - 50; int maxTilesX = Main.maxTilesX; if (dungeonSide == -1) index74 = Main.maxTilesX - 275; float num97 = 1f; int num98 = 0; int index75 = 0; while (!Main.tile[index74, index75].active()) ++index75; index67 = index75; int num99 = index75 + WorldGen.genRand.Next(1, 5); for (int index76 = index74; index76 < maxTilesX; ++index76) { ++num98; if (num98 < 3) num97 += (float) WorldGen.genRand.Next(10, 20) * 0.2f; else if (num98 < 6) num97 += (float) WorldGen.genRand.Next(10, 20) * 0.15f; else if (num98 < 9) num97 += (float) WorldGen.genRand.Next(10, 20) * 0.1f; else if (num98 < 15) num97 += (float) WorldGen.genRand.Next(10, 20) * 0.07f; else if (num98 < 50) num97 += (float) WorldGen.genRand.Next(10, 20) * 0.05f; else if (num98 < 75) num97 += (float) WorldGen.genRand.Next(10, 20) * 0.04f; else if (num98 < 100) num97 += (float) WorldGen.genRand.Next(10, 20) * 0.03f; else if (num98 < 125) num97 += (float) WorldGen.genRand.Next(10, 20) * 0.02f; else if (num98 < 150) num97 += (float) WorldGen.genRand.Next(10, 20) * 0.01f; else if (num98 < 175) num97 += (float) WorldGen.genRand.Next(10, 20) * 0.005f; else if (num98 < 200) num97 += (float) WorldGen.genRand.Next(10, 20) * (1f / 1000f); else if (num98 < 230) num97 += (float) WorldGen.genRand.Next(10, 20) * 0.01f; else if (num98 < 235) num97 += (float) WorldGen.genRand.Next(10, 20) * 0.05f; else if (num98 < 240) num97 += (float) WorldGen.genRand.Next(10, 20) * 0.1f; else if (num98 < 245) num97 += (float) WorldGen.genRand.Next(10, 20) * 0.05f; else if (num98 < (int) byte.MaxValue) num97 += (float) WorldGen.genRand.Next(10, 20) * 0.01f; if (num98 == 235) index69 = index76; int num100 = WorldGen.genRand.Next(15, 20); for (int index77 = 0; (double) index77 < (double) num99 + (double) num97 + (double) num100; ++index77) { if ((double) index77 < (double) num99 + (double) num97 * 0.75 - 3.0 && (double) index77 < Main.worldSurface - 2.0) { Main.tile[index76, index77].active(false); if (index77 > num99) Main.tile[index76, index77].liquid = byte.MaxValue; else if (index77 == num99) Main.tile[index76, index77].liquid = (byte) 127; } else if (index77 > num99) { Main.tile[index76, index77].type = (ushort) 53; Main.tile[index76, index77].active(true); } Main.tile[index76, index77].wall = (byte) 0; } } } } while (!Main.tile[index68, index66].active()) ++index66; int num101 = index66 + 1; while (!Main.tile[index69, index67].active()) ++index67; int num102 = index67 + 1; })); WorldGen.AddGenerationPass("Gems", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[23].Value; for (int type = 63; type <= 68; ++type) { float num103 = 0.0f; switch (type) { case 63: num103 = (float) Main.maxTilesX * 0.3f; break; case 64: num103 = (float) Main.maxTilesX * 0.1f; break; case 65: num103 = (float) Main.maxTilesX * 0.25f; break; case 66: num103 = (float) Main.maxTilesX * 0.45f; break; case 67: num103 = (float) Main.maxTilesX * 0.5f; break; case 68: num103 = (float) Main.maxTilesX * 0.05f; break; } float num104 = num103 * 0.2f; for (int index = 0; (double) index < (double) num104; ++index) { int i = WorldGen.genRand.Next(0, Main.maxTilesX); int j; for (j = WorldGen.genRand.Next((int) Main.worldSurface, Main.maxTilesY); Main.tile[i, j].type != (ushort) 1; j = WorldGen.genRand.Next((int) Main.worldSurface, Main.maxTilesY)) i = WorldGen.genRand.Next(0, Main.maxTilesX); WorldGen.TileRunner(i, j, (double) WorldGen.genRand.Next(2, 6), WorldGen.genRand.Next(3, 7), type); } } for (int index78 = 0; index78 < 2; ++index78) { int num105 = 1; int num106 = 5; int num107 = Main.maxTilesX - 5; if (index78 == 1) { num105 = -1; num106 = Main.maxTilesX - 5; num107 = 5; } for (int index79 = num106; index79 != num107; index79 += num105) { for (int index80 = 10; index80 < Main.maxTilesY - 10; ++index80) { if (Main.tile[index79, index80].active() && Main.tile[index79, index80 + 1].active() && Main.tileSand[(int) Main.tile[index79, index80].type] && Main.tileSand[(int) Main.tile[index79, index80 + 1].type]) { ushort type = Main.tile[index79, index80].type; int index81 = index79 + num105; int index82 = index80 + 1; if (!Main.tile[index81, index80].active() && !Main.tile[index81, index80 + 1].active()) { while (!Main.tile[index81, index82].active()) ++index82; int index83 = index82 - 1; Main.tile[index79, index80].active(false); Main.tile[index81, index83].active(true); Main.tile[index81, index83].type = type; } } } } } })); WorldGen.AddGenerationPass("Gravitating Sand", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[24].Value; for (int x = 0; x < Main.maxTilesX; ++x) { float num108 = (float) x / (float) (Main.maxTilesX - 1); progress.Set(num108); bool flag = false; int num109 = 0; for (int y = Main.maxTilesY - 1; y > 0; --y) { if (WorldGen.SolidOrSlopedTile(x, y)) { ushort type = Main.tile[x, y].type; if (flag && y < (int) Main.worldSurface && y != num109 - 1 && TileID.Sets.Falling[(int) type]) { for (int index = y; index < num109; ++index) { Main.tile[x, index].type = type; Main.tile[x, index].active(true); } } flag = true; num109 = y; } } } })); WorldGen.AddGenerationPass("Clean Up Dirt", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[25].Value; for (int index84 = 3; index84 < Main.maxTilesX - 3; ++index84) { float num = (float) index84 / (float) Main.maxTilesX; progress.Set(0.5f * num); bool flag = true; for (int index85 = 0; (double) index85 < Main.worldSurface; ++index85) { if (flag) { if (Main.tile[index84, index85].wall == (byte) 2 || Main.tile[index84, index85].wall == (byte) 40 || Main.tile[index84, index85].wall == (byte) 64) Main.tile[index84, index85].wall = (byte) 0; if (Main.tile[index84, index85].type != (ushort) 53 && Main.tile[index84, index85].type != (ushort) 112 && Main.tile[index84, index85].type != (ushort) 234) { if (Main.tile[index84 - 1, index85].wall == (byte) 2 || Main.tile[index84 - 1, index85].wall == (byte) 40 || Main.tile[index84 - 1, index85].wall == (byte) 40) Main.tile[index84 - 1, index85].wall = (byte) 0; if ((Main.tile[index84 - 2, index85].wall == (byte) 2 || Main.tile[index84 - 2, index85].wall == (byte) 40 || Main.tile[index84 - 2, index85].wall == (byte) 40) && WorldGen.genRand.Next(2) == 0) Main.tile[index84 - 2, index85].wall = (byte) 0; if ((Main.tile[index84 - 3, index85].wall == (byte) 2 || Main.tile[index84 - 3, index85].wall == (byte) 40 || Main.tile[index84 - 3, index85].wall == (byte) 40) && WorldGen.genRand.Next(2) == 0) Main.tile[index84 - 3, index85].wall = (byte) 0; if (Main.tile[index84 + 1, index85].wall == (byte) 2 || Main.tile[index84 + 1, index85].wall == (byte) 40 || Main.tile[index84 + 1, index85].wall == (byte) 40) Main.tile[index84 + 1, index85].wall = (byte) 0; if ((Main.tile[index84 + 2, index85].wall == (byte) 2 || Main.tile[index84 + 2, index85].wall == (byte) 40 || Main.tile[index84 + 2, index85].wall == (byte) 40) && WorldGen.genRand.Next(2) == 0) Main.tile[index84 + 2, index85].wall = (byte) 0; if ((Main.tile[index84 + 3, index85].wall == (byte) 2 || Main.tile[index84 + 3, index85].wall == (byte) 40 || Main.tile[index84 + 3, index85].wall == (byte) 40) && WorldGen.genRand.Next(2) == 0) Main.tile[index84 + 3, index85].wall = (byte) 0; if (Main.tile[index84, index85].active()) flag = false; } } else if (Main.tile[index84, index85].wall == (byte) 0 && Main.tile[index84, index85 + 1].wall == (byte) 0 && Main.tile[index84, index85 + 2].wall == (byte) 0 && Main.tile[index84, index85 + 3].wall == (byte) 0 && Main.tile[index84, index85 + 4].wall == (byte) 0 && Main.tile[index84 - 1, index85].wall == (byte) 0 && Main.tile[index84 + 1, index85].wall == (byte) 0 && Main.tile[index84 - 2, index85].wall == (byte) 0 && Main.tile[index84 + 2, index85].wall == (byte) 0 && !Main.tile[index84, index85].active() && !Main.tile[index84, index85 + 1].active() && !Main.tile[index84, index85 + 2].active() && !Main.tile[index84, index85 + 3].active()) flag = true; } } for (int index86 = Main.maxTilesX - 5; index86 >= 5; --index86) { float num = (float) index86 / (float) Main.maxTilesX; progress.Set((float) (1.0 - 0.5 * (double) num)); bool flag = true; for (int index87 = 0; (double) index87 < Main.worldSurface; ++index87) { if (flag) { if (Main.tile[index86, index87].wall == (byte) 2 || Main.tile[index86, index87].wall == (byte) 40 || Main.tile[index86, index87].wall == (byte) 64) Main.tile[index86, index87].wall = (byte) 0; if (Main.tile[index86, index87].type != (ushort) 53) { if (Main.tile[index86 - 1, index87].wall == (byte) 2 || Main.tile[index86 - 1, index87].wall == (byte) 40 || Main.tile[index86 - 1, index87].wall == (byte) 40) Main.tile[index86 - 1, index87].wall = (byte) 0; if ((Main.tile[index86 - 2, index87].wall == (byte) 2 || Main.tile[index86 - 2, index87].wall == (byte) 40 || Main.tile[index86 - 2, index87].wall == (byte) 40) && WorldGen.genRand.Next(2) == 0) Main.tile[index86 - 2, index87].wall = (byte) 0; if ((Main.tile[index86 - 3, index87].wall == (byte) 2 || Main.tile[index86 - 3, index87].wall == (byte) 40 || Main.tile[index86 - 3, index87].wall == (byte) 40) && WorldGen.genRand.Next(2) == 0) Main.tile[index86 - 3, index87].wall = (byte) 0; if (Main.tile[index86 + 1, index87].wall == (byte) 2 || Main.tile[index86 + 1, index87].wall == (byte) 40 || Main.tile[index86 + 1, index87].wall == (byte) 40) Main.tile[index86 + 1, index87].wall = (byte) 0; if ((Main.tile[index86 + 2, index87].wall == (byte) 2 || Main.tile[index86 + 2, index87].wall == (byte) 40 || Main.tile[index86 + 2, index87].wall == (byte) 40) && WorldGen.genRand.Next(2) == 0) Main.tile[index86 + 2, index87].wall = (byte) 0; if ((Main.tile[index86 + 3, index87].wall == (byte) 2 || Main.tile[index86 + 3, index87].wall == (byte) 40 || Main.tile[index86 + 3, index87].wall == (byte) 40) && WorldGen.genRand.Next(2) == 0) Main.tile[index86 + 3, index87].wall = (byte) 0; if (Main.tile[index86, index87].active()) flag = false; } } else if (Main.tile[index86, index87].wall == (byte) 0 && Main.tile[index86, index87 + 1].wall == (byte) 0 && Main.tile[index86, index87 + 2].wall == (byte) 0 && Main.tile[index86, index87 + 3].wall == (byte) 0 && Main.tile[index86, index87 + 4].wall == (byte) 0 && Main.tile[index86 - 1, index87].wall == (byte) 0 && Main.tile[index86 + 1, index87].wall == (byte) 0 && Main.tile[index86 - 2, index87].wall == (byte) 0 && Main.tile[index86 + 2, index87].wall == (byte) 0 && !Main.tile[index86, index87].active() && !Main.tile[index86, index87 + 1].active() && !Main.tile[index86, index87 + 2].active() && !Main.tile[index86, index87 + 3].active()) flag = true; } } })); WorldGen.AddGenerationPass("Pyramids", (WorldGenLegacyMethod) (progress => { for (int index88 = 0; index88 < numPyr; ++index88) { int i = PyrX[index88]; int index89 = PyrY[index88]; if (i > 300 && i < Main.maxTilesX - 300 && (dungeonSide >= 0 || (double) i >= (double) WorldGen.dungeonX + (double) Main.maxTilesX * 0.15) && (dungeonSide <= 0 || (double) i <= (double) WorldGen.dungeonX - (double) Main.maxTilesX * 0.15)) { while (!Main.tile[i, index89].active() && (double) index89 < Main.worldSurface) ++index89; if ((double) index89 < Main.worldSurface && Main.tile[i, index89].type == (ushort) 53) { int num110 = Main.maxTilesX; for (int index90 = 0; index90 < index88; ++index90) { int num111 = Math.Abs(i - PyrX[index90]); if (num111 < num110) num110 = num111; } if (num110 >= 250) { int j = index89 - 1; WorldGen.Pyramid(i, j); } } } } })); WorldGen.AddGenerationPass("Dirt Rock Wall Runner", (WorldGenLegacyMethod) (progress => { for (int index = 0; index < Main.maxTilesX; ++index) { int i = WorldGen.genRand.Next(10, Main.maxTilesX - 10); int j = WorldGen.genRand.Next(10, (int) Main.worldSurface); if (Main.tile[i, j].wall == (byte) 2) WorldGen.DirtyRockRunner(i, j); } })); WorldGen.AddGenerationPass("Living Trees", (WorldGenLegacyMethod) (progress => { int num112 = WorldGen.genRand.Next(0, (int) (3.0 * (double) (Main.maxTilesX / 4200))); for (int index91 = 0; index91 < num112; ++index91) { bool flag10 = false; int num113 = 0; while (!flag10) { ++num113; if (num113 > 1000) flag10 = true; int i = WorldGen.genRand.Next(300, Main.maxTilesX - 300); if (i <= Main.maxTilesX / 2 - 100 || i >= Main.maxTilesX / 2 + 100) { int index92 = 0; while (!Main.tile[i, index92].active() && (double) index92 < Main.worldSurface) ++index92; if (Main.tile[i, index92].type == (ushort) 0) { int j = index92 - 1; if (j > 150) { bool flag11 = true; for (int index93 = i - 50; index93 < i + 50; ++index93) { for (int index94 = j - 50; index94 < j + 50; ++index94) { if (Main.tile[index93, index94].active()) { switch (Main.tile[index93, index94].type) { case 41: case 43: case 44: case 189: case 196: flag11 = false; continue; default: continue; } } } } if (flag11) flag10 = WorldGen.GrowLivingTree(i, j); } } } } } Main.tileSolid[192] = false; })); WorldGen.AddGenerationPass("Wood Tree Walls", (WorldGenLegacyMethod) (progress => { for (int index95 = 25; index95 < Main.maxTilesX - 25; ++index95) { for (int index96 = 25; (double) index96 < Main.worldSurface; ++index96) { if (Main.tile[index95, index96].type == (ushort) 191 || Main.tile[index95, index96 - 1].type == (ushort) 191 || Main.tile[index95 - 1, index96].type == (ushort) 191 || Main.tile[index95 + 1, index96].type == (ushort) 191 || Main.tile[index95, index96 + 1].type == (ushort) 191) { bool flag = true; for (int index97 = index95 - 1; index97 <= index95 + 1; ++index97) { for (int index98 = index96 - 1; index98 <= index96 + 1; ++index98) { if (index97 != index95 && index98 != index96 && Main.tile[index97, index98].type != (ushort) 191 && Main.tile[index97, index98].wall != (byte) 78) flag = false; } } if (flag) Main.tile[index95, index96].wall = (byte) 78; } } } })); WorldGen.AddGenerationPass("Altars", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[26].Value; int num = (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 1.99999994947575E-05); for (int index99 = 0; index99 < num; ++index99) { progress.Set((float) index99 / (float) num); for (int index100 = 0; index100 < 10000; ++index100) { int x = WorldGen.genRand.Next(1, Main.maxTilesX - 3); int y = (int) (worldSurfaceHigh + 20.0); int style = WorldGen.crimson ? 1 : 0; WorldGen.Place3x2(x, y, (ushort) 26, style); if (Main.tile[x, y].type == (ushort) 26) break; } } })); WorldGen.AddGenerationPass("Wet Jungle", (WorldGenLegacyMethod) (progress => { for (int index = 0; index < Main.maxTilesX; ++index) { i2 = index; for (int worldSurfaceLow = (int) WorldGen.worldSurfaceLow; (double) worldSurfaceLow < Main.worldSurface - 1.0; ++worldSurfaceLow) { if (Main.tile[i2, worldSurfaceLow].active()) { if (Main.tile[i2, worldSurfaceLow].type == (ushort) 60) { Main.tile[i2, worldSurfaceLow - 1].liquid = byte.MaxValue; Main.tile[i2, worldSurfaceLow - 2].liquid = byte.MaxValue; break; } break; } } } })); WorldGen.AddGenerationPass("Remove Water From Sand", (WorldGenLegacyMethod) (progress => { label_10: for (int index101 = 400; index101 < Main.maxTilesX - 400; ++index101) { i2 = index101; for (int worldSurfaceLow = (int) WorldGen.worldSurfaceLow; (double) worldSurfaceLow < Main.worldSurface - 1.0; ++worldSurfaceLow) { if (Main.tile[i2, worldSurfaceLow].active()) { switch (Main.tile[i2, worldSurfaceLow].type) { case 53: case 396: case 397: case 404: case 407: int index102 = worldSurfaceLow; while ((double) index102 > WorldGen.worldSurfaceLow) { --index102; Main.tile[i2, index102].liquid = (byte) 0; } goto label_10; default: goto label_10; } } } } Main.tileSolid[192] = true; })); WorldGen.AddGenerationPass("Jungle Temple", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[70].Value; bool flag = true; while (flag) { int y = WorldGen.genRand.Next((int) Main.rockLayer, Main.maxTilesY - 500); int x = dungeonSide >= 0 ? WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.15), (int) ((double) Main.maxTilesX * 0.4)) : WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.6), (int) ((double) Main.maxTilesX * 0.85)); if (Main.tile[x, y].active() && Main.tile[x, y].type == (ushort) 60) { flag = false; WorldGen.makeTemple(x, y); } } })); WorldGen.AddGenerationPass("Hives", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[71].Value; float num114 = (float) (Main.maxTilesX / 4200); float num115 = (float) (1 + WorldGen.genRand.Next((int) (5.0 * (double) num114), (int) (8.0 * (double) num114))); int num116 = 10000; label_6: while ((double) num115 > 0.0 && num116 > 0) { --num116; Point origin = WorldGen.RandomWorldPoint((int) (Main.worldSurface + Main.rockLayer) >> 1, 20, 300, 20); if (Terraria.World.Generation.Biomes.Place(origin, structures)) { --num115; int num117 = WorldGen.genRand.Next(5); int num118 = 0; int num119 = 10000; while (true) { int x; int y; do { if (num118 < num117 && num119 > 0) { float num120 = (float) ((double) WorldGen.genRand.NextFloat() * 60.0 + 30.0); double a; x = (int) (Math.Cos(a = (double) WorldGen.genRand.NextFloat() * 6.28318548202515) * (double) num120) + origin.X; y = (int) (Math.Sin(a) * (double) num120) + origin.Y; --num119; } else goto label_6; } while (x <= 50 || x >= Main.maxTilesX - 50 || !Terraria.World.Generation.Biomes.Place(x, y, structures)); ++num118; } } } })); WorldGen.AddGenerationPass("Jungle Chests", (WorldGenLegacyMethod) (progress => { WorldGen.genRand.Next(40, Main.maxTilesX - 40); WorldGen.genRand.Next((int) (Main.worldSurface + Main.rockLayer) / 2, Main.maxTilesY - 400); float num121 = (float) WorldGen.genRand.Next(7, 12) * (float) (Main.maxTilesX / 4200); for (int index103 = 0; (double) index103 < (double) num121; ++index103) { bool flag12 = true; while (flag12) { int index104 = WorldGen.genRand.Next(40, Main.maxTilesX / 2 - 40); if (dungeonSide < 0) index104 += Main.maxTilesX / 2; int index105 = WorldGen.genRand.Next((int) (Main.worldSurface + Main.rockLayer) / 2, Main.maxTilesY - 400); if (Main.tile[index104, index105].type == (ushort) 60) { int num122 = 30; flag12 = false; for (int index106 = index104 - num122; index106 < index104 + num122; index106 += 3) { for (int index107 = index105 - num122; index107 < index105 + num122; index107 += 3) { if (Main.tile[index106, index107].active() && (Main.tile[index106, index107].type == (ushort) 225 || Main.tile[index106, index107].type == (ushort) 229 || Main.tile[index106, index107].type == (ushort) 226 || Main.tile[index106, index107].type == (ushort) 119 || Main.tile[index106, index107].type == (ushort) 120)) flag12 = false; if (Main.tile[index106, index107].wall == (byte) 86 || Main.tile[index106, index107].wall == (byte) 87) flag12 = false; } } } if (!flag12) { int num123 = WorldGen.genRand.Next(2, 4); int num124 = WorldGen.genRand.Next(2, 4); int num125 = 0; switch (jungleHut) { case 45: num125 = 10; break; case 119: num125 = 23; break; case 120: num125 = 24; break; case 158: num125 = 42; break; case 175: num125 = 45; break; } for (int index108 = index104 - num123 - 1; index108 <= index104 + num123 + 1; ++index108) { for (int index109 = index105 - num124 - 1; index109 <= index105 + num124 + 1; ++index109) { Main.tile[index108, index109].active(true); Main.tile[index108, index109].type = jungleHut; Main.tile[index108, index109].liquid = (byte) 0; Main.tile[index108, index109].lava(false); } } for (int index110 = index104 - num123; index110 <= index104 + num123; ++index110) { for (int index111 = index105 - num124; index111 <= index105 + num124; ++index111) { Main.tile[index110, index111].active(false); Main.tile[index110, index111].wall = (byte) num125; } } bool flag13 = false; int num126 = 0; while (!flag13 && num126 < 100) { ++num126; int i = WorldGen.genRand.Next(index104 - num123, index104 + num123 + 1); int j = WorldGen.genRand.Next(index105 - num124, index105 + num124 - 2); WorldGen.PlaceTile(i, j, 4, true, style: 3); if (Main.tile[i, j].type == (ushort) 4) flag13 = true; } for (int index112 = index104 - num123 - 1; index112 <= index104 + num123 + 1; ++index112) { for (int index113 = index105 + num124 - 2; index113 <= index105 + num124; ++index113) Main.tile[index112, index113].active(false); } for (int index114 = index104 - num123 - 1; index114 <= index104 + num123 + 1; ++index114) { for (int index115 = index105 + num124 - 2; index115 <= index105 + num124 - 1; ++index115) Main.tile[index114, index115].active(false); } for (int index116 = index104 - num123 - 1; index116 <= index104 + num123 + 1; ++index116) { int num127 = 4; for (int index117 = index105 + num124 + 2; !Main.tile[index116, index117].active() && index117 < Main.maxTilesY && num127 > 0; --num127) { Main.tile[index116, index117].active(true); Main.tile[index116, index117].type = (ushort) 59; ++index117; } } int num128 = num123 - WorldGen.genRand.Next(1, 3); int index118 = index105 - num124 - 2; while (num128 > -1) { for (int index119 = index104 - num128 - 1; index119 <= index104 + num128 + 1; ++index119) { Main.tile[index119, index118].active(true); Main.tile[index119, index118].type = jungleHut; } num128 -= WorldGen.genRand.Next(1, 3); --index118; } WorldGen.JChestX[WorldGen.numJChests] = index104; WorldGen.JChestY[WorldGen.numJChests] = index105; ++WorldGen.numJChests; } } } Main.tileSolid[137] = false; })); WorldGen.AddGenerationPass("Smooth World", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[60].Value; for (int index120 = 20; index120 < Main.maxTilesX - 20; ++index120) { float num = (float) index120 / (float) Main.maxTilesX; progress.Set(num); for (int index121 = 20; index121 < Main.maxTilesY - 20; ++index121) { if (Main.tile[index120, index121].type != (ushort) 48 && Main.tile[index120, index121].type != (ushort) 137 && Main.tile[index120, index121].type != (ushort) 232 && Main.tile[index120, index121].type != (ushort) 191 && Main.tile[index120, index121].type != (ushort) 151 && Main.tile[index120, index121].type != (ushort) 274) { if (!Main.tile[index120, index121 - 1].active()) { if (WorldGen.SolidTile(index120, index121) && TileID.Sets.CanBeClearedDuringGeneration[(int) Main.tile[index120, index121].type]) { if (!Main.tile[index120 - 1, index121].halfBrick() && !Main.tile[index120 + 1, index121].halfBrick() && Main.tile[index120 - 1, index121].slope() == (byte) 0 && Main.tile[index120 + 1, index121].slope() == (byte) 0) { if (WorldGen.SolidTile(index120, index121 + 1)) { if (!WorldGen.SolidTile(index120 - 1, index121) && !Main.tile[index120 - 1, index121 + 1].halfBrick() && WorldGen.SolidTile(index120 - 1, index121 + 1) && WorldGen.SolidTile(index120 + 1, index121) && !Main.tile[index120 + 1, index121 - 1].active()) { if (WorldGen.genRand.Next(2) == 0) WorldGen.SlopeTile(index120, index121, 2); else WorldGen.PoundTile(index120, index121); } else if (!WorldGen.SolidTile(index120 + 1, index121) && !Main.tile[index120 + 1, index121 + 1].halfBrick() && WorldGen.SolidTile(index120 + 1, index121 + 1) && WorldGen.SolidTile(index120 - 1, index121) && !Main.tile[index120 - 1, index121 - 1].active()) { if (WorldGen.genRand.Next(2) == 0) WorldGen.SlopeTile(index120, index121, 1); else WorldGen.PoundTile(index120, index121); } else if (WorldGen.SolidTile(index120 + 1, index121 + 1) && WorldGen.SolidTile(index120 - 1, index121 + 1) && !Main.tile[index120 + 1, index121].active() && !Main.tile[index120 - 1, index121].active()) WorldGen.PoundTile(index120, index121); if (WorldGen.SolidTile(index120, index121)) { if (WorldGen.SolidTile(index120 - 1, index121) && WorldGen.SolidTile(index120 + 1, index121 + 2) && !Main.tile[index120 + 1, index121].active() && !Main.tile[index120 + 1, index121 + 1].active() && !Main.tile[index120 - 1, index121 - 1].active()) WorldGen.KillTile(index120, index121); else if (WorldGen.SolidTile(index120 + 1, index121) && WorldGen.SolidTile(index120 - 1, index121 + 2) && !Main.tile[index120 - 1, index121].active() && !Main.tile[index120 - 1, index121 + 1].active() && !Main.tile[index120 + 1, index121 - 1].active()) WorldGen.KillTile(index120, index121); else if (!Main.tile[index120 - 1, index121 + 1].active() && !Main.tile[index120 - 1, index121].active() && WorldGen.SolidTile(index120 + 1, index121) && WorldGen.SolidTile(index120, index121 + 2)) { if (WorldGen.genRand.Next(5) == 0) WorldGen.KillTile(index120, index121); else if (WorldGen.genRand.Next(5) == 0) WorldGen.PoundTile(index120, index121); else WorldGen.SlopeTile(index120, index121, 2); } else if (!Main.tile[index120 + 1, index121 + 1].active() && !Main.tile[index120 + 1, index121].active() && WorldGen.SolidTile(index120 - 1, index121) && WorldGen.SolidTile(index120, index121 + 2)) { if (WorldGen.genRand.Next(5) == 0) WorldGen.KillTile(index120, index121); else if (WorldGen.genRand.Next(5) == 0) WorldGen.PoundTile(index120, index121); else WorldGen.SlopeTile(index120, index121, 1); } } } if (WorldGen.SolidTile(index120, index121) && !Main.tile[index120 - 1, index121].active() && !Main.tile[index120 + 1, index121].active()) WorldGen.KillTile(index120, index121); } } else if (!Main.tile[index120, index121].active() && Main.tile[index120, index121 + 1].type != (ushort) 151 && Main.tile[index120, index121 + 1].type != (ushort) 274) { if (Main.tile[index120 + 1, index121].type != (ushort) 190 && Main.tile[index120 + 1, index121].type != (ushort) 48 && Main.tile[index120 + 1, index121].type != (ushort) 232 && WorldGen.SolidTile(index120 - 1, index121 + 1) && WorldGen.SolidTile(index120 + 1, index121) && !Main.tile[index120 - 1, index121].active() && !Main.tile[index120 + 1, index121 - 1].active()) { WorldGen.PlaceTile(index120, index121, (int) Main.tile[index120, index121 + 1].type); if (WorldGen.genRand.Next(2) == 0) WorldGen.SlopeTile(index120, index121, 2); else WorldGen.PoundTile(index120, index121); } if (Main.tile[index120 - 1, index121].type != (ushort) 190 && Main.tile[index120 - 1, index121].type != (ushort) 48 && Main.tile[index120 - 1, index121].type != (ushort) 232 && WorldGen.SolidTile(index120 + 1, index121 + 1) && WorldGen.SolidTile(index120 - 1, index121) && !Main.tile[index120 + 1, index121].active() && !Main.tile[index120 - 1, index121 - 1].active()) { WorldGen.PlaceTile(index120, index121, (int) Main.tile[index120, index121 + 1].type); if (WorldGen.genRand.Next(2) == 0) WorldGen.SlopeTile(index120, index121, 1); else WorldGen.PoundTile(index120, index121); } } } else if (!Main.tile[index120, index121 + 1].active() && WorldGen.genRand.Next(2) == 0 && WorldGen.SolidTile(index120, index121) && !Main.tile[index120 - 1, index121].halfBrick() && !Main.tile[index120 + 1, index121].halfBrick() && Main.tile[index120 - 1, index121].slope() == (byte) 0 && Main.tile[index120 + 1, index121].slope() == (byte) 0 && WorldGen.SolidTile(index120, index121 - 1)) { if (WorldGen.SolidTile(index120 - 1, index121) && !WorldGen.SolidTile(index120 + 1, index121) && WorldGen.SolidTile(index120 - 1, index121 - 1)) WorldGen.SlopeTile(index120, index121, 3); else if (WorldGen.SolidTile(index120 + 1, index121) && !WorldGen.SolidTile(index120 - 1, index121) && WorldGen.SolidTile(index120 + 1, index121 - 1)) WorldGen.SlopeTile(index120, index121, 4); } if (TileID.Sets.Conversion.Sand[(int) Main.tile[index120, index121].type]) Tile.SmoothSlope(index120, index121, false); } } } for (int i = 20; i < Main.maxTilesX - 20; ++i) { for (int j = 20; j < Main.maxTilesY - 20; ++j) { if (WorldGen.genRand.Next(2) == 0 && !Main.tile[i, j - 1].active() && Main.tile[i, j].type != (ushort) 137 && Main.tile[i, j].type != (ushort) 48 && Main.tile[i, j].type != (ushort) 232 && Main.tile[i, j].type != (ushort) 191 && Main.tile[i, j].type != (ushort) 151 && Main.tile[i, j].type != (ushort) 274 && Main.tile[i, j].type != (ushort) 75 && Main.tile[i, j].type != (ushort) 76 && WorldGen.SolidTile(i, j) && Main.tile[i - 1, j].type != (ushort) 137 && Main.tile[i + 1, j].type != (ushort) 137) { if (WorldGen.SolidTile(i, j + 1) && WorldGen.SolidTile(i + 1, j) && !Main.tile[i - 1, j].active()) WorldGen.SlopeTile(i, j, 2); if (WorldGen.SolidTile(i, j + 1) && WorldGen.SolidTile(i - 1, j) && !Main.tile[i + 1, j].active()) WorldGen.SlopeTile(i, j, 1); } if (Main.tile[i, j].slope() == (byte) 1 && !WorldGen.SolidTile(i - 1, j)) { WorldGen.SlopeTile(i, j); WorldGen.PoundTile(i, j); } if (Main.tile[i, j].slope() == (byte) 2 && !WorldGen.SolidTile(i + 1, j)) { WorldGen.SlopeTile(i, j); WorldGen.PoundTile(i, j); } } } Main.tileSolid[137] = true; Main.tileSolid[190] = false; Main.tileSolid[192] = false; })); WorldGen.AddGenerationPass("Settle Liquids", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[27].Value; Liquid.QuickWater(3); WorldGen.WaterCheck(); int num129 = 0; Liquid.quickSettle = true; while (num129 < 10) { int num130 = Liquid.numLiquid + LiquidBuffer.numLiquidBuffer; ++num129; float num131 = 0.0f; while (Liquid.numLiquid > 0) { float num132 = (float) (num130 - (Liquid.numLiquid + LiquidBuffer.numLiquidBuffer)) / (float) num130; if (Liquid.numLiquid + LiquidBuffer.numLiquidBuffer > num130) num130 = Liquid.numLiquid + LiquidBuffer.numLiquidBuffer; if ((double) num132 > (double) num131) num131 = num132; else num132 = num131; if (num129 == 1) progress.Set((float) ((double) num132 / 3.0 + 0.330000013113022)); int num133 = 10; if (num129 > num133) ; Liquid.UpdateLiquid(); } WorldGen.WaterCheck(); progress.Set((float) ((double) num129 * 0.100000001490116 / 3.0 + 0.660000026226044)); } Liquid.quickSettle = false; Main.tileSolid[190] = true; })); WorldGen.AddGenerationPass("Waterfalls", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[69].Value; for (int i = 20; i < Main.maxTilesX - 20; ++i) { float num134 = (float) i / (float) Main.maxTilesX; progress.Set(num134 * 0.5f); for (int j = 20; j < Main.maxTilesY - 20; ++j) { if (WorldGen.SolidTile(i, j) && !Main.tile[i - 1, j].active() && WorldGen.SolidTile(i, j + 1) && !Main.tile[i + 1, j].active() && (Main.tile[i - 1, j].liquid > (byte) 0 || Main.tile[i + 1, j].liquid > (byte) 0)) { bool flag = true; int num135 = WorldGen.genRand.Next(8, 20); int num136 = WorldGen.genRand.Next(8, 20); int num137 = j - num135; int num138 = num136 + j; for (int index = num137; index <= num138; ++index) { if (Main.tile[i, index].halfBrick()) flag = false; } if ((Main.tile[i, j].type == (ushort) 75 || Main.tile[i, j].type == (ushort) 76) && WorldGen.genRand.Next(10) != 0) flag = false; if (flag) WorldGen.PoundTile(i, j); } } } for (int i = 20; i < Main.maxTilesX - 20; ++i) { float num = (float) i / (float) Main.maxTilesX; progress.Set((float) ((double) num * 0.5 + 0.5)); for (int j = 20; j < Main.maxTilesY - 20; ++j) { if (Main.tile[i, j].type != (ushort) 48 && Main.tile[i, j].type != (ushort) 232 && WorldGen.SolidTile(i, j) && WorldGen.SolidTile(i, j + 1)) { if (!WorldGen.SolidTile(i + 1, j) && Main.tile[i - 1, j].halfBrick() && Main.tile[i - 2, j].liquid > (byte) 0) WorldGen.PoundTile(i, j); if (!WorldGen.SolidTile(i - 1, j) && Main.tile[i + 1, j].halfBrick() && Main.tile[i + 2, j].liquid > (byte) 0) WorldGen.PoundTile(i, j); } } } })); WorldGen.AddGenerationPass("Ice", (WorldGenLegacyMethod) (progress => { for (int i = 10; i < Main.maxTilesX - 10; ++i) { for (int worldSurface2 = (int) Main.worldSurface; worldSurface2 < Main.maxTilesY - 100; ++worldSurface2) { if (Main.tile[i, worldSurface2].liquid > (byte) 0 && !Main.tile[i, worldSurface2].lava()) WorldGen.MakeWateryIceThing(i, worldSurface2); } } Main.tileSolid[226] = false; Main.tileSolid[162] = false; })); WorldGen.AddGenerationPass("Wall Variety", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[79].Value; int num139 = (int) (300.0 * (double) ((float) (Main.maxTilesX * Main.maxTilesY) / 5040000f)); int num140 = num139; ShapeData data = new ShapeData(); while (num139 > 0) { progress.Set((float) (1.0 - (double) num139 / (double) num140)); Point point = WorldGen.RandomWorldPoint((int) worldSurface, 2, 190, 2); Tile tile1 = Main.tile[point.X, point.Y]; Tile tile2 = Main.tile[point.X, point.Y - 1]; byte type = 0; if (tile1.type == (ushort) 59 || tile1.type == (ushort) 60) type = (byte) (204 + WorldGen.genRand.Next(4)); else if (tile1.type == (ushort) 1 && tile2.wall == (byte) 0) type = (double) point.Y >= rockLayer ? (point.Y >= WorldGen.lavaLine ? (byte) (208 + WorldGen.genRand.Next(4)) : (byte) (212 + WorldGen.genRand.Next(4))) : (byte) (196 + WorldGen.genRand.Next(4)); if (tile1.active() && type != (byte) 0 && !tile2.active()) { bool foundInvalidTile = false; bool flag = WorldUtils.Gen(new Point(point.X, point.Y - 1), (GenShape) new ShapeFloodFill(1000), Actions.Chain((GenAction) new Modifiers.IsNotSolid(), new Actions.Blank().Output(data), (GenAction) new Actions.ContinueWrapper(Actions.Chain((GenAction) new Modifiers.IsTouching(true, new ushort[5] { (ushort) 60, (ushort) 147, (ushort) 161, (ushort) 396, (ushort) 397 }), (GenAction) new Actions.Custom((GenBase.CustomPerUnitAction) ((x, y, args) => { foundInvalidTile = true; return true; })))))); if (data.Count > 50 & flag && !foundInvalidTile) { WorldUtils.Gen(new Point(point.X, point.Y), (GenShape) new ModShapes.OuterOutline(data, useInterior: true), (GenAction) new Actions.PlaceWall(type)); --num139; } data.Clear(); } } })); WorldGen.AddGenerationPass("Traps", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[34].Value; for (int index122 = 0; index122 < (int) ((double) Main.maxTilesX * 0.05); ++index122) { float num = (float) index122 / ((float) Main.maxTilesX * 0.05f); progress.Set(num); for (int index123 = 0; index123 < 1150; ++index123) { int x2 = WorldGen.genRand.Next(200, Main.maxTilesX - 200); int y2 = WorldGen.genRand.Next((int) Main.worldSurface, Main.maxTilesY - 210); if (Main.tile[x2, y2].wall == (byte) 0 && WorldGen.placeTrap(x2, y2)) break; } } })); WorldGen.AddGenerationPass("Life Crystals", (WorldGenLegacyMethod) (progress => { dub2 = (float) (Main.maxTilesX / 4200); progress.Message = Lang.gen[28].Value; for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 2E-05); ++index) { float num141 = (float) index / ((float) (Main.maxTilesX * Main.maxTilesY) * 2E-05f); progress.Set(num141); bool flag = false; int num142 = 0; while (!flag) { if (WorldGen.AddLifeCrystal(WorldGen.genRand.Next(40, Main.maxTilesX - 40), WorldGen.genRand.Next((int) (worldSurfaceHigh + 20.0), Main.maxTilesY - 300))) { flag = true; } else { ++num142; if (num142 >= 10000) flag = true; } } } Main.tileSolid[225] = false; })); WorldGen.AddGenerationPass("Statues", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[29].Value; int index124 = 0; int num143 = (int) ((double) (WorldGen.statueList.Length * 2) * (double) dub2); for (int index125 = 0; index125 < num143; ++index125) { if (index124 >= WorldGen.statueList.Length) index124 = 0; int x = (int) WorldGen.statueList[index124].X; int y = (int) WorldGen.statueList[index124].Y; float num144 = (float) (index125 / num143); progress.Set(num144); bool flag = false; int num145 = 0; while (!flag) { int index126 = WorldGen.genRand.Next(20, Main.maxTilesX - 20); int index127 = WorldGen.genRand.Next((int) (worldSurfaceHigh + 20.0), Main.maxTilesY - 300); while (!Main.tile[index126, index127].active()) ++index127; int index128 = index127 - 1; WorldGen.PlaceTile(index126, index128, x, true, true, style: y); if (Main.tile[index126, index128].active() && (int) Main.tile[index126, index128].type == x) { flag = true; if (WorldGen.StatuesWithTraps.Contains(index124)) WorldGen.PlaceStatueTrap(index126, index128); ++index124; } else { ++num145; if (num145 >= 10000) flag = true; } } } })); WorldGen.AddGenerationPass("Buried Chests", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[30].Value; Main.tileSolid[226] = true; Main.tileSolid[162] = true; Main.tileSolid[225] = true; for (int index129 = 0; index129 < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 1.6E-05); ++index129) { float num146 = (float) index129 / ((float) (Main.maxTilesX * Main.maxTilesY) * 1.6E-05f); progress.Set(num146); bool flag = false; int num147 = 0; while (!flag) { float num148 = (float) WorldGen.genRand.Next((int) (5.0 * (double) dub2), (int) (8.0 * (double) dub2 + 1.0)); int i = WorldGen.genRand.Next(20, Main.maxTilesX - 20); int j = WorldGen.genRand.Next((int) (worldSurfaceHigh + 20.0), Main.maxTilesY - 230); if ((double) index129 <= (double) num148) j = WorldGen.genRand.Next(Main.maxTilesY - 200, Main.maxTilesY - 50); int num149 = 0; while (Main.wallDungeon[(int) Main.tile[i, j].wall]) { ++num149; i = WorldGen.genRand.Next(1, Main.maxTilesX); j = WorldGen.genRand.Next((int) (worldSurfaceHigh + 20.0), Main.maxTilesY - 230); if (num149 < 1000 && (double) index129 <= (double) num148) j = WorldGen.genRand.Next(Main.maxTilesY - 200, Main.maxTilesY - 50); } if ((double) index129 > (double) num148) { for (int index130 = 10; index130 > 0; --index130) { if (Terraria.World.Generation.Biomes.Place(WorldGen.genRand.Next(80, Main.maxTilesX - 80), WorldGen.genRand.Next((int) (worldSurfaceHigh + 20.0), Main.maxTilesY - 230), structures)) { flag = true; break; } } } else if (WorldGen.AddBuriedChest(i, j)) flag = true; ++num147; if (num147 >= 1000) flag = true; } } int num = (int) (2.0 * (double) (Main.maxTilesX * Main.maxTilesY) / 5040000.0); for (int index = 1000; index >= 0 && num >= 0; --index) { if (Terraria.World.Generation.Biomes.Place(WorldGen.RandomRectanglePoint(WorldGen.UndergroundDesertLocation), structures)) --num; } Main.tileSolid[226] = false; Main.tileSolid[162] = false; Main.tileSolid[225] = false; })); WorldGen.AddGenerationPass("Surface Chests", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[31].Value; for (int index = 0; index < (int) ((double) Main.maxTilesX * 0.005); ++index) { float num150 = (float) index / ((float) Main.maxTilesX * 0.005f); progress.Set(num150); bool flag14 = false; int num151 = 0; while (!flag14) { int i = WorldGen.genRand.Next(300, Main.maxTilesX - 300); int j = WorldGen.genRand.Next((int) WorldGen.worldSurfaceLow, (int) Main.worldSurface); bool flag15 = false; if (Main.tile[i, j].wall == (byte) 2 && !Main.tile[i, j].active()) flag15 = true; if (flag15 && WorldGen.AddBuriedChest(i, j, notNearOtherChests: true)) { flag14 = true; } else { ++num151; if (num151 >= 2000) flag14 = true; } } } })); WorldGen.AddGenerationPass("Jungle Chests Placement", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[32].Value; for (int index131 = 0; index131 < WorldGen.numJChests; ++index131) { float num = (float) (index131 / WorldGen.numJChests); progress.Set(num); int nextJungleChestItem = WorldGen.GetNextJungleChestItem(); if (!WorldGen.AddBuriedChest(WorldGen.JChestX[index131] + WorldGen.genRand.Next(2), WorldGen.JChestY[index131], nextJungleChestItem, Style: 10)) { for (int i = WorldGen.JChestX[index131] - 1; i <= WorldGen.JChestX[index131] + 1; ++i) { for (int j = WorldGen.JChestY[index131]; j <= WorldGen.JChestY[index131] + 2; ++j) WorldGen.KillTile(i, j); } for (int index132 = WorldGen.JChestX[index131] - 1; index132 <= WorldGen.JChestX[index131] + 1; ++index132) { for (int index133 = WorldGen.JChestY[index131]; index133 <= WorldGen.JChestY[index131] + 3; ++index133) { if (index133 < Main.maxTilesY) { Main.tile[index132, index133].slope((byte) 0); Main.tile[index132, index133].halfBrick(false); } } } WorldGen.AddBuriedChest(WorldGen.JChestX[index131], WorldGen.JChestY[index131], nextJungleChestItem, Style: 10); } } })); WorldGen.AddGenerationPass("Water Chests", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[33].Value; int num152 = 0; for (int index = 0; (double) index < 9.0 * (double) dub2; ++index) { float num153 = (float) index / (9f * dub2); progress.Set(num153); ++num152; int contain; if (WorldGen.genRand.Next(15) == 0) { contain = 863; } else { switch (num152) { case 1: contain = 186; break; case 2: contain = 277; break; default: contain = 187; num152 = 0; break; } } int i12; int j11; for (bool flag = false; !flag; flag = WorldGen.AddBuriedChest(i12, j11, contain, Style: 17)) { i12 = WorldGen.genRand.Next(1, Main.maxTilesX); for (j11 = WorldGen.genRand.Next(1, Main.maxTilesY - 200); Main.tile[i12, j11].liquid < (byte) 200 || Main.tile[i12, j11].lava(); j11 = WorldGen.genRand.Next(1, Main.maxTilesY - 200)) i12 = WorldGen.genRand.Next(1, Main.maxTilesX); } int i13; int j12; for (bool flag = false; !flag; flag = WorldGen.AddBuriedChest(i13, j12, contain, Style: 17)) { i13 = WorldGen.genRand.Next(1, Main.maxTilesX); for (j12 = WorldGen.genRand.Next((int) Main.worldSurface, Main.maxTilesY - 200); Main.tile[i13, j12].liquid < (byte) 200 || Main.tile[i13, j12].lava(); j12 = WorldGen.genRand.Next(1, Main.maxTilesY - 200)) i13 = WorldGen.genRand.Next(1, Main.maxTilesX); } } })); WorldGen.AddGenerationPass("Spider Caves", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[64].Value; WorldGen.maxTileCount = 3500; for (int index134 = 0; index134 < (int) ((double) Main.maxTilesX * 0.005); ++index134) { float num154 = (float) index134 / ((float) Main.maxTilesX * 0.005f); progress.Set(num154); int num155 = 0; int x = WorldGen.genRand.Next(200, Main.maxTilesX - 200); int y = WorldGen.genRand.Next((int) (Main.worldSurface + Main.rockLayer) / 2, Main.maxTilesY - 230); for (int index135 = WorldGen.countTiles(x, y, lavaOk: true); (index135 >= 3500 || index135 < 500) && num155 < 500; index135 = WorldGen.countTiles(x, y, lavaOk: true)) { ++num155; x = WorldGen.genRand.Next(200, Main.maxTilesX - 200); y = WorldGen.genRand.Next((int) Main.rockLayer + 30, Main.maxTilesY - 230); } if (num155 < 500) WorldGen.Spread.Spider(x, y); } Main.tileSolid[162] = true; })); WorldGen.AddGenerationPass("Gem Caves", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[64].Value; WorldGen.maxTileCount = 300; for (int index136 = 0; index136 < (int) ((double) Main.maxTilesX * 0.003); ++index136) { float num156 = (float) index136 / ((float) Main.maxTilesX * (3f / 1000f)); progress.Set(num156); int num157 = 0; int x = WorldGen.genRand.Next(200, Main.maxTilesX - 200); int y = WorldGen.genRand.Next((int) Main.rockLayer + 30, Main.maxTilesY - 230); for (int index137 = WorldGen.countTiles(x, y); (index137 >= 300 || index137 < 50 || WorldGen.lavaCount > 0 || WorldGen.iceCount > 0 || WorldGen.rockCount == 0) && num157 < 1000; index137 = WorldGen.countTiles(x, y)) { ++num157; x = WorldGen.genRand.Next(200, Main.maxTilesX - 200); y = WorldGen.genRand.Next((int) Main.rockLayer + 30, Main.maxTilesY - 230); } if (num157 < 1000) WorldGen.gemCave(x, y); } })); WorldGen.AddGenerationPass("Moss", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[61].Value; WorldGen.randMoss(); WorldGen.maxTileCount = 2500; for (int index138 = 0; index138 < (int) ((double) Main.maxTilesX * 0.01); ++index138) { float num158 = (float) index138 / ((float) Main.maxTilesX * 0.01f); progress.Set(num158); int num159 = 0; int x = WorldGen.genRand.Next(200, Main.maxTilesX - 200); int y = WorldGen.genRand.Next((int) (Main.worldSurface + Main.rockLayer) / 2, WorldGen.waterLine); for (int index139 = WorldGen.countTiles(x, y); (index139 >= 2500 || index139 < 10 || WorldGen.lavaCount > 0 || WorldGen.iceCount > 0 || WorldGen.rockCount == 0) && num159 < 1000; index139 = WorldGen.countTiles(x, y)) { ++num159; x = WorldGen.genRand.Next(200, Main.maxTilesX - 200); y = WorldGen.genRand.Next((int) Main.rockLayer + 30, Main.maxTilesY - 230); } if (num159 < 1000) { WorldGen.setMoss(x, y); WorldGen.Spread.Moss(x, y); } } for (int index = 0; index < Main.maxTilesX; ++index) { int x = WorldGen.genRand.Next(50, Main.maxTilesX - 50); int y = WorldGen.genRand.Next((int) (Main.worldSurface + Main.rockLayer) / 2, WorldGen.lavaLine); if (Main.tile[x, y].type == (ushort) 1) { WorldGen.setMoss(x, y); Main.tile[x, y].type = (ushort) WorldGen.mossTile; } } float num160 = (float) Main.maxTilesX * 0.05f; while ((double) num160 > 0.0) { int x = WorldGen.genRand.Next(50, Main.maxTilesX - 50); int y = WorldGen.genRand.Next((int) (Main.worldSurface + Main.rockLayer) / 2, WorldGen.lavaLine); if (Main.tile[x, y].type == (ushort) 1 && (!Main.tile[x - 1, y].active() || !Main.tile[x + 1, y].active() || !Main.tile[x, y - 1].active() || !Main.tile[x, y + 1].active())) { WorldGen.setMoss(x, y); Main.tile[x, y].type = (ushort) WorldGen.mossTile; --num160; } } float num161 = (float) Main.maxTilesX * 0.065f; while ((double) num161 > 0.0) { int index140 = WorldGen.genRand.Next(50, Main.maxTilesX - 50); int index141 = WorldGen.genRand.Next(WorldGen.waterLine, Main.maxTilesY - 200); if (Main.tile[index140, index141].type == (ushort) 1 && (!Main.tile[index140 - 1, index141].active() || !Main.tile[index140 + 1, index141].active() || !Main.tile[index140, index141 - 1].active() || !Main.tile[index140, index141 + 1].active())) { int num162 = 25; int num163 = 0; for (int index142 = index140 - num162; index142 < index140 + num162; ++index142) { for (int index143 = index141 - num162; index143 < index141 + num162; ++index143) { if (Main.tile[index142, index143].liquid > (byte) 0 && Main.tile[index142, index143].lava()) ++num163; } } if (num163 > 20) { Main.tile[index140, index141].type = (ushort) 381; --num161; } else num161 -= 1f / 500f; } } for (int index144 = 0; index144 < Main.maxTilesX; ++index144) { for (int index145 = 0; index145 < Main.maxTilesY; ++index145) { if (Main.tile[index144, index145].active() && Main.tileMoss[(int) Main.tile[index144, index145].type]) { for (int index146 = 0; index146 < 4; ++index146) { int i = index144; int j = index145; if (index146 == 0) --i; if (index146 == 1) ++i; if (index146 == 2) --j; if (index146 == 3) ++j; try { WorldGen.grassSpread = 0; WorldGen.SpreadGrass(i, j, 1, (int) Main.tile[index144, index145].type); } catch { WorldGen.grassSpread = 0; WorldGen.SpreadGrass(i, j, 1, (int) Main.tile[index144, index145].type, false); } } } } } })); WorldGen.AddGenerationPass("Temple", (WorldGenLegacyMethod) (progress => { Main.tileSolid[162] = false; Main.tileSolid[226] = true; WorldGen.templePart2(); Main.tileSolid[232] = false; })); WorldGen.AddGenerationPass("Ice Walls", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[63].Value; WorldGen.maxTileCount = 1500; for (int index147 = 0; index147 < (int) ((double) Main.maxTilesX * 0.04); ++index147) { float num164 = (float) index147 / ((float) Main.maxTilesX * 0.04f); progress.Set(num164 * 0.66f); int num165 = 0; int x = WorldGen.genRand.Next(200, Main.maxTilesX - 200); int y = WorldGen.genRand.Next((int) (Main.worldSurface + Main.rockLayer) / 2, Main.maxTilesY - 220); for (int index148 = WorldGen.countTiles(x, y, lavaOk: true); (index148 >= 1500 || index148 < 10) && num165 < 500; index148 = WorldGen.countTiles(x, y, lavaOk: true)) { ++num165; x = WorldGen.genRand.Next(200, Main.maxTilesX - 200); y = WorldGen.genRand.Next((int) (Main.worldSurface + Main.rockLayer) / 2, Main.maxTilesY - 220); } if (num165 < 500) { int wallType = WorldGen.genRand.Next(2); if (WorldGen.iceCount > 0) { switch (wallType) { case 0: wallType = 40; break; case 1: wallType = 71; break; } } else if (WorldGen.lavaCount > 0) { wallType = 79; } else { wallType = WorldGen.genRand.Next(4); switch (wallType) { case 0: wallType = 59; break; case 1: wallType = 61; break; case 2: wallType = 170; break; case 3: wallType = 171; break; } } WorldGen.Spread.Wall(x, y, wallType); } } WorldGen.maxTileCount = 1500; for (int index = 0; index < (int) ((double) Main.maxTilesX * 0.02); ++index) { float num166 = (float) index / ((float) Main.maxTilesX * 0.02f); progress.Set((float) ((double) num166 * 0.340000003576279 + 0.660000026226044)); int num167 = 0; int x = WorldGen.genRand.Next(200, Main.maxTilesX - 200); int y = WorldGen.genRand.Next((int) Main.worldSurface, WorldGen.lavaLine); int num168 = 0; if (Main.tile[x, y].wall == (byte) 64) num168 = WorldGen.countTiles(x, y, true); while ((num168 >= 1500 || num168 < 10) && num167 < 1000) { ++num167; x = WorldGen.genRand.Next(200, Main.maxTilesX - 200); y = WorldGen.genRand.Next((int) Main.worldSurface, WorldGen.lavaLine); if (!Main.wallHouse[(int) Main.tile[x, y].wall]) num168 = Main.tile[x, y].wall != (byte) 64 ? 0 : WorldGen.countTiles(x, y, true); } if (num167 < 1000) WorldGen.Spread.Wall2(x, y, 15); } })); WorldGen.AddGenerationPass("Jungle Trees", (WorldGenLegacyMethod) (progress => { for (int i = 0; i < Main.maxTilesX; ++i) { for (int y = (int) Main.worldSurface - 1; y < Main.maxTilesY - 350; ++y) { if (WorldGen.genRand.Next(10) == 0) WorldGen.GrowUndergroundTree(i, y); } } })); WorldGen.AddGenerationPass("Floating Island Houses", (WorldGenLegacyMethod) (progress => { for (int index = 0; index < WorldGen.numIslandHouses; ++index) { if (!WorldGen.skyLake[index]) WorldGen.IslandHouse(WorldGen.fihX[index], WorldGen.fihY[index]); } })); WorldGen.AddGenerationPass("Quick Cleanup", (WorldGenLegacyMethod) (progress => { Main.tileSolid[137] = false; Main.tileSolid[130] = false; for (int i = 20; i < Main.maxTilesX - 20; ++i) { for (int index = 20; index < Main.maxTilesY - 20; ++index) { if (Main.tile[i, index].type != (ushort) 19 && TileID.Sets.CanBeClearedDuringGeneration[(int) Main.tile[i, index].type]) { if (Main.tile[i, index].topSlope() || Main.tile[i, index].halfBrick()) { if (!WorldGen.SolidTile(i, index + 1)) Main.tile[i, index].active(false); if (Main.tile[i + 1, index].type == (ushort) 137 || Main.tile[i - 1, index].type == (ushort) 137) Main.tile[i, index].active(false); } else if (Main.tile[i, index].bottomSlope()) { if (!WorldGen.SolidTile(i, index - 1)) Main.tile[i, index].active(false); if (Main.tile[i + 1, index].type == (ushort) 137 || Main.tile[i - 1, index].type == (ushort) 137) Main.tile[i, index].active(false); } } } } })); WorldGen.AddGenerationPass("Pots", (WorldGenLegacyMethod) (progress => { Main.tileSolid[137] = true; Main.tileSolid[130] = true; progress.Message = Lang.gen[35].Value; for (int index = 0; index < (int) ((double) (Main.maxTilesX * Main.maxTilesY) * 0.0008); ++index) { float num169 = (float) index / ((float) (Main.maxTilesX * Main.maxTilesY) * 0.0008f); progress.Set(num169); bool flag16 = false; int num170 = 0; while (!flag16) { int num171 = WorldGen.genRand.Next((int) worldSurfaceHigh, Main.maxTilesY - 10); if ((double) num169 > 0.93) num171 = Main.maxTilesY - 150; else if ((double) num169 > 0.75) num171 = (int) WorldGen.worldSurfaceLow; int x = WorldGen.genRand.Next(1, Main.maxTilesX); bool flag17 = false; for (int y = num171; y < Main.maxTilesY; ++y) { if (!flag17) { if (Main.tile[x, y].active() && Main.tileSolid[(int) Main.tile[x, y].type] && !Main.tile[x, y - 1].lava()) flag17 = true; } else { int style = WorldGen.genRand.Next(0, 4); int num172 = 0; if (y < Main.maxTilesY - 5) num172 = (int) Main.tile[x, y + 1].type; if (num172 == 147 || num172 == 161 || num172 == 162) style = WorldGen.genRand.Next(4, 7); if (num172 == 60) style = WorldGen.genRand.Next(7, 10); if (Main.wallDungeon[(int) Main.tile[x, y].wall]) style = WorldGen.genRand.Next(10, 13); if (num172 == 41 || num172 == 43 || num172 == 44) style = WorldGen.genRand.Next(10, 13); if (num172 == 22 || num172 == 23 || num172 == 25) style = WorldGen.genRand.Next(16, 19); if (num172 == 199 || num172 == 203 || num172 == 204 || num172 == 200) style = WorldGen.genRand.Next(22, 25); if (num172 == 367) style = WorldGen.genRand.Next(31, 34); if (num172 == 226) style = WorldGen.genRand.Next(28, 31); if (y > Main.maxTilesY - 200) style = WorldGen.genRand.Next(13, 16); if (WorldGen.PlacePot(x, y, style: style)) { flag16 = true; break; } ++num170; if (num170 >= 10000) { flag16 = true; break; } } } } } })); WorldGen.AddGenerationPass("Hellforge", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[36].Value; for (int index149 = 0; index149 < Main.maxTilesX / 200; ++index149) { float num173 = (float) (index149 / (Main.maxTilesX / 200)); progress.Set(num173); bool flag = false; int num174 = 0; while (!flag) { int i = WorldGen.genRand.Next(1, Main.maxTilesX); int index150 = WorldGen.genRand.Next(Main.maxTilesY - 250, Main.maxTilesY - 5); try { if (Main.tile[i, index150].wall != (byte) 13) { if (Main.tile[i, index150].wall != (byte) 14) continue; } while (!Main.tile[i, index150].active()) ++index150; int j = index150 - 1; WorldGen.PlaceTile(i, j, 77); if (Main.tile[i, j].type == (ushort) 77) { flag = true; } else { ++num174; if (num174 >= 10000) flag = true; } } catch { } } } })); WorldGen.AddGenerationPass("Spreading Grass", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[37].Value; for (int index = 0; index < Main.maxTilesX; ++index) { i2 = index; bool flag = true; for (int j = 0; (double) j < Main.worldSurface - 1.0; ++j) { if (Main.tile[i2, j].active()) { if (flag) { if (Main.tile[i2, j].type == (ushort) 0) { try { WorldGen.grassSpread = 0; WorldGen.SpreadGrass(i2, j); } catch { WorldGen.grassSpread = 0; WorldGen.SpreadGrass(i2, j, repeat: false); } } } if ((double) j <= worldSurfaceHigh) flag = false; else break; } else if (Main.tile[i2, j].wall == (byte) 0) flag = true; } } })); WorldGen.AddGenerationPass("Piles", (WorldGenLegacyMethod) (progress => { Main.tileSolid[190] = false; Main.tileSolid[196] = false; Main.tileSolid[189] = false; Main.tileSolid[202] = false; for (int index151 = 0; (double) index151 < (double) Main.maxTilesX * 0.06; ++index151) { bool flag = false; while (!flag) { int i14 = WorldGen.genRand.Next(25, Main.maxTilesX - 25); int j13 = WorldGen.genRand.Next((int) Main.worldSurface, Main.maxTilesY - 300); if (!Main.tile[i14, j13].active()) { int type = 186; while (!Main.tile[i14, j13 + 1].active() && j13 < Main.maxTilesY - 5) ++j13; int style = WorldGen.genRand.Next(22); switch (style) { case 16: case 17: case 18: case 19: case 20: case 21: case 22: style = WorldGen.genRand.Next(22); break; } if ((Main.tile[i14, j13 + 1].type == (ushort) 0 || Main.tile[i14, j13 + 1].type == (ushort) 1 || Main.tileMoss[(int) Main.tile[i14, j13 + 1].type]) && WorldGen.genRand.Next(5) == 0) { style = WorldGen.genRand.Next(23, 29); type = 187; } if (j13 > Main.maxTilesY - 300 || Main.wallDungeon[(int) Main.tile[i14, j13].wall] || Main.tile[i14, j13 + 1].type == (ushort) 30 || Main.tile[i14, j13 + 1].type == (ushort) 19 || Main.tile[i14, j13 + 1].type == (ushort) 25 || Main.tile[i14, j13 + 1].type == (ushort) 203) { style = WorldGen.genRand.Next(7); type = 186; } if (Main.tile[i14, j13 + 1].type == (ushort) 147 || Main.tile[i14, j13 + 1].type == (ushort) 161 || Main.tile[i14, j13 + 1].type == (ushort) 162) { style = WorldGen.genRand.Next(26, 32); type = 186; } if (Main.tile[i14, j13 + 1].type == (ushort) 60) { type = 187; style = WorldGen.genRand.Next(6); } if ((Main.tile[i14, j13 + 1].type == (ushort) 57 || Main.tile[i14, j13 + 1].type == (ushort) 58) && WorldGen.genRand.Next(3) < 2) { type = 187; style = WorldGen.genRand.Next(6, 9); } if (Main.tile[i14, j13 + 1].type == (ushort) 226) { type = 187; style = WorldGen.genRand.Next(18, 23); } if (Main.tile[i14, j13 + 1].type == (ushort) 70) { style = WorldGen.genRand.Next(32, 35); type = 186; } if (type == 186 && style >= 7 && style <= 15 && WorldGen.genRand.Next(75) == 0) { type = 187; style = 17; } if (Main.wallDungeon[(int) Main.tile[i14, j13].wall] && WorldGen.genRand.Next(3) != 0) { flag = true; } else { WorldGen.PlaceTile(i14, j13, type, true, style: style); if (Main.tile[i14, j13].type == (ushort) 186 || Main.tile[i14, j13].type == (ushort) 187) flag = true; if (flag && type == 186 && style <= 7) { int num = WorldGen.genRand.Next(1, 5); for (int index152 = 0; index152 < num; ++index152) { int i15 = i14 + WorldGen.genRand.Next(-10, 11); int j14 = j13 - WorldGen.genRand.Next(5); if (!Main.tile[i15, j14].active()) { while (!Main.tile[i15, j14 + 1].active() && j14 < Main.maxTilesY - 5) ++j14; int X = WorldGen.genRand.Next(12, 36); WorldGen.PlaceSmallPile(i15, j14, X, 0); } } } } } } } for (int index153 = 0; (double) index153 < (double) Main.maxTilesX * 0.01; ++index153) { bool flag = false; while (!flag) { int i16 = WorldGen.genRand.Next(25, Main.maxTilesX - 25); int j15 = WorldGen.genRand.Next(Main.maxTilesY - 300, Main.maxTilesY - 10); if (!Main.tile[i16, j15].active()) { int type = 186; while (!Main.tile[i16, j15 + 1].active() && j15 < Main.maxTilesY - 5) ++j15; int style = WorldGen.genRand.Next(22); switch (style) { case 16: case 17: case 18: case 19: case 20: case 21: case 22: style = WorldGen.genRand.Next(22); break; } if (j15 > Main.maxTilesY - 300 || Main.wallDungeon[(int) Main.tile[i16, j15].wall] || Main.tile[i16, j15 + 1].type == (ushort) 30 || Main.tile[i16, j15 + 1].type == (ushort) 19) style = WorldGen.genRand.Next(7); if ((Main.tile[i16, j15 + 1].type == (ushort) 57 || Main.tile[i16, j15 + 1].type == (ushort) 58) && WorldGen.genRand.Next(3) < 2) { type = 187; style = WorldGen.genRand.Next(6, 9); } if (Main.tile[i16, j15 + 1].type == (ushort) 147 || Main.tile[i16, j15 + 1].type == (ushort) 161 || Main.tile[i16, j15 + 1].type == (ushort) 162) style = WorldGen.genRand.Next(26, 32); WorldGen.PlaceTile(i16, j15, type, true, style: style); if (Main.tile[i16, j15].type == (ushort) 186 || Main.tile[i16, j15].type == (ushort) 187) flag = true; if (flag && type == 186 && style <= 7) { int num = WorldGen.genRand.Next(1, 5); for (int index154 = 0; index154 < num; ++index154) { int i17 = i16 + WorldGen.genRand.Next(-10, 11); int j16 = j15 - WorldGen.genRand.Next(5); if (!Main.tile[i17, j16].active()) { while (!Main.tile[i17, j16 + 1].active() && j16 < Main.maxTilesY - 5) ++j16; int X = WorldGen.genRand.Next(12, 36); WorldGen.PlaceSmallPile(i17, j16, X, 0); } } } } } } for (int index = 0; (double) index < (double) Main.maxTilesX * 0.003; ++index) { bool flag = false; while (!flag) { int type = 186; int i = WorldGen.genRand.Next(25, Main.maxTilesX - 25); int j = WorldGen.genRand.Next(10, (int) Main.worldSurface); if (!Main.tile[i, j].active()) { while (!Main.tile[i, j + 1].active() && j < Main.maxTilesY - 5) ++j; int style = WorldGen.genRand.Next(7, 13); if (j > Main.maxTilesY - 300 || Main.wallDungeon[(int) Main.tile[i, j].wall] || Main.tile[i, j + 1].type == (ushort) 30 || Main.tile[i, j + 1].type == (ushort) 19 || Main.tile[i, j + 1].type == (ushort) 53 || Main.tile[i, j + 1].type == (ushort) 25 || Main.tile[i, j + 1].type == (ushort) 203) style = -1; if (Main.tile[i, j + 1].type == (ushort) 147 || Main.tile[i, j + 1].type == (ushort) 161 || Main.tile[i, j + 1].type == (ushort) 162) style = WorldGen.genRand.Next(26, 32); if (Main.tile[i, j + 1].type == (ushort) 2 || Main.tile[i - 1, j + 1].type == (ushort) 2 || Main.tile[i + 1, j + 1].type == (ushort) 2) { type = 187; style = WorldGen.genRand.Next(14, 17); } if (Main.tile[i, j + 1].type == (ushort) 151 || Main.tile[i, j + 1].type == (ushort) 274) { type = 186; style = WorldGen.genRand.Next(7); } if (style >= 0) WorldGen.PlaceTile(i, j, type, true, style: style); if ((int) Main.tile[i, j].type == type) flag = true; } } } for (int index155 = 0; (double) index155 < (double) Main.maxTilesX * 0.0035; ++index155) { bool flag = false; while (!flag) { int i18 = WorldGen.genRand.Next(25, Main.maxTilesX - 25); int j17 = WorldGen.genRand.Next(10, (int) Main.worldSurface); if (!Main.tile[i18, j17].active() && Main.tile[i18, j17].wall > (byte) 0) { int type = 186; while (!Main.tile[i18, j17 + 1].active() && j17 < Main.maxTilesY - 5) ++j17; int style = WorldGen.genRand.Next(7, 13); if (j17 > Main.maxTilesY - 300 || Main.wallDungeon[(int) Main.tile[i18, j17].wall] || Main.tile[i18, j17 + 1].type == (ushort) 30 || Main.tile[i18, j17 + 1].type == (ushort) 19) style = -1; if (Main.tile[i18, j17 + 1].type == (ushort) 25) style = WorldGen.genRand.Next(7); if (Main.tile[i18, j17 + 1].type == (ushort) 147 || Main.tile[i18, j17 + 1].type == (ushort) 161 || Main.tile[i18, j17 + 1].type == (ushort) 162) style = WorldGen.genRand.Next(26, 32); if (Main.tile[i18, j17 + 1].type == (ushort) 2 || Main.tile[i18 - 1, j17 + 1].type == (ushort) 2 || Main.tile[i18 + 1, j17 + 1].type == (ushort) 2) { type = 187; style = WorldGen.genRand.Next(14, 17); } if (Main.tile[i18, j17 + 1].type == (ushort) 151 || Main.tile[i18, j17 + 1].type == (ushort) 274) { type = 186; style = WorldGen.genRand.Next(7); } if (style >= 0) WorldGen.PlaceTile(i18, j17, type, true, style: style); if ((int) Main.tile[i18, j17].type == type) flag = true; if (flag && style <= 7) { int num = WorldGen.genRand.Next(1, 5); for (int index156 = 0; index156 < num; ++index156) { int i19 = i18 + WorldGen.genRand.Next(-10, 11); int j18 = j17 - WorldGen.genRand.Next(5); if (!Main.tile[i19, j18].active()) { while (!Main.tile[i19, j18 + 1].active() && j18 < Main.maxTilesY - 5) ++j18; int X = WorldGen.genRand.Next(12, 36); WorldGen.PlaceSmallPile(i19, j18, X, 0); } } } } } } for (int index157 = 0; (double) index157 < (double) Main.maxTilesX * 0.6; ++index157) { bool flag = false; while (!flag) { int i20 = WorldGen.genRand.Next(25, Main.maxTilesX - 25); int j19 = WorldGen.genRand.Next((int) Main.worldSurface, Main.maxTilesY - 20); if (Main.tile[i20, j19].wall == (byte) 87 && WorldGen.genRand.Next(2) == 0) { i20 = WorldGen.genRand.Next(25, Main.maxTilesX - 25); j19 = WorldGen.genRand.Next((int) Main.worldSurface, Main.maxTilesY - 20); } if (!Main.tile[i20, j19].active()) { while (!Main.tile[i20, j19 + 1].active() && j19 < Main.maxTilesY - 5) ++j19; int Y = WorldGen.genRand.Next(2); int X1 = WorldGen.genRand.Next(36); switch (X1) { case 28: case 29: case 30: case 31: case 32: case 33: case 34: case 35: X1 = WorldGen.genRand.Next(36); break; } if (Y == 1) { X1 = WorldGen.genRand.Next(25); switch (X1) { case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23: case 24: X1 = WorldGen.genRand.Next(25); break; } } if (j19 > Main.maxTilesY - 300) { if (Y == 0) X1 = WorldGen.genRand.Next(12, 28); if (Y == 1) X1 = WorldGen.genRand.Next(6, 16); } if (Main.wallDungeon[(int) Main.tile[i20, j19].wall] || Main.tile[i20, j19 + 1].type == (ushort) 30 || Main.tile[i20, j19 + 1].type == (ushort) 19 || Main.tile[i20, j19 + 1].type == (ushort) 25 || Main.tile[i20, j19 + 1].type == (ushort) 203 || Main.tile[i20, j19].wall == (byte) 87) { if (Y == 0 && X1 < 12) X1 += 12; if (Y == 1 && X1 < 6) X1 += 6; if (Y == 1 && X1 >= 17) X1 -= 10; } if (Main.tile[i20, j19 + 1].type == (ushort) 147 || Main.tile[i20, j19 + 1].type == (ushort) 161 || Main.tile[i20, j19 + 1].type == (ushort) 162) { if (Y == 0 && X1 < 12) X1 += 36; if (Y == 1 && X1 >= 20) X1 += 6; if (Y == 1 && X1 < 6) X1 += 25; } if (Main.tile[i20, j19 + 1].type == (ushort) 151 || Main.tile[i20, j19 + 1].type == (ushort) 274) { if (Y == 0) X1 = WorldGen.genRand.Next(12, 28); if (Y == 1) X1 = WorldGen.genRand.Next(12, 19); } flag = Main.wallDungeon[(int) Main.tile[i20, j19].wall] && WorldGen.genRand.Next(3) != 0 || WorldGen.PlaceSmallPile(i20, j19, X1, Y); if (flag && Y == 1 && X1 >= 6 && X1 <= 15) { int num = WorldGen.genRand.Next(1, 5); for (int index158 = 0; index158 < num; ++index158) { int i21 = i20 + WorldGen.genRand.Next(-10, 11); int j20 = j19 - WorldGen.genRand.Next(5); if (!Main.tile[i21, j20].active()) { while (!Main.tile[i21, j20 + 1].active() && j20 < Main.maxTilesY - 5) ++j20; int X2 = WorldGen.genRand.Next(12, 36); WorldGen.PlaceSmallPile(i21, j20, X2, 0); } } } } } } for (int index = 0; (double) index < (double) Main.maxTilesX * 0.0199999995529652; ++index) { bool flag = false; while (!flag) { int i = WorldGen.genRand.Next(25, Main.maxTilesX - 25); int j = WorldGen.genRand.Next(15, (int) Main.worldSurface); if (!Main.tile[i, j].active()) { while (!Main.tile[i, j + 1].active() && j < Main.maxTilesY - 5) ++j; int Y = WorldGen.genRand.Next(2); int X = WorldGen.genRand.Next(11); if (Y == 1) X = WorldGen.genRand.Next(5); if (Main.tile[i, j + 1].type == (ushort) 147 || Main.tile[i, j + 1].type == (ushort) 161 || Main.tile[i, j + 1].type == (ushort) 162) { if (Y == 0 && X < 12) X += 36; if (Y == 1 && X >= 20) X += 6; if (Y == 1 && X < 6) X += 25; } if (Main.tile[i, j + 1].type == (ushort) 2 && Y == 1) X = WorldGen.genRand.Next(38, 41); if (Main.tile[i, j + 1].type == (ushort) 151 || Main.tile[i, j + 1].type == (ushort) 274) { if (Y == 0) X = WorldGen.genRand.Next(12, 28); if (Y == 1) X = WorldGen.genRand.Next(12, 19); } if (!Main.wallDungeon[(int) Main.tile[i, j].wall] && Main.tile[i, j + 1].type != (ushort) 30 && Main.tile[i, j + 1].type != (ushort) 19 && Main.tile[i, j + 1].type != (ushort) 41 && Main.tile[i, j + 1].type != (ushort) 43 && Main.tile[i, j + 1].type != (ushort) 44 && Main.tile[i, j + 1].type != (ushort) 45 && Main.tile[i, j + 1].type != (ushort) 46 && Main.tile[i, j + 1].type != (ushort) 47 && Main.tile[i, j + 1].type != (ushort) 175 && Main.tile[i, j + 1].type != (ushort) 176 && Main.tile[i, j + 1].type != (ushort) 177 && Main.tile[i, j + 1].type != (ushort) 53 && Main.tile[i, j + 1].type != (ushort) 25 && Main.tile[i, j + 1].type != (ushort) 203) flag = WorldGen.PlaceSmallPile(i, j, X, Y); } } } for (int index = 0; (double) index < (double) Main.maxTilesX * 0.150000005960464; ++index) { bool flag = false; while (!flag) { int i = WorldGen.genRand.Next(25, Main.maxTilesX - 25); int j = WorldGen.genRand.Next(15, (int) Main.worldSurface); if (!Main.tile[i, j].active() && (Main.tile[i, j].wall == (byte) 2 || Main.tile[i, j].wall == (byte) 40)) { while (!Main.tile[i, j + 1].active() && j < Main.maxTilesY - 5) ++j; int Y = WorldGen.genRand.Next(2); int X = WorldGen.genRand.Next(11); if (Y == 1) X = WorldGen.genRand.Next(5); if (Main.tile[i, j + 1].type == (ushort) 147 || Main.tile[i, j + 1].type == (ushort) 161 || Main.tile[i, j + 1].type == (ushort) 162) { if (Y == 0 && X < 12) X += 36; if (Y == 1 && X >= 20) X += 6; if (Y == 1 && X < 6) X += 25; } if (Main.tile[i, j + 1].type == (ushort) 2 && Y == 1) X = WorldGen.genRand.Next(38, 41); if (Main.tile[i, j + 1].type == (ushort) 151 || Main.tile[i, j + 1].type == (ushort) 274) { if (Y == 0) X = WorldGen.genRand.Next(12, 28); if (Y == 1) X = WorldGen.genRand.Next(12, 19); } if (!Main.wallDungeon[(int) Main.tile[i, j].wall] && Main.tile[i, j + 1].type != (ushort) 30 && Main.tile[i, j + 1].type != (ushort) 19 && Main.tile[i, j + 1].type != (ushort) 41 && Main.tile[i, j + 1].type != (ushort) 43 && Main.tile[i, j + 1].type != (ushort) 44 && Main.tile[i, j + 1].type != (ushort) 45 && Main.tile[i, j + 1].type != (ushort) 46 && Main.tile[i, j + 1].type != (ushort) 47 && Main.tile[i, j + 1].type != (ushort) 175 && Main.tile[i, j + 1].type != (ushort) 176 && Main.tile[i, j + 1].type != (ushort) 177 && Main.tile[i, j + 1].type != (ushort) 25 && Main.tile[i, j + 1].type != (ushort) 203) flag = WorldGen.PlaceSmallPile(i, j, X, Y); } } } Main.tileSolid[190] = true; Main.tileSolid[192] = true; Main.tileSolid[196] = true; Main.tileSolid[189] = true; Main.tileSolid[202] = true; Main.tileSolid[225] = true; })); WorldGen.AddGenerationPass("Moss", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[38].Value; int num175 = 8; int num176 = 400; int num177 = 4; int num178 = 275; for (int index = 0; index < 3; ++index) { int num179; int num180; bool flag; int maxValue; switch (index) { case 1: num179 = num176; num180 = Main.maxTilesX - num176; flag = true; maxValue = num175; break; case 2: num179 = Main.maxTilesX - num178; num180 = Main.maxTilesX - 5; flag = false; maxValue = num177; break; default: num179 = 5; num180 = num178; flag = false; maxValue = num177; break; } for (int i = num179; i < num180; ++i) { if (WorldGen.genRand.Next(maxValue) == 0) { for (int j = 0; (double) j < Main.worldSurface - 1.0; ++j) { Tile tile3 = Main.tile[i, j]; if (tile3.active() && tile3.type == (ushort) 53) { Tile tile4 = Main.tile[i, j - 1]; if (!tile4.active() && tile4.wall == (byte) 0) { if (flag) { WorldGen.PlantCactus(i, j); break; } if (Main.tile[i, j - 2].liquid == byte.MaxValue && Main.tile[i, j - 3].liquid == byte.MaxValue && Main.tile[i, j - 4].liquid == byte.MaxValue) { if (WorldGen.genRand.Next(2) == 0) { WorldGen.PlaceTile(i, j - 1, 81, true); break; } WorldGen.PlaceTile(i, j - 1, 324, true, style: WorldGen.genRand.Next(2)); break; } if (Main.tile[i, j - 2].liquid == (byte) 0) { WorldGen.PlaceTile(i, j - 1, 324, true, style: WorldGen.genRand.Next(2)); break; } } } } } } } })); WorldGen.AddGenerationPass("Spawn Point", (WorldGenLegacyMethod) (progress => { int num181 = 5; bool flag = true; while (flag) { int index159 = Main.maxTilesX / 2 + WorldGen.genRand.Next(-num181, num181 + 1); for (int index160 = 0; index160 < Main.maxTilesY; ++index160) { if (Main.tile[index159, index160].active()) { Main.spawnTileX = index159; Main.spawnTileY = index160; break; } } flag = false; ++num181; if ((double) Main.spawnTileY > Main.worldSurface) flag = true; if (Main.tile[Main.spawnTileX, Main.spawnTileY - 1].liquid > (byte) 0) flag = true; } int num182 = 10; while ((double) Main.spawnTileY > Main.worldSurface) { int index161 = WorldGen.genRand.Next(Main.maxTilesX / 2 - num182, Main.maxTilesX / 2 + num182); for (int index162 = 0; index162 < Main.maxTilesY; ++index162) { if (Main.tile[index161, index162].active()) { Main.spawnTileX = index161; Main.spawnTileY = index162; break; } } ++num182; } })); WorldGen.AddGenerationPass("Grass Wall", (WorldGenLegacyMethod) (progress => { WorldGen.maxTileCount = 3500; for (int index163 = 50; index163 < Main.maxTilesX - 50; ++index163) { for (int index164 = 0; (double) index164 < Main.worldSurface - 10.0; ++index164) { if (WorldGen.genRand.Next(4) == 0) { bool flag = false; int x = -1; int y = -1; if (Main.tile[index163, index164].active() && Main.tile[index163, index164].type == (ushort) 2 && (Main.tile[index163, index164].wall == (byte) 2 || Main.tile[index163, index164].wall == (byte) 63)) { for (int i = index163 - 1; i <= index163 + 1; ++i) { for (int j = index164 - 1; j <= index164 + 1; ++j) { if (Main.tile[i, j].wall == (byte) 0 && !WorldGen.SolidTile(i, j)) flag = true; } } if (flag) { for (int i = index163 - 1; i <= index163 + 1; ++i) { for (int j = index164 - 1; j <= index164 + 1; ++j) { if ((Main.tile[i, j].wall == (byte) 2 || Main.tile[i, j].wall == (byte) 15) && !WorldGen.SolidTile(i, j)) { x = i; y = j; } } } } } if (flag && x > -1 && y > -1) { if (WorldGen.countDirtTiles(x, y) < WorldGen.maxTileCount) { try { WorldGen.Spread.Wall2(x, y, 63); } catch { } } } } } } for (int i = 5; i < Main.maxTilesX - 5; ++i) { for (int j = 10; (double) j < Main.worldSurface - 1.0; ++j) { if (Main.tile[i, j].wall == (byte) 63 && WorldGen.genRand.Next(10) == 0) Main.tile[i, j].wall = (byte) 65; if (Main.tile[i, j].active() && Main.tile[i, j].type == (ushort) 0) { bool flag = false; for (int index165 = i - 1; index165 <= i + 1; ++index165) { for (int index166 = j - 1; index166 <= j + 1; ++index166) { if (Main.tile[i, j].wall == (byte) 63 || Main.tile[i, j].wall == (byte) 65) { flag = true; break; } } } if (flag) WorldGen.SpreadGrass(i, j); } } } })); WorldGen.AddGenerationPass("Guide", (WorldGenLegacyMethod) (progress => { int index = NPC.NewNPC(Main.spawnTileX * 16, Main.spawnTileY * 16, 22); Main.npc[index].homeTileX = Main.spawnTileX; Main.npc[index].homeTileY = Main.spawnTileY; Main.npc[index].direction = 1; Main.npc[index].homeless = true; })); WorldGen.AddGenerationPass("Sunflowers", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[39].Value; for (int index167 = 0; (double) index167 < (double) Main.maxTilesX * 0.002; ++index167) { int num183 = Main.maxTilesX / 2; int num184 = WorldGen.genRand.Next(Main.maxTilesX); int num185 = num184 - WorldGen.genRand.Next(10) - 7; int num186 = num184 + WorldGen.genRand.Next(10) + 7; if (num185 < 0) num185 = 0; if (num186 > Main.maxTilesX - 1) num186 = Main.maxTilesX - 1; for (int i = num185; i < num186; ++i) { for (int index168 = 1; (double) index168 < Main.worldSurface - 1.0; ++index168) { if (Main.tile[i, index168].type == (ushort) 2 && Main.tile[i, index168].active() && !Main.tile[i, index168 - 1].active()) WorldGen.PlaceTile(i, index168 - 1, 27, true); if (Main.tile[i, index168].active()) break; } } } })); WorldGen.AddGenerationPass("Planting Trees", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[40].Value; for (int index = 0; (double) index < (double) Main.maxTilesX * 0.003; ++index) { int num187 = WorldGen.genRand.Next(50, Main.maxTilesX - 50); int num188 = WorldGen.genRand.Next(25, 50); for (int i = num187 - num188; i < num187 + num188; ++i) { for (int y = 20; (double) y < Main.worldSurface; ++y) WorldGen.GrowEpicTree(i, y); } } WorldGen.AddTrees(); })); WorldGen.AddGenerationPass("Herbs", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[41].Value; for (int index = 0; (double) index < (double) Main.maxTilesX * 1.7; ++index) WorldGen.PlantAlch(); })); WorldGen.AddGenerationPass("Dye Plants", (WorldGenLegacyMethod) (progress => { for (int index = 0; index < Main.maxTilesX; ++index) WorldGen.plantDye(WorldGen.genRand.Next(100, Main.maxTilesX - 100), WorldGen.genRand.Next(100, Main.maxTilesY - 200)); for (int index = 0; index < Main.maxTilesX / 8; ++index) WorldGen.plantDye(WorldGen.genRand.Next(100, Main.maxTilesX - 100), WorldGen.genRand.Next(100, Main.maxTilesY - 200), true); })); WorldGen.AddGenerationPass("Webs And Honey", (WorldGenLegacyMethod) (progress => { for (int index = 100; index < Main.maxTilesX - 100; ++index) { for (int worldSurface3 = (int) Main.worldSurface; worldSurface3 < Main.maxTilesY - 100; ++worldSurface3) { if (Main.tile[index, worldSurface3].wall == (byte) 86) { if (Main.tile[index, worldSurface3].liquid > (byte) 0) Main.tile[index, worldSurface3].honey(true); if (WorldGen.genRand.Next(3) == 0) WorldGen.PlaceTight(index, worldSurface3); } if (Main.tile[index, worldSurface3].wall == (byte) 62) { Main.tile[index, worldSurface3].liquid = (byte) 0; Main.tile[index, worldSurface3].lava(false); } if (Main.tile[index, worldSurface3].wall == (byte) 62 && !Main.tile[index, worldSurface3].active() && WorldGen.genRand.Next(10) != 0) { int num189 = WorldGen.genRand.Next(2, 5); int num190 = index - num189; int num191 = index + num189; int num192 = worldSurface3 - num189; int num193 = worldSurface3 + num189; bool flag = false; for (int i = num190; i <= num191; ++i) { for (int j = num192; j <= num193; ++j) { if (WorldGen.SolidTile(i, j)) { flag = true; break; } } } if (flag) { WorldGen.PlaceTile(index, worldSurface3, 51, true); WorldGen.TileFrame(index, worldSurface3); } } } } })); WorldGen.AddGenerationPass("Weeds", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[42].Value; if (Main.halloween) { for (int index169 = 40; index169 < Main.maxTilesX - 40; ++index169) { for (int index170 = 50; (double) index170 < Main.worldSurface; ++index170) { if (Main.tile[index169, index170].active() && Main.tile[index169, index170].type == (ushort) 2 && WorldGen.genRand.Next(15) == 0) { WorldGen.PlacePumpkin(index169, index170 - 1); int num = WorldGen.genRand.Next(5); for (int index171 = 0; index171 < num; ++index171) WorldGen.GrowPumpkin(index169, index170 - 1, 254); } } } } WorldGen.AddPlants(); })); WorldGen.AddGenerationPass("Mud Caves To Grass", (WorldGenLegacyMethod) (progress => { for (int i = 0; i < Main.maxTilesX; ++i) { for (int y = 0; y < Main.maxTilesY; ++y) { if (Main.tile[i, y].active()) { if (y >= (int) Main.worldSurface && Main.tile[i, y].type == (ushort) 70 && !Main.tile[i, y - 1].active()) { WorldGen.GrowShroom(i, y); if (!Main.tile[i, y - 1].active()) WorldGen.PlaceTile(i, y - 1, 71, true); } if (Main.tile[i, y].type == (ushort) 60 && !Main.tile[i, y - 1].active()) WorldGen.PlaceTile(i, y - 1, 61, true); } } } })); WorldGen.AddGenerationPass("Jungle Plants", (WorldGenLegacyMethod) (progress => { for (int index172 = 0; index172 < Main.maxTilesX * 100; ++index172) { int X2 = WorldGen.genRand.Next(40, Main.maxTilesX / 2 - 40); if (dungeonSide < 0) X2 += Main.maxTilesX / 2; int index173 = WorldGen.genRand.Next(Main.maxTilesY - 300); while (!Main.tile[X2, index173].active() && index173 < Main.maxTilesY - 300) ++index173; if (Main.tile[X2, index173].active() && Main.tile[X2, index173].type == (ushort) 60) { int Y2 = index173 - 1; WorldGen.PlaceJunglePlant(X2, Y2, (ushort) 233, WorldGen.genRand.Next(8), 0); if (Main.tile[X2, Y2].type != (ushort) 233) WorldGen.PlaceJunglePlant(X2, Y2, (ushort) 233, WorldGen.genRand.Next(12), 1); } } })); WorldGen.AddGenerationPass("Vines", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[43].Value; for (int i22 = 0; i22 < Main.maxTilesX; ++i22) { int num194 = 0; for (int index = 0; (double) index < Main.worldSurface; ++index) { if (num194 > 0 && !Main.tile[i22, index].active()) { Main.tile[i22, index].active(true); Main.tile[i22, index].type = (ushort) 52; --num194; } else num194 = 0; if (Main.tile[i22, index].active() && !Main.tile[i22, index].bottomSlope() && (Main.tile[i22, index].type == (ushort) 2 || Main.tile[i22, index].type == (ushort) 192 && WorldGen.genRand.Next(4) == 0) && WorldGen.genRand.Next(5) < 3) num194 = WorldGen.genRand.Next(1, 10); } int num195 = 0; for (int j21 = 0; j21 < Main.maxTilesY; ++j21) { if (num195 > 0 && !Main.tile[i22, j21].active()) { Main.tile[i22, j21].active(true); Main.tile[i22, j21].type = (ushort) 62; --num195; } else num195 = 0; if (Main.tile[i22, j21].active() && Main.tile[i22, j21].type == (ushort) 60 && !Main.tile[i22, j21].bottomSlope()) { if (i22 < Main.maxTilesX - 1 && j21 < Main.maxTilesY - 2 && Main.tile[i22 + 1, j21].active() && Main.tile[i22 + 1, j21].type == (ushort) 60 && !Main.tile[i22 + 1, j21].bottomSlope() && WorldGen.genRand.Next(40) == 0) { bool flag = true; for (int index174 = i22; index174 < i22 + 2; ++index174) { for (int index175 = j21 + 1; index175 < j21 + 3; ++index175) { if (Main.tile[index174, index175].active() && (!Main.tileCut[(int) Main.tile[index174, index175].type] || Main.tile[index174, index175].type == (ushort) 444)) { flag = false; break; } if (Main.tile[index174, index175].liquid > (byte) 0 || Main.wallHouse[(int) Main.tile[index174, index175].wall]) { flag = false; break; } } if (!flag) break; } if (flag) { if (WorldGen.CountNearBlocksTypes(i22, j21, 20, 1, 444) > 0) flag = false; } if (flag) { for (int i23 = i22; i23 < i22 + 2; ++i23) { for (int j22 = j21 + 1; j22 < j21 + 3; ++j22) WorldGen.KillTile(i23, j22); } for (int index176 = i22; index176 < i22 + 2; ++index176) { for (int index177 = j21 + 1; index177 < j21 + 3; ++index177) { Main.tile[index176, index177].active(true); Main.tile[index176, index177].type = (ushort) 444; Main.tile[index176, index177].frameX = (short) ((index176 - i22) * 18); Main.tile[index176, index177].frameY = (short) ((index177 - j21 - 1) * 18); } } continue; } } if (WorldGen.genRand.Next(5) < 3) num195 = WorldGen.genRand.Next(1, 10); } } int num196 = 0; for (int index = 0; index < Main.maxTilesY; ++index) { if (num196 > 0 && !Main.tile[i22, index].active()) { Main.tile[i22, index].active(true); Main.tile[i22, index].type = (ushort) 205; --num196; } else num196 = 0; if (Main.tile[i22, index].active() && Main.tile[i22, index].type == (ushort) 199 && WorldGen.genRand.Next(5) < 3) num196 = WorldGen.genRand.Next(1, 10); } } })); WorldGen.AddGenerationPass("Flowers", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[44].Value; for (int index178 = 0; (double) index178 < (double) Main.maxTilesX * 0.005; ++index178) { int index179 = WorldGen.genRand.Next(20, Main.maxTilesX - 20); int num197 = WorldGen.genRand.Next(5, 15); int num198 = WorldGen.genRand.Next(15, 30); for (int index180 = 1; (double) index180 < Main.worldSurface - 1.0; ++index180) { if (Main.tile[index179, index180].active()) { for (int index181 = index179 - num197; index181 < index179 + num197; ++index181) { for (int index182 = index180 - num198; index182 < index180 + num198; ++index182) { if (Main.tile[index181, index182].type == (ushort) 3 || Main.tile[index181, index182].type == (ushort) 24) { Main.tile[index181, index182].frameX = (short) (WorldGen.genRand.Next(6, 8) * 18); if (Main.tile[index181, index182].type == (ushort) 3 && WorldGen.genRand.Next(2) == 0) Main.tile[index181, index182].frameX = (short) (WorldGen.genRand.Next(9, 11) * 18); } } } break; } } } })); WorldGen.AddGenerationPass("Mushrooms", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[45].Value; for (int index183 = 0; (double) index183 < (double) Main.maxTilesX * 0.002; ++index183) { int index184 = WorldGen.genRand.Next(20, Main.maxTilesX - 20); int num199 = WorldGen.genRand.Next(4, 10); int num200 = WorldGen.genRand.Next(15, 30); for (int index185 = 1; (double) index185 < Main.worldSurface - 1.0; ++index185) { if (Main.tile[index184, index185].active()) { for (int index186 = index184 - num199; index186 < index184 + num199; ++index186) { for (int index187 = index185 - num200; index187 < index185 + num200; ++index187) { if (Main.tile[index186, index187].type == (ushort) 3 || Main.tile[index186, index187].type == (ushort) 24) Main.tile[index186, index187].frameX = (short) 144; else if (Main.tile[index186, index187].type == (ushort) 201) Main.tile[index186, index187].frameX = (short) 270; } } break; } } } })); WorldGen.AddGenerationPass("Stalac", (WorldGenLegacyMethod) (progress => { for (int x = 20; x < Main.maxTilesX - 20; ++x) { for (int worldSurface4 = (int) Main.worldSurface; worldSurface4 < Main.maxTilesY - 20; ++worldSurface4) { if (!Main.tile[x, worldSurface4].active() && WorldGen.genRand.Next(5) == 0) { if ((Main.tile[x, worldSurface4 - 1].type == (ushort) 1 || Main.tile[x, worldSurface4 - 1].type == (ushort) 147 || Main.tile[x, worldSurface4 - 1].type == (ushort) 161 || Main.tile[x, worldSurface4 - 1].type == (ushort) 25 || Main.tile[x, worldSurface4 - 1].type == (ushort) 203 || Main.tileStone[(int) Main.tile[x, worldSurface4 - 1].type] || Main.tileMoss[(int) Main.tile[x, worldSurface4 - 1].type]) && !Main.tile[x, worldSurface4].active() && !Main.tile[x, worldSurface4 + 1].active()) Main.tile[x, worldSurface4 - 1].slope((byte) 0); if ((Main.tile[x, worldSurface4 + 1].type == (ushort) 1 || Main.tile[x, worldSurface4 + 1].type == (ushort) 147 || Main.tile[x, worldSurface4 + 1].type == (ushort) 161 || Main.tile[x, worldSurface4 + 1].type == (ushort) 25 || Main.tile[x, worldSurface4 + 1].type == (ushort) 203 || Main.tileStone[(int) Main.tile[x, worldSurface4 + 1].type] || Main.tileMoss[(int) Main.tile[x, worldSurface4 + 1].type]) && !Main.tile[x, worldSurface4].active() && !Main.tile[x, worldSurface4 - 1].active()) Main.tile[x, worldSurface4 + 1].slope((byte) 0); WorldGen.PlaceTight(x, worldSurface4); } } for (int y = 5; y < (int) Main.worldSurface; ++y) { if ((Main.tile[x, y - 1].type == (ushort) 147 || Main.tile[x, y - 1].type == (ushort) 161) && WorldGen.genRand.Next(5) == 0) { if (!Main.tile[x, y].active() && !Main.tile[x, y + 1].active()) Main.tile[x, y - 1].slope((byte) 0); WorldGen.PlaceTight(x, y); } if ((Main.tile[x, y - 1].type == (ushort) 25 || Main.tile[x, y - 1].type == (ushort) 203) && WorldGen.genRand.Next(5) == 0) { if (!Main.tile[x, y].active() && !Main.tile[x, y + 1].active()) Main.tile[x, y - 1].slope((byte) 0); WorldGen.PlaceTight(x, y); } if ((Main.tile[x, y + 1].type == (ushort) 25 || Main.tile[x, y + 1].type == (ushort) 203) && WorldGen.genRand.Next(5) == 0) { if (!Main.tile[x, y].active() && !Main.tile[x, y - 1].active()) Main.tile[x, y + 1].slope((byte) 0); WorldGen.PlaceTight(x, y); } } } })); WorldGen.AddGenerationPass("Gems In Ice Biome", (WorldGenLegacyMethod) (progress => { for (int index188 = 0; (double) index188 < (double) Main.maxTilesX * 0.25; ++index188) { int index189 = WorldGen.genRand.Next((int) (Main.worldSurface + Main.rockLayer) / 2, WorldGen.lavaLine); int index190 = WorldGen.genRand.Next(snowMinX[index189], snowMaxX[index189]); if (Main.tile[index190, index189].active() && (Main.tile[index190, index189].type == (ushort) 147 || Main.tile[index190, index189].type == (ushort) 161 || Main.tile[index190, index189].type == (ushort) 162 || Main.tile[index190, index189].type == (ushort) 224)) { int num201 = WorldGen.genRand.Next(1, 4); int num202 = WorldGen.genRand.Next(1, 4); int num203 = WorldGen.genRand.Next(1, 4); int num204 = WorldGen.genRand.Next(1, 4); int num205 = WorldGen.genRand.Next(12); int style = num205 >= 3 ? (num205 >= 6 ? (num205 >= 8 ? (num205 >= 10 ? (num205 >= 11 ? 5 : 4) : 3) : 2) : 1) : 0; for (int i = index190 - num201; i < index190 + num202; ++i) { for (int j = index189 - num203; j < index189 + num204; ++j) { if (!Main.tile[i, j].active()) WorldGen.PlaceTile(i, j, 178, true, style: style); } } } } })); WorldGen.AddGenerationPass("Random Gems", (WorldGenLegacyMethod) (progress => { for (int index = 0; index < Main.maxTilesX; ++index) { int i = WorldGen.genRand.Next(20, Main.maxTilesX - 20); int j = WorldGen.genRand.Next((int) Main.rockLayer, Main.maxTilesY - 300); if (!Main.tile[i, j].active() && !Main.tile[i, j].lava() && !Main.wallDungeon[(int) Main.tile[i, j].wall] && Main.tile[i, j].wall != (byte) 27) { int num = WorldGen.genRand.Next(12); int style = num >= 3 ? (num >= 6 ? (num >= 8 ? (num >= 10 ? (num >= 11 ? 5 : 4) : 3) : 2) : 1) : 0; WorldGen.PlaceTile(i, j, 178, true, style: style); } } })); WorldGen.AddGenerationPass("Moss Grass", (WorldGenLegacyMethod) (progress => { for (int index191 = 5; index191 < Main.maxTilesX - 5; ++index191) { for (int index192 = 5; index192 < Main.maxTilesY - 5; ++index192) { if (Main.tile[index191, index192].active() && Main.tileMoss[(int) Main.tile[index191, index192].type]) { for (int index193 = 0; index193 < 4; ++index193) { int i = index191; int j = index192; if (index193 == 0) --i; if (index193 == 1) ++i; if (index193 == 2) --j; if (index193 == 3) ++j; if (!Main.tile[i, j].active()) WorldGen.PlaceTile(i, j, 184, true); } } } } })); WorldGen.AddGenerationPass("Muds Walls In Jungle", (WorldGenLegacyMethod) (progress => { int num206 = 0; int num207 = 0; bool flag18 = false; for (int index194 = 5; index194 < Main.maxTilesX - 5; ++index194) { for (int index195 = 0; (double) index195 < Main.worldSurface + 20.0; ++index195) { if (Main.tile[index194, index195].active() && Main.tile[index194, index195].type == (ushort) 60) { num206 = index194; flag18 = true; break; } } if (flag18) break; } bool flag19 = false; for (int index196 = Main.maxTilesX - 5; index196 > 5; --index196) { for (int index197 = 0; (double) index197 < Main.worldSurface + 20.0; ++index197) { if (Main.tile[index196, index197].active() && Main.tile[index196, index197].type == (ushort) 60) { num207 = index196; flag19 = true; break; } } if (flag19) break; } for (int index198 = num206; index198 <= num207; ++index198) { for (int index199 = 0; (double) index199 < Main.worldSurface + 20.0; ++index199) { if ((index198 >= num206 + 2 && index198 <= num207 - 2 || WorldGen.genRand.Next(2) != 0) && (index198 >= num206 + 3 && index198 <= num207 - 3 || WorldGen.genRand.Next(3) != 0) && (Main.tile[index198, index199].wall == (byte) 2 || Main.tile[index198, index199].wall == (byte) 59)) Main.tile[index198, index199].wall = (byte) 15; } } })); WorldGen.AddGenerationPass("Larva", (WorldGenLegacyMethod) (progress => { for (int index200 = 0; index200 < WorldGen.numLarva; ++index200) { int i = WorldGen.larvaX[index200]; int j = WorldGen.larvaY[index200]; for (int index201 = i - 1; index201 <= i + 1; ++index201) { for (int index202 = j - 2; index202 <= j + 1; ++index202) { if (index202 != j + 1) { Main.tile[index201, index202].active(false); } else { Main.tile[index201, index202].active(true); Main.tile[index201, index202].type = (ushort) 225; Main.tile[index201, index202].slope((byte) 0); Main.tile[index201, index202].halfBrick(false); } } } WorldGen.PlaceTile(i, j, 231, true); } Main.tileSolid[232] = true; Main.tileSolid[162] = true; })); WorldGen.AddGenerationPass("Settle Liquids Again", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[27].Value; Liquid.QuickWater(3); WorldGen.WaterCheck(); int num208 = 0; Liquid.quickSettle = true; while (num208 < 10) { int num209 = Liquid.numLiquid + LiquidBuffer.numLiquidBuffer; ++num208; float num210 = 0.0f; while (Liquid.numLiquid > 0) { float num211 = (float) (num209 - (Liquid.numLiquid + LiquidBuffer.numLiquidBuffer)) / (float) num209; if (Liquid.numLiquid + LiquidBuffer.numLiquidBuffer > num209) num209 = Liquid.numLiquid + LiquidBuffer.numLiquidBuffer; if ((double) num211 > (double) num210) num210 = num211; else num211 = num210; if (num208 == 1) progress.Set((float) ((double) num211 / 3.0 + 0.330000013113022)); int num212 = 10; if (num208 > num212) ; Liquid.UpdateLiquid(); } WorldGen.WaterCheck(); progress.Set((float) ((double) num208 * 0.100000001490116 / 3.0 + 0.660000026226044)); } Liquid.quickSettle = false; })); WorldGen.AddGenerationPass("Tile Cleanup", (WorldGenLegacyMethod) (progress => { for (int i = 40; i < Main.maxTilesX - 40; ++i) { for (int index203 = 40; index203 < Main.maxTilesY - 40; ++index203) { if (!Main.tile[i, index203].active() && Main.tile[i, index203].liquid == (byte) 0 && WorldGen.genRand.Next(3) != 0 && WorldGen.SolidTile(i, index203 - 1)) { int num213 = WorldGen.genRand.Next(15, 21); for (int index204 = index203 - 2; index204 >= index203 - num213; --index204) { if (Main.tile[i, index204].liquid >= (byte) 128) { int num214 = 373; if (Main.tile[i, index204].lava()) num214 = 374; else if (Main.tile[i, index204].honey()) num214 = 375; if (WorldGen.genRand.Next(index203 - index204) <= 1) { Main.tile[i, index203].type = (ushort) num214; Main.tile[i, index203].frameX = (short) 0; Main.tile[i, index203].frameY = (short) 0; Main.tile[i, index203].active(true); break; } } } if (!Main.tile[i, index203].active()) { int num215 = WorldGen.genRand.Next(3, 11); for (int index205 = index203 + 1; index205 <= index203 + num215; ++index205) { if (Main.tile[i, index205].liquid >= (byte) 200) { int num216 = 373; if (Main.tile[i, index205].lava()) num216 = 374; else if (Main.tile[i, index205].honey()) num216 = 375; if (WorldGen.genRand.Next((index205 - index203) * 3) <= 1) { Main.tile[i, index203].type = (ushort) num216; Main.tile[i, index203].frameX = (short) 0; Main.tile[i, index203].frameY = (short) 0; Main.tile[i, index203].active(true); break; } } } } if (!Main.tile[i, index203].active() && WorldGen.genRand.Next(3) != 0) { Tile tile = Main.tile[i, index203 - 1]; if (TileID.Sets.Conversion.Sandstone[(int) tile.type] || TileID.Sets.Conversion.HardenedSand[(int) tile.type]) { Main.tile[i, index203].type = (ushort) 461; Main.tile[i, index203].frameX = (short) 0; Main.tile[i, index203].frameY = (short) 0; Main.tile[i, index203].active(true); } } } if (Main.tile[i, index203].type == (ushort) 137) { if (Main.tile[i, index203].frameY <= (short) 52) { int num = -1; if (Main.tile[i, index203].frameX >= (short) 18) num = 1; if (Main.tile[i + num, index203].halfBrick() || Main.tile[i + num, index203].slope() != (byte) 0) Main.tile[i + num, index203].active(false); } } else if (Main.tile[i, index203].type == (ushort) 162 && Main.tile[i, index203 + 1].liquid == (byte) 0) Main.tile[i, index203].active(false); if (Main.tile[i, index203].wall == (byte) 13 || Main.tile[i, index203].wall == (byte) 14) Main.tile[i, index203].liquid = (byte) 0; if (Main.tile[i, index203].type == (ushort) 31) { int num217 = (int) Main.tile[i, index203].frameX / 18; int num218 = 0; int num219 = i; int num220 = num218 + num217 / 2; int num221 = WorldGen.crimson ? 1 : 0; int num222 = num217 % 2; int num223 = num219 - num222; int num224 = (int) Main.tile[i, index203].frameY / 18; int num225 = 0; int num226 = index203; int num227 = num225 + num224 / 2; int num228 = num224 % 2; int num229 = num226 - num228; for (int index206 = 0; index206 < 2; ++index206) { for (int index207 = 0; index207 < 2; ++index207) { int index208 = num223 + index206; int index209 = num229 + index207; Main.tile[index208, index209].active(true); Main.tile[index208, index209].slope((byte) 0); Main.tile[index208, index209].halfBrick(false); Main.tile[index208, index209].type = (ushort) 31; Main.tile[index208, index209].frameX = (short) (index206 * 18 + 36 * num221); Main.tile[index208, index209].frameY = (short) (index207 * 18 + 36 * num227); } } } if (Main.tile[i, index203].type == (ushort) 12) { int num230 = (int) Main.tile[i, index203].frameX / 18; int num231 = 0; int num232 = i; int num233 = num231 + num230 / 2; int num234 = num230 % 2; int num235 = num232 - num234; int num236 = (int) Main.tile[i, index203].frameY / 18; int num237 = 0; int num238 = index203; int num239 = num237 + num236 / 2; int num240 = num236 % 2; int num241 = num238 - num240; for (int index210 = 0; index210 < 2; ++index210) { for (int index211 = 0; index211 < 2; ++index211) { int index212 = num235 + index210; int index213 = num241 + index211; Main.tile[index212, index213].active(true); Main.tile[index212, index213].slope((byte) 0); Main.tile[index212, index213].halfBrick(false); Main.tile[index212, index213].type = (ushort) 12; Main.tile[index212, index213].frameX = (short) (index210 * 18 + 36 * num233); Main.tile[index212, index213].frameY = (short) (index211 * 18 + 36 * num239); } if (!Main.tile[index210, index203 + 2].active()) { Main.tile[index210, index203 + 2].active(true); if (!Main.tileSolid[(int) Main.tile[index210, index203 + 2].type] || Main.tileSolidTop[(int) Main.tile[index210, index203 + 2].type]) Main.tile[index210, index203 + 2].type = (ushort) 0; } Main.tile[index210, index203 + 2].slope((byte) 0); Main.tile[index210, index203 + 2].halfBrick(false); } } if (TileID.Sets.BasicChest[(int) Main.tile[i, index203].type]) { int num242 = (int) Main.tile[i, index203].frameX / 18; int num243 = 0; int num244 = i; int Y = index203 - (int) Main.tile[i, index203].frameY / 18; for (; num242 >= 2; num242 -= 2) ++num243; int X = num244 - num242; int chest = Chest.FindChest(X, Y); if (chest != -1) { switch (Main.chest[chest].item[0].type) { case 1156: num243 = 23; break; case 1260: num243 = 26; break; case 1569: num243 = 25; break; case 1571: num243 = 24; break; case 1572: num243 = 27; break; } } for (int index214 = 0; index214 < 2; ++index214) { for (int index215 = 0; index215 < 2; ++index215) { int index216 = X + index214; int index217 = Y + index215; Main.tile[index216, index217].active(true); Main.tile[index216, index217].slope((byte) 0); Main.tile[index216, index217].halfBrick(false); Main.tile[index216, index217].type = (ushort) 21; Main.tile[index216, index217].frameX = (short) (index214 * 18 + 36 * num243); Main.tile[index216, index217].frameY = (short) (index215 * 18); } if (!Main.tile[index214, index203 + 2].active()) { Main.tile[index214, index203 + 2].active(true); if (!Main.tileSolid[(int) Main.tile[index214, index203 + 2].type] || Main.tileSolidTop[(int) Main.tile[index214, index203 + 2].type]) Main.tile[index214, index203 + 2].type = (ushort) 0; } Main.tile[index214, index203 + 2].slope((byte) 0); Main.tile[index214, index203 + 2].halfBrick(false); } } if (Main.tile[i, index203].type == (ushort) 28) { int num245 = (int) Main.tile[i, index203].frameX / 18; int num246 = 0; int num247 = i; for (; num245 >= 2; num245 -= 2) ++num246; int num248 = num247 - num245; int num249 = (int) Main.tile[i, index203].frameY / 18; int num250 = 0; int num251 = index203; for (; num249 >= 2; num249 -= 2) ++num250; int num252 = num251 - num249; for (int index218 = 0; index218 < 2; ++index218) { for (int index219 = 0; index219 < 2; ++index219) { int index220 = num248 + index218; int index221 = num252 + index219; Main.tile[index220, index221].active(true); Main.tile[index220, index221].slope((byte) 0); Main.tile[index220, index221].halfBrick(false); Main.tile[index220, index221].type = (ushort) 28; Main.tile[index220, index221].frameX = (short) (index218 * 18 + 36 * num246); Main.tile[index220, index221].frameY = (short) (index219 * 18 + 36 * num250); } if (!Main.tile[index218, index203 + 2].active()) { Main.tile[index218, index203 + 2].active(true); if (!Main.tileSolid[(int) Main.tile[index218, index203 + 2].type] || Main.tileSolidTop[(int) Main.tile[index218, index203 + 2].type]) Main.tile[index218, index203 + 2].type = (ushort) 0; } Main.tile[index218, index203 + 2].slope((byte) 0); Main.tile[index218, index203 + 2].halfBrick(false); } } if (Main.tile[i, index203].type == (ushort) 26) { int num253 = (int) Main.tile[i, index203].frameX / 18; int num254 = 0; int num255 = i; int num256 = index203 - (int) Main.tile[i, index203].frameY / 18; for (; num253 >= 3; num253 -= 3) ++num254; int num257 = num255 - num253; for (int index222 = 0; index222 < 3; ++index222) { for (int index223 = 0; index223 < 2; ++index223) { int index224 = num257 + index222; int index225 = num256 + index223; Main.tile[index224, index225].active(true); Main.tile[index224, index225].slope((byte) 0); Main.tile[index224, index225].halfBrick(false); Main.tile[index224, index225].type = (ushort) 26; Main.tile[index224, index225].frameX = (short) (index222 * 18 + 54 * num254); Main.tile[index224, index225].frameY = (short) (index223 * 18); } if (!Main.tile[num257 + index222, num256 + 2].active() || !Main.tileSolid[(int) Main.tile[num257 + index222, num256 + 2].type] || Main.tileSolidTop[(int) Main.tile[num257 + index222, num256 + 2].type]) { Main.tile[num257 + index222, num256 + 2].active(true); if (!TileID.Sets.Platforms[(int) Main.tile[num257 + index222, num256 + 2].type] && (!Main.tileSolid[(int) Main.tile[num257 + index222, num256 + 2].type] || Main.tileSolidTop[(int) Main.tile[num257 + index222, num256 + 2].type])) Main.tile[num257 + index222, num256 + 2].type = (ushort) 0; } Main.tile[num257 + index222, num256 + 2].slope((byte) 0); Main.tile[num257 + index222, num256 + 2].halfBrick(false); if (Main.tile[num257 + index222, num256 + 3].type == (ushort) 28 && (int) Main.tile[num257 + index222, num256 + 3].frameY % 36 >= 18) { Main.tile[num257 + index222, num256 + 3].type = (ushort) 0; Main.tile[num257 + index222, num256 + 3].active(false); } } for (int index226 = 0; index226 < 3; ++index226) { if ((Main.tile[num257 - 1, num256 + index226].type == (ushort) 28 || Main.tile[num257 - 1, num256 + index226].type == (ushort) 12) && (int) Main.tile[num257 - 1, num256 + index226].frameX % 36 < 18) { Main.tile[num257 - 1, num256 + index226].type = (ushort) 0; Main.tile[num257 - 1, num256 + index226].active(false); } if ((Main.tile[num257 + 3, num256 + index226].type == (ushort) 28 || Main.tile[num257 + 3, num256 + index226].type == (ushort) 12) && (int) Main.tile[num257 + 3, num256 + index226].frameX % 36 >= 18) { Main.tile[num257 + 3, num256 + index226].type = (ushort) 0; Main.tile[num257 + 3, num256 + index226].active(false); } } } if (Main.tile[i, index203].type == (ushort) 237 && Main.tile[i, index203 + 1].type == (ushort) 232) Main.tile[i, index203 + 1].type = (ushort) 226; } } })); WorldGen.AddGenerationPass("Lihzahrd Altars", (WorldGenLegacyMethod) (progress => { int lAltarX = WorldGen.lAltarX; int lAltarY = WorldGen.lAltarY; for (int index227 = 0; index227 <= 2; ++index227) { for (int index228 = 0; index228 <= 1; ++index228) { int index229 = lAltarX + index227; int index230 = lAltarY + index228; Main.tile[index229, index230].active(true); Main.tile[index229, index230].type = (ushort) 237; Main.tile[index229, index230].frameX = (short) (index227 * 18); Main.tile[index229, index230].frameY = (short) (index228 * 18); } Main.tile[index227, lAltarY + 2].active(true); Main.tile[index227, lAltarY + 2].slope((byte) 0); Main.tile[index227, lAltarY + 2].halfBrick(false); Main.tile[index227, lAltarY + 2].type = (ushort) 226; } })); WorldGen.AddGenerationPass("Micro Biomes", (WorldGenLegacyMethod) (progress => { progress.Message = Lang.gen[76].Value; float num258 = (float) (Main.maxTilesX * Main.maxTilesY) / 5040000f; float num259 = (float) Main.maxTilesX / 4200f; int num260 = (int) ((double) WorldGen.genRand.Next(3, 6) * (double) num258); int num261 = 0; while (num261 < num260) { if (Terraria.World.Generation.Biomes.Place(WorldGen.RandomWorldPoint((int) Main.worldSurface + 20, 50, 200, 50), structures)) ++num261; } progress.Set(0.1f); int num262 = (int) Math.Ceiling((double) num258); int num263 = 0; while (num263 < num262) { Point origin; origin.Y = (int) worldSurface + WorldGen.genRand.Next(50, 100); origin.X = WorldGen.genRand.Next(2) != 0 ? WorldGen.genRand.Next((int) ((double) Main.maxTilesX * 0.699999988079071), Main.maxTilesX - 50) : WorldGen.genRand.Next(50, (int) ((double) Main.maxTilesX * 0.300000011920929)); if (Terraria.World.Generation.Biomes.Place(origin, structures)) ++num263; } progress.Set(0.2f); int num264 = (int) ((double) WorldGen.genRand.Next(6, 12) * (double) num258); int num265 = 0; while (num265 < num264) { if (Terraria.World.Generation.Biomes.Place(WorldGen.RandomWorldPoint((int) Main.worldSurface, 50, 200, 50), structures)) ++num265; } int num266 = (int) ((double) WorldGen.genRand.Next(14, 30) * (double) num258); int num267 = 0; while (num267 < num266) { if (Terraria.World.Generation.Biomes.Place(WorldGen.RandomWorldPoint((int) rockLayer, 50, 200, 50), structures)) ++num267; } progress.Set(0.3f); int num268 = (int) ((double) WorldGen.genRand.Next(6, 12) * (double) num259); int num269 = 0; for (int index = 0; num269 < num268 && index < 20000; ++index) { if (Terraria.World.Generation.Biomes.Place(WorldGen.RandomWorldPoint((int) Main.worldSurface + 50, 50, 500, 50), structures)) ++num269; } progress.Set(0.4f); if (!WorldGen.crimson) { int num270 = (int) ((double) WorldGen.genRand.Next(1, 3) * (double) num258); int num271 = 0; while (num271 < num270) { if (Terraria.World.Generation.Biomes.Place(WorldGen.RandomWorldPoint((int) Main.worldSurface, 50, 500, 50), structures)) ++num271; } } TrackGenerator.Run((int) (10.0 * (double) num258), (int) ((double) num258 * 25.0) + 250); progress.Set(1f); })); WorldGen.AddGenerationPass("Final Cleanup", (WorldGenLegacyMethod) (progress => { for (int i = 0; i < Main.maxTilesX; ++i) { for (int index = 0; index < Main.maxTilesY; ++index) { if (Main.tile[i, index].active() && (!WorldGen.SolidTile(i, index + 1) || !WorldGen.SolidTile(i, index + 2))) { switch (Main.tile[i, index].type) { case 53: Main.tile[i, index].type = (ushort) 397; continue; case 112: Main.tile[i, index].type = (ushort) 398; continue; case 123: Main.tile[i, index].type = (ushort) 1; continue; case 224: Main.tile[i, index].type = (ushort) 147; continue; case 234: Main.tile[i, index].type = (ushort) 399; continue; default: continue; } } } } WorldGen.noTileActions = false; WorldGen.gen = false; Main.AnglerQuestSwap(); })); WorldGen._generator.GenerateWorld(customProgressObject); Main.WorldFileMetadata = FileMetadata.FromCurrentSettings(FileType.World); } public static Point RandomRectanglePoint(Microsoft.Xna.Framework.Rectangle rectangle) => new Point(WorldGen.genRand.Next(rectangle.X, rectangle.X + rectangle.Width), WorldGen.genRand.Next(rectangle.Y, rectangle.Y + rectangle.Height)); public static Point RandomRectanglePoint(int x, int y, int width, int height) => new Point(WorldGen.genRand.Next(x, x + width), WorldGen.genRand.Next(y, y + height)); public static Point RandomWorldPoint(int padding) => WorldGen.RandomWorldPoint(padding, padding, padding, padding); public static Point RandomWorldPoint(int top = 0, int right = 0, int bottom = 0, int left = 0) => new Point(WorldGen.genRand.Next(left, Main.maxTilesX - right), WorldGen.genRand.Next(top, Main.maxTilesY - bottom)); public static bool GrowPalmTree(int i, int y) { int index1 = y; while (Main.tile[i, index1].type == (ushort) 20) ++index1; Tile tile1 = Main.tile[i, index1]; Tile tile2 = Main.tile[i, index1 - 1]; if (!tile1.active() || tile1.halfBrick() || tile1.slope() != (byte) 0 || tile2.wall != (byte) 0 || tile2.liquid != (byte) 0 || tile1.type != (ushort) 53 && tile1.type != (ushort) 234 && tile1.type != (ushort) 116 && tile1.type != (ushort) 112 || !WorldGen.EmptyTileCheck(i - 1, i + 1, index1 - 30, index1 - 1, 20)) return false; int num1 = WorldGen.genRand.Next(10, 21); int num2 = WorldGen.genRand.Next(-8, 9) * 2; short num3 = 0; for (int index2 = 0; index2 < num1; ++index2) { Tile tile3 = Main.tile[i, index1 - 1 - index2]; if (index2 == 0) { tile3.active(true); tile3.type = (ushort) 323; tile3.frameX = (short) 66; tile3.frameY = (short) 0; } else if (index2 == num1 - 1) { tile3.active(true); tile3.type = (ushort) 323; tile3.frameX = (short) (22 * WorldGen.genRand.Next(4, 7)); tile3.frameY = num3; } else { if ((int) num3 != num2) { float num4 = (float) index2 / (float) num1; if ((double) num4 >= 0.25 && ((double) num4 < 0.5 && WorldGen.genRand.Next(13) == 0 || (double) num4 < 0.699999988079071 && WorldGen.genRand.Next(9) == 0 || (double) num4 < 0.949999988079071 && WorldGen.genRand.Next(5) == 0 || true)) { short num5 = (short) Math.Sign(num2); num3 += (short) ((int) num5 * 2); } } tile3.active(true); tile3.type = (ushort) 323; tile3.frameX = (short) (22 * WorldGen.genRand.Next(0, 3)); tile3.frameY = num3; } } WorldGen.RangeFrame(i - 2, index1 - num1 - 1, i + 2, index1 + 1); if (Main.netMode == 2) NetMessage.SendTileSquare(-1, i, (int) ((double) index1 - (double) num1 * 0.5), num1 + 1); return true; } public static bool GrowEpicTree(int i, int y) { int index1 = y; while (Main.tile[i, index1].type == (ushort) 20) ++index1; if (Main.tile[i, index1].active() && !Main.tile[i, index1].halfBrick() && Main.tile[i, index1].slope() == (byte) 0 && Main.tile[i, index1].type == (ushort) 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 == (ushort) 2 || Main.tile[i - 1, index1].type == (ushort) 23 || Main.tile[i - 1, index1].type == (ushort) 60 || Main.tile[i - 1, index1].type == (ushort) 109) || Main.tile[i + 1, index1].active() && (Main.tile[i + 1, index1].type == (ushort) 2 || Main.tile[i + 1, index1].type == (ushort) 23 || Main.tile[i + 1, index1].type == (ushort) 60 || Main.tile[i + 1, index1].type == (ushort) 109))) { int num1 = 2; 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 = (ushort) 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 ? 1 : (num4 == 7 ? 1 : 0)) & (flag1 ? 1 : 0)) != 0 || ((num4 == 6 ? 1 : (num4 == 7 ? 1 : 0)) & (flag2 ? 1 : 0)) != 0) 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 = (ushort) 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 = (ushort) 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].halfBrick() && Main.tile[i - 1, index1].slope() == (byte) 0 && (Main.tile[i - 1, index1].type == (ushort) 2 || Main.tile[i - 1, index1].type == (ushort) 23 || Main.tile[i - 1, index1].type == (ushort) 60 || Main.tile[i - 1, index1].type == (ushort) 109)) flag3 = true; if (Main.tile[i + 1, index1].active() && !Main.tile[i + 1, index1].halfBrick() && Main.tile[i + 1, index1].slope() == (byte) 0 && (Main.tile[i + 1, index1].type == (ushort) 2 || Main.tile[i + 1, index1].type == (ushort) 23 || Main.tile[i + 1, index1].type == (ushort) 60 || Main.tile[i + 1, index1].type == (ushort) 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 = 2; if (flag4 && !flag3) num7 = 1; if (num7 == 0 || num7 == 1) { Main.tile[i + 1, index1 - 1].active(true); Main.tile[i + 1, index1 - 1].type = (ushort) 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 = (ushort) 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(8) != 0) { 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 bool Pyramid(int i, int j) { ushort num1 = 151; int num2 = j - WorldGen.genRand.Next(0, 7); int num3 = WorldGen.genRand.Next(9, 13); int num4 = 1; int num5 = j + WorldGen.genRand.Next(75, 125); for (int index1 = num2; index1 < num5; ++index1) { for (int index2 = i - num4; index2 < i + num4 - 1; ++index2) { Main.tile[index2, index1].type = num1; Main.tile[index2, index1].active(true); Main.tile[index2, index1].halfBrick(false); Main.tile[index2, index1].slope((byte) 0); } ++num4; } for (int i1 = i - num4 - 5; i1 <= i + num4 + 5; ++i1) { for (int j1 = j - 1; j1 <= num5 + 1; ++j1) { bool flag = true; for (int index3 = i1 - 1; index3 <= i1 + 1; ++index3) { for (int index4 = j1 - 1; index4 <= j1 + 1; ++index4) { if ((int) Main.tile[index3, index4].type != (int) num1) flag = false; } } if (flag) { Main.tile[i1, j1].wall = (byte) 34; WorldGen.SquareWallFrame(i1, j1); } } } int num6 = 1; if (WorldGen.genRand.Next(2) == 0) num6 = -1; int num7 = i - num3 * num6; int j2 = j + num3; int num8 = WorldGen.genRand.Next(5, 8); bool flag1 = true; int num9 = WorldGen.genRand.Next(20, 30); while (flag1) { flag1 = false; bool flag2 = false; for (int index5 = j2; index5 <= j2 + num8; ++index5) { int index6 = num7; if (Main.tile[index6, index5 - 1].type == (ushort) 53) flag2 = true; if ((int) Main.tile[index6, index5].type == (int) num1) { Main.tile[index6, index5 + 1].wall = (byte) 34; Main.tile[index6 + num6, index5].wall = (byte) 34; Main.tile[index6, index5].active(false); flag1 = true; } if (flag2) { Main.tile[index6, index5].type = (ushort) 53; Main.tile[index6, index5].active(true); Main.tile[index6, index5].halfBrick(false); Main.tile[index6, index5].slope((byte) 0); } } num7 -= num6; } int index7 = i - num3 * num6; bool flag3 = true; bool flag4 = false; bool flag5 = true; while (flag5) { for (int index8 = j2; index8 <= j2 + num8; ++index8) { int index9 = index7; Main.tile[index9, index8].active(false); } index7 += num6; ++j2; --num9; if (j2 >= num5 - num8 * 2) num9 = 10; if (num9 <= 0) { bool flag6 = false; if (!flag3 && !flag4) { flag4 = true; flag6 = true; int num10 = WorldGen.genRand.Next(7, 13); int num11 = WorldGen.genRand.Next(23, 28); int num12 = num11; int num13 = index7; while (num11 > 0) { for (int index10 = j2 - num10 + num8; index10 <= j2 + num8; ++index10) { if (num11 == num12 || num11 == 1) { if (index10 >= j2 - num10 + num8 + 2) Main.tile[index7, index10].active(false); } else if (num11 == num12 - 1 || num11 == 2 || num11 == num12 - 2 || num11 == 3) { if (index10 >= j2 - num10 + num8 + 1) Main.tile[index7, index10].active(false); } else Main.tile[index7, index10].active(false); } --num11; index7 += num6; } int num14 = index7 - num6; int minValue = num14; int maxValue = num13; if (num14 > num13) { minValue = num13; maxValue = num14; } int contain = WorldGen.genRand.Next(3); switch (contain) { case 0: contain = 857; break; case 1: contain = 848; break; case 2: contain = 934; break; } WorldGen.AddBuriedChest((minValue + maxValue) / 2, j2, contain, Style: 1); int num15 = WorldGen.genRand.Next(1, 10); for (int index11 = 0; index11 < num15; ++index11) WorldGen.PlaceSmallPile(WorldGen.genRand.Next(minValue, maxValue), j2 + num8, WorldGen.genRand.Next(16, 19), 1); WorldGen.PlaceTile(minValue + 2, j2 - num10 + num8 + 1, 91, true, style: WorldGen.genRand.Next(4, 7)); WorldGen.PlaceTile(minValue + 3, j2 - num10 + num8, 91, true, style: WorldGen.genRand.Next(4, 7)); WorldGen.PlaceTile(maxValue - 2, j2 - num10 + num8 + 1, 91, true, style: WorldGen.genRand.Next(4, 7)); WorldGen.PlaceTile(maxValue - 3, j2 - num10 + num8, 91, true, style: WorldGen.genRand.Next(4, 7)); for (int x = minValue; x <= maxValue; ++x) WorldGen.PlacePot(x, j2 + num8, style: WorldGen.genRand.Next(25, 28)); } if (flag3) { flag3 = false; num6 *= -1; num9 = WorldGen.genRand.Next(15, 20); } else if (flag6) { num9 = WorldGen.genRand.Next(10, 15); } else { num6 *= -1; num9 = WorldGen.genRand.Next(20, 40); } } if (j2 >= num5 - num8) flag5 = false; } int num16 = WorldGen.genRand.Next(100, 200); int num17 = WorldGen.genRand.Next(500, 800); bool flag7 = true; int num18 = num8; int num19 = WorldGen.genRand.Next(10, 50); if (num6 == 1) index7 -= num18; int num20 = WorldGen.genRand.Next(5, 10); while (flag7) { --num16; --num17; --num19; for (int index12 = index7 - num20 - WorldGen.genRand.Next(0, 2); index12 <= index7 + num18 + num20 + WorldGen.genRand.Next(0, 2); ++index12) { int index13 = j2; if (index12 >= index7 && index12 <= index7 + num18) { Main.tile[index12, index13].active(false); } else { Main.tile[index12, index13].type = num1; Main.tile[index12, index13].active(true); Main.tile[index12, index13].halfBrick(false); Main.tile[index12, index13].slope((byte) 0); } if (index12 >= index7 - 1 && index12 <= index7 + 1 + num18) Main.tile[index12, index13].wall = (byte) 34; } ++j2; index7 += num6; if (num16 <= 0) { flag7 = false; for (int index14 = index7 + 1; index14 <= index7 + num18 - 1; ++index14) { if (Main.tile[index14, j2].active()) flag7 = true; } } if (num19 < 0) { num19 = WorldGen.genRand.Next(10, 50); num6 *= -1; } if (num17 <= 0) flag7 = false; } return true; } public static bool GrowLivingTree(int i, int j) { int index1 = 0; int[] numArray1 = new int[1000]; int[] numArray2 = new int[1000]; int[] numArray3 = new int[1000]; int[] numArray4 = new int[1000]; int index2 = 0; int[] numArray5 = new int[2000]; int[] numArray6 = new int[2000]; bool[] flagArray = new bool[2000]; if (!WorldGen.SolidTile(i, j + 1) || Main.tile[i, j].active()) return false; int num1 = i - WorldGen.genRand.Next(1, 4); int num2 = i + WorldGen.genRand.Next(1, 4); if (j < 150) return false; int num3 = i - 50; int num4 = i + 50; for (int index3 = num3; index3 <= num4; ++index3) { for (int index4 = 5; index4 < j - 5; ++index4) { if (Main.tile[index3, index4].active()) return false; } } int num5 = num1; int num6 = num2; int num7 = num1; int num8 = num2; int minValue = num2 - num1; bool flag1 = true; int num9 = WorldGen.genRand.Next(-10, -5); int num10 = WorldGen.genRand.Next(2); int index5 = j; while (flag1) { ++num9; if (num9 > WorldGen.genRand.Next(5, 30)) { num9 = 0; numArray2[index1] = index5 + WorldGen.genRand.Next(5); if (WorldGen.genRand.Next(5) == 0) num10 = num10 != 0 ? 0 : 1; if (num10 == 0) { numArray3[index1] = -1; numArray1[index1] = num1; numArray4[index1] = num2 - num1; if (WorldGen.genRand.Next(2) == 0) ++num1; ++num5; num10 = 1; } else { numArray3[index1] = 1; numArray1[index1] = num2; numArray4[index1] = num2 - num1; if (WorldGen.genRand.Next(2) == 0) --num2; --num6; num10 = 0; } if (num5 == num6) flag1 = false; ++index1; } for (int index6 = num1; index6 <= num2; ++index6) { Main.tile[index6, index5].type = (ushort) 191; Main.tile[index6, index5].active(true); Main.tile[index6, index5].halfBrick(false); } --index5; } for (int index7 = 0; index7 < index1; ++index7) { int index8 = numArray1[index7] + numArray3[index7]; int index9 = numArray2[index7]; int num11 = (int) ((double) numArray4[index7] * (1.0 + (double) WorldGen.genRand.Next(20, 30) * 0.100000001490116)); Main.tile[index8, index9 + 1].type = (ushort) 191; Main.tile[index8, index9 + 1].active(true); Main.tile[index8, index9 + 1].halfBrick(false); int num12 = WorldGen.genRand.Next(3, 5); while (num11 > 0) { --num11; Main.tile[index8, index9].type = (ushort) 191; Main.tile[index8, index9].active(true); Main.tile[index8, index9].halfBrick(false); if (WorldGen.genRand.Next(10) == 0) { if (WorldGen.genRand.Next(2) == 0) --index9; else ++index9; } else index8 += numArray3[index7]; if (num12 > 0) --num12; else if (WorldGen.genRand.Next(2) == 0) { num12 = WorldGen.genRand.Next(2, 5); if (WorldGen.genRand.Next(2) == 0) { Main.tile[index8, index9].type = (ushort) 191; Main.tile[index8, index9].active(true); Main.tile[index8, index9].halfBrick(false); Main.tile[index8, index9 - 1].type = (ushort) 191; Main.tile[index8, index9 - 1].active(true); Main.tile[index8, index9 - 1].halfBrick(false); numArray5[index2] = index8; numArray6[index2] = index9; ++index2; } else { Main.tile[index8, index9].type = (ushort) 191; Main.tile[index8, index9].active(true); Main.tile[index8, index9].halfBrick(false); Main.tile[index8, index9 + 1].type = (ushort) 191; Main.tile[index8, index9 + 1].active(true); Main.tile[index8, index9 + 1].halfBrick(false); numArray5[index2] = index8; numArray6[index2] = index9; ++index2; } } if (num11 == 0) { numArray5[index2] = index8; numArray6[index2] = index9; ++index2; } } } int index10 = (num1 + num2) / 2; int index11 = index5; int num13 = WorldGen.genRand.Next(minValue * 3, minValue * 5); int num14 = 0; int num15 = 0; for (; num13 > 0; --num13) { Main.tile[index10, index11].type = (ushort) 191; Main.tile[index10, index11].active(true); Main.tile[index10, index11].halfBrick(false); if (num14 > 0) --num14; if (num15 > 0) --num15; for (int index12 = -1; index12 < 2; ++index12) { if (index12 != 0 && (index12 < 0 && num14 == 0 || index12 > 0 && num15 == 0) && WorldGen.genRand.Next(2) == 0) { int index13 = index10; int index14 = index11; int num16 = WorldGen.genRand.Next(minValue, minValue * 3); if (index12 < 0) num14 = WorldGen.genRand.Next(3, 5); if (index12 > 0) num15 = WorldGen.genRand.Next(3, 5); int num17 = 0; while (num16 > 0) { --num16; index13 += index12; Main.tile[index13, index14].type = (ushort) 191; Main.tile[index13, index14].active(true); Main.tile[index13, index14].halfBrick(false); if (num16 == 0) { numArray5[index2] = index13; numArray6[index2] = index14; flagArray[index2] = true; ++index2; } if (WorldGen.genRand.Next(5) == 0) { if (WorldGen.genRand.Next(2) == 0) --index14; else ++index14; Main.tile[index13, index14].type = (ushort) 191; Main.tile[index13, index14].active(true); Main.tile[index13, index14].halfBrick(false); } if (num17 > 0) --num17; else if (WorldGen.genRand.Next(3) == 0) { num17 = WorldGen.genRand.Next(2, 4); int index15 = index13; int num18 = index14; int index16 = WorldGen.genRand.Next(2) != 0 ? num18 + 1 : num18 - 1; Main.tile[index15, index16].type = (ushort) 191; Main.tile[index15, index16].active(true); Main.tile[index15, index16].halfBrick(false); numArray5[index2] = index15; numArray6[index2] = index16; flagArray[index2] = true; ++index2; } } } } numArray5[index2] = index10; numArray6[index2] = index11; ++index2; if (WorldGen.genRand.Next(4) == 0) { if (WorldGen.genRand.Next(2) == 0) --index10; else ++index10; Main.tile[index10, index11].type = (ushort) 191; Main.tile[index10, index11].active(true); Main.tile[index10, index11].halfBrick(false); } --index11; } for (int i1 = num7; i1 <= num8; ++i1) { int num19 = WorldGen.genRand.Next(1, 6); int j1 = j + 1; while (num19 > 0) { if (WorldGen.SolidTile(i1, j1)) --num19; Main.tile[i1, j1].type = (ushort) 191; Main.tile[i1, j1].active(true); Main.tile[i1, j1].halfBrick(false); ++j1; } int num20 = j1; for (int index17 = 0; index17 < 2; ++index17) { int index18 = num20; int num21 = (num7 + num8) / 2; int num22 = 1; int num23 = i1 >= num21 ? 1 : -1; if (i1 == num21 || minValue > 6 && (i1 == num21 - 1 || i1 == num21 + 1)) num23 = 0; int num24 = num23; int index19 = i1; int num25 = WorldGen.genRand.Next((int) ((double) minValue * 2.5), minValue * 4); while (num25 > 0) { --num25; index19 += num23; Main.tile[index19, index18].type = (ushort) 191; Main.tile[index19, index18].active(true); Main.tile[index19, index18].halfBrick(false); index18 += num22; Main.tile[index19, index18].type = (ushort) 191; Main.tile[index19, index18].active(true); Main.tile[index19, index18].halfBrick(false); if (!Main.tile[index19, index18 + 1].active()) { num23 = 0; num22 = 1; } if (WorldGen.genRand.Next(3) == 0) num23 = num24 >= 0 ? (num24 <= 0 ? WorldGen.genRand.Next(-1, 2) : (num23 != 0 ? 0 : 1)) : (num23 != 0 ? 0 : -1); if (WorldGen.genRand.Next(3) == 0) num22 = num22 != 0 ? 0 : 1; } } } for (int index20 = 0; index20 < index2; ++index20) { int num26 = (int) ((double) WorldGen.genRand.Next(5, 8) * (1.0 + (double) minValue * 0.0500000007450581)); if (flagArray[index20]) num26 = WorldGen.genRand.Next(7, 13); int num27 = numArray5[index20] - num26; int num28 = numArray5[index20] + num26; int num29 = numArray6[index20] - num26; int num30 = numArray6[index20] + num26; float num31 = (float) (2.0 - (double) WorldGen.genRand.Next(5) * 0.100000001490116); for (int index21 = num27; index21 <= num28; ++index21) { for (int index22 = num29; index22 <= num30; ++index22) { if (Main.tile[index21, index22].type != (ushort) 191 && (double) Math.Abs(numArray5[index20] - index21) + (double) Math.Abs(numArray6[index20] - index22) * (double) num31 < (double) num26) { Main.tile[index21, index22].type = (ushort) 192; Main.tile[index21, index22].active(true); Main.tile[index21, index22].halfBrick(false); } } } } if (minValue >= 4 && WorldGen.genRand.Next(3) != 0) { bool flag2 = false; int num32 = num7; int num33 = num8; int j2 = j - 5; int num34 = 50; int num35 = WorldGen.genRand.Next(400, 700); int num36 = 1; bool flag3 = true; while (num35 > 0) { ++j2; --num35; --num34; int num37 = (num7 + num8) / 2; int num38 = 0; if (j2 > j && minValue == 4) num38 = 1; for (int index23 = num7 - num38; index23 <= num8 + num38; ++index23) { if (index23 > num37 - 2 && index23 <= num37 + 1) { if (Main.tile[index23, j2].type != (ushort) 19) Main.tile[index23, j2].active(false); Main.tile[index23, j2].wall = (byte) 78; if (Main.tile[index23 - 1, j2].wall > (byte) 0 || (double) j2 >= Main.worldSurface) Main.tile[index23 - 1, j2].wall = (byte) 78; if (Main.tile[index23 + 1, j2].wall > (byte) 0 || (double) j2 >= Main.worldSurface) Main.tile[index23 + 1, j2].wall = (byte) 78; } else { Main.tile[index23, j2].type = (ushort) 191; Main.tile[index23, j2].active(true); Main.tile[index23, j2].halfBrick(false); } } ++num36; if (num36 >= 6) { num36 = 0; int num39 = WorldGen.genRand.Next(3); if (num39 == 0) num39 = -1; if (flag3) num39 = 2; if (num39 == 2) { flag3 = false; for (int i2 = num7; i2 <= num8; ++i2) { if (i2 > num37 - 2 && i2 <= num37 + 1) { Main.tile[i2, j2 + 1].active(false); WorldGen.PlaceTile(i2, j2 + 1, 19, true, style: 23); } } } else { num7 += num39; num8 += num39; } if (num34 <= 0 && !flag2) { flag2 = true; int num40 = WorldGen.genRand.Next(2); if (num40 == 0) num40 = -1; int num41 = j2 - 2; int num42 = j2; int num43 = (num7 + num8) / 2; if (num40 < 0) --num43; if (num40 > 0) ++num43; int num44 = WorldGen.genRand.Next(15, 30); int num45 = num43 + num44; if (num40 < 0) { num45 = num43; num43 -= num44; } WorldGen.dMinX = num43; WorldGen.dMaxX = num45; if (num40 < 0) WorldGen.dMinX -= 40; else WorldGen.dMaxX += 40; bool flag4 = false; for (int index24 = num43; index24 < num45; ++index24) { for (int index25 = j2 - 20; index25 < j2 + 10; ++index25) { if (Main.tile[index24, index25].wall == (byte) 0 && !Main.tile[index24, index25].active() && (double) index25 < Main.worldSurface) flag4 = true; } } if (!flag4) { for (int index26 = num43; index26 <= num45; ++index26) { for (int index27 = num41 - 2; index27 <= num42 + 2; ++index27) { if (Main.tile[index26, index27].wall != (byte) 78 && Main.tile[index26, index27].type != (ushort) 19) { Main.tile[index26, index27].active(true); Main.tile[index26, index27].type = (ushort) 191; Main.tile[index26, index27].halfBrick(false); } if (index27 >= num41 && index27 <= num42) { Main.tile[index26, index27].liquid = (byte) 0; Main.tile[index26, index27].wall = (byte) 78; Main.tile[index26, index27].active(false); } } } int i3 = (num7 + num8) / 2 + 3 * num40; int j3 = j2; WorldGen.PlaceTile(i3, j3, 10, true, style: 7); int num46 = WorldGen.genRand.Next(5, 9); int num47 = WorldGen.genRand.Next(4, 6); int num48; int num49; if (num40 < 0) { num48 = num43 + num46; num49 = num43 - num46; } else { num49 = num45 - num46; num48 = num45 + num46; } int num50 = num42 - num47; for (int index28 = num49 - 2; index28 <= num48 + 2; ++index28) { for (int index29 = num50 - 2; index29 <= num42 + 2; ++index29) { if (Main.tile[index28, index29].wall != (byte) 78 && Main.tile[index28, index29].type != (ushort) 19) { Main.tile[index28, index29].active(true); Main.tile[index28, index29].type = (ushort) 191; Main.tile[index28, index29].halfBrick(false); } if (index29 >= num50 && index29 <= num42 && index28 >= num49 && index28 <= num48) { Main.tile[index28, index29].liquid = (byte) 0; Main.tile[index28, index29].wall = (byte) 78; Main.tile[index28, index29].active(false); } } } int i4 = num49 - 2; if (num40 < 0) i4 = num48 + 2; WorldGen.PlaceTile(i4, j3, 10, true, style: 7); int i5 = num48; if (num40 < 0) i5 = num49; WorldGen.PlaceTile(i5, j2, 15, true, style: 5); if (num40 < 0) { Main.tile[i5, j2 - 1].frameX += (short) 18; Main.tile[i5, j2].frameX += (short) 18; } int i6 = num48 - 2; if (num40 < 0) i6 = num49 + 2; WorldGen.PlaceTile(i6, j2, 14, true, style: 6); int i7 = num48 - 4; if (num40 < 0) i7 = num49 + 4; WorldGen.PlaceTile(i7, j2, 15, true, style: 5); if (num40 > 0) { Main.tile[i7, j2 - 1].frameX += (short) 18; Main.tile[i7, j2].frameX += (short) 18; } int i8 = num48 - 7; if (num40 < 0) i8 = num49 + 8; WorldGen.genRand.Next(2); int contain = 832; WorldGen.AddBuriedChest(i8, j2, contain, Style: 12); } } } if (num34 <= 0) { bool flag5 = true; for (int i9 = num7; i9 <= num8; ++i9) { for (int j4 = j2 + 1; j4 <= j2 + 4; ++j4) { if (WorldGen.SolidTile(i9, j4)) flag5 = false; } } if (flag5) num35 = 0; } } int num51 = num32; int num52 = num33; int num53 = (num51 + num52) / 2; if (WorldGen.genRand.Next(2) == 0) num52 = num53; else num51 = num53; for (int index30 = num51; index30 <= num52; ++index30) { for (int index31 = j - 3; index31 <= j; ++index31) { Main.tile[index30, index31].active(false); bool flag6 = true; for (int index32 = index30 - 1; index32 <= index30 + 1; ++index32) { for (int index33 = index31 - 1; index33 <= index31 + 1; ++index33) { if (!Main.tile[index32, index33].active() && Main.tile[index32, index33].wall == (byte) 0) flag6 = false; } } if (flag6) Main.tile[index30, index31].wall = (byte) 78; } } } return true; } public static void TreeGrowFXCheck(int x, int y) { int height = 1; int num1 = -1; Tile tile1 = (Tile) null; for (int index = -1; index > -100; --index) { Tile tile2 = Main.tile[x, y + index]; if (tile2.active() && (tile2.type == (ushort) 5 || tile2.type == (ushort) 323 || tile2.type == (ushort) 72)) { tile1 = tile2; ++height; } else break; } for (int index = 1; index < 5; ++index) { Tile tile3 = Main.tile[x, y + index]; if (tile3.active() && (tile3.type == (ushort) 5 || tile3.type == (ushort) 323 || tile3.type == (ushort) 72)) { ++height; } else { int num2 = 0; if (tile1.frameX == (short) 22) { if (tile1.frameY == (short) 220) num2 = 1; else if (tile1.frameY == (short) 242) num2 = 2; } switch (tile3.type) { case 2: num1 = 910; goto label_39; case 23: case 400: num1 = 915; goto label_39; case 53: num1 = 911; goto label_39; case 60: num1 = 914; goto label_39; case 70: num1 = 912; goto label_39; case 109: if (x % 3 == 1) num2 += 3; if (x % 3 == 2) num2 += 6; int num3 = 917; switch (num2) { case 0: num1 = 2; break; case 1: num1 = 1; break; case 2: num1 = 7; break; case 3: num1 = 4; break; case 4: num1 = 5; break; case 5: num1 = 6; break; case 6: num1 = 3; break; case 7: num1 = 8; break; case 8: num1 = 0; break; } num1 += num3; height += 5; goto label_39; case 116: num1 = 919; goto label_39; case 147: num1 = 913; goto label_39; case 199: case 234: num1 = 916; goto label_39; default: goto label_39; } } } label_39: if (height <= 0 || num1 <= 0) return; if (Main.netMode == 2) NetMessage.SendData(112, number: 1, number2: ((float) x), number3: ((float) y), number4: ((float) height), number5: num1); if (Main.netMode != 0) return; WorldGen.TreeGrowFX(x, y, height, num1); } public static void TreeGrowFX(int x, int y, int height, int treeGore) { Vector2 vector2 = new Vector2((float) x, (float) y) * 16f + new Vector2(8f, 8f); int Type = treeGore; int num = 4; int maxValue = 2; for (int index1 = 0; index1 > -height; --index1) { if (index1 > -height / 2 && Main.rand.Next(3) != 0) { for (int index2 = 0; index2 < 5; ++index2) Dust.NewDust(vector2 + new Vector2(-16f, (float) (index1 * 16)) + Utils.RandomVector2(Main.rand, -20f, 20f), 4, 4, num + Main.rand.Next(maxValue), SpeedY: -4f, Alpha: 100); } else { float max = 10f; Gore.NewGore(vector2 + new Vector2(-16f, (float) (index1 * 16)), Utils.RandomVector2(Main.rand, -max, max), Type, (float) (0.699999988079071 + (double) Main.rand.NextFloat() * 0.600000023841858)); Gore.NewGore(vector2 + new Vector2(0.0f, (float) (index1 * 16)), Utils.RandomVector2(Main.rand, -max, max), Type, (float) (0.699999988079071 + (double) Main.rand.NextFloat() * 0.600000023841858)); Gore.NewGore(vector2 + new Vector2(16f, (float) (index1 * 16)), Utils.RandomVector2(Main.rand, -max, max), Type, (float) (0.699999988079071 + (double) Main.rand.NextFloat() * 0.600000023841858)); if (index1 == -height + 1) { for (int index3 = 0; index3 < 20; ++index3) Gore.NewGore(vector2 + new Vector2(0.0f, (float) (index1 * 16 - 40)) + Utils.RandomVector2(Main.rand, -40f, 40f), Utils.RandomVector2(Main.rand, -10f, 10f), Type, (float) (0.699999988079071 + (double) Main.rand.NextFloat() * 0.600000023841858)); } } } } public static bool GrowTree(int i, int y) { int index1 = y; while (Main.tile[i, index1].type == (ushort) 20) ++index1; if ((Main.tile[i - 1, index1 - 1].liquid != (byte) 0 || Main.tile[i, index1 - 1].liquid != (byte) 0 || Main.tile[i + 1, index1 - 1].liquid != (byte) 0) && Main.tile[i, index1].type != (ushort) 60 || !Main.tile[i, index1].nactive() || Main.tile[i, index1].halfBrick() || Main.tile[i, index1].slope() != (byte) 0 || Main.tile[i, index1].type != (ushort) 2 && Main.tile[i, index1].type != (ushort) 23 && Main.tile[i, index1].type != (ushort) 60 && Main.tile[i, index1].type != (ushort) 109 && Main.tile[i, index1].type != (ushort) 147 && Main.tile[i, index1].type != (ushort) 199 && Main.tile[i, index1].type != (ushort) 70 || Main.tile[i, index1 - 1].wall != (byte) 0 && Main.tile[i, index1 - 1].wall != (byte) 106 && Main.tile[i, index1 - 1].wall != (byte) 107 && (Main.tile[i, index1 - 1].wall < (byte) 138 || Main.tile[i, index1 - 1].wall > (byte) 141) && Main.tile[i, index1 - 1].wall != (byte) 145 && Main.tile[i, index1 - 1].wall != (byte) 150 && Main.tile[i, index1 - 1].wall != (byte) 152 || (!Main.tile[i - 1, index1].active() || Main.tile[i - 1, index1].type != (ushort) 2 && Main.tile[i - 1, index1].type != (ushort) 23 && Main.tile[i - 1, index1].type != (ushort) 60 && Main.tile[i - 1, index1].type != (ushort) 109 && Main.tile[i - 1, index1].type != (ushort) 147 && Main.tile[i - 1, index1].type != (ushort) 199 && Main.tile[i - 1, index1].type != (ushort) 70) && (!Main.tile[i + 1, index1].active() || Main.tile[i + 1, index1].type != (ushort) 2 && Main.tile[i + 1, index1].type != (ushort) 23 && Main.tile[i + 1, index1].type != (ushort) 60 && Main.tile[i + 1, index1].type != (ushort) 109 && Main.tile[i + 1, index1].type != (ushort) 147 && Main.tile[i + 1, index1].type != (ushort) 199 && Main.tile[i + 1, index1].type != (ushort) 70)) return false; int num1 = 2; int num2 = 16; if (Main.tile[i, index1].type == (ushort) 60) num2 += 5; if (!WorldGen.EmptyTileCheck(i - num1, i + num1, index1 - num2, index1 - 1, 20)) return false; 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 = (ushort) 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 ? 1 : (num5 == 7 ? 1 : 0)) & (flag1 ? 1 : 0)) != 0 || ((num5 == 6 ? 1 : (num5 == 7 ? 1 : 0)) & (flag2 ? 1 : 0)) != 0) 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 = (ushort) 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 = (ushort) 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].nactive() && !Main.tile[i - 1, index1].halfBrick() && Main.tile[i - 1, index1].slope() == (byte) 0 && (Main.tile[i - 1, index1].type == (ushort) 2 || Main.tile[i - 1, index1].type == (ushort) 23 || Main.tile[i - 1, index1].type == (ushort) 60 || Main.tile[i - 1, index1].type == (ushort) 109 || Main.tile[i - 1, index1].type == (ushort) 147 || Main.tile[i - 1, index1].type == (ushort) 199)) flag3 = true; if (Main.tile[i + 1, index1].nactive() && !Main.tile[i + 1, index1].halfBrick() && Main.tile[i + 1, index1].slope() == (byte) 0 && (Main.tile[i + 1, index1].type == (ushort) 2 || Main.tile[i + 1, index1].type == (ushort) 23 || Main.tile[i + 1, index1].type == (ushort) 60 || Main.tile[i + 1, index1].type == (ushort) 109 || Main.tile[i + 1, index1].type == (ushort) 147 || Main.tile[i + 1, index1].type == (ushort) 199)) 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 = 2; if (flag4 && !flag3) num8 = 1; if (num8 == 0 || num8 == 1) { Main.tile[i + 1, index1 - 1].active(true); Main.tile[i + 1, index1 - 1].type = (ushort) 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 = (ushort) 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(8) != 0) { 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) NetMessage.SendTileSquare(-1, i, (int) ((double) index1 - (double) num3 * 0.5), num3 + 1); return true; } public static void GrowUndergroundTree(int i, int y) { int index1 = y; if (Main.tile[i, index1].type != (ushort) 60 || !Main.tile[i, index1].nactive() || Main.tile[i, index1].halfBrick() || Main.tile[i, index1].slope() != (byte) 0 || Main.tile[i, index1].type != (ushort) 60 || (!Main.tile[i - 1, index1].active() || Main.tile[i - 1, index1].type != (ushort) 60) && (!Main.tile[i + 1, index1].active() || Main.tile[i + 1, index1].type != (ushort) 60)) return; int num1 = 1; int num2 = WorldGen.genRand.Next(5, 15); int num3 = num2 + 2; if (Main.tile[i, index1].type == (ushort) 60) num3 += 5; if (!WorldGen.EmptyTileCheck(i - num1, i + num1, index1 - num3, index1 - 1, 20)) return; bool flag1 = false; bool flag2 = false; 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 = (ushort) 5; int num4 = WorldGen.genRand.Next(3); int num5 = WorldGen.genRand.Next(10); if (index2 == index1 - 1 || index2 == index1 - num2) num5 = 0; while (((num5 == 5 ? 1 : (num5 == 7 ? 1 : 0)) & (flag1 ? 1 : 0)) != 0 || ((num5 == 6 ? 1 : (num5 == 7 ? 1 : 0)) & (flag2 ? 1 : 0)) != 0) 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 = (ushort) 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 = (ushort) 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].nactive() && !Main.tile[i - 1, index1].halfBrick() && Main.tile[i - 1, index1].slope() == (byte) 0 && (Main.tile[i - 1, index1].type == (ushort) 2 || Main.tile[i - 1, index1].type == (ushort) 23 || Main.tile[i - 1, index1].type == (ushort) 60 || Main.tile[i - 1, index1].type == (ushort) 109 || Main.tile[i - 1, index1].type == (ushort) 147)) flag3 = true; if (Main.tile[i + 1, index1].nactive() && !Main.tile[i + 1, index1].halfBrick() && Main.tile[i + 1, index1].slope() == (byte) 0 && (Main.tile[i + 1, index1].type == (ushort) 2 || Main.tile[i + 1, index1].type == (ushort) 23 || Main.tile[i + 1, index1].type == (ushort) 60 || Main.tile[i + 1, index1].type == (ushort) 109 || Main.tile[i + 1, index1].type == (ushort) 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 = 2; if (flag4 && !flag3) num8 = 1; if (num8 == 0 || num8 == 1) { Main.tile[i + 1, index1 - 1].active(true); Main.tile[i + 1, index1 - 1].type = (ushort) 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 = (ushort) 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(8) != 0) { int num12 = WorldGen.genRand.Next(3); if (num12 == 0) { Main.tile[i, index1 - num2].frameX = (short) 22; Main.tile[i, index1 - num2].frameY = (short) 198; } if (num12 == 1) { Main.tile[i, index1 - num2].frameX = (short) 22; Main.tile[i, index1 - num2].frameY = (short) 220; } if (num12 == 2) { Main.tile[i, index1 - num2].frameX = (short) 22; Main.tile[i, index1 - num2].frameY = (short) 242; } } else { int num13 = WorldGen.genRand.Next(3); if (num13 == 0) { Main.tile[i, index1 - num2].frameX = (short) 0; Main.tile[i, index1 - num2].frameY = (short) 198; } if (num13 == 1) { Main.tile[i, index1 - num2].frameX = (short) 0; Main.tile[i, index1 - num2].frameY = (short) 220; } if (num13 == 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) return; NetMessage.SendTileSquare(-1, i, (int) ((double) index1 - (double) num2 * 0.5), num2 + 1); } public static bool 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].nactive() || Main.tile[i, index1].halfBrick() || Main.tile[i, index1].slope() != (byte) 0 || Main.tile[i, index1].type != (ushort) 70 || Main.tile[i, index1 - 1].wall != (byte) 0 || !Main.tile[i - 1, index1].active() || Main.tile[i - 1, index1].type != (ushort) 70 || !Main.tile[i + 1, index1].active() || Main.tile[i + 1, index1].type != (ushort) 70 || !WorldGen.EmptyTileCheck(i - 2, i + 2, index1 - 13, index1 - 1, 71)) return false; 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 = (ushort) 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) NetMessage.SendTileSquare(-1, i, (int) ((double) index1 - (double) num1 * 0.5), num1 + 1); return true; } 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 ((i < 380 || i > Main.maxTilesX - 380) && WorldGen.genRand.Next(3) == 0) WorldGen.GrowPalmTree(i, y); } if (WorldGen.genRand.Next(3) == 0) ++i; if (WorldGen.genRand.Next(4) == 0) ++i; } } public static void ExplodeMine(int i, int j) { int type = (int) Main.tile[i, j].type; 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, 164, 250, 10f, Main.myPlayer); } public static bool EmptyTileCheck(int startX, int endX, int startY, int endY, int ignoreID = -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()) { switch (ignoreID) { case -1: return false; case 11: if (Main.tile[index1, index2].type != (ushort) 11) return false; continue; case 20: switch (Main.tile[index1, index2].type) { case 3: case 20: case 24: case 32: case 61: case 62: case 69: case 71: case 73: case 74: case 82: case 83: case 84: case 110: case 113: case 201: case 233: case 352: continue; default: return false; } case 71: if (Main.tile[index1, index2].type != (ushort) 71) return false; continue; default: continue; } } } } return true; } public static void StartHardmode() { if (Main.netMode == 1 || Main.hardMode) return; Main.hardMode = true; Main.InitLifeBytes(); ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.smCallBack), (object) 1); } public static void smCallBack(object threadContext) { WorldGen.IsGeneratingHardMode = true; if (Main.rand == null) Main.rand = new UnifiedRandom((int) DateTime.Now.Ticks); float num1 = (float) WorldGen.genRand.Next(300, 400) * (1f / 1000f); float num2 = (float) WorldGen.genRand.Next(200, 300) * (1f / 1000f); int i1 = (int) ((double) Main.maxTilesX * (double) num1); int i2 = (int) ((double) Main.maxTilesX * (1.0 - (double) num1)); int num3 = 1; if (WorldGen.genRand.Next(2) == 0) { i2 = (int) ((double) Main.maxTilesX * (double) num1); i1 = (int) ((double) Main.maxTilesX * (1.0 - (double) num1)); num3 = -1; } int num4 = 1; if (WorldGen.dungeonX < Main.maxTilesX / 2) num4 = -1; if (num4 < 0) { if (i2 < i1) i2 = (int) ((double) Main.maxTilesX * (double) num2); else i1 = (int) ((double) Main.maxTilesX * (double) num2); } else if (i2 > i1) i2 = (int) ((double) Main.maxTilesX * (1.0 - (double) num2)); else i1 = (int) ((double) Main.maxTilesX * (1.0 - (double) num2)); WorldGen.GERunner(i1, 0, (float) (3 * num3), 5f); WorldGen.GERunner(i2, 0, (float) (3 * -num3), 5f, false); int num5 = (int) (25.0 * (double) ((float) Main.maxTilesX / 4200f)); ShapeData data = new ShapeData(); int num6 = 0; while (num5 > 0) { if (++num6 % 15000 == 0) --num5; Point point = WorldGen.RandomWorldPoint((int) Main.worldSurface - 100, 1, 190, 1); Tile tile1 = Main.tile[point.X, point.Y]; Tile tile2 = Main.tile[point.X, point.Y - 1]; byte type = 0; if (TileID.Sets.Crimson[(int) tile1.type]) type = (byte) (192 + WorldGen.genRand.Next(4)); else if (TileID.Sets.Corrupt[(int) tile1.type]) type = (byte) (188 + WorldGen.genRand.Next(4)); else if (TileID.Sets.Hallow[(int) tile1.type]) type = (byte) (200 + WorldGen.genRand.Next(4)); if (tile1.active() && type != (byte) 0 && !tile2.active()) { bool flag = WorldUtils.Gen(new Point(point.X, point.Y - 1), (GenShape) new ShapeFloodFill(1000), Actions.Chain((GenAction) new Modifiers.IsNotSolid(), (GenAction) new Modifiers.OnlyWalls(new byte[30] { (byte) 0, (byte) 54, (byte) 55, (byte) 56, (byte) 57, (byte) 58, (byte) 59, (byte) 61, (byte) 185, (byte) 212, (byte) 213, (byte) 214, (byte) 215, (byte) 196, (byte) 197, (byte) 198, (byte) 199, (byte) 15, (byte) 40, (byte) 71, (byte) 64, (byte) 204, (byte) 205, (byte) 206, (byte) 207, (byte) 208, (byte) 209, (byte) 210, (byte) 211, (byte) 71 }), new Actions.Blank().Output(data))); if (data.Count > 50 & flag) { WorldUtils.Gen(new Point(point.X, point.Y), (GenShape) new ModShapes.OuterOutline(data, useInterior: true), (GenAction) new Actions.PlaceWall(type)); --num5; } data.Clear(); } } switch (Main.netMode) { case 0: Main.NewText(Lang.misc[15].Value, (byte) 50, B: (byte) 130); break; case 2: NetMessage.BroadcastChatMessage(NetworkText.FromKey(Lang.misc[15].Key), new Color(50, (int) byte.MaxValue, 130)); break; } AchievementsHelper.NotifyProgressionEvent(9); if (Main.netMode == 2) Netplay.ResetSections(); WorldGen.IsGeneratingHardMode = false; } public static bool PlaceDoor(int i, int j, int type, int style = 0) { int num = 54 * style; try { if (!Main.tile[i, j - 2].nactive() || !Main.tileSolid[(int) Main.tile[i, j - 2].type] || !WorldGen.SolidTile(i, j + 2)) return false; Main.tile[i, j - 1].active(true); Main.tile[i, j - 1].type = (ushort) 10; Main.tile[i, j - 1].frameY = (short) num; Main.tile[i, j - 1].frameX = (short) (WorldGen.genRand.Next(3) * 18); Main.tile[i, j].active(true); Main.tile[i, j].type = (ushort) 10; Main.tile[i, j].frameY = (short) (num + 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 = (ushort) 10; Main.tile[i, j + 1].frameY = (short) (num + 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 num2 = i; if (Main.tile[i, j] == null) Main.tile[i, j] = new Tile(); int frameX = (int) Main.tile[i, j].frameX; Tile tile = Main.tile[i, j]; if (tile.type != (ushort) 11) return false; int frameY = (int) tile.frameY; int num3 = 0; int num4 = 0; while (frameY >= 54) { frameY -= 54; ++num3; } if (frameX >= 72) { int num5 = num3 + 36 * (frameX / 72); num4 += 54 * (frameX / 72); } int y = j - frameY / 18; switch (frameX % 72) { case 0: num2 = i; num1 = 1; break; case 18: num2 = i - 1; num1 = 1; break; case 36: num2 = i + 1; num1 = -1; break; case 54: num2 = i; num1 = -1; break; } int num6 = num2; if (num1 == -1) num6 = num2 - 1; if (!forced) { for (int j1 = y; j1 < y + 3; ++j1) { if (!Collision.EmptyTile(num2, j1, true)) return false; } } for (int index1 = num6; index1 < num6 + 2; ++index1) { for (int index2 = y; index2 < y + 3; ++index2) { if (index1 == num2) { if (Main.tile[index1, index2] == null) Main.tile[index1, index2] = new Tile(); Main.tile[index1, index2].type = (ushort) 10; Main.tile[index1, index2].frameX = (short) (WorldGen.genRand.Next(3) * 18 + num4); } else { if (Main.tile[index1, index2] == null) Main.tile[index1, index2] = new Tile(); Main.tile[index1, index2].active(false); } } } if (Main.netMode != 1 && Wiring.running) { Wiring.SkipWire(num2, y); Wiring.SkipWire(num2, y + 1); Wiring.SkipWire(num2, y + 2); } for (int i1 = num2 - 1; i1 <= num2 + 1; ++i1) { for (int j2 = y - 1; j2 <= y + 2; ++j2) WorldGen.TileFrame(i1, 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) || Main.wallDungeon[(int) Main.tile[endX, endY].wall]) return false; Tile tile1 = Main.tile[endX - 1, endY + 1]; Tile tile2 = Main.tile[endX, endY + 1]; if (!tile1.nactive() || !Main.tileSolid[(int) tile1.type] || !tile2.nactive() || !Main.tileSolid[(int) tile2.type]) return false; if (tile1.blockType() != 0) { tile1.slope((byte) 0); tile1.halfBrick(false); } if (tile2.blockType() != 0) { tile2.slope((byte) 0); tile2.halfBrick(false); } Main.tile[endX - 1, endY - 1].active(true); Main.tile[endX - 1, endY - 1].type = (ushort) 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 = (ushort) 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 = (ushort) 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 = (ushort) 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 == (ushort) 31) return; } } short num = 0; if (WorldGen.crimson) num += (short) 36; Main.tile[x - 1, y - 1].active(true); Main.tile[x - 1, y - 1].type = (ushort) 31; Main.tile[x - 1, y - 1].frameX = num; Main.tile[x - 1, y - 1].frameY = (short) 0; Main.tile[x, y - 1].active(true); Main.tile[x, y - 1].type = (ushort) 31; Main.tile[x, y - 1].frameX = (short) (18 + (int) num); Main.tile[x, y - 1].frameY = (short) 0; Main.tile[x - 1, y].active(true); Main.tile[x - 1, y].type = (ushort) 31; Main.tile[x - 1, y].frameX = num; Main.tile[x - 1, y].frameY = (short) 18; Main.tile[x, y].active(true); Main.tile[x, y].type = (ushort) 31; Main.tile[x, y].frameX = (short) (18 + (int) num); Main.tile[x, y].frameY = (short) 18; } public static void AddHellHouses() { int minValue = (int) ((double) Main.maxTilesX * 0.25); for (int i = minValue; i < Main.maxTilesX - minValue; ++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()) { ushort tileType = (ushort) WorldGen.genRand.Next(75, 77); byte wallType = 13; if (WorldGen.genRand.Next(5) > 0) tileType = (ushort) 75; if (tileType == (ushort) 75) wallType = (byte) 14; WorldGen.HellFort(i, j, tileType, wallType); i += WorldGen.genRand.Next(30, 130); if (WorldGen.genRand.Next(10) == 0) i += WorldGen.genRand.Next(0, 200); } } float num1 = (float) (Main.maxTilesX / 4200); for (int index1 = 0; (double) index1 < 200.0 * (double) num1; ++index1) { int num2 = 0; bool flag1 = false; while (!flag1) { ++num2; 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 == (ushort) 75 || Main.tile[index2, j].type == (ushort) 76)) { int num3 = 0; if (Main.tile[index2 - 1, j].wall > (byte) 0) num3 = -1; else if (Main.tile[index2 + 1, j].wall > (byte) 0) num3 = 1; if (!Main.tile[index2 + num3, j].active() && !Main.tile[index2 + num3, 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 == (ushort) 4) { flag2 = true; break; } } } if (!flag2) { WorldGen.PlaceTile(index2 + num3, j, 4, true, true, style: 7); flag1 = true; } } } if (num2 > 1000) flag1 = true; } } float num4 = 4200000f / (float) Main.maxTilesX; for (int index5 = 0; (double) index5 < (double) num4; ++index5) { int i1 = WorldGen.genRand.Next(minValue, Main.maxTilesX - minValue); int j; for (j = WorldGen.genRand.Next(Main.maxTilesY - 250, Main.maxTilesY - 20); Main.tile[i1, j].wall != (byte) 13 && Main.tile[i1, j].wall != (byte) 14 || Main.tile[i1, j].active(); j = WorldGen.genRand.Next(Main.maxTilesY - 250, Main.maxTilesY - 20)) i1 = WorldGen.genRand.Next(minValue, Main.maxTilesX - minValue); if ((Main.tile[i1, j].wall == (byte) 13 || Main.tile[i1, j].wall == (byte) 14) && !Main.tile[i1, j].active()) { while (!WorldGen.SolidTile(i1, j) && j < Main.maxTilesY - 20) ++j; int index6 = j - 1; int i2 = i1; int i3 = i1; while (!Main.tile[i2, index6].active() && WorldGen.SolidTile(i2, index6 + 1)) --i2; int num5 = i2 + 1; while (!Main.tile[i3, index6].active() && WorldGen.SolidTile(i3, index6 + 1)) ++i3; int num6 = i3 - 1; int num7 = num6 - num5; int index7 = (num6 + num5) / 2; if (!Main.tile[index7, index6].active() && (Main.tile[index7, index6].wall == (byte) 13 || Main.tile[index7, index6].wall == (byte) 14) && WorldGen.SolidTile(index7, index6 + 1)) { int style1 = 16; int style2 = 13; int style3 = 14; int style4 = 49; int style5 = 4; int style6 = 8; int style7 = 15; int style8 = 9; int style9 = 10; int style10 = 17; int style11 = 25; int style12 = 25; int style13 = 23; int style14 = 25; int num8 = WorldGen.genRand.Next(13); int num9 = 0; int num10 = 0; if (num8 == 0) { num9 = 5; num10 = 4; } if (num8 == 1) { num9 = 4; num10 = 3; } if (num8 == 2) { num9 = 3; num10 = 5; } if (num8 == 3) { num9 = 4; num10 = 6; } if (num8 == 4) { num9 = 3; num10 = 3; } if (num8 == 5) { num9 = 5; num10 = 3; } if (num8 == 6) { num9 = 5; num10 = 4; } if (num8 == 7) { num9 = 5; num10 = 4; } if (num8 == 8) { num9 = 5; num10 = 4; } if (num8 == 9) { num9 = 3; num10 = 5; } if (num8 == 10) { num9 = 5; num10 = 3; } if (num8 == 11) { num9 = 2; num10 = 4; } if (num8 == 12) { num9 = 3; num10 = 3; } for (int index8 = index7 - num9; index8 <= index7 + num9; ++index8) { for (int index9 = index6 - num10; index9 <= index6; ++index9) { if (Main.tile[index8, index9].active()) { num8 = -1; break; } } } if ((double) num7 < (double) num9 * 1.75) num8 = -1; switch (num8) { case 0: WorldGen.PlaceTile(index7, index6, 14, true, style: style2); int num11 = WorldGen.genRand.Next(6); if (num11 < 3) WorldGen.PlaceTile(index7 + num11, index6 - 2, 33, true, style: style12); if (Main.tile[index7, index6].active()) { if (!Main.tile[index7 - 2, index6].active()) { WorldGen.PlaceTile(index7 - 2, index6, 15, true, style: style1); if (Main.tile[index7 - 2, index6].active()) { Main.tile[index7 - 2, index6].frameX += (short) 18; Main.tile[index7 - 2, index6 - 1].frameX += (short) 18; } } if (!Main.tile[index7 + 2, index6].active()) { WorldGen.PlaceTile(index7 + 2, index6, 15, true, style: style1); continue; } continue; } continue; case 1: WorldGen.PlaceTile(index7, index6, 18, true, style: style3); int num12 = WorldGen.genRand.Next(4); if (num12 < 2) WorldGen.PlaceTile(index7 + num12, index6 - 1, 33, true, style: style12); if (Main.tile[index7, index6].active()) { if (WorldGen.genRand.Next(2) == 0) { if (!Main.tile[index7 - 1, index6].active()) { WorldGen.PlaceTile(index7 - 1, index6, 15, true, style: style1); if (Main.tile[index7 - 1, index6].active()) { Main.tile[index7 - 1, index6].frameX += (short) 18; Main.tile[index7 - 1, index6 - 1].frameX += (short) 18; continue; } continue; } continue; } if (!Main.tile[index7 + 2, index6].active()) { WorldGen.PlaceTile(index7 + 2, index6, 15, true, style: style1); continue; } continue; } continue; case 2: WorldGen.PlaceTile(index7, index6, 105, true, style: style4); continue; case 3: WorldGen.PlaceTile(index7, index6, 101, true, style: style5); continue; case 4: if (WorldGen.genRand.Next(2) == 0) { WorldGen.PlaceTile(index7, index6, 15, true, style: style1); Main.tile[index7, index6].frameX += (short) 18; Main.tile[index7, index6 - 1].frameX += (short) 18; continue; } WorldGen.PlaceTile(index7, index6, 15, true, style: style1); continue; case 5: if (WorldGen.genRand.Next(2) == 0) { WorldGen.Place4x2(index7, index6, (ushort) 79, 1, style6); continue; } WorldGen.Place4x2(index7, index6, (ushort) 79, style: style6); continue; case 6: WorldGen.PlaceTile(index7, index6, 87, true, style: style7); continue; case 7: WorldGen.PlaceTile(index7, index6, 88, true, style: style8); continue; case 8: WorldGen.PlaceTile(index7, index6, 89, true, style: style9); continue; case 9: WorldGen.PlaceTile(index7, index6, 104, true, style: style10); continue; case 10: if (WorldGen.genRand.Next(2) == 0) { WorldGen.Place4x2(index7, index6, (ushort) 90, 1, style14); continue; } WorldGen.Place4x2(index7, index6, (ushort) 90, style: style14); continue; case 11: WorldGen.PlaceTile(index7, index6, 93, true, style: style13); continue; case 12: WorldGen.PlaceTile(index7, index6, 100, true, style: style11); continue; default: continue; } } } } float num13 = 420000f / (float) Main.maxTilesX; for (int index10 = 0; (double) index10 < (double) num13; ++index10) { int index11 = WorldGen.genRand.Next(minValue, Main.maxTilesX - minValue); int index12; for (index12 = WorldGen.genRand.Next(Main.maxTilesY - 250, Main.maxTilesY - 20); Main.tile[index11, index12].wall != (byte) 13 && Main.tile[index11, index12].wall != (byte) 14 || Main.tile[index11, index12].active(); index12 = WorldGen.genRand.Next(Main.maxTilesY - 250, Main.maxTilesY - 20)) index11 = WorldGen.genRand.Next(minValue, Main.maxTilesX - minValue); for (int index13 = 0; index13 < 2; ++index13) { int index14 = index11; int index15 = index11; while (!Main.tile[index14, index12].active() && (Main.tile[index14, index12].wall == (byte) 13 || Main.tile[index14, index12].wall == (byte) 14)) --index14; int num14 = index14 + 1; while (!Main.tile[index15, index12].active() && (Main.tile[index15, index12].wall == (byte) 13 || Main.tile[index15, index12].wall == (byte) 14)) ++index15; int num15 = index15 - 1; index11 = (num14 + num15) / 2; int index16 = index12; int index17 = index12; while (!Main.tile[index11, index16].active() && (Main.tile[index11, index16].wall == (byte) 13 || Main.tile[index11, index16].wall == (byte) 14)) --index16; int num16 = index16 + 1; while (!Main.tile[index11, index17].active() && (Main.tile[index11, index17].wall == (byte) 13 || Main.tile[index11, index17].wall == (byte) 14)) ++index17; int num17 = index17 - 1; index12 = (num16 + num17) / 2; } int index18 = index11; int index19 = index11; while (!Main.tile[index18, index12].active() && !Main.tile[index18, index12 - 1].active() && !Main.tile[index18, index12 + 1].active()) --index18; int num18 = index18 + 1; while (!Main.tile[index19, index12].active() && !Main.tile[index19, index12 - 1].active() && !Main.tile[index19, index12 + 1].active()) ++index19; int num19 = index19 - 1; int index20 = index12; int index21 = index12; while (!Main.tile[index11, index20].active() && !Main.tile[index11 - 1, index20].active() && !Main.tile[index11 + 1, index20].active()) --index20; int num20 = index20 + 1; while (!Main.tile[index11, index21].active() && !Main.tile[index11 - 1, index21].active() && !Main.tile[index11 + 1, index21].active()) ++index21; int num21 = index21 - 1; int num22 = (num18 + num19) / 2; int num23 = (num20 + num21) / 2; int num24 = num19 - num18; int num25 = num21 - num20; if (num24 > 7 && num25 > 5) { int num26 = 0; if (WorldGen.nearPicture2(num22, num23)) num26 = -1; if (num26 == 0) { Vector2 vector2 = WorldGen.randHellPicture(); int x = (int) vector2.X; int y = (int) vector2.Y; if (!WorldGen.nearPicture(num22, num23)) WorldGen.PlaceTile(num22, num23, x, true, style: y); } } } int[] numArray = new int[3] { WorldGen.genRand.Next(16, 22), WorldGen.genRand.Next(16, 22), WorldGen.genRand.Next(16, 22) }; while (numArray[1] == numArray[0]) numArray[1] = WorldGen.genRand.Next(16, 22); while (numArray[2] == numArray[0] || numArray[2] == numArray[1]) numArray[2] = WorldGen.genRand.Next(16, 22); float num27 = 420000f / (float) Main.maxTilesX; for (int index22 = 0; (double) index22 < (double) num27; ++index22) { int i; int j1; do { i = WorldGen.genRand.Next(minValue, Main.maxTilesX - minValue); j1 = WorldGen.genRand.Next(Main.maxTilesY - 250, Main.maxTilesY - 20); } while (Main.tile[i, j1].wall != (byte) 13 && Main.tile[i, j1].wall != (byte) 14 || Main.tile[i, j1].active()); while (!WorldGen.SolidTile(i, j1) && j1 > 10) --j1; int j2 = j1 + 1; if (Main.tile[i, j2].wall == (byte) 13 || Main.tile[i, j2].wall == (byte) 14) { int num28 = WorldGen.genRand.Next(3); int style15 = 32; int style16 = 32; int num29; int num30; switch (num28) { case 1: num29 = 3; num30 = 3; break; case 2: num29 = 1; num30 = 2; break; default: num29 = 1; num30 = 3; break; } for (int index23 = i - 1; index23 <= i + num29; ++index23) { for (int index24 = j2; index24 <= j2 + num30; ++index24) { Tile tile = Main.tile[i, j2]; if (index23 < i || index23 == i + num29) { if (tile.active()) { switch (tile.type) { case 10: case 11: case 34: case 42: case 91: num28 = -1; continue; default: continue; } } } else if (tile.active()) num28 = -1; } } switch (num28) { case 0: WorldGen.PlaceTile(i, j2, 91, true, style: numArray[WorldGen.genRand.Next(3)]); continue; case 1: WorldGen.PlaceTile(i, j2, 34, true, style: style15); continue; case 2: WorldGen.PlaceTile(i, j2, 42, true, style: style16); continue; default: continue; } } } } public static void HellFort(int i, int j, ushort tileType = 75, byte wallType = 14) { int[] numArray1 = new int[5]; int[] numArray2 = new int[5]; int[] numArray3 = new int[10]; int[] numArray4 = new int[10]; int minValue1 = 8; int maxValue1 = 20; numArray1[2] = i - WorldGen.genRand.Next(minValue1 / 2, maxValue1 / 2); numArray2[2] = i + WorldGen.genRand.Next(minValue1 / 2, maxValue1 / 2); numArray1[3] = numArray2[2]; numArray2[3] = numArray1[3] + WorldGen.genRand.Next(minValue1, maxValue1); numArray1[4] = numArray2[3]; numArray2[4] = numArray1[4] + WorldGen.genRand.Next(minValue1, maxValue1); numArray2[1] = numArray1[2]; numArray1[1] = numArray2[1] - WorldGen.genRand.Next(minValue1, maxValue1); numArray2[0] = numArray1[1]; numArray1[0] = numArray2[0] - WorldGen.genRand.Next(minValue1, maxValue1); int minValue2 = 6; int maxValue2 = 12; numArray3[3] = j - WorldGen.genRand.Next(minValue2, maxValue2); numArray4[3] = j; for (int index = 4; index < 10; ++index) { numArray3[index] = numArray4[index - 1]; numArray4[index] = numArray3[index] + WorldGen.genRand.Next(minValue2, maxValue2); } for (int index = 2; index >= 0; --index) { numArray4[index] = numArray3[index + 1]; numArray3[index] = numArray4[index] - WorldGen.genRand.Next(minValue2, maxValue2); } bool flag1 = false; bool flag2 = false; bool[,] flagArray1 = new bool[5, 10]; int num1 = 3; int num2 = 3; for (int index1 = 0; index1 < 2; ++index1) { if (WorldGen.genRand.Next(3) == 0) { flag1 = true; int index2 = WorldGen.genRand.Next(10); if (index2 < num1) num1 = index2; if (index2 > num2) num2 = index2; int index3 = 1; if (WorldGen.genRand.Next(2) == 0) { flagArray1[0, index2] = true; flagArray1[1, index2] = true; index3 = 0; } else flagArray1[1, index2] = true; int num3 = WorldGen.genRand.Next(2); if (num3 == 0) num3 = -1; for (int index4 = WorldGen.genRand.Next(10); index4 > 0 && index2 >= 0 && index2 < 10; index2 += num3) flagArray1[index3, index2] = true; } if (WorldGen.genRand.Next(3) == 0) { flag2 = true; int index5 = WorldGen.genRand.Next(10); if (index5 < num1) num1 = index5; if (index5 > num2) num2 = index5; int index6 = 3; if (WorldGen.genRand.Next(2) == 0) { flagArray1[3, index5] = true; flagArray1[4, index5] = true; index6 = 4; } else flagArray1[3, index5] = true; int num4 = WorldGen.genRand.Next(2); if (num4 == 0) num4 = -1; for (int index7 = WorldGen.genRand.Next(10); index7 > 0 && index5 >= 0 && index5 < 10; index5 += num4) flagArray1[index6, index5] = true; } } for (int index8 = 0; index8 < 5; ++index8) { int index9 = numArray1[index8]; bool flag3 = false; for (int index10 = Main.maxTilesY - 200; index10 < Main.maxTilesY; ++index10) { if (Main.tile[index9, index10].wall > (byte) 0) flag3 = true; } if (flag3) { for (int index11 = 0; index11 < 10; ++index11) flagArray1[index8, index11] = false; } } int num5 = WorldGen.genRand.Next(10); if (num5 < num1) num1 = num5; int num6 = WorldGen.genRand.Next(10); if (num6 > num2) num2 = num6; if (!flag1 && !flag2) { while (num2 - num1 < 5) { int num7 = WorldGen.genRand.Next(10); if (num7 < num1) num1 = num7; int num8 = WorldGen.genRand.Next(10); if (num8 > num2) num2 = num8; } } for (int index = num1; index <= num2; ++index) flagArray1[2, index] = true; for (int index12 = 0; index12 < 5; ++index12) { for (int index13 = 0; index13 < 10; ++index13) { if (flagArray1[index12, index13] && (numArray3[index13] < Main.maxTilesY - 200 || numArray4[index13] > Main.maxTilesY - 20)) flagArray1[index12, index13] = false; } } for (int index14 = 0; index14 < 5; ++index14) { for (int index15 = 0; index15 < 10; ++index15) { if (flagArray1[index14, index15]) { for (int index16 = numArray1[index14]; index16 <= numArray2[index14]; ++index16) { for (int index17 = numArray3[index15]; index17 <= numArray4[index15]; ++index17) { Main.tile[index16, index17].liquid = (byte) 0; if (index16 == numArray1[index14] || index16 == numArray2[index14] || index17 == numArray3[index15] || index17 == numArray4[index15]) { Main.tile[index16, index17].active(true); Main.tile[index16, index17].type = tileType; Main.tile[index16, index17].halfBrick(false); Main.tile[index16, index17].slope((byte) 0); } else { Main.tile[index16, index17].wall = wallType; Main.tile[index16, index17].active(false); } } } } } } int style1 = 19; int style2 = 13; for (int index18 = 0; index18 < 4; ++index18) { bool[] flagArray2 = new bool[10]; bool flag4 = false; for (int index19 = 0; index19 < 10; ++index19) { if (flagArray1[index18, index19] && flagArray1[index18 + 1, index19]) { flagArray2[index19] = true; flag4 = true; } } while (flag4) { int index20 = WorldGen.genRand.Next(10); if (flagArray2[index20]) { flag4 = false; Main.tile[numArray2[index18], numArray4[index20] - 1].active(false); Main.tile[numArray2[index18], numArray4[index20] - 2].active(false); Main.tile[numArray2[index18], numArray4[index20] - 3].active(false); Main.tile[numArray2[index18], numArray4[index20] - 1].wall = wallType; Main.tile[numArray2[index18], numArray4[index20] - 2].wall = wallType; Main.tile[numArray2[index18], numArray4[index20] - 3].wall = wallType; WorldGen.PlaceTile(numArray2[index18], numArray4[index20] - 1, 10, true, style: style1); } } } for (int index21 = 0; index21 < 5; ++index21) { for (int index22 = 0; index22 < 10; ++index22) { if (flagArray1[index21, index22]) { if (index22 > 0 && flagArray1[index21, index22 - 1]) { int num9 = WorldGen.genRand.Next(numArray1[index21] + 2, numArray2[index21] - 1); int num10; for (num10 = WorldGen.genRand.Next(numArray1[index21] + 2, numArray2[index21] - 1); num10 - num9 < 2 || num10 - num9 > 5; num10 = WorldGen.genRand.Next(numArray1[index21] + 2, numArray2[index21] - 1)) num9 = WorldGen.genRand.Next(numArray1[index21] + 2, numArray2[index21] - 1); for (int i1 = num9; i1 <= num10; ++i1) { Main.tile[i1, numArray3[index22]].active(false); WorldGen.PlaceTile(i1, numArray3[index22], 19, true, true, style: style2); Main.tile[i1, numArray3[index22]].wall = wallType; } } if (index21 < 4 && flagArray1[index21 + 1, index22] && WorldGen.genRand.Next(3) == 0) { Main.tile[numArray2[index21], numArray4[index22] - 1].active(false); Main.tile[numArray2[index21], numArray4[index22] - 2].active(false); Main.tile[numArray2[index21], numArray4[index22] - 3].active(false); Main.tile[numArray2[index21], numArray4[index22] - 1].wall = wallType; Main.tile[numArray2[index21], numArray4[index22] - 2].wall = wallType; Main.tile[numArray2[index21], numArray4[index22] - 3].wall = wallType; WorldGen.PlaceTile(numArray2[index21], numArray4[index22] - 1, 10, true, style: style1); } } } } bool flag5 = false; for (int index23 = 0; index23 < 5; ++index23) { bool[] flagArray3 = new bool[10]; for (int index24 = 0; index24 < 10; ++index24) { if (flagArray1[index23, index24]) { flag5 = true; flagArray3[index24] = true; } } if (flag5) { bool flag6 = false; for (int index25 = 0; index25 < 10; ++index25) { if (flagArray3[index25]) { if (!Main.tile[numArray1[index23] - 1, numArray4[index25] - 1].active() && !Main.tile[numArray1[index23] - 1, numArray4[index25] - 2].active() && !Main.tile[numArray1[index23] - 1, numArray4[index25] - 3].active() && Main.tile[numArray1[index23] - 1, numArray4[index25] - 1].liquid == (byte) 0 && Main.tile[numArray1[index23] - 1, numArray4[index25] - 2].liquid == (byte) 0 && Main.tile[numArray1[index23] - 1, numArray4[index25] - 3].liquid == (byte) 0) flag6 = true; else flagArray3[index25] = false; } } while (flag6) { int index26 = WorldGen.genRand.Next(10); if (flagArray3[index26]) { flag6 = false; Main.tile[numArray1[index23], numArray4[index26] - 1].active(false); Main.tile[numArray1[index23], numArray4[index26] - 2].active(false); Main.tile[numArray1[index23], numArray4[index26] - 3].active(false); WorldGen.PlaceTile(numArray1[index23], numArray4[index26] - 1, 10, true, style: style1); } } break; } } bool flag7 = false; for (int index27 = 4; index27 >= 0; --index27) { bool[] flagArray4 = new bool[10]; for (int index28 = 0; index28 < 10; ++index28) { if (flagArray1[index27, index28]) { flag7 = true; flagArray4[index28] = true; } } if (flag7) { bool flag8 = false; for (int index29 = 0; index29 < 10; ++index29) { if (flagArray4[index29]) { if (!Main.tile[numArray2[index27] + 1, numArray4[index29] - 1].active() && !Main.tile[numArray2[index27] + 1, numArray4[index29] - 2].active() && !Main.tile[numArray2[index27] + 1, numArray4[index29] - 3].active() && Main.tile[numArray2[index27] + 1, numArray4[index29] - 1].liquid == (byte) 0 && Main.tile[numArray2[index27] + 1, numArray4[index29] - 2].liquid == (byte) 0 && Main.tile[numArray2[index27] + 1, numArray4[index29] - 3].liquid == (byte) 0) flag8 = true; else flagArray4[index29] = false; } } while (flag8) { int index30 = WorldGen.genRand.Next(10); if (flagArray4[index30]) { flag8 = false; Main.tile[numArray2[index27], numArray4[index30] - 1].active(false); Main.tile[numArray2[index27], numArray4[index30] - 2].active(false); Main.tile[numArray2[index27], numArray4[index30] - 3].active(false); WorldGen.PlaceTile(numArray2[index27], numArray4[index30] - 1, 10, true, style: style1); } } break; } } bool flag9 = false; for (int index31 = 0; index31 < 10; ++index31) { bool[] flagArray5 = new bool[10]; for (int index32 = 0; index32 < 5; ++index32) { if (flagArray1[index32, index31]) { flag9 = true; flagArray5[index32] = true; } } if (flag9) { bool flag10 = true; while (flag10) { int index33 = WorldGen.genRand.Next(5); if (flagArray5[index33]) { int num11 = WorldGen.genRand.Next(numArray1[index33] + 2, numArray2[index33] - 1); int num12; for (num12 = WorldGen.genRand.Next(numArray1[index33] + 2, numArray2[index33] - 1); num12 - num11 < 2 || num12 - num11 > 5; num12 = WorldGen.genRand.Next(numArray1[index33] + 2, numArray2[index33] - 1)) num11 = WorldGen.genRand.Next(numArray1[index33] + 2, numArray2[index33] - 1); for (int index34 = num11; index34 <= num12; ++index34) { if (Main.tile[index34, numArray3[index31] - 1].active() || Main.tile[index34, numArray3[index31] - 1].liquid > (byte) 0) flag10 = false; } if (flag10) { for (int i2 = num11; i2 <= num12; ++i2) { Main.tile[i2, numArray3[index31]].active(false); WorldGen.PlaceTile(i2, numArray3[index31], 19, true, true, style: style2); } } flag10 = false; } } break; } } } 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 == (ushort) 76 || Main.tile[index1, index2].type == (ushort) 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 = (ushort) 57; ++index2; if (num3 <= 0) break; } } int index3 = j; while (index3 < Main.maxTilesY && (Main.tile[i, index3].active() && (Main.tile[i, index3].type == (ushort) 76 || Main.tile[i, index3].type == (ushort) 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 == (ushort) 76 || Main.tile[i, index4].type == (ushort) 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 == (ushort) 76 || Main.tile[i, index4].type == (ushort) 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 = (ushort) 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) { double num11 = (double) Math.Abs(index7 - num8); float num12 = (float) Math.Abs(index8 - num9); if (Math.Sqrt(num11 * num11 + (double) num12 * (double) num12) < (double) num10 * 0.4) { try { if (Main.tile[index7, index8].type == (ushort) 76 || Main.tile[index7, index8].type == (ushort) 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 = (ushort) 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 templeCleaner(int x, int y) { int index1 = x; int index2 = y; int num = 0; if (Main.tile[x + 1, y].active() && Main.tile[x + 1, y].type == (ushort) 226) ++num; if (Main.tile[x - 1, y].active() && Main.tile[x - 1, y].type == (ushort) 226) ++num; if (Main.tile[x, y + 1].active() && Main.tile[x, y + 1].type == (ushort) 226) ++num; if (Main.tile[x, y - 1].active() && Main.tile[x, y - 1].type == (ushort) 226) ++num; if (Main.tile[x, y].active() && Main.tile[x, y].type == (ushort) 226) { if (num > 1) return; Main.tile[index1, index2].active(false); Main.tile[index1, index2].wall = (byte) 87; } else { if (Main.tile[x, y].active() || num != 3) return; Main.tile[index1, index2].active(true); Main.tile[index1, index2].type = (ushort) 226; Main.tile[index1, index2].liquid = (byte) 0; Main.tile[index1, index2].slope((byte) 0); Main.tile[index1, index2].halfBrick(false); } } public static Vector2 templePather(Vector2 templePath, int destX, int destY) { int x = (int) templePath.X; int y = (int) templePath.Y; int num1 = WorldGen.genRand.Next(5, 20); int num2 = WorldGen.genRand.Next(2, 5); while (num1 > 0 && (x != destX || y != destY)) { --num1; if (x > destX) --x; if (x < destX) ++x; if (y > destY) --y; if (y < destY) ++y; for (int index1 = x - num2; index1 < x + num2; ++index1) { for (int index2 = y - num2; index2 < y + num2; ++index2) { Main.tile[index1, index2].active(false); Main.tile[index1, index2].wall = (byte) 87; } } } return new Vector2((float) x, (float) y); } public static void outerTempled(int x, int y) { if (Main.tile[x, y].active() & Main.tile[x, y].type == (ushort) 226 || Main.tile[x, y].wall == (byte) 87) return; int num = 6; for (int index1 = x - num; index1 <= x + num; ++index1) { for (int index2 = y - num; index2 <= y + num; ++index2) { if (!Main.tile[index1, index2].active() && Main.tile[index1, index2].wall == (byte) 87) { int index3 = x; int index4 = y; Main.tile[index3, index4].active(true); Main.tile[index3, index4].type = (ushort) 226; Main.tile[index3, index4].liquid = (byte) 0; Main.tile[index3, index4].slope((byte) 0); Main.tile[index3, index4].halfBrick(false); return; } } } } public static void makeTemple(int x, int y) { Microsoft.Xna.Framework.Rectangle[] rectangleArray = new Microsoft.Xna.Framework.Rectangle[40]; float num1 = (float) (Main.maxTilesX / 4200); int maxValue = WorldGen.genRand.Next((int) ((double) num1 * 10.0), (int) ((double) num1 * 16.0)); int num2 = 1; if (WorldGen.genRand.Next(2) == 0) num2 = -1; int num3 = num2; int num4 = x; int num5 = y; int num6 = x; int num7 = y; int num8 = WorldGen.genRand.Next(1, 3); int num9 = 0; for (int index1 = 0; index1 < maxValue; ++index1) { ++num9; int num10 = num2; int num11 = num6; int num12 = num7; bool flag = true; int width1 = 0; int height1 = 0; int num13 = -10; Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(num11 - width1 / 2, num12 - height1 / 2, width1, height1); while (flag) { int num14 = num6; int num15 = num7; int width2 = WorldGen.genRand.Next(25, 50); int height2 = WorldGen.genRand.Next(20, 35); if (height2 > width2) height2 = width2; if (index1 == maxValue - 1) { int num16 = WorldGen.genRand.Next(55, 65); int num17 = WorldGen.genRand.Next(45, 50); if (num17 > num16) num17 = num16; width2 = (int) ((double) num16 * 1.6); height2 = (int) ((double) num17 * 1.35); num15 += WorldGen.genRand.Next(5, 10); } if (num9 > num8) { num12 = num15 + (WorldGen.genRand.Next(height2 + 1, height2 + 3) + num13); num11 = num14 + WorldGen.genRand.Next(-5, 6); num10 = num2 * -1; } else { num11 = num14 + (WorldGen.genRand.Next(width2 + 1, width2 + 3) + num13) * num10; num12 = num15 + WorldGen.genRand.Next(-5, 6); } flag = false; rectangle = new Microsoft.Xna.Framework.Rectangle(num11 - width2 / 2, num12 - height2 / 2, width2, height2); for (int index2 = 0; index2 < index1; ++index2) { if (rectangle.Intersects(rectangleArray[index2])) flag = true; if (WorldGen.genRand.Next(100) == 0) ++num13; } } if (num9 > num8) { ++num8; num9 = 1; } rectangleArray[index1] = rectangle; num2 = num10; num6 = num11; num7 = num12; } for (int index3 = 0; index3 < maxValue; ++index3) { for (int index4 = 0; index4 < 2; ++index4) { for (int index5 = 0; index5 < maxValue; ++index5) { for (int index6 = 0; index6 < 2; ++index6) { int x1 = rectangleArray[index3].X; if (index4 == 1) x1 += rectangleArray[index3].Width - 1; int y1 = rectangleArray[index3].Y; int num18 = y1 + rectangleArray[index3].Height; int x2 = rectangleArray[index5].X; if (index6 == 1) x2 += rectangleArray[index5].Width - 1; int y2 = rectangleArray[index5].Y; int num19 = y2 + rectangleArray[index5].Height; while (x1 != x2 || y1 != y2 || num18 != num19) { if (x1 < x2) ++x1; if (x1 > x2) --x1; if (y1 < y2) ++y1; if (y1 > y2) --y1; if (num18 < num19) ++num18; if (num18 > num19) --num18; int index7 = x1; for (int index8 = y1; index8 < num18; ++index8) { Main.tile[index7, index8].active(true); Main.tile[index7, index8].type = (ushort) 226; Main.tile[index7, index8].liquid = (byte) 0; Main.tile[index7, index8].slope((byte) 0); Main.tile[index7, index8].halfBrick(false); } } } } } } for (int index9 = 0; index9 < maxValue; ++index9) { if (WorldGen.genRand.Next(1) == 0) { for (int x3 = rectangleArray[index9].X; x3 < rectangleArray[index9].X + rectangleArray[index9].Width; ++x3) { for (int y3 = rectangleArray[index9].Y; y3 < rectangleArray[index9].Y + rectangleArray[index9].Height; ++y3) { Main.tile[x3, y3].active(true); Main.tile[x3, y3].type = (ushort) 226; Main.tile[x3, y3].liquid = (byte) 0; Main.tile[x3, y3].slope((byte) 0); Main.tile[x3, y3].halfBrick(false); } } int x4 = rectangleArray[index9].X; int num20 = x4 + rectangleArray[index9].Width; int y4 = rectangleArray[index9].Y; int num21 = y4 + rectangleArray[index9].Height; int num22 = x4 + WorldGen.genRand.Next(3, 8); int num23 = num20 - WorldGen.genRand.Next(3, 8); int num24 = y4 + WorldGen.genRand.Next(3, 8); int num25 = num21 - WorldGen.genRand.Next(3, 8); int num26 = num22; int num27 = num23; int num28 = num24; int num29 = num25; int num30 = (num22 + num23) / 2; int num31 = (num24 + num25) / 2; for (int index10 = num22; index10 < num23; ++index10) { for (int index11 = num24; index11 < num25; ++index11) { if (WorldGen.genRand.Next(20) == 0) num28 += WorldGen.genRand.Next(-1, 2); if (WorldGen.genRand.Next(20) == 0) num29 += WorldGen.genRand.Next(-1, 2); if (WorldGen.genRand.Next(20) == 0) num26 += WorldGen.genRand.Next(-1, 2); if (WorldGen.genRand.Next(20) == 0) num27 += WorldGen.genRand.Next(-1, 2); if (num26 < num22) num26 = num22; if (num27 > num23) num27 = num23; if (num28 < num24) num28 = num24; if (num29 > num25) num29 = num25; if (num26 > num30) num26 = num30; if (num27 < num30) num27 = num30; if (num28 > num31) num28 = num31; if (num29 < num31) num29 = num31; if (index10 >= num26 && index10 < num27 & index11 >= num28 && index11 <= num29) { Main.tile[index10, index11].active(false); Main.tile[index10, index11].wall = (byte) 87; } } } for (int index12 = num25; index12 > num24; --index12) { for (int index13 = num23; index13 > num22; --index13) { if (WorldGen.genRand.Next(20) == 0) num28 += WorldGen.genRand.Next(-1, 2); if (WorldGen.genRand.Next(20) == 0) num29 += WorldGen.genRand.Next(-1, 2); if (WorldGen.genRand.Next(20) == 0) num26 += WorldGen.genRand.Next(-1, 2); if (WorldGen.genRand.Next(20) == 0) num27 += WorldGen.genRand.Next(-1, 2); if (num26 < num22) num26 = num22; if (num27 > num23) num27 = num23; if (num28 < num24) num28 = num24; if (num29 > num25) num29 = num25; if (num26 > num30) num26 = num30; if (num27 < num30) num27 = num30; if (num28 > num31) num28 = num31; if (num29 < num31) num29 = num31; if (index13 >= num26 && index13 < num27 & index12 >= num28 && index12 <= num29) { Main.tile[index13, index12].active(false); Main.tile[index13, index12].wall = (byte) 87; } } } } } Vector2 templePath = new Vector2((float) num4, (float) num5); for (int index14 = 0; index14 < maxValue; ++index14) { Microsoft.Xna.Framework.Rectangle rectangle = rectangleArray[index14]; rectangle.X += 8; rectangle.Y += 8; rectangle.Width -= 16; rectangle.Height -= 16; bool flag1 = true; while (flag1) { int destX = WorldGen.genRand.Next(rectangle.X, rectangle.X + rectangle.Width); int destY = WorldGen.genRand.Next(rectangle.Y, rectangle.Y + rectangle.Height); templePath = WorldGen.templePather(templePath, destX, destY); if ((double) templePath.X == (double) destX && (double) templePath.Y == (double) destY) flag1 = false; } if (index14 < maxValue - 1) { if (WorldGen.genRand.Next(3) != 0) { int index15 = index14 + 1; if (rectangleArray[index15].Y >= rectangleArray[index14].Y + rectangleArray[index14].Height) { rectangle.X = rectangleArray[index15].X; if (rectangleArray[index15].X < rectangleArray[index14].X) rectangle.X += (int) ((double) rectangleArray[index15].Width * 0.2); else rectangle.X += (int) ((double) rectangleArray[index15].Width * 0.8); rectangle.Y = rectangleArray[index15].Y; } else { rectangle.X = (rectangleArray[index14].X + rectangleArray[index14].Width / 2 + (rectangleArray[index15].X + rectangleArray[index15].Width / 2)) / 2; rectangle.Y = (int) ((double) rectangleArray[index15].Y + (double) rectangleArray[index15].Height * 0.8); } int x5 = rectangle.X; int y5 = rectangle.Y; bool flag2 = true; while (flag2) { int destX = WorldGen.genRand.Next(x5 - 6, x5 + 7); int destY = WorldGen.genRand.Next(y5 - 6, y5 + 7); templePath = WorldGen.templePather(templePath, destX, destY); if ((double) templePath.X == (double) destX && (double) templePath.Y == (double) destY) flag2 = false; } } else { int index16 = index14 + 1; int num32 = (rectangleArray[index14].X + rectangleArray[index14].Width / 2 + (rectangleArray[index16].X + rectangleArray[index16].Width / 2)) / 2; int num33 = (rectangleArray[index14].Y + rectangleArray[index14].Height / 2 + (rectangleArray[index16].Y + rectangleArray[index16].Height / 2)) / 2; bool flag3 = true; while (flag3) { int destX = WorldGen.genRand.Next(num32 - 6, num32 + 7); int destY = WorldGen.genRand.Next(num33 - 6, num33 + 7); templePath = WorldGen.templePather(templePath, destX, destY); if ((double) templePath.X == (double) destX && (double) templePath.Y == (double) destY) flag3 = false; } } } } int num34 = Main.maxTilesX - 20; int num35 = 20; int num36 = Main.maxTilesY - 20; int num37 = 20; for (int index = 0; index < maxValue; ++index) { if (rectangleArray[index].X < num34) num34 = rectangleArray[index].X; if (rectangleArray[index].X + rectangleArray[index].Width > num35) num35 = rectangleArray[index].X + rectangleArray[index].Width; if (rectangleArray[index].Y < num36) num36 = rectangleArray[index].Y; if (rectangleArray[index].Y + rectangleArray[index].Height > num37) num37 = rectangleArray[index].Y + rectangleArray[index].Height; } int num38 = num34 - 10; int num39 = num35 + 10; int num40 = num36 - 10; int num41 = num37 + 10; for (int x6 = num38; x6 < num39; ++x6) { for (int y6 = num40; y6 < num41; ++y6) WorldGen.outerTempled(x6, y6); } for (int x7 = num39; x7 >= num38; --x7) { for (int y7 = num40; y7 < num41 / 2; ++y7) WorldGen.outerTempled(x7, y7); } for (int y8 = num40; y8 < num41; ++y8) { for (int x8 = num38; x8 < num39; ++x8) WorldGen.outerTempled(x8, y8); } for (int y9 = num41; y9 >= num40; --y9) { for (int x9 = num38; x9 < num39; ++x9) WorldGen.outerTempled(x9, y9); } int num42 = -num3; Vector2 vector2 = new Vector2((float) num4, (float) num5); int num43 = WorldGen.genRand.Next(2, 5); bool flag4 = true; int num44 = 0; int num45 = WorldGen.genRand.Next(9, 14); while (flag4) { ++num44; if (num44 >= num45) { num44 = 0; --vector2.Y; } vector2.X += (float) num42; int x10 = (int) vector2.X; flag4 = false; for (int index = (int) vector2.Y - num43; (double) index < (double) vector2.Y + (double) num43; ++index) { if (Main.tile[x10, index].wall == (byte) 87 || Main.tile[x10, index].active() && Main.tile[x10, index].type == (ushort) 226) flag4 = true; if (Main.tile[x10, index].active() && Main.tile[x10, index].type == (ushort) 226) { Main.tile[x10, index].active(false); Main.tile[x10, index].wall = (byte) 87; } } } int i1 = num4; int index17 = num5; while (!Main.tile[i1, index17].active()) ++index17; int j1 = index17 - 4; int index18 = j1; while (Main.tile[i1, index18].active() && Main.tile[i1, index18].type == (ushort) 226 || Main.tile[i1, index18].wall == (byte) 87) --index18; int num46 = index18 + 2; for (int index19 = i1 - 1; index19 <= i1 + 1; ++index19) { for (int index20 = num46; index20 <= j1; ++index20) { Main.tile[index19, index20].active(true); Main.tile[index19, index20].type = (ushort) 226; Main.tile[index19, index20].liquid = (byte) 0; Main.tile[index19, index20].slope((byte) 0); Main.tile[index19, index20].halfBrick(false); } } for (int index21 = i1 - 4; index21 <= i1 + 4; ++index21) { for (int index22 = j1 - 1; index22 < j1 + 3; ++index22) { Main.tile[index21, index22].active(false); Main.tile[index21, index22].wall = (byte) 87; } } for (int index23 = i1 - 1; index23 <= i1 + 1; ++index23) { for (int index24 = j1 - 5; index24 <= j1 + 8; ++index24) { Main.tile[index23, index24].active(true); Main.tile[index23, index24].type = (ushort) 226; Main.tile[index23, index24].liquid = (byte) 0; Main.tile[index23, index24].slope((byte) 0); Main.tile[index23, index24].halfBrick(false); } } for (int index25 = i1 - 1; index25 <= i1 + 1; ++index25) { for (int index26 = j1; index26 < j1 + 3; ++index26) { Main.tile[index25, index26].active(false); Main.tile[index25, index26].wall = (byte) 87; } } WorldGen.PlaceTile(i1, j1, 10, true, style: 11); for (int x11 = num38; x11 < num39; ++x11) { for (int y10 = num40; y10 < num41; ++y10) WorldGen.templeCleaner(x11, y10); } for (int y11 = num41; y11 >= num40; --y11) { for (int x12 = num39; x12 >= num38; --x12) WorldGen.templeCleaner(x12, y11); } for (int index27 = num38; index27 < num39; ++index27) { for (int index28 = num40; index28 < num41; ++index28) { bool flag5 = true; for (int index29 = index27 - 1; index29 <= index27 + 1; ++index29) { for (int index30 = index28 - 1; index30 <= index28 + 1; ++index30) { if ((!Main.tile[index29, index30].active() || Main.tile[index29, index30].type != (ushort) 226) && Main.tile[index29, index30].wall != (byte) 87) { flag5 = false; break; } } } if (flag5) Main.tile[index27, index28].wall = (byte) 87; } } int num47 = 0; Microsoft.Xna.Framework.Rectangle rectangle1; do { ++num47; rectangle1 = rectangleArray[maxValue - 1]; int i2 = rectangle1.X + WorldGen.genRand.Next(rectangle1.Width); int j2 = rectangle1.Y + WorldGen.genRand.Next(rectangle1.Height); WorldGen.PlaceTile(i2, j2, 237); if (Main.tile[i2, j2].type == (ushort) 237) { WorldGen.lAltarX = i2 - (int) Main.tile[i2, j2].frameX / 18; WorldGen.lAltarY = j2 - (int) Main.tile[i2, j2].frameY / 18; goto label_278; } } while (num47 < 1000); int num48 = rectangle1.X + rectangle1.Width / 2; int num49 = rectangle1.Y + rectangle1.Height / 2; int index31 = num48 + WorldGen.genRand.Next(-10, 11); int index32 = num49 + WorldGen.genRand.Next(-10, 11); while (!Main.tile[index31, index32].active()) ++index32; Main.tile[index31 - 1, index32].active(true); Main.tile[index31 - 1, index32].slope((byte) 0); Main.tile[index31 - 1, index32].halfBrick(false); Main.tile[index31 - 1, index32].type = (ushort) 226; Main.tile[index31, index32].active(true); Main.tile[index31, index32].slope((byte) 0); Main.tile[index31, index32].halfBrick(false); Main.tile[index31, index32].type = (ushort) 226; Main.tile[index31 + 1, index32].active(true); Main.tile[index31 + 1, index32].slope((byte) 0); Main.tile[index31 + 1, index32].halfBrick(false); Main.tile[index31 + 1, index32].type = (ushort) 226; int num50 = index32 - 2; int num51 = index31 - 1; for (int index33 = -1; index33 <= 3; ++index33) { for (int index34 = -1; index34 <= 1; ++index34) { x = num51 + index33; y = num50 + index34; Main.tile[x, y].active(false); } } WorldGen.lAltarX = num51; WorldGen.lAltarY = num50; for (int index35 = 0; index35 <= 2; ++index35) { for (int index36 = 0; index36 <= 1; ++index36) { x = num51 + index35; y = num50 + index36; Main.tile[x, y].active(true); Main.tile[x, y].type = (ushort) 237; Main.tile[x, y].frameX = (short) (index35 * 18); Main.tile[x, y].frameY = (short) (index36 * 18); } } label_278: float num52 = (float) maxValue * 1.1f * (float) (1.0 + (double) WorldGen.genRand.Next(-25, 26) * 0.00999999977648258); int num53 = 0; while ((double) num52 > 0.0) { ++num53; int index37 = WorldGen.genRand.Next(maxValue); int index38 = WorldGen.genRand.Next(rectangleArray[index37].X, rectangleArray[index37].X + rectangleArray[index37].Width); int index39 = WorldGen.genRand.Next(rectangleArray[index37].Y, rectangleArray[index37].Y + rectangleArray[index37].Height); if (Main.tile[index38, index39].wall == (byte) 87 && !Main.tile[index38, index39].active()) { bool flag6 = false; if (WorldGen.genRand.Next(2) == 0) { int num54 = 1; if (WorldGen.genRand.Next(2) == 0) num54 = -1; while (!Main.tile[index38, index39].active()) index39 += num54; int num55 = index39 - num54; int num56 = WorldGen.genRand.Next(2); int num57 = WorldGen.genRand.Next(3, 10); bool flag7 = true; for (int index40 = index38 - num57; index40 < index38 + num57; ++index40) { for (int index41 = num55 - num57; index41 < num55 + num57; ++index41) { if (Main.tile[index40, index41].active() && Main.tile[index40, index41].type == (ushort) 10) { flag7 = false; break; } } } if (flag7) { for (int i3 = index38 - num57; i3 < index38 + num57; ++i3) { for (int j3 = num55 - num57; j3 < num55 + num57; ++j3) { if (WorldGen.SolidTile(i3, j3) && Main.tile[i3, j3].type != (ushort) 232 && !WorldGen.SolidTile(i3, j3 - num54)) { Main.tile[i3, j3].type = (ushort) 232; flag6 = true; if (num56 == 0) { Main.tile[i3, j3 - 1].type = (ushort) 232; Main.tile[i3, j3 - 1].active(true); } else { Main.tile[i3, j3 + 1].type = (ushort) 232; Main.tile[i3, j3 + 1].active(true); } ++num56; if (num56 > 1) num56 = 0; } } } } if (flag6) { num53 = 0; --num52; } } else { int num58 = 1; if (WorldGen.genRand.Next(2) == 0) num58 = -1; while (!Main.tile[index38, index39].active()) index38 += num58; int num59 = index38 - num58; int num60 = WorldGen.genRand.Next(2); int num61 = WorldGen.genRand.Next(3, 10); bool flag8 = true; for (int index42 = num59 - num61; index42 < num59 + num61; ++index42) { for (int index43 = index39 - num61; index43 < index39 + num61; ++index43) { if (Main.tile[index42, index43].active() && Main.tile[index42, index43].type == (ushort) 10) { flag8 = false; break; } } } if (flag8) { for (int i4 = num59 - num61; i4 < num59 + num61; ++i4) { for (int j4 = index39 - num61; j4 < index39 + num61; ++j4) { if (WorldGen.SolidTile(i4, j4) && Main.tile[i4, j4].type != (ushort) 232 && !WorldGen.SolidTile(i4 - num58, j4)) { Main.tile[i4, j4].type = (ushort) 232; flag6 = true; if (num60 == 0) { Main.tile[i4 - 1, j4].type = (ushort) 232; Main.tile[i4 - 1, j4].active(true); } else { Main.tile[i4 + 1, j4].type = (ushort) 232; Main.tile[i4 + 1, j4].active(true); } ++num60; if (num60 > 1) num60 = 0; } } } } if (flag6) { num53 = 0; --num52; } } } if (num53 > 1000) { num53 = 0; --num52; } } WorldGen.tLeft = num38; WorldGen.tRight = num39; WorldGen.tTop = num40; WorldGen.tBottom = num41; WorldGen.tRooms = maxValue; } public static void templePart2() { int tLeft = WorldGen.tLeft; int tRight = WorldGen.tRight; int tTop = WorldGen.tTop; int tBottom = WorldGen.tBottom; int tRooms = WorldGen.tRooms; float num1 = (float) tRooms * 1.9f * (float) (1.0 + (double) WorldGen.genRand.Next(-15, 16) * 0.00999999977648258); int num2 = 0; while ((double) num1 > 0.0) { int x2 = WorldGen.genRand.Next(tLeft, tRight); int y2 = WorldGen.genRand.Next(tTop, tBottom); if (Main.tile[x2, y2].wall == (byte) 87 && !Main.tile[x2, y2].active()) { if (WorldGen.mayanTrap(x2, y2)) { --num1; num2 = 0; } else ++num2; } else ++num2; if (num2 > 100) { num2 = 0; --num1; } } Main.tileSolid[232] = false; float num3 = (float) tRooms * 0.35f * (float) (1.0 + (double) WorldGen.genRand.Next(-15, 16) * 0.00999999977648258); int contain = 1293; int num4 = 0; while ((double) num3 > 0.0) { int i = WorldGen.genRand.Next(tLeft, tRight); int j = WorldGen.genRand.Next(tTop, tBottom); if (Main.tile[i, j].wall == (byte) 87 && !Main.tile[i, j].active() && WorldGen.AddBuriedChest(i, j, contain, true, 16)) { --num3; num4 = 0; } ++num4; if (num4 > 10000) break; } float num5 = (float) tRooms * 1.25f * (float) (1.0 + (double) WorldGen.genRand.Next(-25, 36) * 0.00999999977648258); int num6 = 0; while ((double) num5 > 0.0) { ++num6; int index1 = WorldGen.genRand.Next(tLeft, tRight); int index2 = WorldGen.genRand.Next(tTop, tBottom); if (Main.tile[index1, index2].wall == (byte) 87 && !Main.tile[index1, index2].active()) { int i = index1; int index3 = index2; while (!Main.tile[i, index3].active()) { ++index3; if (index3 > tBottom) break; } int j = index3 - 1; if (j <= tBottom) { WorldGen.PlaceTile(i, j, 105, true, style: WorldGen.genRand.Next(43, 46)); if (Main.tile[i, j].type == (ushort) 105) --num5; } } } float num7 = (float) tRooms * 1.35f * (float) (1.0 + (double) WorldGen.genRand.Next(-15, 26) * 0.00999999977648258); int num8 = 0; while ((double) num7 > 0.0) { ++num8; int index4 = WorldGen.genRand.Next(tLeft, tRight); int index5 = WorldGen.genRand.Next(tTop, tBottom); if (Main.tile[index4, index5].wall == (byte) 87 && !Main.tile[index4, index5].active()) { int i = index4; int index6 = index5; while (!Main.tile[i, index6].active()) { ++index6; if (index6 > tBottom) break; } int j = index6 - 1; if (j <= tBottom) { switch (WorldGen.genRand.Next(3)) { case 0: WorldGen.PlaceTile(i, j, 18, true, style: 10); if (Main.tile[i, j].type == (ushort) 18) { --num7; break; } break; case 1: WorldGen.PlaceTile(i, j, 14, true, style: 9); if (Main.tile[i, j].type == (ushort) 14) { --num7; break; } break; case 2: WorldGen.PlaceTile(i, j, 15, true, style: 12); if (Main.tile[i, j].type == (ushort) 15) { --num7; break; } break; } } } if (num8 > 10000) break; } Main.tileSolid[232] = true; } public static bool nearPicture(int x, int y) { for (int index1 = x - 4; index1 <= x + 3; ++index1) { for (int index2 = y - 3; index2 <= y + 2; ++index2) { if (Main.tile[index1, index2].active()) return true; } } return false; } public static bool nearPicture2(int x, int y) { if (Main.tile[x, y].wall != (byte) 7 && Main.tile[x, y].wall != (byte) 8 && Main.tile[x, y].wall != (byte) 9) { for (int index1 = x - 8; index1 <= x + 8; ++index1) { for (int index2 = y - 5; index2 <= y + 5; ++index2) { if (Main.tile[index1, index2].active() && (Main.tile[index1, index2].type == (ushort) 240 || Main.tile[index1, index2].type == (ushort) 241 || Main.tile[index1, index2].type == (ushort) 242)) return true; } } } else { for (int index3 = x - 15; index3 <= x + 15; ++index3) { for (int index4 = y - 10; index4 <= y + 10; ++index4) { if (Main.tile[index3, index4].active() && (Main.tile[index3, index4].type == (ushort) 240 || Main.tile[index3, index4].type == (ushort) 241 || Main.tile[index3, index4].type == (ushort) 242)) return true; } } } return false; } public static void MakeDungeon(int x, int y) { int num1 = WorldGen.genRand.Next(3); WorldGen.genRand.Next(3); ushort tileType; int wallType; switch (num1) { case 0: tileType = (ushort) 41; wallType = 7; break; case 1: tileType = (ushort) 43; wallType = 8; break; default: tileType = (ushort) 44; 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 num2 = (float) (Main.maxTilesX / 60); float num3 = num2 + (float) WorldGen.genRand.Next(0, (int) ((double) num2 / 3.0)); float num4 = num3; int num5 = 5; WorldGen.DungeonRoom(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType); while ((double) num3 > 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; --num3; Main.statusText = Lang.gen[58].Value + " " + (object) (int) (((double) num4 - (double) num3) / (double) num4 * 60.0) + "%"; if (num5 > 0) --num5; if (num5 == 0 & WorldGen.genRand.Next(3) == 0) { num5 = 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 num6 = WorldGen.dRoomX[0]; int num7 = WorldGen.dRoomY[0]; for (int index = 0; index < WorldGen.numDRooms; ++index) { if (WorldGen.dRoomY[index] < num7) { num6 = WorldGen.dRoomX[index]; num7 = WorldGen.dRoomY[index]; } } WorldGen.dungeonX = num6; WorldGen.dungeonY = num7; WorldGen.dEnteranceX = num6; WorldGen.dSurface = false; int num8 = 5; while (!WorldGen.dSurface) { if (num8 > 0) --num8; if (num8 == 0 && WorldGen.genRand.Next(5) == 0 && (double) WorldGen.dungeonY > Main.worldSurface + 100.0) { num8 = 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].Value + " 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].Value + " 70%"; int num9 = 0; int num10 = 1000; int num11 = 0; while (num11 < Main.maxTilesX / 100) { ++num9; int index6 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX); int index7 = WorldGen.genRand.Next((int) Main.worldSurface + 25, WorldGen.dMaxY); int num12 = index6; if ((int) Main.tile[index6, index7].wall == wallType && !Main.tile[index6, index7].active()) { int num13 = 1; if (WorldGen.genRand.Next(2) == 0) num13 = -1; while (!Main.tile[index6, index7].active()) index7 += num13; if (Main.tile[index6 - 1, index7].active() && Main.tile[index6 + 1, index7].active() && !Main.tile[index6 - 1, index7 - num13].active() && !Main.tile[index6 + 1, index7 - num13].active()) { ++num11; for (int index8 = WorldGen.genRand.Next(5, 13); Main.tile[index6 - 1, index7].active() && Main.tile[index6, index7 + num13].active() && Main.tile[index6, index7].active() && !Main.tile[index6, index7 - num13].active() && index8 > 0; --index8) { Main.tile[index6, index7].type = (ushort) 48; if (!Main.tile[index6 - 1, index7 - num13].active() && !Main.tile[index6 + 1, index7 - num13].active()) { Main.tile[index6, index7 - num13].type = (ushort) 48; Main.tile[index6, index7 - num13].active(true); } --index6; } int num14 = WorldGen.genRand.Next(5, 13); for (int index9 = num12 + 1; Main.tile[index9 + 1, index7].active() && Main.tile[index9, index7 + num13].active() && Main.tile[index9, index7].active() && !Main.tile[index9, index7 - num13].active() && num14 > 0; --num14) { Main.tile[index9, index7].type = (ushort) 48; if (!Main.tile[index9 - 1, index7 - num13].active() && !Main.tile[index9 + 1, index7 - num13].active()) { Main.tile[index9, index7 - num13].type = (ushort) 48; Main.tile[index9, index7 - num13].active(true); } ++index9; } } } if (num9 > num10) { num9 = 0; ++num11; } } int num15 = 0; int num16 = 1000; int num17 = 0; Main.statusText = Lang.gen[58].Value + " 75%"; while (num17 < Main.maxTilesX / 100) { ++num15; int index10 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX); int index11 = WorldGen.genRand.Next((int) Main.worldSurface + 25, WorldGen.dMaxY); int num18 = index11; if ((int) Main.tile[index10, index11].wall == wallType && !Main.tile[index10, index11].active()) { int num19 = 1; if (WorldGen.genRand.Next(2) == 0) num19 = -1; while (index10 > 5 && index10 < Main.maxTilesX - 5 && !Main.tile[index10, index11].active()) index10 += num19; if (Main.tile[index10, index11 - 1].active() && Main.tile[index10, index11 + 1].active() && !Main.tile[index10 - num19, index11 - 1].active() && !Main.tile[index10 - num19, index11 + 1].active()) { ++num17; for (int index12 = WorldGen.genRand.Next(5, 13); Main.tile[index10, index11 - 1].active() && Main.tile[index10 + num19, index11].active() && Main.tile[index10, index11].active() && !Main.tile[index10 - num19, index11].active() && index12 > 0; --index12) { Main.tile[index10, index11].type = (ushort) 48; if (!Main.tile[index10 - num19, index11 - 1].active() && !Main.tile[index10 - num19, index11 + 1].active()) { Main.tile[index10 - num19, index11].type = (ushort) 48; Main.tile[index10 - num19, index11].active(true); } --index11; } int num20 = WorldGen.genRand.Next(5, 13); for (int index13 = num18 + 1; Main.tile[index10, index13 + 1].active() && Main.tile[index10 + num19, index13].active() && Main.tile[index10, index13].active() && !Main.tile[index10 - num19, index13].active() && num20 > 0; --num20) { Main.tile[index10, index13].type = (ushort) 48; if (!Main.tile[index10 - num19, index13 - 1].active() && !Main.tile[index10 - num19, index13 + 1].active()) { Main.tile[index10 - num19, index13].type = (ushort) 48; Main.tile[index10 - num19, index13].active(true); } ++index13; } } } if (num15 > num16) { num15 = 0; ++num17; } } Main.statusText = Lang.gen[58].Value + " 80%"; for (int index14 = 0; index14 < WorldGen.numDDoors; ++index14) { int num21 = WorldGen.DDoorX[index14] - 10; int num22 = WorldGen.DDoorX[index14] + 10; int num23 = 100; int num24 = 0; for (int index15 = num21; index15 < num22; ++index15) { bool flag1 = true; int index16 = WorldGen.DDoorY[index14]; while (index16 > 10 && !Main.tile[index15, index16].active()) --index16; if (!Main.tileDungeon[(int) Main.tile[index15, index16].type]) flag1 = false; int num25 = 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 num26 = index17; if (num26 - num25 >= 3) { int num27 = index15 - 20; int num28 = index15 + 20; int num29 = num26 - 10; int num30 = num26 + 10; for (int index18 = num27; index18 < num28; ++index18) { for (int index19 = num29; index19 < num30; ++index19) { if (Main.tile[index18, index19].active() && Main.tile[index18, index19].type == (ushort) 10) { flag1 = false; break; } } } if (flag1) { for (int index20 = num26 - 3; index20 < num26; ++index20) { for (int index21 = index15 - 3; index21 <= index15 + 3; ++index21) { if (Main.tile[index21, index20].active()) { flag1 = false; break; } } } } if (flag1 && num26 - num25 < 20) { bool flag2 = false; if (WorldGen.DDoorPos[index14] == 0 && num26 - num25 < num23) flag2 = true; if (WorldGen.DDoorPos[index14] == -1 && index15 > num24) flag2 = true; if (WorldGen.DDoorPos[index14] == 1 && (index15 < num24 || num24 == 0)) flag2 = true; if (flag2) { num24 = index15; num23 = num26 - num25; } } } } if (num23 < 20) { int i = num24; 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 num31 = index23 + 1; for (int index24 = num31; index24 < j - 2; ++index24) { Main.tile[i, index24].active(true); Main.tile[i, index24].type = tileType; } int style = 13; if (WorldGen.genRand.Next(3) == 0) { switch (wallType) { case 7: style = 16; break; case 8: style = 17; break; case 9: style = 18; break; } } WorldGen.PlaceTile(i, j, 10, true, style: style); int index25 = i - 1; int index26 = j - 3; while (!Main.tile[index25, index26].active()) --index26; if (j - index26 < j - num31 + 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 = tileType; } } int index28 = index25 + 2; int index29 = j - 3; while (!Main.tile[index28, index29].active()) --index29; if (j - index29 < j - num31 + 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 = tileType; } } int index31 = j + 1; int num32 = index28 - 1; Main.tile[num32 - 1, index31].active(true); Main.tile[num32 - 1, index31].type = tileType; Main.tile[num32 + 1, index31].active(true); Main.tile[num32 + 1, index31].type = tileType; } } int[] roomWall = new int[3]; switch (wallType) { case 7: roomWall[0] = 7; roomWall[1] = 94; roomWall[2] = 95; break; case 9: roomWall[0] = 9; roomWall[1] = 96; roomWall[2] = 97; break; default: roomWall[0] = 8; roomWall[1] = 98; roomWall[2] = 99; break; } for (int index32 = 0; index32 < 5; ++index32) { for (int index33 = 0; index33 < 3; ++index33) { int num33 = WorldGen.genRand.Next(40, 240); int num34 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX); int num35 = WorldGen.genRand.Next(WorldGen.dMinY, WorldGen.dMaxY); for (int x1 = num34 - num33; x1 < num34 + num33; ++x1) { for (int y1 = num35 - num33; y1 < num35 + num33; ++y1) { if ((double) y1 > Main.worldSurface) { double num36 = (double) Math.Abs(num34 - x1); float num37 = (float) Math.Abs(num35 - y1); if (Math.Sqrt(num36 * num36 + (double) num37 * (double) num37) < (double) num33 * 0.4 && Main.wallDungeon[(int) Main.tile[x1, y1].wall]) WorldGen.Spread.WallDungeon(x1, y1, roomWall[index33]); } } } } } Main.statusText = Lang.gen[58].Value + " 85%"; for (int index34 = 0; index34 < WorldGen.numDPlats; ++index34) { int index35 = WorldGen.DPlatX[index34]; int num38 = WorldGen.DPlatY[index34]; int num39 = Main.maxTilesX; int num40 = 10; if ((double) num38 < Main.worldSurface + 50.0) num40 = 20; for (int index36 = num38 - 5; index36 <= num38 + 5; ++index36) { int index37 = index35; int index38 = index35; bool flag3 = false; if (Main.tile[index37, index36].active()) { flag3 = true; } else { while (!Main.tile[index37, index36].active()) { --index37; if (!Main.tileDungeon[(int) Main.tile[index37, index36].type]) flag3 = true; } while (!Main.tile[index38, index36].active()) { ++index38; if (!Main.tileDungeon[(int) Main.tile[index38, index36].type]) flag3 = true; } } if (!flag3 && index38 - index37 <= num40) { bool flag4 = true; int num41 = index35 - num40 / 2 - 2; int num42 = index35 + num40 / 2 + 2; int num43 = index36 - 5; int num44 = index36 + 5; for (int index39 = num41; index39 <= num42; ++index39) { for (int index40 = num43; index40 <= num44; ++index40) { if (Main.tile[index39, index40].active() && Main.tile[index39, index40].type == (ushort) 19) { flag4 = false; break; } } } for (int index41 = index36 + 3; index41 >= index36 - 5; --index41) { if (Main.tile[index35, index41].active()) { flag4 = false; break; } } if (flag4) { num39 = index36; break; } } } if (num39 > num38 - 10 && num39 < num38 + 10) { int index42 = index35; int index43 = num39; int index44 = index35 + 1; for (; !Main.tile[index42, index43].active(); --index42) { Main.tile[index42, index43].active(true); Main.tile[index42, index43].type = (ushort) 19; if (wallType == 7) Main.tile[index42, index43].frameY = (short) 108; if (wallType == 8) Main.tile[index42, index43].frameY = (short) 144; if (wallType == 9) Main.tile[index42, index43].frameY = (short) 126; } for (; !Main.tile[index44, index43].active(); ++index44) { Main.tile[index44, index43].active(true); Main.tile[index44, index43].type = (ushort) 19; if (wallType == 7) Main.tile[index44, index43].frameY = (short) 108; if (wallType == 8) Main.tile[index44, index43].frameY = (short) 144; if (wallType == 9) Main.tile[index44, index43].frameY = (short) 126; } } } for (int index = 0; index < 4; ++index) { bool flag = false; while (!flag) { int i = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX); int j = WorldGen.genRand.Next((int) Main.worldSurface, WorldGen.dMaxY); if (Main.wallDungeon[(int) Main.tile[i, j].wall] && !Main.tile[i, j].active()) { int contain = 0; int Style = 0; switch (index) { case 0: Style = 23; contain = 1156; break; case 1: if (!WorldGen.crimson) { Style = 24; contain = 1571; break; } Style = 25; contain = 1569; break; case 2: Style = 26; contain = 1260; break; case 3: Style = 27; contain = 1572; break; } flag = WorldGen.AddBuriedChest(i, j, contain, Style: Style); } } } int[] numArray = new int[3] { WorldGen.genRand.Next(9, 13), WorldGen.genRand.Next(9, 13), 0 }; while (numArray[1] == numArray[0]) numArray[1] = WorldGen.genRand.Next(9, 13); numArray[2] = WorldGen.genRand.Next(9, 13); while (numArray[2] == numArray[0] || numArray[2] == numArray[1]) numArray[2] = WorldGen.genRand.Next(9, 13); Main.statusText = Lang.gen[58].Value + " 90%"; int num45 = 0; int num46 = 1000; int num47 = 0; while (num47 < Main.maxTilesX / 20) { ++num45; int index45 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX); int index46 = WorldGen.genRand.Next(WorldGen.dMinY, WorldGen.dMaxY); bool flag5 = true; if (Main.wallDungeon[(int) Main.tile[index45, index46].wall] && !Main.tile[index45, index46].active()) { int num48 = 1; if (WorldGen.genRand.Next(2) == 0) num48 = -1; while (flag5 && !Main.tile[index45, index46].active()) { index45 -= num48; if (index45 < 5 || index45 > Main.maxTilesX - 5) flag5 = false; else if (Main.tile[index45, index46].active() && !Main.tileDungeon[(int) Main.tile[index45, index46].type]) flag5 = false; } if (flag5 && Main.tile[index45, index46].active() && Main.tileDungeon[(int) Main.tile[index45, index46].type] && Main.tile[index45, index46 - 1].active() && Main.tileDungeon[(int) Main.tile[index45, index46 - 1].type] && Main.tile[index45, index46 + 1].active() && Main.tileDungeon[(int) Main.tile[index45, index46 + 1].type]) { int i1 = index45 + num48; for (int index47 = i1 - 3; index47 <= i1 + 3; ++index47) { for (int index48 = index46 - 3; index48 <= index46 + 3; ++index48) { if (Main.tile[index47, index48].active() && Main.tile[index47, index48].type == (ushort) 19) { flag5 = false; break; } } } if (flag5 && !Main.tile[i1, index46 - 1].active() & !Main.tile[i1, index46 - 2].active() & !Main.tile[i1, index46 - 3].active()) { int index49 = i1; int num49 = i1; while (index49 > WorldGen.dMinX && index49 < WorldGen.dMaxX && !Main.tile[index49, index46].active() && !Main.tile[index49, index46 - 1].active() && !Main.tile[index49, index46 + 1].active()) index49 += num48; int num50 = Math.Abs(i1 - index49); bool flag6 = false; if (WorldGen.genRand.Next(2) == 0) flag6 = true; if (num50 > 5) { for (int index50 = WorldGen.genRand.Next(1, 4); index50 > 0; --index50) { Main.tile[i1, index46].active(true); Main.tile[i1, index46].type = (ushort) 19; if ((int) Main.tile[i1, index46].wall == roomWall[0]) Main.tile[i1, index46].frameY = (short) (18 * numArray[0]); if ((int) Main.tile[i1, index46].wall == roomWall[1]) Main.tile[i1, index46].frameY = (short) (18 * numArray[1]); if ((int) Main.tile[i1, index46].wall == roomWall[2]) Main.tile[i1, index46].frameY = (short) (18 * numArray[2]); if (flag6) { WorldGen.PlaceTile(i1, index46 - 1, 50, true); if (WorldGen.genRand.Next(50) == 0 && Main.tile[i1, index46 - 1].type == (ushort) 50) Main.tile[i1, index46 - 1].frameX = (short) 90; } i1 += num48; } num45 = 0; ++num47; if (!flag6 && WorldGen.genRand.Next(2) == 0) { int i2 = num49; int j = index46 - 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 == (ushort) 13) Main.tile[i2, j].frameX = WorldGen.genRand.Next(2) != 0 ? (short) 36 : (short) 18; } } } } } if (num45 > num46) { num45 = 0; ++num47; } } Main.statusText = Lang.gen[58].Value + " 95%"; int num51 = 1; for (int index = 0; index < WorldGen.numDRooms; ++index) { int num52 = 0; while (num52 < 1000) { int num53 = (int) ((double) WorldGen.dRoomSize[index] * 0.4); int i = WorldGen.dRoomX[index] + WorldGen.genRand.Next(-num53, num53 + 1); int j = WorldGen.dRoomY[index] + WorldGen.genRand.Next(-num53, num53 + 1); int Style = 2; int contain; switch (num51) { 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 = 3317; break; case 8: contain = 327; Style = 0; break; default: contain = 164; num51 = 0; break; } if ((double) j < Main.worldSurface + 50.0) { contain = 327; Style = 0; } if (contain == 0 && WorldGen.genRand.Next(2) == 0) { num52 = 1000; } else { if (WorldGen.AddBuriedChest(i, j, contain, Style: Style)) { num52 += 1000; ++num51; } ++num52; } } } 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 failCount = 0; int failMax1 = 1000; int numAdd = 0; WorldGen.MakeDungeon_Lights(tileType, ref failCount, failMax1, ref numAdd, roomWall); failCount = 0; int failMax2 = 1000; numAdd = 0; WorldGen.MakeDungeon_Traps(ref failCount, failMax2, ref numAdd); float count1 = WorldGen.MakeDungeon_GroundFurniture(wallType); float count2 = WorldGen.MakeDungeon_Pictures(roomWall, count1); WorldGen.MakeDungeon_Banners(roomWall, count2); } private static void MakeDungeon_Traps(ref int failCount, int failMax, ref int numAdd) { while (numAdd < Main.maxTilesX / 500) { ++failCount; int x2 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX); int y2 = WorldGen.genRand.Next(WorldGen.dMinY, WorldGen.dMaxY); while ((double) y2 < Main.worldSurface) y2 = WorldGen.genRand.Next(WorldGen.dMinY, WorldGen.dMaxY); if (Main.wallDungeon[(int) Main.tile[x2, y2].wall] && WorldGen.placeTrap(x2, y2, 0)) failCount = failMax; if (failCount > failMax) { ++numAdd; failCount = 0; } } } private static void MakeDungeon_Lights( ushort tileType, ref int failCount, int failMax, ref int numAdd, int[] roomWall) { int[] numArray = new int[3] { WorldGen.genRand.Next(7), WorldGen.genRand.Next(7), 0 }; while (numArray[1] == numArray[0]) numArray[1] = WorldGen.genRand.Next(7); numArray[2] = WorldGen.genRand.Next(7); while (numArray[2] == numArray[0] || numArray[2] == numArray[1]) numArray[2] = WorldGen.genRand.Next(7); while (numAdd < Main.maxTilesX / 150) { ++failCount; int index1 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX); int index2 = WorldGen.genRand.Next(WorldGen.dMinY, WorldGen.dMaxY); if (Main.wallDungeon[(int) Main.tile[index1, index2].wall]) { for (int y = index2; y > WorldGen.dMinY; --y) { if (Main.tile[index1, y - 1].active() && (int) Main.tile[index1, y - 1].type == (int) tileType) { bool flag1 = false; for (int index3 = index1 - 15; index3 < index1 + 15; ++index3) { for (int index4 = y - 15; index4 < y + 15; ++index4) { if (index3 > 0 && index3 < Main.maxTilesX && index4 > 0 && index4 < Main.maxTilesY && (Main.tile[index3, index4].type == (ushort) 42 || Main.tile[index3, index4].type == (ushort) 34)) { flag1 = true; break; } } } if (Main.tile[index1 - 1, y].active() || Main.tile[index1 + 1, y].active() || Main.tile[index1 - 1, y + 1].active() || Main.tile[index1 + 1, y + 1].active() || Main.tile[index1, y + 2].active()) flag1 = true; if (!flag1) { bool flag2 = false; if (!flag2 && WorldGen.genRand.Next(7) == 0) { int style = 27; switch (roomWall[0]) { case 7: style = 27; break; case 8: style = 28; break; case 9: style = 29; break; } bool flag3 = false; for (int index5 = 0; index5 < 15; ++index5) { if (WorldGen.SolidTile(index1, y + index5)) { flag3 = true; break; } } if (!flag3) WorldGen.PlaceChand(index1, y, (ushort) 34, style); if (Main.tile[index1, y].type == (ushort) 34) { flag2 = true; failCount = 0; ++numAdd; for (int index6 = 0; index6 < 1000; ++index6) { int i = index1 + WorldGen.genRand.Next(-12, 13); int j = y + WorldGen.genRand.Next(3, 21); if (!Main.tile[i, j].active() && !Main.tile[i, j + 1].active() && Main.tile[i - 1, j].type != (ushort) 48 && Main.tile[i + 1, j].type != (ushort) 48 && Collision.CanHit(new Vector2((float) (i * 16), (float) (j * 16)), 16, 16, new Vector2((float) (index1 * 16), (float) (y * 16 + 1)), 16, 16)) { if (WorldGen.SolidTile(i - 1, j) && Main.tile[i - 1, j].type != (ushort) 10 || WorldGen.SolidTile(i + 1, j) && Main.tile[i + 1, j].type != (ushort) 10 || WorldGen.SolidTile(i, j + 1)) WorldGen.PlaceTile(i, j, 136, true); if (Main.tile[i, j].active()) { while (i != index1 || j != y) { Main.tile[i, j].wire(true); if (i > index1) --i; if (i < index1) ++i; Main.tile[i, j].wire(true); if (j > y) --j; if (j < y) ++j; Main.tile[i, j].wire(true); } if (WorldGen.genRand.Next(3) > 0) { Main.tile[index1, y].frameX = (short) 18; Main.tile[index1, y + 1].frameX = (short) 18; break; } break; } } } } } if (!flag2) { int style = numArray[0]; if ((int) Main.tile[index1, y].wall == roomWall[1]) style = numArray[1]; if ((int) Main.tile[index1, y].wall == roomWall[2]) style = numArray[2]; WorldGen.Place1x2Top(index1, y, (ushort) 42, style); if (Main.tile[index1, y].type == (ushort) 42) { failCount = 0; ++numAdd; for (int index7 = 0; index7 < 1000; ++index7) { int i = index1 + WorldGen.genRand.Next(-12, 13); int j = y + WorldGen.genRand.Next(3, 21); if (!Main.tile[i, j].active() && !Main.tile[i, j + 1].active() && Main.tile[i - 1, j].type != (ushort) 48 && Main.tile[i + 1, j].type != (ushort) 48 && Collision.CanHit(new Vector2((float) (i * 16), (float) (j * 16)), 16, 16, new Vector2((float) (index1 * 16), (float) (y * 16 + 1)), 16, 16)) { if (WorldGen.SolidTile(i - 1, j) && Main.tile[i - 1, j].type != (ushort) 10 || WorldGen.SolidTile(i + 1, j) && Main.tile[i + 1, j].type != (ushort) 10 || WorldGen.SolidTile(i, j + 1)) WorldGen.PlaceTile(i, j, 136, true); if (Main.tile[i, j].active()) { while (i != index1 || j != y) { Main.tile[i, j].wire(true); if (i > index1) --i; if (i < index1) ++i; Main.tile[i, j].wire(true); if (j > y) --j; if (j < y) ++j; Main.tile[i, j].wire(true); } if (WorldGen.genRand.Next(3) > 0) { Main.tile[index1, y].frameX = (short) 18; Main.tile[index1, y + 1].frameX = (short) 18; break; } break; } } } break; } break; } break; } break; } } } if (failCount > failMax) { ++numAdd; failCount = 0; } } } private static float MakeDungeon_Banners(int[] roomWall, float count) { count = 840000f / (float) Main.maxTilesX; for (int index1 = 0; (double) index1 < (double) count; ++index1) { int i = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX); int j1; for (j1 = WorldGen.genRand.Next(WorldGen.dMinY, WorldGen.dMaxY); !Main.wallDungeon[(int) Main.tile[i, j1].wall] || Main.tile[i, j1].active(); j1 = WorldGen.genRand.Next(WorldGen.dMinY, WorldGen.dMaxY)) i = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX); while (!WorldGen.SolidTile(i, j1) && j1 > 10) --j1; int j2 = j1 + 1; if (Main.wallDungeon[(int) Main.tile[i, j2].wall] && Main.tile[i, j2 - 1].type != (ushort) 48 && !Main.tile[i, j2].active() && !Main.tile[i, j2 + 1].active() && !Main.tile[i, j2 + 2].active() && !Main.tile[i, j2 + 3].active()) { bool flag = true; for (int index2 = i - 1; index2 <= i + 1; ++index2) { for (int index3 = j2; index3 <= j2 + 3; ++index3) { if (Main.tile[index2, index3].active() && (Main.tile[index2, index3].type == (ushort) 10 || Main.tile[index2, index3].type == (ushort) 11 || Main.tile[index2, index3].type == (ushort) 91)) flag = false; } } if (flag) { int num = 10; if ((int) Main.tile[i, j2].wall == roomWall[1]) num = 12; if ((int) Main.tile[i, j2].wall == roomWall[2]) num = 14; int style = num + WorldGen.genRand.Next(2); WorldGen.PlaceTile(i, j2, 91, true, style: style); } } } return count; } private static float MakeDungeon_Pictures(int[] roomWall, float count) { count = 420000f / (float) Main.maxTilesX; for (int index1 = 0; (double) index1 < (double) count; ++index1) { int index2 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX); int index3; for (index3 = WorldGen.genRand.Next((int) Main.worldSurface, WorldGen.dMaxY); !Main.wallDungeon[(int) Main.tile[index2, index3].wall] || Main.tile[index2, index3].active(); index3 = WorldGen.genRand.Next((int) Main.worldSurface, WorldGen.dMaxY)) index2 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX); for (int index4 = 0; index4 < 2; ++index4) { int index5 = index2; int index6 = index2; while (!Main.tile[index5, index3].active() && Main.wallDungeon[(int) Main.tile[index5, index3].wall]) --index5; int num1 = index5 + 1; while (!Main.tile[index6, index3].active() && Main.wallDungeon[(int) Main.tile[index6, index3].wall]) ++index6; int num2 = index6 - 1; index2 = (num1 + num2) / 2; int index7 = index3; int index8 = index3; while (!Main.tile[index2, index7].active() && Main.wallDungeon[(int) Main.tile[index2, index7].wall]) --index7; int num3 = index7 + 1; while (!Main.tile[index2, index8].active() && Main.wallDungeon[(int) Main.tile[index2, index8].wall]) ++index8; int num4 = index8 - 1; index3 = (num3 + num4) / 2; } int index9 = index2; int index10 = index2; while (!Main.tile[index9, index3].active() && !Main.tile[index9, index3 - 1].active() && !Main.tile[index9, index3 + 1].active()) --index9; int num5 = index9 + 1; while (!Main.tile[index10, index3].active() && !Main.tile[index10, index3 - 1].active() && !Main.tile[index10, index3 + 1].active()) ++index10; int num6 = index10 - 1; int index11 = index3; int index12 = index3; while (!Main.tile[index2, index11].active() && !Main.tile[index2 - 1, index11].active() && !Main.tile[index2 + 1, index11].active()) --index11; int num7 = index11 + 1; while (!Main.tile[index2, index12].active() && !Main.tile[index2 - 1, index12].active() && !Main.tile[index2 + 1, index12].active()) ++index12; int num8 = index12 - 1; int index13 = (num5 + num6) / 2; int index14 = (num7 + num8) / 2; int num9 = num6 - num5; int num10 = num8 - num7; if (num9 > 7 && num10 > 5) { bool[] flagArray = new bool[3] { true, false, false }; if (num9 > num10 * 3 && num9 > 21) flagArray[1] = true; if (num10 > num9 * 3 && num10 > 21) flagArray[2] = true; int index15 = WorldGen.genRand.Next(3); if ((int) Main.tile[index13, index14].wall == roomWall[0]) index15 = 0; while (!flagArray[index15]) index15 = WorldGen.genRand.Next(3); if (WorldGen.nearPicture2(index13, index14)) index15 = -1; switch (index15) { case 0: Vector2 vector2_1 = WorldGen.randPictureTile(); if ((int) Main.tile[index13, index14].wall != roomWall[0]) vector2_1 = WorldGen.randBoneTile(); int x1 = (int) vector2_1.X; int y1 = (int) vector2_1.Y; if (!WorldGen.nearPicture(index13, index14)) { WorldGen.PlaceTile(index13, index14, x1, true, style: y1); continue; } continue; case 1: Vector2 vector2_2 = WorldGen.randPictureTile(); if ((int) Main.tile[index13, index14].wall != roomWall[0]) vector2_2 = WorldGen.randBoneTile(); int x2 = (int) vector2_2.X; int y2 = (int) vector2_2.Y; if (!Main.tile[index13, index14].active()) WorldGen.PlaceTile(index13, index14, x2, true, style: y2); int num11 = index13; int num12 = index14; int index16 = index14; for (int index17 = 0; index17 < 2; ++index17) { index13 += 7; int index18 = index16; int index19 = index16; while (!Main.tile[index13, index18].active() && !Main.tile[index13 - 1, index18].active() && !Main.tile[index13 + 1, index18].active()) --index18; int num13 = index18 + 1; while (!Main.tile[index13, index19].active() && !Main.tile[index13 - 1, index19].active() && !Main.tile[index13 + 1, index19].active()) ++index19; int num14 = index19 - 1; index16 = (num13 + num14) / 2; Vector2 vector2_3 = WorldGen.randPictureTile(); if ((int) Main.tile[index13, index16].wall != roomWall[0]) vector2_3 = WorldGen.randBoneTile(); int x3 = (int) vector2_3.X; int y3 = (int) vector2_3.Y; if (Math.Abs(num12 - index16) < 4 && !WorldGen.nearPicture(index13, index16)) WorldGen.PlaceTile(index13, index16, x3, true, style: y3); else break; } int index20 = index14; int index21 = num11; for (int index22 = 0; index22 < 2; ++index22) { index21 -= 7; int index23 = index20; int index24 = index20; while (!Main.tile[index21, index23].active() && !Main.tile[index21 - 1, index23].active() && !Main.tile[index21 + 1, index23].active()) --index23; int num15 = index23 + 1; while (!Main.tile[index21, index24].active() && !Main.tile[index21 - 1, index24].active() && !Main.tile[index21 + 1, index24].active()) ++index24; int num16 = index24 - 1; index20 = (num15 + num16) / 2; Vector2 vector2_4 = WorldGen.randPictureTile(); if ((int) Main.tile[index21, index20].wall != roomWall[0]) vector2_4 = WorldGen.randBoneTile(); int x4 = (int) vector2_4.X; int y4 = (int) vector2_4.Y; if (Math.Abs(num12 - index20) < 4 && !WorldGen.nearPicture(index21, index20)) WorldGen.PlaceTile(index21, index20, x4, true, style: y4); else break; } continue; case 2: Vector2 vector2_5 = WorldGen.randPictureTile(); if ((int) Main.tile[index13, index14].wall != roomWall[0]) vector2_5 = WorldGen.randBoneTile(); int x5 = (int) vector2_5.X; int y5 = (int) vector2_5.Y; if (!Main.tile[index13, index14].active()) WorldGen.PlaceTile(index13, index14, x5, true, style: y5); int num17 = index14; int num18 = index13; int index25 = index13; for (int index26 = 0; index26 < 3; ++index26) { index14 += 7; int index27 = index25; int index28 = index25; while (!Main.tile[index27, index14].active() && !Main.tile[index27, index14 - 1].active() && !Main.tile[index27, index14 + 1].active()) --index27; int num19 = index27 + 1; while (!Main.tile[index28, index14].active() && !Main.tile[index28, index14 - 1].active() && !Main.tile[index28, index14 + 1].active()) ++index28; int num20 = index28 - 1; index25 = (num19 + num20) / 2; Vector2 vector2_6 = WorldGen.randPictureTile(); if ((int) Main.tile[index25, index14].wall != roomWall[0]) vector2_6 = WorldGen.randBoneTile(); int x6 = (int) vector2_6.X; int y6 = (int) vector2_6.Y; if (Math.Abs(num18 - index25) < 4 && !WorldGen.nearPicture(index25, index14)) WorldGen.PlaceTile(index25, index14, x6, true, style: y6); else break; } int index29 = index13; int index30 = num17; for (int index31 = 0; index31 < 3; ++index31) { index30 -= 7; int index32 = index29; int index33 = index29; while (!Main.tile[index32, index30].active() && !Main.tile[index32, index30 - 1].active() && !Main.tile[index32, index30 + 1].active()) --index32; int num21 = index32 + 1; while (!Main.tile[index33, index30].active() && !Main.tile[index33, index30 - 1].active() && !Main.tile[index33, index30 + 1].active()) ++index33; int num22 = index33 - 1; index29 = (num21 + num22) / 2; Vector2 vector2_7 = WorldGen.randPictureTile(); if ((int) Main.tile[index29, index30].wall != roomWall[0]) vector2_7 = WorldGen.randBoneTile(); int x7 = (int) vector2_7.X; int y7 = (int) vector2_7.Y; if (Math.Abs(num18 - index29) < 4 && !WorldGen.nearPicture(index29, index30)) WorldGen.PlaceTile(index29, index30, x7, true, style: y7); else break; } continue; default: continue; } } } return count; } private static float MakeDungeon_GroundFurniture(int wallType) { float num1 = (float) (2000.0 * (double) Main.maxTilesX / 4200.0); int num2 = 1 + Main.maxTilesX / 4200; int num3 = 1 + Main.maxTilesX / 4200; for (int index1 = 0; (double) index1 < (double) num1; ++index1) { if (num2 > 0 || num3 > 0) --index1; int i1 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX); int j; for (j = WorldGen.genRand.Next((int) Main.worldSurface + 10, WorldGen.dMaxY); !Main.wallDungeon[(int) Main.tile[i1, j].wall] || Main.tile[i1, j].active(); j = WorldGen.genRand.Next((int) Main.worldSurface + 10, WorldGen.dMaxY)) i1 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX); if (Main.wallDungeon[(int) Main.tile[i1, j].wall] && !Main.tile[i1, j].active()) { while (!WorldGen.SolidTile(i1, j) && j < Main.maxTilesY - 200) ++j; int index2 = j - 1; int i2 = i1; int i3 = i1; while (!Main.tile[i2, index2].active() && WorldGen.SolidTile(i2, index2 + 1)) --i2; int num4 = i2 + 1; while (!Main.tile[i3, index2].active() && WorldGen.SolidTile(i3, index2 + 1)) ++i3; int num5 = i3 - 1; int num6 = num5 - num4; int index3 = (num5 + num4) / 2; if (!Main.tile[index3, index2].active() && Main.wallDungeon[(int) Main.tile[index3, index2].wall] && WorldGen.SolidTile(index3, index2 + 1) && Main.tile[index3, index2 + 1].type != (ushort) 48) { int style1 = 13; int style2 = 10; int style3 = 11; int style4 = 1; int style5 = 46; int style6 = 1; int style7 = 5; int style8 = 11; int style9 = 5; int style10 = 6; int style11 = 21; int style12 = 22; int style13 = 24; int style14 = 30; switch (wallType) { case 8: style1 = 14; style2 = 11; style3 = 12; style4 = 2; style5 = 47; style6 = 2; style7 = 6; style8 = 12; style9 = 6; style10 = 7; style11 = 22; style12 = 23; style13 = 25; style14 = 31; break; case 9: style1 = 15; style2 = 12; style3 = 13; style4 = 3; style5 = 48; style6 = 3; style7 = 7; style8 = 13; style9 = 7; style10 = 8; style11 = 23; style12 = 24; style13 = 26; style14 = 32; break; } if (Main.tile[index3, index2].wall >= (byte) 94 && Main.tile[index3, index2].wall <= (byte) 105) { style1 = 17; style2 = 14; style3 = 15; style4 = -1; style5 = -1; style6 = 5; style7 = -1; style8 = -1; style9 = -1; style10 = -1; style11 = -1; style12 = -1; style13 = -1; style14 = -1; } int num7 = WorldGen.genRand.Next(13); if ((num7 == 10 || num7 == 11 || num7 == 12) && WorldGen.genRand.Next(4) != 0) num7 = WorldGen.genRand.Next(13); while (num7 == 2 && style5 == -1 || num7 == 5 && style7 == -1 || num7 == 6 && style8 == -1 || num7 == 7 && style9 == -1 || num7 == 8 && style10 == -1 || num7 == 9 && style11 == -1 || num7 == 10 && style12 == -1 || num7 == 11 && style13 == -1 || num7 == 12 && style14 == -1) num7 = WorldGen.genRand.Next(13); int num8 = 0; int num9 = 0; if (num7 == 0) { num8 = 5; num9 = 4; } if (num7 == 1) { num8 = 4; num9 = 3; } if (num7 == 2) { num8 = 3; num9 = 5; } if (num7 == 3) { num8 = 4; num9 = 6; } if (num7 == 4) { num8 = 3; num9 = 3; } if (num7 == 5) { num8 = 5; num9 = 3; } if (num7 == 6) { num8 = 5; num9 = 4; } if (num7 == 7) { num8 = 5; num9 = 4; } if (num7 == 8) { num8 = 5; num9 = 4; } if (num7 == 9) { num8 = 5; num9 = 3; } if (num7 == 10) { num8 = 2; num9 = 4; } if (num7 == 11) { num8 = 3; num9 = 3; } if (num7 == 12) { num8 = 2; num9 = 5; } for (int index4 = index3 - num8; index4 <= index3 + num8; ++index4) { for (int index5 = index2 - num9; index5 <= index2; ++index5) { if (Main.tile[index4, index5].active()) { num7 = -1; break; } } } if ((double) num6 < (double) num8 * 1.75) num7 = -1; if (num2 > 0 || num3 > 0) { if (num2 > 0) { WorldGen.PlaceTile(index3, index2, 355, true); if (Main.tile[index3, index2].type == (ushort) 355) --num2; } else if (num3 > 0) { WorldGen.PlaceTile(index3, index2, 354, true); if (Main.tile[index3, index2].type == (ushort) 354) --num3; } } else { switch (num7) { case 0: WorldGen.PlaceTile(index3, index2, 14, true, style: style2); if (Main.tile[index3, index2].active()) { if (!Main.tile[index3 - 2, index2].active()) { WorldGen.PlaceTile(index3 - 2, index2, 15, true, style: style1); if (Main.tile[index3 - 2, index2].active()) { Main.tile[index3 - 2, index2].frameX += (short) 18; Main.tile[index3 - 2, index2 - 1].frameX += (short) 18; } } if (!Main.tile[index3 + 2, index2].active()) WorldGen.PlaceTile(index3 + 2, index2, 15, true, style: style1); } for (int i4 = index3 - 1; i4 <= index3 + 1; ++i4) { if (WorldGen.genRand.Next(2) == 0 && !Main.tile[i4, index2 - 2].active()) { int num10 = WorldGen.genRand.Next(5); if (style4 != -1 && num10 <= 1 && !Main.tileLighted[(int) Main.tile[i4 - 1, index2 - 2].type]) WorldGen.PlaceTile(i4, index2 - 2, 33, true, style: style4); if (num10 == 2 && !Main.tileLighted[(int) Main.tile[i4 - 1, index2 - 2].type]) WorldGen.PlaceTile(i4, index2 - 2, 49, true); if (num10 == 3) WorldGen.PlaceTile(i4, index2 - 2, 50, true); if (num10 == 4) WorldGen.PlaceTile(i4, index2 - 2, 103, true); } } continue; case 1: WorldGen.PlaceTile(index3, index2, 18, true, style: style3); if (Main.tile[index3, index2].active()) { if (WorldGen.genRand.Next(2) == 0) { if (!Main.tile[index3 - 1, index2].active()) { WorldGen.PlaceTile(index3 - 1, index2, 15, true, style: style1); if (Main.tile[index3 - 1, index2].active()) { Main.tile[index3 - 1, index2].frameX += (short) 18; Main.tile[index3 - 1, index2 - 1].frameX += (short) 18; } } } else if (!Main.tile[index3 + 2, index2].active()) WorldGen.PlaceTile(index3 + 2, index2, 15, true, style: style1); for (int i5 = index3; i5 <= index3 + 1; ++i5) { if (WorldGen.genRand.Next(2) == 0 && !Main.tile[i5, index2 - 1].active()) { int num11 = WorldGen.genRand.Next(5); if (style4 != -1 && num11 <= 1 && !Main.tileLighted[(int) Main.tile[i5 - 1, index2 - 1].type]) WorldGen.PlaceTile(i5, index2 - 1, 33, true, style: style4); if (num11 == 2 && !Main.tileLighted[(int) Main.tile[i5 - 1, index2 - 1].type]) WorldGen.PlaceTile(i5, index2 - 1, 49, true); if (num11 == 3) WorldGen.PlaceTile(i5, index2 - 1, 50, true); if (num11 == 4) WorldGen.PlaceTile(i5, index2 - 1, 103, true); } } continue; } continue; case 2: WorldGen.PlaceTile(index3, index2, 105, true, style: style5); continue; case 3: WorldGen.PlaceTile(index3, index2, 101, true, style: style6); continue; case 4: if (WorldGen.genRand.Next(2) == 0) { WorldGen.PlaceTile(index3, index2, 15, true, style: style1); Main.tile[index3, index2].frameX += (short) 18; Main.tile[index3, index2 - 1].frameX += (short) 18; continue; } WorldGen.PlaceTile(index3, index2, 15, true, style: style1); continue; case 5: if (WorldGen.genRand.Next(2) == 0) { WorldGen.Place4x2(index3, index2, (ushort) 79, 1, style7); continue; } WorldGen.Place4x2(index3, index2, (ushort) 79, style: style7); continue; case 6: WorldGen.PlaceTile(index3, index2, 87, true, style: style8); continue; case 7: WorldGen.PlaceTile(index3, index2, 88, true, style: style9); continue; case 8: WorldGen.PlaceTile(index3, index2, 89, true, style: style10); continue; case 9: if (WorldGen.genRand.Next(2) == 0) { WorldGen.Place4x2(index3, index2, (ushort) 90, 1, style11); continue; } WorldGen.Place4x2(index3, index2, (ushort) 90, style: style11); continue; case 10: WorldGen.PlaceTile(index3, index2, 93, true, style: style13); continue; case 11: WorldGen.PlaceTile(index3, index2, 100, true, style: style12); continue; case 12: WorldGen.PlaceTile(index3, index2, 104, true, style: style14); continue; default: continue; } } } } } return num1; } public static Vector2 randBoneTile() { int num1 = WorldGen.genRand.Next(2); int num2 = 0; switch (num1) { case 0: num1 = 240; num2 = WorldGen.genRand.Next(2); switch (num2) { case 0: num2 = 16; break; case 1: num2 = 17; break; } break; case 1: num1 = 241; num2 = WorldGen.genRand.Next(9); break; } return new Vector2((float) num1, (float) num2); } public static Vector2 randHellPicture() { int num1 = WorldGen.genRand.Next(4); if (num1 == 1) num1 = WorldGen.genRand.Next(4); int num2; int num3; if (num1 == 0) { num2 = 240; num3 = WorldGen.genRand.Next(5); switch (num3) { case 0: num3 = 27; break; case 1: num3 = 29; break; case 2: num3 = 30; break; case 3: num3 = 31; break; case 4: num3 = 32; break; } } else if (num1 == 1) { num2 = 242; num3 = 14; } else if (num1 == 2) { num2 = 245; num3 = WorldGen.genRand.Next(3); switch (num3) { case 0: num3 = 1; break; case 1: num3 = 2; break; case 2: num3 = 4; break; } } else { num2 = 246; num3 = WorldGen.genRand.Next(3); switch (num3) { case 0: num3 = 0; break; case 1: num3 = 16; break; case 2: num3 = 17; break; } } return new Vector2((float) num2, (float) num3); } public static Vector2 randHousePicture() { int num1 = WorldGen.genRand.Next(4); int num2; int num3; if (num1 <= 1) { num2 = 240; int maxValue = 10; num3 = WorldGen.genRand.Next(maxValue); if (num3 == 9) num3 = WorldGen.genRand.Next(maxValue); if (num3 == 5) num3 = WorldGen.genRand.Next(maxValue); if (num3 == 6) num3 = WorldGen.genRand.Next(maxValue); if (num3 == 0) num3 = 26; else if (num3 == 1) num3 = 28; else if (num3 == 2) num3 = 20; else if (num3 == 3) num3 = 21; else if (num3 == 4) num3 = 22; else if (num3 == 5) num3 = 24; else if (num3 == 6) num3 = 25; else if (num3 == 7) num3 = 33; else if (num3 == 8) num3 = 34; else if (num3 == 9) num3 = 35; } else if (num1 == 2) { int maxValue = 4; num2 = 245; num3 = WorldGen.genRand.Next(maxValue); if (num3 == 2) num3 = WorldGen.genRand.Next(maxValue); if (num3 == 0) num3 = WorldGen.genRand.Next(maxValue); if (num3 == 0) num3 = WorldGen.genRand.Next(maxValue); if (num3 == 0) num3 = WorldGen.genRand.Next(maxValue); if (num3 == 0) num3 = 0; else if (num3 == 1) num3 = 3; else if (num3 == 2) num3 = 5; else if (num3 == 3) num3 = 6; } else { num2 = 246; num3 = 1; } return new Vector2((float) num2, (float) num3); } public static Vector2 randPictureTile() { int num1 = WorldGen.genRand.Next(3); int num2 = 0; if (num1 <= 1) { int maxValue = 7; num1 = 240; num2 = WorldGen.genRand.Next(maxValue); if (num2 == 6) num2 = WorldGen.genRand.Next(maxValue); if (num2 == 0) num2 = 12; else if (num2 == 1) num2 = 13; else if (num2 == 2) num2 = 14; else if (num2 == 3) num2 = 15; else if (num2 == 4) num2 = 18; else if (num2 == 5) num2 = 19; else if (num2 == 6) num2 = 23; } else if (num1 == 2) { num1 = 242; num2 = WorldGen.genRand.Next(17); if (num2 > 13) { switch (num2) { case 14: num2 = 15; break; case 15: num2 = 16; break; case 16: num2 = 30; break; } } } return new Vector2((float) num1, (float) num2); } public static void DungeonStairs(int i, int j, ushort tileType, int wallType) { Vector2 zero = Vector2.Zero; double num1 = (double) WorldGen.genRand.Next(5, 9); Vector2 vector2; vector2.X = (float) i; vector2.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; zero.Y = -1f; zero.X = (float) num3; if (WorldGen.genRand.Next(3) != 0) zero.X *= (float) (1.0 + (double) WorldGen.genRand.Next(0, 200) * 0.00999999977648258); else if (WorldGen.genRand.Next(3) == 0) zero.X *= (float) WorldGen.genRand.Next(50, 76) * 0.01f; else if (WorldGen.genRand.Next(6) == 0) zero.Y *= 2f; if (WorldGen.dungeonX < Main.maxTilesX / 2 && (double) zero.X < 0.0 && (double) zero.X < 0.5) zero.X = -0.5f; if (WorldGen.dungeonX > Main.maxTilesX / 2 && (double) zero.X > 0.0 && (double) zero.X > 0.5) zero.X = -0.5f; while (num2 > 0) { --num2; int num4 = (int) ((double) vector2.X - num1 - 4.0 - (double) WorldGen.genRand.Next(6)); int num5 = (int) ((double) vector2.X + num1 + 4.0 + (double) WorldGen.genRand.Next(6)); int num6 = (int) ((double) vector2.Y - num1 - 4.0); int num7 = (int) ((double) vector2.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.X > (double) (Main.maxTilesX / 2)) num8 = -1; int i1 = (int) ((double) vector2.X + WorldGen.dxStrength1 * 0.600000023841858 * (double) num8 + WorldGen.dxStrength2 * (double) num8); int num9 = (int) (WorldGen.dyStrength2 * 0.5); if ((double) vector2.Y < Main.worldSurface - 5.0 && Main.tile[i1, (int) ((double) vector2.Y - num1 - 6.0 + (double) num9)].wall == (byte) 0 && Main.tile[i1, (int) ((double) vector2.Y - num1 - 7.0 + (double) num9)].wall == (byte) 0 && Main.tile[i1, (int) ((double) vector2.Y - num1 - 8.0 + (double) num9)].wall == (byte) 0) { WorldGen.dSurface = true; WorldGen.TileRunner(i1, (int) ((double) vector2.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 (!Main.wallDungeon[(int) Main.tile[index1, index2].wall]) { Main.tile[index1, index2].wall = (byte) 0; Main.tile[index1, index2].active(true); Main.tile[index1, index2].type = tileType; } } } for (int index3 = num4 + 1; index3 < num5 - 1; ++index3) { for (int index4 = num6 + 1; index4 < num7 - 1; ++index4) Main.tile[index3, index4].wall = (byte) wallType; } int num10 = 0; if (WorldGen.genRand.Next((int) num1) == 0) num10 = WorldGen.genRand.Next(1, 3); int num11 = (int) ((double) vector2.X - num1 * 0.5 - (double) num10); int num12 = (int) ((double) vector2.X + num1 * 0.5 + (double) num10); int num13 = (int) ((double) vector2.Y - num1 * 0.5 - (double) num10); int num14 = (int) ((double) vector2.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 i2 = num11; i2 < num12; ++i2) { for (int j1 = num13; j1 < num14; ++j1) { Main.tile[i2, j1].active(false); WorldGen.PlaceWall(i2, j1, wallType, true); } } if (WorldGen.dSurface) num2 = 0; vector2 += zero; if ((double) vector2.Y < Main.worldSurface) zero.Y *= 0.98f; } WorldGen.dungeonX = (int) vector2.X; WorldGen.dungeonY = (int) vector2.Y; } public static void DungeonHalls(int i, int j, ushort tileType, int wallType, bool forceX = false) { Vector2 zero1 = Vector2.Zero; double num1 = (double) WorldGen.genRand.Next(4, 6); double num2 = num1; Vector2 zero2 = Vector2.Zero; Vector2 zero3 = Vector2.Zero; Vector2 vector2; vector2.X = (float) i; vector2.Y = (float) j; int num3 = WorldGen.genRand.Next(35, 80); if (forceX) { num3 += 20; WorldGen.lastDungeonHall = Vector2.Zero; } else if (WorldGen.genRand.Next(5) == 0) { num1 *= 2.0; num3 /= 2; } bool flag1 = false; bool flag2 = false; bool flag3 = true; while (!flag1) { bool flag4 = false; int num4; if (flag3 && !forceX) { bool flag5 = true; bool flag6 = true; bool flag7 = true; bool flag8 = true; int num5 = num3; bool flag9 = false; for (int index1 = j; index1 > j - num5; --index1) { int index2 = i; if ((int) Main.tile[index2, index1].wall == wallType) { if (flag9) { flag5 = false; break; } } else flag9 = true; } bool flag10 = false; for (int index3 = j; index3 < j + num5; ++index3) { int index4 = i; if ((int) Main.tile[index4, index3].wall == wallType) { if (flag10) { flag6 = false; break; } } else flag10 = true; } bool flag11 = false; for (int index5 = i; index5 > i - num5; --index5) { int index6 = j; if ((int) Main.tile[index5, index6].wall == wallType) { if (flag11) { flag7 = false; break; } } else flag11 = true; } bool flag12 = false; for (int index7 = i; index7 < i + num5; ++index7) { int index8 = j; if ((int) Main.tile[index7, index8].wall == wallType) { if (flag12) { flag8 = false; break; } } else flag12 = true; } if (!flag7 && !flag8 && !flag5 && !flag6) { num4 = WorldGen.genRand.Next(2) != 0 ? 1 : -1; if (WorldGen.genRand.Next(2) == 0) flag4 = true; } else { WorldGen.genRand.Next(4); int num6; do { num6 = WorldGen.genRand.Next(4); } while (!(num6 == 0 & flag5) && !(num6 == 1 & flag6) && !(num6 == 2 & flag7) && !(num6 == 3 & flag8)); switch (num6) { case 0: num4 = -1; break; case 1: num4 = 1; break; default: flag4 = true; num4 = num6 != 2 ? 1 : -1; break; } } } else { num4 = WorldGen.genRand.Next(2) != 0 ? 1 : -1; if (WorldGen.genRand.Next(2) == 0) flag4 = true; } flag3 = false; if (forceX) flag4 = true; if (flag4) { zero2.Y = 0.0f; zero2.X = (float) num4; zero3.Y = 0.0f; zero3.X = (float) -num4; zero1.Y = 0.0f; zero1.X = (float) num4; if (WorldGen.genRand.Next(3) == 0) zero1.Y = WorldGen.genRand.Next(2) != 0 ? 0.2f : -0.2f; } else { ++num1; zero1.Y = (float) num4; zero1.X = 0.0f; zero2.X = 0.0f; zero2.Y = (float) num4; zero3.X = 0.0f; zero3.Y = (float) -num4; if (WorldGen.genRand.Next(3) != 0) { flag2 = true; zero1.X = WorldGen.genRand.Next(2) != 0 ? (float) -WorldGen.genRand.Next(10, 20) * 0.1f : (float) WorldGen.genRand.Next(10, 20) * 0.1f; } else if (WorldGen.genRand.Next(2) == 0) zero1.X = WorldGen.genRand.Next(2) != 0 ? (float) -WorldGen.genRand.Next(20, 40) * 0.01f : (float) WorldGen.genRand.Next(20, 40) * 0.01f; else num3 /= 2; } if (WorldGen.lastDungeonHall != zero3) flag1 = true; } int num7 = 0; if (!forceX) { if ((double) vector2.X > (double) (WorldGen.lastMaxTilesX - 200)) { int num8 = -1; zero2.Y = 0.0f; zero2.X = (float) num8; zero1.Y = 0.0f; zero1.X = (float) num8; if (WorldGen.genRand.Next(3) == 0) zero1.Y = WorldGen.genRand.Next(2) != 0 ? 0.2f : -0.2f; } else if ((double) vector2.X < 200.0) { int num9 = 1; zero2.Y = 0.0f; zero2.X = (float) num9; zero1.Y = 0.0f; zero1.X = (float) num9; if (WorldGen.genRand.Next(3) == 0) zero1.Y = WorldGen.genRand.Next(2) != 0 ? 0.2f : -0.2f; } else if ((double) vector2.Y > (double) (WorldGen.lastMaxTilesY - 300)) { int num10 = -1; ++num1; zero1.Y = (float) num10; zero1.X = 0.0f; zero2.X = 0.0f; zero2.Y = (float) num10; if (WorldGen.genRand.Next(2) == 0) zero1.X = WorldGen.genRand.Next(2) != 0 ? (float) -WorldGen.genRand.Next(20, 50) * 0.01f : (float) WorldGen.genRand.Next(20, 50) * 0.01f; } else if ((double) vector2.Y < Main.rockLayer + 100.0) { int num11 = 1; ++num1; zero1.Y = (float) num11; zero1.X = 0.0f; zero2.X = 0.0f; zero2.Y = (float) num11; if (WorldGen.genRand.Next(3) != 0) { flag2 = true; zero1.X = WorldGen.genRand.Next(2) != 0 ? (float) -WorldGen.genRand.Next(10, 20) * 0.1f : (float) WorldGen.genRand.Next(10, 20) * 0.1f; } else if (WorldGen.genRand.Next(2) == 0) zero1.X = WorldGen.genRand.Next(2) != 0 ? (float) WorldGen.genRand.Next(20, 50) * 0.01f : (float) WorldGen.genRand.Next(20, 50) * 0.01f; } else if ((double) vector2.X < (double) (Main.maxTilesX / 2) && (double) vector2.X > (double) Main.maxTilesX * 0.25) { int num12 = -1; zero2.Y = 0.0f; zero2.X = (float) num12; zero1.Y = 0.0f; zero1.X = (float) num12; if (WorldGen.genRand.Next(3) == 0) zero1.Y = WorldGen.genRand.Next(2) != 0 ? 0.2f : -0.2f; } else if ((double) vector2.X > (double) (Main.maxTilesX / 2) && (double) vector2.X < (double) Main.maxTilesX * 0.75) { int num13 = 1; zero2.Y = 0.0f; zero2.X = (float) num13; zero1.Y = 0.0f; zero1.X = (float) num13; if (WorldGen.genRand.Next(3) == 0) zero1.Y = WorldGen.genRand.Next(2) != 0 ? 0.2f : -0.2f; } } if ((double) zero2.Y == 0.0) { WorldGen.DDoorX[WorldGen.numDDoors] = (int) vector2.X; WorldGen.DDoorY[WorldGen.numDDoors] = (int) vector2.Y; WorldGen.DDoorPos[WorldGen.numDDoors] = 0; ++WorldGen.numDDoors; } else { WorldGen.DPlatX[WorldGen.numDPlats] = (int) vector2.X; WorldGen.DPlatY[WorldGen.numDPlats] = (int) vector2.Y; ++WorldGen.numDPlats; } WorldGen.lastDungeonHall = zero2; if ((double) Math.Abs(zero1.X) > (double) Math.Abs(zero1.Y) && WorldGen.genRand.Next(3) != 0) num1 = (double) (int) (num2 * ((double) WorldGen.genRand.Next(110, 150) * 0.01)); while (num3 > 0) { ++num7; if ((double) zero2.X > 0.0 && (double) vector2.X > (double) (Main.maxTilesX - 100)) num3 = 0; else if ((double) zero2.X < 0.0 && (double) vector2.X < 100.0) num3 = 0; else if ((double) zero2.Y > 0.0 && (double) vector2.Y > (double) (Main.maxTilesY - 100)) num3 = 0; else if ((double) zero2.Y < 0.0 && (double) vector2.Y < Main.rockLayer + 50.0) num3 = 0; --num3; int num14 = (int) ((double) vector2.X - num1 - 4.0 - (double) WorldGen.genRand.Next(6)); int num15 = (int) ((double) vector2.X + num1 + 4.0 + (double) WorldGen.genRand.Next(6)); int num16 = (int) ((double) vector2.Y - num1 - 4.0 - (double) WorldGen.genRand.Next(6)); int num17 = (int) ((double) vector2.Y + num1 + 4.0 + (double) WorldGen.genRand.Next(6)); if (num14 < 0) num14 = 0; if (num15 > Main.maxTilesX) num15 = Main.maxTilesX; if (num16 < 0) num16 = 0; if (num17 > Main.maxTilesY) num17 = Main.maxTilesY; for (int index9 = num14; index9 < num15; ++index9) { for (int index10 = num16; index10 < num17; ++index10) { if (index9 < WorldGen.dMinX) WorldGen.dMinX = index9; if (index9 > WorldGen.dMaxX) WorldGen.dMaxX = index9; if (index10 > WorldGen.dMaxY) WorldGen.dMaxY = index10; Main.tile[index9, index10].liquid = (byte) 0; if (!Main.wallDungeon[(int) Main.tile[index9, index10].wall]) { Main.tile[index9, index10].active(true); Main.tile[index9, index10].type = tileType; } } } for (int index11 = num14 + 1; index11 < num15 - 1; ++index11) { for (int index12 = num16 + 1; index12 < num17 - 1; ++index12) Main.tile[index11, index12].wall = (byte) wallType; } int num18 = 0; if ((double) zero1.Y == 0.0 && WorldGen.genRand.Next((int) num1 + 1) == 0) num18 = WorldGen.genRand.Next(1, 3); else if ((double) zero1.X == 0.0 && WorldGen.genRand.Next((int) num1 - 1) == 0) num18 = WorldGen.genRand.Next(1, 3); else if (WorldGen.genRand.Next((int) num1 * 3) == 0) num18 = WorldGen.genRand.Next(1, 3); int num19 = (int) ((double) vector2.X - num1 * 0.5 - (double) num18); int num20 = (int) ((double) vector2.X + num1 * 0.5 + (double) num18); int num21 = (int) ((double) vector2.Y - num1 * 0.5 - (double) num18); int num22 = (int) ((double) vector2.Y + num1 * 0.5 + (double) num18); if (num19 < 0) num19 = 0; if (num20 > Main.maxTilesX) num20 = Main.maxTilesX; if (num21 < 0) num21 = 0; if (num22 > Main.maxTilesY) num22 = Main.maxTilesY; for (int index13 = num19; index13 < num20; ++index13) { for (int index14 = num21; index14 < num22; ++index14) { Main.tile[index13, index14].active(false); Main.tile[index13, index14].wall = (byte) wallType; } } vector2 += zero1; if (flag2 && num7 > WorldGen.genRand.Next(10, 20)) { num7 = 0; zero1.X *= -1f; } } WorldGen.dungeonX = (int) vector2.X; WorldGen.dungeonY = (int) vector2.Y; if ((double) zero2.Y == 0.0) { WorldGen.DDoorX[WorldGen.numDDoors] = (int) vector2.X; WorldGen.DDoorY[WorldGen.numDDoors] = (int) vector2.Y; WorldGen.DDoorPos[WorldGen.numDDoors] = 0; ++WorldGen.numDDoors; } else { WorldGen.DPlatX[WorldGen.numDPlats] = (int) vector2.X; WorldGen.DPlatY[WorldGen.numDPlats] = (int) vector2.Y; ++WorldGen.numDPlats; } } public static void DungeonRoom(int i, int j, ushort 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) { if (index1 < WorldGen.dMinX) WorldGen.dMinX = index1; if (index1 > WorldGen.dMaxX) WorldGen.dMaxX = index1; if (index2 > WorldGen.dMaxY) WorldGen.dMaxY = index2; Main.tile[index1, index2].liquid = (byte) 0; if (!Main.wallDungeon[(int) Main.tile[index1, index2].wall]) { Main.tile[index1, index2].active(true); Main.tile[index1, index2].type = tileType; } } } for (int index3 = num7 + 1; index3 < num8 - 1; ++index3) { for (int index4 = num9 + 1; index4 < num10 - 1; ++index4) Main.tile[index3, index4].wall = (byte) wallType; } 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 index5 = num11; index5 < num12; ++index5) { for (int index6 = num13; index6 < num14; ++index6) { Main.tile[index5, index6].active(false); Main.tile[index5, index6].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, ushort 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 index3 = num3; index3 < num4; ++index3) { for (int index4 = num5; index4 < num6; ++index4) { Main.tile[index3, index4].liquid = (byte) 0; if ((int) Main.tile[index3, index4].wall != wallType) { Main.tile[index3, index4].wall = (byte) 0; if (index3 > num3 + 1 && index3 < num4 - 2 && index4 > num5 + 1 && index4 < num6 - 2) Main.tile[index3, index4].wall = (byte) wallType; Main.tile[index3, index4].active(true); Main.tile[index3, index4].type = 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 index5 = num7; index5 < num8; ++index5) { for (int index6 = num9; index6 < num10; ++index6) { if ((int) Main.tile[index5, index6].wall != wallType) { Main.tile[index5, index6].active(true); Main.tile[index5, index6].type = 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 index7 = num11; index7 < num12; ++index7) { for (int index8 = num13; index8 < num14; ++index8) { if ((int) Main.tile[index7, index8].wall != wallType) { Main.tile[index7, index8].active(true); Main.tile[index7, index8].type = tileType; } } } int num15 = 1 + WorldGen.genRand.Next(2); int num16 = 2 + WorldGen.genRand.Next(4); int num17 = 0; for (int index9 = num3; index9 < num4; ++index9) { for (int index10 = num5 - num15; index10 < num5; ++index10) { if ((int) Main.tile[index9, index10].wall != wallType) { Main.tile[index9, index10].active(true); Main.tile[index9, index10].type = tileType; } } ++num17; if (num17 >= num16) { index9 += num16; num17 = 0; } } for (int index11 = num3; index11 < num4; ++index11) { for (int index12 = num6; (double) index12 < Main.worldSurface; ++index12) { if (!Main.wallDungeon[(int) Main.tile[index11, index12].wall]) { Main.tile[index11, index12].active(true); Main.tile[index11, index12].type = tileType; } Main.tile[index11, index12].wall = (byte) wallType; } } 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 index13 = num18; index13 < num19; ++index13) { for (int index14 = num20; index14 < num21; ++index14) Main.tile[index13, index14].wall = (byte) wallType; } 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 index15 = num22; index15 < num23; ++index15) { for (int index16 = num24; index16 < num25; ++index16) Main.tile[index15, index16].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 index17 = num26; index17 < num27; ++index17) { for (int index18 = num28; index18 < num29; ++index18) { Main.tile[index17, index18].active(false); Main.tile[index17, index18].wall = (byte) wallType; } } int x = (int) vector2.X; int index19 = num29; for (int index20 = 0; index20 < 20; ++index20) { int index21 = (int) vector2.X - index20; if (!Main.tile[index21, index19].active() && Main.wallDungeon[(int) Main.tile[index21, index19].wall]) { WorldGen.DPlatX[WorldGen.numDPlats] = index21; WorldGen.DPlatY[WorldGen.numDPlats] = index19; ++WorldGen.numDPlats; break; } int index22 = (int) vector2.X + index20; if (!Main.tile[index22, index19].active() && Main.wallDungeon[(int) Main.tile[index22, index19].wall]) { WorldGen.DPlatX[WorldGen.numDPlats] = index22; WorldGen.DPlatY[WorldGen.numDPlats] = index19; ++WorldGen.numDPlats; break; } } 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 index23 = num30; index23 < num31; ++index23) { for (int index24 = num32; index24 < num33; ++index24) { if ((int) Main.tile[index23, index24].wall != wallType) { bool flag = true; if (num2 < 0) { if ((double) index23 < (double) vector2.X - dxStrength2 * 0.5) flag = false; } else if ((double) index23 > (double) vector2.X + dxStrength2 * 0.5 - 1.0) flag = false; if (flag) { Main.tile[index23, index24].wall = (byte) 0; Main.tile[index23, index24].active(true); Main.tile[index23, index24].type = tileType; } } } } for (int index25 = num30; index25 < num31; ++index25) { for (int index26 = num33; (double) index26 < Main.worldSurface; ++index26) { if (!Main.wallDungeon[(int) Main.tile[index25, index26].wall]) { Main.tile[index25, index26].active(true); Main.tile[index25, index26].type = tileType; } Main.tile[index25, index26].wall = (byte) wallType; } } 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 index27 = num36; index27 < num37; ++index27) { for (int index28 = num38; index28 < num39; ++index28) { if ((int) Main.tile[index27, index28].wall != wallType) { Main.tile[index27, index28].active(true); Main.tile[index27, index28].type = 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 index29 = num40; index29 < num41; ++index29) { for (int index30 = num42; index30 < num43; ++index30) { if ((int) Main.tile[index29, index30].wall != wallType) { Main.tile[index29, index30].active(true); Main.tile[index29, index30].type = tileType; } } } int num44 = 1 + WorldGen.genRand.Next(2); int num45 = 2 + WorldGen.genRand.Next(4); int num46 = 0; if (num2 < 0) ++num35; for (int index31 = num34 + 1; index31 < num35 - 1; ++index31) { for (int index32 = num32 - num44; index32 < num32; ++index32) { if ((int) Main.tile[index31, index32].wall != wallType) { Main.tile[index31, index32].active(true); Main.tile[index31, index32].type = tileType; } } ++num46; if (num46 >= num45) { index31 += 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 index33 = num47; index33 < num48; ++index33) { for (int index34 = num49; index34 < num50; ++index34) Main.tile[index33, index34].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 index35 = (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 (index35 > Main.maxTilesY) index35 = Main.maxTilesY; for (int index36 = num51; index36 < num52; ++index36) { for (int index37 = num53; index37 < index35; ++index37) { Main.tile[index36, index37].active(false); Main.tile[index36, index37].wall = (byte) 0; } } for (int index38 = num51; index38 < num52; ++index38) { if (!Main.tile[index38, index35].active()) { Main.tile[index38, index35].active(true); Main.tile[index38, index35].type = (ushort) 19; if (wallType == 7) Main.tile[index38, index35].frameY = (short) 108; if (wallType == 8) Main.tile[index38, index35].frameY = (short) 144; if (wallType == 9) Main.tile[index38, index35].frameY = (short) 126; } } Main.dungeonX = (int) vector2.X; Main.dungeonY = index35; int index39 = NPC.NewNPC(Main.dungeonX * 16 + 8, Main.dungeonY * 16, 37); Main.npc[index39].homeless = false; Main.npc[index39].homeTileX = Main.dungeonX; Main.npc[index39].homeTileY = Main.dungeonY; if (num2 == 1) { int num54 = 0; for (int index40 = num52; index40 < num52 + 50; ++index40) { ++num54; for (int index41 = index35 + num54; index41 < index35 + 50; ++index41) { if (!Main.wallDungeon[(int) Main.tile[index40, index41].wall]) { Main.tile[index40, index41].active(true); Main.tile[index40, index41].type = tileType; } } } } else { int num55 = 0; for (int index42 = num51; index42 > num51 - 50; --index42) { ++num55; for (int index43 = index35 + num55; index43 < index35 + 50; ++index43) { if (!Main.wallDungeon[(int) Main.tile[index42, index43].wall]) { Main.tile[index42, index43].active(true); Main.tile[index42, index43].type = 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 i1 = num61; i1 < num62; ++i1) { for (int j1 = num53; j1 < index35; ++j1) WorldGen.PlaceWall(i1, j1, wallType, true); ++num58; if (num58 >= num57) { i1 += 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 index44 = num65; index44 < num66; ++index44) { for (int index45 = num67; index45 < num68; ++index45) Main.tile[index44, index45].active(false); } if (num2 < 0) --vector2.X; WorldGen.PlaceTile((int) vector2.X, (int) vector2.Y + 1, 10, true, style: 13); } public static bool AddBuriedChest( Point point, int contain = 0, bool notNearOtherChests = false, int Style = -1) { return WorldGen.AddBuriedChest(point.X, point.Y, contain, notNearOtherChests, Style); } public static bool AddBuriedChest( int i, int j, int contain = 0, bool notNearOtherChests = false, int Style = -1) { bool flag1 = false; bool flag2 = false; for (int j1 = j; j1 < Main.maxTilesY; ++j1) { if (WorldGen.SolidTile(i, j1)) { bool flag3 = false; int num1 = i; int num2 = j1; int style = 0; if ((double) num2 >= Main.worldSurface + 25.0 || contain > 0) { style = 1; if (Style == 10 || contain == 211 || contain == 212 || contain == 213 || contain == 753) { style = 10; flag2 = true; } } if (Style >= 0) style = Style; if (style == 11 || contain == 0 && (double) num2 >= Main.worldSurface + 25.0 && num2 <= Main.maxTilesY - 205 && (Main.tile[i, j1].type == (ushort) 147 || Main.tile[i, j1].type == (ushort) 161 || Main.tile[i, j1].type == (ushort) 162)) { flag1 = true; style = 11; switch (WorldGen.genRand.Next(6)) { case 0: contain = 670; break; case 1: contain = 724; break; case 2: contain = 950; break; case 3: contain = 1319; break; case 4: contain = 987; break; default: contain = 1579; break; } if (WorldGen.genRand.Next(20) == 0) contain = 997; if (WorldGen.genRand.Next(50) == 0) contain = 669; } if (num2 > Main.maxTilesY - 205 && contain == 0) { if (WorldGen.hellChest == WorldGen.hellChestItem[0]) { contain = 274; style = 4; flag3 = true; } else if (WorldGen.hellChest == WorldGen.hellChestItem[1]) { contain = 220; style = 4; flag3 = true; } else if (WorldGen.hellChest == WorldGen.hellChestItem[2]) { contain = 112; style = 4; flag3 = true; } else if (WorldGen.hellChest == WorldGen.hellChestItem[3]) { contain = 218; style = 4; flag3 = true; } else { contain = 3019; style = 4; flag3 = true; } } int index1 = WorldGen.PlaceChest(num1 - 1, num2 - 1, notNearOtherChests: notNearOtherChests, style: style); if (index1 < 0) return false; if (flag3) { ++WorldGen.hellChest; if (WorldGen.hellChest > 4) WorldGen.hellChest = 0; } int index2 = 0; while (index2 == 0) { if (style == 0 && (double) num2 < Main.worldSurface + 25.0 || contain == 848) { if (contain > 0) { Main.chest[index1].item[index2].SetDefaults(contain); Main.chest[index1].item[index2].Prefix(-1); switch (contain) { case 832: ++index2; Main.chest[index1].item[index2].SetDefaults(933); break; case 848: ++index2; Main.chest[index1].item[index2].SetDefaults(866); break; } ++index2; } else { int num3 = WorldGen.genRand.Next(11); if (num3 == 0) { Main.chest[index1].item[index2].SetDefaults(280); Main.chest[index1].item[index2].Prefix(-1); } if (num3 == 1) { Main.chest[index1].item[index2].SetDefaults(281); Main.chest[index1].item[index2].Prefix(-1); } if (num3 == 2) { Main.chest[index1].item[index2].SetDefaults(284); Main.chest[index1].item[index2].Prefix(-1); } if (num3 == 3) { Main.chest[index1].item[index2].SetDefaults(282); Main.chest[index1].item[index2].stack = WorldGen.genRand.Next(40, 75); } if (num3 == 4) { Main.chest[index1].item[index2].SetDefaults(279); Main.chest[index1].item[index2].stack = WorldGen.genRand.Next(70, 150); } if (num3 == 5) { Main.chest[index1].item[index2].SetDefaults(285); Main.chest[index1].item[index2].Prefix(-1); } if (num3 == 6) { Main.chest[index1].item[index2].SetDefaults(953); Main.chest[index1].item[index2].Prefix(-1); } if (num3 == 7) { Main.chest[index1].item[index2].SetDefaults(946); Main.chest[index1].item[index2].Prefix(-1); } if (num3 == 8) { Main.chest[index1].item[index2].SetDefaults(3068); Main.chest[index1].item[index2].Prefix(-1); } if (num3 == 9) { Main.chest[index1].item[index2].SetDefaults(3069); Main.chest[index1].item[index2].Prefix(-1); } if (num3 == 10) { Main.chest[index1].item[index2].SetDefaults(3084); Main.chest[index1].item[index2].Prefix(-1); } ++index2; } if (WorldGen.genRand.Next(6) == 0) { Main.chest[index1].item[index2].SetDefaults(3093); Main.chest[index1].item[index2].stack = 1; if (WorldGen.genRand.Next(5) == 0) Main.chest[index1].item[index2].stack += WorldGen.genRand.Next(2); if (WorldGen.genRand.Next(10) == 0) Main.chest[index1].item[index2].stack += WorldGen.genRand.Next(3); ++index2; } if (WorldGen.genRand.Next(3) == 0) { Main.chest[index1].item[index2].SetDefaults(168); Main.chest[index1].item[index2].stack = WorldGen.genRand.Next(3, 6); ++index2; } if (WorldGen.genRand.Next(2) == 0) { int num4 = WorldGen.genRand.Next(2); int num5 = WorldGen.genRand.Next(8) + 3; if (num4 == 0) Main.chest[index1].item[index2].SetDefaults(WorldGen.copperBar); if (num4 == 1) Main.chest[index1].item[index2].SetDefaults(WorldGen.ironBar); Main.chest[index1].item[index2].stack = num5; ++index2; } if (WorldGen.genRand.Next(2) == 0) { int num6 = WorldGen.genRand.Next(50, 101); Main.chest[index1].item[index2].SetDefaults(965); Main.chest[index1].item[index2].stack = num6; ++index2; } if (WorldGen.genRand.Next(3) != 0) { int num7 = WorldGen.genRand.Next(2); int num8 = WorldGen.genRand.Next(26) + 25; if (num7 == 0) Main.chest[index1].item[index2].SetDefaults(40); if (num7 == 1) Main.chest[index1].item[index2].SetDefaults(42); Main.chest[index1].item[index2].stack = num8; ++index2; } if (WorldGen.genRand.Next(2) == 0) { int num9 = WorldGen.genRand.Next(1); int num10 = WorldGen.genRand.Next(3) + 3; if (num9 == 0) Main.chest[index1].item[index2].SetDefaults(28); Main.chest[index1].item[index2].stack = num10; ++index2; } if (WorldGen.genRand.Next(3) != 0) { Main.chest[index1].item[index2].SetDefaults(2350); Main.chest[index1].item[index2].stack = WorldGen.genRand.Next(2, 5); ++index2; } if (WorldGen.genRand.Next(3) > 0) { int num11 = WorldGen.genRand.Next(6); int num12 = WorldGen.genRand.Next(1, 3); if (num11 == 0) Main.chest[index1].item[index2].SetDefaults(292); if (num11 == 1) Main.chest[index1].item[index2].SetDefaults(298); if (num11 == 2) Main.chest[index1].item[index2].SetDefaults(299); if (num11 == 3) Main.chest[index1].item[index2].SetDefaults(290); if (num11 == 4) Main.chest[index1].item[index2].SetDefaults(2322); if (num11 == 5) Main.chest[index1].item[index2].SetDefaults(2325); Main.chest[index1].item[index2].stack = num12; ++index2; } if (WorldGen.genRand.Next(2) == 0) { int num13 = WorldGen.genRand.Next(2); int num14 = WorldGen.genRand.Next(11) + 10; if (num13 == 0) Main.chest[index1].item[index2].SetDefaults(8); if (num13 == 1) Main.chest[index1].item[index2].SetDefaults(31); Main.chest[index1].item[index2].stack = num14; ++index2; } if (WorldGen.genRand.Next(2) == 0) { Main.chest[index1].item[index2].SetDefaults(72); Main.chest[index1].item[index2].stack = WorldGen.genRand.Next(10, 30); ++index2; } } else if ((double) num2 < Main.rockLayer) { if (contain > 0) { if (contain == 832) { Main.chest[index1].item[index2].SetDefaults(933); ++index2; } Main.chest[index1].item[index2].SetDefaults(contain); Main.chest[index1].item[index2].Prefix(-1); ++index2; } else { int num15 = WorldGen.genRand.Next(7); if (WorldGen.genRand.Next(20) == 0) { Main.chest[index1].item[index2].SetDefaults(997); Main.chest[index1].item[index2].Prefix(-1); } else { if (num15 == 0) { Main.chest[index1].item[index2].SetDefaults(49); Main.chest[index1].item[index2].Prefix(-1); } if (num15 == 1) { Main.chest[index1].item[index2].SetDefaults(50); Main.chest[index1].item[index2].Prefix(-1); } if (num15 == 2) { Main.chest[index1].item[index2].SetDefaults(53); Main.chest[index1].item[index2].Prefix(-1); } if (num15 == 3) { Main.chest[index1].item[index2].SetDefaults(54); Main.chest[index1].item[index2].Prefix(-1); } if (num15 == 4) { Main.chest[index1].item[index2].SetDefaults(55); Main.chest[index1].item[index2].Prefix(-1); } if (num15 == 5) { Main.chest[index1].item[index2].SetDefaults(975); Main.chest[index1].item[index2].Prefix(-1); } if (num15 == 6) { Main.chest[index1].item[index2].SetDefaults(930); Main.chest[index1].item[index2].Prefix(-1); ++index2; Main.chest[index1].item[index2].SetDefaults(931); Main.chest[index1].item[index2].stack = WorldGen.genRand.Next(26) + 25; } } ++index2; } if (WorldGen.genRand.Next(3) == 0) { Main.chest[index1].item[index2].SetDefaults(166); Main.chest[index1].item[index2].stack = WorldGen.genRand.Next(10, 20); ++index2; } if (WorldGen.genRand.Next(5) == 0) { Main.chest[index1].item[index2].SetDefaults(52); ++index2; } if (WorldGen.genRand.Next(3) == 0) { int num16 = WorldGen.genRand.Next(50, 101); Main.chest[index1].item[index2].SetDefaults(965); Main.chest[index1].item[index2].stack = num16; ++index2; } if (WorldGen.genRand.Next(2) == 0) { int num17 = WorldGen.genRand.Next(2); int num18 = WorldGen.genRand.Next(10) + 5; if (num17 == 0) Main.chest[index1].item[index2].SetDefaults(WorldGen.ironBar); if (num17 == 1) Main.chest[index1].item[index2].SetDefaults(WorldGen.silverBar); Main.chest[index1].item[index2].stack = num18; ++index2; } if (WorldGen.genRand.Next(2) == 0) { int num19 = WorldGen.genRand.Next(2); int num20 = WorldGen.genRand.Next(25) + 25; if (num19 == 0) Main.chest[index1].item[index2].SetDefaults(40); if (num19 == 1) Main.chest[index1].item[index2].SetDefaults(42); Main.chest[index1].item[index2].stack = num20; ++index2; } if (WorldGen.genRand.Next(2) == 0) { int num21 = WorldGen.genRand.Next(1); int num22 = WorldGen.genRand.Next(3) + 3; if (num21 == 0) Main.chest[index1].item[index2].SetDefaults(28); Main.chest[index1].item[index2].stack = num22; ++index2; } if (WorldGen.genRand.Next(3) > 0) { int num23 = WorldGen.genRand.Next(9); int num24 = WorldGen.genRand.Next(1, 3); if (num23 == 0) Main.chest[index1].item[index2].SetDefaults(289); if (num23 == 1) Main.chest[index1].item[index2].SetDefaults(298); if (num23 == 2) Main.chest[index1].item[index2].SetDefaults(299); if (num23 == 3) Main.chest[index1].item[index2].SetDefaults(290); if (num23 == 4) Main.chest[index1].item[index2].SetDefaults(303); if (num23 == 5) Main.chest[index1].item[index2].SetDefaults(291); if (num23 == 6) Main.chest[index1].item[index2].SetDefaults(304); if (num23 == 7) Main.chest[index1].item[index2].SetDefaults(2322); if (num23 == 8) Main.chest[index1].item[index2].SetDefaults(2329); Main.chest[index1].item[index2].stack = num24; ++index2; } if (WorldGen.genRand.Next(3) != 0) { int num25 = WorldGen.genRand.Next(1, 3); Main.chest[index1].item[index2].SetDefaults(2350); Main.chest[index1].item[index2].stack = num25; ++index2; } if (WorldGen.genRand.Next(2) == 0) { int num26 = WorldGen.genRand.Next(11) + 10; if (style == 11) Main.chest[index1].item[index2].SetDefaults(974); else Main.chest[index1].item[index2].SetDefaults(8); Main.chest[index1].item[index2].stack = num26; ++index2; } if (WorldGen.genRand.Next(2) == 0) { Main.chest[index1].item[index2].SetDefaults(72); Main.chest[index1].item[index2].stack = WorldGen.genRand.Next(50, 90); ++index2; } } else if (num2 < Main.maxTilesY - 250) { if (contain > 0) { Main.chest[index1].item[index2].SetDefaults(contain); Main.chest[index1].item[index2].Prefix(-1); ++index2; if (flag1 && WorldGen.genRand.Next(5) == 0) { Main.chest[index1].item[index2].SetDefaults(3199); ++index2; } if (flag2 && WorldGen.genRand.Next(6) == 0) { Item[] objArray1 = Main.chest[index1].item; int index3 = index2; int num27 = index3 + 1; objArray1[index3].SetDefaults(3360); Item[] objArray2 = Main.chest[index1].item; int index4 = num27; index2 = index4 + 1; objArray2[index4].SetDefaults(3361); } } else { int num28 = WorldGen.genRand.Next(7); if (WorldGen.genRand.Next(40) == 0) { Main.chest[index1].item[index2].SetDefaults(906); Main.chest[index1].item[index2].Prefix(-1); } else if (WorldGen.genRand.Next(15) == 0) { Main.chest[index1].item[index2].SetDefaults(997); Main.chest[index1].item[index2].Prefix(-1); } else { if (num28 == 0) { Main.chest[index1].item[index2].SetDefaults(49); Main.chest[index1].item[index2].Prefix(-1); } if (num28 == 1) { Main.chest[index1].item[index2].SetDefaults(50); Main.chest[index1].item[index2].Prefix(-1); } if (num28 == 2) { Main.chest[index1].item[index2].SetDefaults(53); Main.chest[index1].item[index2].Prefix(-1); } if (num28 == 3) { Main.chest[index1].item[index2].SetDefaults(54); Main.chest[index1].item[index2].Prefix(-1); } if (num28 == 4) { Main.chest[index1].item[index2].SetDefaults(55); Main.chest[index1].item[index2].Prefix(-1); } if (num28 == 5) { Main.chest[index1].item[index2].SetDefaults(975); Main.chest[index1].item[index2].Prefix(-1); } if (num28 == 6) { Main.chest[index1].item[index2].SetDefaults(930); Main.chest[index1].item[index2].Prefix(-1); ++index2; Main.chest[index1].item[index2].SetDefaults(931); Main.chest[index1].item[index2].stack = WorldGen.genRand.Next(26) + 25; } } ++index2; } if (WorldGen.genRand.Next(5) == 0) { Main.chest[index1].item[index2].SetDefaults(43); ++index2; } if (WorldGen.genRand.Next(3) == 0) { Main.chest[index1].item[index2].SetDefaults(167); ++index2; } if (WorldGen.genRand.Next(4) == 0) { Main.chest[index1].item[index2].SetDefaults(51); Main.chest[index1].item[index2].stack = WorldGen.genRand.Next(26) + 25; ++index2; } if (WorldGen.genRand.Next(2) == 0) { int num29 = WorldGen.genRand.Next(2); int num30 = WorldGen.genRand.Next(8) + 3; if (num29 == 0) Main.chest[index1].item[index2].SetDefaults(WorldGen.goldBar); if (num29 == 1) Main.chest[index1].item[index2].SetDefaults(WorldGen.silverBar); Main.chest[index1].item[index2].stack = num30; ++index2; } if (WorldGen.genRand.Next(2) == 0) { int num31 = WorldGen.genRand.Next(2); int num32 = WorldGen.genRand.Next(26) + 25; if (num31 == 0) Main.chest[index1].item[index2].SetDefaults(41); if (num31 == 1) Main.chest[index1].item[index2].SetDefaults(279); Main.chest[index1].item[index2].stack = num32; ++index2; } if (WorldGen.genRand.Next(2) == 0) { int num33 = WorldGen.genRand.Next(1); int num34 = WorldGen.genRand.Next(3) + 3; if (num33 == 0) Main.chest[index1].item[index2].SetDefaults(188); Main.chest[index1].item[index2].stack = num34; ++index2; } if (WorldGen.genRand.Next(3) > 0) { int num35 = WorldGen.genRand.Next(6); int num36 = WorldGen.genRand.Next(1, 3); if (num35 == 0) Main.chest[index1].item[index2].SetDefaults(296); if (num35 == 1) Main.chest[index1].item[index2].SetDefaults(295); if (num35 == 2) Main.chest[index1].item[index2].SetDefaults(299); if (num35 == 3) Main.chest[index1].item[index2].SetDefaults(302); if (num35 == 4) Main.chest[index1].item[index2].SetDefaults(303); if (num35 == 5) Main.chest[index1].item[index2].SetDefaults(305); Main.chest[index1].item[index2].stack = num36; ++index2; } if (WorldGen.genRand.Next(3) > 1) { int num37 = WorldGen.genRand.Next(7); int num38 = WorldGen.genRand.Next(1, 3); if (num37 == 0) Main.chest[index1].item[index2].SetDefaults(301); if (num37 == 1) Main.chest[index1].item[index2].SetDefaults(302); if (num37 == 2) Main.chest[index1].item[index2].SetDefaults(297); if (num37 == 3) Main.chest[index1].item[index2].SetDefaults(304); if (num37 == 4) Main.chest[index1].item[index2].SetDefaults(2329); if (num37 == 5) Main.chest[index1].item[index2].SetDefaults(2351); if (num37 == 6) Main.chest[index1].item[index2].SetDefaults(2329); Main.chest[index1].item[index2].stack = num38; ++index2; } if (WorldGen.genRand.Next(2) == 0) { int num39 = WorldGen.genRand.Next(1, 3); Main.chest[index1].item[index2].SetDefaults(2350); Main.chest[index1].item[index2].stack = num39; ++index2; } if (WorldGen.genRand.Next(2) == 0) { int num40 = WorldGen.genRand.Next(2); int num41 = WorldGen.genRand.Next(15) + 15; if (num40 == 0) { if (style == 11) Main.chest[index1].item[index2].SetDefaults(974); else Main.chest[index1].item[index2].SetDefaults(8); } if (num40 == 1) Main.chest[index1].item[index2].SetDefaults(282); Main.chest[index1].item[index2].stack = num41; ++index2; } if (WorldGen.genRand.Next(2) == 0) { Main.chest[index1].item[index2].SetDefaults(73); Main.chest[index1].item[index2].stack = WorldGen.genRand.Next(1, 3); ++index2; } } else { if (contain > 0) { Main.chest[index1].item[index2].SetDefaults(contain); Main.chest[index1].item[index2].Prefix(-1); ++index2; } else { int num42 = WorldGen.genRand.Next(4); if (num42 == 0) { Main.chest[index1].item[index2].SetDefaults(49); Main.chest[index1].item[index2].Prefix(-1); } if (num42 == 1) { Main.chest[index1].item[index2].SetDefaults(50); Main.chest[index1].item[index2].Prefix(-1); } if (num42 == 2) { Main.chest[index1].item[index2].SetDefaults(53); Main.chest[index1].item[index2].Prefix(-1); } if (num42 == 3) { Main.chest[index1].item[index2].SetDefaults(54); Main.chest[index1].item[index2].Prefix(-1); } ++index2; } if (WorldGen.genRand.Next(3) == 0) { Main.chest[index1].item[index2].SetDefaults(167); ++index2; } if (WorldGen.genRand.Next(2) == 0) { int num43 = WorldGen.genRand.Next(2); int num44 = WorldGen.genRand.Next(15) + 15; if (num43 == 0) Main.chest[index1].item[index2].SetDefaults(117); if (num43 == 1) Main.chest[index1].item[index2].SetDefaults(WorldGen.goldBar); Main.chest[index1].item[index2].stack = num44; ++index2; } if (WorldGen.genRand.Next(2) == 0) { int num45 = WorldGen.genRand.Next(2); int num46 = WorldGen.genRand.Next(25) + 50; if (num45 == 0) Main.chest[index1].item[index2].SetDefaults(265); if (num45 == 1) Main.chest[index1].item[index2].SetDefaults(278); Main.chest[index1].item[index2].stack = num46; ++index2; } if (WorldGen.genRand.Next(2) == 0) { int num47 = WorldGen.genRand.Next(2); int num48 = WorldGen.genRand.Next(6) + 15; if (num47 == 0) Main.chest[index1].item[index2].SetDefaults(226); if (num47 == 1) Main.chest[index1].item[index2].SetDefaults(227); Main.chest[index1].item[index2].stack = num48; ++index2; } if (WorldGen.genRand.Next(4) > 0) { int num49 = WorldGen.genRand.Next(8); int num50 = WorldGen.genRand.Next(1, 3); if (num49 == 0) Main.chest[index1].item[index2].SetDefaults(296); if (num49 == 1) Main.chest[index1].item[index2].SetDefaults(295); if (num49 == 2) Main.chest[index1].item[index2].SetDefaults(293); if (num49 == 3) Main.chest[index1].item[index2].SetDefaults(288); if (num49 == 4) Main.chest[index1].item[index2].SetDefaults(294); if (num49 == 5) Main.chest[index1].item[index2].SetDefaults(297); if (num49 == 6) Main.chest[index1].item[index2].SetDefaults(304); if (num49 == 7) Main.chest[index1].item[index2].SetDefaults(2323); Main.chest[index1].item[index2].stack = num50; ++index2; } if (WorldGen.genRand.Next(3) > 0) { int num51 = WorldGen.genRand.Next(8); int num52 = WorldGen.genRand.Next(1, 3); if (num51 == 0) Main.chest[index1].item[index2].SetDefaults(305); if (num51 == 1) Main.chest[index1].item[index2].SetDefaults(301); if (num51 == 2) Main.chest[index1].item[index2].SetDefaults(302); if (num51 == 3) Main.chest[index1].item[index2].SetDefaults(288); if (num51 == 4) Main.chest[index1].item[index2].SetDefaults(300); if (num51 == 5) Main.chest[index1].item[index2].SetDefaults(2351); if (num51 == 6) Main.chest[index1].item[index2].SetDefaults(2348); if (num51 == 7) Main.chest[index1].item[index2].SetDefaults(2345); Main.chest[index1].item[index2].stack = num52; ++index2; } if (WorldGen.genRand.Next(3) == 0) { int num53 = WorldGen.genRand.Next(1, 3); Main.chest[index1].item[index2].SetDefaults(2350); Main.chest[index1].item[index2].stack = num53; ++index2; } if (WorldGen.genRand.Next(2) == 0) { int num54 = WorldGen.genRand.Next(2); int num55 = WorldGen.genRand.Next(15) + 15; if (num54 == 0) Main.chest[index1].item[index2].SetDefaults(8); if (num54 == 1) Main.chest[index1].item[index2].SetDefaults(282); Main.chest[index1].item[index2].stack = num55; ++index2; } if (WorldGen.genRand.Next(2) == 0) { Main.chest[index1].item[index2].SetDefaults(73); Main.chest[index1].item[index2].stack = WorldGen.genRand.Next(2, 5); ++index2; } } if (index2 > 0) { if (style == 10 && WorldGen.genRand.Next(4) == 0) { Main.chest[index1].item[index2].SetDefaults(2204); ++index2; } if (style == 11 && WorldGen.genRand.Next(7) == 0) { Main.chest[index1].item[index2].SetDefaults(2198); ++index2; } if (style == 12 && WorldGen.genRand.Next(2) == 0) { Main.chest[index1].item[index2].SetDefaults(2196); ++index2; } if (style == 13 && WorldGen.genRand.Next(3) == 0) { Main.chest[index1].item[index2].SetDefaults(2197); ++index2; } if (style == 16) { Main.chest[index1].item[index2].SetDefaults(2195); ++index2; } if (Main.wallDungeon[(int) Main.tile[i, j1].wall] && WorldGen.genRand.Next(8) == 0) { Main.chest[index1].item[index2].SetDefaults(2192); ++index2; } if (style == 16) { if (WorldGen.genRand.Next(5) == 0) { Main.chest[index1].item[index2].SetDefaults(2767); ++index2; } else { Main.chest[index1].item[index2].SetDefaults(2766); Main.chest[index1].item[index2].stack = WorldGen.genRand.Next(3, 8); ++index2; } } } } return true; } } return false; } public static void UnlockDoor(int i, int j) { int index1 = i; int index2 = j; if (Main.tile[index1, index2] == null) return; while (Main.tile[index1, index2].frameY != (short) 594) { --index2; if (Main.tile[index1, index2].frameY < (short) 594 || index2 <= 0) return; } Main.PlaySound(22, index1 * 16, index2 * 16 + 16); for (int index3 = index2; index3 <= index2 + 2; ++index3) { if (Main.tile[index1, index3] == null) Main.tile[index1, index3] = new Tile(); Main.tile[index1, index3].frameY += (short) 54; for (int index4 = 0; index4 < 4; ++index4) Dust.NewDust(new Vector2((float) (index1 * 16), (float) (index3 * 16)), 16, 16, 11); } } 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(); Tile tile = Main.tile[i, j]; if (tile.type != (ushort) 10 || tile.frameY >= (short) 594 && tile.frameY <= (short) 646 && tile.frameX < (short) 54) return false; short num1 = 0; int frameY = (int) tile.frameY; int num2 = 0; while (frameY >= 54) { frameY -= 54; ++num2; } if (tile.frameX >= (short) 54) { int num3 = (int) tile.frameX / 54; num2 += 36 * num3; num1 += (short) (72 * num3); } int y = j - frameY / 18; int index = i; byte color1 = Main.tile[index, y].color(); if (Main.tile[index, y + 1] == null) Main.tile[index, y + 1] = new Tile(); byte color2 = Main.tile[index, y + 1].color(); if (Main.tile[index, y + 2] == null) Main.tile[index, y + 2] = new Tile(); byte color3 = Main.tile[index, y + 2].color(); int x; int i1; if (direction == -1) { x = i - 1; num1 += (short) 36; i1 = i - 1; } else { x = i; i1 = i + 1; } for (int j1 = y; j1 < y + 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 != (ushort) 3 && Main.tile[i1, j1].type != (ushort) 24 && Main.tile[i1, j1].type != (ushort) 52 && Main.tile[i1, j1].type != (ushort) 61 && Main.tile[i1, j1].type != (ushort) 62 && Main.tile[i1, j1].type != (ushort) 69 && Main.tile[i1, j1].type != (ushort) 71 && Main.tile[i1, j1].type != (ushort) 73 && Main.tile[i1, j1].type != (ushort) 74 && Main.tile[i1, j1].type != (ushort) 110 && Main.tile[i1, j1].type != (ushort) 113 && Main.tile[i1, j1].type != (ushort) 115) return false; WorldGen.KillTile(i1, j1); } } if (Main.netMode != 1 && Wiring.running) { Wiring.SkipWire(x, y); Wiring.SkipWire(x, y + 1); Wiring.SkipWire(x, y + 2); Wiring.SkipWire(x + 1, y); Wiring.SkipWire(x + 1, y + 1); Wiring.SkipWire(x + 1, y + 2); } int num4 = num2 % 36 * 54; Main.PlaySound(8, i * 16, j * 16); Main.tile[x, y].active(true); Main.tile[x, y].type = (ushort) 11; Main.tile[x, y].frameY = (short) num4; Main.tile[x, y].frameX = num1; Main.tile[x, y].color(color1); if (Main.tile[x + 1, y] == null) Main.tile[x + 1, y] = new Tile(); Main.tile[x + 1, y].active(true); Main.tile[x + 1, y].type = (ushort) 11; Main.tile[x + 1, y].frameY = (short) num4; Main.tile[x + 1, y].frameX = (short) ((int) num1 + 18); Main.tile[x + 1, y].color(color1); if (Main.tile[x, y + 1] == null) Main.tile[x, y + 1] = new Tile(); Main.tile[x, y + 1].active(true); Main.tile[x, y + 1].type = (ushort) 11; Main.tile[x, y + 1].frameY = (short) (num4 + 18); Main.tile[x, y + 1].frameX = num1; Main.tile[x, y + 1].color(color2); if (Main.tile[x + 1, y + 1] == null) Main.tile[x + 1, y + 1] = new Tile(); Main.tile[x + 1, y + 1].active(true); Main.tile[x + 1, y + 1].type = (ushort) 11; Main.tile[x + 1, y + 1].frameY = (short) (num4 + 18); Main.tile[x + 1, y + 1].frameX = (short) ((int) num1 + 18); Main.tile[x + 1, y + 1].color(color2); if (Main.tile[x, y + 2] == null) Main.tile[x, y + 2] = new Tile(); Main.tile[x, y + 2].active(true); Main.tile[x, y + 2].type = (ushort) 11; Main.tile[x, y + 2].frameY = (short) (num4 + 36); Main.tile[x, y + 2].frameX = num1; Main.tile[x, y + 2].color(color3); if (Main.tile[x + 1, y + 2] == null) Main.tile[x + 1, y + 2] = new Tile(); Main.tile[x + 1, y + 2].active(true); Main.tile[x + 1, y + 2].type = (ushort) 11; Main.tile[x + 1, y + 2].frameY = (short) (num4 + 36); Main.tile[x + 1, y + 2].frameX = (short) ((int) num1 + 18); Main.tile[x + 1, y + 2].color(color3); for (int i2 = x - 1; i2 <= x + 2; ++i2) { for (int j2 = y - 1; j2 <= y + 2; ++j2) WorldGen.TileFrame(i2, j2); } return true; } public static void Check1xX(int x, int j, short type) { if (WorldGen.destroyObject) return; int frameX = (int) Main.tile[x, j].frameX; int num1 = 3; if (type == (short) 92) num1 = 6; int frameY = (int) Main.tile[x, j].frameY; int num2 = 0; while (frameY >= 18 * num1) { frameY -= 18 * num1; ++num2; } int num3 = (int) Main.tile[x, j].frameX / 18; int num4 = j - frameY / 18; bool flag = false; for (int index = 0; index < num1; ++index) { if (Main.tile[x, num4 + index] == null) Main.tile[x, num4 + index] = new Tile(); if (!Main.tile[x, num4 + index].active()) flag = true; else if ((int) Main.tile[x, num4 + index].type != (int) type) flag = true; else if ((int) Main.tile[x, num4 + index].frameY != index * 18 + num2 * num1 * 18) flag = true; else if ((int) Main.tile[x, num4 + index].frameX != frameX) flag = true; } if (Main.tile[x, num4 + num1] == null) Main.tile[x, num4 + num1] = new Tile(); if (!WorldGen.SolidTileAllowBottomSlope(x, num4 + num1)) flag = true; if (!flag) return; WorldGen.destroyObject = true; for (int index = 0; index < num1; ++index) { if ((int) Main.tile[x, num4 + index].type == (int) type) WorldGen.KillTile(x, num4 + index); } if (type == (short) 92) Item.NewItem(x * 16, j * 16, 32, 32, 341); if (type == (short) 453) { int Type = num3 >= 2 ? (num3 >= 4 ? 3743 : 3745) : 3744; Item.NewItem(x * 16, j * 16, 16, 32, Type); } if (type == (short) 93) { int Type = 0; if (num2 == 0) Type = 342; else if (num2 >= 1 && num2 <= 10) Type = 2082 + num2 - 1; else if (num2 >= 11 && num2 <= 16) { Type = 2129 + num2 - 11; } else { switch (num2) { case 17: Type = 2225; break; case 18: Type = 2533; break; case 19: Type = 2547; break; case 20: Type = 2563; break; case 21: Type = 2578; break; case 22: Type = 2643; break; case 23: Type = 2644; break; case 24: Type = 2645; break; case 25: Type = 2646; break; case 26: Type = 2647; break; case 27: Type = 2819; break; case 28: Type = 3135; break; case 29: Type = 3137; break; case 30: Type = 3136; break; case 31: Type = 3892; break; } } Item.NewItem(x * 16, j * 16, 32, 32, Type); } WorldGen.destroyObject = false; } public static void Check2xX(int i, int j, ushort type) { if (WorldGen.destroyObject) return; int index1 = i; int frameX1 = (int) Main.tile[i, j].frameX; while (frameX1 >= 36) frameX1 -= 36; if (frameX1 == 18) --index1; if (Main.tile[index1, j] == null) Main.tile[index1, j] = new Tile(); int num1 = (int) Main.tile[index1, j].frameY / 18; int num2 = 3; if (type == (ushort) 104) num2 = 5; if (type == (ushort) 207) num2 = 4; int num3 = 0; while (num1 >= num2) { num1 -= num2; num3 += num2 * 18; } int y = j - num1; if (type == (ushort) 410 && num3 != 0) num3 += 2; if (Main.tile[index1, y] == null) Main.tile[index1, y] = new Tile(); int frameX2 = (int) Main.tile[index1, j].frameX; int frameY = (int) Main.tile[index1, j].frameY; bool flag = false; for (int index2 = 0; index2 < num2; ++index2) { if (Main.tile[index1, y + index2] == null) Main.tile[index1, y + index2] = new Tile(); if (!Main.tile[index1, y + index2].active()) flag = true; else if ((int) Main.tile[index1, y + index2].type != (int) type) flag = true; else if ((int) Main.tile[index1, y + index2].frameY != index2 * 18 + num3) flag = true; else if ((int) Main.tile[index1, y + index2].frameX != frameX2) flag = true; if (Main.tile[index1 + 1, y + index2] == null) Main.tile[index1 + 1, y + index2] = new Tile(); if (!Main.tile[index1 + 1, y + index2].active()) flag = true; else if ((int) Main.tile[index1 + 1, y + index2].type != (int) type) flag = true; else if ((int) Main.tile[index1 + 1, y + index2].frameY != index2 * 18 + num3) flag = true; else if ((int) Main.tile[index1 + 1, y + index2].frameX != frameX2 + 18) flag = true; } if (type == (ushort) 465) { for (int index3 = 0; index3 < 2; ++index3) { if (Main.tile[index1 + index3, y - 1] == null) Main.tile[index1 + index3, y - 1] = new Tile(); if (!Main.tile[index1 + index3, y - 1].nactive() || !Main.tileSolid[(int) Main.tile[index1 + index3, y - 1].type] || Main.tileSolidTop[(int) Main.tile[index1 + index3, y - 1].type]) { flag = true; break; } } } else { if (!WorldGen.SolidTileAllowBottomSlope(index1, y + num2)) flag = true; if (!WorldGen.SolidTileAllowBottomSlope(index1 + 1, y + num2)) flag = true; } if (!flag) return; WorldGen.destroyObject = true; for (int index4 = 0; index4 < num2; ++index4) { if ((int) Main.tile[index1, y + index4].type == (int) type) WorldGen.KillTile(index1, y + index4); if ((int) Main.tile[index1 + 1, y + index4].type == (int) type) WorldGen.KillTile(index1 + 1, y + index4); } if (type == (ushort) 104) { int num4 = frameX2 / 36; int Type = num4 < 1 || num4 > 5 ? (num4 != 6 ? (num4 != 7 ? (num4 < 8 || num4 > 23 ? (num4 != 24 ? (num4 != 25 ? (num4 != 26 ? (num4 != 27 ? (num4 != 28 ? (num4 != 29 ? (num4 != 30 ? (num4 != 31 ? (num4 != 32 ? 359 : 3902) : 3901) : 3900) : 3899) : 3898) : 3127) : 3128) : 3126) : 2809) : 2591 + num4 - 8) : 2575) : 2560) : 2237 + num4 - 1; Item.NewItem(index1 * 16, j * 16, 32, 32, Type); } if (type == (ushort) 105) { int num5 = frameX2 / 36 + frameY / 54 * 55; int Type = num5 != 0 ? (num5 != 1 ? (num5 != 43 ? (num5 != 44 ? (num5 != 45 ? (num5 != 46 ? (num5 != 47 ? (num5 != 48 ? (num5 != 49 ? (num5 != 50 ? (num5 < 51 || num5 > 62 ? (num5 < 63 || num5 > 75 ? 438 + num5 - 2 : 3708 + num5 - 63) : 3651 + num5 - 51) : 2672) : 1462) : 1410) : 1409) : 1408) : 1154) : 1153) : 1152) : 52) : 360; Item.NewItem(index1 * 16, j * 16, 32, 32, Type); } if (type == (ushort) 356) Item.NewItem(index1 * 16, j * 16, 32, 32, 3064); if (type == (ushort) 456) Item.NewItem(index1 * 16, j * 16, 32, 32, 3748); if (type == (ushort) 337) { int num6 = frameX2 / 36; Item.NewItem(index1 * 16, j * 16, 32, 32, 2702 + num6); } if (type == (ushort) 207) { int Type = frameX2 / 36; switch (Type) { case 0: Type = 909; break; case 1: Type = 910; break; case 2: case 3: case 4: case 5: case 6: case 7: Type = 938 + Type; break; } Item.NewItem(index1 * 16, j * 16, 32, 32, Type); } if (type == (ushort) 410) { int num7 = frameX2 / 36; Item.NewItem(index1 * 16, j * 16, 32, 32, num7 + 3536); } if (type == (ushort) 320) Item.NewItem(index1 * 16, j * 16, 32, 32, 2496); if (type == (ushort) 349) Item.NewItem(index1 * 16, j * 16, 32, 32, 470); if (type == (ushort) 465) Item.NewItem(index1 * 16, j * 16, 32, 32, 3815); if (type == (ushort) 378) { Item.NewItem(index1 * 16, j * 16, 32, 48, 3202); TETrainingDummy.Kill(index1, y); } WorldGen.destroyObject = false; } public static void PlaceTight(int x, int y, ushort type = 165, bool spiders = false) { 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 (WorldGen.SolidTile(x, y - 1) && !Main.tile[x, y].active() && !Main.tile[x, y + 1].active()) { if (spiders) { int num = 108 + WorldGen.genRand.Next(3) * 18; Main.tile[x, y].type = type; Main.tile[x, y].active(true); Main.tile[x, y].frameX = (short) num; Main.tile[x, y].frameY = (short) 0; Main.tile[x, y + 1].type = type; Main.tile[x, y + 1].active(true); Main.tile[x, y + 1].frameX = (short) num; Main.tile[x, y + 1].frameY = (short) 18; } else { if (Main.tile[x, y - 1].type == (ushort) 147 || Main.tile[x, y - 1].type == (ushort) 161 || Main.tile[x, y - 1].type == (ushort) 163 || Main.tile[x, y - 1].type == (ushort) 164 || Main.tile[x, y - 1].type == (ushort) 200) { if (WorldGen.genRand.Next(2) == 0) { int num = WorldGen.genRand.Next(3) * 18; Main.tile[x, y].type = type; Main.tile[x, y].active(true); Main.tile[x, y].frameX = (short) num; Main.tile[x, y].frameY = (short) 72; } else { int num = WorldGen.genRand.Next(3) * 18; Main.tile[x, y].type = type; Main.tile[x, y].active(true); Main.tile[x, y].frameX = (short) num; Main.tile[x, y].frameY = (short) 0; Main.tile[x, y + 1].type = type; Main.tile[x, y + 1].active(true); Main.tile[x, y + 1].frameX = (short) num; Main.tile[x, y + 1].frameY = (short) 18; } } if (Main.tile[x, y - 1].type == (ushort) 1 || Main.tileMoss[(int) Main.tile[x, y - 1].type] || Main.tile[x, y - 1].type == (ushort) 117 || Main.tile[x, y - 1].type == (ushort) 25 || Main.tile[x, y - 1].type == (ushort) 203) { if (WorldGen.genRand.Next(2) == 0) { int num = 54 + WorldGen.genRand.Next(3) * 18; Main.tile[x, y].type = type; Main.tile[x, y].active(true); Main.tile[x, y].frameX = (short) num; Main.tile[x, y].frameY = (short) 72; } else { int num = 54 + WorldGen.genRand.Next(3) * 18; Main.tile[x, y].type = type; Main.tile[x, y].active(true); Main.tile[x, y].frameX = (short) num; Main.tile[x, y].frameY = (short) 0; Main.tile[x, y + 1].type = type; Main.tile[x, y + 1].active(true); Main.tile[x, y + 1].frameX = (short) num; Main.tile[x, y + 1].frameY = (short) 18; } } if (Main.tile[x, y - 1].type == (ushort) 225) { int num = 162 + WorldGen.genRand.Next(3) * 18; Main.tile[x, y].type = type; Main.tile[x, y].active(true); Main.tile[x, y].frameX = (short) num; Main.tile[x, y].frameY = (short) 72; } if (Main.tile[x, y - 1].type == (ushort) 396 || Main.tile[x, y - 1].type == (ushort) 397) { if (WorldGen.genRand.Next(2) == 0) { int num = 378 + WorldGen.genRand.Next(3) * 18; Main.tile[x, y].type = type; Main.tile[x, y].active(true); Main.tile[x, y].frameX = (short) num; Main.tile[x, y].frameY = (short) 72; } else { int num = 378 + WorldGen.genRand.Next(3) * 18; Main.tile[x, y].type = type; Main.tile[x, y].active(true); Main.tile[x, y].frameX = (short) num; Main.tile[x, y].frameY = (short) 0; Main.tile[x, y + 1].type = type; Main.tile[x, y + 1].active(true); Main.tile[x, y + 1].frameX = (short) num; Main.tile[x, y + 1].frameY = (short) 18; } } if (Main.tile[x, y - 1].type == (ushort) 368) { if (WorldGen.genRand.Next(2) == 0) { int num = 432 + WorldGen.genRand.Next(3) * 18; Main.tile[x, y].type = type; Main.tile[x, y].active(true); Main.tile[x, y].frameX = (short) num; Main.tile[x, y].frameY = (short) 72; } else { int num = 432 + WorldGen.genRand.Next(3) * 18; Main.tile[x, y].type = type; Main.tile[x, y].active(true); Main.tile[x, y].frameX = (short) num; Main.tile[x, y].frameY = (short) 0; Main.tile[x, y + 1].type = type; Main.tile[x, y + 1].active(true); Main.tile[x, y + 1].frameX = (short) num; Main.tile[x, y + 1].frameY = (short) 18; } } if (Main.tile[x, y - 1].type == (ushort) 367) { if (WorldGen.genRand.Next(2) == 0) { int num = 486 + WorldGen.genRand.Next(3) * 18; Main.tile[x, y].type = type; Main.tile[x, y].active(true); Main.tile[x, y].frameX = (short) num; Main.tile[x, y].frameY = (short) 72; } else { int num = 486 + WorldGen.genRand.Next(3) * 18; Main.tile[x, y].type = type; Main.tile[x, y].active(true); Main.tile[x, y].frameX = (short) num; Main.tile[x, y].frameY = (short) 0; Main.tile[x, y + 1].type = type; Main.tile[x, y + 1].active(true); Main.tile[x, y + 1].frameX = (short) num; Main.tile[x, y + 1].frameY = (short) 18; } } } } else { if (spiders) return; if (WorldGen.SolidTile(x, y + 1) && !Main.tile[x, y].active() && !Main.tile[x, y - 1].active()) { if (Main.tile[x, y + 1].type == (ushort) 1 || Main.tileMoss[(int) Main.tile[x, y + 1].type] || Main.tile[x, y - 1].type == (ushort) 117 || Main.tile[x, y - 1].type == (ushort) 25 || Main.tile[x, y - 1].type == (ushort) 203) { if (WorldGen.genRand.Next(2) == 0) { int num = 54 + WorldGen.genRand.Next(3) * 18; Main.tile[x, y].type = type; Main.tile[x, y].active(true); Main.tile[x, y].frameX = (short) num; Main.tile[x, y].frameY = (short) 90; } else { int num = 54 + WorldGen.genRand.Next(3) * 18; Main.tile[x, y - 1].type = type; Main.tile[x, y - 1].active(true); Main.tile[x, y - 1].frameX = (short) num; Main.tile[x, y - 1].frameY = (short) 36; Main.tile[x, y].type = type; Main.tile[x, y].active(true); Main.tile[x, y].frameX = (short) num; Main.tile[x, y].frameY = (short) 54; } } if (Main.tile[x, y + 1].type == (ushort) 225) { int num = 162 + WorldGen.genRand.Next(3) * 18; Main.tile[x, y].type = type; Main.tile[x, y].active(true); Main.tile[x, y].frameX = (short) num; Main.tile[x, y].frameY = (short) 90; } if (Main.tile[x, y + 1].type == (ushort) 396 || Main.tile[x, y + 1].type == (ushort) 397) { if (WorldGen.genRand.Next(2) == 0) { int num = 378 + WorldGen.genRand.Next(3) * 18; Main.tile[x, y].type = type; Main.tile[x, y].active(true); Main.tile[x, y].frameX = (short) num; Main.tile[x, y].frameY = (short) 90; } else { int num = 378 + WorldGen.genRand.Next(3) * 18; Main.tile[x, y - 1].type = type; Main.tile[x, y - 1].active(true); Main.tile[x, y - 1].frameX = (short) num; Main.tile[x, y - 1].frameY = (short) 36; Main.tile[x, y].type = type; Main.tile[x, y].active(true); Main.tile[x, y].frameX = (short) num; Main.tile[x, y].frameY = (short) 54; } } if (Main.tile[x, y + 1].type == (ushort) 368) { if (WorldGen.genRand.Next(2) == 0) { int num = 432 + WorldGen.genRand.Next(3) * 18; Main.tile[x, y].type = type; Main.tile[x, y].active(true); Main.tile[x, y].frameX = (short) num; Main.tile[x, y].frameY = (short) 90; } else { int num = 432 + WorldGen.genRand.Next(3) * 18; Main.tile[x, y - 1].type = type; Main.tile[x, y - 1].active(true); Main.tile[x, y - 1].frameX = (short) num; Main.tile[x, y - 1].frameY = (short) 36; Main.tile[x, y].type = type; Main.tile[x, y].active(true); Main.tile[x, y].frameX = (short) num; Main.tile[x, y].frameY = (short) 54; } } if (Main.tile[x, y + 1].type == (ushort) 367) { if (WorldGen.genRand.Next(2) == 0) { int num = 486 + WorldGen.genRand.Next(3) * 18; Main.tile[x, y].type = type; Main.tile[x, y].active(true); Main.tile[x, y].frameX = (short) num; Main.tile[x, y].frameY = (short) 90; } else { int num = 486 + WorldGen.genRand.Next(3) * 18; Main.tile[x, y - 1].type = type; Main.tile[x, y - 1].active(true); Main.tile[x, y - 1].frameX = (short) num; Main.tile[x, y - 1].frameY = (short) 36; Main.tile[x, y].type = type; Main.tile[x, y].active(true); Main.tile[x, y].frameX = (short) num; Main.tile[x, y].frameY = (short) 54; } } } } if (Main.tile[x, y].type != (ushort) 165) return; WorldGen.CheckTight(x, y); } public static void TightBiome(int x, int j) { if (Main.netMode == 1 || Main.tile[x, j] == null) return; int tileY = j; int num1 = 1; int num2; if (Main.tile[x, tileY].frameX >= (short) 0 && Main.tile[x, tileY].frameX <= (short) 36) num2 = 7; else if (Main.tile[x, tileY].frameX >= (short) 54 && Main.tile[x, tileY].frameX <= (short) 90) num2 = 0; else if (Main.tile[x, tileY].frameX >= (short) 216 && Main.tile[x, tileY].frameX <= (short) 252) num2 = 1; else if (Main.tile[x, tileY].frameX >= (short) 270 && Main.tile[x, tileY].frameX <= (short) 306) num2 = 2; else if (Main.tile[x, tileY].frameX >= (short) 324 && Main.tile[x, tileY].frameX <= (short) 360) num2 = 3; else if (Main.tile[x, tileY].frameX >= (short) 378 && Main.tile[x, tileY].frameX <= (short) 414) num2 = 4; else if (Main.tile[x, tileY].frameX >= (short) 432 && Main.tile[x, tileY].frameX <= (short) 468) { num2 = 5; } else { if (Main.tile[x, tileY].frameX < (short) 486 || Main.tile[x, tileY].frameX > (short) 522) return; num2 = 6; } int type; if (Main.tile[x, tileY].frameY == (short) 72) type = (int) Main.tile[x, tileY - 1].type; else if (Main.tile[x, tileY].frameY == (short) 90) type = (int) Main.tile[x, tileY + 1].type; else if (Main.tile[x, tileY].frameY >= (short) 36) { if (Main.tile[x, tileY].frameY == (short) 54) --tileY; num1 = 2; type = (int) Main.tile[x, tileY + 2].type; } else { if (Main.tile[x, tileY].frameY == (short) 18) --tileY; num1 = 2; type = (int) Main.tile[x, tileY - 1].type; } int num3; switch (type) { case 1: num3 = 0; break; case 25: case 163: case 398: case 400: num3 = 2; break; case 117: case 164: case 402: case 403: num3 = 1; break; case 161: num3 = 7; break; case 200: case 203: case 399: case 401: num3 = 3; break; case 367: num3 = 6; break; case 368: num3 = 5; break; case 396: case 397: num3 = 4; break; default: return; } if (num2 == num3) return; int num4 = WorldGen.genRand.Next(3) * 18; switch (num3) { case 0: num4 += 54; break; case 1: num4 += 216; break; case 2: num4 += 270; break; case 3: num4 += 324; break; case 4: num4 += 378; break; case 5: num4 += 432; break; case 6: num4 += 486; break; case 7: num4 = num4; break; } for (int index = tileY; index < tileY + num1; ++index) Main.tile[x, index].frameX = (short) num4; if (Main.netMode != 2) return; NetMessage.SendTileSquare(-1, x, tileY, 2); } public static void CheckTight(int x, int j) { if (Main.tile[x, j] == null) return; int j1 = j; if (Main.tile[x, j1].frameY == (short) 72) { if (Main.tile[x, j1 - 1] == null) Main.tile[x, j1 - 1] = new Tile(); 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(); bool flag = false; if (!WorldGen.SolidTile(x, j1 - 1)) flag = true; if (flag) { if ((int) Main.tile[x, j1].type != (int) Main.tile[x, j].type) return; WorldGen.KillTile(x, j1); } else WorldGen.TightBiome(x, j1); } else if (Main.tile[x, j1].frameY == (short) 90) { if (Main.tile[x, j1 - 1] == null) Main.tile[x, j1 - 1] = new Tile(); 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(); bool flag = false; if (!WorldGen.SolidTile(x, j1 + 1)) flag = true; if (flag) { if ((int) Main.tile[x, j1].type != (int) Main.tile[x, j].type) return; WorldGen.KillTile(x, j1); } else WorldGen.TightBiome(x, j1); } else if (Main.tile[x, j1].frameY >= (short) 36) { if (Main.tile[x, j1].frameY == (short) 54) --j1; 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 + 2] == null) Main.tile[x, j1 + 2] = new Tile(); bool flag = false; if (!WorldGen.SolidTile(x, j1 + 2)) flag = true; if ((int) Main.tile[x, j1 + 1].type != (int) Main.tile[x, j1].type) flag = true; if ((int) Main.tile[x, j1 + 1].frameX != (int) Main.tile[x, j1].frameX) flag = true; if (flag) { if ((int) Main.tile[x, j1].type == (int) Main.tile[x, j].type) WorldGen.KillTile(x, j1); if ((int) Main.tile[x, j1 + 1].type != (int) Main.tile[x, j].type) return; WorldGen.KillTile(x, j1 + 1); } else WorldGen.TightBiome(x, j1); } else { if (Main.tile[x, j1].frameY == (short) 18) --j1; if (Main.tile[x, j1 - 1] == null) Main.tile[x, j1 - 1] = new Tile(); 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(); bool flag = false; if (!WorldGen.SolidTile(x, j1 - 1)) flag = true; if ((int) Main.tile[x, j1 + 1].type != (int) Main.tile[x, j1].type) flag = true; if ((int) Main.tile[x, j1 + 1].frameX != (int) Main.tile[x, j1].frameX) flag = true; if (flag) { if ((int) Main.tile[x, j1].type == (int) Main.tile[x, j].type) WorldGen.KillTile(x, j1); if ((int) Main.tile[x, j1 + 1].type != (int) Main.tile[x, j].type) return; WorldGen.KillTile(x, j1 + 1); } else WorldGen.TightBiome(x, j1); } } public static void Place1xX(int x, int y, ushort type, int style = 0) { int num1 = style * 18; int num2 = 3; if (type == (ushort) 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 == (ushort) 93 && Main.tile[x, index].liquid > (byte) 0) flag = false; } if (!flag || !WorldGen.SolidTile2(x, y + 1)) 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 + num2 * num1); Main.tile[x, y - num2 + 1 + index].frameX = (short) 0; Main.tile[x, y - num2 + 1 + index].type = type; } } public static int checkXmasTreeDrop(int x, int y, int obj) { int index1 = x; int index2 = y; if (Main.tile[x, y].frameX < (short) 10) { index1 -= (int) Main.tile[x, y].frameX; index2 -= (int) Main.tile[x, y].frameY; } int num1 = 0; if (((int) Main.tile[index1, index2].frameY & 1) == 1) ++num1; if (((int) Main.tile[index1, index2].frameY & 2) == 2) num1 += 2; if (((int) Main.tile[index1, index2].frameY & 4) == 4) num1 += 4; int num2 = 0; if (((int) Main.tile[index1, index2].frameY & 8) == 8) ++num2; if (((int) Main.tile[index1, index2].frameY & 16) == 16) num2 += 2; if (((int) Main.tile[index1, index2].frameY & 32) == 32) num2 += 4; int num3 = 0; if (((int) Main.tile[index1, index2].frameY & 64) == 64) ++num3; if (((int) Main.tile[index1, index2].frameY & 128) == 128) num3 += 2; if (((int) Main.tile[index1, index2].frameY & 256) == 256) num3 += 4; if (((int) Main.tile[index1, index2].frameY & 512) == 512) num3 += 8; int num4 = 0; if (((int) Main.tile[index1, index2].frameY & 1024) == 1024) ++num4; if (((int) Main.tile[index1, index2].frameY & 2048) == 2048) num4 += 2; if (((int) Main.tile[index1, index2].frameY & 4096) == 4096) num4 += 4; if (((int) Main.tile[index1, index2].frameY & 8192) == 8192) num4 += 8; if (obj == 0 && num1 > 0) return num1; if (obj == 1 && num2 > 0) return num2; if (obj == 2 && num3 > 0) return num3; return obj == 3 && num4 > 0 ? num4 : -1; } public static void dropXmasTree(int x, int y, int obj) { int index1 = x; int index2 = y; if (Main.tile[x, y].frameX < (short) 10) { index1 -= (int) Main.tile[x, y].frameX; index2 -= (int) Main.tile[x, y].frameY; } int num1 = 0; if (((int) Main.tile[index1, index2].frameY & 1) == 1) ++num1; if (((int) Main.tile[index1, index2].frameY & 2) == 2) num1 += 2; if (((int) Main.tile[index1, index2].frameY & 4) == 4) num1 += 4; int num2 = 0; if (((int) Main.tile[index1, index2].frameY & 8) == 8) ++num2; if (((int) Main.tile[index1, index2].frameY & 16) == 16) num2 += 2; if (((int) Main.tile[index1, index2].frameY & 32) == 32) num2 += 4; int num3 = 0; if (((int) Main.tile[index1, index2].frameY & 64) == 64) ++num3; if (((int) Main.tile[index1, index2].frameY & 128) == 128) num3 += 2; if (((int) Main.tile[index1, index2].frameY & 256) == 256) num3 += 4; if (((int) Main.tile[index1, index2].frameY & 512) == 512) num3 += 8; int num4 = 0; if (((int) Main.tile[index1, index2].frameY & 1024) == 1024) ++num4; if (((int) Main.tile[index1, index2].frameY & 2048) == 2048) num4 += 2; if (((int) Main.tile[index1, index2].frameY & 4096) == 4096) num4 += 4; if (((int) Main.tile[index1, index2].frameY & 8192) == 8192) num4 += 8; if (obj == 0 && num1 > 0) { int number = Item.NewItem(x * 16, y * 16, 16, 16, 1874 + num1 - 1); if (Main.netMode != 1) return; NetMessage.SendData(21, number: number, number2: 1f); } else if (obj == 1 && num2 > 0) { int number = Item.NewItem(x * 16, y * 16, 16, 16, 1878 + num2 - 1); if (Main.netMode != 1) return; NetMessage.SendData(21, number: number, number2: 1f); } else if (obj == 2 && num3 > 0) { int number = Item.NewItem(x * 16, y * 16, 16, 16, 1884 + num3 - 1); if (Main.netMode != 1) return; NetMessage.SendData(21, number: number, number2: 1f); } else { if (obj != 3 || num4 <= 0) return; int number = Item.NewItem(x * 16, y * 16, 16, 16, 1895 + num4 - 1); if (Main.netMode != 1) return; NetMessage.SendData(21, number: number, number2: 1f); } } public static void setXmasTree(int x, int y, int obj, int style) { int index1 = x; int index2 = y; if (Main.tile[x, y].frameX < (short) 10) { index1 -= (int) Main.tile[x, y].frameX; index2 -= (int) Main.tile[x, y].frameY; } if (obj == 0) { if ((style & 1) == 1) Main.tile[index1, index2].frameY |= (short) 1; else Main.tile[index1, index2].frameY &= (short) -2; if ((style & 2) == 2) Main.tile[index1, index2].frameY |= (short) 2; else Main.tile[index1, index2].frameY &= (short) -3; if ((style & 4) == 4) Main.tile[index1, index2].frameY |= (short) 4; else Main.tile[index1, index2].frameY &= (short) -5; } if (obj == 1) { if ((style & 1) == 1) Main.tile[index1, index2].frameY |= (short) 8; else Main.tile[index1, index2].frameY &= (short) -9; if ((style & 2) == 2) Main.tile[index1, index2].frameY |= (short) 16; else Main.tile[index1, index2].frameY &= (short) -17; if ((style & 4) == 4) Main.tile[index1, index2].frameY |= (short) 32; else Main.tile[index1, index2].frameY &= (short) -33; } if (obj == 2) { if ((style & 1) == 1) Main.tile[index1, index2].frameY |= (short) 64; else Main.tile[index1, index2].frameY &= (short) -65; if ((style & 2) == 2) Main.tile[index1, index2].frameY |= (short) 128; else Main.tile[index1, index2].frameY &= (short) -129; if ((style & 4) == 4) Main.tile[index1, index2].frameY |= (short) 256; else Main.tile[index1, index2].frameY &= (short) -257; if ((style & 8) == 8) Main.tile[index1, index2].frameY |= (short) 512; else Main.tile[index1, index2].frameY &= (short) -513; } if (obj != 3) return; if ((style & 1) == 1) Main.tile[index1, index2].frameY |= (short) 1024; else Main.tile[index1, index2].frameY &= (short) -1025; if ((style & 2) == 2) Main.tile[index1, index2].frameY |= (short) 2048; else Main.tile[index1, index2].frameY &= (short) -2049; if ((style & 4) == 4) Main.tile[index1, index2].frameY |= (short) 4096; else Main.tile[index1, index2].frameY &= (short) -4097; if ((style & 8) == 8) Main.tile[index1, index2].frameY |= (short) 8192; else Main.tile[index1, index2].frameY &= (short) -8193; } public static int PlaceXmasTree_Direct(int x, int y, int type, int style, int dir) { for (short index1 = 0; index1 < (short) 4; ++index1) { for (short index2 = 0; index2 < (short) 8; ++index2) { Tile tile = Main.tile[x + (int) index1, y + (int) index2]; tile.active(true); tile.type = (ushort) type; if (index1 == (short) 0 && index2 == (short) 0) { tile.frameX = (short) 10; tile.frameY = (short) 0; } else { tile.frameX = index1; tile.frameY = index2; } } } return 0; } public static void PlaceXmasTree(int x, int y, ushort type = 171) { bool flag = true; int num1 = x - 1; int num2 = y - 7; for (int i = num1; i < num1 + 4; ++i) { for (int index = num2; index < num2 + 8; ++index) { if (Main.tile[i, index].active()) flag = false; } if (i > num1 && i < num1 + 3 && !WorldGen.SolidTile(i, num2 + 8)) flag = false; } if (!flag) return; int num3 = 0; for (int index1 = num1; index1 < num1 + 4; ++index1) { int num4 = 0; for (int index2 = num2; index2 < num2 + 8; ++index2) { Main.tile[index1, index2].active(true); if (num3 == 0 && num4 == 0) { Main.tile[index1, index2].frameX = (short) 10; Main.tile[index1, index2].frameY = (short) 0; } else { Main.tile[index1, index2].frameX = (short) num3; Main.tile[index1, index2].frameY = (short) num4; } Main.tile[index1, index2].type = type; Main.tile[index1, index2].active(true); ++num4; } ++num3; } } public static void CheckXmasTree(int x, int y) { if (WorldGen.destroyObject) return; int num1 = x; int num2 = y; if (Main.tile[x, y].frameX < (short) 10) { num1 -= (int) Main.tile[x, y].frameX; num2 -= (int) Main.tile[x, y].frameY; } bool flag = false; int num3 = 0; for (int i = num1; i < num1 + 4; ++i) { int num4 = 0; for (int index = num2; index < num2 + 8; ++index) { if (Main.tile[i, index].active() && Main.tile[i, index].type == (ushort) 171) { if (num3 != 0 && num4 != 0 && (int) Main.tile[i, index].frameX != num3 && (int) Main.tile[i, index].frameY != num4) flag = true; } else flag = true; ++num4; } ++num3; if (i > num1 && i < num1 + 3 && !WorldGen.SolidTile2(i, num2 + 8)) flag = true; } if (!flag) return; WorldGen.destroyObject = true; for (int i = num1; i < num1 + 4; ++i) { for (int j = num2; j < num2 + 8; ++j) { if (Main.tile[i, j].type == (ushort) 171) WorldGen.KillTile(i, j); } } Item.NewItem(x * 16, y * 16, 32, 32, 1873); WorldGen.destroyObject = false; } public static void Place2xX(int x, int y, ushort type, int style = 0) { int num1 = style * 36; int num2 = 0; int num3 = 3; if (type == (ushort) 105 && style == 34) { type = (ushort) 349; style = 0; num1 = 0; } if (type == (ushort) 105) { int num4 = style / 55; num1 -= 1980 * num4; num2 += 54 * num4; } if (type == (ushort) 104) num3 = 5; if (type == (ushort) 207) num3 = 4; bool flag = true; for (int index = y - num3 + 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 || !WorldGen.SolidTile2(x, y + 1) || !WorldGen.SolidTile2(x + 1, y + 1)) return; for (int index = 0; index < num3; ++index) { Main.tile[x, y - num3 + 1 + index].active(true); Main.tile[x, y - num3 + 1 + index].frameY = (short) (num2 + index * 18); Main.tile[x, y - num3 + 1 + index].frameX = (short) num1; Main.tile[x, y - num3 + 1 + index].type = type; Main.tile[x + 1, y - num3 + 1 + index].active(true); Main.tile[x + 1, y - num3 + 1 + index].frameY = (short) (num2 + index * 18); Main.tile[x + 1, y - num3 + 1 + index].frameX = (short) (num1 + 18); Main.tile[x + 1, y - num3 + 1 + index].type = type; } } public static void Check1x2(int x, int j, ushort 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 num1 = 0; while (frameY >= 40) { frameY -= 40; ++num1; } if (frameY == 18) --j1; if (Main.tile[x, j1] == null) Main.tile[x, j1] = new Tile(); if ((int) Main.tile[x, j1].frameY == 40 * num1 && (int) Main.tile[x, j1 + 1].frameY == 40 * num1 + 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 (!WorldGen.SolidTileAllowBottomSlope(x, j1 + 2) && !TileID.Sets.Platforms[(int) Main.tile[x, j1 + 2].type]) flag = true; if (Main.tile[x, j1].type == (ushort) 20) { int num2 = (int) Main.tile[x, j1].frameX / 54; int type1 = (int) Main.tile[x, j1 + 2].type; int num3 = -1; switch (type1) { case 2: num3 = 0; break; case 23: num3 = 3; break; case 53: num3 = 6; break; case 60: num3 = 2; break; case 109: num3 = 5; break; case 112: num3 = 9; break; case 116: num3 = 7; break; case 147: num3 = 1; break; case 199: num3 = 4; break; case 234: num3 = 8; break; default: flag = true; break; } if (!flag && num2 != num3) { int num4 = 54 * num3 + WorldGen.genRand.Next(3) * 18; Main.tile[x, j1].frameX = (short) num4; Main.tile[x, j1 + 1].frameX = (short) num4; } } 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 == (ushort) 216) Item.NewItem(x * 16, j1 * 16, 32, 32, 970 + num1); if (type == (ushort) 338) Item.NewItem(x * 16, j1 * 16, 32, 32, 2738); if (type == (ushort) 390) Item.NewItem(x * 16, j1 * 16, 16, 32, 3253); if (type == (ushort) 15) { int Type = num1 < 18 || num1 > 23 ? (num1 != 5 ? (num1 != 6 ? (num1 != 7 ? (num1 != 8 ? (num1 != 9 ? (num1 != 10 ? (num1 != 11 ? (num1 != 13 ? (num1 != 14 ? (num1 != 15 ? (num1 != 12 ? (num1 != 4 ? (num1 != 3 ? (num1 != 2 ? (num1 != 17 ? (num1 != 1 ? (num1 != 24 ? (num1 != 25 ? (num1 != 16 ? (num1 != 26 ? (num1 != 27 ? (num1 != 28 ? (num1 != 29 ? (num1 != 30 ? (num1 != 31 ? (num1 != 32 ? (num1 != 33 ? (num1 != 34 ? (num1 != 35 ? (num1 != 36 ? 34 : 3889) : 3175) : 3176) : 3174) : 2812) : 2572) : 2557) : 2524) : 2288) : 2228) : 1925) : 1459) : 1814) : 1792) : 358) : 1509) : 628) : 629) : 630) : 1143) : 1402) : 1399) : 1396) : 915) : 826) : 810) : 809) : 808) : 807) : 806) : 1703 + num1 - 18; Item.NewItem(x * 16, j1 * 16, 32, 32, Type); } else if (type == (ushort) 134) { if (num1 == 1) Item.NewItem(x * 16, j1 * 16, 32, 32, 1220); else Item.NewItem(x * 16, j1 * 16, 32, 32, 525); } 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] && !Main.tile[x, y + 1].topSlope() && !Main.tile[x, y + 1].halfBrick()) return; if (type == 78) { if (WorldGen.SolidTile2(x, y + 1)) return; WorldGen.KillTile(x, y); } else WorldGen.KillTile(x, y); } public static void CheckSign(int x, int y, ushort 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; int num7 = num5 % 2; int x1 = x - num7; int y1 = y - num6; int num8 = (int) Main.tile[x1, y1].frameX / 18 / 2; int num9 = (int) Main.tile[x, y].frameX / 18; int num10 = 0; while (num9 > 1) { num9 -= 2; ++num10; } int num11 = x1; int num12 = x1 + 2; int num13 = y1; int num14 = y1 + 2; int num15 = 0; for (int index3 = num11; index3 < num12; ++index3) { int num16 = 0; for (int index4 = num13; index4 < num14; ++index4) { if (!Main.tile[index3, index4].active() || (int) Main.tile[index3, index4].type != (int) type) { flag = true; break; } if ((int) Main.tile[index3, index4].frameX / 18 != num15 + num8 * 2 || (int) Main.tile[index3, index4].frameY / 18 != num16) { flag = true; break; } ++num16; } ++num15; } if (!flag) { if (type == (ushort) 85) { if (Main.tile[x1, y1 + 2].active() && (Main.tileSolid[(int) Main.tile[x1, y1 + 2].type] || Main.tileSolidTop[(int) Main.tile[x1, y1 + 2].type]) && Main.tile[x1 + 1, y1 + 2].active() && (Main.tileSolid[(int) Main.tile[x1 + 1, y1 + 2].type] || Main.tileSolidTop[(int) Main.tile[x1 + 1, y1 + 2].type])) num8 = num10; else flag = true; } else if (Main.tile[x1, y1 + 2].active() && (Main.tileSolid[(int) Main.tile[x1, y1 + 2].type] || Main.tileSolidTop[(int) Main.tile[x1, y1 + 2].type] && !Main.tileNoAttach[(int) Main.tile[x1, y1 + 2].type]) && Main.tile[x1 + 1, y1 + 2].active() && (Main.tileSolid[(int) Main.tile[x1 + 1, y1 + 2].type] || Main.tileSolidTop[(int) Main.tile[x1 + 1, y1 + 2].type] && !Main.tileNoAttach[(int) Main.tile[x1 + 1, y1 + 2].type])) num8 = 0; else if (Main.tile[x1, y1 - 1].nactive() && Main.tileSolid[(int) Main.tile[x1, y1 - 1].type] && !Main.tileSolidTop[(int) Main.tile[x1, y1 - 1].type] && !Main.tileNoAttach[(int) Main.tile[x1, y1 - 1].type] && Main.tile[x1 + 1, y1 - 1].nactive() && Main.tileSolid[(int) Main.tile[x1 + 1, y1 - 1].type] && !Main.tileSolidTop[(int) Main.tile[x1 + 1, y1 - 1].type] && !Main.tileNoAttach[(int) Main.tile[x1 + 1, y1 - 1].type]) num8 = 1; else if (Main.tile[x1 - 1, y1].nactive() && Main.tileSolid[(int) Main.tile[x1 - 1, y1].type] && !Main.tileSolidTop[(int) Main.tile[x1 - 1, y1].type] && !Main.tileNoAttach[(int) Main.tile[x1 - 1, y1].type] && Main.tile[x1 - 1, y1 + 1].nactive() && Main.tileSolid[(int) Main.tile[x1 - 1, y1 + 1].type] && !Main.tileSolidTop[(int) Main.tile[x1 - 1, y1 + 1].type] && !Main.tileNoAttach[(int) Main.tile[x1 - 1, y1 + 1].type]) num8 = 2; else if (Main.tile[x1 + 2, y1].nactive() && Main.tileSolid[(int) Main.tile[x1 + 2, y1].type] && !Main.tileSolidTop[(int) Main.tile[x1 + 2, y1].type] && !Main.tileNoAttach[(int) Main.tile[x1 + 2, y1].type] && Main.tile[x1 + 2, y1 + 1].nactive() && Main.tileSolid[(int) Main.tile[x1 + 2, y1 + 1].type] && !Main.tileSolidTop[(int) Main.tile[x1 + 2, y1 + 1].type] && !Main.tileNoAttach[(int) Main.tile[x1 + 2, y1 + 1].type]) num8 = 3; else if (Main.tile[x1, y1].wall > (byte) 0 && Main.tile[x1 + 1, y1].wall > (byte) 0 && Main.tile[x1, y1 + 1].wall > (byte) 0 && Main.tile[x1 + 1, y1 + 1].wall > (byte) 0) num8 = 4; else flag = true; } if (flag) { if (type == (ushort) 395) { int key = TEItemFrame.Find(x1, y1); if (key != -1 && ((TEItemFrame) TileEntity.ByID[key]).item.stack > 0) { ((TEItemFrame) TileEntity.ByID[key]).DropItem(); if (Main.netMode == 2) return; Main.blockMouse = true; return; } } WorldGen.destroyObject = true; for (int i = num11; i < num12; ++i) { for (int j = num13; j < num14; ++j) { if ((int) Main.tile[i, j].type == (int) type) WorldGen.KillTile(i, j); } } if (type != (ushort) 395) Sign.KillSign(x1, y1); if (type == (ushort) 85) { int Type = 321; if (num10 >= 6 && num10 <= 10) Type = 3229 + num10 - 6; else if (num10 >= 1 && num10 <= 5) Type = 1173 + num10 - 1; Item.NewItem(x * 16, y * 16, 32, 32, Type); } else if (type == (ushort) 395) { Item.NewItem(x1 * 16, y1 * 16, 32, 32, 3270); TEItemFrame.Kill(x1, y1); } else if (type == (ushort) 425) Item.NewItem(x1 * 16, y1 * 16, 32, 32, 3617); else Item.NewItem(x * 16, y * 16, 32, 32, 171); WorldGen.destroyObject = false; } else { int num17 = 36 * num8; 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 = type; Main.tile[x1 + index5, y1 + index6].frameX = (short) (num17 + 18 * index5); Main.tile[x1 + index5, y1 + index6].frameY = (short) (18 * index6); } } } } public static bool PlaceSign(int x, int y, ushort type, int Style = 0) { 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; if (type == (ushort) 55 || type == (ushort) 425) { if (WorldGen.SolidTile2(x, y + 1) && WorldGen.SolidTile2(x + 1, y + 1)) { --index4; num5 = 0; } else if (Main.tile[x, y - 1].nactive() && Main.tileSolid[(int) Main.tile[x, y - 1].type] && !Main.tileSolidTop[(int) Main.tile[x, y - 1].type] && Main.tile[x + 1, y - 1].nactive() && Main.tileSolid[(int) Main.tile[x + 1, y - 1].type] && !Main.tileSolidTop[(int) Main.tile[x + 1, y - 1].type]) num5 = 1; else if (Main.tile[x - 1, y].nactive() && 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].nactive() && 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; else if (Main.tile[x + 1, y].nactive() && 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].nactive() && 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]) { --index3; num5 = 3; } else { if (Main.tile[index3, index4].wall <= (byte) 0 || Main.tile[index3 + 1, index4].wall <= (byte) 0 || Main.tile[index3, index4 + 1].wall <= (byte) 0 || Main.tile[index3 + 1, index4 + 1].wall <= (byte) 0) return false; num5 = 4; } } 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 = 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 bool Place2x2Horizontal(int x, int y, ushort type, int Style = 0) { 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 num5 = y; if (!WorldGen.SolidTile2(x, y + 1) || !WorldGen.SolidTile2(x + 1, y + 1)) return false; int index4 = num5 - 1; int num6 = Style; 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 num7 = 36 * num6; 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 = type; Main.tile[index3 + index5, index4 + index6].frameX = (short) (num7 + 18 * index5); Main.tile[index3 + index5, index4 + index6].frameY = (short) (18 * index6); } } return true; } public static Color paintColor(int color) { Color white = Color.White; int num = color; if (num == 1 || num == 13) { white.R = byte.MaxValue; white.G = (byte) 0; white.B = (byte) 0; } if (num == 2 || num == 14) { white.R = byte.MaxValue; white.G = (byte) 127; white.B = (byte) 0; } if (num == 3 || num == 15) { white.R = byte.MaxValue; white.G = byte.MaxValue; white.B = (byte) 0; } if (num == 4 || num == 16) { white.R = (byte) 127; white.G = byte.MaxValue; white.B = (byte) 0; } if (num == 5 || num == 17) { white.R = (byte) 0; white.G = byte.MaxValue; white.B = (byte) 0; } if (num == 6 || num == 18) { white.R = (byte) 0; white.G = byte.MaxValue; white.B = (byte) 127; } if (num == 7 || num == 19) { white.R = (byte) 0; white.G = byte.MaxValue; white.B = byte.MaxValue; } if (num == 8 || num == 20) { white.R = (byte) 0; white.G = (byte) 127; white.B = byte.MaxValue; } if (num == 9 || num == 21) { white.R = (byte) 0; white.G = (byte) 0; white.B = byte.MaxValue; } if (num == 10 || num == 22) { white.R = (byte) 127; white.G = (byte) 0; white.B = byte.MaxValue; } if (num == 11 || num == 23) { white.R = byte.MaxValue; white.G = (byte) 0; white.B = byte.MaxValue; } if (num == 12 || num == 24) { white.R = byte.MaxValue; white.G = (byte) 0; white.B = (byte) 127; } if (num == 25) { white.R = (byte) 75; white.G = (byte) 75; white.B = (byte) 75; } if (num == 26) { white.R = byte.MaxValue; white.G = byte.MaxValue; white.B = byte.MaxValue; } if (num == 27) { white.R = (byte) 175; white.G = (byte) 175; white.B = (byte) 175; } if (num == 28) { white.R = byte.MaxValue; white.G = (byte) 178; white.B = (byte) 125; } if (num == 29) { white.R = (byte) 25; white.G = (byte) 25; white.B = (byte) 25; } if (num == 30) { white.R = (byte) 200; white.G = (byte) 200; white.B = (byte) 200; white.A = (byte) 150; } return white; } public static void paintEffect(int x, int y, byte color, byte oldColor) { int color1 = (int) color; if (color == (byte) 0) color1 = (int) oldColor; Color newColor = WorldGen.paintColor(color1); for (int index1 = 0; index1 < 10; ++index1) { int index2 = Dust.NewDust(new Vector2((float) (x * 16), (float) (y * 16)), 16, 16, 143, Alpha: 50, newColor: newColor); if (WorldGen.genRand.Next(2) == 0) { Main.dust[index2].noGravity = true; Main.dust[index2].scale *= 1.2f; } else Main.dust[index2].scale *= 0.5f; } } public static bool paintTile(int x, int y, byte color, bool broadCast = false) { if (Main.tile[x, y] == null || !Main.tile[x, y].active()) return false; byte oldColor = Main.tile[x, y].color(); Main.tile[x, y].color(color); if (broadCast) NetMessage.SendData(63, number: x, number2: ((float) y), number3: ((float) color)); WorldGen.paintEffect(x, y, color, oldColor); return true; } public static bool paintWall(int x, int y, byte color, bool broadCast = false) { if (Main.tile[x, y] == null || Main.tile[x, y].wall == (byte) 0) return false; byte oldColor = Main.tile[x, y].wallColor(); Main.tile[x, y].wallColor(color); if (broadCast) NetMessage.SendData(64, number: x, number2: ((float) y), number3: ((float) color)); WorldGen.paintEffect(x, y, color, oldColor); return true; } public static void Place3x3Wall(int x, int y, ushort type, int style) { int num1 = x - 1; int num2 = y - 1; bool flag = true; for (int index1 = num1; index1 < num1 + 3; ++index1) { for (int index2 = num2; index2 < num2 + 3; ++index2) { if (Main.tile[index1, index2].active() || Main.tile[index1, index2].wall == (byte) 0) { flag = false; break; } } } if (!flag) return; int num3 = 0; for (; style > 35; style -= 36) ++num3; int num4 = style * 54; int num5 = num3 * 54; for (int index3 = num1; index3 < num1 + 3; ++index3) { for (int index4 = num2; index4 < num2 + 3; ++index4) { Main.tile[index3, index4].active(true); Main.tile[index3, index4].type = type; Main.tile[index3, index4].frameX = (short) (num4 + 18 * (index3 - num1)); Main.tile[index3, index4].frameY = (short) (num5 + 18 * (index4 - num2)); } } } public static void Check3x3Wall(int x, int y) { if (WorldGen.destroyObject) return; bool flag = false; int type = (int) Main.tile[x, y].type; int num1 = 0; int num2 = 0; int num3 = (int) Main.tile[x, y].frameX / 18; while (num3 >= 3) { num3 -= 3; ++num1; } int num4 = x - num3; int num5 = (int) Main.tile[x, y].frameY / 18; while (num5 >= 3) { num5 -= 3; ++num2; } int num6 = y - num5; int num7 = num2 * 54; int num8 = num1 * 54; for (int index1 = num4; index1 < num4 + 3; ++index1) { for (int index2 = num6; index2 < num6 + 3; ++index2) { if ((int) Main.tile[index1, index2].type != type || !Main.tile[index1, index2].active() || Main.tile[index1, index2].wall <= (byte) 0 || (int) Main.tile[index1, index2].frameX != num8 + (index1 - num4) * 18 || (int) Main.tile[index1, index2].frameY != num7 + (index2 - num6) * 18) { flag = true; break; } } } if (!flag) return; WorldGen.destroyObject = true; for (int i = num4; i < num4 + 3; ++i) { for (int j = num6; j < num6 + 3; ++j) { if ((int) Main.tile[i, j].type == type && Main.tile[i, j].active()) WorldGen.KillTile(i, j); } } switch (type) { case 240: int num9 = num1 + num2 * 36; switch (num9) { case 18: Item.NewItem(x * 16, y * 16, 32, 32, 1419); break; case 19: Item.NewItem(x * 16, y * 16, 32, 32, 1420); break; case 20: Item.NewItem(x * 16, y * 16, 32, 32, 1427); break; case 21: Item.NewItem(x * 16, y * 16, 32, 32, 1428); break; case 33: Item.NewItem(x * 16, y * 16, 32, 32, 1574); break; case 34: Item.NewItem(x * 16, y * 16, 32, 32, 1575); break; case 35: Item.NewItem(x * 16, y * 16, 32, 32, 1576); break; case 36: Item.NewItem(x * 16, y * 16, 32, 32, 1855); break; case 37: Item.NewItem(x * 16, y * 16, 32, 32, 1856); break; case 38: Item.NewItem(x * 16, y * 16, 32, 32, 1960); break; case 39: Item.NewItem(x * 16, y * 16, 32, 32, 1961); break; case 40: Item.NewItem(x * 16, y * 16, 32, 32, 1962); break; case 54: Item.NewItem(x * 16, y * 16, 32, 32, 2489); break; case 55: Item.NewItem(x * 16, y * 16, 32, 32, 2589); break; case 56: Item.NewItem(x * 16, y * 16, 32, 32, 3357); break; case 57: Item.NewItem(x * 16, y * 16, 32, 32, 3358); break; case 58: Item.NewItem(x * 16, y * 16, 32, 32, 3359); break; case 59: Item.NewItem(x * 16, y * 16, 32, 32, 3595); break; case 60: Item.NewItem(x * 16, y * 16, 32, 32, 3867); break; case 61: Item.NewItem(x * 16, y * 16, 32, 32, 3866); break; case 62: Item.NewItem(x * 16, y * 16, 32, 32, 3868); break; default: if (num9 >= 41 && num9 <= 45) { Item.NewItem(x * 16, y * 16, 32, 32, 2114 + num9 - 41); break; } if (num9 >= 46 && num9 <= 53) { Item.NewItem(x * 16, y * 16, 32, 32, 2442 + num9 - 46); break; } if (num9 >= 22 && num9 <= 25) { Item.NewItem(x * 16, y * 16, 32, 32, 1440 + num9 - 22); break; } if (num9 >= 26 && num9 <= 29) { Item.NewItem(x * 16, y * 16, 32, 32, 1496 + num9 - 26); break; } if (num9 >= 30 && num9 <= 32) { Item.NewItem(x * 16, y * 16, 32, 32, 1538 + num9 - 30); break; } Item.NewItem(x * 16, y * 16, 32, 32, 1360 + num9); break; } break; case 440: int Type1 = -1; int Type2 = -1; switch (num1) { case 0: Type1 = 3644; Type2 = 1526; break; case 1: Type1 = 3645; Type2 = 1524; break; case 2: Type1 = 3646; Type2 = 1525; break; case 3: Type1 = 3647; Type2 = 1523; break; case 4: Type1 = 3648; Type2 = 1522; break; case 5: Type1 = 3649; Type2 = 1527; break; case 6: Type1 = 3650; Type2 = 3643; break; } if (Type1 != -1) Item.NewItem(x * 16, y * 16, 32, 32, Type1); if (Type2 != -1 && num2 == 1) { Item.NewItem(x * 16, y * 16, 32, 32, Type2); break; } break; } WorldGen.destroyObject = false; } public static void Place2x3Wall(int x, int y, ushort type, int style) { int num1 = x; int num2 = y - 1; bool flag = true; for (int index1 = num1; index1 < num1 + 2; ++index1) { for (int index2 = num2; index2 < num2 + 3; ++index2) { if (Main.tile[index1, index2].active() || Main.tile[index1, index2].wall == (byte) 0) { flag = false; break; } } } if (!flag) return; int num3 = style * 36; int num4 = 0; for (int index3 = num1; index3 < num1 + 2; ++index3) { for (int index4 = num2; index4 < num2 + 3; ++index4) { Main.tile[index3, index4].active(true); Main.tile[index3, index4].type = type; Main.tile[index3, index4].frameX = (short) (num3 + 18 * (index3 - num1)); Main.tile[index3, index4].frameY = (short) (num4 + 18 * (index4 - num2)); } } } public static void Check2x3Wall(int x, int y) { if (WorldGen.destroyObject) return; bool flag = false; int type = (int) Main.tile[x, y].type; int num1 = 0; int num2 = (int) Main.tile[x, y].frameX / 18; while (num2 >= 2) { num2 -= 2; ++num1; } int num3 = x - num2; int num4 = y - (int) Main.tile[x, y].frameY / 18; int num5 = num1 * 36; for (int index1 = num3; index1 < num3 + 2; ++index1) { for (int index2 = num4; index2 < num4 + 3; ++index2) { if ((int) Main.tile[index1, index2].type != type || !Main.tile[index1, index2].active() || Main.tile[index1, index2].wall <= (byte) 0 || (int) Main.tile[index1, index2].frameX != num5 + (index1 - num3) * 18 || (int) Main.tile[index1, index2].frameY != (index2 - num4) * 18) { flag = true; break; } } } if (!flag) return; WorldGen.destroyObject = true; for (int i = num3; i < num3 + 2; ++i) { for (int j = num4; j < num4 + 3; ++j) { if ((int) Main.tile[i, j].type == type && Main.tile[i, j].active()) WorldGen.KillTile(i, j); } } if (type == 245) { switch (num1) { case 5: Item.NewItem(x * 16, y * 16, 32, 32, 1495); break; case 6: Item.NewItem(x * 16, y * 16, 32, 32, 1577); break; default: Item.NewItem(x * 16, y * 16, 32, 32, 1474 + num1); break; } } WorldGen.destroyObject = false; } public static void Place3x2Wall(int x, int y, ushort type, int style) { int num1 = x - 1; int num2 = y; bool flag = true; for (int index1 = num1; index1 < num1 + 3; ++index1) { for (int index2 = num2; index2 < num2 + 2; ++index2) { if (Main.tile[index1, index2].active() || Main.tile[index1, index2].wall == (byte) 0) { flag = false; break; } } } if (!flag) return; int num3 = 0; int num4 = style * 36; for (int index3 = num1; index3 < num1 + 3; ++index3) { for (int index4 = num2; index4 < num2 + 2; ++index4) { Main.tile[index3, index4].active(true); Main.tile[index3, index4].type = type; Main.tile[index3, index4].frameX = (short) (num3 + 18 * (index3 - num1)); Main.tile[index3, index4].frameY = (short) (num4 + 18 * (index4 - num2)); } } } public static void Check3x2Wall(int x, int y) { if (WorldGen.destroyObject) return; bool flag = false; int type = (int) Main.tile[x, y].type; int num1 = 0; int num2 = (int) Main.tile[x, y].frameY / 18; while (num2 >= 2) { num2 -= 2; ++num1; } int num3 = y - num2; int num4 = x - (int) Main.tile[x, y].frameX / 18; int num5 = num1 * 36; for (int index1 = num4; index1 < num4 + 3; ++index1) { for (int index2 = num3; index2 < num3 + 2; ++index2) { if ((int) Main.tile[index1, index2].type != type || !Main.tile[index1, index2].active() || Main.tile[index1, index2].wall <= (byte) 0 || (int) Main.tile[index1, index2].frameY != num5 + (index2 - num3) * 18 || (int) Main.tile[index1, index2].frameX != (index1 - num4) * 18) { flag = true; break; } } } if (!flag) return; WorldGen.destroyObject = true; for (int i = num4; i < num4 + 3; ++i) { for (int j = num3; j < num3 + 2; ++j) { if ((int) Main.tile[i, j].type == type && Main.tile[i, j].active()) WorldGen.KillTile(i, j); } } if (type == 246) { switch (num1) { case 16: Item.NewItem(x * 16, y * 16, 32, 32, 1541); break; case 17: Item.NewItem(x * 16, y * 16, 32, 32, 1542); break; case 18: Item.NewItem(x * 16, y * 16, 32, 32, 1908); break; default: Item.NewItem(x * 16, y * 16, 32, 32, 1479 + num1); break; } } WorldGen.destroyObject = false; } public static void Place4x3Wall(int x, int y, ushort type, int style) { int num1 = x - 1; int num2 = y - 1; bool flag = true; for (int index1 = num1; index1 < num1 + 4; ++index1) { for (int index2 = num2; index2 < num2 + 3; ++index2) { if (Main.tile[index1, index2].active() || Main.tile[index1, index2].wall == (byte) 0) { flag = false; break; } } } if (!flag) return; int num3 = 0; int num4 = style * 54; for (int index3 = num1; index3 < num1 + 4; ++index3) { for (int index4 = num2; index4 < num2 + 3; ++index4) { Main.tile[index3, index4].active(true); Main.tile[index3, index4].type = type; Main.tile[index3, index4].frameX = (short) (num3 + 18 * (index3 - num1)); Main.tile[index3, index4].frameY = (short) (num4 + 18 * (index4 - num2)); } } } public static void Check4x3Wall(int x, int y) { if (WorldGen.destroyObject) return; bool flag = false; int type = (int) Main.tile[x, y].type; int num1 = 0; int num2 = (int) Main.tile[x, y].frameY / 18; while (num2 >= 3) { num2 -= 3; ++num1; } int num3 = y - num2; int num4 = x - (int) Main.tile[x, y].frameX / 18; int num5 = num1 * 54; for (int index1 = num4; index1 < num4 + 4; ++index1) { for (int index2 = num3; index2 < num3 + 3; ++index2) { if ((int) Main.tile[index1, index2].type != type || !Main.tile[index1, index2].active() || Main.tile[index1, index2].wall <= (byte) 0 || (int) Main.tile[index1, index2].frameY != num5 + (index2 - num3) * 18 || (int) Main.tile[index1, index2].frameX != (index1 - num4) * 18) { flag = true; break; } } } if (!flag) return; WorldGen.destroyObject = true; for (int i = num4; i < num4 + 4; ++i) { for (int j = num3; j < num3 + 3; ++j) { if ((int) Main.tile[i, j].type == type && Main.tile[i, j].active()) WorldGen.KillTile(i, j); } } if (type == 241) Item.NewItem(x * 16, y * 16, 32, 32, 1417); WorldGen.destroyObject = false; } public static void Place6x4Wall(int x, int y, ushort type, int style) { int num1 = x - 2; int num2 = y - 2; bool flag = true; for (int index1 = num1; index1 < num1 + 6; ++index1) { for (int index2 = num2; index2 < num2 + 4; ++index2) { if (Main.tile[index1, index2].active() || Main.tile[index1, index2].wall == (byte) 0) { flag = false; break; } } } if (!flag) return; int num3 = 27; int num4 = style / num3 * 108; int num5 = style % num3 * 72; for (int index3 = num1; index3 < num1 + 6; ++index3) { for (int index4 = num2; index4 < num2 + 4; ++index4) { Main.tile[index3, index4].active(true); Main.tile[index3, index4].type = type; Main.tile[index3, index4].frameX = (short) (num4 + 18 * (index3 - num1)); Main.tile[index3, index4].frameY = (short) (num5 + 18 * (index4 - num2)); } } } public static void Check6x4Wall(int x, int y) { if (WorldGen.destroyObject) return; bool flag = false; int type = (int) Main.tile[x, y].type; int num1 = (int) Main.tile[x, y].frameY / 18; int num2 = (int) Main.tile[x, y].frameX / 18; int num3 = 27 * (num2 / 6) + (num1 >> 2); int num4 = num1 % 4; int num5 = num2 % 6; int num6 = y - num4; int num7 = x - (int) Main.tile[x, y].frameX / 18 % 6; int num8 = num3 % 27 * 72; int num9 = num3 / 27 * 108; for (int index1 = num7; index1 < num7 + 6; ++index1) { for (int index2 = num6; index2 < num6 + 4; ++index2) { if ((int) Main.tile[index1, index2].type != type || !Main.tile[index1, index2].active() || Main.tile[index1, index2].wall <= (byte) 0 || (int) Main.tile[index1, index2].frameY != num8 + (index2 - num6) * 18 || (int) Main.tile[index1, index2].frameX != num9 + (index1 - num7) * 18) { flag = true; break; } } } if (!flag) return; WorldGen.destroyObject = true; for (int i = num7; i < num7 + 6; ++i) { for (int j = num6; j < num6 + 4; ++j) { if ((int) Main.tile[i, j].type == type && Main.tile[i, j].active()) WorldGen.KillTile(i, j); } } if (type == 242) { if (num3 == 30) Item.NewItem(x * 16, y * 16, 32, 32, 2995); else if (num3 >= 31 && num3 <= 35) Item.NewItem(x * 16, y * 16, 32, 32, 3055 + num3 - 31); else if (num3 >= 27 && num3 <= 29) Item.NewItem(x * 16, y * 16, 32, 32, 2865 + num3 - 27); else if (num3 == 36) Item.NewItem(x * 16, y * 16, 32, 32, 3596); else if (num3 == 26) Item.NewItem(x * 16, y * 16, 32, 32, 2497); else if (num3 == 25) Item.NewItem(x * 16, y * 16, 32, 32, 2495); else if (num3 >= 22) Item.NewItem(x * 16, y * 16, 32, 32, 2281 + num3 - 22); else if (num3 >= 17) Item.NewItem(x * 16, y * 16, 32, 32, 1846 + num3 - 17); else if (num3 == 16) Item.NewItem(x * 16, y * 16, 32, 32, 1573); else if (num3 >= 13) Item.NewItem(x * 16, y * 16, 32, 32, 1500 + num3 - 13); else if (num3 >= 6) Item.NewItem(x * 16, y * 16, 32, 32, 1433 + num3 - 6); else Item.NewItem(x * 16, y * 16, 32, 32, 1421 + num3); } WorldGen.destroyObject = false; } public static void Place1x1(int x, int y, int type, int style = 0) { Tile tile = Main.tile[x, y]; if (Main.tile[x, y] == null) { tile = new Tile(); Main.tile[x, y] = tile; } if (Main.tile[x, y + 1] == null) Main.tile[x, y + 1] = new Tile(); if (type == 324) { if (!WorldGen.SolidTile2(x, y + 1) && (!Main.tile[x, y + 1].nactive() || !Main.tileTable[(int) Main.tile[x, y + 1].type])) return; tile.active(true); tile.type = (ushort) type; tile.frameX = (short) (22 * WorldGen.genRand.Next(2)); tile.frameY = (short) (22 * style); } else { if (!WorldGen.SolidTile2(x, y + 1) || tile.active()) return; tile.active(true); tile.type = (ushort) type; switch (type) { case 36: case 144: case 239: tile.frameX = (short) (style * 18); tile.frameY = (short) 0; break; case 324: tile.frameX = (short) (22 * WorldGen.genRand.Next(2)); tile.frameY = (short) (22 * style); break; default: tile.frameY = (short) (style * 18); break; } } } public static void Check1x1(int x, int y, int type) { if (Main.tile[x, y + 1] == null || WorldGen.SolidTileAllowBottomSlope(x, y + 1)) return; WorldGen.KillTile(x, y); } public static void CheckLogicTiles(int x, int y, int type) { if (type == 419) { Tile tile = Main.tile[x, y + 1]; if (tile != null && (!tile.active() || tile.type != (ushort) 420 && tile.type != (ushort) 419)) { WorldGen.KillTile(x, y); return; } } Tile tile1 = Main.tile[x, y]; bool flag = false; if ((int) tile1.frameX % 18 != 0) flag = true; if ((int) tile1.frameY % 18 != 0) flag = true; if (!flag) return; WorldGen.KillTile(x, y); } public static void PlaceLogicTiles(int x, int y, int type, int style = 0) { Tile tile = Main.tile[x, y]; if (Main.tile[x, y] == null) { tile = new Tile(); Main.tile[x, y] = tile; } if (Main.tile[x, y + 1] == null) Main.tile[x, y + 1] = new Tile(); if (type == 419) { if (!Main.tile[x, y + 1].active() || Main.tile[x, y + 1].type != (ushort) 419 && Main.tile[x, y + 1].type != (ushort) 420) return; tile.active(true); tile.type = (ushort) type; tile.frameX = (short) (style * 18); tile.frameY = (short) 0; } else { if (tile.active()) return; tile.active(true); tile.type = (ushort) type; tile.frameX = (short) 0; tile.frameY = (short) (18 * style); } } 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].nactive() && Main.tileTable[(int) Main.tile[x, y + 1].type]) flag = true; if (type == 78 && !Main.tile[x, y].active() && Main.tile[x, y + 1].nactive() && Main.tileSolid[(int) Main.tile[x, y + 1].type] && !Main.tile[x, y + 1].halfBrick() && Main.tile[x, y + 1].slope() == (byte) 0) flag = true; if (!flag) return; Main.tile[x, y].active(true); Main.tile[x, y].type = (ushort) type; if (type == 33) { Main.tile[x, y].frameX = (short) 0; Main.tile[x, y].frameY = (short) (style * 22); } else { Main.tile[x, y].frameX = (short) (style * 18); Main.tile[x, y].frameY = (short) 0; } 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].nactive() && !Main.tile[x, y + 1].halfBrick() && Main.tile[x, y + 1].slope() == (byte) 0) { bool flag = false; switch (style) { case 0: if (Main.tile[x, y + 1].type != (ushort) 2 && Main.tile[x, y + 1].type != (ushort) 78 && Main.tile[x, y + 1].type != (ushort) 380 && Main.tile[x, y + 1].type != (ushort) 109) flag = true; if (Main.tile[x, y].liquid > (byte) 0) { flag = true; break; } break; case 1: if (Main.tile[x, y + 1].type != (ushort) 60 && Main.tile[x, y + 1].type != (ushort) 78 && Main.tile[x, y + 1].type != (ushort) 380) flag = true; if (Main.tile[x, y].liquid > (byte) 0) { flag = true; break; } break; case 2: if (Main.tile[x, y + 1].type != (ushort) 0 && Main.tile[x, y + 1].type != (ushort) 59 && Main.tile[x, y + 1].type != (ushort) 78 && Main.tile[x, y + 1].type != (ushort) 380) flag = true; if (Main.tile[x, y].liquid > (byte) 0) { flag = true; break; } break; case 3: if (Main.tile[x, y + 1].type != (ushort) 203 && Main.tile[x, y + 1].type != (ushort) 199 && Main.tile[x, y + 1].type != (ushort) 23 && Main.tile[x, y + 1].type != (ushort) 25 && Main.tile[x, y + 1].type != (ushort) 78 && Main.tile[x, y + 1].type != (ushort) 380) flag = true; if (Main.tile[x, y].liquid > (byte) 0) { flag = true; break; } break; case 4: if (Main.tile[x, y + 1].type != (ushort) 53 && Main.tile[x, y + 1].type != (ushort) 78 && Main.tile[x, y + 1].type != (ushort) 380 && Main.tile[x, y + 1].type != (ushort) 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 != (ushort) 57 && Main.tile[x, y + 1].type != (ushort) 78 && Main.tile[x, y + 1].type != (ushort) 380) flag = true; if (Main.tile[x, y].liquid > (byte) 0 && !Main.tile[x, y].lava()) { flag = true; break; } break; case 6: if (Main.tile[x, y + 1].type != (ushort) 78 && Main.tile[x, y + 1].type != (ushort) 380 && Main.tile[x, y + 1].type != (ushort) 147 && Main.tile[x, y + 1].type != (ushort) 161 && Main.tile[x, y + 1].type != (ushort) 163 && Main.tile[x, y + 1].type != (ushort) 164 && Main.tile[x, y + 1].type != (ushort) 200) 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 = (ushort) 82; Main.tile[x, y].frameX = (short) (18 * style); Main.tile[x, y].frameY = (short) 0; return true; } } return false; } public static void GrowSpike(int i, int j, ushort spikeType, ushort landType) { int index1 = i; int index2 = j; int num1 = 0; if (Main.tile[index1 + 1, index2].active() && (int) Main.tile[index1 + 1, index2].type == (int) spikeType) ++num1; if (Main.tile[index1 - 1, index2].active() && (int) Main.tile[index1 - 1, index2].type == (int) spikeType) ++num1; if (Main.tile[index1, index2 + 1].active() && (int) Main.tile[index1, index2 + 1].type == (int) spikeType) ++num1; if (Main.tile[index1, index2 - 1].active() && (int) Main.tile[index1, index2 - 1].type == (int) spikeType) ++num1; if (num1 >= 3 && (int) Main.tile[i, j].type != (int) landType) return; switch (WorldGen.genRand.Next(4)) { case 0: --index2; break; case 1: ++index2; break; case 2: --index1; break; case 3: ++index1; break; } if (Main.tile[index1, index2].active()) return; int num2 = 0; if (Main.tile[index1 + 1, index2].active() && (int) Main.tile[index1 + 1, index2].type == (int) spikeType) ++num2; if (Main.tile[index1 - 1, index2].active() && (int) Main.tile[index1 - 1, index2].type == (int) spikeType) ++num2; if (Main.tile[index1, index2 + 1].active() && (int) Main.tile[index1, index2 + 1].type == (int) spikeType) ++num2; if (Main.tile[index1, index2 - 1].active() && (int) Main.tile[index1, index2 - 1].type == (int) spikeType) ++num2; if (num2 >= 2) return; int num3 = 7; int num4 = index1 - num3; int num5 = index1 + num3; int num6 = index2 - num3; int num7 = index2 + num3; bool flag = false; for (int index3 = num4; index3 < num5; ++index3) { for (int index4 = num6; index4 < num7; ++index4) { if (Math.Abs(index3 - index1) * 2 + Math.Abs(index4 - index2) < 9 && Main.tile[index3, index4].active() && (int) Main.tile[index3, index4].type == (int) landType && Main.tile[index3, index4 - 1].active() && (int) Main.tile[index3, index4 - 1].type == (int) spikeType && Main.tile[index3, index4 - 1].liquid == (byte) 0) { flag = true; break; } } } if (!flag) return; Main.tile[index1, index2].type = spikeType; Main.tile[index1, index2].active(true); WorldGen.SquareTileFrame(index1, index2); if (Main.netMode != 2) return; NetMessage.SendTileSquare(-1, index1, index2, 3); } public static void GrowAlch(int x, int y) { if (!Main.tile[x, y].active()) return; if (Main.tile[x, y].type == (ushort) 82 && WorldGen.genRand.Next(50) == 0) { bool flag = false; if (Main.tile[x, y].frameX == (short) 108) { if (WorldGen.genRand.Next(3) != 0) flag = true; } else flag = true; if (!flag) return; Main.tile[x, y].type = (ushort) 83; if (Main.netMode == 2) NetMessage.SendTileSquare(-1, x, y, 1); WorldGen.SquareTileFrame(x, y); } else if (Main.dayTime && Main.tile[x, y].type == (ushort) 82 && Main.tile[x, y].frameX == (short) 0 && WorldGen.genRand.Next(50) == 0) { Main.tile[x, y].type = (ushort) 83; if (Main.netMode == 2) NetMessage.SendTileSquare(-1, x, y, 1); WorldGen.SquareTileFrame(x, y); } else if (!Main.dayTime && Main.tile[x, y].type == (ushort) 82 && Main.tile[x, y].frameX == (short) 18 && WorldGen.genRand.Next(50) == 0) { Main.tile[x, y].type = (ushort) 83; if (Main.netMode == 2) NetMessage.SendTileSquare(-1, x, y, 1); WorldGen.SquareTileFrame(x, y); } else if (Main.tile[x, y].frameX == (short) 36 && WorldGen.genRand.Next(3) != 0) { if (Main.tile[x, y].type == (ushort) 83) { if (WorldGen.genRand.Next(2) != 0) return; Main.tile[x, y].type = (ushort) 84; if (Main.netMode != 2) return; NetMessage.SendTileSquare(-1, x, y, 1); } else { if (WorldGen.genRand.Next(5) != 0 && Main.tile[x, y].type != (ushort) 84) return; Main.tile[x, y].type = (ushort) 83; if (Main.netMode != 2) return; NetMessage.SendTileSquare(-1, x, y, 1); } } else { if (Main.tile[x, y].frameX != (short) 108 || Main.tile[x, y].type != (ushort) 83 || WorldGen.genRand.Next(80) != 0) return; Main.tile[x, y].type = (ushort) 84; if (Main.netMode == 2) NetMessage.SendTileSquare(-1, x, y, 1); WorldGen.SquareTileFrame(x, y); } } 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].nactive() || Main.tile[index1, index2 - 1].active() || Main.tile[index1, index2 - 1].liquid != (byte) 0) return; int num1 = 15; int num2 = 5; int num3 = 0; int num4 = (int) ((double) num1 * ((double) Main.maxTilesX / 4200.0)); int num5 = Utils.Clamp(index1 - num4, 4, Main.maxTilesX - 4); int num6 = Utils.Clamp(index1 + num4, 4, Main.maxTilesX - 4); int num7 = Utils.Clamp(index2 - num4, 4, Main.maxTilesY - 4); int num8 = Utils.Clamp(index2 + num4, 4, Main.maxTilesY - 4); for (int index3 = num5; index3 <= num6; ++index3) { for (int index4 = num7; index4 <= num8; ++index4) { if (Main.tileAlch[(int) Main.tile[index3, index4].type]) ++num3; } } if (num3 >= num2) return; if (Main.tile[index1, index2].type == (ushort) 2 || Main.tile[index1, index2].type == (ushort) 109) WorldGen.PlaceAlch(index1, index2 - 1, 0); if (Main.tile[index1, index2].type == (ushort) 60) WorldGen.PlaceAlch(index1, index2 - 1, 1); if (Main.tile[index1, index2].type == (ushort) 0 || Main.tile[index1, index2].type == (ushort) 59) WorldGen.PlaceAlch(index1, index2 - 1, 2); if (Main.tile[index1, index2].type == (ushort) 23 || Main.tile[index1, index2].type == (ushort) 25 || Main.tile[index1, index2].type == (ushort) 203 || Main.tile[index1, index2].type == (ushort) 199) WorldGen.PlaceAlch(index1, index2 - 1, 3); if (Main.tile[index1, index2].type == (ushort) 53 || Main.tile[index1, index2].type == (ushort) 116) WorldGen.PlaceAlch(index1, index2 - 1, 4); if (Main.tile[index1, index2].type == (ushort) 57) WorldGen.PlaceAlch(index1, index2 - 1, 5); if (Main.tile[index1, index2].type == (ushort) 147 || Main.tile[index1, index2].type == (ushort) 163 || Main.tile[index1, index2].type == (ushort) 164 || Main.tile[index1, index2].type == (ushort) 161 || Main.tile[index1, index2].type == (ushort) 200) WorldGen.PlaceAlch(index1, index2 - 1, 6); 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; if (Main.tile[x, y + 1].halfBrick()) 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 != (ushort) 109 && Main.tile[x, y + 1].type != (ushort) 2 && Main.tile[x, y + 1].type != (ushort) 78 && Main.tile[x, y + 1].type != (ushort) 380) 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 != (ushort) 60 && Main.tile[x, y + 1].type != (ushort) 78 && Main.tile[x, y + 1].type != (ushort) 380) 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 != (ushort) 0 && Main.tile[x, y + 1].type != (ushort) 59 && Main.tile[x, y + 1].type != (ushort) 78 && Main.tile[x, y + 1].type != (ushort) 380) 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 != (ushort) 199 && Main.tile[x, y + 1].type != (ushort) 203 && Main.tile[x, y + 1].type != (ushort) 23 && Main.tile[x, y + 1].type != (ushort) 25 && Main.tile[x, y + 1].type != (ushort) 78 && Main.tile[x, y + 1].type != (ushort) 380) 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 != (ushort) 53 && Main.tile[x, y + 1].type != (ushort) 78 && Main.tile[x, y + 1].type != (ushort) 380 && Main.tile[x, y + 1].type != (ushort) 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 != (ushort) 57 && Main.tile[x, y + 1].type != (ushort) 78 && Main.tile[x, y + 1].type != (ushort) 380) flag = true; if (Main.tile[x, y].liquid > (byte) 0 && !Main.tile[x, y].lava()) flag = true; if (Main.tile[x, y].type != (ushort) 82 && Main.tile[x, y].lava() && Main.tile[x, y].type != (ushort) 82 && Main.tile[x, y].lava() && Main.netMode != 1) { if (Main.tile[x, y].liquid > (byte) 16) { if (Main.tile[x, y].type == (ushort) 83) { Main.tile[x, y].type = (ushort) 84; if (Main.netMode == 2) { NetMessage.SendTileSquare(-1, x, y, 1); break; } break; } break; } if (Main.tile[x, y].type == (ushort) 84) { Main.tile[x, y].type = (ushort) 83; if (Main.netMode == 2) { NetMessage.SendTileSquare(-1, x, y, 1); break; } break; } break; } break; case 6: if (Main.tile[x, y + 1].type != (ushort) 78 && Main.tile[x, y + 1].type != (ushort) 380 && Main.tile[x, y + 1].type != (ushort) 147 && Main.tile[x, y + 1].type != (ushort) 161 && Main.tile[x, y + 1].type != (ushort) 163 && Main.tile[x, y + 1].type != (ushort) 164 && Main.tile[x, y + 1].type != (ushort) 200) flag = true; if (Main.tile[x, y].liquid > (byte) 0 && Main.tile[x, y].lava()) { flag = true; 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 = (int) Main.tile[x, j].frameY / 18; int num2 = 0; while (num1 >= 3) { num1 -= 3; ++num2; } int num3 = j - num1; int frameX = (int) Main.tile[x, j].frameX; bool flag = false; for (int index = 0; index < 3; ++index) { if (Main.tile[x, num3 + index] == null) Main.tile[x, num3 + index] = new Tile(); if (!Main.tile[x, num3 + index].active()) flag = true; else if ((int) Main.tile[x, num3 + index].type != (int) type) flag = true; else if ((int) Main.tile[x, num3 + index].frameY != index * 18 + num2 * 18 * 3) flag = true; else if ((int) Main.tile[x, num3 + index].frameX != frameX) flag = true; } if (Main.tile[x, num3 - 1] == null) Main.tile[x, num3 - 1] = new Tile(); if (!Main.tile[x, num3 - 1].nactive()) flag = true; if (!Main.tile[x, num3 - 1].topSlope() && !Main.tile[x, num3 - 1].halfBrick() && !Main.tileSolid[(int) Main.tile[x, num3 - 1].type] || Main.tileSolidTop[(int) Main.tile[x, num3 - 1].type] && (!TileID.Sets.Platforms[(int) Main.tile[x, num3 - 1].type] || !Main.tile[x, num3 - 1].halfBrick() && !Main.tile[x, num3 - 1].topSlope()) || TileID.Sets.NotReallySolid[(int) Main.tile[x, num3 - 1].type] || Main.tile[x, num3 - 1].bottomSlope()) flag = true; if (!flag) return; WorldGen.destroyObject = true; for (int index = 0; index < 3; ++index) { if ((int) Main.tile[x, num3 + index].type == (int) type) WorldGen.KillTile(x, num3 + index); } if (type == (byte) 91) { int num4 = frameX / 18 + num2 * 111; if (num4 >= 278) Item.NewItem(x * 16, (num3 + 1) * 16, 32, 32, 3559 + num4); else if (num4 >= 273) Item.NewItem(x * 16, (num3 + 1) * 16, 32, 32, 3516 + num4); else if (num4 >= 272) Item.NewItem(x * 16, (num3 + 1) * 16, 32, 32, 3780); else if (num4 >= 270) Item.NewItem(x * 16, (num3 + 1) * 16, 32, 32, 3323 + num4); else if (num4 >= 207) Item.NewItem(x * 16, (num3 + 1) * 16, 32, 32, 3183 + num4); else if (num4 >= 109) Item.NewItem(x * 16, (num3 + 1) * 16, 32, 32, 2788 + num4); else if (num4 >= 22) Item.NewItem(x * 16, (num3 + 1) * 16, 32, 32, 1593 + num4); else if (num4 >= 10 && num4 <= 15) Item.NewItem(x * 16, (num3 + 1) * 16, 32, 32, 1441 + num4); else if (num4 >= 16 && num4 <= 21) Item.NewItem(x * 16, (num3 + 1) * 16, 32, 32, 1448 + num4); else if (num4 >= 7 && num4 <= 9) Item.NewItem(x * 16, (num3 + 1) * 16, 32, 32, 838 + num4); else if (num4 >= 4 && num4 <= 6) Item.NewItem(x * 16, (num3 + 1) * 16, 32, 32, 785 + num4); else Item.NewItem(x * 16, (num3 + 1) * 16, 32, 32, 337 + num4); } WorldGen.destroyObject = false; } public static void PlaceBanner(int x, int y, ushort type, int style = 0) { int num1 = style * 18; int num2 = 0; if (style >= 90) { num1 -= 1620; num2 += 54; } 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].nactive() || !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) num2; Main.tile[x, y].frameX = (short) num1; Main.tile[x, y].type = type; Main.tile[x, y + 1].active(true); Main.tile[x, y + 1].frameY = (short) (num2 + 18); Main.tile[x, y + 1].frameX = (short) num1; Main.tile[x, y + 1].type = type; Main.tile[x, y + 2].active(true); Main.tile[x, y + 2].frameY = (short) (num2 + 36); Main.tile[x, y + 2].frameX = (short) num1; Main.tile[x, y + 2].type = 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.SolidTile2(i, j + 1) || !WorldGen.SolidTile2(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 = (ushort) 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 = (ushort) 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 = (ushort) 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 = (ushort) 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 = (ushort) 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 = (ushort) 128; } public static void PlaceWoman(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.SolidTile2(i, j + 1) || !WorldGen.SolidTile2(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 = (ushort) 269; 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 = (ushort) 269; 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 = (ushort) 269; 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 = (ushort) 269; 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 = (ushort) 269; 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 = (ushort) 269; } public static void CheckWeaponsRack(int i, int j) { if (WorldGen.destroyObject) return; int num1 = i; int num2 = j - (int) Main.tile[i, j].frameY / 18; int num3 = (int) Main.tile[i, j].frameX; int num4 = 0; while (num3 >= 5000) { num3 -= 5000; ++num4; } if (num4 != 0) num3 = (num4 - 1) * 18; int num5 = num3 % 54; int num6 = num1 - num5 / 18; bool flag = false; for (int index1 = 0; index1 < 3; ++index1) { for (int index2 = 0; index2 < 3; ++index2) { int index3 = num6 + index1; int index4 = num2 + index2; int num7 = (int) Main.tile[index3, index4].frameX; int num8 = 0; while (num7 >= 5000) { num7 -= 5000; ++num8; } if (num8 != 0) num7 = (num8 - 1) * 18; int num9 = num7 % 54; if (!Main.tile[index3, index4].active() || Main.tile[index3, index4].type != (ushort) 334 || Main.tile[index3, index4].wall <= (byte) 0 || (int) Main.tile[index3, index4].frameY != index2 * 18 || num9 != index1 * 18) flag = true; } } if (!flag) return; WorldGen.destroyObject = true; Item.NewItem(i * 16, j * 16, 48, 48, 2699); for (int index5 = 0; index5 < 3; ++index5) { for (int index6 = 0; index6 < 3; ++index6) { int i1 = num6 + index5; int j1 = num2 + index6; if (Main.tile[i1, j1].active() && Main.tile[i1, j1].type == (ushort) 334) WorldGen.KillTile(i1, j1); } } WorldGen.destroyObject = false; } public static void ToggleGemLock(int i, int j, bool on) { Tile tileSafely = Framing.GetTileSafely(i, j); if (!tileSafely.active() || tileSafely.type != (ushort) 440 || tileSafely.frameY < (short) 54 && !on) return; bool flag = false; int Type = -1; if (tileSafely.frameY >= (short) 54) flag = true; int num1 = (int) Main.tile[i, j].frameX / 54; int num2 = (int) Main.tile[i, j].frameX % 54 / 18; int num3 = (int) Main.tile[i, j].frameY % 54 / 18; switch (num1) { case 0: Type = 1526; break; case 1: Type = 1524; break; case 2: Type = 1525; break; case 3: Type = 1523; break; case 4: Type = 1522; break; case 5: Type = 1527; break; case 6: Type = 3643; break; } for (int index1 = i - num2; index1 < i - num2 + 3; ++index1) { for (int index2 = j - num3; index2 < j - num3 + 3; ++index2) Main.tile[index1, index2].frameY = (short) ((on ? 54 : 0) + (index2 - j + num3) * 18); } if (Type != -1 & flag) Item.NewItem(i * 16, j * 16, 32, 32, Type); WorldGen.SquareTileFrame(i, j); NetMessage.SendTileSquare(-1, i - num2 + 1, j - num3 + 1, 3); Wiring.HitSwitch(i - num2, j - num3); NetMessage.SendData(59, number: (i - num2), number2: ((float) (j - num3))); } 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 != (ushort) 128 || (int) Main.tile[index3, index4].frameY != index2 * 18 || frameX2 != index1 * 18) flag = true; } } if (!WorldGen.SolidTileAllowBottomSlope(i1, num2 + 3) || !WorldGen.SolidTileAllowBottomSlope(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 == (ushort) 128) WorldGen.KillTile(i2, j1); } } WorldGen.destroyObject = false; } public static void CheckWoman(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 != (ushort) 269 || (int) Main.tile[index3, index4].frameY != index2 * 18 || frameX2 != index1 * 18) flag = true; } } if (!WorldGen.SolidTileAllowBottomSlope(i1, num2 + 3) || !WorldGen.SolidTileAllowBottomSlope(i1 + 1, num2 + 3)) flag = true; if (!flag) return; WorldGen.destroyObject = true; Item.NewItem(i * 16, j * 16, 32, 32, 1989); 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 == (ushort) 269) WorldGen.KillTile(i2, j1); } } WorldGen.destroyObject = false; } public static void Place1x2(int x, int y, ushort type, int style) { short num1 = 0; if (type == (ushort) 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 (!(WorldGen.SolidTile2(x, y + 1) & !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 = 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 = type; } public static void Place1x2Top(int x, int y, ushort type, int style) { short num1 = 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].nactive() || !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; short num2 = (short) (style * 36); Main.tile[x, y].active(true); Main.tile[x, y].frameY = num2; Main.tile[x, y].frameX = num1; Main.tile[x, y].type = type; Main.tile[x, y + 1].active(true); Main.tile[x, y + 1].frameY = (short) ((int) num2 + 18); Main.tile[x, y + 1].frameX = num1; Main.tile[x, y + 1].type = type; } public static void Check1x2Top(int x, int j, ushort type) { if (WorldGen.destroyObject) return; int index = j; bool flag = true; int num1 = (int) Main.tile[x, index].frameY / 18; int num2 = 0; while (num1 >= 2) { num1 -= 2; ++num2; } int j1 = index - num1; int num3 = num2 * 36; 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] == null) Main.tile[x, j1] = new Tile(); if ((int) Main.tile[x, j1].frameY == num3 && (int) Main.tile[x, j1 + 1].frameY == num3 + 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].nactive() || !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); switch (type) { case 42: int Type = 0; switch (num2) { case 0: Type = 136; break; case 7: Type = 1431; break; case 8: Type = 1808; break; case 9: Type = 1859; break; default: if (num2 < 10) { Type = 1389 + num2; break; } switch (num2) { case 10: Type = 2032; break; case 11: Type = 2033; break; case 12: Type = 2034; break; case 13: Type = 2035; break; case 14: Type = 2036; break; case 15: Type = 2037; break; case 16: Type = 2038; break; case 17: Type = 2039; break; case 18: Type = 2040; break; case 19: Type = 2041; break; case 20: Type = 2042; break; case 21: Type = 2043; break; default: if (num2 >= 22 && num2 <= 25) { Type = 2145 + num2 - 22; break; } switch (num2) { case 26: Type = 2226; break; case 27: Type = 2530; break; case 28: Type = 2546; break; case 29: Type = 2564; break; case 30: Type = 2579; break; case 31: Type = 2641; break; case 32: Type = 2642; break; case 33: Type = 2820; break; case 34: Type = 3138; break; case 35: Type = 3140; break; case 36: Type = 3139; break; case 37: Type = 3891; break; } break; } break; } Item.NewItem(x * 16, j1 * 16, 32, 32, Type); break; case 270: Item.NewItem(x * 16, j1 * 16, 32, 32, 1993); break; case 271: Item.NewItem(x * 16, j1 * 16, 32, 32, 2005); break; } WorldGen.destroyObject = false; } public static bool PlaceSmallPile(int i, int j, int X, int Y, ushort type = 185) { int i1 = i; int index = j; short num1 = (short) (Y * 18); short num2 = (short) (X * 18); if (Main.tile[i1, index] == null) Main.tile[i1, index] = new Tile(); if (Main.tile[i1 + 1, index] == null) Main.tile[i1 + 1, index] = new Tile(); if (Main.tile[i1, index + 1] == null) Main.tile[i1, index + 1] = new Tile(); if (Main.tile[i1 + 1, index + 1] == null) Main.tile[i1 + 1, index + 1] = new Tile(); if (Main.tile[i1, index].lava()) return false; if (Y == 1) { short num3 = (short) (X * 36); bool flag = false; if (WorldGen.SolidTile2(i1, index + 1) && WorldGen.SolidTile2(i1 + 1, index + 1) && !Main.tile[i1, index].active() && !Main.tile[i1 + 1, index].active()) flag = true; if (flag) { Main.tile[i1, index].active(true); Main.tile[i1, index].frameY = num1; Main.tile[i1, index].frameX = num3; Main.tile[i1, index].type = type; Main.tile[i1 + 1, index].active(true); Main.tile[i1 + 1, index].frameY = num1; Main.tile[i1 + 1, index].frameX = (short) ((int) num3 + 18); Main.tile[i1 + 1, index].type = type; return true; } } else if (WorldGen.SolidTile2(i1, index + 1) && !Main.tile[i1, index].active()) { Main.tile[i1, index].active(true); Main.tile[i1, index].frameY = num1; Main.tile[i1, index].frameX = num2; Main.tile[i1, index].type = type; return true; } return false; } public static void CheckPile(int i, int y) { int i1 = i; 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].frameY == (short) 18) { WorldGen.Check2x1(i1, y, Main.tile[i1, y].type); } else { if (WorldGen.SolidTile(i1, y + 1)) return; WorldGen.KillTile(i1, y); } } public static void Check2x1(int i, int y, ushort type) { if (WorldGen.destroyObject) return; int index = i; bool flag = true; if (Main.tile[index, y] == null) Main.tile[index, y] = new Tile(); int num1 = (int) Main.tile[index, y].frameX / 18; int num2 = num1 >> 1; int num3 = num1 % 2; int i1 = index - num3; 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 ((int) Main.tile[i1 + 1, y].frameX == (int) Main.tile[i1, y].frameX + 18 && (int) Main.tile[i1, y].type == (int) type && (int) Main.tile[i1 + 1, y].type == (int) type) flag = false; if (type == (ushort) 29 || type == (ushort) 103 || type == (ushort) 462) { 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 (!WorldGen.SolidTileAllowBottomSlope(i1, y + 1)) flag = true; if (!WorldGen.SolidTileAllowBottomSlope(i1 + 1, y + 1)) flag = true; } if (type == (ushort) 185 && Main.tile[i1, y].frameX >= (short) 1368 && Main.tile[i1, y].frameX <= (short) 1458 && Main.tile[i1, y + 1].type != (ushort) 2 && Main.tile[i1 + 1, y + 1].type != (ushort) 2) { Main.tile[i1, y].frameX -= (short) 1368; Main.tile[i1 + 1, y].frameX -= (short) 1368; } if (!flag) return; int frameX = (int) Main.tile[i1, y].frameX; if (!Main.tile[i1, y].active()) frameX = (int) Main.tile[i1 + 1, y].frameX; 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 == (ushort) 16) { if (num2 == 1) Item.NewItem(i1 * 16, y * 16, 32, 32, 716); else Item.NewItem(i1 * 16, y * 16, 32, 32, 35); } if (type == (ushort) 18) { int Type = 36; if (num2 >= 1 && num2 <= 3) Type = 634 + num2; else if (num2 >= 4 && num2 <= 8) { Type = 807 + num2; } else { switch (num2) { case 9: Type = 916; break; case 10: Type = 1145; break; case 11: Type = 1398; break; case 12: Type = 1401; break; case 13: Type = 1404; break; case 14: Type = 1461; break; case 15: Type = 1511; break; case 16: Type = 1795; break; case 17: Type = 1817; break; case 18: Type = 2229; break; case 19: Type = 2251; break; case 20: Type = 2252; break; case 21: Type = 2253; break; case 22: Type = 2534; break; case 23: Type = 673; break; case 24: Type = 2631; break; case 25: Type = 2632; break; case 26: Type = 2633; break; case 27: Type = 2826; break; case 28: Type = 3156; break; case 29: Type = 3158; break; case 30: Type = 3157; break; case 31: Type = 3909; break; case 32: Type = 3910; break; } } Item.NewItem(i1 * 16, y * 16, 32, 32, Type); } if (type == (ushort) 185) { if (frameX >= 576 && frameX <= 610) { Item.NewItem(i1 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(10, 100)); Item.NewItem(i1 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100)); if (WorldGen.genRand.Next(3) != 0) Item.NewItem(i1 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(10, 100)); if (WorldGen.genRand.Next(3) != 0) Item.NewItem(i1 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100)); if (WorldGen.genRand.Next(2) == 0) Item.NewItem(i1 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(10, 100)); if (WorldGen.genRand.Next(2) == 0) Item.NewItem(i1 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100)); if (WorldGen.genRand.Next(3) == 0) Item.NewItem(i1 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(10, 100)); if (WorldGen.genRand.Next(3) == 0) Item.NewItem(i1 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100)); if (WorldGen.genRand.Next(4) == 0) Item.NewItem(i1 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(10, 100)); if (WorldGen.genRand.Next(4) == 0) Item.NewItem(i1 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100)); if (WorldGen.genRand.Next(5) == 0) Item.NewItem(i1 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(10, 100)); if (WorldGen.genRand.Next(5) == 0) Item.NewItem(i1 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100)); } if (frameX >= 612 && frameX <= 646) { Item.NewItem(i1 * 16, y * 16, 32, 32, 72, WorldGen.genRand.Next(10, 100)); if (WorldGen.genRand.Next(2) == 0) Item.NewItem(i1 * 16, y * 16, 32, 32, 72, WorldGen.genRand.Next(20, 100)); if (WorldGen.genRand.Next(3) == 0) Item.NewItem(i1 * 16, y * 16, 32, 32, 72, WorldGen.genRand.Next(30, 100)); } if (frameX >= 648 && frameX <= 682) { Item.NewItem(i1 * 16, y * 16, 32, 32, 73, WorldGen.genRand.Next(1, 6)); if (WorldGen.genRand.Next(2) == 0) Item.NewItem(i1 * 16, y * 16, 32, 32, 73, WorldGen.genRand.Next(2, 6)); if (WorldGen.genRand.Next(3) == 0) Item.NewItem(i1 * 16, y * 16, 32, 32, 73, WorldGen.genRand.Next(3, 6)); } if (frameX >= 684 && frameX <= 718) Item.NewItem(i1 * 16, y * 16, 32, 32, 181, WorldGen.genRand.Next(1, 4)); if (frameX >= 720 && frameX <= 754) Item.NewItem(i1 * 16, y * 16, 32, 32, 180, WorldGen.genRand.Next(1, 4)); if (frameX >= 756 && frameX <= 790) Item.NewItem(i1 * 16, y * 16, 32, 32, 177, WorldGen.genRand.Next(1, 4)); if (frameX >= 792 && frameX <= 826) Item.NewItem(i1 * 16, y * 16, 32, 32, 179, WorldGen.genRand.Next(1, 4)); if (frameX >= 828 && frameX <= 862) Item.NewItem(i1 * 16, y * 16, 32, 32, 178, WorldGen.genRand.Next(1, 4)); if (frameX >= 864 && frameX <= 898) Item.NewItem(i1 * 16, y * 16, 32, 32, 182, WorldGen.genRand.Next(1, 4)); } if (type == (ushort) 462) Item.NewItem(i1 * 16, y * 16, 32, 32, 3795); if (type == (ushort) 29) { Item.NewItem(i1 * 16, y * 16, 32, 32, 87); Main.PlaySound(13, i * 16, y * 16); } if (type == (ushort) 103) { int Type = 356; if (num2 == 1) Type = 2235; if (num2 == 2) Type = 2242; if (num2 == 3) Type = 2243; Item.NewItem(i1 * 16, y * 16, 32, 32, Type); Main.PlaySound(13, i * 16, y * 16); } else if (type == (ushort) 134) { if (num2 == 1) Item.NewItem(i1 * 16, y * 16, 32, 32, 1220); else 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, ushort type, int style = 0) { 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 != (ushort) 29 && type != (ushort) 103 && WorldGen.SolidTile2(x, y + 1) && WorldGen.SolidTile2(x + 1, y + 1) && !Main.tile[x, y].active() && !Main.tile[x + 1, y].active()) flag = true; else if ((type == (ushort) 29 || type == (ushort) 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) (36 * style); Main.tile[x, y].type = type; Main.tile[x + 1, y].active(true); Main.tile[x + 1, y].frameY = (short) 0; Main.tile[x + 1, y].frameX = (short) (36 * style + 18); Main.tile[x + 1, y].type = type; } public static void Check4x2(int i, int j, int type) { if (WorldGen.destroyObject) return; bool flag = false; int num1 = i + (int) Main.tile[i, j].frameX / 18 * -1; if ((type == 79 || type == 90) && Main.tile[i, j].frameX >= (short) 72) num1 += 4; int num2 = (int) Main.tile[i, j].frameY / 18; int num3 = 0; while (num2 > 1) { num2 -= 2; ++num3; } int num4 = j - num2; for (int i1 = num1; i1 < num1 + 4; ++i1) { for (int index = num4; index < num4 + 2; ++index) { int num5 = (i1 - num1) * 18; if ((type == 79 || type == 90) && Main.tile[i, j].frameX >= (short) 72) num5 = (i1 - num1 + 4) * 18; if (Main.tile[i1, index] == null) Main.tile[i1, index] = new Tile(); if (!Main.tile[i1, index].active() || (int) Main.tile[i1, index].type != type || (int) Main.tile[i1, index].frameX != num5 || (int) Main.tile[i1, index].frameY != (index - num4) * 18 + num3 * 36) flag = true; } if (Main.tile[i1, num4 + 2] == null) Main.tile[i1, num4 + 2] = new Tile(); if (!WorldGen.SolidTileAllowBottomSlope(i1, num4 + 2) && (!Main.tile[i1, num4 + 2].active() || !TileID.Sets.Platforms[(int) Main.tile[i1, num4 + 2].type])) flag = true; } if (!flag) return; WorldGen.destroyObject = true; for (int i2 = num1; i2 < num1 + 4; ++i2) { for (int j1 = num4; j1 < num4 + 3; ++j1) { if ((int) Main.tile[i2, j1].type == type && Main.tile[i2, j1].active()) WorldGen.KillTile(i2, j1); } } if (type == 79) { int Type = num3 != 0 ? (num3 != 4 ? (num3 < 9 || num3 > 12 ? (num3 < 5 || num3 > 8 ? (num3 < 13 || num3 > 18 ? (num3 != 19 ? (num3 != 20 ? (num3 != 21 ? (num3 != 22 ? (num3 != 23 ? (num3 != 24 ? (num3 != 25 ? (num3 != 26 ? (num3 != 27 ? (num3 != 28 ? (num3 != 29 ? (num3 != 30 ? (num3 != 31 ? num3 + 643 : 3897) : 3163) : 3164) : 3162) : 2811) : 2669) : 2568) : 2553) : 2538) : 2520) : 2231) : 2140) : 2139) : 2066 + num3 - 13) : 1465 + num3) : 1710 + num3) : 920) : 224; Item.NewItem(i * 16, j * 16, 32, 32, Type); } if (type == 90) { int Type = 0; if (num3 == 0) Type = 336; else if (num3 >= 1 && num3 <= 10) Type = 2072 + num3 - 1; else if (num3 >= 11 && num3 <= 15) { Type = 2124 + num3 - 11; } else { switch (num3) { case 16: Type = 2232; break; case 17: Type = 2519; break; case 18: Type = 2537; break; case 19: Type = 2552; break; case 20: Type = 2567; break; case 21: Type = 2658; break; case 22: Type = 2659; break; case 23: Type = 2660; break; case 24: Type = 2661; break; case 25: Type = 2662; break; case 26: Type = 2663; break; case 27: Type = 2810; break; case 28: Type = 3159; break; case 29: Type = 3161; break; case 30: Type = 3160; break; case 31: Type = 3895; break; } } Item.NewItem(i * 16, j * 16, 32, 32, Type); } WorldGen.destroyObject = false; for (int i3 = num1 - 1; i3 < num1 + 4; ++i3) { for (int j2 = num4 - 1; j2 < num4 + 4; ++j2) WorldGen.TileFrame(i3, j2); } } public static void PlaceJunglePlant(int X2, int Y2, ushort type, int styleX, int styleY) { if (styleY > 0 || type == (ushort) 236 || type == (ushort) 238) { int index1 = Y2; int index2 = X2; if (type == (ushort) 95 || type == (ushort) 126) ++index1; if (X2 < 5 || X2 > Main.maxTilesX - 5 || index1 < 5 || index1 > Main.maxTilesY - 5) return; bool flag = true; for (int i = index2 - 1; i < index2 + 1; ++i) { for (int index3 = index1 - 1; index3 < index1 + 1; ++index3) { if (Main.tile[i, index3] == null) Main.tile[i, index3] = new Tile(); if (Main.tile[i, index3].active() && Main.tile[i, index3].type != (ushort) 61 && Main.tile[i, index3].type != (ushort) 62 && Main.tile[i, index3].type != (ushort) 69 && Main.tile[i, index3].type != (ushort) 74 && (type != (ushort) 236 || Main.tile[i, index3].type != (ushort) 233) && (type != (ushort) 238 || Main.tile[i, index3].type != (ushort) 233) && (Main.tile[i, index3].type != (ushort) 185 || Main.tile[i, index3].frameY != (short) 0)) flag = false; if (type == (ushort) 98 && Main.tile[i, index3].liquid > (byte) 0) flag = false; } if (Main.tile[i, index1 + 1] == null) Main.tile[i, index1 + 1] = new Tile(); if (!WorldGen.SolidTile(i, index1 + 1) || Main.tile[i, index1 + 1].type != (ushort) 60) flag = false; } if (!flag) return; short num1 = 36; if (type == (ushort) 236 || type == (ushort) 238) num1 = (short) 0; short num2 = (short) (36 * styleX); Main.tile[index2 - 1, index1 - 1].active(true); Main.tile[index2 - 1, index1 - 1].frameY = num1; Main.tile[index2 - 1, index1 - 1].frameX = num2; Main.tile[index2 - 1, index1 - 1].type = type; Main.tile[index2, index1 - 1].active(true); Main.tile[index2, index1 - 1].frameY = num1; Main.tile[index2, index1 - 1].frameX = (short) (18 + (int) num2); Main.tile[index2, index1 - 1].type = type; Main.tile[index2 - 1, index1].active(true); Main.tile[index2 - 1, index1].frameY = (short) ((int) num1 + 18); Main.tile[index2 - 1, index1].frameX = num2; Main.tile[index2 - 1, index1].type = type; Main.tile[index2, index1].active(true); Main.tile[index2, index1].frameY = (short) ((int) num1 + 18); Main.tile[index2, index1].frameX = (short) (18 + (int) num2); Main.tile[index2, index1].type = type; } else { int num3 = styleX; int index4 = X2; int index5 = Y2; if (index4 < 5 || index4 > Main.maxTilesX - 5 || index5 < 5 || index5 > Main.maxTilesY - 5) return; bool flag = true; for (int i = index4 - 1; i < index4 + 2; ++i) { for (int index6 = index5 - 1; index6 < index5 + 1; ++index6) { if (Main.tile[i, index6] == null) Main.tile[i, index6] = new Tile(); if (Main.tile[i, index6].active() && Main.tile[i, index6].type != (ushort) 61 && Main.tile[i, index6].type != (ushort) 62 && Main.tile[i, index6].type != (ushort) 69 && Main.tile[i, index6].type != (ushort) 74 && (Main.tile[i, index6].type != (ushort) 185 || Main.tile[i, index6].frameY != (short) 0)) flag = false; } if (Main.tile[i, index5 + 1] == null) Main.tile[i, index5 + 1] = new Tile(); if (!WorldGen.SolidTile(i, index5 + 1) || Main.tile[i, index5 + 1].type != (ushort) 60) flag = false; } if (!flag) return; short num4 = (short) (54 * num3); Main.tile[index4 - 1, index5 - 1].active(true); Main.tile[index4 - 1, index5 - 1].frameY = (short) 0; Main.tile[index4 - 1, index5 - 1].frameX = num4; Main.tile[index4 - 1, index5 - 1].type = type; Main.tile[index4, index5 - 1].active(true); Main.tile[index4, index5 - 1].frameY = (short) 0; Main.tile[index4, index5 - 1].frameX = (short) ((int) num4 + 18); Main.tile[index4, index5 - 1].type = type; Main.tile[index4 + 1, index5 - 1].active(true); Main.tile[index4 + 1, index5 - 1].frameY = (short) 0; Main.tile[index4 + 1, index5 - 1].frameX = (short) ((int) num4 + 36); Main.tile[index4 + 1, index5 - 1].type = type; Main.tile[index4 - 1, index5].active(true); Main.tile[index4 - 1, index5].frameY = (short) 18; Main.tile[index4 - 1, index5].frameX = num4; Main.tile[index4 - 1, index5].type = type; Main.tile[index4, index5].active(true); Main.tile[index4, index5].frameY = (short) 18; Main.tile[index4, index5].frameX = (short) ((int) num4 + 18); Main.tile[index4, index5].type = type; Main.tile[index4 + 1, index5].active(true); Main.tile[index4 + 1, index5].frameY = (short) 18; Main.tile[index4 + 1, index5].frameX = (short) ((int) num4 + 36); Main.tile[index4 + 1, index5].type = type; } } public static void CheckJunglePlant(int i, int j, int type) { if (WorldGen.destroyObject) return; if (Main.tile[i, j].frameY >= (short) 36 || Main.tile[i, j].type == (ushort) 236 || Main.tile[i, j].type == (ushort) 238) { bool flag = false; int num1 = (int) Main.tile[i, j].frameX / 18; int num2 = 0; while (num1 > 1) { num1 -= 2; ++num2; } int num3 = i - num1; int num4 = 36; if (type == 236 || type == 238) num4 = 0; int num5 = (int) Main.tile[i, j].frameY / 18; while (num5 > 1) num5 -= 2; int num6 = j - num5; int num7 = num2 * 36; for (int i1 = num3; i1 < num3 + 2; ++i1) { for (int index = num6; index < num6 + 2; ++index) { if (Main.tile[i1, index] == null) Main.tile[i1, index] = new Tile(); if (!Main.tile[i1, index].active() || (int) Main.tile[i1, index].type != type || (int) Main.tile[i1, index].frameX != (i1 - num3) * 18 + num7 || (int) Main.tile[i1, index].frameY != (index - num6) * 18 + num4) flag = true; } if (Main.tile[i1, num6 + 2] == null) Main.tile[i1, num6 + 2] = new Tile(); if (!WorldGen.SolidTile(i1, num6 + 2) || Main.tile[i1, num6 + 2].type != (ushort) 60) flag = true; } if (!flag) return; if (type == 238) { float num8 = (float) (i * 16); float num9 = (float) (j * 16); float num10 = -1f; int plr = 0; for (int index = 0; index < (int) byte.MaxValue; ++index) { float num11 = Math.Abs(Main.player[index].position.X - num8) + Math.Abs(Main.player[index].position.Y - num9); if ((double) num11 < (double) num10 || (double) num10 == -1.0) { plr = index; num10 = num11; } } if ((double) num10 / 16.0 < 50.0) NPC.SpawnOnPlayer(plr, 262); } if (type == 236) Item.NewItem(i * 16, j * 16, 32, 32, 1291); int frameX = (int) Main.tile[i, j].frameX; WorldGen.destroyObject = true; for (int i2 = num3; i2 < num3 + 2; ++i2) { for (int j1 = num6; j1 < num6 + 2; ++j1) { if (Main.tile[i2, j1] == null) Main.tile[i2, j1] = new Tile(); if ((int) Main.tile[i2, j1].type == type && Main.tile[i2, j1].active()) WorldGen.KillTile(i2, j1); } } } else { bool flag = false; int num12 = j + (int) Main.tile[i, j].frameY / 18 * -1; int num13 = (int) Main.tile[i, j].frameX / 18; int num14 = 0; while (num13 > 2) { num13 -= 3; ++num14; } int num15 = i - num13; int num16 = num14 * 54; for (int i3 = num15; i3 < num15 + 3; ++i3) { for (int index = num12; index < num12 + 2; ++index) { if (Main.tile[i3, index] == null) Main.tile[i3, index] = new Tile(); if (!Main.tile[i3, index].active() || (int) Main.tile[i3, index].type != type || (int) Main.tile[i3, index].frameX != (i3 - num15) * 18 + num16 || (int) Main.tile[i3, index].frameY != (index - num12) * 18) flag = true; } if (Main.tile[i3, num12 + 2] == null) Main.tile[i3, num12 + 2] = new Tile(); if (!WorldGen.SolidTile(i3, num12 + 2) || Main.tile[i3, num12 + 2].type != (ushort) 60) flag = true; } if (!flag) return; int frameX = (int) Main.tile[i, j].frameX; WorldGen.destroyObject = true; for (int i4 = num15; i4 < num15 + 3; ++i4) { for (int j2 = num12; j2 < num12 + 3; ++j2) { if (Main.tile[i4, j2] == null) Main.tile[i4, j2] = new Tile(); if ((int) Main.tile[i4, j2].type == type && Main.tile[i4, j2].active()) WorldGen.KillTile(i4, j2); } } } } public static void CheckSuper(int x, int y, int type) { if (WorldGen.destroyObject) return; Tile tile = Main.tile[x, y]; int style = 0; if (type == 376) style = (int) tile.frameX / 36; if (type == 443) style = (int) tile.frameX / 36; bool flag1 = type == 376; bool flag2 = type == 443; bool flag3 = type == 444; TileObjectData tileData = TileObjectData.GetTileData(type, style); int num1 = tileData.StyleHorizontal ? 1 : 0; int width = tileData.Width; int height = tileData.Height; int num2 = x; int num3 = y; int num4 = num2 - (int) tile.frameX / 18 % width; int j = num3 - (int) tile.frameY / 18 % height; int num5 = 0; int num6 = 0; if (num1 != 0) num5 = (int) tile.frameX / tileData.CoordinateFullWidth; else num6 = (int) tile.frameY / tileData.CoordinateFullHeight; bool flag4 = false; bool flag5 = false; for (int index1 = 0; index1 < width; ++index1) { for (int index2 = 0; index2 < height; ++index2) { Tile tileSafely = Framing.GetTileSafely(num4 + index1, j + index2); if (!tileSafely.active() || (int) tileSafely.type != type || (int) tileSafely.frameX != num5 * tileData.CoordinateFullWidth + index1 * (tileData.CoordinateWidth + 2) || (int) tileSafely.frameY != num6 * tileData.CoordinateFullHeight + index2 * (tileData.CoordinateHeights[0] + 2)) flag4 = true; } } if (flag1) { for (int index = 0; index < width; ++index) { Tile tileSafely = Framing.GetTileSafely(num4 + index, j + height); if (!tileSafely.active() || !Main.tileSolid[(int) tileSafely.type] && !Main.tileTable[(int) tileSafely.type]) flag4 = true; if (tileSafely.halfBrick()) flag4 = true; } } if (flag2) { bool flag6 = true; bool flag7 = true; for (int index = 0; index < width; ++index) { if (!WorldGen.AnchorValid(Framing.GetTileSafely(num4 + index, j + height), AnchorType.SolidTile | AnchorType.SolidWithTop | AnchorType.SolidSide)) flag7 = false; if (!WorldGen.AnchorValid(Framing.GetTileSafely(num4 + index, j - 1), AnchorType.SolidBottom)) flag6 = false; } if (!flag6 && !flag7) flag4 = true; if (!flag4) { int num7 = 0; if (Main.netMode != 1) { if (flag7) { for (int index = 0; index < width; ++index) Framing.GetTileSafely(num4 + index, j).frameX = (short) (index * 18 + style / 2 * 36 + num7 * 36); } else { for (int index = 0; index < width; ++index) Framing.GetTileSafely(num4 + index, j).frameX = (short) (index * 18 + (style - 2) / 2 * 36 + 72 + num7 * 36); } } } } if (flag3) { bool flag8 = true; for (int index = 0; index < width; ++index) { if (!WorldGen.AnchorValid(Framing.GetTileSafely(num4 + index, j - 1), AnchorType.SolidTile)) flag8 = false; } if (!flag8) flag4 = true; for (int index3 = 0; index3 < width; ++index3) { for (int index4 = 0; index4 < height; ++index4) { if (Framing.GetTileSafely(num4 + index3, j + index4).liquid > (byte) 0) { flag4 = true; flag5 = true; } } } } if (!flag4) return; WorldGen.destroyObject = true; for (int index5 = 0; index5 < width; ++index5) { for (int index6 = 0; index6 < height; ++index6) { if ((int) Main.tile[num4 + index5, j + index6].type == type && Main.tile[num4 + index5, j + index6].active()) WorldGen.KillTile(num4 + index5, j + index6); } } int Type = 0; if (type == 376) Type = style <= 2 ? 2334 + style : 3203 + style - 3; if (type == 443) Type = 3722; if (type == 444 && Main.netMode != 1 && !flag5) Projectile.NewProjectile((float) (num4 * 16 + 16), (float) (j * 16 + 16), 0.0f, 0.0f, 655, 0, 0.0f, Main.myPlayer); if (Type != 0) Item.NewItem(num4 * 16, j * 16, tileData.CoordinateFullWidth, tileData.CoordinateFullHeight, Type); WorldGen.destroyObject = false; for (int index7 = -1; index7 < width + 1; ++index7) { for (int index8 = -1; index8 < height + 1; ++index8) WorldGen.TileFrame(num4 + index7, j + index8); } } public static void Check2x2(int i, int j, int type) { if (WorldGen.destroyObject) return; bool flag1 = false; int num1 = 0; int num2 = (int) Main.tile[i, j].frameX / 18 * -1; if (num2 < -1) { num2 += 2; num1 = 36; } int i1 = num2 + i; int num3 = type == 172 ? 38 : 36; int frameY = (int) Main.tile[i, j].frameY; int num4 = 0; while (frameY >= num3) { frameY -= num3; ++num4; } int index1 = j - frameY / 18; for (int i2 = i1; i2 < i1 + 2; ++i2) { for (int j1 = index1; j1 < index1 + 2; ++j1) { Tile tileSafely = Framing.GetTileSafely(i2, j1); if (!tileSafely.active() || (int) tileSafely.type != type || (int) tileSafely.frameX != (i2 - i1) * 18 + num1 || (int) tileSafely.frameY != (j1 - index1) * 18 + num4 * num3) flag1 = true; } switch (type) { case 95: case 126: Framing.GetTileSafely(i2, index1 - 1); if (!Main.tile[i2, index1 - 1].active() || !Main.tileSolid[(int) Main.tile[i2, index1 - 1].type] || Main.tileSolidTop[(int) Main.tile[i2, index1 - 1].type]) { flag1 = true; continue; } continue; case 132: case 138: continue; default: Tile tileSafely1 = Framing.GetTileSafely(i2, index1 + 2); if (!tileSafely1.active() || !Main.tileSolid[(int) tileSafely1.type] && !Main.tileTable[(int) tileSafely1.type]) flag1 = true; if (tileSafely1.halfBrick()) { flag1 = true; continue; } continue; } } switch (type) { case 132: flag1 = false; index1 = (int) Main.tile[i, j].frameY / 18 * -1 + j; int num5 = 0; int num6 = (int) Main.tile[i, j].frameX / 18 * -1; while (num6 < -1) { num6 += 2; num5 += 36; } i1 = num6 + i; for (int index2 = i1; index2 < i1 + 2; ++index2) { for (int index3 = index1; index3 < index1 + 2; ++index3) { if (Main.tile[index2, index3] == null) Main.tile[index2, index3] = new Tile(); if (!Main.tile[index2, index3].active() || (int) Main.tile[index2, index3].type != type || (int) Main.tile[index2, index3].frameX != (index2 - i1) * 18 + num5 || (int) Main.tile[index2, index3].frameY != (index3 - index1) * 18) flag1 = true; } } if (Main.tile[i1, index1 + 2] == null) Main.tile[i1, index1 + 2] = new Tile(); if (Main.tile[i1 + 1, index1 + 2] == null) Main.tile[i1 + 1, index1 + 2] = new Tile(); bool flag2 = false; ushort type1 = Main.tile[i1, index1 + 2].type; ushort type2 = Main.tile[i1 + 1, index1 + 2].type; if (!Main.tile[i1, index1 + 2].active() || !Main.tileSolid[(int) type1] && !Main.tileSolidTop[(int) type1] || Main.tile[i1, index1 + 2].halfBrick() || Main.tile[i1, index1 + 2].slope() != (byte) 0 && !Main.tile[i1, index1 + 2].bottomSlope()) flag2 = true; if (!Main.tile[i1 + 1, index1 + 2].active() || !Main.tileSolid[(int) type2] && !Main.tileSolidTop[(int) type2] || Main.tile[i1 + 1, index1 + 2].halfBrick() || Main.tile[i1 + 1, index1 + 2].slope() != (byte) 0 && !Main.tile[i1 + 1, index1 + 2].bottomSlope()) flag2 = true; if (flag2) { if (Main.tile[i1, index1].wall < (byte) 1 || Main.tile[i1 + 1, index1].wall < (byte) 1 || Main.tile[i1, index1 + 1].wall < (byte) 1 || Main.tile[i1 + 1, index1 + 1].wall < (byte) 1) { flag1 = true; break; } if (num5 < 72) { for (int index4 = i1; index4 < i1 + 2; ++index4) { for (int index5 = index1; index5 < index1 + 2; ++index5) Main.tile[index4, index5].frameX += (short) 72; } break; } break; } if (num5 >= 72) { for (int index6 = i1; index6 < i1 + 2; ++index6) { for (int index7 = index1; index7 < index1 + 2; ++index7) Main.tile[index6, index7].frameX -= (short) 72; } break; } break; case 138: ushort type3 = Main.tile[i1, index1 - 1].type; ushort type4 = Main.tile[i1 + 1, index1 - 1].type; if ((TileID.Sets.BasicChest[(int) type3] || TileID.Sets.BasicChest[(int) type4] || type3 == (ushort) 88 || type4 == (ushort) 88 || TileID.Sets.BasicChestFake[(int) type3] ? 1 : (TileID.Sets.BasicChestFake[(int) type4] ? 1 : 0)) == 0 && !WorldGen.SolidTileAllowBottomSlope(i1, index1 + 2) && !WorldGen.SolidTileAllowBottomSlope(i1 + 1, index1 + 2)) { flag1 = true; break; } break; } if (!flag1) return; WorldGen.destroyObject = true; for (int i3 = i1; i3 < i1 + 2; ++i3) { for (int j2 = index1; j2 < index1 + 2; ++j2) { if ((int) Main.tile[i3, j2].type == type && Main.tile[i3, j2].active()) WorldGen.KillTile(i3, j2); } } int Type = 0; if (type == 360) Type = 3072; if (type >= 288 && type <= 295) Type = 2178 + type - 288; if (type >= 316 && type <= 318) Type = 2439 + type - 316; if (type == 85) Type = 321; if (type == 94) Type = 352; if (type == 95) Type = 344; if (type == 96) Type = 345; if (type == 97) Type = 346; if (type == 98) Type = 347; if (type == 99) Type = 348; if (type == 335) Type = 2700; if (type == 411) Type = 3545; if (type == 100) { if (num4 == 0) Type = 349; else if (num4 >= 1 && num4 <= 12) Type = 2092 + num4 - 1; else if (num4 >= 13 && num4 <= 16) { Type = 2149 + num4 - 13; } else { switch (num4) { case 17: Type = 2227; break; case 18: Type = 2522; break; case 19: Type = 2541; break; case 20: Type = 2555; break; case 21: Type = 2570; break; case 22: Type = 2664; break; case 23: Type = 2665; break; case 24: Type = 2666; break; case 25: Type = 2667; break; case 26: Type = 2668; break; case 27: Type = 2825; break; case 28: Type = 3168; break; case 29: Type = 3170; break; case 30: Type = 3169; break; case 31: Type = 3893; break; } } } if (type == 173) Type = 714; if (type == 125) Type = 487; if (type == 287) Type = 2177; if (type == 126) Type = 488; if (type == 132) Type = 513; if (type == 142) Type = 581; if (type == 143) Type = 582; if (type == 282) Type = 250; if (type == 319) Type = 2490; if (type == 172) { Type = 2827 + num4; switch (num4) { case 29: Type = 3147; break; case 30: Type = 3149; break; case 31: Type = 3148; break; case 32: Type = 3896; break; } } if (Type != 0) Item.NewItem(i * 16, j * 16, 32, 32, Type); if (type == 138 && !WorldGen.gen && Main.netMode != 1) Projectile.NewProjectile((float) (i1 * 16) + 15.5f, (float) (index1 * 16 + 16), 0.0f, 0.0f, 99, 70, 10f, Main.myPlayer); WorldGen.destroyObject = false; for (int i4 = i1 - 1; i4 < i1 + 3; ++i4) { for (int j3 = index1 - 1; j3 < index1 + 3; ++j3) WorldGen.TileFrame(i4, j3); } } public static bool CheckBoulderChest(int i, int j) { int num1 = (int) Main.tile[i, j].frameX / 18 * -1; if (num1 < -1) num1 += 2; int index = num1 + i; int frameY = (int) Main.tile[i, j].frameY; while (frameY >= 36) frameY -= 36; int num2 = j - frameY / 18; return TileID.Sets.BasicChest[(int) Main.tile[index, num2 - 1].type] || TileID.Sets.BasicChest[(int) Main.tile[index + 1, num2 - 1].type] || TileID.Sets.BasicChestFake[(int) Main.tile[index, num2 - 1].type] || TileID.Sets.BasicChestFake[(int) Main.tile[index + 1, num2 - 1].type] || Main.tile[index, num2 - 1].type == (ushort) 88 || Main.tile[index + 1, num2 - 1].type == (ushort) 88; } public static void OreRunner(int i, int j, double strength, int steps, ushort 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 == (ushort) 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 == (ushort) 0 || Main.tile[index1, index2].type == (ushort) 1 || Main.tile[index1, index2].type == (ushort) 23 || Main.tile[index1, index2].type == (ushort) 25 || Main.tile[index1, index2].type == (ushort) 40 || Main.tile[index1, index2].type == (ushort) 53 || Main.tile[index1, index2].type == (ushort) 57 || Main.tile[index1, index2].type == (ushort) 59 || Main.tile[index1, index2].type == (ushort) 60 || Main.tile[index1, index2].type == (ushort) 70 || Main.tile[index1, index2].type == (ushort) 109 || Main.tile[index1, index2].type == (ushort) 112 || Main.tile[index1, index2].type == (ushort) 116 || Main.tile[index1, index2].type == (ushort) 117 || Main.tile[index1, index2].type == (ushort) 147 || Main.tile[index1, index2].type == (ushort) 161 || Main.tile[index1, index2].type == (ushort) 163 || Main.tile[index1, index2].type == (ushort) 164 || Main.tileMoss[(int) Main.tile[index1, index2].type] || Main.tile[index1, index2].type == (ushort) 199 || Main.tile[index1, index2].type == (ushort) 200 || Main.tile[index1, index2].type == (ushort) 203 || Main.tile[index1, index2].type == (ushort) 234)) { Main.tile[index1, index2].type = 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 num6; switch (num1) { case 0: if (WorldGen.oreTier1 == -1) { WorldGen.oreTier1 = 107; if (WorldGen.genRand.Next(2) == 0) WorldGen.oreTier1 = 221; } int index1 = 12; if (WorldGen.oreTier1 == 221) { index1 += 9; num5 *= 0.9f; } switch (Main.netMode) { case 0: Main.NewText(Lang.misc[index1].Value, (byte) 50, B: (byte) 130); break; case 2: NetMessage.BroadcastChatMessage(NetworkText.FromKey(Lang.misc[index1].Key), new Color(50, (int) byte.MaxValue, 130)); break; } num6 = WorldGen.oreTier1; num5 *= 1.05f; break; case 1: if (WorldGen.oreTier2 == -1) { WorldGen.oreTier2 = 108; if (WorldGen.genRand.Next(2) == 0) WorldGen.oreTier2 = 222; } int index2 = 13; if (WorldGen.oreTier2 == 222) { index2 += 9; num5 *= 0.9f; } switch (Main.netMode) { case 0: Main.NewText(Lang.misc[index2].Value, (byte) 50, B: (byte) 130); break; case 2: NetMessage.BroadcastChatMessage(NetworkText.FromKey(Lang.misc[index2].Key), new Color(50, (int) byte.MaxValue, 130)); break; } num6 = WorldGen.oreTier2; break; default: if (WorldGen.oreTier3 == -1) { WorldGen.oreTier3 = 111; if (WorldGen.genRand.Next(2) == 0) WorldGen.oreTier3 = 223; } int index3 = 14; if (WorldGen.oreTier3 == 223) { index3 += 9; num5 *= 0.9f; } switch (Main.netMode) { case 0: Main.NewText(Lang.misc[index3].Value, (byte) 50, B: (byte) 130); break; case 2: NetMessage.BroadcastChatMessage(NetworkText.FromKey(Lang.misc[index3].Key), new Color(50, (int) byte.MaxValue, 130)); break; } num6 = WorldGen.oreTier3; break; } for (int index4 = 0; (double) index4 < (double) num5; ++index4) { int i1 = WorldGen.genRand.Next(100, Main.maxTilesX - 100); double num7 = Main.worldSurface; if (num6 == 108 || num6 == 222) num7 = Main.rockLayer; if (num6 == 111 || num6 == 223) num7 = (Main.rockLayer + Main.rockLayer + (double) Main.maxTilesY) / 3.0; int j1 = WorldGen.genRand.Next((int) num7, Main.maxTilesY - 150); double strength = (double) WorldGen.genRand.Next(5, 9 + num4); int steps = WorldGen.genRand.Next(5, 9 + num4); int num8 = (int) (ushort) num6; WorldGen.OreRunner(i1, j1, strength, steps, (ushort) num8); } int num9 = WorldGen.genRand.Next(3); int num10 = 0; while (num9 != 2 && num10++ < 1000) { 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 == (ushort) 1) { Main.tile[tileX, tileY].type = num9 != 0 ? (ushort) 117 : (!WorldGen.crimson ? (ushort) 25 : (ushort) 203); if (Main.netMode == 2) { NetMessage.SendTileSquare(-1, tileX, tileY, 1); break; } break; } } if (Main.netMode != 1) { int num11 = Main.rand.Next(2) + 1; for (int index5 = 0; index5 < num11; ++index5) NPC.SpawnOnPlayer((int) Player.FindClosest(new Vector2((float) (i * 16), (float) (j * 16)), 16, 16), 82); } ++WorldGen.altarCount; AchievementsHelper.NotifyProgressionEvent(6); } public static void Check3x1(int i, int j, int type) { if (WorldGen.destroyObject) return; bool flag = false; int num1 = (int) Main.tile[i, j].frameX / 18; int num2 = 0; while (num1 > 2) { num1 -= 3; ++num2; } int num3 = i - num1; int num4 = num2 * 54; for (int i1 = num3; i1 < num3 + 3; ++i1) { int index = j; if (Main.tile[i1, index] == null) Main.tile[i1, index] = new Tile(); if (!Main.tile[i1, index].active() || (int) Main.tile[i1, index].type != type || (int) Main.tile[i1, index].frameX != (i1 - num3) * 18 + num4 || Main.tile[i1, index].frameY != (short) 0) flag = true; if (Main.tile[i1, index - 1].active() && (TileID.Sets.BasicChest[(int) Main.tile[i1, index - 1].type] || TileID.Sets.BasicChestFake[(int) Main.tile[i1, index - 1].type] || Main.tile[i1, index - 1].type == (ushort) 88)) return; if (!WorldGen.SolidTileAllowBottomSlope(i1, index + 1)) flag = true; } if (!flag) return; int frameX = (int) Main.tile[i, j].frameX; WorldGen.destroyObject = true; if (type == 235) Item.NewItem(i * 16, j * 16, 32, 32, 1263); for (int i2 = num3; i2 < num3 + 3; ++i2) { int j1 = j; if (Main.tile[i2, j1] == null) Main.tile[i2, j1] = new Tile(); if ((int) Main.tile[i2, j1].type == type && Main.tile[i2, j1].active()) WorldGen.KillTile(i2, j1); } WorldGen.destroyObject = false; for (int i3 = num3 - 1; i3 < num3 + 4; ++i3) { int j2 = j; WorldGen.TileFrame(i3, j2); } } public static void Check3x2(int i, int j, int type) { if (WorldGen.destroyObject) return; bool flag1 = false; bool flag2 = false; int num1 = j; int num2 = 36; int num3 = (int) Main.tile[i, j].frameY / num2; int num4 = (int) Main.tile[i, j].frameY % num2; int index1 = num1 - num4 / 18; int num5 = (int) Main.tile[i, j].frameX / 18; int num6 = 0; while (num5 > 2) { num5 -= 3; ++num6; } int index2 = i - num5; int num7 = num6 * 54; if (type == 14 && num6 == 25) flag2 = true; int j1 = index1 + 2; if (flag2) --j1; for (int i1 = index2; i1 < index2 + 3; ++i1) { for (int index3 = index1; index3 < j1; ++index3) { if (Main.tile[i1, index3] == null) Main.tile[i1, index3] = new Tile(); if (!Main.tile[i1, index3].active() || (int) Main.tile[i1, index3].type != type || (int) Main.tile[i1, index3].frameX != (i1 - index2) * 18 + num7 || (int) Main.tile[i1, index3].frameY != (index3 - index1) * 18 + num3 * 36) flag1 = true; } if (type == 285 || type == 286 || type == 298 || type == 299 || type == 310 || type == 339 || type >= 361 && type <= 364) { if (!WorldGen.SolidTileAllowBottomSlope(i1, j1) && (!Main.tile[i1, j1].nactive() || !Main.tileSolidTop[(int) Main.tile[i1, j1].type] || Main.tile[i1, j1].frameY != (short) 0) && (!Main.tile[i1, j1].active() || !TileID.Sets.Platforms[(int) Main.tile[i1, j1].type])) flag1 = true; } else if (!WorldGen.SolidTileAllowBottomSlope(i1, j1)) flag1 = true; } if (type == 187 && Main.tile[index2, index1].frameX >= (short) 756 && Main.tile[index2, index1].frameX <= (short) 900 && Main.tile[index2, index1 + 2].type != (ushort) 2 && Main.tile[index2 + 1, index1 + 2].type != (ushort) 2 && Main.tile[index2 + 2, index1 + 2].type != (ushort) 2) { Main.tile[index2, index1].frameX -= (short) 378; Main.tile[index2 + 1, index1].frameX -= (short) 378; Main.tile[index2 + 2, index1].frameX -= (short) 378; Main.tile[index2, index1 + 1].frameX -= (short) 378; Main.tile[index2 + 1, index1 + 1].frameX -= (short) 378; Main.tile[index2 + 2, index1 + 1].frameX -= (short) 378; Main.tile[index2, index1].type = (ushort) 186; Main.tile[index2 + 1, index1].type = (ushort) 186; Main.tile[index2 + 2, index1].type = (ushort) 186; Main.tile[index2, index1 + 1].type = (ushort) 186; Main.tile[index2 + 1, index1 + 1].type = (ushort) 186; Main.tile[index2 + 2, index1 + 1].type = (ushort) 186; } if (!flag1) return; int frameX = (int) Main.tile[i, j].frameX; WorldGen.destroyObject = true; int num8 = index1 + 3; if (flag2) { int num9 = num8 - 1; } for (int i2 = index2; i2 < index2 + 3; ++i2) { for (int j2 = index1; j2 < index1 + 3; ++j2) { if (Main.tile[i2, j2] == null) Main.tile[i2, j2] = new Tile(); if ((int) Main.tile[i2, j2].type == type && Main.tile[i2, j2].active()) WorldGen.KillTile(i2, j2); } } if (type == 14) { int Type = num6 < 1 || num6 > 3 ? (num6 < 15 || num6 > 20 ? (num6 < 4 || num6 > 7 ? (num6 != 8 ? (num6 != 9 ? (num6 != 10 ? (num6 != 11 ? (num6 != 12 ? (num6 != 13 ? (num6 != 14 ? (num6 != 23 ? (num6 != 21 ? (num6 != 22 ? (num6 != 24 ? (num6 != 25 ? (num6 != 26 ? (num6 != 27 ? (num6 != 28 ? (num6 != 29 ? (num6 != 30 ? (num6 != 31 ? (num6 != 32 ? (num6 != 33 ? (num6 != 34 ? 32 : 3154) : 3155) : 3153) : 2824) : 2743) : 2583) : 677) : 2550) : 2532) : 2259) : 2248) : 1816) : 1794) : 1926) : 1510) : 1460) : 1403) : 1400) : 1397) : 1144) : 917) : 823 + num6) : 1698 + num6) : 637 + num6; Item.NewItem(i * 16, j * 16, 32, 32, Type); } if (type == 469) { int Type = 3920; Item.NewItem(i * 16, j * 16, 32, 32, Type); } else if (type == 114) Item.NewItem(i * 16, j * 16, 32, 32, 398); else if (type == 26) { if (!WorldGen.noTileActions && !WorldGen.IsGeneratingHardMode) WorldGen.SmashAltar(i, j); } else if (type == 298) Item.NewItem(i * 16, j * 16, 32, 32, 2190); else if (type == 299) Item.NewItem(i * 16, j * 16, 32, 32, 2191); else if (type >= 361 && type <= 364) Item.NewItem(i * 16, j * 16, 32, 32, 3073 + type - 361); else if (type >= 391 && type <= 394) { Item.NewItem(i * 16, j * 16, 48, 32, 3254 + type - 391); } else { switch (type) { case 17: Item.NewItem(i * 16, j * 16, 32, 32, 33); 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: int Type1 = num6 < 1 || num6 > 3 ? (num6 != 4 ? (num6 < 5 || num6 > 7 ? (num6 < 8 || num6 > 10 ? (num6 < 11 || num6 > 20 ? (num6 != 21 ? (num6 != 22 ? (num6 != 23 ? (num6 != 24 ? (num6 != 25 ? (num6 != 26 ? (num6 != 27 ? (num6 != 28 ? (num6 != 29 ? (num6 != 30 ? (num6 != 31 ? 333 : 3916) : 3915) : 3142) : 3143) : 3141) : 2821) : 2671) : 2580) : 2565) : 2548) : 2531) : 2376 + num6 - 11) : 2254 + num6 - 8) : 2245 + num6 - 5) : 919) : 640 + num6; Item.NewItem(i * 16, j * 16, 32, 32, Type1); break; case 88: int Type2 = num6 < 1 || num6 > 3 ? (num6 != 4 ? (num6 < 5 || num6 > 15 ? (num6 != 16 ? (num6 != 17 ? (num6 != 18 ? (num6 != 19 ? (num6 != 20 ? (num6 != 21 ? (num6 != 22 ? (num6 != 23 ? (num6 != 24 ? (num6 != 25 ? (num6 != 26 ? (num6 != 27 ? (num6 != 28 ? (num6 != 29 ? (num6 != 30 ? (num6 != 31 ? 334 : 3914) : 3913) : 3912) : 3911) : 3133) : 3134) : 3132) : 2816) : 2640) : 2639) : 2638) : 2637) : 2577) : 2562) : 2545) : 2529) : 2386 + num6 - 5) : 918) : 646 + num6; Item.NewItem(i * 16, j * 16, 32, 32, Type2); break; case 89: int Type3 = num6 < 1 || num6 > 20 ? (num6 != 21 ? (num6 != 22 ? (num6 != 23 ? (num6 != 24 ? (num6 != 25 ? (num6 != 26 ? (num6 != 27 ? (num6 != 28 ? (num6 != 29 ? (num6 != 30 ? (num6 != 31 ? (num6 != 32 ? (num6 != 33 ? (num6 != 34 ? 335 : 3919) : 3918) : 3151) : 3152) : 3150) : 2823) : 2636) : 2635) : 2634) : 2582) : 858) : 2539) : 2527) : 2521) : 2397 + num6 - 1; Item.NewItem(i * 16, j * 16, 32, 32, Type3); break; case 133: if (frameX >= 54) { Item.NewItem(i * 16, j * 16, 32, 32, 1221); break; } Item.NewItem(i * 16, j * 16, 32, 32, 524); break; case 186: if (frameX >= 864) { if (frameX <= 954) { Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100)); Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(30, 100)); Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(40, 100)); if (WorldGen.genRand.Next(3) != 0) Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100)); if (WorldGen.genRand.Next(3) != 0) Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(30, 100)); if (WorldGen.genRand.Next(3) != 0) Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(40, 100)); if (WorldGen.genRand.Next(2) == 0) Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100)); if (WorldGen.genRand.Next(2) == 0) Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(30, 100)); if (WorldGen.genRand.Next(2) == 0) Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(40, 100)); if (WorldGen.genRand.Next(3) == 0) Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100)); if (WorldGen.genRand.Next(3) == 0) Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(30, 100)); if (WorldGen.genRand.Next(3) == 0) Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(40, 100)); if (WorldGen.genRand.Next(4) == 0) Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100)); if (WorldGen.genRand.Next(4) == 0) Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(30, 100)); if (WorldGen.genRand.Next(4) == 0) Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(40, 100)); if (WorldGen.genRand.Next(5) == 0) Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100)); if (WorldGen.genRand.Next(5) == 0) Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(30, 100)); if (WorldGen.genRand.Next(5) == 0) { Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(40, 100)); break; } break; } if (frameX <= 1062) { Item.NewItem(i * 16, j * 16, 32, 32, 72, WorldGen.genRand.Next(10, 100)); if (WorldGen.genRand.Next(2) == 0) Item.NewItem(i * 16, j * 16, 32, 32, 72, WorldGen.genRand.Next(20, 100)); if (WorldGen.genRand.Next(3) == 0) Item.NewItem(i * 16, j * 16, 32, 32, 72, WorldGen.genRand.Next(30, 100)); if (WorldGen.genRand.Next(4) == 0) Item.NewItem(i * 16, j * 16, 32, 32, 72, WorldGen.genRand.Next(40, 100)); if (WorldGen.genRand.Next(5) == 0) { Item.NewItem(i * 16, j * 16, 32, 32, 72, WorldGen.genRand.Next(50, 100)); break; } break; } if (frameX <= 1170) { Item.NewItem(i * 16, j * 16, 32, 32, 73, WorldGen.genRand.Next(1, 7)); if (WorldGen.genRand.Next(2) == 0) Item.NewItem(i * 16, j * 16, 32, 32, 73, WorldGen.genRand.Next(2, 7)); if (WorldGen.genRand.Next(3) == 0) Item.NewItem(i * 16, j * 16, 32, 32, 73, WorldGen.genRand.Next(3, 7)); if (WorldGen.genRand.Next(4) == 0) Item.NewItem(i * 16, j * 16, 32, 32, 73, WorldGen.genRand.Next(4, 7)); if (WorldGen.genRand.Next(5) == 0) { Item.NewItem(i * 16, j * 16, 32, 32, 73, WorldGen.genRand.Next(5, 7)); break; } break; } break; } break; case 215: switch (num6) { case 0: Item.NewItem(i * 16, j * 16, 32, 32, 966); break; case 6: Item.NewItem(i * 16, j * 16, 32, 32, 3723); break; case 7: Item.NewItem(i * 16, j * 16, 32, 32, 3724); break; default: Item.NewItem(i * 16, j * 16, 32, 32, 3046 + num6 - 1); break; } break; case 217: Item.NewItem(i * 16, j * 16, 32, 32, 995); break; case 218: Item.NewItem(i * 16, j * 16, 32, 32, 996); break; case 219: Item.NewItem(i * 16, j * 16, 32, 32, 997); break; case 220: Item.NewItem(i * 16, j * 16, 32, 32, 998); break; case 228: Item.NewItem(i * 16, j * 16, 32, 32, 1120); break; case 237: Item.NewItem(i * 16, j * 16, 32, 32, 1292); break; case 244: Item.NewItem(i * 16, j * 16, 32, 32, 1449); break; case 285: Item.NewItem(i * 16, j * 16, 32, 32, 2174); break; case 286: Item.NewItem(i * 16, j * 16, 32, 32, 2175); break; case 310: Item.NewItem(i * 16, j * 16, 32, 32, 2207); break; case 339: Item.NewItem(i * 16, j * 16, 32, 32, 2741); break; case 377: Item.NewItem(i * 16, j * 16, 32, 32, 3198); break; case 405: Item.NewItem(i * 16, j * 16, 32, 32, 3364); break; default: if (type == 187 && frameX >= 918 && frameX <= 970) { if (Main.rand.Next(10) == 0) { Item.NewItem(i * 16, j * 16, 32, 32, 3368); break; } Item.NewItem(i * 16, j * 16, 32, 32, 989); break; } break; } } WorldGen.destroyObject = false; for (int i3 = index2 - 1; i3 < index2 + 4; ++i3) { for (int j3 = index1 - 1; j3 < index1 + 4; ++j3) WorldGen.TileFrame(i3, j3); } } 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 = 0; int num4; for (num4 = (int) Main.tile[i, j].frameX / 18; num4 >= 3; num4 -= 3) ++num3; int num5 = num1 - num4; int num6 = num2 + (int) Main.tile[i, j].frameY / 18 * -1; for (int i1 = num5; i1 < num5 + 3; ++i1) { for (int index = num6; index < num6 + 4; ++index) { if (Main.tile[i1, index] == null) Main.tile[i1, index] = new Tile(); if (!Main.tile[i1, index].active() || (int) Main.tile[i1, index].type != type || (int) Main.tile[i1, index].frameX != num3 * 54 + (i1 - num5) * 18 || (int) Main.tile[i1, index].frameY != (index - num6) * 18) flag = true; } if (Main.tile[i1, num6 + 4] == null) Main.tile[i1, num6 + 4] = new Tile(); if (!WorldGen.SolidTileAllowBottomSlope(i1, num6 + 4)) flag = true; } if (!flag) return; WorldGen.destroyObject = true; for (int i2 = num5; i2 < num5 + 3; ++i2) { for (int j1 = num6; j1 < num6 + 4; ++j1) { if ((int) Main.tile[i2, j1].type == type && Main.tile[i2, j1].active()) WorldGen.KillTile(i2, j1); } } switch (type) { case 101: int Type = num3 != 1 ? (num3 != 2 ? (num3 != 3 ? (num3 != 4 ? (num3 != 5 ? (num3 != 6 ? (num3 != 7 ? (num3 != 8 ? (num3 != 9 ? (num3 != 10 ? (num3 != 11 ? (num3 != 12 ? (num3 != 13 ? (num3 != 14 ? (num3 != 15 ? (num3 != 16 ? (num3 != 17 ? (num3 < 18 || num3 > 21 ? (num3 != 22 ? (num3 != 23 ? (num3 != 24 ? (num3 != 25 ? (num3 != 26 ? (num3 != 27 ? (num3 != 28 ? (num3 != 29 ? (num3 != 30 ? (num3 != 31 ? (num3 != 32 ? 354 : 3917) : 3166) : 3167) : 3165) : 2817) : 2670) : 2569) : 2554) : 2540) : 2536) : 2233) : 2135 + num3 - 18) : 2031) : 2030) : 2029) : 2028) : 2027) : 2026) : 2025) : 2024) : 2023) : 2022) : 2021) : 2020) : 1512) : 1463) : 1416) : 1415) : 1414; Item.NewItem(i * 16, j * 16, 32, 32, Type); break; case 102: Item.NewItem(i * 16, j * 16, 32, 32, 355); break; case 463: Item.NewItem(i * 16, j * 16, 32, 32, 3813); break; } WorldGen.destroyObject = false; for (int i3 = num5 - 1; i3 < num5 + 4; ++i3) { for (int j2 = num6 - 1; j2 < num6 + 4; ++j2) WorldGen.TileFrame(i3, j2); } } public static void Check5x4(int i, int j, int type) { if (WorldGen.destroyObject) return; bool flag = false; int num1 = i; int num2 = j; int num3 = 0; int num4; for (num4 = (int) Main.tile[i, j].frameX / 18; num4 >= 5; num4 -= 5) ++num3; int num5 = num1 - num4; int num6 = num2 + (int) Main.tile[i, j].frameY / 18 * -1; for (int i1 = num5; i1 < num5 + 5; ++i1) { for (int index = num6; index < num6 + 4; ++index) { if (Main.tile[i1, index] == null) Main.tile[i1, index] = new Tile(); if (!Main.tile[i1, index].active() || (int) Main.tile[i1, index].type != type || (int) Main.tile[i1, index].frameX != num3 * 90 + (i1 - num5) * 18 || (int) Main.tile[i1, index].frameY != (index - num6) * 18) flag = true; } if (Main.tile[i1, num6 + 4] == null) Main.tile[i1, num6 + 4] = new Tile(); if (!WorldGen.SolidTileAllowBottomSlope(i1, num6 + 4)) flag = true; } if (!flag) return; WorldGen.destroyObject = true; for (int i2 = num5; i2 < num5 + 5; ++i2) { for (int j1 = num6; j1 < num6 + 4; ++j1) { if ((int) Main.tile[i2, j1].type == type && Main.tile[i2, j1].active()) WorldGen.KillTile(i2, j1); } } if (type == 464) Item.NewItem(i * 16, j * 16, 32, 32, 3814); if (type == 466) Item.NewItem(i * 16, j * 16, 32, 32, 3816); WorldGen.destroyObject = false; for (int i3 = num5 - 1; i3 < num5 + 6; ++i3) { for (int j2 = num6 - 1; j2 < num6 + 5; ++j2) WorldGen.TileFrame(i3, j2); } } public static void Check6x3(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 i1 = num3; i1 < num3 + 6; ++i1) { for (int index = num4; index < num4 + 3; ++index) { int num5 = (i1 - num3) * 18; if (Main.tile[i1, index] == null) Main.tile[i1, index] = new Tile(); if (!Main.tile[i1, index].active() || (int) Main.tile[i1, index].type != type || (int) Main.tile[i1, index].frameX != num5 || (int) Main.tile[i1, index].frameY != (index - num4) * 18) flag = true; } if (Main.tile[i1, num4 + 3] == null) Main.tile[i1, num4 + 3] = new Tile(); if (!WorldGen.SolidTileAllowBottomSlope(i1, num4 + 3) && (!Main.tile[i1, num4 + 3].nactive() || !Main.tileSolidTop[(int) Main.tile[i1, num4 + 3].type] || Main.tile[i1, num4 + 3].frameY != (short) 0)) flag = true; } if (!flag) return; WorldGen.destroyObject = true; for (int i2 = num3; i2 < num3 + 6; ++i2) { for (int j1 = num4; j1 < num4 + 3; ++j1) { if ((int) Main.tile[i2, j1].type == type && Main.tile[i2, j1].active()) WorldGen.KillTile(i2, j1); } } if (type == 275) Item.NewItem(i * 16, j * 16, 32, 32, 2162); if (type == 413) Item.NewItem(i * 16, j * 16, 32, 32, 3565); if (type == 414) Item.NewItem(i * 16, j * 16, 32, 32, 3566); if (type == 276) Item.NewItem(i * 16, j * 16, 32, 32, 2163); if (type == 277) Item.NewItem(i * 16, j * 16, 32, 32, 2164); if (type == 278) Item.NewItem(i * 16, j * 16, 32, 32, 2165); if (type == 279) Item.NewItem(i * 16, j * 16, 32, 32, 2166); if (type == 280) Item.NewItem(i * 16, j * 16, 32, 32, 2167); if (type == 281) Item.NewItem(i * 16, j * 16, 32, 32, 2168); if (type == 296) Item.NewItem(i * 16, j * 16, 32, 32, 2186); if (type == 297) Item.NewItem(i * 16, j * 16, 32, 32, 2187); if (type == 309) Item.NewItem(i * 16, j * 16, 32, 32, 2206); if (type == 358) Item.NewItem(i * 16, j * 16, 32, 32, 3070); if (type == 359) Item.NewItem(i * 16, j * 16, 32, 32, 3071); WorldGen.destroyObject = false; for (int i3 = num3 - 1; i3 < num3 + 7; ++i3) { for (int j2 = num4 - 1; j2 < num4 + 4; ++j2) WorldGen.TileFrame(i3, j2); } } public static void Place6x3(int x, int y, ushort type, int direction = -1, int style = 0) { if (x < 5 || x > Main.maxTilesX - 5 || y < 5 || y > Main.maxTilesY - 5) return; bool flag = true; for (int i = x - 3; i < x + 3; ++i) { for (int index = y - 2; index <= y; ++index) { if (Main.tile[i, index] == null) Main.tile[i, index] = new Tile(); if (Main.tile[i, index].active()) flag = false; } if (Main.tile[i, y + 1] == null) Main.tile[i, y + 1] = new Tile(); if (!WorldGen.SolidTile2(i, y + 1) && (!Main.tile[i, y + 1].nactive() || !Main.tileSolidTop[(int) Main.tile[i, y + 1].type] || Main.tile[i, y + 1].frameY != (short) 0)) flag = false; } if (!flag) return; int num1 = 0; for (int index1 = x - 3; index1 < x + 3; ++index1) { int num2 = 0; for (int index2 = y - 2; index2 <= y; ++index2) { Main.tile[index1, index2].active(true); Main.tile[index1, index2].frameY = (short) num2; Main.tile[index1, index2].frameX = (short) num1; Main.tile[index1, index2].type = type; num2 += 18; } num1 += 18; } } public static void Place4x2(int x, int y, ushort type, int direction = -1, int style = 0) { if (x < 5 || x > Main.maxTilesX - 5 || y < 5 || y > Main.maxTilesY - 5) return; bool flag = true; for (int i = x - 1; i < x + 3; ++i) { for (int index = y - 1; index < y + 1; ++index) { if (Main.tile[i, index] == null) Main.tile[i, index] = new Tile(); if (Main.tile[i, index].active()) flag = false; } if (Main.tile[i, y + 1] == null) Main.tile[i, y + 1] = new Tile(); if (!WorldGen.SolidTile2(i, y + 1)) flag = false; } short num1 = 0; if (direction == 1) num1 = (short) 72; int num2 = 36 * style; if (!flag) return; Main.tile[x - 1, y - 1].active(true); Main.tile[x - 1, y - 1].frameY = (short) num2; Main.tile[x - 1, y - 1].frameX = num1; Main.tile[x - 1, y - 1].type = type; Main.tile[x, y - 1].active(true); Main.tile[x, y - 1].frameY = (short) num2; Main.tile[x, y - 1].frameX = (short) (18 + (int) num1); Main.tile[x, y - 1].type = type; Main.tile[x + 1, y - 1].active(true); Main.tile[x + 1, y - 1].frameY = (short) num2; Main.tile[x + 1, y - 1].frameX = (short) (36 + (int) num1); Main.tile[x + 1, y - 1].type = type; Main.tile[x + 2, y - 1].active(true); Main.tile[x + 2, y - 1].frameY = (short) num2; Main.tile[x + 2, y - 1].frameX = (short) (54 + (int) num1); Main.tile[x + 2, y - 1].type = type; Main.tile[x - 1, y].active(true); Main.tile[x - 1, y].frameY = (short) (num2 + 18); Main.tile[x - 1, y].frameX = num1; Main.tile[x - 1, y].type = type; Main.tile[x, y].active(true); Main.tile[x, y].frameY = (short) (num2 + 18); Main.tile[x, y].frameX = (short) (18 + (int) num1); Main.tile[x, y].type = type; Main.tile[x + 1, y].active(true); Main.tile[x + 1, y].frameY = (short) (num2 + 18); Main.tile[x + 1, y].frameX = (short) (36 + (int) num1); Main.tile[x + 1, y].type = type; Main.tile[x + 2, y].active(true); Main.tile[x + 2, y].frameY = (short) (num2 + 18); Main.tile[x + 2, y].frameX = (short) (54 + (int) num1); Main.tile[x + 2, y].type = type; } public static void ShootFromCannon( int x, int y, int angle, int ammo, int Damage, float KnockBack, int owner) { float num1 = 14f; float num2 = 0.0f; float num3 = 0.0f; int Type = 162; if (ammo == 2) Type = 281; if (ammo == 3) Type = 178; if (ammo == 4) { Type = 601; num1 = 3f; } if (ammo == 5) { Type = 601; num1 = 3f; } int num4 = 0; if (ammo == 5) num4 = 1; if (angle == 0) { num2 = 10f; num3 = 0.0f; } if (angle == 1) { num2 = 7.5f; num3 = -2.5f; } if (angle == 2) { num2 = 5f; num3 = -5f; } if (angle == 3) { num2 = 2.75f; num3 = -6f; } if (angle == 4) { num2 = 0.0f; num3 = -10f; } if (angle == 5) { num2 = -2.75f; num3 = -6f; } if (angle == 6) { num2 = -5f; num3 = -5f; } if (angle == 7) { num2 = -7.5f; num3 = -2.5f; } if (angle == 8) { num2 = -10f; num3 = 0.0f; } Vector2 vector2 = new Vector2((float) ((x + 2) * 16), (float) ((y + 2) * 16)); float num5 = num2; float num6 = num3; float num7 = (float) Math.Sqrt((double) num5 * (double) num5 + (double) num6 * (double) num6); if (ammo == 4 || ammo == 5) { if (angle == 4) vector2.X += 5f; vector2.Y += 5f; } float num8 = num1 / num7; float SpeedX = num5 * num8; float SpeedY = num6 * num8; if (Main.myPlayer != owner && Main.netMode == 2 && (ammo == 4 || ammo == 5)) { NetMessage.SendData(108, owner, number: Damage, number2: KnockBack, number3: ((float) x), number4: ((float) y), number5: angle, number6: ammo, number7: owner); } else { if (Main.netMode == 2) owner = Main.myPlayer; Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, Type, Damage, KnockBack, owner, (float) num4); } } public static void SwitchCannon(int i, int j) { int num1 = (int) Main.tile[i, j].frameX / 18; while (num1 >= 4) num1 -= 4; int num2 = (int) Main.tile[i, j].frameY / 18; while (num2 >= 3) num2 -= 3; int num3 = 1; if (num1 < 2) num3 = -1; int index1 = i - num1; int index2 = j - num2; if (num3 == 1 && Main.tile[index1, index2].frameY <= (short) 52 || num3 == -1 && Main.tile[index1, index2].frameY >= (short) 432) return; int num4 = num3 * -54; for (int index3 = index1; index3 < index1 + 4; ++index3) { for (int index4 = index2; index4 < index2 + 3; ++index4) { if (Main.tile[index3, index4] == null) Main.tile[index3, index4] = new Tile(); if (Main.tile[index3, index4].active() && Main.tile[index3, index4].type == (ushort) 209) Main.tile[index3, index4].frameY += (short) num4; } } NetMessage.SendTileSquare(-1, index1 + 1, index2 + 1, 4); } public static void CheckCannon(int i, int j, int type) { if (WorldGen.destroyObject) return; bool flag = false; int num1 = (int) Main.tile[i, j].frameX / 18; int num2 = 0; for (; num1 >= 4; num1 -= 4) ++num2; int num3 = i - num1; int num4 = (int) Main.tile[i, j].frameY / 18; int num5 = 0; for (; num4 >= 3; num4 -= 3) num5 += 54; int num6 = j - num4; int num7 = 72 * num2; for (int i1 = num3; i1 < num3 + 4; ++i1) { int num8 = num5; for (int index = num6; index < num6 + 3; ++index) { if (Main.tile[i1, index] == null) Main.tile[i1, index] = new Tile(); if (!Main.tile[i1, index].active() || (int) Main.tile[i1, index].type != type || (int) Main.tile[i1, index].frameX != num7 || (int) Main.tile[i1, index].frameY != num8) flag = true; num8 += 18; } if (Main.tile[i1, num6 + 3] == null) Main.tile[i1, num6 + 3] = new Tile(); if (!WorldGen.SolidTileAllowBottomSlope(i1, num6 + 3) && i1 != num3 && i1 != num3 + 3) flag = true; num7 += 18; } if (!flag) return; WorldGen.destroyObject = true; for (int i2 = num3; i2 < num3 + 4; ++i2) { for (int j1 = num6; j1 < num6 + 3; ++j1) { if ((int) Main.tile[i2, j1].type == type && Main.tile[i2, j1].active()) WorldGen.KillTile(i2, j1); } } int Type = 928; switch (num2) { case 1: Type = 1337; break; case 2: Type = 3369; break; case 3: case 4: Type = 3664; break; } Item.NewItem(i * 16, j * 16, 32, 32, Type); WorldGen.destroyObject = false; for (int i3 = num3; i3 < num3 + 4; ++i3) { for (int j2 = num6; j2 < num6 + 3; ++j2) WorldGen.TileFrame(i3, j2); } } public static void PlaceCannon(int x, int y, ushort type, int style = 0) { if (x < 5 || x > Main.maxTilesX - 5 || y < 5 || y > Main.maxTilesY - 5) return; bool flag = true; for (int i = x - 1; i < x + 3; ++i) { for (int index = y - 2; index < y + 1; ++index) { if (Main.tile[i, index] == null) Main.tile[i, index] = new Tile(); if (Main.tile[i, index].active()) flag = false; } if (Main.tile[i, y + 1] == null) Main.tile[i, y + 1] = new Tile(); if (!WorldGen.SolidTile2(i, y + 1) && i != x - 1 && i != x + 2) flag = false; } int num1 = 72 * style; int num2 = 0; if (!flag) return; Main.tile[x - 1, y - 2].active(true); Main.tile[x - 1, y - 2].frameY = (short) num2; Main.tile[x - 1, y - 2].frameX = (short) num1; Main.tile[x - 1, y - 2].type = type; Main.tile[x, y - 2].active(true); Main.tile[x, y - 2].frameY = (short) num2; Main.tile[x, y - 2].frameX = (short) (18 + num1); Main.tile[x, y - 2].type = type; Main.tile[x + 1, y - 2].active(true); Main.tile[x + 1, y - 2].frameY = (short) num2; Main.tile[x + 1, y - 2].frameX = (short) (36 + num1); Main.tile[x + 1, y - 2].type = type; Main.tile[x + 2, y - 2].active(true); Main.tile[x + 2, y - 2].frameY = (short) num2; Main.tile[x + 2, y - 2].frameX = (short) (54 + num1); Main.tile[x + 2, y - 2].type = type; Main.tile[x - 1, y - 1].active(true); Main.tile[x - 1, y - 1].frameY = (short) (num2 + 18); Main.tile[x - 1, y - 1].frameX = (short) num1; Main.tile[x - 1, y - 1].type = type; Main.tile[x, y - 1].active(true); Main.tile[x, y - 1].frameY = (short) (num2 + 18); Main.tile[x, y - 1].frameX = (short) (18 + num1); Main.tile[x, y - 1].type = type; Main.tile[x + 1, y - 1].active(true); Main.tile[x + 1, y - 1].frameY = (short) (num2 + 18); Main.tile[x + 1, y - 1].frameX = (short) (36 + num1); Main.tile[x + 1, y - 1].type = type; Main.tile[x + 2, y - 1].active(true); Main.tile[x + 2, y - 1].frameY = (short) (num2 + 18); Main.tile[x + 2, y - 1].frameX = (short) (54 + num1); Main.tile[x + 2, y - 1].type = type; Main.tile[x - 1, y].active(true); Main.tile[x - 1, y].frameY = (short) (num2 + 36); Main.tile[x - 1, y].frameX = (short) num1; Main.tile[x - 1, y].type = type; Main.tile[x, y].active(true); Main.tile[x, y].frameY = (short) (num2 + 36); Main.tile[x, y].frameX = (short) (18 + num1); Main.tile[x, y].type = type; Main.tile[x + 1, y].active(true); Main.tile[x + 1, y].frameY = (short) (num2 + 36); Main.tile[x + 1, y].frameX = (short) (36 + num1); Main.tile[x + 1, y].type = type; Main.tile[x + 2, y].active(true); Main.tile[x + 2, y].frameY = (short) (num2 + 36); Main.tile[x + 2, y].frameX = (short) (54 + num1); Main.tile[x + 2, y].type = 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 num3 = i - num2; int num4 = j - num1; for (int index1 = num3; index1 < num3 + 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() && (Main.tile[index1, index2].type == (ushort) 139 || Main.tile[index1, index2].type == (ushort) 35)) { if (Main.tile[index1, index2].frameX < (short) 36) Main.tile[index1, index2].frameX += (short) 36; else Main.tile[index1, index2].frameX -= (short) 36; } } } if (Wiring.running) { Wiring.SkipWire(num3, num4); Wiring.SkipWire(num3 + 1, num4); Wiring.SkipWire(num3, num4 + 1); Wiring.SkipWire(num3 + 1, num4 + 1); } NetMessage.SendTileSquare(-1, num3, num4, 3); } public static void SwitchMonolith(int i, int j) { int num1 = (int) Main.tile[i, j].frameX / 18; while (num1 >= 2) num1 -= 2; int num2 = (int) Main.tile[i, j].frameY / 18; if (num2 >= 3) num2 -= 3; int num3 = i - num1; int y = j - num2; for (int index1 = num3; index1 < num3 + 2; ++index1) { for (int index2 = y; index2 < y + 3; ++index2) { if (Main.tile[index1, index2] == null) Main.tile[index1, index2] = new Tile(); if (Main.tile[index1, index2].active() && Main.tile[index1, index2].type == (ushort) 410) { if (Main.tile[index1, index2].frameY < (short) 56) Main.tile[index1, index2].frameY += (short) 56; else Main.tile[index1, index2].frameY -= (short) 56; } } } if (Wiring.running) { Wiring.SkipWire(num3, y); Wiring.SkipWire(num3, y + 1); Wiring.SkipWire(num3, y + 2); Wiring.SkipWire(num3 + 1, y); Wiring.SkipWire(num3 + 1, y + 1); Wiring.SkipWire(num3 + 1, y + 2); } NetMessage.SendTileSquare(-1, num3, y + 1, 3); } public static void SwitchFountain(int i, int j) { int num1 = (int) Main.tile[i, j].frameX / 18; while (num1 >= 2) num1 -= 2; int num2 = (int) Main.tile[i, j].frameY / 18; if (num2 >= 4) num2 -= 4; int num3 = i - num1; int y = j - num2; for (int index1 = num3; index1 < num3 + 2; ++index1) { for (int index2 = y; index2 < y + 4; ++index2) { if (Main.tile[index1, index2] == null) Main.tile[index1, index2] = new Tile(); if (Main.tile[index1, index2].active() && Main.tile[index1, index2].type == (ushort) 207) { if (Main.tile[index1, index2].frameY < (short) 72) Main.tile[index1, index2].frameY += (short) 72; else Main.tile[index1, index2].frameY -= (short) 72; } } } if (Wiring.running) { Wiring.SkipWire(num3, y); Wiring.SkipWire(num3, y + 1); Wiring.SkipWire(num3, y + 2); Wiring.SkipWire(num3, y + 3); Wiring.SkipWire(num3 + 1, y); Wiring.SkipWire(num3 + 1, y + 1); Wiring.SkipWire(num3 + 1, y + 2); Wiring.SkipWire(num3 + 1, y + 3); } NetMessage.SendTileSquare(-1, num3, y + 1, 4); } 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.tile[index1, num6 + 2].nactive()) flag = true; else if (!Main.tileSolid[(int) Main.tile[index1, num6 + 2].type] && !Main.tileTable[(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); } } if (type == 35) Item.NewItem(i * 16, j * 16, 32, 32, 1813); else if (num1 == 28) Item.NewItem(i * 16, j * 16, 32, 32, 1963); else if (num1 == 29) Item.NewItem(i * 16, j * 16, 32, 32, 1964); else if (num1 == 30) Item.NewItem(i * 16, j * 16, 32, 32, 1965); else if (num1 == 31) Item.NewItem(i * 16, j * 16, 32, 32, 2742); else if (num1 == 32) Item.NewItem(i * 16, j * 16, 32, 32, 3044); else if (num1 == 33) Item.NewItem(i * 16, j * 16, 32, 32, 3235); else if (num1 == 34) Item.NewItem(i * 16, j * 16, 32, 32, 3236); else if (num1 == 35) Item.NewItem(i * 16, j * 16, 32, 32, 3237); else if (num1 == 36) Item.NewItem(i * 16, j * 16, 32, 32, 3370); else if (num1 == 37) Item.NewItem(i * 16, j * 16, 32, 32, 3371); else if (num1 == 38) Item.NewItem(i * 16, j * 16, 32, 32, 3796); else if (num1 == 39) Item.NewItem(i * 16, j * 16, 32, 32, 3869); else if (num1 >= 13) Item.NewItem(i * 16, j * 16, 32, 32, 1596 + num1 - 13); else 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, ushort 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.tile[index2, y + 1].halfBrick() || !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 = 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 = 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 = 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 = type; } public static void Place2x2(int x, int y, ushort type, int style) { if (type == (ushort) 95 || type == (ushort) 126) ++y; if (x < 5 || x > Main.maxTilesX - 5 || y < 5 || y > Main.maxTilesY - 5) return; if (type == (ushort) 172) { if (!WorldGen.CanPlaceSink(x, y, type, style)) return; } else { for (int i = x - 1; i < x + 1; ++i) { for (int j = y - 1; j < y + 1; ++j) { Tile tileSafely = Framing.GetTileSafely(i, j); if (tileSafely.active() || type == (ushort) 98 && tileSafely.liquid > (byte) 0) return; } switch (type) { case 95: case 126: Tile tileSafely1 = Framing.GetTileSafely(i, y - 2); if (!tileSafely1.nactive() || !Main.tileSolid[(int) tileSafely1.type] || Main.tileSolidTop[(int) tileSafely1.type]) return; continue; case 132: continue; default: Tile tileSafely2 = Framing.GetTileSafely(i, y + 1); if (!tileSafely2.nactive() || !WorldGen.SolidTile2(tileSafely2) && !Main.tileTable[(int) tileSafely2.type]) return; continue; } } } if (type == (ushort) 132) { bool flag = true; if (Main.tile[x - 1, y + 1] == null) Main.tile[x - 1, y + 1] = new Tile(); if (Main.tile[x, y + 1] == null) Main.tile[x, y + 1] = new Tile(); if (!Main.tile[x - 1, y + 1].nactive() || !WorldGen.SolidTile2(x - 1, y + 1) && !Main.tileTable[(int) Main.tile[x - 1, y + 1].type]) flag = false; if (!Main.tile[x, y + 1].nactive() || !WorldGen.SolidTile2(x, y + 1) && !Main.tileTable[(int) Main.tile[x, y + 1].type]) flag = false; if (!flag && (Main.tile[x - 1, y - 1].wall < (byte) 1 || Main.tile[x, y - 1].wall < (byte) 1 || Main.tile[x - 1, y].wall < (byte) 1 || Main.tile[x - 1, y].wall < (byte) 1)) return; } --x; --y; int num = type == (ushort) 172 ? 38 : 36; for (int index1 = 0; index1 < 2; ++index1) { for (int index2 = 0; index2 < 2; ++index2) { Tile tile = Main.tile[x + index1, y + index2]; tile.active(true); tile.frameX = (short) (index1 * 18); tile.frameY = (short) (style * num + index2 * 18); tile.type = type; } } } public static bool PlaceObject( int x, int y, int type, bool mute = false, int style = 0, int alternate = 0, int random = -1, int direction = -1) { TileObject objectData; if (type >= 470 || !TileObject.CanPlace(x, y, type, style, direction, out objectData)) return false; objectData.random = random; if (TileObject.Place(objectData) && !mute) { WorldGen.SquareTileFrame(x, y); Main.PlaySound(0, x * 16, y * 16); } return false; } public static bool ShiftTrapdoor(int x, int y, bool playerAbove, int onlyCloseOrOpen = -1) { Tile tileSafely1 = Framing.GetTileSafely(x, y); if (tileSafely1.type == (ushort) 386 && onlyCloseOrOpen != 1) { Point topLeftAndStyles = WorldGen.GetTopLeftAndStyles(ref x, ref y, 2, 2, 18, 18); if (topLeftAndStyles.X == 0) { if (Main.netMode != 1 && Wiring.running) { Wiring.SkipWire(x, y); Wiring.SkipWire(x, y + 1); Wiring.SkipWire(x + 1, y); Wiring.SkipWire(x + 1, y + 1); } if (!Collision.EmptyTile(x, y + 1, true) || !Collision.EmptyTile(x + 1, y + 1, true)) return false; Main.PlaySound(8, x * 16 + 16, y * 16 + 16); for (int index = 0; index < 2; ++index) Framing.GetTileSafely(x + index, y).ClearTile(); for (int index = 0; index < 2; ++index) { Tile tileSafely2 = Framing.GetTileSafely(x + index, y + 1); tileSafely2.type = (ushort) 387; tileSafely2.frameX = (short) (index * 18); tileSafely2.frameY = (short) (topLeftAndStyles.Y * 18); } for (int index1 = -1; index1 < 3; ++index1) { for (int index2 = 0; index2 < 3; ++index2) WorldGen.TileFrame(x + index1, y + index2); } return true; } if (topLeftAndStyles.X == 1) { if (Main.netMode != 1 && Wiring.running) { Wiring.SkipWire(x, y - 1); Wiring.SkipWire(x, y); Wiring.SkipWire(x + 1, y - 1); Wiring.SkipWire(x + 1, y); } if (!Collision.EmptyTile(x, y, true) || !Collision.EmptyTile(x + 1, y, true)) return false; Main.PlaySound(8, x * 16 + 16, y * 16); for (int index = 0; index < 2; ++index) Framing.GetTileSafely(x + index, y + 1).ClearTile(); for (int index = 0; index < 2; ++index) { Tile tileSafely3 = Framing.GetTileSafely(x + index, y); tileSafely3.type = (ushort) 387; tileSafely3.frameX = (short) (index * 18); tileSafely3.frameY = (short) (topLeftAndStyles.Y * 18); } for (int index3 = -1; index3 < 3; ++index3) { for (int index4 = -1; index4 < 2; ++index4) WorldGen.TileFrame(x + index3, y + index4); } return true; } } if (tileSafely1.type == (ushort) 387 && onlyCloseOrOpen != 0) { WorldGen.GetTopLeftAndStyles(ref x, ref y, 2, 1, 18, 18); int directionInt = playerAbove.ToDirectionInt(); for (int index = 0; index < 2; ++index) { Tile tileSafely4 = Framing.GetTileSafely(x + index, y + directionInt); if (tileSafely4.active() && !Main.tileCut[(int) tileSafely4.type]) return false; } if (Main.netMode != 1 && Wiring.running) { Wiring.SkipWire(x, y); Wiring.SkipWire(x, y + directionInt); Wiring.SkipWire(x + 1, y); Wiring.SkipWire(x + 1, y + directionInt); } Main.PlaySound(8, x * 16 + 16, y * 16); for (int index = 0; index < 2; ++index) { Tile tileSafely5 = Framing.GetTileSafely(x + index, y + directionInt); if (tileSafely5.active() && Main.tileCut[(int) tileSafely5.type]) WorldGen.KillTile(x + index, y + directionInt); } for (int index5 = 0; index5 < 2; ++index5) { byte color = Framing.GetTileSafely(x + index5, y).color(); for (int index6 = 0; index6 < 2; ++index6) { Tile tileSafely6 = Framing.GetTileSafely(x + index5, y + index6 - (!playerAbove).ToInt()); tileSafely6.type = (ushort) 386; tileSafely6.frameX = (short) (index5 * 18 + playerAbove.ToInt() * 36); tileSafely6.frameY = (short) (index6 * 18); tileSafely6.color(color); tileSafely6.active(true); } } for (int index7 = -1; index7 < 3; ++index7) { for (int index8 = -1; index8 < 3; ++index8) WorldGen.TileFrame(x + index7, y + index8 - (!playerAbove).ToInt() * 2); } return true; } Main.PlaySound(9, x * 16, y * 16); return false; } public static void CheckTrapDoor(int x, int y, int type) { if (WorldGen.destroyObject) return; bool flag = false; int w = 0; int h = 0; Point point = new Point(); if (type == 387) { w = 2; h = 1; point = WorldGen.GetTopLeftAndStyles(ref x, ref y, w, h, 18, 18); flag = flag || !WorldGen.CheckTileFrames(type, x, y, w, h, point.X, 18, point.Y, 18) || !WorldGen.CheckTileAnchors(x, y, w, h, 1, AnchorType.SolidTile); } if (type == 386) { w = 2; h = 2; point = WorldGen.GetTopLeftAndStyles(ref x, ref y, w, h, 18, 18); flag = flag || !WorldGen.CheckTileFrames(type, x, y, w, h, point.X, 18, point.Y, 18); if (point.X == 0) flag = flag || !WorldGen.CheckTileAnchors(x, y + 1, w, 1, 1, AnchorType.SolidTile); else if (point.X == 1) flag = flag || !WorldGen.CheckTileAnchors(x, y, w, 1, 1, AnchorType.SolidTile); } if (!flag) return; WorldGen.destroyObject = true; for (int i = x; i < x + w; ++i) { for (int j = y; j < y + h; ++j) WorldGen.KillTile(i, j); } int Type = 3239; if (point.Y == 0) Type = 3239; Item.NewItem(x * 16, y * 16, w * 16, h * 16, Type); for (int i = x - 1; i < x + w + 1; ++i) { for (int j = y - 1; j < y + h + 1; ++j) WorldGen.TileFrame(i, j); } WorldGen.destroyObject = false; } public static void CheckTallGate(int x, int y, int type) { if (WorldGen.destroyObject) return; bool flag = false; Tile tileSafely1 = Framing.GetTileSafely(x, y); Point point = new Point((int) tileSafely1.frameX / 18, 0); TileObjectData tileData = TileObjectData.GetTileData(type, point.X); point.Y = (int) tileSafely1.frameY / tileData.CoordinateFullHeight; int width = tileData.Width; int height = tileData.Height; int index1 = 0; for (int index2 = (int) tileSafely1.frameY % tileData.CoordinateFullHeight; index1 < height && index2 - tileData.CoordinateHeights[index1] >= 0; ++index1) index2 -= tileData.CoordinateHeights[index1]; int coordinateFullHeight = tileData.CoordinateFullHeight; y -= index1; int num = point.Y * tileData.CoordinateFullHeight; for (int index3 = 0; index3 < height; ++index3) { Tile tileSafely2 = Framing.GetTileSafely(x, y + index3); if ((int) tileSafely2.frameX != point.X * tileData.CoordinateFullWidth || (int) tileSafely2.frameY != num) { flag = true; break; } num += tileData.CoordinateHeights[index3] + tileData.CoordinatePadding; } if (!flag && WorldGen.CheckTileAnchors(x, y, width, height, 2, AnchorType.SolidTile)) return; WorldGen.destroyObject = true; for (int i = x; i < x + width; ++i) { for (int j = y; j < y + height; ++j) WorldGen.KillTile(i, j); } int Type = 3240; if (point.Y == 0) Type = 3240; Item.NewItem(x * 16, y * 16, width * 16, height * 16, Type); for (int i = x - 1; i < x + width + 1; ++i) { for (int j = y - 1; j < y + height + 1; ++j) WorldGen.TileFrame(i, j); } WorldGen.destroyObject = false; } public static bool ShiftTallGate(int x, int y, bool closing) { ushort num1 = closing ? (ushort) 388 : (ushort) 389; ushort num2 = closing ? (ushort) 389 : (ushort) 388; Tile tileSafely = Framing.GetTileSafely(x, y); if ((int) tileSafely.type != (int) num2) return false; Point point = new Point((int) tileSafely.frameX / 18, 0); TileObjectData tileData = TileObjectData.GetTileData(388, point.X); point.Y = (int) tileSafely.frameY / tileData.CoordinateFullHeight; int width = tileData.Width; int height = tileData.Height; int index1 = 0; for (int index2 = (int) tileSafely.frameY % tileData.CoordinateFullHeight; index1 < height && index2 - tileData.CoordinateHeights[index1] >= 0; ++index1) index2 -= tileData.CoordinateHeights[index1]; int coordinateFullHeight = tileData.CoordinateFullHeight; y -= index1; if (Main.netMode != 1 && Wiring.running) { for (int index3 = 0; index3 < height; ++index3) Wiring.SkipWire(x, y + index3); } for (int index4 = 0; index4 < height; ++index4) { if (!Collision.EmptyTile(x, y + index4, true)) return false; } Main.PlaySound(8, x * 16 + 16, y * 16 + 16); for (int index5 = 0; index5 < height; ++index5) Framing.GetTileSafely(x, y + index5).type = num1; for (int index6 = -1; index6 < 2; ++index6) { for (int index7 = -1; index7 < height + 1; ++index7) WorldGen.TileFrame(x + index6, y + index7); } return true; } public static Point GetTopLeftAndStyles( ref int x, ref int y, int w, int h, int frameXinc, int frameYinc) { Tile tileSafely = Framing.GetTileSafely(x, y); Point point = new Point((int) tileSafely.frameX / (w * frameXinc), (int) tileSafely.frameY / (h * frameYinc)); if (frameXinc != 0) x -= (int) tileSafely.frameX / frameXinc % w; if (frameYinc == 0) return point; y -= (int) tileSafely.frameY / frameYinc % h; return point; } public static bool CheckTileFrames( int type, int sx, int sy, int w, int h, int styleX, int frameXinc, int styleY, int frameYinc) { for (int index1 = 0; index1 < w; ++index1) { for (int index2 = 0; index2 < h; ++index2) { Tile tileSafely = Framing.GetTileSafely(sx + index1, sy + index2); if (!tileSafely.active() || (int) tileSafely.type != type || (int) tileSafely.frameX != styleX * w * frameXinc + index1 * frameXinc || (int) tileSafely.frameY != styleY * h * frameYinc + index2 * frameYinc) return false; } } return true; } public static bool CheckTileAnchors( int sx, int sy, int w, int h, int mode, AnchorType anchor) { if ((mode & 1) == 1) { for (int j = sy; j < sy + h; ++j) { if (!WorldGen.AnchorValid(Framing.GetTileSafely(sx - 1, j), anchor) || !WorldGen.AnchorValid(Framing.GetTileSafely(sx + w, j), anchor)) return false; } } if ((mode & 2) == 2) { for (int i = sx; i < sx + w; ++i) { if (!WorldGen.AnchorValid(Framing.GetTileSafely(i, sy - 1), anchor) || !WorldGen.AnchorValid(Framing.GetTileSafely(i, sy + h), anchor)) return false; } } return true; } public static bool AnchorValid(Tile tileCache, AnchorType anchor) { bool flag = false; if (tileCache.nactive()) { if ((anchor & AnchorType.SolidTile) == AnchorType.SolidTile && Main.tileSolid[(int) tileCache.type] && !Main.tileSolidTop[(int) tileCache.type] && !Main.tileNoAttach[(int) tileCache.type] && tileCache.blockType() == 0) flag = true; if ((anchor & AnchorType.SolidBottom) == AnchorType.SolidBottom && (Main.tileSolid[(int) tileCache.type] && (!Main.tileSolidTop[(int) tileCache.type] || TileID.Sets.Platforms[(int) tileCache.type] && (tileCache.halfBrick() || tileCache.topSlope())) || tileCache.topSlope() || tileCache.halfBrick()) && !TileID.Sets.NotReallySolid[(int) tileCache.type] && !tileCache.bottomSlope()) flag = true; if (!flag && ((anchor & AnchorType.SolidWithTop) == AnchorType.SolidWithTop || (anchor & AnchorType.Table) == AnchorType.Table)) { if (TileID.Sets.Platforms[(int) tileCache.type]) { int num = (int) tileCache.frameX / TileObjectData.PlatformFrameWidth(); if (!tileCache.halfBrick() && num >= 0 && num <= 7 || num >= 12 && num <= 16 || num >= 25 && num <= 26) flag = true; } else if (Main.tileSolid[(int) tileCache.type] && Main.tileSolidTop[(int) tileCache.type]) flag = true; } if (!flag && (anchor & AnchorType.Table) == AnchorType.Table && !TileID.Sets.Platforms[(int) tileCache.type] && Main.tileTable[(int) tileCache.type] && tileCache.blockType() == 0) flag = true; if (!flag && (anchor & AnchorType.SolidSide) == AnchorType.SolidSide && Main.tileSolid[(int) tileCache.type] && !Main.tileSolidTop[(int) tileCache.type]) { switch (tileCache.blockType()) { case 4: case 5: flag = true; break; } } } else if (!flag && (anchor & AnchorType.EmptyTile) == AnchorType.EmptyTile) flag = true; return flag; } public static bool CanPlaceSink(int x, int y, ushort type, int style) { if (x < 5 || x > Main.maxTilesX - 5 || y < 5 || y > Main.maxTilesY - 5) return false; bool flag = true; --x; --y; for (int index1 = 0; index1 < 2; ++index1) { for (int index2 = 0; index2 < 2; ++index2) { if (Framing.GetTileSafely(x + index1, y + index2).active()) flag = false; } Tile tileSafely = Framing.GetTileSafely(x + index1, y + 2); if (!tileSafely.nactive() || !WorldGen.SolidTile(tileSafely)) flag = false; } return flag; } public static void Place3x4(int x, int y, ushort type, int style) { if (x < 5 || x > Main.maxTilesX - 5 || y < 5 || y > Main.maxTilesY - 5) return; bool flag = true; for (int i = x - 1; i < x + 2; ++i) { for (int index = y - 3; index < y + 1; ++index) { if (Main.tile[i, index] == null) Main.tile[i, index] = new Tile(); if (Main.tile[i, index].active()) flag = false; } if (Main.tile[i, y + 1] == null) Main.tile[i, y + 1] = new Tile(); if (!WorldGen.SolidTile2(i, y + 1)) flag = false; } if (!flag) return; int num1 = style * 54; for (int index = -3; index <= 0; ++index) { short num2 = (short) ((3 + index) * 18); Main.tile[x - 1, y + index].active(true); Main.tile[x - 1, y + index].frameY = num2; Main.tile[x - 1, y + index].frameX = (short) num1; Main.tile[x - 1, y + index].type = type; Main.tile[x, y + index].active(true); Main.tile[x, y + index].frameY = num2; Main.tile[x, y + index].frameX = (short) (num1 + 18); Main.tile[x, y + index].type = type; Main.tile[x + 1, y + index].active(true); Main.tile[x + 1, y + index].frameY = num2; Main.tile[x + 1, y + index].frameX = (short) (num1 + 36); Main.tile[x + 1, y + index].type = type; } } public static void Place5x4(int x, int y, ushort type, int style) { if (x < 5 || x > Main.maxTilesX - 5 || y < 5 || y > Main.maxTilesY - 5) return; bool flag = true; for (int i = x - 2; i < x + 3; ++i) { for (int index = y - 3; index < y + 1; ++index) { if (Main.tile[i, index] == null) Main.tile[i, index] = new Tile(); if (Main.tile[i, index].active()) flag = false; } if (Main.tile[i, y + 1] == null) Main.tile[i, y + 1] = new Tile(); if (!WorldGen.SolidTile2(i, y + 1)) flag = false; } if (!flag) return; int num1 = style * 54; for (int index = -3; index <= 0; ++index) { short num2 = (short) ((3 + index) * 18); Main.tile[x - 2, y + index].active(true); Main.tile[x - 2, y + index].frameY = num2; Main.tile[x - 2, y + index].frameX = (short) (num1 - 36); Main.tile[x - 2, y + index].type = type; Main.tile[x - 1, y + index].active(true); Main.tile[x - 1, y + index].frameY = num2; Main.tile[x - 1, y + index].frameX = (short) (num1 - 18); Main.tile[x - 1, y + index].type = type; Main.tile[x, y + index].active(true); Main.tile[x, y + index].frameY = num2; Main.tile[x, y + index].frameX = (short) num1; Main.tile[x, y + index].type = type; Main.tile[x + 1, y + index].active(true); Main.tile[x + 1, y + index].frameY = num2; Main.tile[x + 1, y + index].frameX = (short) (num1 + 18); Main.tile[x + 1, y + index].type = type; Main.tile[x + 1, y + index].active(true); Main.tile[x + 1, y + index].frameY = num2; Main.tile[x + 1, y + index].frameX = (short) (num1 + 36); Main.tile[x + 1, y + index].type = type; } } public static void Place3x1(int x, int y, ushort type, int style = 0) { if (x < 5 || x > Main.maxTilesX - 5 || y < 5 || y > Main.maxTilesY - 5) return; bool flag = true; for (int i = x - 1; i < x + 2; ++i) { int index = y; if (Main.tile[i, index] == null) Main.tile[i, index] = new Tile(); if (Main.tile[i, index].active()) flag = false; if (Main.tile[i, y + 1] == null) Main.tile[i, y + 1] = new Tile(); if (!WorldGen.SolidTile2(i, y + 1)) flag = false; } if (!flag) return; short num = (short) (54 * style); Main.tile[x - 1, y].active(true); Main.tile[x - 1, y].frameY = (short) 0; Main.tile[x - 1, y].frameX = num; Main.tile[x - 1, y].type = type; Main.tile[x, y].active(true); Main.tile[x, y].frameY = (short) 0; Main.tile[x, y].frameX = (short) ((int) num + 18); Main.tile[x, y].type = type; Main.tile[x + 1, y].active(true); Main.tile[x + 1, y].frameY = (short) 0; Main.tile[x + 1, y].frameX = (short) ((int) num + 36); Main.tile[x + 1, y].type = type; } public static void Place3x2(int x, int y, ushort type, int style = 0) { if (x < 5 || x > Main.maxTilesX - 5 || y < 5 || y > Main.maxTilesY - 5) return; bool flag1 = false; bool flag2 = true; if (type == (ushort) 14 && style == 25) flag1 = true; int num1 = y - 1; if (flag1) num1 = y; for (int i = x - 1; i < x + 2; ++i) { for (int index = num1; index < y + 1; ++index) { if (Main.tile[i, index] == null) Main.tile[i, index] = new Tile(); if (Main.tile[i, index].active()) flag2 = false; if (type == (ushort) 215 && Main.tile[i, index].liquid > (byte) 0) flag2 = false; } if (Main.tile[i, y + 1] == null) Main.tile[i, y + 1] = new Tile(); if (type == (ushort) 285 || type == (ushort) 286 || type == (ushort) 298 || type == (ushort) 299 || type == (ushort) 310 || type >= (ushort) 361 && type <= (ushort) 364) { if (!WorldGen.SolidTile2(i, y + 1) && (!Main.tile[i, y + 1].nactive() || !Main.tileSolidTop[(int) Main.tile[i, y + 1].type] || Main.tile[i, y + 1].frameY != (short) 0)) flag2 = false; } else if (!WorldGen.SolidTile2(i, y + 1)) flag2 = false; } if (type == (ushort) 88) { if (Chest.CreateChest(x - 1, y - 1) == -1) flag2 = false; else if (Main.netMode == 1) NetMessage.SendData(34, number: 2, number2: ((float) x), number3: ((float) y), number4: ((float) style)); } if (!flag2) return; short num2 = (short) (54 * style); if (flag1) { Main.tile[x - 1, y].active(true); Main.tile[x - 1, y].frameY = (short) 0; Main.tile[x - 1, y].frameX = num2; Main.tile[x - 1, y].type = type; Main.tile[x, y].active(true); Main.tile[x, y].frameY = (short) 0; Main.tile[x, y].frameX = (short) ((int) num2 + 18); Main.tile[x, y].type = type; Main.tile[x + 1, y].active(true); Main.tile[x + 1, y].frameY = (short) 0; Main.tile[x + 1, y].frameX = (short) ((int) num2 + 36); Main.tile[x + 1, y].type = type; } else { Main.tile[x - 1, y - 1].active(true); Main.tile[x - 1, y - 1].frameY = (short) 0; Main.tile[x - 1, y - 1].frameX = num2; Main.tile[x - 1, y - 1].type = type; Main.tile[x, y - 1].active(true); Main.tile[x, y - 1].frameY = (short) 0; Main.tile[x, y - 1].frameX = (short) ((int) num2 + 18); Main.tile[x, y - 1].type = 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) ((int) num2 + 36); Main.tile[x + 1, y - 1].type = type; Main.tile[x - 1, y].active(true); Main.tile[x - 1, y].frameY = (short) 18; Main.tile[x - 1, y].frameX = num2; Main.tile[x - 1, y].type = type; Main.tile[x, y].active(true); Main.tile[x, y].frameY = (short) 18; Main.tile[x, y].frameX = (short) ((int) num2 + 18); Main.tile[x, y].type = type; Main.tile[x + 1, y].active(true); Main.tile[x + 1, y].frameY = (short) 18; Main.tile[x + 1, y].frameX = (short) ((int) num2 + 36); Main.tile[x + 1, y].type = type; } } public static void Place2x2Style(int x, int y, ushort type, int style = 0) { if (x < 5 || x > Main.maxTilesX - 5 || y < 5 || y > Main.maxTilesY - 5) return; short num1 = 0; if (type == (ushort) 254) num1 = (short) ((int) (short) (x % 12 / 2) * 36); bool flag = true; for (int i = x - 1; i < x + 1; ++i) { for (int index = y - 1; index < y + 1; ++index) { if (Main.tile[i, index] == null) Main.tile[i, index] = new Tile(); if (Main.tile[i, index].active()) flag = false; } if (Main.tile[i, y + 1] == null) Main.tile[i, y + 1] = new Tile(); if (!WorldGen.SolidTile(i, y + 1)) flag = false; if (type == (ushort) 254 && Main.tile[i, y + 1].type != (ushort) 2 && Main.tile[i, y + 1].type != (ushort) 109) flag = false; } if (!flag) return; short num2 = (short) (36 * style); Main.tile[x - 1, y - 1].active(true); Main.tile[x - 1, y - 1].frameY = num1; Main.tile[x - 1, y - 1].frameX = num2; Main.tile[x - 1, y - 1].type = type; Main.tile[x, y - 1].active(true); Main.tile[x, y - 1].frameY = num1; Main.tile[x, y - 1].frameX = (short) ((int) num2 + 18); Main.tile[x, y - 1].type = type; Main.tile[x - 1, y].active(true); Main.tile[x - 1, y].frameY = (short) ((int) num1 + 18); Main.tile[x - 1, y].frameX = num2; Main.tile[x - 1, y].type = type; Main.tile[x, y].active(true); Main.tile[x, y].frameY = (short) ((int) num1 + 18); Main.tile[x, y].frameX = (short) ((int) num2 + 18); Main.tile[x, y].type = type; } public static bool NearFriendlyWall(int x, int y) { try { if (x < 2 || x >= Main.maxTilesX - 2 || y < 2 || y >= Main.maxTilesY - 2 || Main.tile[x, y].wall == (byte) 0 || Main.wallHouse[(int) Main.tile[x, y].wall] || Main.tile[x - 1, y].wall == (byte) 0 || Main.wallHouse[(int) Main.tile[x - 1, y].wall] || Main.tile[x + 1, y].wall == (byte) 0 || Main.wallHouse[(int) Main.tile[x + 1, y].wall] || Main.tile[x, y - 1].wall == (byte) 0 || Main.wallHouse[(int) Main.tile[x, y - 1].wall] || Main.tile[x, y + 1].wall == (byte) 0) return true; if (Main.wallHouse[(int) Main.tile[x, y + 1].wall]) return true; } catch { } return false; } public static void Check2x2Style(int i, int j, int type) { if (WorldGen.destroyObject) return; bool flag = false; int num1 = j; int num2 = (int) Main.tile[i, j].frameY / 18; while (num2 > 1) num2 -= 2; int num3 = num1 - num2; int num4 = (int) Main.tile[i, j].frameX / 18; int num5 = 0; while (num4 > 1) { num4 -= 2; ++num5; } int num6 = i - num4; int num7 = num5 * 36; for (int i1 = num6; i1 < num6 + 2; ++i1) { for (int index = num3; index < num3 + 2; ++index) { if (Main.tile[i1, index] == null) Main.tile[i1, index] = new Tile(); if (!Main.tile[i1, index].active() || (int) Main.tile[i1, index].type != type || (int) Main.tile[i1, index].frameX != (i1 - num6) * 18 + num7) flag = true; } if (!WorldGen.SolidTileAllowBottomSlope(i1, num3 + 2)) flag = true; } if (!flag) return; int frameX = (int) Main.tile[i, j].frameX; WorldGen.destroyObject = true; for (int i2 = num6; i2 < num6 + 2; ++i2) { for (int j1 = num3; j1 < num3 + 2; ++j1) { if (Main.tile[i2, j1] == null) Main.tile[i2, j1] = new Tile(); if ((int) Main.tile[i2, j1].type == type && Main.tile[i2, j1].active()) WorldGen.KillTile(i2, j1); } } switch (type) { case 96: if (num5 == 0) Item.NewItem(i * 16, j * 16, 32, 32, 345); if (num5 == 1) { Item.NewItem(i * 16, j * 16, 32, 32, 1791); break; } break; case 254: if (frameX >= 72) { if (frameX < 108) { if (WorldGen.genRand.Next(2) == 0) { Item.NewItem(i * 16, j * 16, 32, 32, 1725, WorldGen.genRand.Next(1, 3)); break; } break; } if (frameX < 144) { Item.NewItem(i * 16, j * 16, 32, 32, 1725, WorldGen.genRand.Next(2, 6)); break; } Item.NewItem(i * 16, j * 16, 32, 32, 1725, WorldGen.genRand.Next(5, 11)); if (Main.halloween && WorldGen.genRand.Next(200) == 0) { Item.NewItem(i * 16, j * 16, 32, 32, 1799); break; } break; } break; case 441: int Type1 = -1; switch (num5) { case 0: Type1 = 3665; break; case 1: Type1 = 3666; break; case 3: Type1 = 3667; break; case 7: Type1 = 3668; break; case 8: Type1 = 3669; break; case 9: Type1 = 3670; break; case 10: Type1 = 3671; break; case 11: Type1 = 3672; break; case 12: Type1 = 3673; break; case 13: Type1 = 3674; break; case 14: Type1 = 3675; break; case 15: Type1 = 3676; break; case 16: Type1 = 3677; break; case 17: Type1 = 3678; break; case 18: Type1 = 3679; break; case 19: Type1 = 3680; break; case 20: Type1 = 3681; break; case 21: Type1 = 3682; break; case 22: Type1 = 3683; break; case 28: Type1 = 3684; break; case 29: Type1 = 3685; break; case 30: Type1 = 3686; break; case 31: Type1 = 3687; break; case 32: Type1 = 3688; break; case 33: Type1 = 3689; break; case 34: Type1 = 3690; break; case 35: Type1 = 3691; break; case 37: Type1 = 3692; break; case 39: Type1 = 3693; break; case 41: Type1 = 3694; break; case 42: Type1 = 3695; break; case 43: Type1 = 3696; break; case 44: Type1 = 3697; break; case 45: Type1 = 3698; break; case 46: Type1 = 3699; break; case 47: Type1 = 3700; break; case 48: Type1 = 3701; break; case 49: Type1 = 3702; break; case 50: Type1 = 3703; break; case 51: Type1 = 3704; break; } if (Type1 != -1) { Item.NewItem(i * 16, j * 16, 32, 32, Type1); break; } break; case 457: Item.NewItem(i * 16, j * 16, 32, 32, 3749); break; case 468: int Type2 = -1; switch (num5) { case 0: Type2 = 3886; break; case 1: Type2 = 3887; break; } if (Type2 != -1) { Item.NewItem(i * 16, j * 16, 32, 32, Type2); break; } break; } WorldGen.destroyObject = false; for (int i3 = num6 - 1; i3 < num6 + 3; ++i3) { for (int j2 = num3 - 1; j2 < num3 + 3; ++j2) WorldGen.TileFrame(i3, j2); } } public static void PlacePumpkin(int x, int superY) { ushort num1 = 254; int index1 = superY; int num2 = WorldGen.genRand.Next(6) * 36; if (x < 5 || x > Main.maxTilesX - 5 || index1 < 5 || index1 > Main.maxTilesY - 5) return; bool flag = true; for (int i = x - 1; i < x + 1; ++i) { for (int index2 = index1 - 1; index2 < index1 + 1; ++index2) { if (Main.tile[i, index2] == null) Main.tile[i, index2] = new Tile(); if (Main.tile[i, index2].active() && Main.tile[i, index2].type != (ushort) 3 && Main.tile[i, index2].type != (ushort) 73 && Main.tile[i, index2].type != (ushort) 113 && Main.tile[i, index2].type != (ushort) 110 && (Main.tile[i, index2].type != (ushort) 185 || Main.tile[i, index2].frameY != (short) 0)) flag = false; if (Main.tile[i, index2].liquid > (byte) 0) flag = false; } if (!WorldGen.SolidTile(i, index1 + 1) || Main.tile[i, index1 + 1].type != (ushort) 2 && Main.tile[i, index1 + 1].type != (ushort) 109) flag = false; } if (!flag) return; Main.tile[x - 1, index1 - 1].active(true); Main.tile[x - 1, index1 - 1].frameY = (short) num2; Main.tile[x - 1, index1 - 1].frameX = (short) 0; Main.tile[x - 1, index1 - 1].type = num1; Main.tile[x, index1 - 1].active(true); Main.tile[x, index1 - 1].frameY = (short) num2; Main.tile[x, index1 - 1].frameX = (short) 18; Main.tile[x, index1 - 1].type = num1; Main.tile[x - 1, index1].active(true); Main.tile[x - 1, index1].frameY = (short) (num2 + 18); Main.tile[x - 1, index1].frameX = (short) 0; Main.tile[x - 1, index1].type = num1; Main.tile[x, index1].active(true); Main.tile[x, index1].frameY = (short) (num2 + 18); Main.tile[x, index1].frameX = (short) 18; Main.tile[x, index1].type = num1; } public static void GrowPumpkin(int i, int j, int type) { if (WorldGen.destroyObject) return; bool flag = false; int num1 = j; int num2 = (int) Main.tile[i, j].frameY / 18; while (num2 > 1) num2 -= 2; int tileY = num1 - num2; int num3 = (int) Main.tile[i, j].frameX / 18; int num4 = 0; while (num3 > 1) { num3 -= 2; ++num4; } int tileX = i - num3; int num5 = num4 * 36; if (num4 >= 4) return; for (int i1 = tileX; i1 < tileX + 2; ++i1) { for (int index = tileY; index < tileY + 2; ++index) { if (Main.tile[i1, index] == null) Main.tile[i1, index] = new Tile(); if (!Main.tile[i1, index].active() || (int) Main.tile[i1, index].type != type || (int) Main.tile[i1, index].frameX != (i1 - tileX) * 18 + num5) flag = true; } if (!WorldGen.SolidTile(i1, tileY + 2) || Main.tile[i1, tileY + 2].type != (ushort) 2 && Main.tile[i1, tileY + 2].type != (ushort) 109) flag = true; } if (!flag) { 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 ((int) Main.tile[index1, index2].type == type && Main.tile[index1, index2].active()) Main.tile[index1, index2].frameX += (short) 36; } } } if (Main.netMode != 2) return; NetMessage.SendTileSquare(-1, tileX, tileY, 4); } public static void FixHearts() { for (int i = 0; i < Main.maxTilesX; ++i) { for (int j = 0; j < Main.maxTilesY; ++j) { Tile tile = Main.tile[i, j]; if (tile.active() && tile.type == (ushort) 12 && tile.frameX == (short) 0 && tile.frameY == (short) 0) WorldGen.FixHeart(i, j); } } } public static void DestroyHeart(int i, int j) { WorldGen.destroyObject = true; for (int i1 = i; i1 < i + 2; ++i1) { for (int j1 = j; j1 < j + 2; ++j1) { if (i1 < Main.maxTilesX && j1 < Main.maxTilesY) { Tile tile = Main.tile[i1, j1]; if (tile.active() && tile.type == (ushort) 12) WorldGen.KillTile(i1, j1); } } } WorldGen.destroyObject = false; } public static void FixHeart(int i, int j) { if (i < 40 || i >= Main.maxTilesX - 40 || j < 40 || j >= Main.maxTilesY - 40) { WorldGen.DestroyHeart(i, j); } else { Tile tile1 = Main.tile[i, j + 2]; Tile tile2 = Main.tile[i + 1, j + 2]; if (tile1.active() && !Main.tileSolid[(int) tile1.type] && Main.tileCut[(int) tile1.type]) WorldGen.KillTile(i, j + 2); if (tile2.active() && !Main.tileSolid[(int) tile2.type] && Main.tileCut[(int) tile2.type]) WorldGen.KillTile(i + 1, j + 2); if (!tile1.active()) { if (!tile2.active()) { WorldGen.DestroyHeart(i, j); return; } if (Main.tileSolid[(int) tile2.type]) { tile1.type = tile2.type; tile1.active(true); } } if (!tile2.active() && Main.tileSolid[(int) tile1.type]) { tile2.type = tile1.type; tile2.active(true); } if (!tile1.nactive() || !Main.tileSolid[(int) tile1.type] || !tile2.nactive() || !Main.tileSolid[(int) tile2.type]) { WorldGen.DestroyHeart(i, j); } else { if (tile1.blockType() != 0) { tile1.slope((byte) 0); tile1.halfBrick(false); } if (tile2.blockType() == 0) return; tile2.slope((byte) 0); tile2.halfBrick(false); } } } public static void FixChands() { for (int i = 5; i < Main.maxTilesX - 5; ++i) { for (int j = 5; j < Main.maxTilesY - 5; ++j) { if (Main.tile[i, j].active()) { int type = (int) Main.tile[i, j].type; if (Main.tile[i, j].active() && (type == 35 || type == 36 || type == 170 || type == 171 || type == 172)) WorldGen.FixChand(i, j); } } } } public static void FixChand(int i, int j) { int num1 = 0; int type = (int) Main.tile[i, j].type; if (Main.tile[i, j].active()) { if (type == 35) num1 = 1; if (type == 36) num1 = 2; if (type == 170) num1 = 3; if (type == 171) num1 = 4; if (type == 172) num1 = 5; } if (num1 <= 0) return; int num2 = j; int num3 = (int) Main.tile[i, j].frameX / 18; while (num3 >= 3) num3 -= 3; if (num3 >= 3) num3 -= 3; int num4 = i - num3; int num5 = num2 + (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) { Main.tile[index1, index2].type = (ushort) 34; Main.tile[index1, index2].frameY += (short) (num1 * 54); } } } } public static void PlaceChand(int x, int y, ushort type, int style = 0) { bool flag = true; int num1 = 0; for (int index1 = x - 1; index1 < x + 2; ++index1) { for (int index2 = y; index2 < y + 3; ++index2) { if (Main.tile[index1, index2] == null) Main.tile[index1, index2] = new Tile(); if (Main.tile[index1, index2].active()) flag = false; } } if (Main.tile[x, y - 1] == null) Main.tile[x, y - 1] = new Tile(); if (!Main.tile[x, y - 1].nactive() || !Main.tileSolid[(int) Main.tile[x, y - 1].type] || Main.tileSolidTop[(int) Main.tile[x, y - 1].type]) flag = false; if (!flag) return; int num2 = style / 36 * 108; int num3 = style * 18 * 3; Main.tile[x - 1, y + num1].active(true); Main.tile[x - 1, y + num1].frameY = (short) num3; Main.tile[x - 1, y + num1].frameX = (short) num2; Main.tile[x - 1, y + num1].type = type; Main.tile[x, y + num1].active(true); Main.tile[x, y + num1].frameY = (short) num3; Main.tile[x, y + num1].frameX = (short) (num2 + 18); Main.tile[x, y + num1].type = type; Main.tile[x + 1, y + num1].active(true); Main.tile[x + 1, y + num1].frameY = (short) num3; Main.tile[x + 1, y + num1].frameX = (short) (num2 + 36); Main.tile[x + 1, y + num1].type = type; Main.tile[x - 1, y + 1 + num1].active(true); Main.tile[x - 1, y + 1 + num1].frameY = (short) (num3 + 18); Main.tile[x - 1, y + 1 + num1].frameX = (short) num2; Main.tile[x - 1, y + 1 + num1].type = type; Main.tile[x, y + 1 + num1].active(true); Main.tile[x, y + 1 + num1].frameY = (short) (num3 + 18); Main.tile[x, y + 1 + num1].frameX = (short) (num2 + 18); Main.tile[x, y + 1 + num1].type = type; Main.tile[x + 1, y + 1 + num1].active(true); Main.tile[x + 1, y + 1 + num1].frameY = (short) (num3 + 18); Main.tile[x + 1, y + 1 + num1].frameX = (short) (num2 + 36); Main.tile[x + 1, y + 1 + num1].type = type; Main.tile[x - 1, y + 2 + num1].active(true); Main.tile[x - 1, y + 2 + num1].frameY = (short) (num3 + 36); Main.tile[x - 1, y + 2 + num1].frameX = (short) num2; Main.tile[x - 1, y + 2 + num1].type = type; Main.tile[x, y + 2 + num1].active(true); Main.tile[x, y + 2 + num1].frameY = (short) (num3 + 36); Main.tile[x, y + 2 + num1].frameX = (short) (num2 + 18); Main.tile[x, y + 2 + num1].type = type; Main.tile[x + 1, y + 2 + num1].active(true); Main.tile[x + 1, y + 2 + num1].frameY = (short) (num3 + 36); Main.tile[x + 1, y + 2 + num1].frameX = (short) (num2 + 36); Main.tile[x + 1, y + 2 + num1].type = type; } public static void CheckChand(int i, int j, int type) { if (WorldGen.destroyObject) return; bool flag = false; int num1 = 3; if (type == 454) num1 = 4; int num2 = (int) Main.tile[i, j].frameX / 18; int num3 = 0; for (; num2 >= num1; num2 -= num1) ++num3; int num4 = i - num2; int num5 = 18 * num1 * num3; if (num2 >= num1) num2 -= num1; int num6 = i - num2; int num7 = (int) Main.tile[i, j].frameY / 18; int num8 = 0; for (; num7 >= 3; num7 -= 3) ++num8; if (num5 >= 108) num8 += 37 * (num5 / 108); int num9 = 54 * num8; if (num5 >= 108) num9 -= 54 * (num5 / 108) * 37; if (num7 >= 3) num7 -= 3; int num10 = j - num7; for (int index1 = num6; index1 < num6 + num1; ++index1) { for (int index2 = num10; index2 < num10 + 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 - num4) * 18 + num5 || (int) Main.tile[index1, index2].frameY != (index2 - num10) * 18 + num9) flag = true; } } if (Main.tile[num6 + 1, num10 - 1] == null) Main.tile[num6 + 1, num10 - 1] = new Tile(); if (!Main.tile[num6 + 1, num10 - 1].nactive() || !Main.tileSolid[(int) Main.tile[num6 + 1, num10 - 1].type] || Main.tileSolidTop[(int) Main.tile[num6 + 1, num10 - 1].type]) flag = true; if (!flag) return; WorldGen.destroyObject = true; for (int i1 = num6; i1 < num6 + num1; ++i1) { for (int j1 = num10; j1 < num10 + 3; ++j1) { if ((int) Main.tile[i1, j1].type == type && Main.tile[i1, j1].active()) WorldGen.KillTile(i1, j1); } } if (type == 454) { switch (Main.rand.Next(9)) { case 2: case 3: case 4: int num11 = Main.rand.Next(10, 31); while (num11 > 0) { int Stack = Main.rand.Next(2, 11); if (Stack > num11) Stack = num11; num11 -= Stack; Item.NewItem(i * 16, j * 16, 32, 32, 72, Stack); } break; case 5: case 6: int num12 = Main.rand.Next(60, 80); while (num12 > 0) { int Stack = Main.rand.Next(3, 16); if (Stack > num12) Stack = num12; num12 -= Stack; Item.NewItem(i * 16 - 10, j * 16 - 10, 52, 52, 72, Stack); } Item.NewItem(i * 16, j * 16, 32, 32, 1358); break; case 7: int num13 = Main.rand.Next(10, 31); while (num13 > 0) { int Stack = Main.rand.Next(2, 9); if (Stack > num13) Stack = num13; num13 -= Stack; Item.NewItem(i * 16 - 10, j * 16 - 10, 52, 52, 72, Stack); } if (Main.rand.Next(8) == 0) Item.NewItem(i * 16, j * 16, 32, 32, 3532); if (Main.rand.Next(8) == 0) Item.NewItem(i * 16, j * 16, 32, 32, 3532); Item.NewItem(i * 16, j * 16, 32, 32, 73); break; case 8: int num14 = 100; while (num14 > 0) { int Stack = Main.rand.Next(3, 16); if (Stack > num14) Stack = num14; num14 -= Stack; Item.NewItem(i * 16 - 10, j * 16 - 10, 52, 52, 72, Stack); } int num15 = Main.rand.Next(30, 91); while (num15 > 0) { int Stack = Main.rand.Next(7, 14); if (Stack > num15) Stack = num15; num15 -= Stack; Item.NewItem(i * 16 - 10, j * 16 - 10, 52, 52, 1349, Stack); } Item.NewItem(i * 16, j * 16, 32, 32, 1358); Item.NewItem(i * 16, j * 16, 32, 32, 73); break; } } if (type == 34) { int Type = num8 != 1 ? (num8 != 2 ? (num8 != 3 ? (num8 != 4 ? (num8 != 5 ? (num8 != 6 ? (num8 < 7 || num8 > 17 ? (num8 < 18 || num8 > 21 ? (num8 != 22 ? (num8 != 23 ? (num8 != 24 ? (num8 != 25 ? (num8 != 26 ? (num8 != 27 ? (num8 != 28 ? (num8 != 29 ? (num8 != 30 ? (num8 != 31 ? (num8 != 32 ? (num8 != 33 ? (num8 != 34 ? (num8 != 35 ? (num8 != 36 ? (num8 != 37 ? 106 : 3894) : 3178) : 3179) : 3177) : 2813) : 2657) : 2656) : 2655) : 2654) : 2653) : 2652) : 2573) : 2558) : 2543) : 2525) : 2224) : 2141 + num8 - 18) : 2055 + num8 - 7) : 1812) : 712) : 711) : 710) : 108) : 107; Item.NewItem(i * 16, j * 16, 32, 32, Type); } WorldGen.destroyObject = false; for (int i2 = num6 - 1; i2 < num6 + num1 + 1; ++i2) { for (int j2 = num10 - 1; j2 < num10 + 4; ++j2) WorldGen.TileFrame(i2, j2); } } 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 = 0; for (; num2 >= 3; num2 -= 3) ++num3; int num4 = i - num2; int num5 = 54 * num3; int num6 = (int) Main.tile[i, j].frameY / 54; int num7 = (int) Main.tile[i, j].frameY % 54 / 18; if (num2 >= 3) num2 -= 3; int num8 = i - num2; int num9 = num1 - num7; for (int index1 = num8; index1 < num8 + 3; ++index1) { for (int index2 = num9; index2 < num9 + 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 - num4) * 18 + num5 || (int) Main.tile[index1, index2].frameY != (index2 - num9) * 18 + num6 * 54) flag = true; } } if (type == 106 || type == 212 || type == 219 || type == 220 || type == 228 || type == 231 || type == 243 || type == 247 || type == 283 || type >= 300 && type <= 308 || type == 354 || type == 355 || type == 406 || type == 412 || type == 452 || type == 455) { for (int i1 = num8; i1 < num8 + 3; ++i1) { if (Main.tile[i1, num9 + 3] == null) Main.tile[i1, num9 + 3] = new Tile(); if (!WorldGen.SolidTileAllowBottomSlope(i1, num9 + 3)) { flag = true; break; } } } else { if (Main.tile[num8 + 1, num9 - 1] == null) Main.tile[num8 + 1, num9 - 1] = new Tile(); if (!Main.tile[num8 + 1, num9 - 1].nactive() || !Main.tileSolid[(int) Main.tile[num8 + 1, num9 - 1].type] || Main.tileSolidTop[(int) Main.tile[num8 + 1, num9 - 1].type]) flag = true; } if (!flag) return; WorldGen.destroyObject = true; for (int i2 = num8; i2 < num8 + 3; ++i2) { for (int j1 = num9; j1 < num9 + 3; ++j1) { if ((int) Main.tile[i2, j1].type == type && Main.tile[i2, j1].active()) WorldGen.KillTile(i2, j1); } } switch (type) { case 106: Item.NewItem(i * 16, j * 16, 32, 32, 363); break; case 212: Item.NewItem(i * 16, j * 16, 32, 32, 951); break; case 219: Item.NewItem(i * 16, j * 16, 32, 32, 997); break; case 220: Item.NewItem(i * 16, j * 16, 32, 32, 998); break; case 228: Item.NewItem(i * 16, j * 16, 32, 32, 1120); break; case 243: Item.NewItem(i * 16, j * 16, 32, 32, 1430); break; case 247: Item.NewItem(i * 16, j * 16, 32, 32, 1551); break; case 283: Item.NewItem(i * 16, j * 16, 32, 32, 2172); break; default: if (type >= 300 && type <= 306) { Item.NewItem(i * 16, j * 16, 32, 32, 2192 + type - 300); break; } switch (type) { case 231: int num10 = (i + 1) * 16 + 8; int num11 = j * 16; Gore.NewGore(new Vector2((float) num10, (float) num11), new Vector2(), 300); Gore.NewGore(new Vector2((float) num10, (float) (num11 + 8)), new Vector2(), 301); Gore.NewGore(new Vector2((float) num10, (float) (num11 + 16)), new Vector2(), 302); float num12 = (float) (i * 16); float num13 = (float) (j * 16); float num14 = -1f; int plr = 0; for (int index = 0; index < (int) byte.MaxValue; ++index) { if (Main.player[index].active && !Main.player[index].dead) { float num15 = Math.Abs(Main.player[index].position.X - num12) + Math.Abs(Main.player[index].position.Y - num13); if ((double) num15 < (double) num14 || (double) num14 == -1.0) { plr = index; num14 = num15; } } } NPC.SpawnOnPlayer(plr, 222); break; case 307: Item.NewItem(i * 16, j * 16, 32, 32, 2203); break; case 308: Item.NewItem(i * 16, j * 16, 32, 32, 2204); break; case 354: Item.NewItem(i * 16, j * 16, 32, 32, 2999); break; case 355: Item.NewItem(i * 16, j * 16, 32, 32, 3000); break; case 406: Item.NewItem(i * 16, j * 16, 32, 32, 3365); break; case 412: Item.NewItem(i * 16, j * 16, 32, 32, 3549); break; case 452: Item.NewItem(i * 16, j * 16, 32, 32, 3742); break; case 455: Item.NewItem(i * 16, j * 16, 32, 32, 3747); break; } break; } WorldGen.destroyObject = false; for (int i3 = num8 - 1; i3 < num8 + 4; ++i3) { for (int j2 = num9 - 1; j2 < num9 + 4; ++j2) WorldGen.TileFrame(i3, j2); } } public static void Place3x3(int x, int y, ushort type, int style = 0) { bool flag = true; int num1 = 0; if (type == (ushort) 106 || type == (ushort) 212 || type == (ushort) 219 || type == (ushort) 220 || type == (ushort) 228 || type == (ushort) 231 || type == (ushort) 243 || type == (ushort) 247 || type == (ushort) 283 || type >= (ushort) 300 && type <= (ushort) 308 || type == (ushort) 354 || type == (ushort) 355) { num1 = -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 i = x - 1; i < x + 2; ++i) { if (Main.tile[i, y + 1] == null) Main.tile[i, y + 1] = new Tile(); if (!WorldGen.SolidTile2(i, y + 1)) { 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].nactive() || !Main.tileSolid[(int) Main.tile[x, y - 1].type] || Main.tileSolidTop[(int) Main.tile[x, y - 1].type]) flag = false; } if (!flag) return; int num2 = style * 18 * 3; Main.tile[x - 1, y + num1].active(true); Main.tile[x - 1, y + num1].frameY = (short) 0; Main.tile[x - 1, y + num1].frameX = (short) num2; Main.tile[x - 1, y + num1].type = type; Main.tile[x, y + num1].active(true); Main.tile[x, y + num1].frameY = (short) 0; Main.tile[x, y + num1].frameX = (short) (num2 + 18); Main.tile[x, y + num1].type = type; Main.tile[x + 1, y + num1].active(true); Main.tile[x + 1, y + num1].frameY = (short) 0; Main.tile[x + 1, y + num1].frameX = (short) (num2 + 36); Main.tile[x + 1, y + num1].type = type; Main.tile[x - 1, y + 1 + num1].active(true); Main.tile[x - 1, y + 1 + num1].frameY = (short) 18; Main.tile[x - 1, y + 1 + num1].frameX = (short) num2; Main.tile[x - 1, y + 1 + num1].type = type; Main.tile[x, y + 1 + num1].active(true); Main.tile[x, y + 1 + num1].frameY = (short) 18; Main.tile[x, y + 1 + num1].frameX = (short) (num2 + 18); Main.tile[x, y + 1 + num1].type = type; Main.tile[x + 1, y + 1 + num1].active(true); Main.tile[x + 1, y + 1 + num1].frameY = (short) 18; Main.tile[x + 1, y + 1 + num1].frameX = (short) (num2 + 36); Main.tile[x + 1, y + 1 + num1].type = type; Main.tile[x - 1, y + 2 + num1].active(true); Main.tile[x - 1, y + 2 + num1].frameY = (short) 36; Main.tile[x - 1, y + 2 + num1].frameX = (short) num2; Main.tile[x - 1, y + 2 + num1].type = type; Main.tile[x, y + 2 + num1].active(true); Main.tile[x, y + 2 + num1].frameY = (short) 36; Main.tile[x, y + 2 + num1].frameX = (short) (num2 + 18); Main.tile[x, y + 2 + num1].type = type; Main.tile[x + 1, y + 2 + num1].active(true); Main.tile[x + 1, y + 2 + num1].frameY = (short) 36; Main.tile[x + 1, y + 2 + num1].frameX = (short) (num2 + 36); Main.tile[x + 1, y + 2 + num1].type = type; } public static void PlaceSunflower(int x, int y, ushort 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].nactive() || Main.tile[index1, y + 1].halfBrick() || Main.tile[index1, y + 1].slope() != (byte) 0 || Main.tile[index1, y + 1].type != (ushort) 2 && Main.tile[index1, y + 1].type != (ushort) 109) flag = false; } if (!flag) return; int num1 = WorldGen.genRand.Next(3); for (int index3 = 0; index3 < 2; ++index3) { for (int index4 = -3; index4 < 1; ++index4) { int num2 = index3 * 18 + WorldGen.genRand.Next(3) * 36; if (index4 <= -2) num2 = index3 * 18 + num1 * 36; int num3 = (index4 + 3) * 18; Main.tile[x + index3, y + index4].active(true); Main.tile[x + index3, y + index4].frameX = (short) num2; Main.tile[x + index3, y + index4].frameY = (short) num3; Main.tile[x + index3, y + index4].type = type; } } } public static void FixSunflowers() { for (int i = 5; i < Main.maxTilesX - 5; ++i) { for (int j = 5; (double) j < Main.worldSurface; ++j) { if (Main.tile[i, j].active() && Main.tile[i, j].type == (ushort) 27) WorldGen.FixSunflower(i, j); } } } public static void FixSunflower(int i, int j) { if (Main.tile[i, j].type != (ushort) 27) return; 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; int num6 = WorldGen.genRand.Next(3) * 36; int num7 = 0; for (int index1 = num5; index1 < num5 + 2; ++index1) { for (int index2 = num4; index2 < num4 + 4; ++index2) Main.tile[index1, index2].frameX = (short) (num7 + num6); num7 += 18; } } 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 i1 = num5; i1 < num5 + 2; ++i1) { for (int index = num4; index < num4 + 4; ++index) { if (Main.tile[i1, index] == null) Main.tile[i1, index] = new Tile(); int num6 = (int) Main.tile[i1, index].frameX / 18; while (num6 > 1) num6 -= 2; if (!Main.tile[i1, index].nactive() || (int) Main.tile[i1, index].type != type || num6 != i1 - num5 || (int) Main.tile[i1, index].frameY != (index - num4) * 18) flag = true; } if (Main.tile[i1, num4 + 4] == null) Main.tile[i1, num4 + 4] = new Tile(); if (!Main.tile[i1, num4 + 4].nactive() || Main.tile[i1, num4 + 4].type != (ushort) 2 && Main.tile[i1, num4 + 4].type != (ushort) 109) flag = true; if (!WorldGen.SolidTile(i1, num4 + 4)) flag = true; } if (!flag) return; WorldGen.destroyObject = true; for (int i2 = num5; i2 < num5 + 2; ++i2) { for (int j1 = num4; j1 < num4 + 4; ++j1) { if ((int) Main.tile[i2, j1].type == type && Main.tile[i2, j1].active()) WorldGen.KillTile(i2, j1); } } Item.NewItem(i * 16, j * 16, 32, 32, 63); WorldGen.destroyObject = false; } public static void CheckDye(int x, int y) { switch ((int) Main.tile[x, y].frameX / 34) { case 6: if (Main.tile[x, y + 1].nactive() && Main.tile[x, y + 1].type == (ushort) 80) break; WorldGen.KillTile(x, y); break; case 7: if (WorldGen.SolidTile(x, y - 1)) break; WorldGen.KillTile(x, y); break; default: if (WorldGen.SolidTile(x, y + 1)) break; WorldGen.KillTile(x, y); break; } } public static void PlaceDye(int x, int y, int style) { bool flag = false; if (style == 7) { if (Main.tile[x, y + 1].active() && Main.tile[x, y + 1].type != (ushort) 3 && Main.tile[x, y + 1].type != (ushort) 51 && Main.tile[x, y + 1].type != (ushort) 61 && Main.tile[x, y + 1].type != (ushort) 73 && Main.tile[x, y + 1].type != (ushort) 74 && Main.tile[x, y + 1].type != (ushort) 184) return; if (WorldGen.SolidTile(x, y - 1) && !Main.tile[x, y + 1].active()) flag = true; } else { if (Main.tile[x, y - 1].active() && Main.tile[x, y - 1].type != (ushort) 3 && Main.tile[x, y - 1].type != (ushort) 51 && Main.tile[x, y - 1].type != (ushort) 61 && Main.tile[x, y - 1].type != (ushort) 73 && Main.tile[x, y - 1].type != (ushort) 74 && Main.tile[x, y - 1].type != (ushort) 184) return; if (style == 6) { if (Main.tile[x, y + 1].nactive() && Main.tile[x, y + 1].type == (ushort) 80 && !Main.tile[x - 1, y + 1].active() && !Main.tile[x + 1, y + 1].active()) flag = true; } else if (WorldGen.SolidTile(x, y + 1) && !Main.tile[x, y - 1].active()) { switch (style) { case 5: if (Main.tile[x, y].liquid == byte.MaxValue) { flag = true; break; } break; case 8: case 9: case 10: case 11: flag = true; break; default: if (Main.tile[x, y].liquid == (byte) 0) { if (style == 3 || style == 4) { if (Main.tile[x, y].wall == (byte) 0) { flag = true; break; } break; } flag = true; break; } break; } } } if (!flag) return; Main.tile[x, y].type = (ushort) 227; Main.tile[x, y].active(true); Main.tile[x, y].halfBrick(false); Main.tile[x, y].slope((byte) 0); Main.tile[x, y].frameY = (short) 0; Main.tile[x, y].frameX = (short) (34 * style); } public static bool PlacePot(int x, int y, ushort type = 28, int style = 0) { 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].nactive() || Main.tile[index1, y + 1].halfBrick() || Main.tile[index1, y + 1].slope() != (byte) 0 || !Main.tileSolid[(int) Main.tile[index1, y + 1].type]) flag = false; } if (!flag) return false; int num1 = WorldGen.genRand.Next(3) * 36; for (int index3 = 0; index3 < 2; ++index3) { for (int index4 = -1; index4 < 1; ++index4) { int num2 = index3 * 18 + num1; int num3 = (index4 + 1) * 18; Main.tile[x + index3, y + index4].active(true); Main.tile[x + index3, y + index4].frameX = (short) num2; Main.tile[x + index3, y + index4].frameY = (short) (num3 + style * 36); Main.tile[x + index3, y + index4].type = type; Main.tile[x + index3, y + index4].halfBrick(false); } } return true; } public static bool CheckCactus(int i, int j) { int index1 = j; int index2 = i; while (Main.tile[index2, index1] != null && Main.tile[index2, index1].active() && Main.tile[index2, index1].type == (ushort) 80) { ++index1; if (Main.tile[index2, index1] == null) return false; if (!Main.tile[index2, index1].active() || Main.tile[index2, index1].type != (ushort) 80) { if (Main.tile[index2 - 1, index1] != null && Main.tile[index2 - 1, index1].active() && Main.tile[index2 - 1, index1].type == (ushort) 80 && Main.tile[index2 - 1, index1 - 1] != null && Main.tile[index2 - 1, index1 - 1].active() && Main.tile[index2 - 1, index1 - 1].type == (ushort) 80 && index2 >= i) --index2; if (Main.tile[index2 + 1, index1] != null && Main.tile[index2 + 1, index1].active() && Main.tile[index2 + 1, index1].type == (ushort) 80 && Main.tile[index2 + 1, index1 - 1] != null && Main.tile[index2 + 1, index1 - 1].active() && Main.tile[index2 + 1, index1 - 1].type == (ushort) 80 && index2 <= i) ++index2; } } if (!Main.tile[index2, index1].nactive() || Main.tile[index2, index1].halfBrick() || Main.tile[index2, index1].slope() != (byte) 0 || Main.tile[index2, index1].type != (ushort) 53 && Main.tile[index2, index1].type != (ushort) 112 && Main.tile[index2, index1].type != (ushort) 116 && Main.tile[index2, index1].type != (ushort) 234) { WorldGen.KillTile(i, j); return true; } if (i != index2) { if ((!Main.tile[i, j + 1].active() || Main.tile[i, j + 1].type != (ushort) 80) && (!Main.tile[i - 1, j].active() || Main.tile[i - 1, j].type != (ushort) 80) && (!Main.tile[i + 1, j].active() || Main.tile[i + 1, j].type != (ushort) 80)) { WorldGen.KillTile(i, j); return true; } } else if (i == index2 && (!Main.tile[i, j + 1].active() || Main.tile[i, j + 1].type != (ushort) 80 && Main.tile[i, j + 1].type != (ushort) 53 && Main.tile[i, j + 1].type != (ushort) 112 && Main.tile[i, j + 1].type != (ushort) 116 && Main.tile[i, j + 1].type != (ushort) 234)) { 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) { int frameX = (int) Main.tile[i, j].frameX; bool flag = false; if (frameX >= 36) flag = true; if (WorldGen.destroyObject) return; int num1 = Main.tile[i, j].frameX == (short) 0 || Main.tile[i, j].frameX == (short) 36 ? i : i - 1; int num2 = Main.tile[i, j].frameY != (short) 0 ? j - 1 : j; for (int index1 = 0; index1 < 2; ++index1) { for (int index2 = 0; index2 < 2; ++index2) { Tile tile = Main.tile[num1 + index1, num2 + index2]; if (tile != null && (!tile.nactive() || (int) tile.type != type)) { WorldGen.destroyObject = true; break; } } if (!WorldGen.destroyObject) { if (type == 12) { Tile tile = Main.tile[num1 + index1, num2 + 2]; if (tile != null && (!tile.nactive() || !Main.tileSolid[(int) tile.type] || tile.blockType() != 0)) { WorldGen.destroyObject = true; break; } } } else break; } if (!WorldGen.destroyObject) return; for (int i1 = num1; i1 < num1 + 2; ++i1) { for (int j1 = num2; j1 < num2 + 2; ++j1) { if ((int) Main.tile[i1, j1].type == type) WorldGen.KillTile(i1, j1); } } if (Main.netMode != 1 && !WorldGen.noTileActions) { switch (type) { case 12: Item.NewItem(num1 * 16, num2 * 16, 32, 32, 29); break; case 31: if (WorldGen.genRand.Next(2) == 0) WorldGen.spawnMeteor = true; if (flag) { int num3 = Main.rand.Next(5); if (!WorldGen.shadowOrbSmashed) num3 = 0; switch (num3) { case 0: Item.NewItem(num1 * 16, num2 * 16, 32, 32, 800, pfix: -1); int Stack = WorldGen.genRand.Next(100, 101); Item.NewItem(num1 * 16, num2 * 16, 32, 32, 97, Stack); break; case 1: Item.NewItem(num1 * 16, num2 * 16, 32, 32, 1256, pfix: -1); break; case 2: Item.NewItem(num1 * 16, num2 * 16, 32, 32, 802, pfix: -1); break; case 3: Item.NewItem(num1 * 16, num2 * 16, 32, 32, 3062, pfix: -1); break; case 4: Item.NewItem(num1 * 16, num2 * 16, 32, 32, 1290, pfix: -1); break; } } else { int num4 = Main.rand.Next(5); if (!WorldGen.shadowOrbSmashed) num4 = 0; switch (num4) { case 0: Item.NewItem(num1 * 16, num2 * 16, 32, 32, 96, pfix: -1); int Stack = WorldGen.genRand.Next(100, 101); Item.NewItem(num1 * 16, num2 * 16, 32, 32, 97, Stack); break; case 1: Item.NewItem(num1 * 16, num2 * 16, 32, 32, 64, pfix: -1); break; case 2: Item.NewItem(num1 * 16, num2 * 16, 32, 32, 162, pfix: -1); break; case 3: Item.NewItem(num1 * 16, num2 * 16, 32, 32, 115, pfix: -1); break; case 4: Item.NewItem(num1 * 16, num2 * 16, 32, 32, 111, pfix: -1); break; } } WorldGen.shadowOrbSmashed = true; ++WorldGen.shadowOrbCount; if (WorldGen.shadowOrbCount >= 3) { WorldGen.shadowOrbCount = 0; float num5 = (float) (num1 * 16); float num6 = (float) (num2 * 16); float num7 = -1f; int plr = 0; for (int index = 0; index < (int) byte.MaxValue; ++index) { float num8 = Math.Abs(Main.player[index].position.X - num5) + Math.Abs(Main.player[index].position.Y - num6); if ((double) num8 < (double) num7 || (double) num7 == -1.0) { plr = index; num7 = num8; } } if (flag) NPC.SpawnOnPlayer(plr, 266); else NPC.SpawnOnPlayer(plr, 13); } else { LocalizedText localizedText = Lang.misc[10]; if (WorldGen.shadowOrbCount == 2) localizedText = Lang.misc[11]; switch (Main.netMode) { case 0: Main.NewText(localizedText.ToString(), (byte) 50, B: (byte) 130); break; case 2: NetMessage.BroadcastChatMessage(NetworkText.FromKey(localizedText.Key), new Color(50, (int) byte.MaxValue, 130)); break; } } AchievementsHelper.NotifyProgressionEvent(7); break; } } if (flag) Main.PlaySound(4, i * 16, j * 16); else Main.PlaySound(13, i * 16, j * 16); WorldGen.destroyObject = false; } public static void CheckPalmTree(int i, int j) { int num1 = -1; int num2 = -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, j - 1] != null && Main.tile[i, j - 1].active()) num1 = (int) Main.tile[i, j - 1].type; if (Main.tile[i, j + 1] != null && Main.tile[i, j + 1].active()) num2 = (int) Main.tile[i, j + 1].type; if (num2 == 53) num2 = 53; if (num2 == 234) num2 = 53; if (num2 == 116) num2 = 53; if (num2 == 112) num2 = 53; if (num2 != 53 && num2 != type) WorldGen.KillTile(i, j); if ((Main.tile[i, j].frameX == (short) 66 || Main.tile[i, j].frameX == (short) 220) && num2 != 53) WorldGen.KillTile(i, j); if (num1 != type && Main.tile[i, j].frameX <= (short) 44) Main.tile[i, j].frameX = (short) (WorldGen.genRand.Next(7, 10) * 22); else if (num1 != type && Main.tile[i, j].frameX == (short) 66) Main.tile[i, j].frameX = (short) 220; 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 CheckTree(int i, int j) { int num1 = -1; int num2 = -1; int num3 = -1; int num4 = -1; int type1 = (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()) num2 = (int) Main.tile[i - 1, j].type; if (Main.tile[i + 1, j] != null && Main.tile[i + 1, j].active()) num3 = (int) Main.tile[i + 1, j].type; if (Main.tile[i, j - 1] != null && Main.tile[i, j - 1].active()) num1 = (int) Main.tile[i, j - 1].type; if (Main.tile[i, j + 1] != null && Main.tile[i, j + 1].active()) num4 = (int) Main.tile[i, j + 1].type; if (Main.tile[i - 1, j - 1] != null && Main.tile[i - 1, j - 1].active()) { int type2 = (int) Main.tile[i - 1, j - 1].type; } if (Main.tile[i + 1, j - 1] != null && Main.tile[i + 1, j - 1].active()) { int type3 = (int) Main.tile[i + 1, j - 1].type; } if (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 (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 (num4 == 23) num4 = 2; if (num4 == 60) num4 = 2; if (num4 == 70) num4 = 2; if (num4 == 109) num4 = 2; if (num4 == 147) num4 = 2; if (num4 == 199) num4 = 2; if (num4 != 2 && num4 != type1 && (Main.tile[i, j].frameX == (short) 0 && Main.tile[i, j].frameY <= (short) 130 || Main.tile[i, j].frameX == (short) 22 && Main.tile[i, j].frameY <= (short) 130 || Main.tile[i, j].frameX == (short) 44 && Main.tile[i, j].frameY <= (short) 130)) WorldGen.KillTile(i, j); 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 (num4 != 2) WorldGen.KillTile(i, j); else if ((Main.tile[i, j].frameX != (short) 22 || num2 != type1) && (Main.tile[i, j].frameX != (short) 44 || num3 != type1)) 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 (num2 == type1 && num3 == type1) { 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 (num2 == type1) { 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 (num3 == type1) { 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 (num4 != 2) WorldGen.KillTile(i, j); if (num2 != type1 && num3 != type1) { 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 (num2 != type1) { 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 (num3 != type1) { 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 (num3 != type1) 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 (num2 != type1) WorldGen.KillTile(i, j); } else if (num4 == -1 || num4 == 23) WorldGen.KillTile(i, j); else if (num1 != type1 && 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 (num2 == type1 || num3 == type1) { if (num4 == type1) { if (num2 == type1 && num3 == type1) { 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 (num2 == type1) { 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 (num3 == type1) { 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 (num2 == type1 && num3 == type1) { 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 (num2 == type1) { 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 (num3 == type1) { 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 Convert(int i, int j, int conversionType, int size = 4) { for (int index1 = i - size; index1 <= i + size; ++index1) { for (int index2 = j - size; index2 <= j + size; ++index2) { if (WorldGen.InWorld(index1, index2, 1) && Math.Abs(index1 - i) + Math.Abs(index2 - j) < 6) { int type = (int) Main.tile[index1, index2].type; int wall = (int) Main.tile[index1, index2].wall; switch (conversionType) { case 1: if (type <= 470 && wall <= 231) { if (WallID.Sets.Conversion.Grass[wall] && wall != 69) { Main.tile[index1, index2].wall = (byte) 69; WorldGen.SquareWallFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (WallID.Sets.Conversion.Stone[wall] && wall != 3) { Main.tile[index1, index2].wall = (byte) 3; WorldGen.SquareWallFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (WallID.Sets.Conversion.HardenedSand[wall] && wall != 217) { Main.tile[index1, index2].wall = (byte) 217; WorldGen.SquareWallFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (WallID.Sets.Conversion.Sandstone[wall] && wall != 220) { Main.tile[index1, index2].wall = (byte) 220; WorldGen.SquareWallFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } if ((Main.tileMoss[type] || TileID.Sets.Conversion.Stone[type]) && type != 25) { Main.tile[index1, index2].type = (ushort) 25; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (TileID.Sets.Conversion.Grass[type] && type != 23) { Main.tile[index1, index2].type = (ushort) 23; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (TileID.Sets.Conversion.Ice[type] && type != 163) { Main.tile[index1, index2].type = (ushort) 163; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (TileID.Sets.Conversion.Sand[type] && type != 112) { Main.tile[index1, index2].type = (ushort) 112; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (TileID.Sets.Conversion.HardenedSand[type] && type != 398) { Main.tile[index1, index2].type = (ushort) 398; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (TileID.Sets.Conversion.Sandstone[type] && type != 400) { Main.tile[index1, index2].type = (ushort) 400; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (TileID.Sets.Conversion.Thorn[type] && type != 32) { Main.tile[index1, index2].type = (ushort) 32; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } if (type == 59 && (Main.tile[index1 - 1, index2].type == (ushort) 23 || Main.tile[index1 + 1, index2].type == (ushort) 23 || Main.tile[index1, index2 - 1].type == (ushort) 23 || Main.tile[index1, index2 + 1].type == (ushort) 23)) { Main.tile[index1, index2].type = (ushort) 0; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); continue; } continue; } continue; case 2: if (type <= 470 && wall <= 231) { if (WallID.Sets.Conversion.Grass[wall] && wall != 70) { Main.tile[index1, index2].wall = (byte) 70; WorldGen.SquareWallFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (WallID.Sets.Conversion.Stone[wall] && wall != 28) { Main.tile[index1, index2].wall = (byte) 28; WorldGen.SquareWallFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (WallID.Sets.Conversion.HardenedSand[wall] && wall != 219) { Main.tile[index1, index2].wall = (byte) 219; WorldGen.SquareWallFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (WallID.Sets.Conversion.Sandstone[wall] && wall != 222) { Main.tile[index1, index2].wall = (byte) 222; WorldGen.SquareWallFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } if ((Main.tileMoss[type] || TileID.Sets.Conversion.Stone[type]) && type != 117) { Main.tile[index1, index2].type = (ushort) 117; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (TileID.Sets.Conversion.Grass[type] && type != 109) { Main.tile[index1, index2].type = (ushort) 109; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (TileID.Sets.Conversion.Ice[type] && type != 164) { Main.tile[index1, index2].type = (ushort) 164; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (TileID.Sets.Conversion.Sand[type] && type != 116) { Main.tile[index1, index2].type = (ushort) 116; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (TileID.Sets.Conversion.HardenedSand[type] && type != 402) { Main.tile[index1, index2].type = (ushort) 402; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (TileID.Sets.Conversion.Sandstone[type] && type != 403) { Main.tile[index1, index2].type = (ushort) 403; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (TileID.Sets.Conversion.Thorn[type]) { WorldGen.KillTile(index1, index2); if (Main.netMode == 1) NetMessage.SendData(17, number2: ((float) index1), number3: ((float) index2)); } if (type == 59 && (Main.tile[index1 - 1, index2].type == (ushort) 109 || Main.tile[index1 + 1, index2].type == (ushort) 109 || Main.tile[index1, index2 - 1].type == (ushort) 109 || Main.tile[index1, index2 + 1].type == (ushort) 109)) { Main.tile[index1, index2].type = (ushort) 0; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); continue; } continue; } continue; case 3: if (Main.tile[index1, index2].wall == (byte) 64 || Main.tile[index1, index2].wall == (byte) 15) { Main.tile[index1, index2].wall = (byte) 80; WorldGen.SquareWallFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 3); } if (Main.tile[index1, index2].type == (ushort) 60) { Main.tile[index1, index2].type = (ushort) 70; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 3); continue; } if (TileID.Sets.Conversion.Thorn[type]) { WorldGen.KillTile(index1, index2); if (Main.netMode == 1) { NetMessage.SendData(17, number2: ((float) index1), number3: ((float) index2)); continue; } continue; } continue; case 4: if (type <= 470 && wall <= 231) { if (WallID.Sets.Conversion.Grass[wall] && wall != 81) { Main.tile[index1, index2].wall = (byte) 81; WorldGen.SquareWallFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (WallID.Sets.Conversion.Stone[wall] && wall != 83) { Main.tile[index1, index2].wall = (byte) 83; WorldGen.SquareWallFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (WallID.Sets.Conversion.HardenedSand[wall] && wall != 218) { Main.tile[index1, index2].wall = (byte) 218; WorldGen.SquareWallFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (WallID.Sets.Conversion.Sandstone[wall] && wall != 221) { Main.tile[index1, index2].wall = (byte) 221; WorldGen.SquareWallFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } if ((Main.tileMoss[type] || TileID.Sets.Conversion.Stone[type]) && type != 203) { Main.tile[index1, index2].type = (ushort) 203; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (TileID.Sets.Conversion.Grass[type] && type != 199) { Main.tile[index1, index2].type = (ushort) 199; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (TileID.Sets.Conversion.Ice[type] && type != 200) { Main.tile[index1, index2].type = (ushort) 200; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (TileID.Sets.Conversion.Sand[type] && type != 234) { Main.tile[index1, index2].type = (ushort) 234; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (TileID.Sets.Conversion.HardenedSand[type] && type != 399) { Main.tile[index1, index2].type = (ushort) 399; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (TileID.Sets.Conversion.Sandstone[type] && type != 401) { Main.tile[index1, index2].type = (ushort) 401; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (TileID.Sets.Conversion.Thorn[type] && type != 352) { Main.tile[index1, index2].type = (ushort) 352; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } if (type == 59 && (Main.tile[index1 - 1, index2].type == (ushort) 199 || Main.tile[index1 + 1, index2].type == (ushort) 199 || Main.tile[index1, index2 - 1].type == (ushort) 199 || Main.tile[index1, index2 + 1].type == (ushort) 199)) { Main.tile[index1, index2].type = (ushort) 0; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); continue; } continue; } continue; default: if (Main.tile[index1, index2].wall == (byte) 69 || Main.tile[index1, index2].wall == (byte) 70 || Main.tile[index1, index2].wall == (byte) 81) { Main.tile[index1, index2].wall = (double) index2 >= Main.worldSurface ? (byte) 64 : (WorldGen.genRand.Next(10) != 0 ? (byte) 63 : (byte) 65); WorldGen.SquareWallFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (Main.tile[index1, index2].wall == (byte) 3 || Main.tile[index1, index2].wall == (byte) 28 || Main.tile[index1, index2].wall == (byte) 83) { Main.tile[index1, index2].wall = (byte) 1; WorldGen.SquareWallFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (Main.tile[index1, index2].wall == (byte) 80) { if ((double) index2 < Main.worldSurface + 4.0 + (double) WorldGen.genRand.Next(3) || (double) index2 > ((double) Main.maxTilesY + Main.rockLayer) / 2.0 - 3.0 + (double) WorldGen.genRand.Next(3)) { Main.tile[index1, index2].wall = (byte) 15; WorldGen.SquareWallFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 3); } else { Main.tile[index1, index2].wall = (byte) 64; WorldGen.SquareWallFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 3); } } else if (WallID.Sets.Conversion.HardenedSand[wall] && wall != 216) { Main.tile[index1, index2].wall = (byte) 216; WorldGen.SquareWallFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } else if (WallID.Sets.Conversion.Sandstone[wall] && wall != 187) { Main.tile[index1, index2].wall = (byte) 187; WorldGen.SquareWallFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); } if (Main.tile[index1, index2].type == (ushort) 23 || Main.tile[index1, index2].type == (ushort) 109 || Main.tile[index1, index2].type == (ushort) 199) { Main.tile[index1, index2].type = (ushort) 2; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); continue; } if (Main.tile[index1, index2].type == (ushort) 117 || Main.tile[index1, index2].type == (ushort) 25 || Main.tile[index1, index2].type == (ushort) 203) { Main.tile[index1, index2].type = (ushort) 1; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); continue; } if (Main.tile[index1, index2].type == (ushort) 112 || Main.tile[index1, index2].type == (ushort) 116 || Main.tile[index1, index2].type == (ushort) 234) { Main.tile[index1, index2].type = (ushort) 53; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); continue; } if (Main.tile[index1, index2].type == (ushort) 398 || Main.tile[index1, index2].type == (ushort) 402 || Main.tile[index1, index2].type == (ushort) 399) { Main.tile[index1, index2].type = (ushort) 397; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); continue; } if (Main.tile[index1, index2].type == (ushort) 400 || Main.tile[index1, index2].type == (ushort) 403 || Main.tile[index1, index2].type == (ushort) 401) { Main.tile[index1, index2].type = (ushort) 396; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); continue; } if (Main.tile[index1, index2].type == (ushort) 164 || Main.tile[index1, index2].type == (ushort) 163 || Main.tile[index1, index2].type == (ushort) 200) { Main.tile[index1, index2].type = (ushort) 161; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); continue; } if (Main.tile[index1, index2].type == (ushort) 70) { Main.tile[index1, index2].type = (ushort) 60; WorldGen.SquareTileFrame(index1, index2); NetMessage.SendTileSquare(-1, index1, index2, 1); continue; } if (Main.tile[index1, index2].type == (ushort) 32 || Main.tile[index1, index2].type == (ushort) 352) { WorldGen.KillTile(index1, index2); if (Main.netMode == 1) { NetMessage.SendData(17, number2: ((float) index1), number3: ((float) index2)); continue; } continue; } continue; } } } } } 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 == (ushort) 80) { ++index1; if (Main.tile[index2, index1] == null) return; if (!Main.tile[index2, index1].active() || Main.tile[index2, index1].type != (ushort) 80) { if (Main.tile[index2 - 1, index1] != null && Main.tile[index2 - 1, index1].active() && Main.tile[index2 - 1, index1].type == (ushort) 80 && Main.tile[index2 - 1, index1 - 1].active() && Main.tile[index2 - 1, index1 - 1].type == (ushort) 80 && index2 >= i) --index2; if (Main.tile[index2 + 1, index1] != null && Main.tile[index2 + 1, index1].active() && Main.tile[index2 + 1, index1].type == (ushort) 80 && Main.tile[index2 + 1, index1 - 1].active() && Main.tile[index2 + 1, index1 - 1].type == (ushort) 80 && index2 <= i) ++index2; } } int num1 = index1 - 1; int num2 = i - index2; num1 = j; if (Main.tile[i - 2, j] == null) return; int type = (int) Main.tile[i - 2, j].type; if (Main.tile[i - 1, j] == null) return; int num3 = (int) Main.tile[i - 1, j].type; if (Main.tile[i + 1, j] == null) return; int num4 = (int) Main.tile[i + 1, j].type; int num5 = (int) Main.tile[i, j - 1].type; if (num5 == 227) num5 = 80; 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) 18; 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.DiamondTileFrame(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].nactive() || Main.tile[i, j].halfBrick() || Main.tile[i, j].slope() != (byte) 0 || Main.tile[i, j - 1].liquid > (byte) 0 || Main.tile[i, j].type != (ushort) 53 && Main.tile[i, j].type != (ushort) 80 && Main.tile[i, j].type != (ushort) 234 && Main.tile[i, j].type != (ushort) 112 && Main.tile[i, j].type != (ushort) 116) return; if (Main.tile[i, j].type == (ushort) 53 || Main.tile[i, j].type == (ushort) 112 || Main.tile[i, j].type == (ushort) 116 || Main.tile[i, j].type == (ushort) 234) { 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 == (ushort) 80) { ++num1; if (num1 >= 4) return; } if (Main.tile[index2, index3].type != (ushort) 53 && Main.tile[index2, index3].type != (ushort) 112 && Main.tile[index2, index3].type != (ushort) 116) { if (Main.tile[index2, index3].type != (ushort) 234) continue; } ++num2; } } catch { } } } if (num2 <= 10) return; Main.tile[i, j - 1].active(true); Main.tile[i, j - 1].type = (ushort) 80; if (Main.netMode == 2) NetMessage.SendTileSquare(-1, i, j - 1, 1); WorldGen.SquareTileFrame(i1, index1 - 1); } else { if (Main.tile[i, j].type != (ushort) 80) return; while (Main.tile[i1, index1].active() && Main.tile[i1, index1].type == (ushort) 80) { ++index1; if (!Main.tile[i1, index1].active() || Main.tile[i1, index1].type != (ushort) 80) { if (Main.tile[i1 - 1, index1].active() && Main.tile[i1 - 1, index1].type == (ushort) 80 && Main.tile[i1 - 1, index1 - 1].active() && Main.tile[i1 - 1, index1 - 1].type == (ushort) 80 && i1 >= i) --i1; if (Main.tile[i1 + 1, index1].active() && Main.tile[i1 + 1, index1].type == (ushort) 80 && Main.tile[i1 + 1, index1 - 1].active() && Main.tile[i1 + 1, index1 - 1].type == (ushort) 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 == (ushort) 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 = (ushort) 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 == (ushort) 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 = (ushort) 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 = (ushort) 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 == (ushort) 80 || Main.tile[index6, index7 - 1].active()) return; Main.tile[index6, index7 - 1].active(true); Main.tile[index6, index7 - 1].type = (ushort) 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 != (ushort) 80) return; Main.tile[index6, index7 - 1].active(true); Main.tile[index6, index7 - 1].type = (ushort) 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; while (num3 > 1) num3 -= 2; int num4 = num3 * -1 + i; int num5 = (int) Main.tile[i, j].frameY / 18; int num6 = 0; while (num5 > 1) { num5 -= 2; ++num6; } int num7 = num2 - num5; for (int i1 = num4; i1 < num4 + 2; ++i1) { for (int index = num7; index < num7 + 2; ++index) { if (Main.tile[i1, index] == null) Main.tile[i1, index] = new Tile(); int num8 = (int) Main.tile[i1, index].frameX / 18; while (num8 > 1) num8 -= 2; if (!Main.tile[i1, index].active() || (int) Main.tile[i1, index].type != type || num8 != i1 - num4 || (int) Main.tile[i1, index].frameY != (index - num7) * 18 + num6 * 36) flag = true; } if (Main.tile[i1, num7 + 2] == null) Main.tile[i1, num7 + 2] = new Tile(); if (!WorldGen.SolidTile2(i1, num7 + 2)) flag = true; } if (!flag) return; WorldGen.destroyObject = true; if (num6 >= 7 && num6 <= 9) Main.PlaySound(6, i * 16, j * 16); else if (num6 >= 16 && num6 <= 24) Main.PlaySound(4, i * 16, j * 16); else Main.PlaySound(13, i * 16, j * 16); for (int i2 = num4; i2 < num4 + 2; ++i2) { for (int j1 = num7; j1 < num7 + 2; ++j1) { if ((int) Main.tile[i2, j1].type == type && Main.tile[i2, j1].active()) WorldGen.KillTile(i2, j1); } } float num9 = 1f; switch (num6) { case 0: 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); break; case 1: Gore.NewGore(new Vector2((float) (i * 16), (float) (j * 16)), new Vector2(), 166); Gore.NewGore(new Vector2((float) (i * 16), (float) (j * 16)), new Vector2(), 167); Gore.NewGore(new Vector2((float) (i * 16), (float) (j * 16)), new Vector2(), 168); break; case 2: Gore.NewGore(new Vector2((float) (i * 16), (float) (j * 16)), new Vector2(), 169); Gore.NewGore(new Vector2((float) (i * 16), (float) (j * 16)), new Vector2(), 170); Gore.NewGore(new Vector2((float) (i * 16), (float) (j * 16)), new Vector2(), 171); break; case 3: Gore.NewGore(new Vector2((float) (i * 16), (float) (j * 16)), new Vector2(), 172); Gore.NewGore(new Vector2((float) (i * 16), (float) (j * 16)), new Vector2(), 173); Gore.NewGore(new Vector2((float) (i * 16), (float) (j * 16)), new Vector2(), 174); break; default: if (num6 >= 4 && num6 <= 6) { Gore.NewGore(new Vector2((float) (i * 16), (float) (j * 16)), new Vector2(), 197); Gore.NewGore(new Vector2((float) (i * 16), (float) (j * 16)), new Vector2(), 198); num9 = 1.25f; break; } if (num6 >= 7 && num6 <= 9) { Gore.NewGore(new Vector2((float) (i * 16), (float) (j * 16)), new Vector2(), 199); Gore.NewGore(new Vector2((float) (i * 16), (float) (j * 16)), new Vector2(), 200); num9 = 1.75f; break; } if (num6 >= 10 && num6 <= 12) { Gore.NewGore(new Vector2((float) (i * 16), (float) (j * 16)), new Vector2(), 201); Gore.NewGore(new Vector2((float) (i * 16), (float) (j * 16)), new Vector2(), 202); num9 = 1.9f; break; } if (num6 >= 13 && num6 <= 15) { Gore.NewGore(new Vector2((float) (i * 16), (float) (j * 16)), new Vector2(), 203); Gore.NewGore(new Vector2((float) (i * 16), (float) (j * 16)), new Vector2(), 204); num9 = 2.1f; break; } if (num6 >= 16 && num6 <= 18) { num9 = 1.6f; break; } if (num6 >= 19 && num6 <= 21) { num9 = 3.5f; break; } if (num6 >= 22 && num6 <= 24) { num9 = 1.6f; break; } if (num6 >= 25 && num6 <= 27) { num9 = 10f; Gore.NewGore(new Vector2((float) (i * 16), (float) (j * 16)), new Vector2(), WorldGen.genRand.Next(217, 220)); Gore.NewGore(new Vector2((float) (i * 16), (float) (j * 16)), new Vector2(), WorldGen.genRand.Next(217, 220)); break; } if (num6 >= 28 && num6 <= 30) { Gore.NewGore(new Vector2((float) (i * 16), (float) (j * 16)), new Vector2(), WorldGen.genRand.Next(315, 317)); Gore.NewGore(new Vector2((float) (i * 16), (float) (j * 16)), new Vector2(), WorldGen.genRand.Next(315, 317)); if (Main.hardMode) { num9 = 4f; break; } break; } if (num6 >= 31 && num6 <= 33) { int num10 = WorldGen.genRand.Next(2, 5); for (int index = 0; index < num10; ++index) Gore.NewGore(new Vector2((float) (i * 16), (float) (j * 16)), new Vector2(), 698 + WorldGen.genRand.Next(6)); num9 = 2f; break; } break; } float num11 = (float) (((double) num9 * 2.0 + 1.0) / 3.0); int maxValue = (int) (250.0 / (((double) num11 + 1.0) / 2.0)); if (!WorldGen.gen) { if (Main.rand.Next(maxValue) == 0) { if (Main.netMode != 1) Projectile.NewProjectile((float) (i * 16 + 16), (float) (j * 16 + 16), 0.0f, -12f, 518, 0, 0.0f, Main.myPlayer); } else if (WorldGen.genRand.Next(40) == 0 && Main.wallDungeon[(int) Main.tile[i, j].wall] && (double) j > Main.worldSurface) Item.NewItem(i * 16, j * 16, 16, 16, 327); else if (WorldGen.genRand.Next(45) == 0 || Main.rand.Next(45) == 0 && Main.expertMode) { if ((double) j < Main.worldSurface) { int num12 = WorldGen.genRand.Next(10); if (num12 == 0) Item.NewItem(i * 16, j * 16, 16, 16, 292); if (num12 == 1) Item.NewItem(i * 16, j * 16, 16, 16, 298); if (num12 == 2) Item.NewItem(i * 16, j * 16, 16, 16, 299); if (num12 == 3) Item.NewItem(i * 16, j * 16, 16, 16, 290); if (num12 == 4) Item.NewItem(i * 16, j * 16, 16, 16, 2322); if (num12 == 5) Item.NewItem(i * 16, j * 16, 16, 16, 2324); if (num12 == 6) Item.NewItem(i * 16, j * 16, 16, 16, 2325); if (num12 >= 7) Item.NewItem(i * 16, j * 16, 16, 16, 2350); } else if ((double) j < Main.rockLayer) { int num13 = WorldGen.genRand.Next(11); if (num13 == 0) Item.NewItem(i * 16, j * 16, 16, 16, 289); if (num13 == 1) Item.NewItem(i * 16, j * 16, 16, 16, 298); if (num13 == 2) Item.NewItem(i * 16, j * 16, 16, 16, 299); if (num13 == 3) Item.NewItem(i * 16, j * 16, 16, 16, 290); if (num13 == 4) Item.NewItem(i * 16, j * 16, 16, 16, 303); if (num13 == 5) Item.NewItem(i * 16, j * 16, 16, 16, 291); if (num13 == 6) Item.NewItem(i * 16, j * 16, 16, 16, 304); if (num13 == 7) Item.NewItem(i * 16, j * 16, 16, 16, 2322); if (num13 == 8) Item.NewItem(i * 16, j * 16, 16, 16, 2329); if (num13 >= 9) Item.NewItem(i * 16, j * 16, 16, 16, 2350); } else if (j < Main.maxTilesY - 200) { int num14 = WorldGen.genRand.Next(15); if (num14 == 0) Item.NewItem(i * 16, j * 16, 16, 16, 296); if (num14 == 1) Item.NewItem(i * 16, j * 16, 16, 16, 295); if (num14 == 2) Item.NewItem(i * 16, j * 16, 16, 16, 299); if (num14 == 3) Item.NewItem(i * 16, j * 16, 16, 16, 302); if (num14 == 4) Item.NewItem(i * 16, j * 16, 16, 16, 303); if (num14 == 5) Item.NewItem(i * 16, j * 16, 16, 16, 305); if (num14 == 6) Item.NewItem(i * 16, j * 16, 16, 16, 301); if (num14 == 7) Item.NewItem(i * 16, j * 16, 16, 16, 302); if (num14 == 8) Item.NewItem(i * 16, j * 16, 16, 16, 297); if (num14 == 9) Item.NewItem(i * 16, j * 16, 16, 16, 304); if (num14 == 10) Item.NewItem(i * 16, j * 16, 16, 16, 2322); if (num14 == 11) Item.NewItem(i * 16, j * 16, 16, 16, 2323); if (num14 == 12) Item.NewItem(i * 16, j * 16, 16, 16, 2327); if (num14 == 13) Item.NewItem(i * 16, j * 16, 16, 16, 2329); if (num14 == 14) Item.NewItem(i * 16, j * 16, 16, 16, 2350); } else { int num15 = WorldGen.genRand.Next(14); if (num15 == 0) Item.NewItem(i * 16, j * 16, 16, 16, 296); if (num15 == 1) Item.NewItem(i * 16, j * 16, 16, 16, 295); if (num15 == 2) Item.NewItem(i * 16, j * 16, 16, 16, 293); if (num15 == 3) Item.NewItem(i * 16, j * 16, 16, 16, 288); if (num15 == 4) Item.NewItem(i * 16, j * 16, 16, 16, 294); if (num15 == 5) Item.NewItem(i * 16, j * 16, 16, 16, 297); if (num15 == 6) Item.NewItem(i * 16, j * 16, 16, 16, 304); if (num15 == 7) Item.NewItem(i * 16, j * 16, 16, 16, 305); if (num15 == 8) Item.NewItem(i * 16, j * 16, 16, 16, 301); if (num15 == 9) Item.NewItem(i * 16, j * 16, 16, 16, 302); if (num15 == 10) Item.NewItem(i * 16, j * 16, 16, 16, 288); if (num15 == 11) Item.NewItem(i * 16, j * 16, 16, 16, 300); if (num15 == 12) Item.NewItem(i * 16, j * 16, 16, 16, 2323); if (num15 == 13) Item.NewItem(i * 16, j * 16, 16, 16, 2326); } } else if (Main.netMode == 2 && Main.rand.Next(30) == 0) { Item.NewItem(i * 16, j * 16, 16, 16, 2997); } else { int num16 = Main.rand.Next(8); if (Main.expertMode) --num16; if (num16 == 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)].statLifeMax2) { Item.NewItem(i * 16, j * 16, 16, 16, 58); if (Main.rand.Next(2) == 0) Item.NewItem(i * 16, j * 16, 16, 16, 58); if (Main.expertMode) { if (Main.rand.Next(2) == 0) Item.NewItem(i * 16, j * 16, 16, 16, 58); if (Main.rand.Next(2) == 0) Item.NewItem(i * 16, j * 16, 16, 16, 58); } } else if (num16 == 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)].statManaMax2) { Item.NewItem(i * 16, j * 16, 16, 16, 184); } else { switch (num16) { case 2: int Stack1 = Main.rand.Next(2, 6); if (Main.expertMode) Stack1 += Main.rand.Next(1, 7); 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(10, 21); 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; int Stack3 = 1; if (Main.expertMode && Main.rand.Next(3) != 0) ++Stack3; Item.NewItem(i * 16, j * 16, 16, 16, Type2, Stack3); break; default: if (num16 == 5 && (double) j > Main.rockLayer) { int Stack4 = Main.rand.Next(4) + 1; if (Main.expertMode) Stack4 += Main.rand.Next(4); Item.NewItem(i * 16, j * 16, 16, 16, 166, Stack4); break; } if ((num16 == 5 || num16 == 6) && j < Main.maxTilesY - 200 && !Main.hardMode) { int Stack5 = Main.rand.Next(20, 41); Item.NewItem(i * 16, j * 16, 16, 16, 965, Stack5); break; } float num17 = (float) (200 + WorldGen.genRand.Next(-100, 101)); if ((double) j < Main.worldSurface) num17 *= 0.5f; else if ((double) j < Main.rockLayer) num17 *= 0.75f; else if (j > Main.maxTilesY - 250) num17 *= 1.25f; float num18 = num17 * (float) (1.0 + (double) Main.rand.Next(-20, 21) * 0.00999999977648258); if (Main.rand.Next(4) == 0) num18 *= (float) (1.0 + (double) Main.rand.Next(5, 11) * 0.00999999977648258); if (Main.rand.Next(8) == 0) num18 *= (float) (1.0 + (double) Main.rand.Next(10, 21) * 0.00999999977648258); if (Main.rand.Next(12) == 0) num18 *= (float) (1.0 + (double) Main.rand.Next(20, 41) * 0.00999999977648258); if (Main.rand.Next(16) == 0) num18 *= (float) (1.0 + (double) Main.rand.Next(40, 81) * 0.00999999977648258); if (Main.rand.Next(20) == 0) num18 *= (float) (1.0 + (double) Main.rand.Next(50, 101) * 0.00999999977648258); if (Main.expertMode) num18 *= 2.5f; if (Main.expertMode && Main.rand.Next(2) == 0) num18 *= 1.25f; if (Main.expertMode && Main.rand.Next(3) == 0) num18 *= 1.5f; if (Main.expertMode && Main.rand.Next(4) == 0) num18 *= 1.75f; float num19 = num18 * num11; if (NPC.downedBoss1) num19 *= 1.1f; if (NPC.downedBoss2) num19 *= 1.1f; if (NPC.downedBoss3) num19 *= 1.1f; if (NPC.downedMechBoss1) num19 *= 1.1f; if (NPC.downedMechBoss2) num19 *= 1.1f; if (NPC.downedMechBoss3) num19 *= 1.1f; if (NPC.downedPlantBoss) num19 *= 1.1f; if (NPC.downedQueenBee) num19 *= 1.1f; if (NPC.downedGolemBoss) num19 *= 1.1f; if (NPC.downedPirates) num19 *= 1.1f; if (NPC.downedGoblins) num19 *= 1.1f; if (NPC.downedFrost) num19 *= 1.1f; while ((int) num19 > 0) { if ((double) num19 > 1000000.0) { int Stack6 = (int) ((double) num19 / 1000000.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; num19 -= (float) (1000000 * Stack6); Item.NewItem(i * 16, j * 16, 16, 16, 74, Stack6); } else if ((double) num19 > 10000.0) { int Stack7 = (int) ((double) num19 / 10000.0); if (Stack7 > 50 && Main.rand.Next(2) == 0) Stack7 /= Main.rand.Next(3) + 1; if (Main.rand.Next(2) == 0) Stack7 /= Main.rand.Next(3) + 1; num19 -= (float) (10000 * Stack7); Item.NewItem(i * 16, j * 16, 16, 16, 73, Stack7); } else if ((double) num19 > 100.0) { int Stack8 = (int) ((double) num19 / 100.0); if (Stack8 > 50 && Main.rand.Next(2) == 0) Stack8 /= Main.rand.Next(3) + 1; if (Main.rand.Next(2) == 0) Stack8 /= Main.rand.Next(3) + 1; num19 -= (float) (100 * Stack8); Item.NewItem(i * 16, j * 16, 16, 16, 72, Stack8); } else { int Stack9 = (int) num19; if (Stack9 > 50 && Main.rand.Next(2) == 0) Stack9 /= Main.rand.Next(3) + 1; if (Main.rand.Next(2) == 0) Stack9 /= Main.rand.Next(4) + 1; if (Stack9 < 1) Stack9 = 1; num19 -= (float) Stack9; Item.NewItem(i * 16, j * 16, 16, 16, 71, Stack9); } } break; } } } } WorldGen.destroyObject = false; } public static int PlaceChest(int x, int y, ushort type = 21, bool notNearOtherChests = false, int style = 0) { int num = -1; TileObject objectData; if (TileObject.CanPlace(x, y, (int) type, style, 1, out objectData)) { bool flag = true; if (notNearOtherChests && Chest.NearOtherChests(x - 1, y - 1)) flag = false; if (flag) { TileObject.Place(objectData); num = Chest.CreateChest(objectData.xCoord, objectData.yCoord); } } else num = -1; if (num != -1 && Main.netMode == 1 && type == (ushort) 21) NetMessage.SendData(34, number2: ((float) x), number3: ((float) y), number4: ((float) style)); if (num != -1 && Main.netMode == 1 && type == (ushort) 467) NetMessage.SendData(34, number: 4, number2: ((float) x), number3: ((float) y), number4: ((float) style)); return num; } public static void PlaceChestDirect(int x, int y, ushort type, int style, int id) { Chest.CreateChest(x, y - 1, id); for (int index1 = 0; index1 <= 1; ++index1) { for (int index2 = -1; index2 <= 0; ++index2) { if (Main.tile[x + index1, y + index2] == null) Main.tile[x + index1, y + index2] = new Tile(); } } 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 = type; Main.tile[x, y - 1].halfBrick(false); 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 = type; Main.tile[x + 1, y - 1].halfBrick(false); 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 = type; Main.tile[x, y].halfBrick(false); 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 = type; Main.tile[x + 1, y].halfBrick(false); } public static void PlaceDresserDirect(int x, int y, ushort type, int style, int id) { Chest.CreateChest(x - 1, y - 1, id); for (int index1 = -1; index1 <= 1; ++index1) { for (int index2 = -1; index2 <= 0; ++index2) { if (Main.tile[x + index1, y + index2] == null) Main.tile[x + index1, y + index2] = new Tile(); } } short num = (short) (style * 54); 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 = type; Main.tile[x, y - 1].active(true); Main.tile[x, y - 1].frameY = (short) 0; Main.tile[x, y - 1].frameX = (short) ((int) num + 18); Main.tile[x, y - 1].type = 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) ((int) num + 36); Main.tile[x + 1, y - 1].type = 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 = type; Main.tile[x, y].active(true); Main.tile[x, y].frameY = (short) 18; Main.tile[x, y].frameX = (short) ((int) num + 18); Main.tile[x, y].type = type; Main.tile[x + 1, y].active(true); Main.tile[x + 1, y].frameY = (short) 18; Main.tile[x + 1, y].frameX = (short) ((int) num + 36); Main.tile[x + 1, y].type = type; } 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 i1 = num3 * -1 + i; 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(); int num5 = (int) Main.tile[index1, index2].frameX / 18; while (num5 > 1) num5 -= 2; if (!Main.tile[index1, index2].active() || (int) Main.tile[index1, index2].type != type || num5 != index1 - i1 || (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 index3 = (int) Main.tile[i, j].frameX / 36; int Type = type != 467 ? Chest.chestItemSpawn[index3] : Chest.chestItemSpawn2[index3]; WorldGen.destroyObject = true; for (int index4 = i1; index4 < i1 + 2; ++index4) { for (int index5 = num4; index5 < num4 + 3; ++index5) { if ((int) Main.tile[index4, index5].type == type && Main.tile[index4, index5].active()) { Chest.DestroyChest(index4, index5); WorldGen.KillTile(index4, index5); } } } Item.NewItem(i * 16, j * 16, 32, 32, Type); WorldGen.destroyObject = false; if (Main.tile[i1, num4 + 2].type != (ushort) 138 && Main.tile[i1 + 1, num4 + 2].type != (ushort) 138) return; WorldGen.SquareTileFrame(i1, num4 + 2); } public static bool PlaceActuator(int i, int j) { if (Main.tile[i, j].actuator()) return false; Main.PlaySound(0, i * 16, j * 16); Main.tile[i, j].actuator(true); return true; } public static bool KillActuator(int i, int j) { if (!Main.tile[i, j].actuator()) return false; Main.PlaySound(0, i * 16, j * 16); Main.tile[i, j].actuator(false); if (Main.netMode != 1) Item.NewItem(i * 16, j * 16, 16, 16, 849); 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 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 PlaceWire2(int i, int j) { if (Main.tile[i, j].wire2()) return false; Main.PlaySound(0, i * 16, j * 16); Main.tile[i, j].wire2(true); return true; } public static bool KillWire2(int i, int j) { if (!Main.tile[i, j].wire2()) return false; Main.PlaySound(0, i * 16, j * 16); Main.tile[i, j].wire2(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 PlaceWire3(int i, int j) { if (Main.tile[i, j].wire3()) return false; Main.PlaySound(0, i * 16, j * 16); Main.tile[i, j].wire3(true); return true; } public static bool KillWire3(int i, int j) { if (!Main.tile[i, j].wire3()) return false; Main.PlaySound(0, i * 16, j * 16); Main.tile[i, j].wire3(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 PlaceWire4(int i, int j) { if (Main.tile[i, j].wire4()) return false; Main.PlaySound(0, i * 16, j * 16); Main.tile[i, j].wire4(true); return true; } public static bool KillWire4(int i, int j) { if (!Main.tile[i, j].wire4()) return false; Main.PlaySound(0, i * 16, j * 16); Main.tile[i, j].wire4(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 >= 470) return false; bool flag = false; if (i >= 0 && j >= 0 && i < Main.maxTilesX && j < Main.maxTilesY) { Tile trackCache = Main.tile[i, j]; if (trackCache == null) { trackCache = new Tile(); Main.tile[i, j] = trackCache; } if (forced || Collision.EmptyTile(i, j) || !Main.tileSolid[type] || type == 23 && trackCache.type == (ushort) 0 && trackCache.active() || type == 199 && trackCache.type == (ushort) 0 && trackCache.active() || type == 2 && trackCache.type == (ushort) 0 && trackCache.active() || type == 109 && trackCache.type == (ushort) 0 && trackCache.active() || type == 60 && trackCache.type == (ushort) 59 && trackCache.active() || type == 70 && trackCache.type == (ushort) 59 && trackCache.active()) { if (type == 23 && (trackCache.type != (ushort) 0 || !trackCache.active()) || type == 2 && (trackCache.type != (ushort) 0 || !trackCache.active()) || type == 109 && (trackCache.type != (ushort) 0 || !trackCache.active()) || type == 60 && (trackCache.type != (ushort) 59 || !trackCache.active())) return false; if (type == 81) { 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, j - 1].active() || !Main.tile[i, j + 1].active() || !Main.tileSolid[(int) Main.tile[i, j + 1].type] || Main.tile[i, j + 1].halfBrick() || Main.tile[i, j + 1].slope() != (byte) 0) return false; } if ((type == 373 || type == 375 || type == 374 || type == 461) && (Main.tile[i, j - 1] == null || Main.tile[i, j - 1].bottomSlope())) return false; if (trackCache.liquid > (byte) 0) { if (type == 4) { if (style != 8 && style != 11) return false; } else if (type == 3 || type == 20 || type == 24 || type == 27 || type == 32 || type == 51 || type == 69 || type == 72 || type == 201 || type == 352) return false; } if (type != 2 || Main.tile[i, j].type != (ushort) 0) { trackCache.halfBrick(false); trackCache.frameY = (short) 0; trackCache.frameX = (short) 0; } if (type == 3 || type == 24 || type == 110 || type == 201) { if (j + 1 < Main.maxTilesY && Main.tile[i, j + 1].active() && Main.tile[i, j + 1].slope() == (byte) 0 && !Main.tile[i, j + 1].halfBrick() && (Main.tile[i, j + 1].type == (ushort) 2 && type == 3 || Main.tile[i, j + 1].type == (ushort) 23 && type == 24 || Main.tile[i, j + 1].type == (ushort) 199 && type == 201 || (Main.tile[i, j + 1].type == (ushort) 78 || Main.tile[i, j + 1].type == (ushort) 380) && type == 3 || Main.tile[i, j + 1].type == (ushort) 109 && type == 110)) { if (type == 24 && WorldGen.genRand.Next(13) == 0) { trackCache.active(true); trackCache.type = (ushort) 32; WorldGen.SquareTileFrame(i, j); } else if (type == 201 && WorldGen.genRand.Next(13) == 0) { trackCache.active(true); trackCache.type = (ushort) 352; WorldGen.SquareTileFrame(i, j); } else if (Main.tile[i, j + 1].type == (ushort) 78 || Main.tile[i, j + 1].type == (ushort) 380) { trackCache.active(true); trackCache.type = (ushort) type; trackCache.frameX = (short) (WorldGen.genRand.Next(2) * 18 + 108); } else if ((trackCache.wall == (byte) 0 || trackCache.wall == (byte) 106 || trackCache.wall == (byte) 107 || trackCache.wall >= (byte) 63 && trackCache.wall <= (byte) 70) && (Main.tile[i, j + 1].wall == (byte) 0 || Main.tile[i, j + 1].wall == (byte) 106 || Main.tile[i, j + 1].wall == (byte) 107 || Main.tile[i, j + 1].wall >= (byte) 63 && Main.tile[i, j + 1].wall <= (byte) 70)) { if (type == 3 && WorldGen.genRand.Next(35) == 0) { trackCache.active(true); trackCache.type = (ushort) type; trackCache.frameX = (short) (WorldGen.genRand.Next(2) * 18 + 162); } else if (WorldGen.genRand.Next(50) == 0 || (type == 24 || type == 201) && WorldGen.genRand.Next(40) == 0) { trackCache.active(true); trackCache.type = (ushort) type; trackCache.frameX = type != 201 ? (short) 144 : (short) 270; } else if (WorldGen.genRand.Next(35) == 0) { trackCache.active(true); trackCache.type = (ushort) type; trackCache.frameX = (short) (WorldGen.genRand.Next(2) * 18 + 108); } else { trackCache.active(true); trackCache.type = (ushort) type; trackCache.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].slope() == (byte) 0 && !Main.tile[i, j + 1].halfBrick() && Main.tile[i, j + 1].type == (ushort) 60) { if (WorldGen.genRand.Next(16) == 0 && (double) j > Main.worldSurface) { trackCache.active(true); trackCache.type = (ushort) 69; WorldGen.SquareTileFrame(i, j); break; } if (WorldGen.genRand.Next(60) == 0 && (double) j > Main.rockLayer) { trackCache.active(true); trackCache.type = (ushort) type; trackCache.frameX = (short) 144; break; } if (WorldGen.genRand.Next(300) == 0 && (double) j > Main.rockLayer) { trackCache.active(true); trackCache.type = (ushort) type; trackCache.frameX = (short) 162; break; } if (WorldGen.genRand.Next(15) == 0) { trackCache.active(true); trackCache.type = (ushort) type; trackCache.frameX = WorldGen.genRand.Next(3) == 0 ? (short) (WorldGen.genRand.Next(13) * 18 + 180) : (short) (WorldGen.genRand.Next(2) * 18 + 108); break; } trackCache.active(true); trackCache.type = (ushort) type; trackCache.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].slope() == (byte) 0 && !Main.tile[i, j + 1].halfBrick() && Main.tile[i, j + 1].type == (ushort) 70) { trackCache.active(true); trackCache.type = (ushort) type; trackCache.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)) { trackCache.active(true); trackCache.type = (ushort) type; trackCache.frameX = (short) (WorldGen.genRand.Next(18) * 18); WorldGen.SquareTileFrame(i, j); break; } break; case 171: WorldGen.PlaceXmasTree(i, j); break; case 178: if (WorldGen.SolidTile(i - 1, j) || WorldGen.SolidTile(i + 1, j) || WorldGen.SolidTile(i, j - 1) || WorldGen.SolidTile(i, j + 1)) { trackCache.active(true); trackCache.type = (ushort) type; trackCache.frameX = (short) (style * 18); trackCache.frameY = (short) (WorldGen.genRand.Next(3) * 18); WorldGen.SquareTileFrame(i, j); break; } break; case 184: if (Main.tileMoss[(int) Main.tile[i - 1, j].type] && WorldGen.SolidTile(i - 1, j) || Main.tileMoss[(int) Main.tile[i + 1, j].type] && WorldGen.SolidTile(i + 1, j) || Main.tileMoss[(int) Main.tile[i, j - 1].type] && WorldGen.SolidTile(i, j - 1) || Main.tileMoss[(int) Main.tile[i, j + 1].type] && WorldGen.SolidTile(i, j + 1)) { trackCache.active(true); trackCache.type = (ushort) type; trackCache.frameX = (short) (style * 18); trackCache.frameY = (short) (WorldGen.genRand.Next(3) * 18); WorldGen.SquareTileFrame(i, j); break; } break; case 254: WorldGen.Place2x2Style(i, j, (ushort) type, style); break; case 335: WorldGen.Place2x2(i, j, (ushort) type, 0); break; default: if (type == 319 || type == 132 || type == 138 || type == 142 || type == 143 || type == 282 || type >= 288 && type <= 295 || type >= 316 && type <= 318) { WorldGen.Place2x2(i, j, (ushort) type, 0); 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(); Tile tile1 = Main.tile[i - 1, j]; Tile tile2 = Main.tile[i + 1, j]; Tile tile3 = Main.tile[i, j + 1]; if (trackCache.wall > (byte) 0 || tile1.active() && (tile1.slope() == (byte) 0 || (int) tile1.slope() % 2 != 1) && (Main.tileSolid[(int) tile1.type] && !Main.tileSolidTop[(int) tile1.type] && !TileID.Sets.NotReallySolid[(int) tile1.type] || tile1.type == (ushort) 124 || tile1.type == (ushort) 5 && Main.tile[i - 1, j - 1].type == (ushort) 5 && Main.tile[i - 1, j + 1].type == (ushort) 5) || tile2.active() && (tile2.slope() == (byte) 0 || (int) tile2.slope() % 2 != 0) && (Main.tileSolid[(int) tile2.type] && !Main.tileSolidTop[(int) tile2.type] && !TileID.Sets.NotReallySolid[(int) tile2.type] || tile2.type == (ushort) 124 || tile2.type == (ushort) 5 && Main.tile[i + 1, j - 1].type == (ushort) 5 && Main.tile[i + 1, j + 1].type == (ushort) 5) || tile3.active() && Main.tileSolid[(int) tile3.type] && (!Main.tileSolidTop[(int) tile3.type] || TileID.Sets.Platforms[(int) tile3.type] && tile3.slope() == (byte) 0) && !TileID.Sets.NotReallySolid[(int) tile3.type] && !tile3.halfBrick() && tile3.slope() == (byte) 0) { trackCache.active(true); trackCache.type = (ushort) type; trackCache.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, style); 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, 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].nactive() && !Main.tile[i - 1, j].halfBrick() && !TileID.Sets.NotReallySolid[(int) Main.tile[i - 1, j].type] && Main.tile[i - 1, j].slope() == (byte) 0 && (WorldGen.SolidTile(i - 1, j) || Main.tile[i - 1, j].type == (ushort) 124 || Main.tile[i - 1, j].type == (ushort) 5 && Main.tile[i - 1, j - 1].type == (ushort) 5 && Main.tile[i - 1, j + 1].type == (ushort) 5) || Main.tile[i + 1, j].nactive() && !Main.tile[i + 1, j].halfBrick() && !TileID.Sets.NotReallySolid[(int) Main.tile[i + 1, j].type] && Main.tile[i + 1, j].slope() == (byte) 0 && (WorldGen.SolidTile(i + 1, j) || Main.tile[i + 1, j].type == (ushort) 124 || Main.tile[i + 1, j].type == (ushort) 5 && Main.tile[i + 1, j - 1].type == (ushort) 5 && Main.tile[i + 1, j + 1].type == (ushort) 5) || Main.tile[i, j + 1].nactive() && !Main.tile[i, j + 1].halfBrick() && WorldGen.SolidTile(i, j + 1) && Main.tile[i, j + 1].slope() == (byte) 0 || trackCache.wall > (byte) 0) { trackCache.active(true); trackCache.type = (ushort) type; WorldGen.SquareTileFrame(i, j); break; } break; case 137: trackCache.active(true); trackCache.type = (ushort) type; trackCache.frameY = (short) (18 * style); break; case 411: WorldGen.Place2x2(i, j, (ushort) type, 0); break; case 442: 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].nactive() && !Main.tile[i - 1, j].halfBrick() && !TileID.Sets.NotReallySolid[(int) Main.tile[i - 1, j].type] && Main.tile[i - 1, j].slope() == (byte) 0 && (WorldGen.SolidTile(i - 1, j) || Main.tile[i - 1, j].type == (ushort) 124 || Main.tile[i - 1, j].type == (ushort) 5 && Main.tile[i - 1, j - 1].type == (ushort) 5 && Main.tile[i - 1, j + 1].type == (ushort) 5) || Main.tile[i + 1, j].nactive() && !Main.tile[i + 1, j].halfBrick() && !TileID.Sets.NotReallySolid[(int) Main.tile[i + 1, j].type] && Main.tile[i + 1, j].slope() == (byte) 0 && (WorldGen.SolidTile(i + 1, j) || Main.tile[i + 1, j].type == (ushort) 124 || Main.tile[i + 1, j].type == (ushort) 5 && Main.tile[i + 1, j - 1].type == (ushort) 5 && Main.tile[i + 1, j + 1].type == (ushort) 5) || Main.tile[i, j + 1].nactive() && !Main.tile[i, j + 1].halfBrick() && WorldGen.SolidTile(i, j + 1) && Main.tile[i, j + 1].slope() == (byte) 0) { trackCache.active(true); trackCache.type = (ushort) type; WorldGen.SquareTileFrame(i, j); break; } break; case 457: WorldGen.Place2x2Horizontal(i, j, (ushort) 457, style); break; default: if (type >= 275 && type <= 281 || type == 296 || type == 297 || type == 309 || type == 358 || type == 359 || type == 413 || type == 414) { WorldGen.Place6x3(i, j, (ushort) type); break; } if (type == 237 || type == 244 || type == 285 || type == 286 || type == 298 || type == 299 || type == 310 || type == 339 || type >= 361 && type <= 364) { WorldGen.Place3x2(i, j, (ushort) type); break; } switch (type) { case 128: WorldGen.PlaceMan(i, j, 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)) { trackCache.frameX = (short) (18 * style); trackCache.active(true); trackCache.type = (ushort) type; WorldGen.SquareTileFrame(i, j); break; } break; case 269: WorldGen.PlaceWoman(i, j, style); WorldGen.SquareTileFrame(i, j); break; case 334: int style1 = 0; if (style == -1) style1 = 1; WorldGen.Place3x3Wall(i, j, (ushort) 334, style1); WorldGen.SquareTileFrame(i, j); break; default: if (type == 139 || type == 35) { WorldGen.PlaceMB(i, j, (ushort) type, style); WorldGen.SquareTileFrame(i, j); break; } switch (type) { case 34: WorldGen.PlaceChand(i, j, (ushort) type, style); WorldGen.SquareTileFrame(i, j); break; case 165: WorldGen.PlaceTight(i, j, (ushort) type); WorldGen.SquareTileFrame(i, j); break; case 235: WorldGen.Place3x1(i, j, (ushort) type); WorldGen.SquareTileFrame(i, j); break; case 240: WorldGen.Place3x3Wall(i, j, (ushort) type, style); break; case 241: WorldGen.Place4x3Wall(i, j, (ushort) type, style); break; case 242: WorldGen.Place6x4Wall(i, j, (ushort) type, style); break; case 245: WorldGen.Place2x3Wall(i, j, (ushort) type, style); break; case 246: WorldGen.Place3x2Wall(i, j, (ushort) type, style); break; case 440: WorldGen.Place3x3Wall(i, j, (ushort) type, style); break; default: if (type == 106 || type == 212 || type == 219 || type == 220 || type == 228 || type == 231 || type == 243 || type == 247 || type == 283 || type >= 300 && type <= 308 || type == 354 || type == 355) { WorldGen.Place3x3(i, j, (ushort) type, style); WorldGen.SquareTileFrame(i, j); break; } if (type == 13 || type == 33 || type == 49 || type == 50 || type == 78 || type == 174 || type == 372) { 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 || type == 186 || type == 187 || type == 215 || type == 217 || type == 218 || type == 377) { WorldGen.Place3x2(i, j, (ushort) type, style); WorldGen.SquareTileFrame(i, j); break; } switch (type) { case 20: if (Main.tile[i, j + 1] == null) Main.tile[i, j + 1] = new Tile(); int type1 = (int) Main.tile[i, j + 1].type; if (Main.tile[i, j + 1].active() && (type1 == 2 || type1 == 109 || type1 == 147 || type1 == 60 || type1 == 23 || type1 == 199 || type1 == 53 || type1 == 234 || type1 == 116 || type1 == 112)) { WorldGen.Place1x2(i, j, (ushort) type, style); WorldGen.SquareTileFrame(i, j); break; } break; case 236: WorldGen.PlaceJunglePlant(i, j, (ushort) type, WorldGen.genRand.Next(3), 0); WorldGen.SquareTileFrame(i, j); break; case 238: WorldGen.PlaceJunglePlant(i, j, (ushort) type, 0, 0); WorldGen.SquareTileFrame(i, j); break; default: if (type == 15 || type == 216 || type == 338 || type == 390) { 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, (ushort) type, style); WorldGen.SquareTileFrame(i, j); break; } if (type == 227) { WorldGen.PlaceDye(i, j, style); WorldGen.SquareTileFrame(i, j); break; } if (type == 16 || type == 18 || type == 29 || type == 103 || type == 134 || type == 462) { WorldGen.Place2x1(i, j, (ushort) type, style); WorldGen.SquareTileFrame(i, j); break; } if (type == 92 || type == 93 || type == 453) { WorldGen.Place1xX(i, j, (ushort) type, style); WorldGen.SquareTileFrame(i, j); break; } if (type == 104 || type == 105 || type == 320 || type == 337 || type == 349 || type == 356 || type == 378 || type == 456) { WorldGen.Place2xX(i, j, (ushort) type, style); WorldGen.SquareTileFrame(i, j); break; } if (type == 17 || type == 77 || type == 133) { WorldGen.Place3x2(i, j, (ushort) type, style); WorldGen.SquareTileFrame(i, j); break; } switch (type) { case 207: WorldGen.Place2xX(i, j, (ushort) type, style); WorldGen.SquareTileFrame(i, j); break; case 410: WorldGen.Place2xX(i, j, (ushort) type, style); WorldGen.SquareTileFrame(i, j); break; case 465: WorldGen.Place2xX(i, j, (ushort) type, style); WorldGen.SquareTileFrame(i, j); break; default: if (TileID.Sets.BasicChest[type]) { WorldGen.PlaceChest(i, j, (ushort) type, style: style); WorldGen.SquareTileFrame(i, j); break; } switch (type) { case 27: WorldGen.PlaceSunflower(i, j); WorldGen.SquareTileFrame(i, j); break; case 28: WorldGen.PlacePot(i, j, style: WorldGen.genRand.Next(4)); WorldGen.SquareTileFrame(i, j); break; case 36: case 135: case 141: case 144: case 210: case 239: case 324: WorldGen.Place1x1(i, j, type, style); WorldGen.SquareTileFrame(i, j); break; case 42: case 270: case 271: WorldGen.Place1x2Top(i, j, (ushort) type, style); WorldGen.SquareTileFrame(i, j); break; case 55: case 425: WorldGen.PlaceSign(i, j, (ushort) type, style); break; case 85: case 376: WorldGen.Place2x2Horizontal(i, j, (ushort) type, style); break; case 91: WorldGen.PlaceBanner(i, j, (ushort) type, style); WorldGen.SquareTileFrame(i, j); break; case 101: case 102: case 463: WorldGen.Place3x4(i, j, (ushort) type, style); WorldGen.SquareTileFrame(i, j); break; case 419: case 420: case 423: case 424: case 429: case 445: WorldGen.PlaceLogicTiles(i, j, type, style); WorldGen.SquareTileFrame(i, j); break; case 464: case 466: WorldGen.Place5x4(i, j, (ushort) type, style); WorldGen.SquareTileFrame(i, j); break; default: if (Main.tileAlch[type]) { WorldGen.PlaceAlch(i, j, style); break; } switch (type) { case 19: trackCache.frameY = (short) (18 * style); trackCache.active(true); trackCache.type = (ushort) type; break; case 79: case 90: int direction = 1; if (plr > -1) direction = Main.player[plr].direction; WorldGen.Place4x2(i, j, (ushort) type, direction, style); break; case 81: trackCache.frameX = (short) (26 * WorldGen.genRand.Next(6)); trackCache.active(true); trackCache.type = (ushort) type; break; case 94: case 95: case 97: case 98: case 99: case 100: case 125: case 126: case 172: case 173: case 287: WorldGen.Place2x2(i, j, (ushort) type, style); break; case 96: WorldGen.Place2x2Style(i, j, (ushort) type, style); break; case 209: WorldGen.PlaceCannon(i, j, (ushort) type, style); break; case 314: Minecart.PlaceTrack(trackCache, style); break; case 380: trackCache.frameY = (short) (18 * style); trackCache.active(true); trackCache.type = (ushort) type; break; default: trackCache.active(true); trackCache.type = (ushort) type; break; } break; } break; } break; } break; } break; } break; } break; } } if (trackCache.active()) { if (trackCache.type == (ushort) 54) WorldGen.SquareWallFrame(i, j); WorldGen.SquareTileFrame(i, j); flag = true; if (!mute) { switch (type) { case (int) sbyte.MaxValue: Main.PlaySound(SoundID.Item30, i * 16, j * 16); break; case 314: Main.PlaySound(SoundID.Item52, i * 16, j * 16); break; case 330: case 331: case 332: case 333: Main.PlaySound(18, i * 16, j * 16); break; default: Main.PlaySound(0, i * 16, j * 16); break; } 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 KillWall(int i, int j, bool fail = false) { if (i < 0 || j < 0 || i >= Main.maxTilesX || j >= Main.maxTilesY) return; Tile tile = Main.tile[i, j]; if (tile == null) { tile = new Tile(); Main.tile[i, j] = tile; } if (tile.wall <= (byte) 0) return; if (Main.wallDungeon[(int) tile.wall] && !NPC.downedBoss3) fail = true; if (tile.wall == (byte) 87 && !NPC.downedGolemBoss) fail = true; if (tile.wall == (byte) 21 || tile.wall == (byte) 186 || tile.wall == (byte) 136 || tile.wall == (byte) 137 || tile.wall == (byte) 168 || tile.wall == (byte) 169 || tile.wall == (byte) 172 || tile.wall == (byte) 226 || tile.wall == (byte) 227) Main.PlaySound(13, i * 16, j * 16); else if (tile.wall >= (byte) 63 && tile.wall <= (byte) 70) Main.PlaySound(6, i * 16, j * 16); else Main.PlaySound(0, i * 16, j * 16); int num = 10; if (fail) num = 3; for (int index1 = 0; index1 < num; ++index1) { int Type = 0; if (tile.wall == (byte) 148) Type = -1; if (tile.wall == (byte) 1 || tile.wall == (byte) 5 || tile.wall == (byte) 6 || tile.wall == (byte) 7 || tile.wall == (byte) 107 || tile.wall == (byte) 8 || tile.wall == (byte) 9 || tile.wall >= (byte) 48 && tile.wall <= (byte) 53 || tile.wall >= (byte) 54 && tile.wall <= (byte) 58 || tile.wall == (byte) 185) Type = 1; if (tile.wall >= (byte) 94 && tile.wall <= (byte) 105) Type = 1; if (tile.wall == (byte) 3) Type = WorldGen.genRand.Next(2) != 0 ? 1 : 14; if (tile.wall == (byte) 35) Type = 37; if (tile.wall == (byte) 4 || tile.wall == (byte) 106) Type = 7; if (tile.wall == (byte) 12) Type = 9; if (tile.wall == (byte) 10) Type = 10; if (tile.wall == (byte) 11) Type = 11; if (tile.wall == (byte) 21) Type = 13; if (tile.wall == (byte) 34) Type = 32; if (tile.wall == (byte) 225) Type = 1; if (tile.wall == (byte) 145) Type = 8; if (tile.wall == (byte) 22 || tile.wall == (byte) 28) Type = 51; if (tile.wall == (byte) 23) Type = 38; if (tile.wall == (byte) 24) Type = 36; if (tile.wall == (byte) 25) Type = 48; if (tile.wall == (byte) 179 || tile.wall == (byte) 178 || tile.wall == (byte) 183) Type = 236; if (tile.wall == (byte) 181 || tile.wall == (byte) 180 || tile.wall == (byte) 184) Type = 240; if (tile.wall == (byte) 113) Type = 189; if (tile.wall == (byte) 114) Type = 190; if (tile.wall == (byte) 115) Type = 191; if (tile.wall == (byte) 177 || tile.wall == (byte) 13) Type = 25; if (tile.wall == (byte) 186) Type = WorldGen.genRand.Next(68, 71); if (tile.wall == (byte) 142) Type = 210; if (tile.wall == (byte) 143) Type = 210; if (tile.wall == (byte) 224) Type = 265; if (tile.wall == (byte) 173) Type = 128; if (tile.wall == (byte) 174) Type = 117; if (tile.wall == (byte) 175) Type = 42; if (tile.wall == (byte) 176) Type = 226; if (tile.wall == (byte) 182) Type = WorldGen.genRand.Next(2) != 0 ? 23 : 6; if (tile.wall >= (byte) 153 && tile.wall <= (byte) 166) { switch (tile.wall) { case 153: case 157: Type = 138; break; case 154: case 158: Type = 86; break; case 155: case 159: Type = 91; break; case 156: case 160: Type = 89; break; case 161: case 164: Type = 90; break; case 162: case 165: Type = 88; break; case 163: case 166: Type = 87; break; } } if (tile.wall == (byte) 26 || tile.wall == (byte) 30) Type = 49; if (tile.wall == (byte) 29 || tile.wall == (byte) 32) Type = 50; if (tile.wall == (byte) 31) Type = 51; if (tile.wall == (byte) 14 || tile.wall == (byte) 20) Type = 109; if (tile.wall >= (byte) 88 && tile.wall <= (byte) 93) { Type = 86 + (int) tile.wall - 88; if (tile.wall == (byte) 93) Type = WorldGen.genRand.Next(88, 94); } if (tile.wall == (byte) 33) Type = 14; if (tile.wall == (byte) 41) Type = 77; if (tile.wall == (byte) 42) Type = 78; if (tile.wall == (byte) 43) Type = 78; if (tile.wall == (byte) 43) Type = 78; if (tile.wall == (byte) 36) Type = 26; if (tile.wall == (byte) 37) Type = 32; if (tile.wall == (byte) 38) Type = 2; if (tile.wall == (byte) 39) Type = 1; if (tile.wall == (byte) 40) Type = 51; if (tile.wall == (byte) 45) Type = 81; if (tile.wall == (byte) 46) Type = 83; if (tile.wall == (byte) 47) Type = 84; if (tile.wall == (byte) 85) Type = 126; if (tile.wall == (byte) 59) Type = 0; if (tile.wall == (byte) 61) Type = 0; if (tile.wall == (byte) 62) Type = 0; if (tile.wall == (byte) 63) Type = 3; if (tile.wall == (byte) 65) Type = 3; if (tile.wall == (byte) 66) Type = 3; if (tile.wall == (byte) 68) Type = 3; if (tile.wall == (byte) 64) Type = 40; if (tile.wall == (byte) 67) Type = 40; if (tile.wall == (byte) 84) Type = 80; if (tile.wall == (byte) 71) Type = 80; if (tile.wall == (byte) 60) Type = 3; if (tile.wall == (byte) 71) Type = 80; if (tile.wall == (byte) 167) Type = 81; if (tile.wall == (byte) 147) Type = 51; if (tile.wall == (byte) 146) Type = 9; if (tile.wall == (byte) 109) Type = 144; if (tile.wall == (byte) 110) Type = 145; if (tile.wall == (byte) 111) Type = 146; if (tile.wall == (byte) 86 || tile.wall == (byte) 108) Type = 147; if (tile.wall == (byte) 87) Type = 148; if (tile.wall == (byte) 83) { Type = 117; if (WorldGen.genRand.Next(2) == 0) Type = 1; } if (tile.wall == (byte) 81) Type = 123; if (tile.wall == (byte) 136) Type = 13; if (tile.wall == (byte) 137) Type = 13; if (tile.wall == (byte) 168) Type = 13; if (tile.wall == (byte) 169) Type = 13; if (tile.wall == (byte) 172) Type = 13; if (tile.wall == (byte) 226) Type = 13; if (tile.wall == (byte) 227) Type = 13; if (tile.wall == (byte) 72) Type = 40; if (tile.wall == (byte) 73) Type = 16; if (tile.wall == (byte) 74 || tile.wall == (byte) 80) Type = 26; if (tile.wall == (byte) 144) Type = WorldGen.genRand.Next(2) != 0 ? 118 : 10; if (tile.wall == (byte) 75) Type = 26; if (tile.wall == (byte) 76) Type = 4; if (tile.wall == (byte) 77 || tile.wall == (byte) 81) Type = 5; if (tile.wall == (byte) 78) Type = 7; if (tile.wall == (byte) 79) Type = 37; if (tile.wall == (byte) 82) Type = 36; if (tile.wall == (byte) 69) Type = WorldGen.genRand.Next(2) != 0 ? 17 : 14; if (tile.wall == (byte) 70) Type = 47; if (tile.wall == (byte) 27) Type = WorldGen.genRand.Next(2) != 0 ? 1 : 7; if (tile.wall == (byte) 138) Type = 77; if (tile.wall == (byte) 139) Type = 78; if (tile.wall == (byte) 140) Type = 79; if (tile.wall == (byte) 141) Type = 126; if (tile.wall == (byte) 149 || tile.wall == (byte) 150) Type = 214; if (tile.wall == (byte) 151 || tile.wall == (byte) 152) Type = 215; else if (tile.wall == (byte) 17 || tile.wall == (byte) 18 || tile.wall == (byte) 19) Type = 1; if (tile.wall == (byte) 44) { int index2 = Dust.NewDust(new Vector2((float) (i * 16), (float) (j * 16)), 16, 16, 66, Alpha: 100, newColor: new Color(Main.DiscoR, Main.DiscoG, Main.DiscoB), Scale: 0.75f); Main.dust[index2].noGravity = true; } else if ((tile.wall < (byte) 133 || tile.wall > (byte) 135) && (tile.wall < (byte) 116 || tile.wall > (byte) 125) && (tile.wall < (byte) 126 || tile.wall > (byte) 132)) { if (tile.wall == (byte) 76) Dust.NewDust(new Vector2((float) (i * 16), (float) (j * 16)), 16, 16, Type, Alpha: 75, newColor: new Color(0, 80, (int) byte.MaxValue, 100), Scale: 0.75f); else if (Type >= 0) Dust.NewDust(new Vector2((float) (i * 16), (float) (j * 16)), 16, 16, Type); } } if (fail) { WorldGen.SquareWallFrame(i, j); } else { int Type = 0; if (tile.wall == (byte) 168) Type = 2696; if (tile.wall == (byte) 169) Type = 2698; if (tile.wall == (byte) 226) Type = 3752; if (tile.wall == (byte) 227) Type = 3753; if (tile.wall == (byte) 228) Type = 3760; if (tile.wall == (byte) 229) Type = 3761; if (tile.wall == (byte) 230) Type = 3762; if (tile.wall == (byte) 142) Type = 2263; if (tile.wall == (byte) 143) Type = 2264; if (tile.wall == (byte) 144) Type = 2271; if (tile.wall == (byte) 149) Type = 2505; if (tile.wall == (byte) 150) Type = 2507; if (tile.wall == (byte) 151) Type = 2506; if (tile.wall == (byte) 152) Type = 2508; if (tile.wall == (byte) 1) Type = 26; if (tile.wall == (byte) 4) Type = 93; if (tile.wall == (byte) 5) Type = 130; if (tile.wall == (byte) 6) Type = 132; if (tile.wall == (byte) 7) Type = 135; if (tile.wall == (byte) 8) Type = 138; if (tile.wall == (byte) 9) Type = 140; if (tile.wall == (byte) 10) Type = 142; if (tile.wall == (byte) 11) Type = 144; if (tile.wall == (byte) 12) Type = 146; if (tile.wall == (byte) 14) Type = 330; if (tile.wall == (byte) 224) Type = 3472; if (tile.wall == (byte) 177) Type = 3067; if (tile.wall == (byte) 167) Type = 2691; if (tile.wall == (byte) 60) Type = 3584; if (tile.wall == (byte) 225) Type = 3751; if (tile.wall == (byte) 179) Type = 3083; if (tile.wall == (byte) 183) Type = 3082; if (tile.wall == (byte) 181) Type = 3089; if (tile.wall == (byte) 184) Type = 3088; if (tile.wall == (byte) 186) Type = 3238; if (tile.wall >= (byte) 153 && tile.wall <= (byte) 166) { switch (tile.wall) { case 153: Type = 2677; break; case 154: Type = 2679; break; case 155: Type = 2681; break; case 156: Type = 2683; break; case 157: Type = 2678; break; case 158: Type = 2680; break; case 159: Type = 2682; break; case 160: Type = 2684; break; case 161: Type = 2686; break; case 162: Type = 2688; break; case 163: Type = 2690; break; case 164: Type = 2685; break; case 165: Type = 2687; break; case 166: Type = 2689; break; } } if (tile.wall == (byte) 136) Type = 2169; if (tile.wall == (byte) 137) Type = 2170; if (tile.wall == (byte) 172) Type = 2788; if (tile.wall == (byte) 145) Type = 2333; if (tile.wall == (byte) 16) Type = 30; if (tile.wall == (byte) 17) Type = 135; if (tile.wall == (byte) 18) Type = 138; if (tile.wall == (byte) 19) Type = 140; if (tile.wall == (byte) 20) Type = 330; if (tile.wall == (byte) 21) Type = 392; if (tile.wall == (byte) 86 || tile.wall == (byte) 108) Type = 1126; if (tile.wall == (byte) 173) Type = 2789; if (tile.wall == (byte) 174) Type = 2790; if (tile.wall == (byte) 175) Type = 2791; if (tile.wall == (byte) 176) Type = 2861; if (tile.wall == (byte) 182) Type = 3101; if (tile.wall == (byte) 133) Type = 2158; if (tile.wall == (byte) 134) Type = 2159; if (tile.wall == (byte) 135) Type = 2160; else if (tile.wall == (byte) 113) Type = 1726; else if (tile.wall == (byte) 114) Type = 1728; else if (tile.wall == (byte) 115) Type = 1730; else if (tile.wall == (byte) 146) Type = 2432; else if (tile.wall == (byte) 147) Type = 2433; else if (tile.wall == (byte) 148) Type = 2434; if (tile.wall >= (byte) 116 && tile.wall <= (byte) 125) Type = 1948 + (int) tile.wall - 116; if (tile.wall >= (byte) 126 && tile.wall <= (byte) 132) Type = 2008 + (int) tile.wall - 126; if (tile.wall == (byte) 22) Type = 417; if (tile.wall == (byte) 23) Type = 418; if (tile.wall == (byte) 24) Type = 419; if (tile.wall == (byte) 25) Type = 420; if (tile.wall == (byte) 26) Type = 421; if (tile.wall == (byte) 29) Type = 587; if (tile.wall == (byte) 30) Type = 592; if (tile.wall == (byte) 31) Type = 595; if (tile.wall == (byte) 32) Type = 605; if (tile.wall == (byte) 33) Type = 606; if (tile.wall == (byte) 34) Type = 608; if (tile.wall == (byte) 35) Type = 610; if (tile.wall == (byte) 36) Type = 615; if (tile.wall == (byte) 37) Type = 616; if (tile.wall == (byte) 38) Type = 617; if (tile.wall == (byte) 39) Type = 618; if (tile.wall == (byte) 41) Type = 622; if (tile.wall == (byte) 42) Type = 623; if (tile.wall == (byte) 43) Type = 624; if (tile.wall == (byte) 44) Type = 663; if (tile.wall == (byte) 45) Type = 720; if (tile.wall == (byte) 46) Type = 721; if (tile.wall == (byte) 47) Type = 722; if (tile.wall == (byte) 66) Type = 745; if (tile.wall == (byte) 67) Type = 746; if (tile.wall == (byte) 68) Type = 747; if (tile.wall == (byte) 84) Type = 884; if (tile.wall == (byte) 72) Type = 750; if (tile.wall == (byte) 73) Type = 752; if (tile.wall == (byte) 74) Type = 764; if (tile.wall == (byte) 85) Type = 927; if (tile.wall == (byte) 75) Type = 768; if (tile.wall == (byte) 76) Type = 769; if (tile.wall == (byte) 77) Type = 770; if (tile.wall == (byte) 82) Type = 825; if (tile.wall == (byte) 27) Type = 479; if (tile.wall == (byte) 106) Type = 1447; if (tile.wall == (byte) 107) Type = 1448; if (tile.wall == (byte) 109) Type = 1590; if (tile.wall == (byte) 110) Type = 1592; if (tile.wall == (byte) 111) Type = 1594; if (tile.wall == (byte) 78) Type = 1723; if (tile.wall == (byte) 87 || tile.wall == (byte) 112) Type = 1102; if (tile.wall == (byte) 94 || tile.wall == (byte) 100) Type = 1378; if (tile.wall == (byte) 95 || tile.wall == (byte) 101) Type = 1379; if (tile.wall == (byte) 96 || tile.wall == (byte) 102) Type = 1380; if (tile.wall == (byte) 97 || tile.wall == (byte) 103) Type = 1381; if (tile.wall == (byte) 98 || tile.wall == (byte) 104) Type = 1382; if (tile.wall == (byte) 99 || tile.wall == (byte) 105) Type = 1383; if (tile.wall >= (byte) 88 && tile.wall <= (byte) 93) Type = 1267 + (int) tile.wall - 88; if (tile.wall >= (byte) 138 && tile.wall <= (byte) 141) Type = 2210 + (int) tile.wall - 138; if (Type > 0) Item.NewItem(i * 16, j * 16, 16, 16, Type); tile.wall = (byte) 0; tile.wallColor((byte) 0); WorldGen.SquareWallFrame(i, j); if (tile.type < (ushort) 0 || tile.type >= (ushort) 470 || !TileID.Sets.FramesOnKillWall[(int) tile.type]) return; WorldGen.TileFrame(i, j); } } public static void LaunchRocket(int x, int y) { int frameY = (int) Main.tile[x, y].frameY; int num1 = 0; while (frameY >= 40) { frameY -= 40; ++num1; } if (frameY == 18) --y; Vector2 vector2 = new Vector2((float) (x * 16 + 8), (float) (y * 16 + 4)); int Type = 167 + num1; int Damage = 150; int num2 = 7; Projectile.NewProjectile(vector2.X, vector2.Y + 2f, 0.0f, -8f, Type, Damage, (float) num2, Main.myPlayer); Main.tile[x, y].active(false); Main.tile[x, y + 1].active(false); NetMessage.SendTileSquare(-1, x - 1, y, 3); } public static void LaunchRocketSmall(int x, int y) { if (Main.tile[x, y].frameX == (short) 18) --x; if (Main.tile[x, y].frameY == (short) 18) --y; Vector2 vector2 = new Vector2((float) (x * 16 + 16), (float) (y * 16)); int Type = 415 + Main.rand.Next(4); int Damage = 0; int num = 0; Projectile.NewProjectile(vector2.X, vector2.Y + 2f, 0.0f, -8f, Type, Damage, (float) num, Main.myPlayer); } public static bool CanKillTile(int i, int j) => WorldGen.CanKillTile(i, j, out bool _); public static bool CanKillTile(int i, int j, out bool blockDamaged) { blockDamaged = false; if (i < 0 || j < 0 || i >= Main.maxTilesX || j >= Main.maxTilesY) return false; Tile tile1 = Main.tile[i, j]; Tile tile2 = (Tile) null; if (tile1 == null || !tile1.active()) return false; if (j >= 1) tile2 = Main.tile[i, j - 1]; if (tile2 != null && tile2.active()) { int type = (int) tile2.type; switch (type) { case 5: if ((int) tile1.type != type && (tile2.frameX != (short) 66 || tile2.frameY < (short) 0 || tile2.frameY > (short) 44) && (tile2.frameX != (short) 88 || tile2.frameY < (short) 66 || tile2.frameY > (short) 110) && tile2.frameY < (short) 198) return false; break; case 21: case 26: case 72: case 88: if ((int) tile1.type != type) return false; break; case 323: if ((int) tile1.type != type && (tile2.frameX == (short) 66 || tile2.frameX == (short) 220)) return false; break; } } switch (tile1.type) { case 10: if (tile1.type == (ushort) 10 && tile1.frameY >= (short) 594 && tile1.frameY <= (short) 646) { blockDamaged = true; return false; } break; case 21: if (!Chest.CanDestroyChest(i - (int) tile1.frameX / 18 % 2, j - (int) tile1.frameY / 18)) return false; break; case 88: if (!Chest.CanDestroyChest(i - (int) tile1.frameX / 18 % 3, j - (int) tile1.frameY / 18)) return false; break; case 138: if (WorldGen.CheckBoulderChest(i, j)) { blockDamaged = true; return false; } break; case 235: int num = i - (int) tile1.frameX % 54 / 18; for (int index = 0; index < 3; ++index) { if (Main.tile[num + index, j - 1].active() && (TileID.Sets.BasicChest[(int) Main.tile[num + index, j - 1].type] || TileID.Sets.BasicChestFake[(int) Main.tile[num + index, j - 1].type])) { blockDamaged = true; return false; } } break; } return true; } 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; Tile tile = Main.tile[i, j]; if (tile == null) { tile = new Tile(); Main.tile[i, j] = tile; } if (!tile.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 == (ushort) 5 && tile.type != (ushort) 5 || Main.tile[i, j - 1].type == (ushort) 323 && tile.type != (ushort) 323 || TileID.Sets.BasicChest[(int) Main.tile[i, j - 1].type] && !TileID.Sets.BasicChest[(int) tile.type] || Main.tile[i, j - 1].type == (ushort) 323 && tile.type != (ushort) 323 || Main.tile[i, j - 1].type == (ushort) 88 && tile.type != (ushort) 88 || Main.tile[i, j - 1].type == (ushort) 26 && tile.type != (ushort) 26 || Main.tile[i, j - 1].type == (ushort) 72 && tile.type != (ushort) 72)) { if (Main.tile[i, j - 1].type == (ushort) 5) { if ((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; } else if (Main.tile[i, j - 1].type != (ushort) 323 || Main.tile[i, j - 1].frameX == (short) 66 || Main.tile[i, j - 1].frameX == (short) 220) return; } if (tile.type == (ushort) 10 && tile.frameY >= (short) 594 && tile.frameY <= (short) 646) fail = true; if (tile.type == (ushort) 138) fail = WorldGen.CheckBoulderChest(i, j); if (tile.type == (ushort) 235) { int frameX = (int) tile.frameX; int num = i - frameX % 54 / 18; for (int index = 0; index < 3; ++index) { if (Main.tile[num + index, j - 1].active() && (TileID.Sets.BasicChest[(int) Main.tile[num + index, j - 1].type] || TileID.Sets.BasicChestFake[(int) Main.tile[num + index, j - 1].type] || Main.tile[num + index, j - 1].type == (ushort) 88)) { fail = true; break; } } } if (!effectOnly && !WorldGen.stopDrops) { if (!noItem && FixExploitManEaters.SpotProtected(i, j)) return; if (tile.type == (ushort) sbyte.MaxValue) Main.PlaySound(SoundID.Item27, i * 16, j * 16); else if (tile.type == (ushort) 147 || tile.type == (ushort) 224) { if (WorldGen.genRand.Next(2) == 0) Main.PlaySound(SoundID.Item48, i * 16, j * 16); else Main.PlaySound(SoundID.Item49, i * 16, j * 16); } else if (tile.type == (ushort) 161 || tile.type == (ushort) 163 || tile.type == (ushort) 164 || tile.type == (ushort) 200) Main.PlaySound(SoundID.Item50, i * 16, j * 16); else if (tile.type == (ushort) 3 || tile.type == (ushort) 110) { Main.PlaySound(6, i * 16, j * 16); if (tile.frameX == (short) 144) Item.NewItem(i * 16, j * 16, 16, 16, 5); } else if (tile.type == (ushort) 254) Main.PlaySound(6, i * 16, j * 16); else if (tile.type == (ushort) 24) { Main.PlaySound(6, i * 16, j * 16); if (tile.frameX == (short) 144) Item.NewItem(i * 16, j * 16, 16, 16, 60); } else if (Main.tileAlch[(int) tile.type] || tile.type == (ushort) 384 || tile.type == (ushort) 227 || tile.type == (ushort) 32 || tile.type == (ushort) 51 || tile.type == (ushort) 52 || tile.type == (ushort) 61 || tile.type == (ushort) 62 || tile.type == (ushort) 69 || tile.type == (ushort) 71 || tile.type == (ushort) 73 || tile.type == (ushort) 74 || tile.type == (ushort) 113 || tile.type == (ushort) 115 || tile.type == (ushort) 184 || tile.type == (ushort) 192 || tile.type == (ushort) 205 || tile.type == (ushort) 233 || tile.type == (ushort) 352 || tile.type == (ushort) 382) Main.PlaySound(6, i * 16, j * 16); else if (tile.type == (ushort) 201) { Main.PlaySound(6, i * 16, j * 16); if (tile.frameX == (short) 270) Item.NewItem(i * 16, j * 16, 16, 16, 2887); } else if (tile.type == (ushort) 1 || tile.type == (ushort) 6 || tile.type == (ushort) 7 || tile.type == (ushort) 8 || tile.type == (ushort) 9 || tile.type == (ushort) 22 || tile.type == (ushort) 140 || tile.type == (ushort) 25 || tile.type == (ushort) 37 || tile.type == (ushort) 38 || tile.type == (ushort) 39 || tile.type == (ushort) 41 || tile.type == (ushort) 43 || tile.type == (ushort) 44 || tile.type == (ushort) 45 || tile.type == (ushort) 46 || tile.type == (ushort) 47 || tile.type == (ushort) 48 || tile.type == (ushort) 56 || tile.type == (ushort) 58 || tile.type == (ushort) 63 || tile.type == (ushort) 64 || tile.type == (ushort) 65 || tile.type == (ushort) 66 || tile.type == (ushort) 67 || tile.type == (ushort) 68 || tile.type == (ushort) 75 || tile.type == (ushort) 76 || tile.type == (ushort) 107 || tile.type == (ushort) 108 || tile.type == (ushort) 111 || tile.type == (ushort) 117 || tile.type == (ushort) 118 || tile.type == (ushort) 119 || tile.type == (ushort) 120 || tile.type == (ushort) 121 || tile.type == (ushort) 122 || tile.type == (ushort) 150 || tile.type == (ushort) 151 || tile.type == (ushort) 152 || tile.type == (ushort) 153 || tile.type == (ushort) 154 || tile.type == (ushort) 155 || tile.type == (ushort) 156 || tile.type == (ushort) 160 || tile.type == (ushort) 161 || tile.type == (ushort) 166 || tile.type == (ushort) 167 || tile.type == (ushort) 168 || tile.type == (ushort) 169 || tile.type == (ushort) 175 || tile.type == (ushort) 176 || tile.type == (ushort) 177 || tile.type == (ushort) 203 || tile.type == (ushort) 202 || tile.type == (ushort) 204 || tile.type == (ushort) 206 || tile.type == (ushort) 211 || tile.type == (ushort) 221 || tile.type == (ushort) 222 || tile.type == (ushort) 223 || tile.type == (ushort) 226 || tile.type == (ushort) 248 || tile.type == (ushort) 249 || tile.type == (ushort) 250 || tile.type == (ushort) 272 || tile.type == (ushort) 273 || tile.type == (ushort) 274 || tile.type == (ushort) 284 || tile.type == (ushort) 325 || tile.type == (ushort) 346 || tile.type == (ushort) 347 || tile.type == (ushort) 348 || tile.type == (ushort) 350 || tile.type == (ushort) 367 || tile.type == (ushort) 357 || tile.type == (ushort) 368 || tile.type == (ushort) 369 || tile.type == (ushort) 370 || tile.type == (ushort) 407) Main.PlaySound(21, i * 16, j * 16); else if (tile.type == (ushort) 231 || tile.type == (ushort) 195) Main.PlaySound(4, i * 16, j * 16); else if (tile.type == (ushort) 26 && tile.frameX >= (short) 54) Main.PlaySound(4, i * 16, j * 16); else if (tile.type == (ushort) 314) Main.PlaySound(SoundID.Item52, i * 16, j * 16); else if (tile.type >= (ushort) 330 && tile.type <= (ushort) 333) Main.PlaySound(18, i * 16, j * 16); else if (tile.type != (ushort) 138) Main.PlaySound(0, i * 16, j * 16); if ((tile.type == (ushort) 162 || tile.type == (ushort) 385 || tile.type == (ushort) 129 || tile.type == (ushort) 165 && tile.frameX < (short) 54) && !fail) Main.PlaySound(SoundID.Item27, i * 16, j * 16); } if (tile.type == (ushort) 128 || tile.type == (ushort) 269) { int index1 = i; int frameX1 = (int) tile.frameX; int frameX2 = (int) tile.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 num = (int) Main.tile[index1, j].frameY / 18; if (num == 0) Item.NewItem(i * 16, j * 16, 16, 16, Item.headType[index2]); if (num == 1) Item.NewItem(i * 16, j * 16, 16, 16, Item.bodyType[index2]); if (num == 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 (tile.type == (ushort) 334) { int index = i; int frameX4 = (int) tile.frameX; int num1 = (int) tile.frameX; int num2 = 0; while (num1 >= 5000) { num1 -= 5000; ++num2; } if (num2 != 0) num1 = (num2 - 1) * 18; int num3 = num1 % 54; if (num3 == 18) { frameX4 = (int) Main.tile[i - 1, j].frameX; --index; } if (num3 == 36) { frameX4 = (int) Main.tile[i - 2, j].frameX; index -= 2; } if (frameX4 >= 5000) { int num4 = frameX4 % 5000 - 100; int frameX5 = (int) Main.tile[index + 1, j].frameX; int pre = frameX5 < 25000 ? frameX5 - 10000 : frameX5 - 25000; if (Main.netMode != 1) { Item obj = new Item(); obj.netDefaults(num4); obj.Prefix(pre); int number = Item.NewItem(i * 16, j * 16, 16, 16, num4, noBroadcast: true); obj.position = Main.item[number].position; Main.item[number] = obj; NetMessage.SendData(21, number: number); } int num5 = (int) Main.tile[index, j].frameX; int num6 = 0; while (num5 >= 5000) { num5 -= 5000; ++num6; } if (num6 != 0) num5 = (num6 - 1) * 18; Main.tile[index, j].frameX = (short) num5; Main.tile[index + 1, j].frameX = (short) (num5 + 18); } } if (tile.type == (ushort) 395) { int key = TEItemFrame.Find(i - (int) tile.frameX % 36 / 18, j - (int) tile.frameY % 36 / 18); if (key != -1 && ((TEItemFrame) TileEntity.ByID[key]).item.stack > 0) { ((TEItemFrame) TileEntity.ByID[key]).DropItem(); if (Main.netMode == 2) return; Main.blockMouse = true; return; } } int tileDustAmount = WorldGen.KillTile_GetTileDustAmount(fail, tile); for (int index = 0; index < tileDustAmount; ++index) WorldGen.KillTile_MakeTileDust(i, j, tile); if (effectOnly) return; if (fail) { if (tile.type == (ushort) 2 || tile.type == (ushort) 23 || tile.type == (ushort) 109 || tile.type == (ushort) 199) tile.type = (ushort) 0; if (tile.type == (ushort) 60 || tile.type == (ushort) 70) tile.type = (ushort) 59; if (Main.tileMoss[(int) tile.type]) tile.type = (ushort) 1; WorldGen.SquareTileFrame(i, j); } else { if (TileID.Sets.BasicChest[(int) tile.type] && Main.netMode != 1) { int num = (int) tile.frameX / 18; int Y = j - (int) tile.frameY / 18; while (num > 1) num -= 2; if (!Chest.DestroyChest(i - num, Y)) return; } if (tile.type == (ushort) 88 && Main.netMode != 1) { int num7 = (int) tile.frameX / 18; int Y = j - (int) tile.frameY / 18; int num8 = num7 % 3; if (!Chest.DestroyChest(i - num8, Y)) return; } if (tile.type == (ushort) 51 && tile.wall == (byte) 62 && WorldGen.genRand.Next(4) != 0) noItem = true; if (!noItem && !WorldGen.stopDrops && Main.netMode != 1) { bool flag1 = false; int maxValue1 = -1; int maxValue2 = -1; int maxValue3 = -1; if (tile.type == (ushort) 3) { maxValue1 = 400; maxValue2 = 100; if (tile.frameX >= (short) 108) { maxValue1 *= 3; maxValue2 *= 3; } } if (tile.type == (ushort) 73) { maxValue1 = 200; maxValue2 = 50; if (tile.frameX >= (short) 108) { maxValue1 *= 3; maxValue2 *= 3; } } if (tile.type == (ushort) 61) { maxValue3 = 80; if (tile.frameX >= (short) 108) maxValue3 *= 3; } if (tile.type == (ushort) 74) { maxValue3 = 40; if (tile.frameX >= (short) 108) maxValue3 *= 3; } if (tile.type == (ushort) 62) maxValue3 = 250; if (tile.type == (ushort) 185) { if (tile.frameY == (short) 0 && tile.frameX < (short) 214) maxValue1 = 6; if (tile.frameY == (short) 18 && (tile.frameX < (short) 214 || tile.frameX >= (short) 1368)) maxValue1 = 6; } else if (tile.type == (ushort) 186) { if (tile.frameX >= (short) 378 && tile.frameX <= (short) 700) maxValue1 = 6; } else if (tile.type == (ushort) 187) { if (tile.frameX >= (short) 756 && tile.frameX <= (short) 916) maxValue1 = 6; if (tile.frameX <= (short) 322) maxValue1 = 6; } else if (tile.type == (ushort) 233) maxValue3 = 10; if (maxValue1 > 0 && NPC.CountNPCS(357) < 5 && WorldGen.genRand.Next(maxValue1) == 0) { int Type = 357; if (WorldGen.genRand.Next(NPC.goldCritterChance) == 0) Type = 448; int index = NPC.NewNPC(i * 16 + 10, j * 16, Type); Main.npc[index].TargetClosest(); Main.npc[index].velocity.Y = (float) WorldGen.genRand.Next(-50, -21) * 0.1f; Main.npc[index].velocity.X = (float) WorldGen.genRand.Next(0, 26) * 0.1f * (float) -Main.npc[index].direction; Main.npc[index].direction *= -1; Main.npc[index].netUpdate = true; } if (maxValue2 > 0 && NPC.CountNPCS(377) < 5 && WorldGen.genRand.Next(maxValue2) == 0) { int Type = 377; if (WorldGen.genRand.Next(NPC.goldCritterChance) == 0) Type = 446; int index = NPC.NewNPC(i * 16 + 10, j * 16, Type); Main.npc[index].TargetClosest(); Main.npc[index].velocity.Y = (float) WorldGen.genRand.Next(-50, -21) * 0.1f; Main.npc[index].velocity.X = (float) WorldGen.genRand.Next(0, 26) * 0.1f * (float) -Main.npc[index].direction; Main.npc[index].direction *= -1; Main.npc[index].netUpdate = true; } if (maxValue3 > 0 && NPC.CountNPCS(485) + NPC.CountNPCS(486) + NPC.CountNPCS(487) < 8 && WorldGen.genRand.Next(maxValue3) == 0) { int Type = 485; if (WorldGen.genRand.Next(4) == 0) Type = 486; if (WorldGen.genRand.Next(12) == 0) Type = 487; int index = NPC.NewNPC(i * 16 + 10, j * 16, Type); Main.npc[index].TargetClosest(); Main.npc[index].velocity.Y = (float) WorldGen.genRand.Next(-50, -21) * 0.1f; Main.npc[index].velocity.X = (float) WorldGen.genRand.Next(0, 26) * 0.1f * (float) -Main.npc[index].direction; Main.npc[index].direction *= -1; Main.npc[index].netUpdate = true; } int Type1 = 0; int Type2 = 0; if (tile.type == (ushort) 0 || tile.type == (ushort) 2 || tile.type == (ushort) 109) Type1 = 2; else if (tile.type == (ushort) 426) Type1 = 3621; else if (tile.type == (ushort) 430) Type1 = 3633; else if (tile.type == (ushort) 431) Type1 = 3634; else if (tile.type == (ushort) 432) Type1 = 3635; else if (tile.type == (ushort) 433) Type1 = 3636; else if (tile.type == (ushort) 434) Type1 = 3637; else if (tile.type == (ushort) 427) Type1 = 3622; else if (tile.type == (ushort) 435) Type1 = 3638; else if (tile.type == (ushort) 436) Type1 = 3639; else if (tile.type == (ushort) 437) Type1 = 3640; else if (tile.type == (ushort) 438) Type1 = 3641; else if (tile.type == (ushort) 439) Type1 = 3642; else if (tile.type == (ushort) 446) Type1 = 3736; else if (tile.type == (ushort) 447) Type1 = 3737; else if (tile.type == (ushort) 448) Type1 = 3738; else if (tile.type == (ushort) 449) Type1 = 3739; else if (tile.type == (ushort) 450) Type1 = 3740; else if (tile.type == (ushort) 451) Type1 = 3741; else if (tile.type == (ushort) 368) Type1 = 3086; else if (tile.type == (ushort) 369) Type1 = 3087; else if (tile.type == (ushort) 367) Type1 = 3081; else if (tile.type == (ushort) 379) Type1 = 3214; else if (tile.type == (ushort) 353) Type1 = 2996; else if (tile.type == (ushort) 365) Type1 = 3077; else if (tile.type == (ushort) 366) Type1 = 3078; else if ((tile.type == (ushort) 52 || tile.type == (ushort) 62) && WorldGen.genRand.Next(2) == 0 && Main.player[(int) Player.FindClosest(new Vector2((float) (i * 16), (float) (j * 16)), 16, 16)].cordage) Type1 = 2996; else if (tile.type == (ushort) 357) Type1 = 3066; else if (tile.type == (ushort) 1) Type1 = 3; else if (tile.type == (ushort) 3 || tile.type == (ushort) 73) { if (WorldGen.genRand.Next(2) == 0 && (Main.player[(int) Player.FindClosest(new Vector2((float) (i * 16), (float) (j * 16)), 16, 16)].HasItem(281) || Main.player[(int) Player.FindClosest(new Vector2((float) (i * 16), (float) (j * 16)), 16, 16)].HasItem(986))) Type1 = 283; } else if (tile.type == (ushort) 227) { int num = (int) tile.frameX / 34; Type1 = 1107 + num; if (num >= 8 && num <= 11) Type1 = 3385 + num - 8; } else if (tile.type == (ushort) 4) { int num = (int) tile.frameY / 22; switch (num) { case 0: Type1 = 8; break; case 8: Type1 = 523; break; case 9: Type1 = 974; break; case 10: Type1 = 1245; break; case 11: Type1 = 1333; break; case 12: Type1 = 2274; break; case 13: Type1 = 3004; break; case 14: Type1 = 3045; break; case 15: Type1 = 3114; break; default: Type1 = 426 + num; break; } } else if (tile.type == (ushort) 239) { int num = (int) tile.frameX / 18; if (num == 0) Type1 = 20; if (num == 1) Type1 = 703; if (num == 2) Type1 = 22; if (num == 3) Type1 = 704; if (num == 4) Type1 = 21; if (num == 5) Type1 = 705; if (num == 6) Type1 = 19; if (num == 7) Type1 = 706; if (num == 8) Type1 = 57; if (num == 9) Type1 = 117; if (num == 10) Type1 = 175; if (num == 11) Type1 = 381; if (num == 12) Type1 = 1184; if (num == 13) Type1 = 382; if (num == 14) Type1 = 1191; if (num == 15) Type1 = 391; if (num == 16) Type1 = 1198; if (num == 17) Type1 = 1006; if (num == 18) Type1 = 1225; if (num == 19) Type1 = 1257; if (num == 20) Type1 = 1552; if (num == 21) Type1 = 3261; if (num == 22) Type1 = 3467; } else if (tile.type == (ushort) 380) Type1 = 3215 + (int) tile.frameY / 18; else if (tile.type == (ushort) 442) Type1 = 3707; else if (tile.type == (ushort) 383) Type1 = 620; else if (tile.type == (ushort) 315) Type1 = 2435; else if (tile.type == (ushort) 330) Type1 = 71; else if (tile.type == (ushort) 331) Type1 = 72; else if (tile.type == (ushort) 332) Type1 = 73; else if (tile.type == (ushort) 333) Type1 = 74; else if (tile.type == (ushort) 5) { if (tile.frameX >= (short) 22 && tile.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) { if (Main.tile[i, index].type == (ushort) 2 || Main.tile[i, index].type == (ushort) 109 || Main.tile[i, index].type == (ushort) 147 || Main.tile[i, index].type == (ushort) 199 || Main.tile[i, index].type == (ushort) 23) { Type1 = 9; Type2 = 27; } else Type1 = 9; } } else Type1 = 9; } } else Type1 = 9; if (Type1 == 9) { int index3 = i; int index4 = j; if (tile.frameX == (short) 66 && tile.frameY <= (short) 45) ++index3; if (tile.frameX == (short) 88 && tile.frameY >= (short) 66 && tile.frameY <= (short) 110) --index3; if (tile.frameX == (short) 22 && tile.frameY >= (short) 132 && tile.frameY <= (short) 176) --index3; if (tile.frameX == (short) 44 && tile.frameY >= (short) 132 && tile.frameY <= (short) 176) ++index3; if (tile.frameX == (short) 44 && tile.frameY >= (short) 198) ++index3; if (tile.frameX == (short) 66 && tile.frameY >= (short) 198) --index3; while (!Main.tile[index3, index4].active() || !Main.tileSolid[(int) Main.tile[index3, index4].type]) ++index4; if (Main.tile[index3, index4].active()) { switch (Main.tile[index3, index4].type) { case 23: Type1 = 619; break; case 60: Type1 = 620; break; case 70: Type1 = 183; break; case 109: Type1 = 621; break; case 147: Type1 = 2503; break; case 199: Type1 = 911; break; } } int closest = (int) Player.FindClosest(new Vector2((float) (index3 * 16), (float) (index4 * 16)), 16, 16); int axe = Main.player[closest].inventory[Main.player[closest].selectedItem].axe; if (WorldGen.genRand.Next(100) < axe || Main.rand.Next(3) == 0) flag1 = true; } } else if (tile.type == (ushort) 323) { Type1 = 2504; if (tile.frameX <= (short) 132 && tile.frameX >= (short) 88) Type2 = 27; int index5 = i; int index6 = j; while (!Main.tile[index5, index6].active() || !Main.tileSolid[(int) Main.tile[index5, index6].type]) ++index6; if (Main.tile[index5, index6].active()) { switch (Main.tile[index5, index6].type) { case 112: Type1 = 619; break; case 116: Type1 = 621; break; case 234: Type1 = 911; break; } } } else if (tile.type == (ushort) 408) Type1 = 3460; else if (tile.type == (ushort) 409) Type1 = 3461; else if (tile.type == (ushort) 415) Type1 = 3573; else if (tile.type == (ushort) 416) Type1 = 3574; else if (tile.type == (ushort) 417) Type1 = 3575; else if (tile.type == (ushort) 418) Type1 = 3576; else if (tile.type >= (ushort) byte.MaxValue && tile.type <= (ushort) 261) Type1 = 1970 + (int) tile.type - (int) byte.MaxValue; else if (tile.type >= (ushort) 262 && tile.type <= (ushort) 268) Type1 = 1970 + (int) tile.type - 262; else if (tile.type == (ushort) 171) { if (tile.frameX >= (short) 10) { WorldGen.dropXmasTree(i, j, 0); WorldGen.dropXmasTree(i, j, 1); WorldGen.dropXmasTree(i, j, 2); WorldGen.dropXmasTree(i, j, 3); } } else if (tile.type == (ushort) 324) { switch ((int) tile.frameY / 22) { case 0: Type1 = 2625; break; case 1: Type1 = 2626; break; } } else if (tile.type == (ushort) 421) Type1 = 3609; else if (tile.type == (ushort) 422) Type1 = 3610; else if (tile.type == (ushort) 419) { switch ((int) tile.frameX / 18) { case 0: Type1 = 3602; break; case 1: Type1 = 3618; break; case 2: Type1 = 3663; break; } } else if (tile.type == (ushort) 428) { switch ((int) tile.frameY / 18) { case 0: Type1 = 3630; break; case 1: Type1 = 3632; break; case 2: Type1 = 3631; break; case 3: Type1 = 3626; break; } PressurePlateHelper.DestroyPlate(new Point(i, j)); } else if (tile.type == (ushort) 420) { switch ((int) tile.frameY / 18) { case 0: Type1 = 3603; break; case 1: Type1 = 3604; break; case 2: Type1 = 3605; break; case 3: Type1 = 3606; break; case 4: Type1 = 3607; break; case 5: Type1 = 3608; break; } } else if (tile.type == (ushort) 423) { TELogicSensor.Kill(i, j); switch ((int) tile.frameY / 18) { case 0: Type1 = 3613; break; case 1: Type1 = 3614; break; case 2: Type1 = 3615; break; case 3: Type1 = 3726; break; case 4: Type1 = 3727; break; case 5: Type1 = 3728; break; case 6: Type1 = 3729; break; } } else if (tile.type == (ushort) 424) Type1 = 3616; else if (tile.type == (ushort) 445) Type1 = 3725; else if (tile.type == (ushort) 429) Type1 = 3629; else if (tile.type == (ushort) 272) Type1 = 1344; else if (tile.type == (ushort) 273) Type1 = 2119; else if (tile.type == (ushort) 274) Type1 = 2120; else if (tile.type == (ushort) 460) Type1 = 3756; else if (tile.type == (ushort) 326) { Type1 = 2693; Main.PlaySound(13, i * 16, j * 16); } else if (tile.type == (ushort) 327) { Type1 = 2694; Main.PlaySound(13, i * 16, j * 16); } else if (tile.type == (ushort) 458) { Type1 = 3754; Main.PlaySound(13, i * 16, j * 16); } else if (tile.type == (ushort) 459) { Type1 = 3755; Main.PlaySound(13, i * 16, j * 16); } else if (tile.type == (ushort) 345) { Type1 = 2787; Main.PlaySound(13, i * 16, j * 16); } else if (tile.type == (ushort) 328) { Type1 = 2695; Main.PlaySound(13, i * 16, j * 16); } else if (tile.type == (ushort) 329) { Type1 = 2697; Main.PlaySound(13, i * 16, j * 16); } else if (tile.type == (ushort) 346) Type1 = 2792; else if (tile.type == (ushort) 347) Type1 = 2793; else if (tile.type == (ushort) 348) Type1 = 2794; else if (tile.type == (ushort) 350) Type1 = 2860; else if (tile.type == (ushort) 336) Type1 = 2701; else if (tile.type == (ushort) 340) Type1 = 2751; else if (tile.type == (ushort) 341) Type1 = 2752; else if (tile.type == (ushort) 342) Type1 = 2753; else if (tile.type == (ushort) 343) Type1 = 2754; else if (tile.type == (ushort) 344) Type1 = 2755; else if (tile.type == (ushort) 351) Type1 = 2868; else if (tile.type == (ushort) 251) Type1 = 1725; else if (tile.type == (ushort) 252) Type1 = 1727; else if (tile.type == (ushort) 253) Type1 = 1729; else if (tile.type == (ushort) 325) Type1 = 2692; else if (tile.type == (ushort) 370) Type1 = 3100; else if (tile.type == (ushort) 396) Type1 = 3271; else if (tile.type == (ushort) 400) Type1 = 3276; else if (tile.type == (ushort) 401) Type1 = 3277; else if (tile.type == (ushort) 403) Type1 = 3339; else if (tile.type == (ushort) 397) Type1 = 3272; else if (tile.type == (ushort) 398) Type1 = 3274; else if (tile.type == (ushort) 399) Type1 = 3275; else if (tile.type == (ushort) 402) Type1 = 3338; else if (tile.type == (ushort) 404) Type1 = 3347; else if (tile.type == (ushort) 407) Type1 = 3380; else if (tile.type == (ushort) 170) Type1 = 1872; else if (tile.type == (ushort) 284) Type1 = 2173; else if (tile.type == (ushort) 214) Type1 = 85; else if (tile.type == (ushort) 213) Type1 = 965; else if (tile.type == (ushort) 211) Type1 = 947; else if (tile.type == (ushort) 6) Type1 = 11; else if (tile.type == (ushort) 7) Type1 = 12; else if (tile.type == (ushort) 8) Type1 = 13; else if (tile.type == (ushort) 9) Type1 = 14; else if (tile.type == (ushort) 202) Type1 = 824; else if (tile.type == (ushort) 234) Type1 = 1246; else if (tile.type == (ushort) 226) Type1 = 1101; else if (tile.type == (ushort) 224) Type1 = 1103; else if (tile.type == (ushort) 36) Type1 = 1869; else if (tile.type == (ushort) 311) Type1 = 2260; else if (tile.type == (ushort) 312) Type1 = 2261; else if (tile.type == (ushort) 313) Type1 = 2262; else if (tile.type == (ushort) 229) Type1 = 1125; else if (tile.type == (ushort) 230) Type1 = 1127; else if (tile.type == (ushort) 225) { if (WorldGen.genRand.Next(3) == 0) { tile.honey(true); tile.liquid = byte.MaxValue; } else { Type1 = 1124; if (Main.netMode != 1 && WorldGen.genRand.Next(2) == 0) { int num = 1; if (WorldGen.genRand.Next(3) == 0) num = 2; for (int index7 = 0; index7 < num; ++index7) { int Type3 = WorldGen.genRand.Next(210, 212); int index8 = NPC.NewNPC(i * 16 + 8, j * 16 + 15, Type3, 1); Main.npc[index8].velocity.X = (float) WorldGen.genRand.Next(-200, 201) * (1f / 500f); Main.npc[index8].velocity.Y = (float) WorldGen.genRand.Next(-200, 201) * (1f / 500f); Main.npc[index8].netUpdate = true; } } } } else if (tile.type == (ushort) 221) Type1 = 1104; else if (tile.type == (ushort) 222) Type1 = 1105; else if (tile.type == (ushort) 223) Type1 = 1106; else if (tile.type == (ushort) 248) Type1 = 1589; else if (tile.type == (ushort) 249) Type1 = 1591; else if (tile.type == (ushort) 250) Type1 = 1593; else if (tile.type == (ushort) 191) Type1 = 9; else if (tile.type == (ushort) 203) Type1 = 836; else if (tile.type == (ushort) 204) Type1 = 880; else if (tile.type == (ushort) 166) Type1 = 699; else if (tile.type == (ushort) 167) Type1 = 700; else if (tile.type == (ushort) 168) Type1 = 701; else if (tile.type == (ushort) 169) Type1 = 702; else if (tile.type == (ushort) 123) Type1 = 424; else if (tile.type == (ushort) 124) Type1 = 480; else if (tile.type == (ushort) 157) Type1 = 619; else if (tile.type == (ushort) 158) Type1 = 620; else if (tile.type == (ushort) 159) Type1 = 621; else if (tile.type == (ushort) 161) Type1 = 664; else if (tile.type == (ushort) 206) Type1 = 883; else if (tile.type == (ushort) 232) Type1 = 1150; else if (tile.type == (ushort) 198) Type1 = 775; else if (tile.type == (ushort) 314) Type1 = Minecart.GetTrackItem(tile); else if (tile.type == (ushort) 189) Type1 = 751; else if (tile.type == (ushort) 195) Type1 = 763; else if (tile.type == (ushort) 194) Type1 = 766; else if (tile.type == (ushort) 193) Type1 = 762; else if (tile.type == (ushort) 196) Type1 = 765; else if (tile.type == (ushort) 197) Type1 = 767; else if (tile.type == (ushort) 178) { switch ((int) tile.frameX / 18) { case 0: Type1 = 181; break; case 1: Type1 = 180; break; case 2: Type1 = 177; break; case 3: Type1 = 179; break; case 4: Type1 = 178; break; case 5: Type1 = 182; break; case 6: Type1 = 999; break; } } else if (tile.type == (ushort) 149) { if (tile.frameX == (short) 0 || tile.frameX == (short) 54) Type1 = 596; else if (tile.frameX == (short) 18 || tile.frameX == (short) 72) Type1 = 597; else if (tile.frameX == (short) 36 || tile.frameX == (short) 90) Type1 = 598; } else if (tile.type == (ushort) 13) { Main.PlaySound(13, i * 16, j * 16); switch ((int) tile.frameX / 18) { case 1: Type1 = 28; break; case 2: Type1 = 110; break; case 3: Type1 = 350; break; case 4: Type1 = 351; break; case 5: Type1 = 2234; break; case 6: Type1 = 2244; break; case 7: Type1 = 2257; break; case 8: Type1 = 2258; break; default: Type1 = 31; break; } } else if (tile.type == (ushort) 19) { int num = (int) tile.frameY / 18; switch (num) { case 0: Type1 = 94; break; case 1: Type1 = 631; break; case 2: Type1 = 632; break; case 3: Type1 = 633; break; case 4: Type1 = 634; break; case 5: Type1 = 913; break; case 6: Type1 = 1384; break; case 7: Type1 = 1385; break; case 8: Type1 = 1386; break; case 9: Type1 = 1387; break; case 10: Type1 = 1388; break; case 11: Type1 = 1389; break; case 12: Type1 = 1418; break; case 13: Type1 = 1457; break; case 14: Type1 = 1702; break; case 15: Type1 = 1796; break; case 16: Type1 = 1818; break; case 17: Type1 = 2518; break; case 18: Type1 = 2549; break; case 19: Type1 = 2566; break; case 20: Type1 = 2581; break; case 21: Type1 = 2627; break; case 22: Type1 = 2628; break; case 23: Type1 = 2629; break; case 24: Type1 = 2630; break; case 25: Type1 = 2744; break; case 26: Type1 = 2822; break; case 27: Type1 = 3144; break; case 28: Type1 = 3146; break; case 29: Type1 = 3145; break; case 30: case 31: case 32: case 33: case 34: case 35: Type1 = 3903 + num - 30; break; } } else if (tile.type == (ushort) 22) Type1 = 56; else if (tile.type == (ushort) 140) Type1 = 577; else if (tile.type == (ushort) 23) Type1 = 2; else if (tile.type == (ushort) 25) Type1 = 61; else if (tile.type == (ushort) 30) Type1 = 9; else if (tile.type == (ushort) 191) Type1 = 9; else if (tile.type == (ushort) 208) Type1 = 911; else if (tile.type == (ushort) 33) { int num = (int) tile.frameY / 22; Type1 = 105; switch (num) { case 1: Type1 = 1405; break; case 2: Type1 = 1406; break; case 3: Type1 = 1407; break; default: if (num >= 4 && num <= 13) { Type1 = 2045 + num - 4; break; } if (num >= 14 && num <= 16) { Type1 = 2153 + num - 14; break; } switch (num) { case 17: Type1 = 2236; break; case 18: Type1 = 2523; break; case 19: Type1 = 2542; break; case 20: Type1 = 2556; break; case 21: Type1 = 2571; break; case 22: Type1 = 2648; break; case 23: Type1 = 2649; break; case 24: Type1 = 2650; break; case 25: Type1 = 2651; break; case 26: Type1 = 2818; break; case 27: Type1 = 3171; break; case 28: Type1 = 3173; break; case 29: Type1 = 3172; break; case 30: Type1 = 3890; break; } break; } } else if (tile.type == (ushort) 372) Type1 = 3117; else if (tile.type == (ushort) 371) Type1 = 3113; else if (tile.type == (ushort) 174) Type1 = 713; else if (tile.type == (ushort) 37) Type1 = 116; else if (tile.type == (ushort) 38) Type1 = 129; else if (tile.type == (ushort) 39) Type1 = 131; else if (tile.type == (ushort) 40) Type1 = 133; else if (tile.type == (ushort) 41) Type1 = 134; else if (tile.type == (ushort) 43) Type1 = 137; else if (tile.type == (ushort) 44) Type1 = 139; else if (tile.type == (ushort) 45) Type1 = 141; else if (tile.type == (ushort) 46) Type1 = 143; else if (tile.type == (ushort) 47) Type1 = 145; else if (tile.type == (ushort) 48) Type1 = 147; else if (tile.type == (ushort) 49) Type1 = 148; else if (tile.type == (ushort) 51) Type1 = 150; else if (tile.type == (ushort) 53) Type1 = 169; else if (tile.type == (ushort) 151) Type1 = 607; else if (tile.type == (ushort) 152) Type1 = 609; else if (tile.type == (ushort) 54) { Type1 = 170; Main.PlaySound(13, i * 16, j * 16); } else if (tile.type == (ushort) 56) Type1 = 173; else if (tile.type == (ushort) 57) Type1 = 172; else if (tile.type == (ushort) 58) Type1 = 174; else if (tile.type == (ushort) 60) Type1 = 176; else if (tile.type == (ushort) 70) Type1 = 176; else if (tile.type == (ushort) 75) Type1 = 192; else if (tile.type == (ushort) 76) Type1 = 214; else if (tile.type == (ushort) 78) Type1 = 222; else if (tile.type == (ushort) 81) Type1 = 275; else if (tile.type == (ushort) 80) Type1 = 276; else if (tile.type == (ushort) 188) Type1 = 276; else if (tile.type == (ushort) 107) Type1 = 364; else if (tile.type == (ushort) 108) Type1 = 365; else if (tile.type == (ushort) 111) Type1 = 366; else if (tile.type == (ushort) 150) Type1 = 604; else if (tile.type == (ushort) 112) Type1 = 370; else if (tile.type == (ushort) 116) Type1 = 408; else if (tile.type == (ushort) 117) Type1 = 409; else if (tile.type == (ushort) 129) Type1 = 502; else if (tile.type == (ushort) 118) Type1 = 412; else if (tile.type == (ushort) 119) Type1 = 413; else if (tile.type == (ushort) 120) Type1 = 414; else if (tile.type == (ushort) 121) Type1 = 415; else if (tile.type == (ushort) 122) Type1 = 416; else if (tile.type == (ushort) 136) Type1 = 538; else if (tile.type == (ushort) 385) Type1 = 3234; else if (tile.type == (ushort) 137) { int num = (int) tile.frameY / 18; if (num == 0) Type1 = 539; if (num == 1) Type1 = 1146; if (num == 2) Type1 = 1147; if (num == 3) Type1 = 1148; if (num == 4) Type1 = 1149; } else if (tile.type == (ushort) 141) Type1 = 580; else if (tile.type == (ushort) 145) Type1 = 586; else if (tile.type == (ushort) 146) Type1 = 591; else if (tile.type == (ushort) 147) Type1 = 593; else if (tile.type == (ushort) 148) Type1 = 594; else if (tile.type == (ushort) 153) Type1 = 611; else if (tile.type == (ushort) 154) Type1 = 612; else if (tile.type == (ushort) 155) Type1 = 613; else if (tile.type == (ushort) 156) Type1 = 614; else if (tile.type == (ushort) 160) Type1 = 662; else if (tile.type == (ushort) 175) Type1 = 717; else if (tile.type == (ushort) 176) Type1 = 718; else if (tile.type == (ushort) 177) Type1 = 719; else if (tile.type == (ushort) 163) Type1 = 833; else if (tile.type == (ushort) 164) Type1 = 834; else if (tile.type == (ushort) 200) Type1 = 835; else if (tile.type == (ushort) 210) Type1 = 937; else if (tile.type == (ushort) 135) { int num = (int) tile.frameY / 18; if (num == 0) Type1 = 529; if (num == 1) Type1 = 541; if (num == 2) Type1 = 542; if (num == 3) Type1 = 543; if (num == 4) Type1 = 852; if (num == 5) Type1 = 853; if (num == 6) Type1 = 1151; } else if (tile.type == (ushort) 144) { if (tile.frameX == (short) 0) Type1 = 583; if (tile.frameX == (short) 18) Type1 = 584; if (tile.frameX == (short) 36) Type1 = 585; } else if (tile.type == (ushort) 130) Type1 = 511; else if (tile.type == (ushort) 131) Type1 = 512; else if (tile.type == (ushort) 61 || tile.type == (ushort) 74) { if (tile.frameX == (short) 144 && tile.type == (ushort) 61) Item.NewItem(i * 16, j * 16, 16, 16, 331, WorldGen.genRand.Next(2, 4)); else if (tile.frameX == (short) 162 && tile.type == (ushort) 61) Type1 = 223; else if (tile.frameX >= (short) 108 && tile.frameX <= (short) 126 && tile.type == (ushort) 61 && WorldGen.genRand.Next(20) == 0) Type1 = 208; else if (WorldGen.genRand.Next(100) == 0) Type1 = 195; } else if (tile.type == (ushort) 59 || tile.type == (ushort) 60) Type1 = 176; else if (tile.type == (ushort) 190) Type1 = 183; else if (tile.type == (ushort) 71 || tile.type == (ushort) 72) { if (WorldGen.genRand.Next(50) == 0) Type1 = 194; else if (WorldGen.genRand.Next(2) == 0) Type1 = 183; } else if (tile.type >= (ushort) 63 && tile.type <= (ushort) 68) Type1 = (int) tile.type - 63 + 177; else if (tile.type == (ushort) 50) Type1 = tile.frameX != (short) 90 ? 149 : 165; else if (Main.tileAlch[(int) tile.type]) { if (tile.type > (ushort) 82) { int num = (int) tile.frameX / 18; bool flag2 = false; Type1 = 313 + num; int Type4 = 307 + num; if (tile.type == (ushort) 84) flag2 = true; if (num == 0 && Main.dayTime) flag2 = true; if (num == 1 && !Main.dayTime) flag2 = true; if (num == 3 && !Main.dayTime && (Main.bloodMoon || Main.moonPhase == 0)) flag2 = true; if (num == 4 && (Main.raining || (double) Main.cloudAlpha > 0.0)) flag2 = true; if (num == 5 && !Main.raining && Main.dayTime && Main.time > 40500.0) flag2 = true; if (num == 6) { Type1 = 2358; Type4 = 2357; } int closest = (int) Player.FindClosest(new Vector2((float) (i * 16), (float) (j * 16)), 16, 16); if (Main.player[closest].inventory[Main.player[closest].selectedItem].type == 213) { Item.NewItem(i * 16, j * 16, 16, 16, Type4, WorldGen.genRand.Next(1, 6)); Item.NewItem(i * 16, j * 16, 16, 16, Type1, WorldGen.genRand.Next(1, 3)); Type1 = -1; } else if (flag2) { int Stack = WorldGen.genRand.Next(1, 4); Item.NewItem(i * 16, j * 16, 16, 16, Type4, Stack); } } } else if (tile.type == (ushort) 321) Type1 = 2503; else if (tile.type == (ushort) 322) Type1 = 2504; if (Type1 > 0) { int Stack = 1; if (flag1) ++Stack; Item.NewItem(i * 16, j * 16, 16, 16, Type1, Stack, pfix: -1); } if (Type2 > 0) Item.NewItem(i * 16, j * 16, 16, 16, Type2, pfix: -1); } if (Main.netMode != 2) AchievementsHelper.NotifyTileDestroyed(Main.player[Main.myPlayer], tile.type); tile.active(false); tile.halfBrick(false); tile.frameX = (short) -1; tile.frameY = (short) -1; tile.color((byte) 0); tile.frameNumber((byte) 0); if (tile.type == (ushort) 58 && j > Main.maxTilesY - 200) { tile.lava(true); tile.liquid = (byte) 128; } else if (tile.type == (ushort) 419) Wiring.PokeLogicGate(i, j + 1); else if (tile.type == (ushort) 54) WorldGen.SquareWallFrame(i, j); tile.type = (ushort) 0; tile.inActive(false); WorldGen.SquareTileFrame(i, j); } } public static int KillTile_GetTileDustAmount(bool fail, Tile tileCache) { int num = 10; if (tileCache.type == (ushort) 231) num = 6; if (fail) num = 3; if (tileCache.type == (ushort) 138) num = 0; if (tileCache.type == (ushort) 373) num = 0; if (tileCache.type == (ushort) 374) num = 0; if (tileCache.type == (ushort) 375) num = 0; if (tileCache.type == (ushort) 461) num = 0; if (tileCache.type >= (ushort) 300 && tileCache.type <= (ushort) 308) num = 0; if (tileCache.type == (ushort) 125) num = 0; if (tileCache.type == (ushort) 287) num = 0; if (tileCache.type == (ushort) 354) num = 0; if (tileCache.type == (ushort) 355) num = 0; if (tileCache.type == (ushort) 376) num = 0; return num; } public static int KillTile_MakeTileDust(int i, int j, Tile tileCache) { int Type1 = 0; if (tileCache.type == (ushort) 216) Type1 = -1; if (tileCache.type == (ushort) 335) Type1 = -1; if (tileCache.type == (ushort) 338) Type1 = -1; if (tileCache.type == (ushort) 0) Type1 = 0; if (tileCache.type == (ushort) 192) Type1 = 3; if (tileCache.type == (ushort) 208) Type1 = 126; else if (tileCache.type == (ushort) 408 || tileCache.type == (ushort) 409) Type1 = 265; if (tileCache.type == (ushort) 16) { Type1 = 1; if (tileCache.frameX >= (short) 36) Type1 = 82; } else if (tileCache.type == (ushort) 415) Type1 = 6; else if (tileCache.type == (ushort) 416) Type1 = 61; else if (tileCache.type == (ushort) 417) Type1 = 242; else if (tileCache.type == (ushort) 418) Type1 = 135; if (tileCache.type == (ushort) 1 || tileCache.type == (ushort) 17 || tileCache.type == (ushort) 38 || tileCache.type == (ushort) 39 || tileCache.type == (ushort) 41 || tileCache.type == (ushort) 43 || tileCache.type == (ushort) 44 || tileCache.type == (ushort) 48 || Main.tileStone[(int) tileCache.type] || tileCache.type == (ushort) 85 || tileCache.type == (ushort) 90 || tileCache.type == (ushort) 92 || tileCache.type == (ushort) 96 || tileCache.type == (ushort) 97 || tileCache.type == (ushort) 99 || tileCache.type == (ushort) 117 || tileCache.type == (ushort) 130 || tileCache.type == (ushort) 131 || tileCache.type == (ushort) 132 || tileCache.type == (ushort) 135 || tileCache.type == (ushort) 135 || tileCache.type == (ushort) 142 || tileCache.type == (ushort) 143 || tileCache.type == (ushort) 144 || tileCache.type == (ushort) 210 || tileCache.type == (ushort) 207 || tileCache.type == (ushort) 235 || tileCache.type == (ushort) 247 || tileCache.type == (ushort) 272 || tileCache.type == (ushort) 273 || tileCache.type == (ushort) 283 || tileCache.type == (ushort) 410) Type1 = 1; if (tileCache.type == (ushort) 379) Type1 = 257; if (tileCache.type == (ushort) 311) Type1 = 207; if (tileCache.type == (ushort) 312) Type1 = 208; if (tileCache.type == (ushort) 313) Type1 = 209; if (tileCache.type == (ushort) 104) Type1 = -1; if (tileCache.type == (ushort) 95 || tileCache.type == (ushort) 98 || tileCache.type == (ushort) 100 || tileCache.type == (ushort) 174 || tileCache.type == (ushort) 173) Type1 = 6; if (tileCache.type == (ushort) 30 || tileCache.type == (ushort) 86 || tileCache.type == (ushort) 94 || tileCache.type == (ushort) 106 || tileCache.type == (ushort) 114 || tileCache.type == (ushort) 124 || tileCache.type == (ushort) 128 || tileCache.type == (ushort) 269) Type1 = 7; if (tileCache.type == (ushort) 372) Type1 = 242; if (tileCache.type == (ushort) 371) Type1 = 243; if (tileCache.type == (ushort) 334) Type1 = 7; switch (tileCache.type) { case 10: case 11: case 87: case 89: case 93: case 139: case 209: case 319: case 320: case 386: case 387: case 390: case 405: case 406: case 411: case 412: case 419: case 420: case 421: case 422: case 423: case 424: case 425: case 428: case 429: case 441: case 442: case 445: case 446: case 447: case 448: case 449: case 450: case 451: case 452: case 453: case 455: case 456: case 457: case 462: case 463: case 464: case 465: case 466: case 468: Type1 = -1; break; case 407: Type1 = 10; break; case 454: Type1 = 139; break; } if (tileCache.type == (ushort) 240) { int num = (int) tileCache.frameX / 54; if (tileCache.frameY >= (short) 54) num += 36; Type1 = 7; if (num == 16 || num == 17) Type1 = 26; if (num >= 46 && num <= 49) Type1 = -1; } if (tileCache.type == (ushort) 241) Type1 = 1; if (tileCache.type == (ushort) 242) Type1 = -1; if (tileCache.type == (ushort) 356) Type1 = -1; if (tileCache.type == (ushort) 351) Type1 = -1; if (tileCache.type == (ushort) 246) Type1 = -1; if (tileCache.type == (ushort) 36) Type1 = -1; if (tileCache.type == (ushort) 365) Type1 = 239; if (tileCache.type == (ushort) 366) Type1 = 30; if (tileCache.type == (ushort) 357 || tileCache.type == (ushort) 367) Type1 = 236; if (tileCache.type == (ushort) 368 || tileCache.type == (ushort) 369) Type1 = 240; if (tileCache.type == (ushort) 170) Type1 = 196; if (tileCache.type == (ushort) 315) Type1 = 225; if (tileCache.type == (ushort) 346) Type1 = 128; if (tileCache.type == (ushort) 347) Type1 = 117; if (tileCache.type == (ushort) 348) Type1 = 42; if (tileCache.type == (ushort) 350) Type1 = 226; if (tileCache.type == (ushort) 370) Type1 = WorldGen.genRand.Next(2) != 0 ? 23 : 6; if (tileCache.type == (ushort) 171) Type1 = WorldGen.genRand.Next(2) != 0 ? -1 : 196; if (tileCache.type == (ushort) 326) Type1 = 13; if (tileCache.type == (ushort) 327) Type1 = 13; if (tileCache.type == (ushort) 345) Type1 = 13; if (tileCache.type == (ushort) 458) Type1 = 13; if (tileCache.type == (ushort) 459) Type1 = 13; if (tileCache.type == (ushort) 336) Type1 = 6; if (tileCache.type == (ushort) 340) Type1 = 75; if (tileCache.type == (ushort) 341) Type1 = 65; if (tileCache.type == (ushort) 342) Type1 = 135; if (tileCache.type == (ushort) 343) Type1 = 169; if (tileCache.type == (ushort) 344) Type1 = 156; if (tileCache.type == (ushort) 328) Type1 = 13; if (tileCache.type == (ushort) 329) Type1 = 13; if (tileCache.type == (ushort) 330) Type1 = 9; if (tileCache.type == (ushort) 331) Type1 = 11; if (tileCache.type == (ushort) 332) Type1 = 19; if (tileCache.type == (ushort) 333) Type1 = 11; if (tileCache.type == (ushort) 101) Type1 = -1; if (tileCache.type == (ushort) 19) { int num = (int) tileCache.frameY / 18; Type1 = num == 0 || num == 9 || num == 10 || num == 11 || num == 12 ? 7 : (num != 1 ? (num != 2 ? (num != 3 ? (num != 4 ? (num != 5 ? (num != 13 ? (num != 14 ? (num < 15 || num > 16 ? (num != 17 ? (num != 18 ? (num != 19 ? (num != 20 ? (num != 21 ? (num != 22 ? (num != 23 ? (num != 24 ? (num != 25 ? (num != 26 ? (num != 27 ? (num != 28 ? (num != 29 ? (num != 30 ? (num != 31 ? (num != 32 ? (num != 33 ? (num != 34 ? (num != 35 ? 1 : 80) : 5) : 148) : 78) : 10) : 68 + Main.rand.Next(3)) : 236) : 240) : 23) : 226) : 40) : 147) : 78) : 8) : 1) : 4) : 214) : 214) : 215) : -1) : 13) : 109) : 126) : 26) : 79) : 78) : 77); } if (tileCache.type == (ushort) 79) { int num = (int) tileCache.frameY / 36; Type1 = num != 0 ? (num != 1 ? (num != 2 ? (num != 3 ? (num != 4 ? (num != 8 ? (num < 9 ? 1 : -1) : 109) : 126) : 79) : 78) : 77) : 7; } if (tileCache.type == (ushort) 18) { switch ((int) tileCache.frameX / 36) { case 0: Type1 = 7; break; case 1: Type1 = 77; break; case 2: Type1 = 78; break; case 3: Type1 = 79; break; case 4: Type1 = 26; break; case 5: Type1 = 40; break; case 6: Type1 = 5; break; case 7: Type1 = 26; break; case 8: Type1 = 4; break; case 9: Type1 = 126; break; case 10: Type1 = 148; break; case 11: case 12: case 13: Type1 = 1; break; case 14: Type1 = 109; break; case 15: Type1 = 126; break; default: Type1 = -1; break; } } if (tileCache.type == (ushort) 14 || tileCache.type == (ushort) 87 || tileCache.type == (ushort) 88) Type1 = -1; if (tileCache.type >= (ushort) byte.MaxValue && tileCache.type <= (ushort) 261) { int num = (int) tileCache.type - (int) byte.MaxValue; Type1 = 86 + num; if (num == 6) Type1 = 138; } if (tileCache.type >= (ushort) 262 && tileCache.type <= (ushort) 268) { int num = (int) tileCache.type - 262; Type1 = 86 + num; if (num == 6) Type1 = 138; } if (tileCache.type == (ushort) 178) { int num = (int) tileCache.frameX / 18; Type1 = 86 + num; if (num == 6) Type1 = 138; } if (tileCache.type == (ushort) 440) { switch ((int) tileCache.frameX / 54) { case 0: Type1 = 90; break; case 1: Type1 = 88; break; case 2: Type1 = 89; break; case 3: Type1 = 87; break; case 4: Type1 = 86; break; case 5: Type1 = 91; break; case 6: Type1 = 138; break; default: Type1 = -1; break; } if (tileCache.frameY < (short) 54) Type1 = -1; } switch (tileCache.type) { case 426: case 427: Type1 = 90; break; case 430: case 435: Type1 = 89; break; case 431: case 436: Type1 = 88; break; case 432: case 437: Type1 = 87; break; case 433: case 438: Type1 = 86; break; case 434: case 439: Type1 = 91; break; } if (tileCache.type == (ushort) 186) Type1 = tileCache.frameX > (short) 360 ? (tileCache.frameX > (short) 846 ? (tileCache.frameX > (short) 954 ? (tileCache.frameX > (short) 1062 ? (tileCache.frameX > (short) 1170 ? (tileCache.frameX > (short) 1332 ? (tileCache.frameX > (short) 1386 ? 80 : 10) : 0) : 10) : 11) : 9) : 1) : 26; if (tileCache.type == (ushort) 187) { if (tileCache.frameX <= (short) 144) Type1 = 1; else if (tileCache.frameX <= (short) 306) Type1 = 38; else if (tileCache.frameX <= (short) 468) Type1 = 36; else if (tileCache.frameX <= (short) 738) Type1 = 30; else if (tileCache.frameX <= (short) 970) Type1 = 1; else if (tileCache.frameX <= (short) 1132) Type1 = 148; else if (tileCache.frameX <= (short) 1132) Type1 = 155; else if (tileCache.frameX <= (short) 1348) Type1 = 1; else if (tileCache.frameX <= (short) 1564) Type1 = 0; } if (tileCache.type == (ushort) 105) { Type1 = 1; if (tileCache.frameX >= (short) 1548 && tileCache.frameX <= (short) 1654 && tileCache.frameY < (short) 54) Type1 = 148; } if (tileCache.type == (ushort) 349) Type1 = 1; if (tileCache.type == (ushort) 337) Type1 = 1; if (tileCache.type == (ushort) 239) { int num = (int) tileCache.frameX / 18; if (num == 0) Type1 = 9; if (num == 1) Type1 = 81; if (num == 2) Type1 = 8; if (num == 3) Type1 = 82; if (num == 4) Type1 = 11; if (num == 5) Type1 = 83; if (num == 6) Type1 = 10; if (num == 7) Type1 = 84; if (num == 8) Type1 = 14; if (num == 9) Type1 = 23; if (num == 10) Type1 = 25; if (num == 11) Type1 = 48; if (num == 12) Type1 = 144; if (num == 13) Type1 = 49; if (num == 14) Type1 = 145; if (num == 15) Type1 = 50; if (num == 16) Type1 = 146; if (num == 17) Type1 = 128; if (num == 18) Type1 = 84; if (num == 19) Type1 = 117; if (num == 20) Type1 = 42; if (num == 21) Type1 = -1; if (num == 22) Type1 = 265; } if (tileCache.type == (ushort) 185) { if (tileCache.frameY == (short) 18) { int num = (int) tileCache.frameX / 36; if (num < 6) Type1 = 1; else if (num < 16) { Type1 = 26; } else { switch (num) { case 16: Type1 = 9; break; case 17: Type1 = 11; break; case 18: Type1 = 10; break; case 19: Type1 = 86; break; case 20: Type1 = 87; break; case 21: Type1 = 88; break; case 22: Type1 = 89; break; case 23: Type1 = 90; break; case 24: Type1 = 91; break; default: if (num < 31) { Type1 = 80; break; } if (num < 33) { Type1 = 7; break; } if (num < 34) { Type1 = 8; break; } if (num < 39) { Type1 = 30; break; } if (num < 42) { Type1 = 1; break; } break; } } } else { int num = (int) tileCache.frameX / 18; if (num < 6) Type1 = 1; else if (num < 12) Type1 = 0; else if (num < 27) Type1 = 26; else if (num < 32) Type1 = 1; else if (num < 35) Type1 = 0; else if (num < 46) Type1 = 80; else if (num < 52) Type1 = 30; } } if (tileCache.type == (ushort) 184) { int num = (int) tileCache.frameX / 22; Type1 = num != 5 ? 93 + num : 258; } if (tileCache.type == (ushort) 237) Type1 = 148; if (tileCache.type == (ushort) 157) Type1 = 77; if (tileCache.type == (ushort) 158 || tileCache.type == (ushort) 232 || tileCache.type == (ushort) 383) Type1 = 78; if (tileCache.type == (ushort) 159) Type1 = 78; if (tileCache.type == (ushort) 15) Type1 = -1; if (tileCache.type == (ushort) 191) Type1 = 7; if (tileCache.type == (ushort) 5) { Type1 = 7; if (i > 5 && i < Main.maxTilesX - 5) { int index1 = i; int index2 = j; if (tileCache.frameX == (short) 66 && tileCache.frameY <= (short) 45) ++index1; if (tileCache.frameX == (short) 88 && tileCache.frameY >= (short) 66 && tileCache.frameY <= (short) 110) --index1; if (tileCache.frameX == (short) 22 && tileCache.frameY >= (short) 132 && tileCache.frameY <= (short) 176) --index1; if (tileCache.frameX == (short) 44 && tileCache.frameY >= (short) 132 && tileCache.frameY <= (short) 176) ++index1; if (tileCache.frameX == (short) 44 && tileCache.frameY >= (short) 132 && tileCache.frameY <= (short) 176) ++index1; if (tileCache.frameX == (short) 44 && tileCache.frameY >= (short) 198) ++index1; if (tileCache.frameX == (short) 66 && tileCache.frameY >= (short) 198) --index1; while (Main.tile[index1, index2] != null && (!Main.tile[index1, index2].active() || !Main.tileSolid[(int) Main.tile[index1, index2].type])) ++index2; if (Main.tile[index1, index2] != null) { if (Main.tile[index1, index2].active() && Main.tile[index1, index2].type == (ushort) 23) Type1 = 77; if (Main.tile[index1, index2].active() && Main.tile[index1, index2].type == (ushort) 60) Type1 = 78; if (Main.tile[index1, index2].active() && Main.tile[index1, index2].type == (ushort) 70) Type1 = 26; if (Main.tile[index1, index2].active() && Main.tile[index1, index2].type == (ushort) 109) Type1 = 79; if (Main.tile[index1, index2].active() && Main.tile[index1, index2].type == (ushort) 199) Type1 = 121; if (Main.tile[index1, index2].active() && Main.tile[index1, index2].type == (ushort) 147) Type1 = 122; } } } if (tileCache.type == (ushort) 323) { Type1 = 215; if (i > 5 && i < Main.maxTilesX - 5) { int index3 = i; int index4 = j; while (Main.tile[index3, index4] != null && (!Main.tile[index3, index4].active() || !Main.tileSolid[(int) Main.tile[index3, index4].type])) ++index4; if (Main.tile[index3, index4] != null) { if (Main.tile[index3, index4].active() && Main.tile[index3, index4].type == (ushort) 234) Type1 = 121; if (Main.tile[index3, index4].active() && Main.tile[index3, index4].type == (ushort) 116) Type1 = 79; if (Main.tile[index3, index4].active() && Main.tile[index3, index4].type == (ushort) 112) Type1 = 77; } } } if (tileCache.type == (ushort) 137) { Type1 = 1; if ((int) tileCache.frameY / 18 > 0) Type1 = 148; } if (tileCache.type == (ushort) 443) Type1 = 1; if (tileCache.type == (ushort) 444) Type1 = -1; if (tileCache.type == (ushort) 212) Type1 = -1; if (tileCache.type == (ushort) 213) Type1 = 129; if (tileCache.type == (ushort) 214) Type1 = 1; if (tileCache.type == (ushort) 215) Type1 = -6; if (tileCache.type == (ushort) 325) Type1 = 81; if (tileCache.type == (ushort) 251) Type1 = 189; if (tileCache.type == (ushort) 252) Type1 = 190; if (tileCache.type == (ushort) 253) Type1 = 191; if (tileCache.type == (ushort) 254) { if (tileCache.frameX < (short) 72) Type1 = 3; else if (tileCache.frameX < (short) 108) { Type1 = 3; if (WorldGen.genRand.Next(3) == 0) Type1 = 189; } else if (tileCache.frameX < (short) 144) { Type1 = 3; if (WorldGen.genRand.Next(2) == 0) Type1 = 189; } else { Type1 = 3; if (WorldGen.genRand.Next(4) != 0) Type1 = 189; } } if (tileCache.type == (ushort) 467) Type1 = -1; if (tileCache.type == (ushort) 21) Type1 = tileCache.frameX < (short) 1008 ? (tileCache.frameX < (short) 612 ? (tileCache.frameX < (short) 576 ? (tileCache.frameX < (short) 540 ? (tileCache.frameX < (short) 504 ? (tileCache.frameX < (short) 468 ? (tileCache.frameX < (short) 432 ? (tileCache.frameX < (short) 396 ? (tileCache.frameX < (short) 360 ? (tileCache.frameX < (short) 324 ? (tileCache.frameX < (short) 288 ? (tileCache.frameX < (short) 252 ? (tileCache.frameX < (short) 216 ? (tileCache.frameX < (short) 180 ? (tileCache.frameX < (short) 108 ? (tileCache.frameX < (short) 36 ? 7 : 10) : 37) : 7) : 1) : 77) : 78) : 79) : 10) : 11) : 7) : 116) : 126) : 26) : 148) : 11) : -1; if (tileCache.type == (ushort) 2) Type1 = WorldGen.genRand.Next(2) != 0 ? 2 : 0; if (Main.tileMoss[(int) tileCache.type]) Type1 = tileCache.type != (ushort) 381 ? (int) tileCache.type - 179 + 93 : 258; if (tileCache.type == (ushort) sbyte.MaxValue) Type1 = 67; if (tileCache.type == (ushort) 91) Type1 = -1; if (tileCache.type == (ushort) 198) Type1 = 109; if (tileCache.type == (ushort) 26) Type1 = tileCache.frameX < (short) 54 ? 8 : 5; if (tileCache.type == (ushort) 34) Type1 = -1; if (tileCache.type == (ushort) 6) Type1 = 8; if (tileCache.type == (ushort) 7 || tileCache.type == (ushort) 47 || tileCache.type == (ushort) 284) Type1 = 9; if (tileCache.type == (ushort) 8 || tileCache.type == (ushort) 45 || tileCache.type == (ushort) 102) Type1 = 10; if (tileCache.type == (ushort) 9 || tileCache.type == (ushort) 42 || tileCache.type == (ushort) 46 || tileCache.type == (ushort) 126 || tileCache.type == (ushort) 136) Type1 = 11; if (tileCache.type == (ushort) 166 || tileCache.type == (ushort) 175) Type1 = 81; if (tileCache.type == (ushort) 167) Type1 = 82; if (tileCache.type == (ushort) 168 || tileCache.type == (ushort) 176) Type1 = 83; if (tileCache.type == (ushort) 169 || tileCache.type == (ushort) 177) Type1 = 84; if (tileCache.type == (ushort) 199) Type1 = 117; if (tileCache.type == (ushort) 205) Type1 = 125; if (tileCache.type == (ushort) 201) Type1 = 125; if (tileCache.type == (ushort) 211) Type1 = 128; if (tileCache.type == (ushort) 227) { switch ((int) tileCache.frameX / 34) { case 0: case 1: Type1 = 26; break; case 2: case 4: case 5: case 6: Type1 = 40; break; case 3: Type1 = 3; break; case 7: Type1 = 117; break; case 8: Type1 = 17; break; case 9: Type1 = 6; break; case 10: Type1 = 3; break; case 11: Type1 = 26; break; } } if (tileCache.type == (ushort) 204) { Type1 = 117; if (WorldGen.genRand.Next(2) == 0) Type1 = 1; } if (tileCache.type == (ushort) 203) Type1 = 117; if (tileCache.type == (ushort) 243) Type1 = WorldGen.genRand.Next(2) != 0 ? 13 : 7; if (tileCache.type == (ushort) 244) Type1 = WorldGen.genRand.Next(2) != 0 ? 13 : 1; else if (tileCache.type >= (ushort) 358 && tileCache.type <= (ushort) 364 || tileCache.type >= (ushort) 275 && tileCache.type <= (ushort) 282 || tileCache.type == (ushort) 285 || tileCache.type == (ushort) 286 || tileCache.type >= (ushort) 288 && tileCache.type <= (ushort) 297 || tileCache.type >= (ushort) 316 && tileCache.type <= (ushort) 318 || tileCache.type == (ushort) 298 || tileCache.type == (ushort) 299 || tileCache.type == (ushort) 309 || tileCache.type == (ushort) 310 || tileCache.type == (ushort) 339 || tileCache.type == (ushort) 413 || tileCache.type == (ushort) 414) { Type1 = 13; if (WorldGen.genRand.Next(3) != 0) Type1 = -1; } if (tileCache.type == (ushort) 13) Type1 = tileCache.frameX < (short) 90 ? 13 : -1; if (tileCache.type == (ushort) 189) Type1 = 16; if (tileCache.type == (ushort) 460) Type1 = 16; if (tileCache.type == (ushort) 12) Type1 = 12; if (tileCache.type == (ushort) 3 || tileCache.type == (ushort) 73) Type1 = 3; if (tileCache.type == (ushort) 54) Type1 = 13; if (tileCache.type == (ushort) 22 || tileCache.type == (ushort) 140) Type1 = 14; if (tileCache.type == (ushort) 78) Type1 = 22; if (tileCache.type == (ushort) 28) { Type1 = 22; if (tileCache.frameY >= (short) 72 && tileCache.frameY <= (short) 90) Type1 = 1; if (tileCache.frameY >= (short) 144 && tileCache.frameY <= (short) 234) Type1 = 48; if (tileCache.frameY >= (short) 252 && tileCache.frameY <= (short) 358) Type1 = 85; if (tileCache.frameY >= (short) 360 && tileCache.frameY <= (short) 466) Type1 = 26; if (tileCache.frameY >= (short) 468 && tileCache.frameY <= (short) 574) Type1 = 36; if (tileCache.frameY >= (short) 576 && tileCache.frameY <= (short) 790) Type1 = 18; if (tileCache.frameY >= (short) 792 && tileCache.frameY <= (short) 898) Type1 = 5; if (tileCache.frameY >= (short) 900 && tileCache.frameY <= (short) 1006) Type1 = 0; if (tileCache.frameY >= (short) 1008 && tileCache.frameY <= (short) 1114) Type1 = 148; if (tileCache.frameY >= (short) 1116 && tileCache.frameY <= (short) 1222) Type1 = 241; } if (tileCache.type == (ushort) 163) Type1 = 118; if (tileCache.type == (ushort) 164) Type1 = 119; if (tileCache.type == (ushort) 200) Type1 = 120; if (tileCache.type == (ushort) 221 || tileCache.type == (ushort) 248) Type1 = 144; if (tileCache.type == (ushort) 222 || tileCache.type == (ushort) 249) Type1 = 145; if (tileCache.type == (ushort) 223 || tileCache.type == (ushort) 250) Type1 = 146; if (tileCache.type == (ushort) 224) Type1 = 149; if (tileCache.type == (ushort) 225) Type1 = 147; if (tileCache.type == (ushort) 229) Type1 = 153; if (tileCache.type == (ushort) 231) { Type1 = 153; if (WorldGen.genRand.Next(3) == 0) Type1 = 26; } if (tileCache.type == (ushort) 226) Type1 = 148; if (tileCache.type == (ushort) 103) Type1 = -1; if (tileCache.type == (ushort) 29) Type1 = 23; if (tileCache.type == (ushort) 40) Type1 = 28; if (tileCache.type == (ushort) 49) Type1 = 29; if (tileCache.type == (ushort) 50) Type1 = 22; if (tileCache.type == (ushort) 51) Type1 = 30; if (tileCache.type == (ushort) 52 || tileCache.type == (ushort) 353) Type1 = 3; if (tileCache.type == (ushort) 53 || tileCache.type == (ushort) 81 || tileCache.type == (ushort) 151 || tileCache.type == (ushort) 202 || tileCache.type == (ushort) 274) Type1 = 32; if (tileCache.type == (ushort) 56 || tileCache.type == (ushort) 152) Type1 = 37; if (tileCache.type == (ushort) 75) Type1 = 109; if (tileCache.type == (ushort) 57 || tileCache.type == (ushort) 119 || tileCache.type == (ushort) 141 || tileCache.type == (ushort) 234) Type1 = 36; if (tileCache.type == (ushort) 59 || tileCache.type == (ushort) 120) Type1 = 38; if (tileCache.type == (ushort) 61 || tileCache.type == (ushort) 62 || tileCache.type == (ushort) 74 || tileCache.type == (ushort) 80 || tileCache.type == (ushort) 188 || tileCache.type == (ushort) 233 || tileCache.type == (ushort) 236 || tileCache.type == (ushort) 384) Type1 = 40; if (tileCache.type == (ushort) 238) Type1 = WorldGen.genRand.Next(3) != 0 ? 166 : 167; if (tileCache.type == (ushort) 69) Type1 = 7; if (tileCache.type == (ushort) 71 || tileCache.type == (ushort) 72 || tileCache.type == (ushort) 190) Type1 = 26; if (tileCache.type == (ushort) 70) Type1 = 17; if (tileCache.type == (ushort) 112) Type1 = 14; if (tileCache.type == (ushort) 123) Type1 = 53; if (tileCache.type == (ushort) 161) Type1 = 80; if (tileCache.type == (ushort) 206) Type1 = 80; if (tileCache.type == (ushort) 162) Type1 = 80; if (tileCache.type == (ushort) 165) { switch ((int) tileCache.frameX / 54) { case 0: Type1 = 80; break; case 1: Type1 = 1; break; case 2: Type1 = 30; break; case 3: Type1 = 147; break; case 4: Type1 = 1; break; case 5: Type1 = 14; break; case 6: Type1 = 117; break; case 7: Type1 = 250; break; case 8: Type1 = 240; break; case 9: Type1 = 236; break; default: Type1 = 1; break; } } if (tileCache.type == (ushort) 193) Type1 = 4; if (tileCache.type == (ushort) 194) Type1 = 26; if (tileCache.type == (ushort) 195) Type1 = 5; if (tileCache.type == (ushort) 196) Type1 = 108; if (tileCache.type == (ushort) 197) Type1 = 4; if (tileCache.type == (ushort) 153) Type1 = 26; if (tileCache.type == (ushort) 154) Type1 = 32; if (tileCache.type == (ushort) 155) Type1 = 2; if (tileCache.type == (ushort) 156) Type1 = 1; if (tileCache.type == (ushort) 116 || tileCache.type == (ushort) 118 || tileCache.type == (ushort) 147 || tileCache.type == (ushort) 148) Type1 = 51; if (tileCache.type == (ushort) 109) Type1 = WorldGen.genRand.Next(2) != 0 ? 47 : 0; if (tileCache.type == (ushort) 110 || tileCache.type == (ushort) 113 || tileCache.type == (ushort) 115) Type1 = 47; if (tileCache.type == (ushort) 107 || tileCache.type == (ushort) 121) Type1 = 48; if (tileCache.type == (ushort) 108 || tileCache.type == (ushort) 122 || tileCache.type == (ushort) 146) Type1 = 49; if (tileCache.type == (ushort) 111 || tileCache.type == (ushort) 145 || tileCache.type == (ushort) 150) Type1 = 50; if (tileCache.type == (ushort) 133) { Type1 = 50; if (tileCache.frameX >= (short) 54) Type1 = 146; } if (tileCache.type == (ushort) 134) { Type1 = 49; if (tileCache.frameX >= (short) 36) Type1 = 145; } if (tileCache.type == (ushort) 149) Type1 = 49; if (Main.tileAlch[(int) tileCache.type]) { int num = (int) tileCache.frameX / 18; if (num == 0) Type1 = 3; if (num == 1) Type1 = 3; if (num == 2) Type1 = 7; if (num == 3) Type1 = 17; if (num == 4) Type1 = 3; if (num == 5) Type1 = 6; if (num == 6) Type1 = 224; } if (tileCache.type == (ushort) 58 || tileCache.type == (ushort) 76 || tileCache.type == (ushort) 77) Type1 = WorldGen.genRand.Next(2) != 0 ? 25 : 6; if (tileCache.type == (ushort) 37) Type1 = WorldGen.genRand.Next(2) != 0 ? 23 : 6; if (tileCache.type == (ushort) 32) Type1 = WorldGen.genRand.Next(2) != 0 ? 24 : 14; if (tileCache.type == (ushort) 352) Type1 = WorldGen.genRand.Next(3) != 0 ? 125 : 5; if (tileCache.type == (ushort) 23 || tileCache.type == (ushort) 24) Type1 = WorldGen.genRand.Next(2) != 0 ? 17 : 14; if (tileCache.type == (ushort) 25 || tileCache.type == (ushort) 31) Type1 = tileCache.type != (ushort) 31 || tileCache.frameX < (short) 36 ? (WorldGen.genRand.Next(2) != 0 ? 1 : 14) : 5; if (tileCache.type == (ushort) 20) { switch ((int) tileCache.frameX / 54) { case 1: Type1 = 122; break; case 2: Type1 = 78; break; case 3: Type1 = 77; break; case 4: Type1 = 121; break; case 5: Type1 = 79; break; default: Type1 = 7; break; } } if (tileCache.type == (ushort) 27) Type1 = WorldGen.genRand.Next(2) != 0 ? 19 : 3; if (tileCache.type == (ushort) 129) Type1 = tileCache.frameX == (short) 0 || tileCache.frameX == (short) 54 || tileCache.frameX == (short) 108 ? 68 : (tileCache.frameX == (short) 18 || tileCache.frameX == (short) 72 || tileCache.frameX == (short) 126 ? 69 : 70); if (tileCache.type == (ushort) 385) Type1 = WorldGen.genRand.Next(68, 71); if (tileCache.type == (ushort) 4) { int num = (int) tileCache.frameY / 22; switch (num) { case 0: Type1 = 6; break; case 8: Type1 = 75; break; case 9: Type1 = 135; break; case 10: Type1 = 158; break; case 11: Type1 = 169; break; case 12: Type1 = 156; break; case 13: Type1 = 234; break; case 14: Type1 = 66; break; case 15: Type1 = 242; break; default: Type1 = 58 + num; break; } } if (tileCache.type == (ushort) 35) { Type1 = 189; if (tileCache.frameX < (short) 36 && WorldGen.genRand.Next(2) == 0) Type1 = 6; } if ((tileCache.type == (ushort) 34 || tileCache.type == (ushort) 42) && WorldGen.genRand.Next(2) == 0) Type1 = 6; if (tileCache.type == (ushort) 270) Type1 = -1; if (tileCache.type == (ushort) 271) Type1 = -1; if (tileCache.type == (ushort) 79 || tileCache.type == (ushort) 90 || tileCache.type == (ushort) 101) Type1 = -1; if (tileCache.type == (ushort) 33 || tileCache.type == (ushort) 34 || tileCache.type == (ushort) 42 || tileCache.type == (ushort) 93 || tileCache.type == (ushort) 100) Type1 = -1; if (tileCache.type == (ushort) 321) Type1 = 214; if (tileCache.type == (ushort) 322) Type1 = 215; bool flag = tileCache.type == (ushort) 178 || tileCache.type == (ushort) 440; switch (tileCache.type) { case 178: case 426: case 427: case 430: case 431: case 432: case 433: case 434: case 435: case 436: case 437: case 438: case 439: case 440: flag = true; break; } if (Type1 < 0) return 6000; if (tileCache.type == (ushort) 352 && Type1 == 5) { int index = Dust.NewDust(new Vector2((float) (i * 16), (float) (j * 16)), 16, 16, 5, Alpha: 100); Main.dust[index].scale = 1.5f; Main.dust[index].noGravity = true; Main.dust[index].velocity *= 1.65f; Main.dust[index].fadeIn = 1.6f; return index; } if (tileCache.type == (ushort) 160) { int index = Dust.NewDust(new Vector2((float) (i * 16), (float) (j * 16)), 16, 16, 66, Alpha: 100, newColor: new Color(Main.DiscoR, Main.DiscoG, Main.DiscoB), Scale: 0.75f); Main.dust[index].noGravity = true; return index; } if (tileCache.type == (ushort) 323) { int frameY = (int) tileCache.frameY; return Dust.NewDust(new Vector2((float) (i * 16 + frameY), (float) (j * 16)), 16, 16, Type1); } if (tileCache.type == (ushort) 314) { int index = Dust.NewDust(new Vector2((float) (i * 16), (float) (j * 16)), 16, 16, 213, (float) WorldGen.genRand.Next(-2, 3), (float) WorldGen.genRand.Next(-2, 3)); Main.dust[index].noGravity = true; Main.dust[index].fadeIn = (float) ((double) Main.dust[index].scale + 1.0 + 0.00999999977648258 * (double) WorldGen.genRand.Next(0, 51)); Main.dust[index].noGravity = true; return index; } if (flag) { int index = Dust.NewDust(new Vector2((float) (i * 16), (float) (j * 16)), 16, 16, Type1, Alpha: 75, Scale: 0.75f); Main.dust[index].noLight = true; return index; } if (tileCache.type == (ushort) 193 || tileCache.type == (ushort) 18 && Type1 == 4) return Dust.NewDust(new Vector2((float) (i * 16), (float) (j * 16)), 16, 16, Type1, Alpha: 75, newColor: new Color(0, 80, (int) byte.MaxValue, 100), Scale: 0.75f); if (tileCache.type == (ushort) 197) return Dust.NewDust(new Vector2((float) (i * 16), (float) (j * 16)), 16, 16, Type1, Alpha: 75, newColor: new Color(97, 200, (int) byte.MaxValue, 100), Scale: 0.75f); if (tileCache.type == (ushort) 185 && Type1 >= 86 && Type1 <= 91) { int index = Dust.NewDust(new Vector2((float) (i * 16), (float) (j * 16)), 16, 16, Type1, Alpha: 75, Scale: 0.75f); Main.dust[index].noLight = true; return index; } if (tileCache.type == (ushort) 4 && Type1 == 66) { int index = Dust.NewDust(new Vector2((float) (i * 16), (float) (j * 16)), 16, 16, Type1, newColor: new Color((float) Main.DiscoR / (float) byte.MaxValue, (float) Main.DiscoG / (float) byte.MaxValue, (float) Main.DiscoB / (float) byte.MaxValue)); Main.dust[index].noGravity = true; return index; } if (Type1 != 139) return Dust.NewDust(new Vector2((float) (i * 16), (float) (j * 16)), 16, 16, Type1); int Type2 = Type1 + Main.rand.Next(4); return Dust.NewDust(new Vector2((float) (i * 16), (float) (j * 16)), 16, 16, Type2); } public static bool IsOpenDoorAnchorFrame(int x, int y) { Tile tile = Main.tile[x, y]; if (!tile.active() || tile.type != (ushort) 11) return false; int num = (int) tile.frameX % 72; return num >= 18 && num < 54; } public static bool IsLockedDoor(int x, int y) { Tile tile = Main.tile[x, y]; return tile.type == (ushort) 10 && tile.frameY >= (short) 594 && tile.frameY <= (short) 646 && tile.frameX < (short) 54; } public static void DropDoorItem(int x, int y, int doorStyle) { int Type = 0; switch (doorStyle) { case 0: Type = 25; break; case 9: Type = 837; break; case 10: Type = 912; break; case 12: Type = 1137; break; case 13: Type = 1138; break; case 14: Type = 1139; break; case 15: Type = 1140; break; case 16: Type = 1411; break; case 17: Type = 1412; break; case 18: Type = 1413; break; case 19: Type = 1458; break; default: if (doorStyle >= 20 && doorStyle <= 23) { Type = 1709 + doorStyle - 20; break; } switch (doorStyle) { case 24: Type = 1793; break; case 25: Type = 1815; break; case 26: Type = 1924; break; case 27: Type = 2044; break; case 28: Type = 2265; break; case 29: Type = 2528; break; case 30: Type = 2561; break; case 31: Type = 2576; break; case 32: Type = 2815; break; case 33: Type = 3129; break; case 34: Type = 3131; break; case 35: Type = 3130; break; case 36: Type = 3888; break; default: if (doorStyle >= 4 && doorStyle <= 8) { Type = 812 + doorStyle; break; } if (doorStyle != 11) { Type = 649 + doorStyle; break; } break; } break; } if (Type == 0) return; Item.NewItem(x * 16, y * 16, 16, 16, Type); } public static bool PlayerLOS(int x, int y) { Microsoft.Xna.Framework.Rectangle rectangle1 = new Microsoft.Xna.Framework.Rectangle(x * 16, y * 16, 16, 16); for (int index = 0; index < (int) byte.MaxValue; ++index) { if (Main.player[index].active) { Microsoft.Xna.Framework.Rectangle rectangle2 = new Microsoft.Xna.Framework.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 bool Chlorophyte(int i, int j) { int num1 = 40; int num2 = 130; int num3 = 35; int num4 = 85; if ((double) j < Main.rockLayer) { num1 /= 2; num2 /= 2; num3 = (int) ((double) num3 * 1.5); num4 = (int) ((double) num4 * 1.5); } int num5 = 0; for (int index1 = i - num3; index1 < i + num3; ++index1) { for (int index2 = j - num3; index2 < j + num3; ++index2) { if (index1 < Main.maxTilesX - 10 && index1 > 10 && Main.tile[index1, index2].active() && Main.tile[index1, index2].type == (ushort) 211) ++num5; } } if (num5 > num1) return false; int num6 = 0; for (int index3 = i - num4; index3 < i + num4; ++index3) { for (int index4 = j - num4; index4 < j + num4; ++index4) { if (index3 < Main.maxTilesX - 10 && index3 > 10 && Main.tile[index3, index4].active() && Main.tile[index3, index4].type == (ushort) 211) ++num6; } } return num6 <= num2; } private static bool nearbyChlorophyte(int i, int j) { float num1 = 0.0f; int num2 = 10; if (i <= num2 + 5 || i >= Main.maxTilesX - num2 - 5 || j <= num2 + 5 || j >= Main.maxTilesY - num2 - 5) return false; for (int index1 = i - num2; index1 < i + num2; ++index1) { for (int index2 = j - num2; index2 < j + num2; ++index2) { if (Main.tile[index1, index2].active() && (Main.tile[index1, index2].type == (ushort) 211 || Main.tile[index1, index2].type == (ushort) 346)) { ++num1; if ((double) num1 == 5.0) return true; } } } return (double) num1 > 0.0 && (double) WorldGen.genRand.Next(5) < (double) num1; } private static int CountNearBlocksTypes( int i, int j, int radius, int cap = 0, params int[] tiletypes) { if (tiletypes.Length == 0) return 0; int num1 = i - radius; int num2 = i + radius; int num3 = j - radius; int num4 = j + radius; int max = Main.maxTilesX - 1; int num5 = Utils.Clamp(num1, 0, max); int num6 = Utils.Clamp(num2, 0, Main.maxTilesX - 1); int num7 = Utils.Clamp(num3, 0, Main.maxTilesY - 1); int num8 = Utils.Clamp(num4, 0, Main.maxTilesY - 1); int num9 = 0; for (int index1 = num5; index1 < num6; ++index1) { for (int index2 = num7; index2 < num8; ++index2) { if (Main.tile[index1, index2].active()) { foreach (int tiletype in tiletypes) { if (tiletype == (int) Main.tile[index1, index2].type) { ++num9; if (cap > 0 && num9 >= cap) return num9; break; } } } } } return num9; } public static void hardUpdateWorld(int i, int j) { if (!Main.hardMode || Main.tile[i, j].inActive()) return; int type = (int) Main.tile[i, j].type; switch (type) { case 117: case 164: if ((double) j > Main.rockLayer && WorldGen.genRand.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 == (ushort) 129) ++num4; } } if (num4 < 2) { WorldGen.PlaceTile(i + num2, j + num3, 129, true); NetMessage.SendTileSquare(-1, i + num2, j + num3, 1); break; } break; } break; } break; } if ((double) j > (Main.worldSurface + Main.rockLayer) / 2.0) { if (type == 60 && WorldGen.genRand.Next(300) == 0) { int index3 = i + WorldGen.genRand.Next(-10, 11); int index4 = j + WorldGen.genRand.Next(-10, 11); if (WorldGen.InWorld(index3, index4, 2) && Main.tile[index3, index4].active() && Main.tile[index3, index4].type == (ushort) 59 && (!Main.tile[index3, index4 - 1].active() || Main.tile[index3, index4 - 1].type != (ushort) 5 && Main.tile[index3, index4 - 1].type != (ushort) 236 && Main.tile[index3, index4 - 1].type != (ushort) 238) && WorldGen.Chlorophyte(index3, index4)) { Main.tile[index3, index4].type = (ushort) 211; WorldGen.SquareTileFrame(index3, index4); if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index3, index4, 1); } } if (type == 211 && WorldGen.genRand.Next(3) != 0) { int index5 = i; int index6 = j; int num = WorldGen.genRand.Next(4); if (num == 0) ++index5; if (num == 1) --index5; if (num == 2) ++index6; if (num == 3) --index6; if (WorldGen.InWorld(index5, index6, 2) && Main.tile[index5, index6].active() && (Main.tile[index5, index6].type == (ushort) 59 || Main.tile[index5, index6].type == (ushort) 60) && WorldGen.Chlorophyte(index5, index6)) { Main.tile[index5, index6].type = (ushort) 211; WorldGen.SquareTileFrame(index5, index6); if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index5, index6, 1); } bool flag = true; while (flag) { flag = false; int index7 = i + Main.rand.Next(-5, 6); int index8 = j + Main.rand.Next(-5, 6); if (WorldGen.InWorld(index7, index8, 2) && Main.tile[index7, index8].active()) { if (Main.tile[index7, index8].type == (ushort) 23 || Main.tile[index7, index8].type == (ushort) 199 || Main.tile[index7, index8].type == (ushort) 2 || Main.tile[index7, index8].type == (ushort) 109) { Main.tile[index7, index8].type = (ushort) 60; WorldGen.SquareTileFrame(index7, index8); if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index7, index8, 1); flag = true; } else if (Main.tile[index7, index8].type == (ushort) 0) { Main.tile[index7, index8].type = (ushort) 59; WorldGen.SquareTileFrame(index7, index8); if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index7, index8, 1); flag = true; } } } } } if (NPC.downedPlantBoss && WorldGen.genRand.Next(2) != 0) return; if (type == 23 || type == 25 || type == 32 || type == 112 || type == 163 || type == 400 || type == 398) { bool flag1 = true; while (flag1) { flag1 = false; int index9 = i + WorldGen.genRand.Next(-3, 4); int index10 = j + WorldGen.genRand.Next(-3, 4); bool flag2 = false; switch (Main.tile[index9, index10].type) { case 59: case 60: flag2 = WorldGen.nearbyChlorophyte(index9, index10); break; default: bool flag3 = false; int index11 = index9; int index12 = index10; for (int index13 = 0; index13 < 4; ++index13) { switch (index13) { case 0: index11 = index9 - 1; index12 = index10; break; case 1: index11 = index9 + 1; index12 = index10; break; case 2: index11 = index9; index12 = index10 - 1; break; case 3: index11 = index9; index12 = index10 + 1; break; } if (Main.tile[index11, index12].active() && (Main.tile[index11, index12].type == (ushort) 59 || Main.tile[index11, index12].type == (ushort) 60)) { flag3 = true; break; } } if (flag3) { flag2 = WorldGen.nearbyChlorophyte(index9, index10); break; } break; } if (!(Main.tile[index9, index10 - 1].type == (ushort) 27 | flag2)) { if (Main.tile[index9, index10].type == (ushort) 2) { if (WorldGen.genRand.Next(2) == 0) flag1 = true; Main.tile[index9, index10].type = (ushort) 23; WorldGen.SquareTileFrame(index9, index10); NetMessage.SendTileSquare(-1, index9, index10, 1); } else if (Main.tile[index9, index10].type == (ushort) 1 || Main.tileMoss[(int) Main.tile[index9, index10].type]) { if (WorldGen.genRand.Next(2) == 0) flag1 = true; Main.tile[index9, index10].type = (ushort) 25; WorldGen.SquareTileFrame(index9, index10); NetMessage.SendTileSquare(-1, index9, index10, 1); } else if (Main.tile[index9, index10].type == (ushort) 53) { if (WorldGen.genRand.Next(2) == 0) flag1 = true; Main.tile[index9, index10].type = (ushort) 112; WorldGen.SquareTileFrame(index9, index10); NetMessage.SendTileSquare(-1, index9, index10, 1); } else if (Main.tile[index9, index10].type == (ushort) 396) { if (WorldGen.genRand.Next(2) == 0) flag1 = true; Main.tile[index9, index10].type = (ushort) 400; WorldGen.SquareTileFrame(index9, index10); NetMessage.SendTileSquare(-1, index9, index10, 1); } else if (Main.tile[index9, index10].type == (ushort) 397) { if (WorldGen.genRand.Next(2) == 0) flag1 = true; Main.tile[index9, index10].type = (ushort) 398; WorldGen.SquareTileFrame(index9, index10); NetMessage.SendTileSquare(-1, index9, index10, 1); } else if (Main.tile[index9, index10].type == (ushort) 59) { if (WorldGen.genRand.Next(2) == 0) flag1 = true; Main.tile[index9, index10].type = (ushort) 0; WorldGen.SquareTileFrame(index9, index10); NetMessage.SendTileSquare(-1, index9, index10, 1); } else if (Main.tile[index9, index10].type == (ushort) 60) { if (WorldGen.genRand.Next(2) == 0) flag1 = true; Main.tile[index9, index10].type = (ushort) 23; WorldGen.SquareTileFrame(index9, index10); NetMessage.SendTileSquare(-1, index9, index10, 1); } else if (Main.tile[index9, index10].type == (ushort) 69) { if (WorldGen.genRand.Next(2) == 0) flag1 = true; Main.tile[index9, index10].type = (ushort) 32; WorldGen.SquareTileFrame(index9, index10); NetMessage.SendTileSquare(-1, index9, index10, 1); } else if (Main.tile[index9, index10].type == (ushort) 161) { if (WorldGen.genRand.Next(2) == 0) flag1 = true; Main.tile[index9, index10].type = (ushort) 163; WorldGen.SquareTileFrame(index9, index10); NetMessage.SendTileSquare(-1, index9, index10, 1); } } } } if (type == 199 || type == 200 || type == 201 || type == 203 || type == 205 || type == 234 || type == 352 || type == 401 || type == 399) { bool flag4 = true; while (flag4) { flag4 = false; int index14 = i + WorldGen.genRand.Next(-3, 4); int index15 = j + WorldGen.genRand.Next(-3, 4); bool flag5 = WorldGen.nearbyChlorophyte(index14, index15); if (!(Main.tile[index14, index15 - 1].type == (ushort) 27 | flag5)) { if (Main.tile[index14, index15].type == (ushort) 2) { if (WorldGen.genRand.Next(2) == 0) flag4 = true; Main.tile[index14, index15].type = (ushort) 199; WorldGen.SquareTileFrame(index14, index15); NetMessage.SendTileSquare(-1, index14, index15, 1); } else if (Main.tile[index14, index15].type == (ushort) 1 || Main.tileMoss[(int) Main.tile[index14, index15].type]) { if (WorldGen.genRand.Next(2) == 0) flag4 = true; Main.tile[index14, index15].type = (ushort) 203; WorldGen.SquareTileFrame(index14, index15); NetMessage.SendTileSquare(-1, index14, index15, 1); } else if (Main.tile[index14, index15].type == (ushort) 53) { if (WorldGen.genRand.Next(2) == 0) flag4 = true; Main.tile[index14, index15].type = (ushort) 234; WorldGen.SquareTileFrame(index14, index15); NetMessage.SendTileSquare(-1, index14, index15, 1); } else if (Main.tile[index14, index15].type == (ushort) 396) { if (WorldGen.genRand.Next(2) == 0) flag4 = true; Main.tile[index14, index15].type = (ushort) 401; WorldGen.SquareTileFrame(index14, index15); NetMessage.SendTileSquare(-1, index14, index15, 1); } else if (Main.tile[index14, index15].type == (ushort) 397) { if (WorldGen.genRand.Next(2) == 0) flag4 = true; Main.tile[index14, index15].type = (ushort) 399; WorldGen.SquareTileFrame(index14, index15); NetMessage.SendTileSquare(-1, index14, index15, 1); } else if (Main.tile[index14, index15].type == (ushort) 59) { if (WorldGen.genRand.Next(2) == 0) flag4 = true; Main.tile[index14, index15].type = (ushort) 0; WorldGen.SquareTileFrame(index14, index15); NetMessage.SendTileSquare(-1, index14, index15, 1); } else if (Main.tile[index14, index15].type == (ushort) 60) { if (WorldGen.genRand.Next(2) == 0) flag4 = true; Main.tile[index14, index15].type = (ushort) 199; WorldGen.SquareTileFrame(index14, index15); NetMessage.SendTileSquare(-1, index14, index15, 1); } else if (Main.tile[index14, index15].type == (ushort) 69) { if (WorldGen.genRand.Next(2) == 0) flag4 = true; Main.tile[index14, index15].type = (ushort) 352; WorldGen.SquareTileFrame(index14, index15); NetMessage.SendTileSquare(-1, index14, index15, 1); } else if (Main.tile[index14, index15].type == (ushort) 161) { if (WorldGen.genRand.Next(2) == 0) flag4 = true; Main.tile[index14, index15].type = (ushort) 200; WorldGen.SquareTileFrame(index14, index15); NetMessage.SendTileSquare(-1, index14, index15, 1); } } } } if (type != 109 && type != 110 && type != 113 && type != 115 && type != 116 && type != 117 && type != 164 && type != 402 && type != 403) return; bool flag6 = true; while (flag6) { flag6 = false; int index16 = i + WorldGen.genRand.Next(-3, 4); int index17 = j + WorldGen.genRand.Next(-3, 4); if (Main.tile[index16, index17].type == (ushort) 2) { if (WorldGen.genRand.Next(2) == 0) flag6 = true; Main.tile[index16, index17].type = (ushort) 109; WorldGen.SquareTileFrame(index16, index17); NetMessage.SendTileSquare(-1, index16, index17, 1); } else if (Main.tile[index16, index17].type == (ushort) 1 || Main.tileMoss[(int) Main.tile[index16, index17].type]) { if (WorldGen.genRand.Next(2) == 0) flag6 = true; Main.tile[index16, index17].type = (ushort) 117; WorldGen.SquareTileFrame(index16, index17); NetMessage.SendTileSquare(-1, index16, index17, 1); } else if (Main.tile[index16, index17].type == (ushort) 53) { if (WorldGen.genRand.Next(2) == 0) flag6 = true; Main.tile[index16, index17].type = (ushort) 116; WorldGen.SquareTileFrame(index16, index17); NetMessage.SendTileSquare(-1, index16, index17, 1); } else if (Main.tile[index16, index17].type == (ushort) 396) { if (WorldGen.genRand.Next(2) == 0) flag6 = true; Main.tile[index16, index17].type = (ushort) 403; WorldGen.SquareTileFrame(index16, index17); NetMessage.SendTileSquare(-1, index16, index17, 1); } else if (Main.tile[index16, index17].type == (ushort) 397) { if (WorldGen.genRand.Next(2) == 0) flag6 = true; Main.tile[index16, index17].type = (ushort) 402; WorldGen.SquareTileFrame(index16, index17); NetMessage.SendTileSquare(-1, index16, index17, 1); } else if (Main.tile[index16, index17].type == (ushort) 161) { if (WorldGen.genRand.Next(2) == 0) flag6 = true; Main.tile[index16, index17].type = (ushort) 164; WorldGen.SquareTileFrame(index16, index17); NetMessage.SendTileSquare(-1, index16, index17, 1); } } } public static bool SolidTile(Tile testTile) { try { if (testTile == null) return true; if (testTile.active()) { if (Main.tileSolid[(int) testTile.type]) { if (!Main.tileSolidTop[(int) testTile.type]) { if (!testTile.halfBrick()) { if (testTile.slope() == (byte) 0) { if (!testTile.inActive()) return true; } } } } } } catch { } return false; } public static bool TileEmpty(int i, int j) => Main.tile[i, j] == null || !Main.tile[i, j].active() || Main.tile[i, j].inActive(); public static bool SolidOrSlopedTile(Tile tile) => tile != null && tile.active() && Main.tileSolid[(int) tile.type] && !Main.tileSolidTop[(int) tile.type] && !tile.inActive(); public static bool SolidOrSlopedTile(int x, int y) => WorldGen.SolidOrSlopedTile(Main.tile[x, y]); 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]) { if (!Main.tile[i, j].halfBrick()) { if (Main.tile[i, j].slope() == (byte) 0) { if (!Main.tile[i, j].inActive()) return true; } } } } } } catch { } return false; } public static bool SolidTile2(Tile testTile) { try { if (testTile == null) return true; if (testTile.active()) { if (Main.tileSolid[(int) testTile.type]) { if (testTile.slope() == (byte) 0) { if (!testTile.halfBrick()) { if (!testTile.inActive()) return true; } } } } } catch { } return false; } public static bool PlatformProperTopFrame(short frameX) { int num = (int) frameX / TileObjectData.PlatformFrameWidth(); if (num >= 0 && num <= 7 || num >= 12 && num <= 16) return true; return num >= 25 && num <= 26; } public static bool SolidTileAllowBottomSlope(int i, int j) { try { Tile tile = Main.tile[i, j]; if (tile == null) return true; if (tile.active()) { if (!Main.tileSolid[(int) tile.type]) { if (!Main.tileSolidTop[(int) tile.type]) goto label_12; } if (tile.topSlope()) { if (TileID.Sets.Platforms[(int) tile.type]) { if (!WorldGen.PlatformProperTopFrame(tile.frameX)) goto label_12; } else goto label_12; } if (!tile.halfBrick()) { if (!tile.inActive()) return true; } } } catch { } label_12: return false; } public static bool SolidTile3(int i, int j) => WorldGen.InWorld(i, j, 1) && WorldGen.SolidTile3(Main.tile[i, j]); public static bool SolidTile3(Tile t) => t != null && t.active() && !t.inActive() && Main.tileSolid[(int) t.type] && !Main.tileSolidTop[(int) t.type]; public static bool SolidTile2(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.tile[i, j].slope() == (byte) 0) { if (!Main.tile[i, j].halfBrick()) { if (!Main.tile[i, j].inActive()) return true; } } } } } catch { } return false; } public static bool SolidTileNoAttach(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.tileNoAttach[(int) Main.tile[i, j].type]) { if (Main.tile[i, j].slope() == (byte) 0) { if (!Main.tile[i, j].halfBrick()) { if (!Main.tile[i, j].inActive()) return true; } } } } } } catch { } return false; } public static Vector2 Hive(int i, int j) { double num1 = (double) WorldGen.genRand.Next(12, 21); double num2 = num1; float num3 = (float) WorldGen.genRand.Next(10, 21); 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.2f; vector2_2.Y = (float) WorldGen.genRand.Next(-10, 11) * 0.2f; while (num1 > 0.0 && (double) num3 > 0.0) { num1 = num2 * (1.0 + (double) WorldGen.genRand.Next(-20, 20) * 0.00999999977648258); float num4 = num3 - 1f; int num5 = (int) ((double) vector2_1.X - num1); int num6 = (int) ((double) vector2_1.X + num1); int num7 = (int) ((double) vector2_1.Y - num1); int num8 = (int) ((double) vector2_1.Y + num1); if (num5 < 1) num5 = 1; if (num6 > Main.maxTilesX - 1) num6 = Main.maxTilesX - 1; if (num7 < 1) num7 = 1; if (num8 > Main.maxTilesY - 1) num8 = Main.maxTilesY - 1; for (int i1 = num5; i1 < num6; ++i1) { for (int j1 = num7; j1 < num8; ++j1) { double num9 = (double) Math.Abs((float) i1 - vector2_1.X); float num10 = Math.Abs((float) j1 - vector2_1.Y); double num11 = Math.Sqrt(num9 * num9 + (double) num10 * (double) num10); if (num11 < num2 * 0.4 * (1.0 + (double) WorldGen.genRand.Next(-10, 11) * 0.005)) { if (WorldGen.genRand.Next(3) == 0) Main.tile[i1, j1].liquid = byte.MaxValue; Main.tile[i1, j1].honey(true); Main.tile[i1, j1].wall = (byte) 86; Main.tile[i1, j1].active(false); Main.tile[i1, j1].halfBrick(false); Main.tile[i1, j1].slope((byte) 0); WorldGen.SquareWallFrame(i1, j1); } else if (num11 < num2 * 0.75 * (1.0 + (double) WorldGen.genRand.Next(-10, 11) * 0.005)) { Main.tile[i1, j1].liquid = (byte) 0; if (Main.tile[i1, j1].wall != (byte) 86) { Main.tile[i1, j1].active(true); Main.tile[i1, j1].halfBrick(false); Main.tile[i1, j1].slope((byte) 0); Main.tile[i1, j1].type = (ushort) 225; } } if (num11 < num2 * 0.6 * (1.0 + (double) WorldGen.genRand.Next(-10, 11) * 0.005)) Main.tile[i1, j1].wall = (byte) 86; WorldGen.SquareWallFrame(i1, j1); WorldGen.SquareTileFrame(i1, j1); } } vector2_1 += vector2_2; num3 = num4 - 1f; vector2_2.Y += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; vector2_2.X += (float) WorldGen.genRand.Next(-10, 11) * 0.05f; } return new Vector2(vector2_1.X, vector2_1.Y); } 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].halfBrick() || Main.tile[i1 - num7, j2].slope() != (byte) 0)) { Main.tile[i1 - num7, j2].active(true); Main.tile[i1 - num7, j2].type = (ushort) 30; } if (WorldGen.SolidTile(i1 - 1, j2) || Main.tile[i1 - 1, j2].halfBrick() || Main.tile[i1 - 1, j2].slope() != (byte) 0) Main.tile[i1 - 1, j2].type = (ushort) 30; if (WorldGen.SolidTile(i1 + 1, j2) || Main.tile[i1 + 1, j2].halfBrick() || Main.tile[i1 + 1, j2].slope() != (byte) 0) Main.tile[i1 + 1, j2].type = (ushort) 30; if (WorldGen.SolidTile(i1, j2) || Main.tile[i1, j2].halfBrick() || Main.tile[i1, j2].slope() != (byte) 0) { 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 = (ushort) 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 = (ushort) 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 minValue1 = i - num3 - 1; int maxValue1 = i + num4 + 2; int minValue2 = num5 - 1; int maxValue2 = num6 + 2; for (int i2 = minValue1; i2 < maxValue1; ++i2) { for (int j5 = minValue2; j5 < maxValue2; ++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 = (ushort) 30; } } } if (Main.tile[i2, j5].type == (ushort) 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 = minValue1; index3 < maxValue1; ++index3) { for (int index4 = minValue2; index4 < maxValue2; ++index4) { if (Main.tile[index3, index4].type == (ushort) 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 (!TileID.Sets.BasicChest[(int) Main.tile[index3, index4 - 1].type] && Main.tile[index3 - 1, index4].wall == (byte) 27 && Main.tile[index3 + 1, index4].type == (ushort) 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 = minValue1; i4 < maxValue1; ++i4) { for (int j7 = maxValue2; j7 > minValue2; --j7) { bool flag5 = false; if (Main.tile[i4, j7].active() && Main.tile[i4, j7].type == (ushort) 30) { int num14 = -1; for (int index5 = 0; index5 < 2; ++index5) { if (!WorldGen.SolidTile(i4 + num14, j7) && Main.tile[i4 + num14, j7].wall == (byte) 0) { int num15 = 0; int j8 = j7; int num16 = j7; while (Main.tile[i4, j8].active() && Main.tile[i4, j8].type == (ushort) 30 && !WorldGen.SolidTile(i4 + num14, j8) && Main.tile[i4 + num14, j8].wall == (byte) 0) { --j8; ++num15; } int num17 = j8 + 1 + 1; if (num15 > 4) { if (WorldGen.genRand.Next(2) == 0) { int j9 = num16 - 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 = num17; index8 < num16; ++index8) Main.tile[i4, index8].type = (ushort) 124; } } } num14 = 1; } } if (flag5) break; } } int num18 = WorldGen.genRand.Next(1, 2); if (WorldGen.genRand.Next(4) == 0) num18 = 0; if (WorldGen.genRand.Next(6) == 0) ++num18; if (WorldGen.genRand.Next(10) == 0) ++num18; for (int index9 = 0; index9 < num18; ++index9) { int num19 = 0; int index10 = WorldGen.genRand.Next(minValue1, maxValue1); int index11; for (index11 = WorldGen.genRand.Next(minValue2, maxValue2); !Main.wallHouse[(int) Main.tile[index10, index11].wall] || Main.tile[index10, index11].active(); index11 = WorldGen.genRand.Next(minValue2, maxValue2)) { ++num19; if (num19 <= 1000) index10 = WorldGen.genRand.Next(minValue1, maxValue1); else break; } if (num19 <= 1000) { for (int index12 = 0; index12 < 2; ++index12) { int index13 = index10; int index14 = index10; while (!Main.tile[index13, index11].active() && Main.wallHouse[(int) Main.tile[index13, index11].wall]) --index13; int num20 = index13 + 1; while (!Main.tile[index14, index11].active() && Main.wallHouse[(int) Main.tile[index14, index11].wall]) ++index14; int num21 = index14 - 1; i = (num20 + num21) / 2; int index15 = index11; int index16 = index11; while (!Main.tile[index10, index15].active() && Main.wallHouse[(int) Main.tile[index10, index15].wall]) --index15; int num22 = index15 + 1; while (!Main.tile[index10, index16].active() && Main.wallHouse[(int) Main.tile[index10, index16].wall]) ++index16; int num23 = index16 - 1; index11 = (num22 + num23) / 2; } int index17 = index10; int index18 = index10; while (!Main.tile[index17, index11].active() && !Main.tile[index17, index11 - 1].active() && !Main.tile[index17, index11 + 1].active()) --index17; int num24 = index17 + 1; while (!Main.tile[index18, index11].active() && !Main.tile[index18, index11 - 1].active() && !Main.tile[index18, index11 + 1].active()) ++index18; int num25 = index18 - 1; int index19 = index11; int index20 = index11; while (!Main.tile[index10, index19].active() && !Main.tile[index10 - 1, index19].active() && !Main.tile[index10 + 1, index19].active()) --index19; int num26 = index19 + 1; while (!Main.tile[index10, index20].active() && !Main.tile[index10 - 1, index20].active() && !Main.tile[index10 + 1, index20].active()) ++index20; int num27 = index20 - 1; int num28 = (num24 + num25) / 2; int num29 = (num26 + num27) / 2; int num30 = num25 - num24; int num31 = num27 - num26; if (num30 > 7 && num31 > 5) { int num32 = 0; if (WorldGen.nearPicture2(i, num29)) num32 = -1; if (num32 == 0) { Vector2 vector2 = WorldGen.randHousePicture(); int x = (int) vector2.X; int y = (int) vector2.Y; if (!WorldGen.nearPicture(num28, num29)) WorldGen.PlaceTile(num28, num29, x, true, style: y); } } } else break; } for (int i5 = minValue1; i5 < maxValue1; i5 = i5 + WorldGen.genRand.Next(4) + 1) { bool flag = true; for (int j10 = minValue2; j10 < maxValue2; ++j10) { for (int i6 = i5 - 3; i6 <= i5 + 3; ++i6) { if (Main.tile[i6, j10].active() && (!WorldGen.SolidTile(i6, j10) || Main.tile[i6, j10].type == (ushort) 10)) flag = false; } } if (flag) { for (int j11 = minValue2; j11 < maxValue2; ++j11) { if (Main.tile[i5, j11].wall == (byte) 27 && !Main.tile[i5, j11].active()) WorldGen.PlaceTile(i5, j11, 124, true); } } } for (int index21 = 0; index21 < 4; ++index21) { int i7 = WorldGen.genRand.Next(minValue1 + 2, maxValue1 - 1); int index22; for (index22 = WorldGen.genRand.Next(minValue2 + 2, maxValue2 - 1); Main.tile[i7, index22].wall != (byte) 27; index22 = WorldGen.genRand.Next(minValue2 + 2, maxValue2 - 1)) i7 = WorldGen.genRand.Next(minValue1 + 2, maxValue1 - 1); while (Main.tile[i7, index22].active()) --index22; while (!Main.tile[i7, index22].active()) ++index22; int j12 = index22 - 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 index23 = WorldGen.genRand.Next(2, WorldGen.statueList.Length); WorldGen.PlaceTile(i7, j12, (int) WorldGen.statueList[index23].X, true, true, style: ((int) WorldGen.statueList[index23].Y)); } } } for (int index24 = 0; index24 < 40; ++index24) { int i8 = WorldGen.genRand.Next(minValue1 + 2, maxValue1 - 1); int index25; for (index25 = WorldGen.genRand.Next(minValue2 + 2, maxValue2 - 1); Main.tile[i8, index25].wall != (byte) 27; index25 = WorldGen.genRand.Next(minValue2 + 2, maxValue2 - 1)) i8 = WorldGen.genRand.Next(minValue1 + 2, maxValue1 - 1); while (Main.tile[i8, index25].active()) --index25; while (!Main.tile[i8, index25].active()) ++index25; int j13 = index25 - 1; if (Main.tile[i8, j13].wall == (byte) 27 && WorldGen.genRand.Next(2) == 0) { int style = WorldGen.genRand.Next(22, 26); WorldGen.PlaceTile(i8, j13, 186, true, style: style); } } for (int index26 = 0; index26 < 20; ++index26) { int i9 = WorldGen.genRand.Next(minValue1 + 2, maxValue1 - 1); int index27; for (index27 = WorldGen.genRand.Next(minValue2 + 2, maxValue2 - 1); Main.tile[i9, index27].wall != (byte) 27; index27 = WorldGen.genRand.Next(minValue2 + 2, maxValue2 - 1)) i9 = WorldGen.genRand.Next(minValue1 + 2, maxValue1 - 1); while (Main.tile[i9, index27].active()) --index27; while (!Main.tile[i9, index27].active()) ++index27; int j14 = index27 - 1; if (Main.tile[i9, j14].wall == (byte) 27 && WorldGen.genRand.Next(2) == 0) { int X = WorldGen.genRand.Next(31, 34); WorldGen.PlaceSmallPile(i9, j14, X, 1); } } for (int index28 = 0; index28 < 15; ++index28) { int i10 = WorldGen.genRand.Next(minValue1 + 2, maxValue1 - 1); int j15; for (j15 = WorldGen.genRand.Next(minValue2 + 2, maxValue2 - 1); Main.tile[i10, j15].wall != (byte) 27; j15 = WorldGen.genRand.Next(minValue2 + 2, maxValue2 - 1)) i10 = WorldGen.genRand.Next(minValue1 + 2, maxValue1 - 1); while (Main.tile[i10, j15].active()) --j15; while (j15 > 0 && !Main.tile[i10, j15 - 1].active()) --j15; if (Main.tile[i10, j15].wall == (byte) 27) { int style = 0; int type; if (WorldGen.genRand.Next(10) < 9) { type = -1; } else { type = 34; style = WorldGen.genRand.Next(6); } if (type > 0) { WorldGen.PlaceTile(i10, j15, type, true, style: style); if ((int) Main.tile[i10, j15].type == type) { if (type == 4) { Main.tile[i10, j15].frameX += (short) 54; } else { int index29 = i10; int index30 = j15; int index31 = index30 - (int) Main.tile[index29, index30].frameY % 54 / 18; int num33 = (int) Main.tile[index29, index30].frameX / 18; if (num33 > 2) num33 -= 3; int index32 = index29 - num33; short num34 = 54; if (Main.tile[index32, index31].frameX > (short) 0) num34 = (short) -54; for (int index33 = index32; index33 < index32 + 3; ++index33) { for (int index34 = index31; index34 < index31 + 3; ++index34) Main.tile[index33, index34].frameX += num34; } } } } } } } public static void CountTiles(int X) { if (X == 0) { WorldGen.totalEvil = WorldGen.totalEvil2; WorldGen.totalBlood = WorldGen.totalBlood2; WorldGen.totalSolid = WorldGen.totalSolid2; WorldGen.totalGood = WorldGen.totalGood2; WorldGen.tGood = (byte) Math.Round((double) WorldGen.totalGood / (double) WorldGen.totalSolid * 100.0); WorldGen.tEvil = (byte) Math.Round((double) WorldGen.totalEvil / (double) WorldGen.totalSolid * 100.0); WorldGen.tBlood = (byte) Math.Round((double) WorldGen.totalBlood / (double) WorldGen.totalSolid * 100.0); if (WorldGen.tGood == (byte) 0 && WorldGen.totalGood > 0) WorldGen.tGood = (byte) 1; if (WorldGen.tEvil == (byte) 0 && WorldGen.totalEvil > 0) WorldGen.tEvil = (byte) 1; if (WorldGen.tBlood == (byte) 0 && WorldGen.totalBlood > 0) WorldGen.tBlood = (byte) 1; if (Main.netMode == 2) NetMessage.SendData(57); WorldGen.totalEvil2 = 0; WorldGen.totalSolid2 = 0; WorldGen.totalGood2 = 0; WorldGen.totalBlood2 = 0; } ushort num1 = 0; int num2 = 0; int num3 = 0; int num4 = 0; do { int num5; int num6; if (num3 == 0) { num5 = 0; num4 = (int) (Main.worldSurface + 1.0); num6 = 5; } else { num5 = num4; num4 = Main.maxTilesY; num6 = 1; } for (int index = num5; index < num4; ++index) { Tile tile = Main.tile[X, index] ?? (Main.tile[X, index] = new Tile()); ushort type = tile.type; if (type != (ushort) 0 || tile.active()) { if ((int) type == (int) num1) { num2 += num6; } else { WorldGen.tileCounts[(int) num1] += num2; num1 = type; num2 = num6; } } } WorldGen.tileCounts[(int) num1] += num2; num2 = 0; ++num3; } while (num3 < 2); WorldGen.AddUpAlignmentCounts(); } public static void AddUpAlignmentCounts(bool clearCounts = false) { if (clearCounts) { WorldGen.totalEvil2 = 0; WorldGen.totalSolid2 = 0; WorldGen.totalGood2 = 0; WorldGen.totalBlood2 = 0; } WorldGen.totalGood2 += WorldGen.tileCounts[164] + WorldGen.tileCounts[109] + WorldGen.tileCounts[117] + WorldGen.tileCounts[116]; WorldGen.totalEvil2 += WorldGen.tileCounts[23] + WorldGen.tileCounts[163] + WorldGen.tileCounts[112] + WorldGen.tileCounts[25]; WorldGen.totalBlood2 += WorldGen.tileCounts[199] + WorldGen.tileCounts[234] + WorldGen.tileCounts[203] + WorldGen.tileCounts[200]; WorldGen.totalSolid2 += WorldGen.tileCounts[2] + WorldGen.tileCounts[1] + WorldGen.tileCounts[60] + WorldGen.tileCounts[53] + WorldGen.tileCounts[161]; WorldGen.totalSolid2 += WorldGen.tileCounts[164] + WorldGen.tileCounts[109] + WorldGen.tileCounts[117] + WorldGen.tileCounts[116]; WorldGen.totalSolid2 += WorldGen.tileCounts[23] + WorldGen.tileCounts[163] + WorldGen.tileCounts[112] + WorldGen.tileCounts[25]; WorldGen.totalSolid2 += WorldGen.tileCounts[199] + WorldGen.tileCounts[234] + WorldGen.tileCounts[203] + WorldGen.tileCounts[200]; Array.Clear((Array) WorldGen.tileCounts, 0, WorldGen.tileCounts.Length); } public static void plantDye(int i, int j, bool exoticPlant = false) { UnifiedRandom unifiedRandom = WorldGen.gen ? WorldGen.genRand : Main.rand; if (!Main.tile[i, j].active() || i < 95 || i > Main.maxTilesX - 95 || j < 95 || j > Main.maxTilesY - 95) return; int num1 = 90; if (exoticPlant) num1 = 240; if ((double) j < Main.worldSurface) { if (Main.tile[i, j - 1].active() && Main.tile[i, j - 1].type != (ushort) 3 && Main.tile[i, j - 1].type != (ushort) 51 && Main.tile[i, j - 1].type != (ushort) 61 && Main.tile[i, j - 1].type != (ushort) 73 && Main.tile[i, j - 1].type != (ushort) 74 && Main.tile[i, j - 1].type != (ushort) 184) return; int num2 = Utils.Clamp(i - num1, 1, Main.maxTilesX - 1 - 1); int num3 = Utils.Clamp(i + num1, 1, Main.maxTilesX - 1 - 1); int num4 = Utils.Clamp(j - num1, 1, Main.maxTilesY - 1 - 1); int num5 = Utils.Clamp(j + num1, 1, Main.maxTilesY - 1 - 1); for (int index1 = num2; index1 < num3; ++index1) { for (int index2 = num4; index2 < num5; ++index2) { if (Main.tile[index1, index2].active() && Main.tile[index1, index2].type == (ushort) 227 && (!exoticPlant || Main.tile[index1, index2].frameX >= (short) 272) && (exoticPlant || Main.tile[index1, index2].frameX < (short) 272)) return; } } if (exoticPlant) { int type = (int) Main.tile[i, j].type; bool flag = TileID.Sets.Conversion.Grass[type] || TileID.Sets.Conversion.Moss[type] || type == 0; if (Main.tile[i, j - 1].liquid > (byte) 0 && Main.tile[i, j - 1].lava()) flag = false; if (!flag) return; WorldGen.PlaceTile(i, j - 1, 227, true, style: WorldGen.genRand.Next(8, 12)); } else if (Main.tile[i, j].type == (ushort) 2 || Main.tile[i, j].type == (ushort) 109) { if (unifiedRandom.Next(4) == 0) WorldGen.PlaceTile(i, j - 1, 227, true, style: 4); else WorldGen.PlaceTile(i, j - 1, 227, true, style: 3); } else if (Main.tile[i, j].type == (ushort) 60) { if (unifiedRandom.Next(2) == 0) WorldGen.PlaceTile(i, j - 1, 227, true, style: 2); else WorldGen.PlaceTile(i, j - 1, 227, true, style: 4); } else if (Main.tile[i, j].type == (ushort) 53 && Main.tile[i, j - 1].liquid == byte.MaxValue && Main.tile[i, j - 2].liquid == byte.MaxValue) { WorldGen.PlaceTile(i, j - 1, 227, true, style: 2); } else { if (Main.tile[i, j].type != (ushort) 80 || Main.tile[i - 1, j - 1].active()) return; if (Main.tile[i + 1, j - 1].active()) return; try { bool flag = true; for (int index3 = i - 5; index3 <= i + 5; ++index3) { for (int index4 = j - 5; index4 <= j + 15; ++index4) { if (Main.tile[index3, index4].active() && (Main.tile[index3, index4].type == (ushort) 112 || Main.tile[index3, index4].type == (ushort) 234)) flag = false; } } if (!flag) return; WorldGen.PlaceTile(i, j - 1, 227, true, style: 6); } catch { } } } else { if (j >= Main.maxTilesY - 200) return; if (!Main.tile[i, j - 1].active() || Main.tile[i, j - 1].type == (ushort) 3 || Main.tile[i, j - 1].type == (ushort) 51 || Main.tile[i, j - 1].type == (ushort) 61 || Main.tile[i, j - 1].type == (ushort) 73 || Main.tile[i, j - 1].type == (ushort) 74 || Main.tile[i, j - 1].type == (ushort) 184) { int num6 = Utils.Clamp(i - num1, 1, Main.maxTilesX - 1 - 1); int num7 = Utils.Clamp(i + num1, 1, Main.maxTilesX - 1 - 1); int num8 = Utils.Clamp(j - num1, 1, Main.maxTilesY - 1 - 1); int num9 = Utils.Clamp(j + num1, 1, Main.maxTilesY - 1 - 1); for (int index5 = num6; index5 < num7; ++index5) { for (int index6 = num8; index6 < num9; ++index6) { if (Main.tile[index5, index6].active() && Main.tile[index5, index6].type == (ushort) 227 && (!exoticPlant || Main.tile[index5, index6].frameX >= (short) 272) && (exoticPlant || Main.tile[index5, index6].frameX < (short) 272)) return; } } if (exoticPlant) { int type = (int) Main.tile[i, j].type; if ((TileID.Sets.Conversion.Grass[type] || TileID.Sets.Conversion.Moss[type] ? 1 : (type == 0 ? 1 : 0)) != 0) WorldGen.PlaceTile(i, j - 1, 227, true, style: WorldGen.genRand.Next(8, 12)); } else if (Main.tile[i, j].type == (ushort) 60) { if (unifiedRandom.Next(2) == 0) WorldGen.PlaceTile(i, j - 1, 227, true, style: 2); else if (unifiedRandom.Next(2) == 0) WorldGen.PlaceTile(i, j - 1, 227, true); else WorldGen.PlaceTile(i, j - 1, 227, true, style: 1); } else if (Main.tile[i, j].type == (ushort) 0 || Main.tile[i, j].type == (ushort) 1 || Main.tile[i, j].type == (ushort) 59) { if (unifiedRandom.Next(2) == 0) WorldGen.PlaceTile(i, j - 1, 227, true); else WorldGen.PlaceTile(i, j - 1, 227, true, style: 1); } else if (Main.tile[i, j - 1].liquid == byte.MaxValue && Main.tile[i, j - 2].liquid == byte.MaxValue) WorldGen.PlaceTile(i, j - 1, 227, true, style: 5); } if (Main.tile[i, j + 1].active() || exoticPlant) return; for (int index7 = i - num1; index7 < i + num1; ++index7) { for (int index8 = j - num1; index8 < j + num1; ++index8) { if (Main.tile[index7, index8].active() && Main.tile[index7, index8].type == (ushort) 227) return; } } if (Main.tile[i, j].type != (ushort) 0) return; WorldGen.PlaceTile(i, j + 1, 227, true, style: 7); } } public static void UpdateWorld() { int wallDist = 20; int maxValue1 = 40; if (Main.expertMode) maxValue1 = 30; Wiring.UpdateMech(); TileEntity.UpdateStart(); foreach (TileEntity tileEntity in TileEntity.ByID.Values) tileEntity.Update(); TileEntity.UpdateEnd(); WorldGen.UpdateLunarApocalypse(); if (Main.netMode != 1) { ++WorldGen.totalD; if (WorldGen.totalD >= 30) { WorldGen.totalD = 0; WorldGen.CountTiles(WorldGen.totalX); ++WorldGen.totalX; if (WorldGen.totalX >= Main.maxTilesX) WorldGen.totalX = 0; } } if (Main.worldRate == 0) return; ++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 || Main.eclipse) WorldGen.spawnDelay = 0; if (WorldGen.spawnDelay >= 20) { flag1 = true; WorldGen.spawnDelay = 0; if (WorldGen.prioritizedTownNPC != 37) { for (int index = 0; index < 200; ++index) { if (Main.npc[index].active && Main.npc[index].homeless && Main.npc[index].townNPC && Main.npc[index].type != 368) { WorldGen.prioritizedTownNPC = Main.npc[index].type; break; } } } } float num3 = (float) (Main.maxTilesX * Main.maxTilesY) * num1; int num4 = 151; int maxValue2 = (int) MathHelper.Lerp((float) num4, (float) num4 * 2.8f, MathHelper.Clamp((float) ((double) Main.maxTilesX / 4200.0 - 1.0), 0.0f, 1f)); for (int index1 = 0; (double) index1 < (double) num3; ++index1) { if (Main.rand.Next(100) == 0 && Main.rand.Next(maxValue2) == 0) WorldGen.PlantAlch(); int index2 = WorldGen.genRand.Next(10, Main.maxTilesX - 10); int index3 = WorldGen.genRand.Next(10, (int) Main.worldSurface - 1); int num5 = index2 - 1; int num6 = index2 + 2; int index4 = index3 - 1; int num7 = index3 + 2; if (num5 < 10) num5 = 10; if (num6 > Main.maxTilesX - 10) num6 = Main.maxTilesX - 10; if (index4 < 10) index4 = 10; if (num7 > Main.maxTilesY - 10) num7 = 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 == (ushort) 3 || Main.tile[index2, index3].type == (ushort) 20 || Main.tile[index2, index3].type == (ushort) 24 || Main.tile[index2, index3].type == (ushort) 27 || Main.tile[index2, index3].type == (ushort) 73 || Main.tile[index2, index3].type == (ushort) 201)) { WorldGen.KillTile(index2, index3); if (Main.netMode == 2) NetMessage.SendData(17, number2: ((float) index2), number3: ((float) index3)); } } else if (Main.tile[index2, index3].nactive()) { WorldGen.hardUpdateWorld(index2, index3); if (Main.rand.Next(3000) == 0) WorldGen.plantDye(index2, index3); if (Main.rand.Next(9001) == 0) WorldGen.plantDye(index2, index3, true); if (Main.tile[index2, index3].type == (ushort) 80) { if (WorldGen.genRand.Next(15) == 0) WorldGen.GrowCactus(index2, index3); } else if (TileID.Sets.Conversion.Sand[(int) Main.tile[index2, index3].type]) { if (!Main.tile[index2, index4].active()) { if (index2 < 250 || index2 > Main.maxTilesX - 250) { if (WorldGen.genRand.Next(500) == 0) { int num8 = 7; int num9 = 6; int num10 = 0; for (int index5 = index2 - num8; index5 <= index2 + num8; ++index5) { for (int index6 = index4 - num8; index6 <= index4 + num8; ++index6) { if (Main.tile[index5, index6].active() && Main.tile[index5, index6].type == (ushort) 81) ++num10; } } if (num10 < num9 && 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 == (ushort) 116 || Main.tile[index2, index3].type == (ushort) 112 || Main.tile[index2, index3].type == (ushort) 234) { 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 == (ushort) 147 || Main.tile[index2, index3].type == (ushort) 161 || Main.tile[index2, index3].type == (ushort) 163 || Main.tile[index2, index3].type == (ushort) 164 || Main.tile[index2, index3].type == (ushort) 200) { if (Main.rand.Next(10) == 0 && !Main.tile[index2, index3 + 1].active() && !Main.tile[index2, index3 + 2].active()) { int num11 = index2 - 3; int num12 = index2 + 4; int num13 = 0; for (int index7 = num11; index7 < num12; ++index7) { if (Main.tile[index7, index3].type == (ushort) 165 && Main.tile[index7, index3].active()) ++num13; if (Main.tile[index7, index3 + 1].type == (ushort) 165 && Main.tile[index7, index3 + 1].active()) ++num13; if (Main.tile[index7, index3 + 2].type == (ushort) 165 && Main.tile[index7, index3 + 2].active()) ++num13; if (Main.tile[index7, index3 + 3].type == (ushort) 165 && Main.tile[index7, index3 + 3].active()) ++num13; } if (num13 < 2) { WorldGen.PlaceTight(index2, index3 + 1); WorldGen.SquareTileFrame(index2, index3 + 1); if (Main.netMode == 2 && Main.tile[index2, index3 + 1].active()) NetMessage.SendTileSquare(-1, index2, index3 + 1, 3); } } } else if (Main.tile[index2, index3].type == (ushort) 254) { if (Main.rand.Next(((int) Main.tile[index2, index3].frameX + 10) / 10) == 0) WorldGen.GrowPumpkin(index2, index3, 254); } else if (Main.tile[index2, index3].type == (ushort) 78 || Main.tile[index2, index3].type == (ushort) 380) { if (!Main.tile[index2, index4].active() && WorldGen.genRand.Next(2) == 0) { 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 == (ushort) 2 || Main.tile[index2, index3].type == (ushort) 23 || Main.tile[index2, index3].type == (ushort) 32 || Main.tile[index2, index3].type == (ushort) 109 || Main.tile[index2, index3].type == (ushort) 199 || Main.tile[index2, index3].type == (ushort) 352) { int grass = (int) Main.tile[index2, index3].type; if (Main.halloween && WorldGen.genRand.Next(75) == 0 && (grass == 2 || grass == 109)) { int num14 = 100; int num15 = 0; for (int index8 = index2 - num14; index8 < index2 + num14; index8 += 2) { for (int index9 = index3 - num14; index9 < index3 + num14; index9 += 2) { if (index8 > 1 && index8 < Main.maxTilesX - 2 && index9 > 1 && index9 < Main.maxTilesY - 2 && Main.tile[index8, index9].active() && Main.tile[index8, index9].type == (ushort) 254) ++num15; } } if (num15 < 6) { WorldGen.PlacePumpkin(index2, index4); if (Main.netMode == 2 && Main.tile[index2, index4].type == (ushort) 254) NetMessage.SendTileSquare(-1, index2, index4, 4); } } if (!Main.tile[index2, index4].active() && WorldGen.genRand.Next(12) == 0 && grass == 2 && WorldGen.PlaceTile(index2, index4, 3, true)) { Main.tile[index2, index4].color(Main.tile[index2, index3].color()); if (Main.netMode == 2) 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)) { Main.tile[index2, index4].color(Main.tile[index2, index3].color()); if (Main.netMode == 2) 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)) { Main.tile[index2, index4].color(Main.tile[index2, index3].color()); if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index2, index4, 1); } if (!Main.tile[index2, index4].active() && WorldGen.genRand.Next(10) == 0 && grass == 199 && WorldGen.PlaceTile(index2, index4, 201, true)) { Main.tile[index2, index4].color(Main.tile[index2, index3].color()); if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index2, index4, 1); } bool flag2 = false; for (int i = num5; i < num6; ++i) { for (int j = index4; j < num7; ++j) { if ((index2 != i || index3 != j) && Main.tile[i, j].active()) { if (grass == 32) grass = 23; if (grass == 352) grass = 199; if (Main.tile[i, j].type == (ushort) 0 || grass == 23 && Main.tile[i, j].type == (ushort) 2 || grass == 199 && Main.tile[i, j].type == (ushort) 2 || grass == 23 && Main.tile[i, j].type == (ushort) 109) { WorldGen.SpreadGrass(i, j, grass: grass, repeat: false, color: Main.tile[index2, index3].color()); if (grass == 23) WorldGen.SpreadGrass(i, j, 2, grass, false, Main.tile[index2, index3].color()); if (grass == 23) WorldGen.SpreadGrass(i, j, 109, grass, false, Main.tile[index2, index3].color()); if (grass == 199) WorldGen.SpreadGrass(i, j, 2, grass, false, Main.tile[index2, index3].color()); if (grass == 199) WorldGen.SpreadGrass(i, j, 109, grass, false, Main.tile[index2, index3].color()); if ((int) Main.tile[i, j].type == grass) { WorldGen.SquareTileFrame(i, j); flag2 = true; } } if (Main.tile[i, j].type == (ushort) 0 || grass == 109 && Main.tile[i, j].type == (ushort) 2 || grass == 109 && Main.tile[i, j].type == (ushort) 23 || grass == 109 && Main.tile[i, j].type == (ushort) 199) { WorldGen.SpreadGrass(i, j, grass: grass, repeat: false, color: Main.tile[index2, index3].color()); if (grass == 109) WorldGen.SpreadGrass(i, j, 2, grass, false, Main.tile[index2, index3].color()); if (grass == 109) WorldGen.SpreadGrass(i, j, 23, grass, false, Main.tile[index2, index3].color()); if (grass == 109) WorldGen.SpreadGrass(i, j, 199, grass, false, Main.tile[index2, index3].color()); 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 == (ushort) 20 && WorldGen.genRand.Next(20) == 0) { bool flag3 = WorldGen.PlayerLOS(index2, index3); if ((Main.tile[index2, index3].frameX < (short) 324 || Main.tile[index2, index3].frameX >= (short) 540 ? WorldGen.GrowTree(index2, index3) : WorldGen.GrowPalmTree(index2, index3)) & flag3) WorldGen.TreeGrowFXCheck(index2, index3); } if (Main.tile[index2, index3].type == (ushort) 3 && WorldGen.genRand.Next(20) == 0 && Main.tile[index2, index3].frameX != (short) 144) { if (Main.tile[index2, index3].frameX < (short) 144 && Main.rand.Next(10) == 0 || (Main.tile[index2, index3 + 1].type == (ushort) 78 || Main.tile[index2, index3 + 1].type == (ushort) 380) && Main.rand.Next(2) == 0) Main.tile[index2, index3].frameX = (short) (198 + WorldGen.genRand.Next(10) * 18); Main.tile[index2, index3].type = (ushort) 73; if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index2, index3, 3); } if (Main.tile[index2, index3].type == (ushort) 110 && WorldGen.genRand.Next(20) == 0 && Main.tile[index2, index3].frameX < (short) 144) { Main.tile[index2, index3].type = (ushort) 113; if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index2, index3, 3); } if (Main.tile[index2, index3].type == (ushort) 32 && WorldGen.genRand.Next(3) == 0) { int index10 = index2; int index11 = index3; int num16 = 0; if (Main.tile[index10 + 1, index11].active() && Main.tile[index10 + 1, index11].type == (ushort) 32) ++num16; if (Main.tile[index10 - 1, index11].active() && Main.tile[index10 - 1, index11].type == (ushort) 32) ++num16; if (Main.tile[index10, index11 + 1].active() && Main.tile[index10, index11 + 1].type == (ushort) 32) ++num16; if (Main.tile[index10, index11 - 1].active() && Main.tile[index10, index11 - 1].type == (ushort) 32) ++num16; if (num16 < 3 || Main.tile[index2, index3].type == (ushort) 23) { switch (WorldGen.genRand.Next(4)) { case 0: --index11; break; case 1: ++index11; break; case 2: --index10; break; case 3: ++index10; break; } if (!Main.tile[index10, index11].active()) { int num17 = 0; if (Main.tile[index10 + 1, index11].active() && Main.tile[index10 + 1, index11].type == (ushort) 32) ++num17; if (Main.tile[index10 - 1, index11].active() && Main.tile[index10 - 1, index11].type == (ushort) 32) ++num17; if (Main.tile[index10, index11 + 1].active() && Main.tile[index10, index11 + 1].type == (ushort) 32) ++num17; if (Main.tile[index10, index11 - 1].active() && Main.tile[index10, index11 - 1].type == (ushort) 32) ++num17; if (num17 < 2) { int num18 = 7; int num19 = index10 - num18; int num20 = index10 + num18; int num21 = index11 - num18; int num22 = index11 + num18; bool flag4 = false; for (int index12 = num19; index12 < num20; ++index12) { for (int index13 = num21; index13 < num22; ++index13) { if (Math.Abs(index12 - index10) * 2 + Math.Abs(index13 - index11) < 9 && Main.tile[index12, index13].active() && Main.tile[index12, index13].type == (ushort) 23 && Main.tile[index12, index13 - 1].active() && Main.tile[index12, index13 - 1].type == (ushort) 32 && Main.tile[index12, index13 - 1].liquid == (byte) 0) { flag4 = true; break; } } } if (flag4) { Main.tile[index10, index11].type = (ushort) 32; 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 == (ushort) 352 && WorldGen.genRand.Next(3) == 0) WorldGen.GrowSpike(index2, index3, (ushort) 352, (ushort) 199); } else if (flag1) WorldGen.TrySpawningTownNPC(index2, index3); if (Main.tile[index2, index3].wall == (byte) 81 || Main.tile[index2, index3].wall == (byte) 83 || Main.tile[index2, index3].type == (ushort) 199 && Main.tile[index2, index3].active()) { int tileX = index2 + WorldGen.genRand.Next(-2, 3); int tileY = index3 + WorldGen.genRand.Next(-2, 3); if (Main.tile[tileX, tileY].wall >= (byte) 63 && Main.tile[tileX, tileY].wall <= (byte) 68) { bool flag5 = false; label_213: for (int index14 = index2 - wallDist; index14 < index2 + wallDist; ++index14) { for (int index15 = index3 - wallDist; index15 < index3 + wallDist; ++index15) { if (Main.tile[index2, index3].active()) { switch (Main.tile[index2, index3].type) { case 199: case 200: case 201: case 203: case 205: case 234: case 352: flag5 = true; goto label_213; default: continue; } } } } if (flag5) { Main.tile[tileX, tileY].wall = (byte) 81; if (Main.netMode == 2) NetMessage.SendTileSquare(-1, tileX, tileY, 3); } } } if (Main.tile[index2, index3].wall == (byte) 69 || Main.tile[index2, index3].wall == (byte) 3 || Main.tile[index2, index3].type == (ushort) 23 && Main.tile[index2, index3].active()) { int tileX = index2 + WorldGen.genRand.Next(-2, 3); int tileY = index3 + WorldGen.genRand.Next(-2, 3); if (Main.tile[tileX, tileY].wall >= (byte) 63 && Main.tile[tileX, tileY].wall <= (byte) 68) { bool flag6 = false; label_227: for (int index16 = index2 - wallDist; index16 < index2 + wallDist; ++index16) { for (int index17 = index3 - wallDist; index17 < index3 + wallDist; ++index17) { if (Main.tile[index16, index17].active()) { switch (Main.tile[index16, index17].type) { case 22: case 23: case 24: case 25: case 32: case 112: case 163: flag6 = true; goto label_227; default: continue; } } } } if (flag6) { Main.tile[tileX, tileY].wall = (byte) 69; if (Main.netMode == 2) NetMessage.SendTileSquare(-1, tileX, tileY, 3); } } } if (Main.tile[index2, index3].wall == (byte) 70 || Main.tile[index2, index3].type == (ushort) 109 && Main.tile[index2, index3].active()) { int tileX = index2 + WorldGen.genRand.Next(-2, 3); int tileY = index3 + WorldGen.genRand.Next(-2, 3); if (Main.tile[tileX, tileY].wall == (byte) 63 || Main.tile[tileX, tileY].wall == (byte) 65 || Main.tile[tileX, tileY].wall == (byte) 66 || Main.tile[tileX, tileY].wall == (byte) 68) { bool flag7 = false; label_241: for (int index18 = index2 - wallDist; index18 < index2 + wallDist; ++index18) { for (int index19 = index3 - wallDist; index19 < index3 + wallDist; ++index19) { if (Main.tile[index18, index19].active()) { switch (Main.tile[index18, index19].type) { case 109: case 110: case 113: case 115: case 116: case 117: case 164: flag7 = true; goto label_241; default: continue; } } } } if (flag7) { Main.tile[tileX, tileY].wall = (byte) 70; if (Main.netMode == 2) NetMessage.SendTileSquare(-1, tileX, tileY, 3); } } } WorldGen.SpreadDesertWalls(wallDist, index2, index3); if (Main.tile[index2, index3].active()) { if ((Main.tile[index2, index3].type == (ushort) 2 || Main.tile[index2, index3].type == (ushort) 52 || Main.tile[index2, index3].type == (ushort) 192 && WorldGen.genRand.Next(10) == 0) && WorldGen.genRand.Next(40) == 0 && !Main.tile[index2, index3 + 1].active() && !Main.tile[index2, index3 + 1].lava()) { bool flag8 = false; for (int index20 = index3; index20 > index3 - 10; --index20) { if (Main.tile[index2, index20].bottomSlope()) { flag8 = false; break; } if (Main.tile[index2, index20].active() && Main.tile[index2, index20].type == (ushort) 2 && !Main.tile[index2, index20].bottomSlope()) { flag8 = true; break; } } if (flag8) { int index21 = index2; int index22 = index3 + 1; Main.tile[index21, index22].type = (ushort) 52; Main.tile[index21, index22].active(true); Main.tile[index21, index22].color(Main.tile[index2, index3].color()); WorldGen.SquareTileFrame(index21, index22); if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index21, index22, 3); } } if (Main.tile[index2, index3].type == (ushort) 70) { int type = (int) Main.tile[index2, index3].type; if (!Main.tile[index2, index4].active() && WorldGen.genRand.Next(10) == 0) { WorldGen.PlaceTile(index2, index4, 71, true); if (Main.tile[index2, index4].active()) Main.tile[index2, index4].color(Main.tile[index2, index3].color()); if (Main.netMode == 2 && Main.tile[index2, index4].active()) NetMessage.SendTileSquare(-1, index2, index4, 1); } if (WorldGen.genRand.Next(100) == 0) { bool flag9 = WorldGen.PlayerLOS(index2, index3); if (WorldGen.GrowTree(index2, index3) & flag9) WorldGen.TreeGrowFXCheck(index2, index3 - 1); } bool flag10 = false; for (int i = num5; i < num6; ++i) { for (int j = index4; j < num7; ++j) { if ((index2 != i || index3 != j) && Main.tile[i, j].active() && Main.tile[i, j].type == (ushort) 59) { WorldGen.SpreadGrass(i, j, 59, type, false, Main.tile[index2, index3].color()); if ((int) Main.tile[i, j].type == type) { WorldGen.SquareTileFrame(i, j); flag10 = true; } } } } if (Main.netMode == 2 & flag10) NetMessage.SendTileSquare(-1, index2, index3, 3); } if (Main.tile[index2, index3].type == (ushort) 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.tile[index2, index4].active()) Main.tile[index2, index4].color(Main.tile[index2, index3].color()); 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 == (ushort) 61 || Main.tile[index2, index4].type == (ushort) 74 || Main.tile[index2, index4].type == (ushort) 69)) { if (WorldGen.GrowTree(index2, index3) && WorldGen.PlayerLOS(index2, index3)) WorldGen.TreeGrowFXCheck(index2, index3 - 1); } else if (WorldGen.genRand.Next(25) == 0 && Main.tile[index2, index4].liquid == (byte) 0) { WorldGen.PlaceJunglePlant(index2, index4, (ushort) 233, WorldGen.genRand.Next(8), 0); if (Main.tile[index2, index4].type == (ushort) 233) { if (Main.netMode == 2) { NetMessage.SendTileSquare(-1, index2, index4, 4); } else { WorldGen.PlaceJunglePlant(index2, index4, (ushort) 233, WorldGen.genRand.Next(12), 1); if (Main.tile[index2, index4].type == (ushort) 233 && Main.netMode == 2) NetMessage.SendTileSquare(-1, index2, index4, 3); } } } bool flag11 = false; for (int i = num5; i < num6; ++i) { for (int j = index4; j < num7; ++j) { if ((index2 != i || index3 != j) && Main.tile[i, j].active() && Main.tile[i, j].type == (ushort) 59) { WorldGen.SpreadGrass(i, j, 59, type, false, Main.tile[index2, index3].color()); if ((int) Main.tile[i, j].type == type) { WorldGen.SquareTileFrame(i, j); flag11 = true; } } } } if (Main.netMode == 2 & flag11) NetMessage.SendTileSquare(-1, index2, index3, 3); } if (Main.tile[index2, index3].type == (ushort) 61 && WorldGen.genRand.Next(3) == 0 && Main.tile[index2, index3].frameX < (short) 144) { if (Main.rand.Next(4) == 0) Main.tile[index2, index3].frameX = (short) (162 + WorldGen.genRand.Next(8) * 18); Main.tile[index2, index3].type = (ushort) 74; if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index2, index3, 3); } if ((Main.tile[index2, index3].type == (ushort) 60 || Main.tile[index2, index3].type == (ushort) 62) && WorldGen.genRand.Next(15) == 0 && !Main.tile[index2, index3 + 1].active() && !Main.tile[index2, index3 + 1].lava()) { bool flag12 = false; for (int index23 = index3; index23 > index3 - 10; --index23) { if (Main.tile[index2, index23].bottomSlope()) { flag12 = false; break; } if (Main.tile[index2, index23].active() && Main.tile[index2, index23].type == (ushort) 60 && !Main.tile[index2, index23].bottomSlope()) { flag12 = true; break; } } if (flag12) { int index24 = index2; int index25 = index3 + 1; Main.tile[index24, index25].type = (ushort) 62; Main.tile[index24, index25].active(true); WorldGen.SquareTileFrame(index24, index25); if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index24, index25, 3); } } if ((Main.tile[index2, index3].type == (ushort) 109 || Main.tile[index2, index3].type == (ushort) 115) && WorldGen.genRand.Next(15) == 0 && !Main.tile[index2, index3 + 1].active() && !Main.tile[index2, index3 + 1].lava()) { bool flag13 = false; for (int index26 = index3; index26 > index3 - 10; --index26) { if (Main.tile[index2, index26].bottomSlope()) { flag13 = false; break; } if (Main.tile[index2, index26].active() && Main.tile[index2, index26].type == (ushort) 109 && !Main.tile[index2, index26].bottomSlope()) { flag13 = true; break; } } if (flag13) { int index27 = index2; int index28 = index3 + 1; Main.tile[index27, index28].type = (ushort) 115; Main.tile[index27, index28].active(true); WorldGen.SquareTileFrame(index27, index28); if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index27, index28, 3); } } if ((Main.tile[index2, index3].type == (ushort) 199 || Main.tile[index2, index3].type == (ushort) 205) && WorldGen.genRand.Next(15) == 0 && !Main.tile[index2, index3 + 1].active() && !Main.tile[index2, index3 + 1].lava()) { bool flag14 = false; for (int index29 = index3; index29 > index3 - 10; --index29) { if (Main.tile[index2, index29].bottomSlope()) { flag14 = false; break; } if (Main.tile[index2, index29].active() && Main.tile[index2, index29].type == (ushort) 199 && !Main.tile[index2, index29].bottomSlope()) { flag14 = true; break; } } if (flag14) { int index30 = index2; int index31 = index3 + 1; Main.tile[index30, index31].type = (ushort) 205; Main.tile[index30, index31].active(true); WorldGen.SquareTileFrame(index30, index31); if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index30, index31, 3); } } } } } for (int index32 = 0; (double) index32 < (double) (Main.maxTilesX * Main.maxTilesY) * (double) num2; ++index32) { int index33 = WorldGen.genRand.Next(10, Main.maxTilesX - 10); int index34 = WorldGen.genRand.Next((int) Main.worldSurface - 1, Main.maxTilesY - 20); int num23 = index33 - 1; int num24 = index33 + 2; int index35 = index34 - 1; int num25 = index34 + 2; if (num23 < 10) num23 = 10; if (num24 > Main.maxTilesX - 10) num24 = Main.maxTilesX - 10; if (index35 < 10) index35 = 10; if (num25 > Main.maxTilesY - 10) num25 = Main.maxTilesY - 10; if (Main.tile[index33, index34] != null) { if (Main.tileAlch[(int) Main.tile[index33, index34].type]) WorldGen.GrowAlch(index33, index34); if (Main.tile[index33, index34].liquid <= (byte) 32) { if (Main.tile[index33, index34].nactive()) { WorldGen.hardUpdateWorld(index33, index34); if (Main.rand.Next(3000) == 0) WorldGen.plantDye(index33, index34); if (Main.rand.Next(4500) == 0) WorldGen.plantDye(index33, index34, true); if (Main.tile[index33, index34].type == (ushort) 23 && !Main.tile[index33, index35].active() && WorldGen.genRand.Next(1) == 0) { WorldGen.PlaceTile(index33, index35, 24, true); if (Main.netMode == 2 && Main.tile[index33, index35].active()) NetMessage.SendTileSquare(-1, index33, index35, 1); } if (Main.tile[index33, index34].type == (ushort) 32 && WorldGen.genRand.Next(3) == 0) { int index36 = index33; int index37 = index34; int num26 = 0; if (Main.tile[index36 + 1, index37].active() && Main.tile[index36 + 1, index37].type == (ushort) 32) ++num26; if (Main.tile[index36 - 1, index37].active() && Main.tile[index36 - 1, index37].type == (ushort) 32) ++num26; if (Main.tile[index36, index37 + 1].active() && Main.tile[index36, index37 + 1].type == (ushort) 32) ++num26; if (Main.tile[index36, index37 - 1].active() && Main.tile[index36, index37 - 1].type == (ushort) 32) ++num26; if (num26 < 3 || Main.tile[index33, index34].type == (ushort) 23) { switch (WorldGen.genRand.Next(4)) { case 0: --index37; break; case 1: ++index37; break; case 2: --index36; break; case 3: ++index36; break; } if (!Main.tile[index36, index37].active()) { int num27 = 0; if (Main.tile[index36 + 1, index37].active() && Main.tile[index36 + 1, index37].type == (ushort) 32) ++num27; if (Main.tile[index36 - 1, index37].active() && Main.tile[index36 - 1, index37].type == (ushort) 32) ++num27; if (Main.tile[index36, index37 + 1].active() && Main.tile[index36, index37 + 1].type == (ushort) 32) ++num27; if (Main.tile[index36, index37 - 1].active() && Main.tile[index36, index37 - 1].type == (ushort) 32) ++num27; if (num27 < 2) { int num28 = 7; int num29 = index36 - num28; int num30 = index36 + num28; int num31 = index37 - num28; int num32 = index37 + num28; bool flag15 = false; for (int index38 = num29; index38 < num30; ++index38) { for (int index39 = num31; index39 < num32; ++index39) { if (Math.Abs(index38 - index36) * 2 + Math.Abs(index39 - index37) < 9 && Main.tile[index38, index39].active() && Main.tile[index38, index39].type == (ushort) 23 && Main.tile[index38, index39 - 1].active() && Main.tile[index38, index39 - 1].type == (ushort) 32 && Main.tile[index38, index39 - 1].liquid == (byte) 0) { flag15 = true; break; } } } if (flag15) { Main.tile[index36, index37].type = (ushort) 32; Main.tile[index36, index37].active(true); WorldGen.SquareTileFrame(index36, index37); if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index36, index37, 3); } } } } } if (Main.tile[index33, index34].type == (ushort) 352 && WorldGen.genRand.Next(3) == 0) WorldGen.GrowSpike(index33, index34, (ushort) 352, (ushort) 199); if (Main.tile[index33, index34].type == (ushort) 199) { int type = (int) Main.tile[index33, index34].type; bool flag16 = false; for (int i = num23; i < num24; ++i) { for (int j = index35; j < num25; ++j) { if ((index33 != i || index34 != j) && Main.tile[i, j].active() && Main.tile[i, j].type == (ushort) 0) { WorldGen.SpreadGrass(i, j, grass: type, repeat: false, color: Main.tile[index33, index34].color()); if ((int) Main.tile[i, j].type == type) { WorldGen.SquareTileFrame(i, j); flag16 = true; } } } } if (Main.netMode == 2 & flag16) NetMessage.SendTileSquare(-1, index33, index34, 3); } if (Main.tile[index33, index34].type == (ushort) 60) { int type = (int) Main.tile[index33, index34].type; if (!Main.tile[index33, index35].active() && WorldGen.genRand.Next(10) == 0) { WorldGen.PlaceTile(index33, index35, 61, true); if (Main.netMode == 2 && Main.tile[index33, index35].active()) NetMessage.SendTileSquare(-1, index33, index35, 1); } else if (WorldGen.genRand.Next(25) == 0 && Main.tile[index33, index35].liquid == (byte) 0) { if (Main.hardMode && NPC.downedMechBoss1 && NPC.downedMechBoss2 && NPC.downedMechBoss3 && WorldGen.genRand.Next(60) == 0) { bool flag17 = true; int num33 = 150; for (int index40 = index33 - num33; index40 < index33 + num33; index40 += 2) { for (int index41 = index34 - num33; index41 < index34 + num33; index41 += 2) { if (index40 > 1 && index40 < Main.maxTilesX - 2 && index41 > 1 && index41 < Main.maxTilesY - 2 && Main.tile[index40, index41].active() && Main.tile[index40, index41].type == (ushort) 238) { flag17 = false; break; } } } if (flag17) { WorldGen.PlaceJunglePlant(index33, index35, (ushort) 238, 0, 0); WorldGen.SquareTileFrame(index33, index35); WorldGen.SquareTileFrame(index33 + 1, index35 + 1); if (Main.tile[index33, index35].type == (ushort) 238 && Main.netMode == 2) NetMessage.SendTileSquare(-1, index33, index35, 4); } } if (Main.hardMode && NPC.downedMechBossAny && WorldGen.genRand.Next(maxValue1) == 0) { bool flag18 = true; int num34 = 60; if (Main.expertMode) num34 -= 10; for (int index42 = index33 - num34; index42 < index33 + num34; index42 += 2) { for (int index43 = index34 - num34; index43 < index34 + num34; index43 += 2) { if (index42 > 1 && index42 < Main.maxTilesX - 2 && index43 > 1 && index43 < Main.maxTilesY - 2 && Main.tile[index42, index43].active() && Main.tile[index42, index43].type == (ushort) 236) { flag18 = false; break; } } } if (flag18) { WorldGen.PlaceJunglePlant(index33, index35, (ushort) 236, WorldGen.genRand.Next(3), 0); WorldGen.SquareTileFrame(index33, index35); WorldGen.SquareTileFrame(index33 + 1, index35 + 1); if (Main.tile[index33, index35].type == (ushort) 236 && Main.netMode == 2) NetMessage.SendTileSquare(-1, index33, index35, 4); } } else { WorldGen.PlaceJunglePlant(index33, index35, (ushort) 233, WorldGen.genRand.Next(8), 0); if (Main.tile[index33, index35].type == (ushort) 233) { if (Main.netMode == 2) { NetMessage.SendTileSquare(-1, index33, index35, 4); } else { WorldGen.PlaceJunglePlant(index33, index35, (ushort) 233, WorldGen.genRand.Next(12), 1); if (Main.tile[index33, index35].type == (ushort) 233 && Main.netMode == 2) NetMessage.SendTileSquare(-1, index33, index35, 3); } } } } bool flag19 = false; for (int i = num23; i < num24; ++i) { for (int j = index35; j < num25; ++j) { if ((index33 != i || index34 != j) && Main.tile[i, j].active() && Main.tile[i, j].type == (ushort) 59) { WorldGen.SpreadGrass(i, j, 59, type, false, Main.tile[index33, index34].color()); if ((int) Main.tile[i, j].type == type) { WorldGen.SquareTileFrame(i, j); flag19 = true; } } } } if (Main.netMode == 2 & flag19) NetMessage.SendTileSquare(-1, index33, index34, 3); } if (Main.tile[index33, index34].type == (ushort) 61 && WorldGen.genRand.Next(3) == 0 && Main.tile[index33, index34].frameX < (short) 144) { if (Main.rand.Next(4) == 0) Main.tile[index33, index34].frameX = (short) (162 + WorldGen.genRand.Next(8) * 18); Main.tile[index33, index34].type = (ushort) 74; if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index33, index34, 3); } if ((Main.tile[index33, index34].type == (ushort) 60 || Main.tile[index33, index34].type == (ushort) 62) && WorldGen.genRand.Next(5) == 0 && !Main.tile[index33, index34 + 1].active() && !Main.tile[index33, index34 + 1].lava()) { bool flag20 = false; for (int index44 = index34; index44 > index34 - 10; --index44) { if (Main.tile[index33, index44].bottomSlope()) { flag20 = false; break; } if (Main.tile[index33, index44].active() && Main.tile[index33, index44].type == (ushort) 60 && !Main.tile[index33, index44].bottomSlope()) { flag20 = true; break; } } if (flag20) { int index45 = index33; int index46 = index34 + 1; Main.tile[index45, index46].type = (ushort) 62; Main.tile[index45, index46].active(true); WorldGen.SquareTileFrame(index45, index46); if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index45, index46, 3); } } if ((Main.tile[index33, index34].type == (ushort) 60 || Main.tile[index33, index34].type == (ushort) 62) && WorldGen.genRand.Next(80) == 0 && !WorldGen.PlayerLOS(index33, index34)) { bool flag21 = true; int tileY = index34; if (Main.tile[index33, index34].type == (ushort) 60) ++tileY; for (int i = index33; i < index33 + 2; ++i) { int j = tileY - 1; if (!WorldGen.AnchorValid(Framing.GetTileSafely(i, j), AnchorType.SolidTile) || Main.tile[i, j].bottomSlope()) flag21 = false; if (Main.tile[i, j].liquid > (byte) 0 || Main.wallHouse[(int) Main.tile[i, j].wall]) flag21 = false; if (flag21) { for (int index47 = tileY; index47 < tileY + 2; ++index47) { if ((!Main.tile[i, index47].active() || Main.tileCut[(int) Main.tile[i, index47].type] && Main.tile[i, index47].type != (ushort) 444 ? (!Main.tile[i, index47].lava() ? 1 : 0) : 0) == 0) flag21 = false; if (!flag21) break; } if (!flag21) break; } else break; } if (flag21) { if (WorldGen.CountNearBlocksTypes(index33, index34, 20, 1, 444) > 0) flag21 = false; } if (flag21) { for (int i = index33; i < index33 + 2; ++i) { Main.tile[i, tileY - 1].slope((byte) 0); Main.tile[i, tileY - 1].halfBrick(false); for (int j = tileY; j < tileY + 2; ++j) { if (Main.tile[i, j].active()) WorldGen.KillTile(i, j); } } for (int index48 = index33; index48 < index33 + 2; ++index48) { for (int index49 = tileY; index49 < tileY + 2; ++index49) { Main.tile[index48, index49].active(true); Main.tile[index48, index49].type = (ushort) 444; Main.tile[index48, index49].frameX = (short) ((index48 - index33) * 18); Main.tile[index48, index49].frameY = (short) ((index49 - tileY) * 18); } } if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index33, tileY, 3); } } if (Main.tile[index33, index34].type == (ushort) 69 && WorldGen.genRand.Next(3) == 0) { int index50 = index33; int index51 = index34; int num35 = 0; if (Main.tile[index50 + 1, index51].active() && Main.tile[index50 + 1, index51].type == (ushort) 69) ++num35; if (Main.tile[index50 - 1, index51].active() && Main.tile[index50 - 1, index51].type == (ushort) 69) ++num35; if (Main.tile[index50, index51 + 1].active() && Main.tile[index50, index51 + 1].type == (ushort) 69) ++num35; if (Main.tile[index50, index51 - 1].active() && Main.tile[index50, index51 - 1].type == (ushort) 69) ++num35; if (num35 < 3 || Main.tile[index33, index34].type == (ushort) 60) { switch (WorldGen.genRand.Next(4)) { case 0: --index51; break; case 1: ++index51; break; case 2: --index50; break; case 3: ++index50; break; } if (!Main.tile[index50, index51].active()) { int num36 = 0; if (Main.tile[index50 + 1, index51].active() && Main.tile[index50 + 1, index51].type == (ushort) 69) ++num36; if (Main.tile[index50 - 1, index51].active() && Main.tile[index50 - 1, index51].type == (ushort) 69) ++num36; if (Main.tile[index50, index51 + 1].active() && Main.tile[index50, index51 + 1].type == (ushort) 69) ++num36; if (Main.tile[index50, index51 - 1].active() && Main.tile[index50, index51 - 1].type == (ushort) 69) ++num36; if (num36 < 2) { int num37 = 7; int num38 = index50 - num37; int num39 = index50 + num37; int num40 = index51 - num37; int num41 = index51 + num37; bool flag22 = false; for (int index52 = num38; index52 < num39; ++index52) { for (int index53 = num40; index53 < num41; ++index53) { if (Math.Abs(index52 - index50) * 2 + Math.Abs(index53 - index51) < 9 && Main.tile[index52, index53].active() && Main.tile[index52, index53].type == (ushort) 60 && Main.tile[index52, index53 - 1].active() && Main.tile[index52, index53 - 1].type == (ushort) 69 && Main.tile[index52, index53 - 1].liquid == (byte) 0) { flag22 = true; break; } } } if (flag22) { Main.tile[index50, index51].type = (ushort) 69; Main.tile[index50, index51].active(true); WorldGen.SquareTileFrame(index50, index51); if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index50, index51, 3); } } } } } else if (Main.tile[index33, index34].type == (ushort) 147 || Main.tile[index33, index34].type == (ushort) 161 || Main.tile[index33, index34].type == (ushort) 163 || Main.tile[index33, index34].type == (ushort) 164 || Main.tile[index33, index34].type == (ushort) 200) { if (Main.rand.Next(10) == 0 && !Main.tile[index33, index34 + 1].active() && !Main.tile[index33, index34 + 2].active()) { int num42 = index33 - 3; int num43 = index33 + 4; int num44 = 0; for (int index54 = num42; index54 < num43; ++index54) { if (Main.tile[index54, index34].type == (ushort) 165 && Main.tile[index54, index34].active()) ++num44; if (Main.tile[index54, index34 + 1].type == (ushort) 165 && Main.tile[index54, index34 + 1].active()) ++num44; if (Main.tile[index54, index34 + 2].type == (ushort) 165 && Main.tile[index54, index34 + 2].active()) ++num44; if (Main.tile[index54, index34 + 3].type == (ushort) 165 && Main.tile[index54, index34 + 3].active()) ++num44; } if (num44 < 2) { WorldGen.PlaceTight(index33, index34 + 1); WorldGen.SquareTileFrame(index33, index34 + 1); if (Main.netMode == 2 && Main.tile[index33, index34 + 1].active()) NetMessage.SendTileSquare(-1, index33, index34 + 1, 3); } } } else if (Main.tileMoss[(int) Main.tile[index33, index34].type]) { int type = (int) Main.tile[index33, index34].type; bool flag23 = false; for (int i = num23; i < num24; ++i) { for (int j = index35; j < num25; ++j) { if ((index33 != i || index34 != j) && Main.tile[i, j].active() && Main.tile[i, j].type == (ushort) 1) { WorldGen.SpreadGrass(i, j, 1, type, false, Main.tile[index33, index34].color()); if ((int) Main.tile[i, j].type == type) { WorldGen.SquareTileFrame(i, j); flag23 = true; } } } } if (Main.netMode == 2 & flag23) NetMessage.SendTileSquare(-1, index33, index34, 3); if (WorldGen.genRand.Next(6) == 0) { int index55 = index33; int index56 = index34; switch (WorldGen.genRand.Next(4)) { case 0: --index55; break; case 1: ++index55; break; case 2: --index56; break; default: ++index56; break; } if (!Main.tile[index55, index56].active()) { WorldGen.PlaceTile(index55, index56, 184, true); if (Main.netMode == 2 && Main.tile[index55, index56].active()) NetMessage.SendTileSquare(-1, index55, index56, 1); } } } if (Main.tile[index33, index34].type == (ushort) 70) { int type = (int) Main.tile[index33, index34].type; if (!Main.tile[index33, index35].active() && WorldGen.genRand.Next(10) == 0) { WorldGen.PlaceTile(index33, index35, 71, true); if (Main.netMode == 2 && Main.tile[index33, index35].active()) NetMessage.SendTileSquare(-1, index33, index35, 1); } if (WorldGen.genRand.Next(200) == 0 && WorldGen.GrowShroom(index33, index34) && WorldGen.PlayerLOS(index33, index34)) WorldGen.TreeGrowFXCheck(index33, index34 - 1); bool flag24 = false; for (int i = num23; i < num24; ++i) { for (int j = index35; j < num25; ++j) { if ((index33 != i || index34 != j) && Main.tile[i, j].active() && Main.tile[i, j].type == (ushort) 59) { WorldGen.SpreadGrass(i, j, 59, type, false, Main.tile[index33, index34].color()); if ((int) Main.tile[i, j].type == type) { WorldGen.SquareTileFrame(i, j); flag24 = true; } } } } if (Main.netMode == 2 & flag24) NetMessage.SendTileSquare(-1, index33, index34, 3); } } else { if (Main.tile[index33, index34].wall == (byte) 62 && Main.tile[index33, index34].liquid == (byte) 0 && WorldGen.genRand.Next(10) == 0) { int num45 = WorldGen.genRand.Next(2, 4); int num46 = index33 - num45; int num47 = index33 + num45; int num48 = index34 - num45; int num49 = index34 + num45; bool flag25 = false; for (int i = num46; i <= num47; ++i) { for (int j = num48; j <= num49; ++j) { if (WorldGen.SolidTile(i, j)) { flag25 = true; break; } } } if (flag25 && !Main.tile[index33, index34].active()) { WorldGen.PlaceTile(index33, index34, 51, true); WorldGen.TileFrame(index33, index34, true); if (Main.netMode == 2) NetMessage.SendTileSquare(-1, index33, index34, 3); } } if (flag1) WorldGen.TrySpawningTownNPC(index33, index34); } } if (Main.tile[index33, index34].wall == (byte) 81 || Main.tile[index33, index34].wall == (byte) 83 || Main.tile[index33, index34].type == (ushort) 199 && Main.tile[index33, index34].active()) { int tileX = index33 + WorldGen.genRand.Next(-2, 3); int tileY = index34 + WorldGen.genRand.Next(-2, 3); if (Main.tile[tileX, tileY].wall >= (byte) 63 && Main.tile[tileX, tileY].wall <= (byte) 68) { bool flag26 = false; label_629: for (int index57 = index33 - wallDist; index57 < index33 + wallDist; ++index57) { for (int index58 = index34 - wallDist; index58 < index34 + wallDist; ++index58) { if (Main.tile[index33, index34].active()) { switch (Main.tile[index33, index34].type) { case 199: case 200: case 201: case 203: case 205: case 234: case 352: flag26 = true; goto label_629; default: continue; } } } } if (flag26) { Main.tile[tileX, tileY].wall = (byte) 81; if (Main.netMode == 2) NetMessage.SendTileSquare(-1, tileX, tileY, 3); } } } if (Main.tile[index33, index34].wall == (byte) 69 || Main.tile[index33, index34].wall == (byte) 3 || Main.tile[index33, index34].type == (ushort) 23 && Main.tile[index33, index34].active()) { int tileX = index33 + WorldGen.genRand.Next(-2, 3); int tileY = index34 + WorldGen.genRand.Next(-2, 3); if (Main.tile[tileX, tileY].wall >= (byte) 63 && Main.tile[tileX, tileY].wall <= (byte) 68) { bool flag27 = false; label_643: for (int index59 = index33 - wallDist; index59 < index33 + wallDist; ++index59) { for (int index60 = index34 - wallDist; index60 < index34 + wallDist; ++index60) { if (Main.tile[index33, index34].active()) { switch (Main.tile[index33, index34].type) { case 22: case 23: case 24: case 25: case 32: case 112: case 163: flag27 = true; goto label_643; default: continue; } } } } if (flag27) { Main.tile[tileX, tileY].wall = (byte) 69; if (Main.netMode == 2) NetMessage.SendTileSquare(-1, tileX, tileY, 3); } } } if (Main.tile[index33, index34].wall == (byte) 70 || Main.tile[index33, index34].type == (ushort) 109 && Main.tile[index33, index34].active()) { int tileX = index33 + WorldGen.genRand.Next(-2, 3); int tileY = index34 + WorldGen.genRand.Next(-2, 3); if (Main.tile[tileX, tileY].wall == (byte) 63 || Main.tile[tileX, tileY].wall == (byte) 65 || Main.tile[tileX, tileY].wall == (byte) 66 || Main.tile[tileX, tileY].wall == (byte) 68) { bool flag28 = false; label_657: for (int index61 = index33 - wallDist; index61 < index33 + wallDist; ++index61) { for (int index62 = index34 - wallDist; index62 < index34 + wallDist; ++index62) { if (Main.tile[index33, index34].active()) { switch (Main.tile[index33, index34].type) { case 109: case 110: case 113: case 115: case 116: case 117: case 164: flag28 = true; goto label_657; default: continue; } } } } if (flag28) { Main.tile[tileX, tileY].wall = (byte) 70; if (Main.netMode == 2) NetMessage.SendTileSquare(-1, tileX, tileY, 3); } } } WorldGen.SpreadDesertWalls(wallDist, index33, index34); } } if (Main.dayTime) return; float num50 = (float) (Main.maxTilesX / 4200); if ((double) Main.rand.Next(8000) >= 10.0 * (double) num50) return; 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 num51 = (float) Main.rand.Next(-100, 101); float num52 = (float) (Main.rand.Next(200) + 100); float num53 = 12f / (float) Math.Sqrt((double) num51 * (double) num51 + (double) num52 * (double) num52); float SpeedX = num51 * num53; float SpeedY = num52 * num53; Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, 12, 1000, 10f, Main.myPlayer); } private static void TrySpawningTownNPC(int x, int y) { if (WorldGen.prioritizedTownNPC <= 0) return; if (Main.tile[x, y].wall == (byte) 34) { if (Main.rand.Next(4) != 0) return; int num = (int) WorldGen.SpawnTownNPC(x, y); } else { int num1 = (int) WorldGen.SpawnTownNPC(x, y); } } public static void SpreadDesertWalls(int wallDist, int i, int j) { if (!WallID.Sets.Conversion.Sandstone[(int) Main.tile[i, j].wall] && (!Main.tile[i, j].active() || !TileID.Sets.Conversion.Sandstone[(int) Main.tile[i, j].type]) && !WallID.Sets.Conversion.HardenedSand[(int) Main.tile[i, j].wall]) return; int num = 0; int wall = (int) Main.tile[i, j].wall; int type = (int) Main.tile[i, j].type; if (WallID.Sets.Corrupt[wall] || TileID.Sets.Corrupt[type]) num = 1; if (WallID.Sets.Hallow[wall] || TileID.Sets.Hallow[type]) num = 2; if (WallID.Sets.Crimson[wall] || TileID.Sets.Crimson[type]) num = 3; if (num == 0) return; int tileX = i + WorldGen.genRand.Next(-2, 3); int tileY = j + WorldGen.genRand.Next(-2, 3); bool flag = false; if (WallID.Sets.Conversion.Sandstone[(int) Main.tile[tileX, tileY].wall] || WallID.Sets.Conversion.HardenedSand[(int) Main.tile[tileX, tileY].wall]) { switch (num) { case 1: for (int index1 = i - wallDist; index1 < i + wallDist; ++index1) { for (int index2 = j - wallDist; index2 < j + wallDist; ++index2) { if (Main.tile[index1, index2].active() && TileID.Sets.Corrupt[(int) Main.tile[index1, index2].type]) { flag = true; break; } } if (flag) break; } break; case 2: for (int index3 = i - wallDist; index3 < i + wallDist; ++index3) { for (int index4 = j - wallDist; index4 < j + wallDist; ++index4) { if (Main.tile[index3, index4].active() && TileID.Sets.Hallow[(int) Main.tile[index3, index4].type]) { flag = true; break; } } if (flag) break; } break; case 3: for (int index5 = i - wallDist; index5 < i + wallDist; ++index5) { for (int index6 = j - wallDist; index6 < j + wallDist; ++index6) { if (Main.tile[index5, index6].active() && TileID.Sets.Crimson[(int) Main.tile[index5, index6].type]) { flag = true; break; } } if (flag) break; } break; } } if (!flag) return; byte? nullable = new byte?(); if (WallID.Sets.Conversion.Sandstone[(int) Main.tile[tileX, tileY].wall]) { switch (num) { case 1: nullable = new byte?((byte) 220); break; case 2: nullable = new byte?((byte) 222); break; case 3: nullable = new byte?((byte) 221); break; } } if (WallID.Sets.Conversion.HardenedSand[(int) Main.tile[tileX, tileY].wall]) { switch (num) { case 1: nullable = new byte?((byte) 217); break; case 2: nullable = new byte?((byte) 219); break; case 3: nullable = new byte?((byte) 218); break; } } if (!nullable.HasValue || (int) Main.tile[tileX, tileY].wall == (int) nullable.Value) return; Main.tile[tileX, tileY].wall = nullable.Value; if (Main.netMode != 2) return; NetMessage.SendTileSquare(-1, tileX, tileY, 3); } 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 == (ushort) 2 && Main.tile[i, index].nactive()) { if (!Main.tile[i, index - 1].active()) WorldGen.PlaceTile(i, index - 1, 3, true); } else if (Main.tile[i, index].type == (ushort) 23 && Main.tile[i, index].nactive()) { if (!Main.tile[i, index - 1].active()) WorldGen.PlaceTile(i, index - 1, 24, true); } else if (Main.tile[i, index].type == (ushort) 199 && Main.tile[i, index].nactive() && !Main.tile[i, index - 1].active()) WorldGen.PlaceTile(i, index - 1, 201, true); } } } public static void SpreadGrass(int i, int j, int dirt = 0, int grass = 2, bool repeat = true, byte color = 0) { try { if (!WorldGen.InWorld(i, j, 1) || (int) Main.tile[i, j].type != dirt || !Main.tile[i, j].active() || (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 || !TileID.Sets.CanBeClearedDuringGeneration[(int) Main.tile[i, j].type] || grass == 23 && Main.tile[i, j - 1].type == (ushort) 27 || grass == 199 && Main.tile[i, j - 1].type == (ushort) 27) return; Main.tile[i, j].type = (ushort) grass; Main.tile[i, j].color(color); 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 != (ushort) 31 && Main.tile[index1, index2].type != (ushort) 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 != (ushort) 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 != (ushort) 31 && Main.tile[index3, index4].type != (ushort) 22) Main.tile[index3, index4].type = (ushort) 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 != (ushort) 31 && Main.tile[i1, j1].type != (ushort) 22) Main.tile[i1, j1].type = (ushort) 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 CrimStart(int i, int j) { int crimDir = 1; WorldGen.heartCount = 0; WorldGen.crimson = true; int i1 = i; int j1 = j; if ((double) j1 > Main.worldSurface) j1 = (int) Main.worldSurface; while (!WorldGen.SolidTile(i1, j1)) ++j1; int num1 = i1; int num2 = j1; Vector2 position = new Vector2((float) i1, (float) j1); Vector2 vector2 = new Vector2((float) WorldGen.genRand.Next(-20, 21) * 0.1f, (float) WorldGen.genRand.Next(20, 201) * 0.01f); if ((double) vector2.X < 0.0) crimDir = -1; float num3 = (float) WorldGen.genRand.Next(15, 26); bool flag1 = true; int num4 = 0; while (flag1) { num3 += (float) WorldGen.genRand.Next(-50, 51) * 0.01f; if ((double) num3 < 15.0) num3 = 15f; if ((double) num3 > 25.0) num3 = 25f; for (int index1 = (int) ((double) position.X - (double) num3 / 2.0); (double) index1 < (double) position.X + (double) num3 / 2.0; ++index1) { for (int index2 = (int) ((double) position.Y - (double) num3 / 2.0); (double) index2 < (double) position.Y + (double) num3 / 2.0; ++index2) { if (index2 > num2) { if ((double) Math.Abs((float) index1 - position.X) + (double) Math.Abs((float) index2 - position.Y) < (double) num3 * 0.3) { Main.tile[index1, index2].active(false); Main.tile[index1, index2].wall = (byte) 83; } else if ((double) Math.Abs((float) index1 - position.X) + (double) Math.Abs((float) index2 - position.Y) < (double) num3 * 0.8 && Main.tile[index1, index2].wall != (byte) 83) { Main.tile[index1, index2].active(true); Main.tile[index1, index2].type = (ushort) 203; if ((double) Math.Abs((float) index1 - position.X) + (double) Math.Abs((float) index2 - position.Y) < (double) num3 * 0.6) Main.tile[index1, index2].wall = (byte) 83; } } else if ((double) Math.Abs((float) index1 - position.X) + (double) Math.Abs((float) index2 - position.Y) < (double) num3 * 0.3 && Main.tile[index1, index2].active()) { Main.tile[index1, index2].active(false); Main.tile[index1, index2].wall = (byte) 83; } } } if ((double) position.X > (double) (num1 + 50)) num4 = -100; if ((double) position.X < (double) (num1 - 50)) num4 = 100; if (num4 < 0) vector2.X -= (float) WorldGen.genRand.Next(20, 51) * 0.01f; else if (num4 > 0) vector2.X += (float) WorldGen.genRand.Next(20, 51) * 0.01f; else vector2.X += (float) WorldGen.genRand.Next(-50, 51) * 0.01f; vector2.Y += (float) WorldGen.genRand.Next(-50, 51) * 0.01f; if ((double) vector2.Y < 0.25) vector2.Y = 0.25f; if ((double) vector2.Y > 2.0) vector2.Y = 2f; if ((double) vector2.X < -2.0) vector2.X = -2f; if ((double) vector2.X > 2.0) vector2.X = 2f; position += vector2; if ((double) position.Y > Main.worldSurface + 100.0) flag1 = false; } float num5 = (float) WorldGen.genRand.Next(40, 55); for (int index3 = 0; index3 < 50; ++index3) { int num6 = (int) position.X + WorldGen.genRand.Next(-20, 21); int num7 = (int) position.Y + WorldGen.genRand.Next(-20, 21); for (int index4 = (int) ((double) num6 - (double) num5 / 2.0); (double) index4 < (double) num6 + (double) num5 / 2.0; ++index4) { for (int index5 = (int) ((double) num7 - (double) num5 / 2.0); (double) index5 < (double) num7 + (double) num5 / 2.0; ++index5) { double num8 = (double) Math.Abs(index4 - num6); float num9 = (float) Math.Abs(index5 - num7); float num10 = (float) (1.0 + (double) WorldGen.genRand.Next(-20, 21) * 0.00999999977648258); float num11 = (float) (1.0 + (double) WorldGen.genRand.Next(-20, 21) * 0.00999999977648258); double num12 = (double) num10; double num13 = num8 * num12; float num14 = num9 * num11; double num15 = Math.Sqrt(num13 * num13 + (double) num14 * (double) num14); if (num15 < (double) num5 * 0.25) { Main.tile[index4, index5].active(false); Main.tile[index4, index5].wall = (byte) 83; } else if (num15 < (double) num5 * 0.4 && Main.tile[index4, index5].wall != (byte) 83) { Main.tile[index4, index5].active(true); Main.tile[index4, index5].type = (ushort) 203; if (num15 < (double) num5 * 0.35) Main.tile[index4, index5].wall = (byte) 83; } } } } int length = WorldGen.genRand.Next(5, 9); Vector2[] vector2Array = new Vector2[length]; for (int index6 = 0; index6 < length; ++index6) { int x = (int) position.X; int y = (int) position.Y; int num16 = 0; bool flag2 = true; Vector2 velocity = new Vector2((float) WorldGen.genRand.Next(-20, 21) * 0.15f, (float) WorldGen.genRand.Next(0, 21) * 0.15f); while (flag2) { velocity = new Vector2((float) WorldGen.genRand.Next(-20, 21) * 0.15f, (float) WorldGen.genRand.Next(0, 21) * 0.15f); while ((double) Math.Abs(velocity.X) + (double) Math.Abs(velocity.Y) < 1.5) velocity = new Vector2((float) WorldGen.genRand.Next(-20, 21) * 0.15f, (float) WorldGen.genRand.Next(0, 21) * 0.15f); flag2 = false; for (int index7 = 0; index7 < index6; ++index7) { if ((double) vector2.X > (double) vector2Array[index7].X - 0.75 && (double) vector2.X < (double) vector2Array[index7].X + 0.75 && (double) vector2.Y > (double) vector2Array[index7].Y - 0.75 && (double) vector2.Y < (double) vector2Array[index7].Y + 0.75) { flag2 = true; ++num16; break; } } if (num16 > 10000) break; } vector2Array[index6] = velocity; WorldGen.CrimVein(new Vector2((float) x, (float) y), velocity); } for (int index8 = 0; index8 < WorldGen.heartCount; ++index8) { float num17 = (float) WorldGen.genRand.Next(16, 21); int x = (int) WorldGen.heartPos[index8].X; int y = (int) WorldGen.heartPos[index8].Y; for (int index9 = (int) ((double) x - (double) num17 / 2.0); (double) index9 < (double) x + (double) num17 / 2.0; ++index9) { for (int index10 = (int) ((double) y - (double) num17 / 2.0); (double) index10 < (double) y + (double) num17 / 2.0; ++index10) { double num18 = (double) Math.Abs(index9 - x); float num19 = (float) Math.Abs(index10 - y); if (Math.Sqrt(num18 * num18 + (double) num19 * (double) num19) < (double) num17 * 0.4) { Main.tile[index9, index10].active(true); Main.tile[index9, index10].type = (ushort) 203; Main.tile[index9, index10].wall = (byte) 83; } } } } for (int index11 = 0; index11 < WorldGen.heartCount; ++index11) { float num20 = (float) WorldGen.genRand.Next(10, 14); int x = (int) WorldGen.heartPos[index11].X; int y = (int) WorldGen.heartPos[index11].Y; for (int index12 = (int) ((double) x - (double) num20 / 2.0); (double) index12 < (double) x + (double) num20 / 2.0; ++index12) { for (int index13 = (int) ((double) y - (double) num20 / 2.0); (double) index13 < (double) y + (double) num20 / 2.0; ++index13) { double num21 = (double) Math.Abs(index12 - x); float num22 = (float) Math.Abs(index13 - y); if (Math.Sqrt(num21 * num21 + (double) num22 * (double) num22) < (double) num20 * 0.3) { Main.tile[index12, index13].active(false); Main.tile[index12, index13].wall = (byte) 83; } } } } for (int index = 0; index < WorldGen.heartCount; ++index) WorldGen.AddShadowOrb((int) WorldGen.heartPos[index].X, (int) WorldGen.heartPos[index].Y); int num23 = Main.maxTilesX; int num24 = 0; position.X = (float) num1; position.Y = (float) num2; float num25 = (float) WorldGen.genRand.Next(25, 35); float num26 = (float) WorldGen.genRand.Next(0, 6); for (int index14 = 0; index14 < 50; ++index14) { if ((double) num26 > 0.0) { float num27 = (float) WorldGen.genRand.Next(10, 30) * 0.01f; num26 -= num27; position.Y -= num27; } int num28 = (int) position.X + WorldGen.genRand.Next(-2, 3); int num29 = (int) position.Y + WorldGen.genRand.Next(-2, 3); for (int index15 = (int) ((double) num28 - (double) num25 / 2.0); (double) index15 < (double) num28 + (double) num25 / 2.0; ++index15) { for (int index16 = (int) ((double) num29 - (double) num25 / 2.0); (double) index16 < (double) num29 + (double) num25 / 2.0; ++index16) { double num30 = (double) Math.Abs(index15 - num28); float num31 = (float) Math.Abs(index16 - num29); float num32 = (float) (1.0 + (double) WorldGen.genRand.Next(-20, 21) * 0.00499999988824129); float num33 = (float) (1.0 + (double) WorldGen.genRand.Next(-20, 21) * 0.00499999988824129); double num34 = (double) num32; double num35 = num30 * num34; float num36 = num31 * num33; double num37 = Math.Sqrt(num35 * num35 + (double) num36 * (double) num36); if (num37 < (double) num25 * 0.2 * ((double) WorldGen.genRand.Next(90, 111) * 0.01)) { Main.tile[index15, index16].active(false); Main.tile[index15, index16].wall = (byte) 83; } else if (num37 < (double) num25 * 0.45) { if (index15 < num23) num23 = index15; if (index15 > num24) num24 = index15; if (Main.tile[index15, index16].wall != (byte) 83) { Main.tile[index15, index16].active(true); Main.tile[index15, index16].type = (ushort) 203; if (num37 < (double) num25 * 0.35) Main.tile[index15, index16].wall = (byte) 83; } } } } } for (int index17 = num23; index17 <= num24; ++index17) { int index18 = num2; while (Main.tile[index17, index18].type == (ushort) 203 && Main.tile[index17, index18].active() || Main.tile[index17, index18].wall == (byte) 83) ++index18; for (int index19 = WorldGen.genRand.Next(15, 20); !Main.tile[index17, index18].active() && index19 > 0 && Main.tile[index17, index18].wall != (byte) 83; ++index18) { --index19; Main.tile[index17, index18].type = (ushort) 203; Main.tile[index17, index18].active(true); } } WorldGen.CrimEnt(position, crimDir); } public static void CrimEnt(Vector2 position, int crimDir) { float num1 = 0.0f; float num2 = (float) WorldGen.genRand.Next(6, 11); bool flag = true; Vector2 vector2 = new Vector2(2f, (float) WorldGen.genRand.Next(-20, 0) * 0.01f); vector2.X *= (float) -crimDir; while (flag) { ++num1; if ((double) num1 >= 20.0) flag = false; num2 += (float) WorldGen.genRand.Next(-10, 11) * 0.02f; if ((double) num2 < 6.0) num2 = 6f; if ((double) num2 > 10.0) num2 = 10f; for (int index1 = (int) ((double) position.X - (double) num2 / 2.0); (double) index1 < (double) position.X + (double) num2 / 2.0; ++index1) { for (int index2 = (int) ((double) position.Y - (double) num2 / 2.0); (double) index2 < (double) position.Y + (double) num2 / 2.0; ++index2) { double num3 = (double) Math.Abs((float) index1 - position.X); float num4 = Math.Abs((float) index2 - position.Y); if (Math.Sqrt(num3 * num3 + (double) num4 * (double) num4) < (double) num2 * 0.5 && Main.tile[index1, index2].active() && Main.tile[index1, index2].type == (ushort) 203) { Main.tile[index1, index2].active(false); flag = true; num1 = 0.0f; } } } position += vector2; } } public static void CrimVein(Vector2 position, Vector2 velocity) { float num1 = (float) WorldGen.genRand.Next(15, 26); bool flag = true; Vector2 vector2_1 = velocity; Vector2 vector2_2 = position; int num2 = WorldGen.genRand.Next(100, 150); if ((double) velocity.Y < 0.0) num2 -= 25; while (flag) { num1 += (float) WorldGen.genRand.Next(-50, 51) * 0.02f; if ((double) num1 < 15.0) num1 = 15f; if ((double) num1 > 25.0) num1 = 25f; for (int index1 = (int) ((double) position.X - (double) num1 / 2.0); (double) index1 < (double) position.X + (double) num1 / 2.0; ++index1) { for (int index2 = (int) ((double) position.Y - (double) num1 / 2.0); (double) index2 < (double) position.Y + (double) num1 / 2.0; ++index2) { double num3 = (double) Math.Abs((float) index1 - position.X); float num4 = Math.Abs((float) index2 - position.Y); double num5 = Math.Sqrt(num3 * num3 + (double) num4 * (double) num4); if (num5 < (double) num1 * 0.2) { Main.tile[index1, index2].active(false); Main.tile[index1, index2].wall = (byte) 83; } else if (num5 < (double) num1 * 0.5 && Main.tile[index1, index2].wall != (byte) 83) { Main.tile[index1, index2].active(true); Main.tile[index1, index2].type = (ushort) 203; if (num5 < (double) num1 * 0.4) Main.tile[index1, index2].wall = (byte) 83; } } } velocity.X += (float) WorldGen.genRand.Next(-50, 51) * 0.05f; velocity.Y += (float) WorldGen.genRand.Next(-50, 51) * 0.05f; if ((double) velocity.Y < (double) vector2_1.Y - 0.75) velocity.Y = vector2_1.Y - 0.75f; if ((double) velocity.Y > (double) vector2_1.Y + 0.75) velocity.Y = vector2_1.Y + 0.75f; if ((double) velocity.X < (double) vector2_1.X - 0.75) velocity.X = vector2_1.X - 0.75f; if ((double) velocity.X > (double) vector2_1.X + 0.75) velocity.X = vector2_1.X + 0.75f; position += velocity; if ((double) Math.Abs(position.X - vector2_2.X) + (double) Math.Abs(position.Y - vector2_2.Y) > (double) num2) flag = false; } WorldGen.heartPos[WorldGen.heartCount] = position; ++WorldGen.heartCount; } 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 != (ushort) 31 && Main.tile[index1, index2].type != (ushort) 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, (ushort) 26); if (Main.tile[x, y].type == (ushort) 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 != (ushort) 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 != (ushort) 31) Main.tile[index3, index4].type = (ushort) 25; } } } for (int index5 = num9; index5 < num10; ++index5) { for (int index6 = num11; index6 < num12; ++index6) { if ((double) Math.Abs((float) index5 - vector2_1.X) + (double) Math.Abs((float) index6 - vector2_1.Y) < num3 * 1.1 * (1.0 + (double) WorldGen.genRand.Next(-10, 11) * 0.015)) { if (Main.tile[index5, index6].type != (ushort) 31) Main.tile[index5, index6].type = (ushort) 25; if (steps <= num2) Main.tile[index5, index6].active(true); if (index6 > j + WorldGen.genRand.Next(3, 20)) Main.tile[index5, index6].wall = (byte) 3; } } } } } 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; int index1 = Utils.Clamp(x, 10, Main.maxTilesX - 10); int index2 = Utils.Clamp(y, 10, Main.maxTilesY - 10); if (index2 < 5) index2 = 5; if (Main.tile[index1, index2].wall == (byte) 0 && !Main.tile[index1, index2].active() && Main.tile[index1, index2 - 3].wall == (byte) 0 && !Main.tile[index1, index2 - 3].active() && Main.tile[index1, index2 - 1].wall == (byte) 0 && !Main.tile[index1, index2 - 1].active() && Main.tile[index1, index2 - 4].wall == (byte) 0 && !Main.tile[index1, index2 - 4].active() && Main.tile[index1, index2 - 2].wall == (byte) 0 && !Main.tile[index1, index2 - 2].active() && Main.tile[index1, index2 - 5].wall == (byte) 0 && !Main.tile[index1, index2 - 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); int max = Main.maxTilesX - 10; int num7 = Utils.Clamp(num3, 10, max); int num8 = Utils.Clamp(num4, 10, Main.maxTilesX - 10); int num9 = Utils.Clamp(num5, 10, Main.maxTilesY - 10); int num10 = Utils.Clamp(num6, 10, Main.maxTilesY - 10); 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) < 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 num11 = -2; if (WorldGen.genRand.Next(2) == 0) num11 = 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) num11)); } 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) 63 || Main.tile[i1, j1].wall == (byte) 65 || Main.tile[i1, j1].wall == (byte) 66 || Main.tile[i1, j1].wall == (byte) 68 || Main.tile[i1, j1].wall == (byte) 69 || Main.tile[i1, j1].wall == (byte) 81) Main.tile[i1, j1].wall = (byte) 70; else if (Main.tile[i1, j1].wall == (byte) 216) Main.tile[i1, j1].wall = (byte) 219; else if (Main.tile[i1, j1].wall == (byte) 187) Main.tile[i1, j1].wall = (byte) 222; if (Main.tile[i1, j1].wall == (byte) 3 || Main.tile[i1, j1].wall == (byte) 83) Main.tile[i1, j1].wall = (byte) 28; if (Main.tile[i1, j1].type == (ushort) 2) { Main.tile[i1, j1].type = (ushort) 109; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (ushort) 1) { Main.tile[i1, j1].type = (ushort) 117; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (ushort) 53 || Main.tile[i1, j1].type == (ushort) 123) { Main.tile[i1, j1].type = (ushort) 116; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (ushort) 23 || Main.tile[i1, j1].type == (ushort) 199) { Main.tile[i1, j1].type = (ushort) 109; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (ushort) 25 || Main.tile[i1, j1].type == (ushort) 203) { Main.tile[i1, j1].type = (ushort) 117; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (ushort) 112 || Main.tile[i1, j1].type == (ushort) 234) { Main.tile[i1, j1].type = (ushort) 116; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (ushort) 161 || Main.tile[i1, j1].type == (ushort) 163 || Main.tile[i1, j1].type == (ushort) 200) { Main.tile[i1, j1].type = (ushort) 164; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (ushort) 396) { Main.tile[i1, j1].type = (ushort) 403; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (ushort) 397) { Main.tile[i1, j1].type = (ushort) 402; WorldGen.SquareTileFrame(i1, j1); } } else if (WorldGen.crimson) { if (Main.tile[i1, j1].wall == (byte) 63 || Main.tile[i1, j1].wall == (byte) 65 || Main.tile[i1, j1].wall == (byte) 66 || Main.tile[i1, j1].wall == (byte) 68) Main.tile[i1, j1].wall = (byte) 81; else if (Main.tile[i1, j1].wall == (byte) 216) Main.tile[i1, j1].wall = (byte) 218; else if (Main.tile[i1, j1].wall == (byte) 187) Main.tile[i1, j1].wall = (byte) 221; if (Main.tile[i1, j1].type == (ushort) 2) { Main.tile[i1, j1].type = (ushort) 199; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (ushort) 1) { Main.tile[i1, j1].type = (ushort) 203; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (ushort) 53 || Main.tile[i1, j1].type == (ushort) 123) { Main.tile[i1, j1].type = (ushort) 234; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (ushort) 109) { Main.tile[i1, j1].type = (ushort) 199; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (ushort) 117) { Main.tile[i1, j1].type = (ushort) 203; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (ushort) 116) { Main.tile[i1, j1].type = (ushort) 234; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (ushort) 161 || Main.tile[i1, j1].type == (ushort) 164) { Main.tile[i1, j1].type = (ushort) 200; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (ushort) 396) { Main.tile[i1, j1].type = (ushort) 401; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (ushort) 397) { Main.tile[i1, j1].type = (ushort) 399; WorldGen.SquareTileFrame(i1, j1); } } else { if (Main.tile[i1, j1].wall == (byte) 63 || Main.tile[i1, j1].wall == (byte) 65 || Main.tile[i1, j1].wall == (byte) 66 || Main.tile[i1, j1].wall == (byte) 68) Main.tile[i1, j1].wall = (byte) 69; else if (Main.tile[i1, j1].wall == (byte) 216) Main.tile[i1, j1].wall = (byte) 217; else if (Main.tile[i1, j1].wall == (byte) 187) Main.tile[i1, j1].wall = (byte) 220; if (Main.tile[i1, j1].type == (ushort) 2) { Main.tile[i1, j1].type = (ushort) 23; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (ushort) 1) { Main.tile[i1, j1].type = (ushort) 25; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (ushort) 53 || Main.tile[i1, j1].type == (ushort) 123) { Main.tile[i1, j1].type = (ushort) 112; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (ushort) 109) { Main.tile[i1, j1].type = (ushort) 23; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (ushort) 117) { Main.tile[i1, j1].type = (ushort) 25; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (ushort) 116) { Main.tile[i1, j1].type = (ushort) 112; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (ushort) 161 || Main.tile[i1, j1].type == (ushort) 164) { Main.tile[i1, j1].type = (ushort) 163; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (ushort) 396) { Main.tile[i1, j1].type = (ushort) 400; WorldGen.SquareTileFrame(i1, j1); } else if (Main.tile[i1, j1].type == (ushort) 397) { Main.tile[i1, j1].type = (ushort) 398; 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; } bool flag1 = type == 368; bool flag2 = type == 367; 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 < 1) num3 = 1; if (num4 > Main.maxTilesX - 1) num4 = Main.maxTilesX - 1; if (num5 < 1) num5 = 1; if (num6 > Main.maxTilesY - 1) num6 = Main.maxTilesY - 1; 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 && Main.tile[i1, j1 - 1].wall != (byte) 2 && j1 < Main.maxTilesY - 210 - WorldGen.genRand.Next(3)) { if (j1 > WorldGen.lavaLine - WorldGen.genRand.Next(0, 4) - 50) { if (Main.tile[i1, j1 - 1].wall != (byte) 64 && Main.tile[i1, j1 + 1].wall != (byte) 64 && Main.tile[i1 - 1, j1].wall != (byte) 64 && Main.tile[i1, j1 + 1].wall != (byte) 64) WorldGen.PlaceWall(i1, j1, 15, true); } else if (Main.tile[i1, j1 - 1].wall != (byte) 15 && Main.tile[i1, j1 + 1].wall != (byte) 15 && Main.tile[i1 - 1, j1].wall != (byte) 15 && Main.tile[i1, j1 + 1].wall != (byte) 15) WorldGen.PlaceWall(i1, j1, 64, 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 (flag1 && (double) Math.Abs((float) i1 - vector2_1.X) + (double) Math.Abs((float) j1 - vector2_1.Y) < strength * 0.3 * (1.0 + (double) WorldGen.genRand.Next(-10, 11) * 0.01)) WorldGen.PlaceWall(i1, j1, 180, true); if (flag2 && (double) Math.Abs((float) i1 - vector2_1.X) + (double) Math.Abs((float) j1 - vector2_1.Y) < strength * 0.3 * (1.0 + (double) WorldGen.genRand.Next(-10, 11) * 0.01)) WorldGen.PlaceWall(i1, j1, 178, true); if (overRide || !Main.tile[i1, j1].active()) { Tile tile = Main.tile[i1, j1]; bool flag3 = Main.tileStone[type] && tile.type != (ushort) 1; if (!TileID.Sets.CanBeClearedDuringGeneration[(int) tile.type]) flag3 = true; switch (tile.type) { case 1: if (type == 59 && (double) j1 < Main.worldSurface + (double) WorldGen.genRand.Next(-50, 50)) { flag3 = true; break; } break; case 45: case 147: case 189: case 190: case 196: flag3 = true; break; case 53: if (type == 40) flag3 = true; if ((double) j1 < Main.worldSurface && type != 59) { flag3 = true; break; } break; case 367: case 368: if (type == 59) { flag3 = true; break; } break; case 396: case 397: flag3 = !TileID.Sets.Ore[type]; break; } if (!flag3) tile.type = (ushort) 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 DirtyRockRunner(int i, int j) { double num1 = (double) WorldGen.genRand.Next(2, 6); float num2 = (float) WorldGen.genRand.Next(5, 50); 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) 2) Main.tile[index1, index2].wall = (byte) 59; } } 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 MudWallRunner(int i, int j) { double num1 = (double) WorldGen.genRand.Next(8, 21); float num2 = (float) WorldGen.genRand.Next(8, 33); 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) && (double) index2 > Main.worldSurface) 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 CloudIsland(int i, int j) { double num1 = (double) WorldGen.genRand.Next(100, 150); double num2 = num1; float num3 = (float) WorldGen.genRand.Next(20, 30); int num4 = i; int num5 = i; int num6 = i; int num7 = j; 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) num3 > 0.0) { num1 -= (double) WorldGen.genRand.Next(4); --num3; int num8 = (int) ((double) vector2_1.X - num1 * 0.5); int num9 = (int) ((double) vector2_1.X + num1 * 0.5); int num10 = (int) ((double) vector2_1.Y - num1 * 0.5); int num11 = (int) ((double) vector2_1.Y + num1 * 0.5); if (num8 < 0) num8 = 0; if (num9 > Main.maxTilesX) num9 = Main.maxTilesX; if (num10 < 0) num10 = 0; if (num11 > Main.maxTilesY) num11 = Main.maxTilesY; double num12 = num1 * (double) WorldGen.genRand.Next(80, 120) * 0.01; float num13 = vector2_1.Y + 1f; for (int i1 = num8; i1 < num9; ++i1) { if (WorldGen.genRand.Next(2) == 0) num13 += (float) WorldGen.genRand.Next(-1, 2); if ((double) num13 < (double) vector2_1.Y) num13 = vector2_1.Y; if ((double) num13 > (double) vector2_1.Y + 2.0) num13 = vector2_1.Y + 2f; for (int j1 = num10; j1 < num11; ++j1) { if ((double) j1 > (double) num13) { double num14 = (double) Math.Abs((float) i1 - vector2_1.X); float num15 = Math.Abs((float) j1 - vector2_1.Y) * 3f; if (Math.Sqrt(num14 * num14 + (double) num15 * (double) num15) < num12 * 0.4) { if (i1 < num4) num4 = i1; if (i1 > num5) num5 = i1; if (j1 < num6) num6 = j1; if (j1 > num7) num7 = j1; Main.tile[i1, j1].active(true); Main.tile[i1, j1].type = (ushort) 189; WorldGen.SquareTileFrame(i1, j1); } } } } vector2_1 += vector2_2; vector2_2.X += (float) WorldGen.genRand.Next(-20, 21) * 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; } int minValue1; for (int index1 = num4 + WorldGen.genRand.Next(5); index1 < num5; index1 += WorldGen.genRand.Next(minValue1, (int) ((double) minValue1 * 1.5))) { int index2 = num7; while (!Main.tile[index1, index2].active()) --index2; int num16 = index2 + WorldGen.genRand.Next(-3, 4); minValue1 = WorldGen.genRand.Next(4, 8); int num17 = 189; if (WorldGen.genRand.Next(4) == 0) num17 = 196; for (int i2 = index1 - minValue1; i2 <= index1 + minValue1; ++i2) { for (int j2 = num16 - minValue1; j2 <= num16 + minValue1; ++j2) { if (j2 > num6) { double num18 = (double) Math.Abs(i2 - index1); float num19 = (float) (Math.Abs(j2 - num16) * 2); if (Math.Sqrt(num18 * num18 + (double) num19 * (double) num19) < (double) (minValue1 + WorldGen.genRand.Next(2))) { Main.tile[i2, j2].active(true); Main.tile[i2, j2].type = (ushort) num17; WorldGen.SquareTileFrame(i2, j2); } } } } } double num20 = (double) WorldGen.genRand.Next(80, 95); num2 = num20; float num21 = (float) WorldGen.genRand.Next(10, 15); vector2_1.X = (float) i; vector2_1.Y = (float) num6; 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 (num20 > 0.0 && (double) num21 > 0.0) { num20 -= (double) WorldGen.genRand.Next(4); --num21; int num22 = (int) ((double) vector2_1.X - num20 * 0.5); int num23 = (int) ((double) vector2_1.X + num20 * 0.5); int num24 = num6 - 1; int num25 = (int) ((double) vector2_1.Y + num20 * 0.5); if (num22 < 0) num22 = 0; if (num23 > Main.maxTilesX) num23 = Main.maxTilesX; if (num24 < 0) num24 = 0; if (num25 > Main.maxTilesY) num25 = Main.maxTilesY; double num26 = num20 * (double) WorldGen.genRand.Next(80, 120) * 0.01; float num27 = vector2_1.Y + 1f; for (int i3 = num22; i3 < num23; ++i3) { if (WorldGen.genRand.Next(2) == 0) num27 += (float) WorldGen.genRand.Next(-1, 2); if ((double) num27 < (double) vector2_1.Y) num27 = vector2_1.Y; if ((double) num27 > (double) vector2_1.Y + 2.0) num27 = vector2_1.Y + 2f; for (int j3 = num24; j3 < num25; ++j3) { if ((double) j3 > (double) num27) { double num28 = (double) Math.Abs((float) i3 - vector2_1.X); float num29 = Math.Abs((float) j3 - vector2_1.Y) * 3f; if (Math.Sqrt(num28 * num28 + (double) num29 * (double) num29) < num26 * 0.4 && Main.tile[i3, j3].type == (ushort) 189) { Main.tile[i3, j3].type = (ushort) 0; WorldGen.SquareTileFrame(i3, j3); } } } } vector2_1 += vector2_2; vector2_2.X += (float) WorldGen.genRand.Next(-20, 21) * 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; } int index3 = num4 + WorldGen.genRand.Next(5); while (index3 < num5) { int index4 = num7; while ((!Main.tile[index3, index4].active() || Main.tile[index3, index4].type != (ushort) 0) && index3 < num5) { --index4; if (index4 < num6) { index4 = num7; index3 += WorldGen.genRand.Next(1, 4); } } if (index3 < num5) { int num30 = index4 + WorldGen.genRand.Next(0, 4); int minValue2 = WorldGen.genRand.Next(2, 5); int num31 = 189; for (int i4 = index3 - minValue2; i4 <= index3 + minValue2; ++i4) { for (int j4 = num30 - minValue2; j4 <= num30 + minValue2; ++j4) { if (j4 > num6) { double num32 = (double) Math.Abs(i4 - index3); float num33 = (float) (Math.Abs(j4 - num30) * 2); if (Math.Sqrt(num32 * num32 + (double) num33 * (double) num33) < (double) minValue2) { Main.tile[i4, j4].type = (ushort) num31; WorldGen.SquareTileFrame(i4, j4); } } } } index3 += WorldGen.genRand.Next(minValue2, (int) ((double) minValue2 * 1.5)); } } for (int i5 = num4 - 20; i5 <= num5 + 20; ++i5) { for (int j5 = num6 - 20; j5 <= num7 + 20; ++j5) { bool flag = true; for (int index5 = i5 - 1; index5 <= i5 + 1; ++index5) { for (int index6 = j5 - 1; index6 <= j5 + 1; ++index6) { if (!Main.tile[index5, index6].active()) flag = false; } } if (flag) { Main.tile[i5, j5].wall = (byte) 73; WorldGen.SquareWallFrame(i5, j5); } } } for (int i6 = num4; i6 <= num5; ++i6) { int j6 = num6 - 10; while (!Main.tile[i6, j6 + 1].active()) ++j6; if (j6 < num7 && Main.tile[i6, j6 + 1].type == (ushort) 189) { if (WorldGen.genRand.Next(10) == 0) { int num34 = WorldGen.genRand.Next(1, 3); for (int index7 = i6 - num34; index7 <= i6 + num34; ++index7) { if (Main.tile[index7, j6].type == (ushort) 189) { Main.tile[index7, j6].active(false); Main.tile[index7, j6].liquid = byte.MaxValue; Main.tile[index7, j6].lava(false); WorldGen.SquareTileFrame(i6, j6); } if (Main.tile[index7, j6 + 1].type == (ushort) 189) { Main.tile[index7, j6 + 1].active(false); Main.tile[index7, j6 + 1].liquid = byte.MaxValue; Main.tile[index7, j6 + 1].lava(false); WorldGen.SquareTileFrame(i6, j6 + 1); } if (index7 > i6 - num34 && index7 < i6 + 2 && Main.tile[index7, j6 + 2].type == (ushort) 189) { Main.tile[index7, j6 + 2].active(false); Main.tile[index7, j6 + 2].liquid = byte.MaxValue; Main.tile[index7, j6 + 2].lava(false); WorldGen.SquareTileFrame(i6, j6 + 2); } } } if (WorldGen.genRand.Next(5) == 0) Main.tile[i6, j6].liquid = byte.MaxValue; Main.tile[i6, j6].lava(false); WorldGen.SquareTileFrame(i6, j6); } } int num35 = WorldGen.genRand.Next(4); for (int index8 = 0; index8 <= num35; ++index8) { int num36 = WorldGen.genRand.Next(num4 - 5, num5 + 5); int num37 = num6 - WorldGen.genRand.Next(20, 40); int num38 = WorldGen.genRand.Next(4, 8); int num39 = 189; if (WorldGen.genRand.Next(2) == 0) num39 = 196; for (int i7 = num36 - num38; i7 <= num36 + num38; ++i7) { for (int j7 = num37 - num38; j7 <= num37 + num38; ++j7) { double num40 = (double) Math.Abs(i7 - num36); float num41 = (float) (Math.Abs(j7 - num37) * 2); if (Math.Sqrt(num40 * num40 + (double) num41 * (double) num41) < (double) (num38 + WorldGen.genRand.Next(-1, 2))) { Main.tile[i7, j7].active(true); Main.tile[i7, j7].type = (ushort) num39; WorldGen.SquareTileFrame(i7, j7); } } } for (int i8 = num36 - num38 + 2; i8 <= num36 + num38 - 2; ++i8) { int j8 = num37 - num38; while (!Main.tile[i8, j8].active()) ++j8; Main.tile[i8, j8].active(false); Main.tile[i8, j8].liquid = byte.MaxValue; WorldGen.SquareTileFrame(i8, j8); } } } public static void CloudLake(int i, int j) { double num1 = (double) WorldGen.genRand.Next(100, 150); double num2 = num1; float num3 = (float) WorldGen.genRand.Next(20, 30); int num4 = i; int num5 = i; int num6 = i; int num7 = j; 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) num3 > 0.0) { num1 -= (double) WorldGen.genRand.Next(4); --num3; int num8 = (int) ((double) vector2_1.X - num1 * 0.5); int num9 = (int) ((double) vector2_1.X + num1 * 0.5); int num10 = (int) ((double) vector2_1.Y - num1 * 0.5); int num11 = (int) ((double) vector2_1.Y + num1 * 0.5); if (num8 < 0) num8 = 0; if (num9 > Main.maxTilesX) num9 = Main.maxTilesX; if (num10 < 0) num10 = 0; if (num11 > Main.maxTilesY) num11 = Main.maxTilesY; double num12 = num1 * (double) WorldGen.genRand.Next(80, 120) * 0.01; float num13 = vector2_1.Y + 1f; for (int i1 = num8; i1 < num9; ++i1) { if (WorldGen.genRand.Next(2) == 0) num13 += (float) WorldGen.genRand.Next(-1, 2); if ((double) num13 < (double) vector2_1.Y) num13 = vector2_1.Y; if ((double) num13 > (double) vector2_1.Y + 2.0) num13 = vector2_1.Y + 2f; for (int j1 = num10; j1 < num11; ++j1) { if ((double) j1 > (double) num13) { double num14 = (double) Math.Abs((float) i1 - vector2_1.X); float num15 = Math.Abs((float) j1 - vector2_1.Y) * 3f; if (Math.Sqrt(num14 * num14 + (double) num15 * (double) num15) < num12 * 0.4) { if (i1 < num4) num4 = i1; if (i1 > num5) num5 = i1; if (j1 < num6) num6 = j1; if (j1 > num7) num7 = j1; Main.tile[i1, j1].active(true); Main.tile[i1, j1].type = (ushort) 189; WorldGen.SquareTileFrame(i1, j1); } } } } vector2_1 += vector2_2; vector2_2.X += (float) WorldGen.genRand.Next(-20, 21) * 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; } int minValue; for (int index1 = num4 + WorldGen.genRand.Next(5); index1 < num5; index1 += WorldGen.genRand.Next(minValue, (int) ((double) minValue * 1.5))) { int index2 = num7; while (!Main.tile[index1, index2].active()) --index2; int num16 = index2 + WorldGen.genRand.Next(-3, 4); minValue = WorldGen.genRand.Next(4, 8); int num17 = 189; if (WorldGen.genRand.Next(4) == 0) num17 = 196; for (int i2 = index1 - minValue; i2 <= index1 + minValue; ++i2) { for (int j2 = num16 - minValue; j2 <= num16 + minValue; ++j2) { if (j2 > num6) { double num18 = (double) Math.Abs(i2 - index1); float num19 = (float) (Math.Abs(j2 - num16) * 2); if (Math.Sqrt(num18 * num18 + (double) num19 * (double) num19) < (double) (minValue + WorldGen.genRand.Next(2))) { Main.tile[i2, j2].active(true); Main.tile[i2, j2].type = (ushort) num17; WorldGen.SquareTileFrame(i2, j2); } } } } } double num20 = (double) WorldGen.genRand.Next(80, 95); num2 = num20; float num21 = (float) WorldGen.genRand.Next(10, 15); vector2_1.X = (float) i; vector2_1.Y = (float) num6; 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 (num20 > 0.0 && (double) num21 > 0.0) { num20 -= (double) WorldGen.genRand.Next(4); --num21; int num22 = (int) ((double) vector2_1.X - num20 * 0.5); int num23 = (int) ((double) vector2_1.X + num20 * 0.5); int num24 = num6 - 1; int num25 = (int) ((double) vector2_1.Y + num20 * 0.5); if (num22 < 0) num22 = 0; if (num23 > Main.maxTilesX) num23 = Main.maxTilesX; if (num24 < 0) num24 = 0; if (num25 > Main.maxTilesY) num25 = Main.maxTilesY; double num26 = num20 * (double) WorldGen.genRand.Next(80, 120) * 0.01; float num27 = vector2_1.Y + 1f; for (int index3 = num22; index3 < num23; ++index3) { if (WorldGen.genRand.Next(2) == 0) num27 += (float) WorldGen.genRand.Next(-1, 2); if ((double) num27 < (double) vector2_1.Y) num27 = vector2_1.Y; if ((double) num27 > (double) vector2_1.Y + 2.0) num27 = vector2_1.Y + 2f; for (int index4 = num24; index4 < num25; ++index4) { if ((double) index4 > (double) num27) { double num28 = (double) Math.Abs((float) index3 - vector2_1.X); float num29 = Math.Abs((float) index4 - vector2_1.Y) * 3f; if (Math.Sqrt(num28 * num28 + (double) num29 * (double) num29) < num26 * 0.4 && Main.tile[index3, index4].type == (ushort) 189) { Main.tile[index3, index4].active(false); Main.tile[index3, index4].liquid = byte.MaxValue; Main.tile[index3, index4].honey(false); Main.tile[index3, index4].lava(false); } } } } vector2_1 += vector2_2; vector2_2.X += (float) WorldGen.genRand.Next(-20, 21) * 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; } for (int index5 = num4 - 20; index5 <= num5 + 20; ++index5) { for (int index6 = num6 - 20; index6 <= num7 + 20; ++index6) { bool flag = true; for (int index7 = index5 - 1; index7 <= index5 + 1; ++index7) { for (int index8 = index6 - 1; index8 <= index6 + 1; ++index8) { if (!Main.tile[index7, index8].active()) flag = false; } } if (flag) Main.tile[index5, index6].wall = (byte) 73; } } for (int i3 = num4; i3 <= num5; ++i3) { int j3 = num6 - 10; while (!Main.tile[i3, j3 + 1].active()) ++j3; if (j3 < num7 && Main.tile[i3, j3 + 1].type == (ushort) 189) { if (WorldGen.genRand.Next(10) == 0) { int num30 = WorldGen.genRand.Next(1, 3); for (int index = i3 - num30; index <= i3 + num30; ++index) { if (Main.tile[index, j3].type == (ushort) 189) { Main.tile[index, j3].active(false); Main.tile[index, j3].liquid = byte.MaxValue; Main.tile[index, j3].lava(false); WorldGen.SquareTileFrame(i3, j3); } if (Main.tile[index, j3 + 1].type == (ushort) 189) { Main.tile[index, j3 + 1].active(false); Main.tile[index, j3 + 1].liquid = byte.MaxValue; Main.tile[index, j3 + 1].lava(false); WorldGen.SquareTileFrame(i3, j3 + 1); } if (index > i3 - num30 && index < i3 + 2 && Main.tile[index, j3 + 2].type == (ushort) 189) { Main.tile[index, j3 + 2].active(false); Main.tile[index, j3 + 2].liquid = byte.MaxValue; Main.tile[index, j3 + 2].lava(false); WorldGen.SquareTileFrame(i3, j3 + 2); } } } if (WorldGen.genRand.Next(5) == 0) Main.tile[i3, j3].liquid = byte.MaxValue; Main.tile[i3, j3].lava(false); WorldGen.SquareTileFrame(i3, j3); } } int num31 = WorldGen.genRand.Next(1, 4); for (int index = 0; index <= num31; ++index) { int num32 = WorldGen.genRand.Next(num4 - 5, num5 + 5); int num33 = num6 - WorldGen.genRand.Next(20, 40); int num34 = WorldGen.genRand.Next(4, 8); int num35 = 189; if (WorldGen.genRand.Next(4) != 0) num35 = 196; for (int i4 = num32 - num34; i4 <= num32 + num34; ++i4) { for (int j4 = num33 - num34; j4 <= num33 + num34; ++j4) { double num36 = (double) Math.Abs(i4 - num32); float num37 = (float) (Math.Abs(j4 - num33) * 2); if (Math.Sqrt(num36 * num36 + (double) num37 * (double) num37) < (double) (num34 + WorldGen.genRand.Next(-1, 2))) { Main.tile[i4, j4].active(true); Main.tile[i4, j4].type = (ushort) num35; WorldGen.SquareTileFrame(i4, j4); } } } for (int i5 = num32 - num34 + 2; i5 <= num32 + num34 - 2; ++i5) { int j5 = num33 - num34; while (!Main.tile[i5, j5].active()) ++j5; Main.tile[i5, j5].active(false); Main.tile[i5, j5].liquid = byte.MaxValue; WorldGen.SquareTileFrame(i5, j5); } } } 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) { double num9 = (double) Math.Abs((float) index1 - vector2_1.X); float num10 = Math.Abs((float) index2 - vector2_1.Y) * 2f; if (Math.Sqrt(num9 * num9 + (double) num10 * (double) num10) < num7 * 0.4) { Main.tile[index1, index2].active(true); if (Main.tile[index1, index2].type == (ushort) 59) Main.tile[index1, index2].type = (ushort) 0; } } } } 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) { double num16 = (double) Math.Abs((float) index3 - vector2_1.X); float num17 = Math.Abs((float) index4 - vector2_1.Y) * 2f; if (Math.Sqrt(num16 * 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; x = MathHelper.Clamp(x, num4 + 1f, (float) ((double) Main.maxTilesX - (double) num4 - 1.0)); y = MathHelper.Clamp(y, num4 + 1f, (float) ((double) Main.maxTilesY - (double) num4 - 1.0)); 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) && index2 >= 0 && index2 < Main.maxTilesX && index3 >= 0 && index3 < Main.maxTilesY) { 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 = 202; byte num2 = 82; 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 - 1.0); int num7 = (int) ((double) vector2.X + (double) num4 + 1.0); int num8 = (int) ((double) vector2.Y - (double) num5 - 1.0); int num9 = (int) ((double) vector2.Y + 2.0); 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 - 1; index2 < num9 + 1; ++index2) { if (index2 != num8 - 1 || index1 != num6 && index1 != num7) { Main.tile[index1, index2].active(true); Main.tile[index1, index2].liquid = (byte) 0; Main.tile[index1, index2].type = (ushort) num1; Main.tile[index1, index2].wall = (byte) 0; Main.tile[index1, index2].halfBrick(false); Main.tile[index1, index2].slope((byte) 0); } } } int num10 = (int) ((double) vector2.X - (double) num4); int num11 = (int) ((double) vector2.X + (double) num4); int j1 = (int) ((double) vector2.Y - (double) num5); int num12 = (int) ((double) vector2.Y + 1.0); if (num10 < 0) num10 = 0; if (num11 > Main.maxTilesX) num11 = Main.maxTilesX; if (j1 < 0) j1 = 0; if (num12 > Main.maxTilesY) num12 = Main.maxTilesY; for (int index3 = num10; index3 <= num11; ++index3) { for (int index4 = j1; index4 < num12; ++index4) { if ((index4 != j1 || index3 != num10 && index3 != num11) && 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, style: 9); int index5 = i + (num4 + 1) * -num3 - num3; for (int index6 = j1; index6 <= num12 + 1; ++index6) { Main.tile[index5, index6].active(true); Main.tile[index5, index6].liquid = (byte) 0; Main.tile[index5, index6].type = (ushort) num1; Main.tile[index5, index6].wall = (byte) 0; Main.tile[index5, index6].halfBrick(false); Main.tile[index5, index6].slope((byte) 0); } int contain = 0; int num13 = WorldGen.houseCount; if (num13 > 2) num13 = WorldGen.genRand.Next(3); switch (num13) { case 0: contain = 159; break; case 1: contain = 65; break; case 2: contain = 158; break; } WorldGen.AddBuriedChest(i, y - 3, contain, Style: 13); ++WorldGen.houseCount; int num14 = i - num4 / 2 + 1; int num15 = i + num4 / 2 - 1; int num16 = 1; if (num4 > 10) num16 = 2; int num17 = (j1 + num12) / 2 - 1; for (int index7 = num14 - num16; index7 <= num14 + num16; ++index7) { for (int index8 = num17 - 1; index8 <= num17 + 1; ++index8) Main.tile[index7, index8].wall = (byte) 21; } for (int index9 = num15 - num16; index9 <= num15 + num16; ++index9) { for (int index10 = num17 - 1; index10 <= num17 + 1; ++index10) Main.tile[index9, index10].wall = (byte) 21; } int i2 = i + (num4 / 2 + 1) * -num3; WorldGen.PlaceTile(i2, num12 - 1, 14, true, style: 7); WorldGen.PlaceTile(i2 - 2, num12 - 1, 15, true, plr: 0, style: 10); Main.tile[i2 - 2, num12 - 1].frameX += (short) 18; Main.tile[i2 - 2, num12 - 2].frameX += (short) 18; WorldGen.PlaceTile(i2 + 2, num12 - 1, 15, true, plr: 0, style: 10); WorldGen.PlaceTile(num10 + 1, j1, 91, true, style: WorldGen.genRand.Next(7, 10)); WorldGen.PlaceTile(num11 - 1, j1, 91, true, style: WorldGen.genRand.Next(7, 10)); int i3; int j2; if (num3 > 0) { i3 = num10; j2 = j1 + 1; } else { i3 = num11; j2 = j1 + 1; } WorldGen.PlaceTile(i3, j2, 91, true, style: WorldGen.genRand.Next(7, 10)); } 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) { double num8 = (double) Math.Abs((float) index1 - vector2_1.X); float num9 = Math.Abs((float) index2 - vector2_1.Y); if (Math.Sqrt(num8 * num8 + (double) num9 * (double) num9) < num7 * 0.4 && !Main.tile[index1, index2].active()) { Main.tile[index1, index2].active(true); Main.tile[index1, index2].type = (ushort) 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 MakeWateryIceThing(int i, int j) { if (Main.tile[i, j].liquid <= (byte) 0 || Main.tile[i, j].active() || Main.tile[i, j].lava()) return; int index1 = j; while (!Main.tile[i, index1].active() && Main.tile[i, index1].liquid > (byte) 0) { ++index1; if (index1 > Main.maxTilesY - 50) return; } if (Main.tile[i, index1].type != (ushort) 147 && Main.tile[i, index1].type != (ushort) 161) return; int index2 = index1 - 1; while (Main.tile[i, index2].liquid > (byte) 0) { --index2; if (index2 < 10) return; } if (Main.tile[i, index2].active()) return; int j1 = index2 + 1; if (Main.tile[i, j1].active()) return; for (int i1 = i; !Main.tile[i1, j1].active() && Main.tile[i1, j1].liquid > (byte) 0 && Main.tile[i1, j1 - 1].liquid == (byte) 0 && !Main.tile[i1, j1 - 1].active() && !Main.tile[i1 - 1, j1].halfBrick(); --i1) WorldGen.PlaceTile(i1, j1, 162, true); for (int i2 = i + 1; !Main.tile[i2, j1].active() && Main.tile[i2, j1].liquid > (byte) 0 && Main.tile[i2, j1 - 1].liquid == (byte) 0 && !Main.tile[i2, j1 - 1].active() && !Main.tile[i2 + 1, j1].halfBrick(); ++i2) WorldGen.PlaceTile(i2, j1, 162, true); } 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) { double num8 = (double) Math.Abs((float) index1 - vector2_1.X); float num9 = Math.Abs((float) index2 - vector2_1.Y); if (Math.Sqrt(num8 * 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) { double num10 = (double) Math.Abs((float) index1 - vector2_1.X); float num11 = Math.Abs((float) (((double) index2 - (double) vector2_1.Y) * 2.29999995231628)); if (Math.Sqrt(num10 * num10 + (double) num11 * (double) num11) < num9 * 0.4) { if ((double) index2 < (double) vector2_1.Y + num9 * 0.02) { if (Main.tile[index1, index2].type != (ushort) 59) Main.tile[index1, index2].active(false); } else Main.tile[index1, index2].type = (ushort) 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 != (ushort) 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) { double num9 = (double) Math.Abs((float) index1 - vector2_1.X); float num10 = Math.Abs((float) index2 - vector2_1.Y); if (Math.Sqrt(num9 * num9 + (double) num10 * (double) num10) < num8 * 0.4 && TileID.Sets.CanBeClearedDuringGeneration[(int) Main.tile[index1, index2].type]) 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) { double num9 = (double) Math.Abs((float) index1 - vector2_1.X); float num10 = Math.Abs((float) index2 - vector2_1.Y); if (Math.Sqrt(num9 * 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 DiamondTileFrame(int i, int j) { WorldGen.TileFrame(i - 1, j); WorldGen.TileFrame(i, j - 1); WorldGen.TileFrame(i, j + 1); WorldGen.TileFrame(i + 1, j); } 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) { Framing.WallFrame(i - 1, j - 1); Framing.WallFrame(i - 1, j); Framing.WallFrame(i - 1, j + 1); Framing.WallFrame(i, j - 1); Framing.WallFrame(i, j, resetFrame); Framing.WallFrame(i, j + 1); Framing.WallFrame(i + 1, j - 1); Framing.WallFrame(i + 1, j); Framing.WallFrame(i + 1, j + 1); } public static void SectionTileFrameWithCheck(int startX, int startY, int endX, int endY) { int sectionX1 = Netplay.GetSectionX(startX); int sectionY1 = Netplay.GetSectionY(startY); int sectionX2 = Netplay.GetSectionX(endX); int sectionY2 = Netplay.GetSectionY(endY); for (int index1 = sectionX1; index1 <= sectionX2; ++index1) { for (int index2 = sectionY1; index2 <= sectionY2; ++index2) { if (Main.sectionManager.SectionLoaded(index1, index2) && !Main.sectionManager.SectionFramed(index1, index2)) { WorldGen.SectionTileFrame(index1, index2, index1, index2); if (Main.sectionManager.FrameSectionsLeft == 0) return; } } } } public static void SectionTileFrame(int startX, int startY, int endX, int endY) { Main.mapTime = Main.mapTimeMax + 10; WorldGen.noMapUpdate = true; 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; if (num2 > Main.maxTilesX - 2) num2 = Main.maxTilesX - 2; if (num4 > Main.maxTilesY - 2) num4 = 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); Framing.WallFrame(i, j, true); } } for (int x = startX; x <= endX; ++x) { for (int y = startY; y <= endY; ++y) Main.sectionManager.SetSectionFramed(x, y); } WorldGen.noMapUpdate = false; } 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); Framing.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) { Tile checkTile = Main.tile[index1, index2]; checkTile.checkingLiquid(false); if (checkTile.liquid > (byte) 0 && checkTile.nactive() && Main.tileSolid[(int) checkTile.type] && !Main.tileSolidTop[(int) checkTile.type]) checkTile.liquid = (byte) 0; else if (checkTile.liquid > (byte) 0) { if (checkTile.active()) { if (checkTile.lava()) { if (TileObjectData.CheckLavaDeath(checkTile)) WorldGen.KillTile(index1, index2); } else if (TileObjectData.CheckWaterDeath(checkTile)) WorldGen.KillTile(index1, index2); } Tile tile1 = Main.tile[index1, index2 + 1]; if ((!tile1.nactive() || !Main.tileSolid[(int) tile1.type] || Main.tileSolidTop[(int) tile1.type]) && tile1.liquid < byte.MaxValue) { if (tile1.liquid > (byte) 250) tile1.liquid = byte.MaxValue; else Liquid.AddWater(index1, index2); } Tile tile2 = Main.tile[index1 - 1, index2]; Tile tile3 = Main.tile[index1 + 1, index2]; if ((!tile2.nactive() || !Main.tileSolid[(int) tile2.type] || Main.tileSolidTop[(int) tile2.type]) && (int) tile2.liquid != (int) checkTile.liquid) Liquid.AddWater(index1, index2); else if ((!tile3.nactive() || !Main.tileSolid[(int) tile3.type] || Main.tileSolidTop[(int) tile3.type]) && (int) tile3.liquid != (int) checkTile.liquid) Liquid.AddWater(index1, index2); if (checkTile.lava()) { if (tile2.liquid > (byte) 0 && !tile2.lava()) Liquid.AddWater(index1, index2); else if (tile3.liquid > (byte) 0 && !tile3.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 (tile1.liquid > (byte) 0 && !tile1.lava()) Liquid.AddWater(index1, index2); } } } } } public static void EveryTileFrame() { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); 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].Value + " " + (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) Framing.WallFrame(i, j, true); } } WorldGen.noLiquidCheck = false; WorldGen.noTileActions = false; long elapsedMilliseconds = stopwatch.ElapsedMilliseconds; } 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].nactive()) { 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].nactive()) { int type2 = (int) Main.tile[i + 1, j].type; } if (j - 1 >= 0 && Main.tile[i, j - 1] != null && Main.tile[i, j - 1].nactive()) { 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].nactive() && !Main.tile[i, j + 1].halfBrick() && Main.tile[i, j + 1].slope() == (byte) 0) 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].nactive()) { 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].nactive()) { 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].nactive()) { 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].nactive()) { int type7 = (int) Main.tile[i + 1, j + 1].type; } if ((num2 != 3 || num1 == 2 || num1 == 78 || num1 == 380) && (num2 != 24 || num1 == 23) && (num2 != 61 || num1 == 60) && (num2 != 71 || num1 == 70) && (num2 != 73 || num1 == 2 || num1 == 78 || num1 == 380) && (num2 != 74 || num1 == 60) && (num2 != 110 || num1 == 109) && (num2 != 113 || num1 == 109) && (num2 != 201 || num1 == 199)) return; if ((num2 == 3 || num2 == 73) && num1 != 2 && Main.tile[i, j].frameX >= (short) 162) Main.tile[i, j].frameX = (short) 126; if (num2 == 74 && num1 != 60 && Main.tile[i, j].frameX >= (short) 162) Main.tile[i, j].frameX = (short) 126; 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 70: num2 = 71; while (Main.tile[i, j].frameX > (short) 72) Main.tile[i, j].frameX -= (short) 72; break; case 109: num2 = num2 != 73 ? 110 : 113; break; case 199: num2 = 201; break; } if (num2 != (int) Main.tile[i, j].type) Main.tile[i, j].type = (ushort) num2; else WorldGen.KillTile(i, j); } public static bool CheckPound(int i, int j) { if (Main.tile[i, j] == null) Main.tile[i, 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(); switch (Main.tile[i, j].type) { case 10: case 48: case 137: case 138: case 232: case 380: case 387: case 388: return false; default: if (WorldGen.gen && (Main.tile[i, j].type == (ushort) 190 || Main.tile[i, j].type == (ushort) 30)) return false; if (Main.tile[i, j - 1].active()) { switch (Main.tile[i, j - 1].type) { case 5: case 21: case 26: case 72: case 77: case 88: case 235: case 237: case 323: case 441: case 467: case 468: return false; } } return true; } } public static bool SlopeTile(int i, int j, int slope = 0) { if (!WorldGen.CheckPound(i, j)) return false; Main.tile[i, j].halfBrick(false); Main.tile[i, j].slope((byte) slope); if (!WorldGen.gen) { WorldGen.KillTile(i, j, true, true); Main.PlaySound(0, i * 16, j * 16); WorldGen.SquareTileFrame(i, j); if (Main.tile[i, j].slope() == (byte) 0) { Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(i * 16, j * 16, 16, 16); for (int index = 0; index < (int) byte.MaxValue; ++index) { if (Main.player[index].active && !Main.player[index].dead && rectangle.Intersects(new Microsoft.Xna.Framework.Rectangle((int) Main.player[index].position.X, (int) Main.player[index].position.Y, Main.player[index].width, Main.player[index].height))) { Main.player[index].gfxOffY += Main.player[index].position.Y + (float) Main.player[index].height - (float) rectangle.Y; Main.player[index].position.Y = (float) (rectangle.Y - Main.player[index].height); } } } } return true; } public static bool PoundTile(int i, int j) { if (!WorldGen.CheckPound(i, j)) return false; if (!Main.tile[i, j].halfBrick()) Main.tile[i, j].halfBrick(true); else Main.tile[i, j].halfBrick(false); if (!WorldGen.gen) { WorldGen.KillTile(i, j, true, true); Main.PlaySound(0, i * 16, j * 16); WorldGen.SquareTileFrame(i, j); if (!Main.tile[i, j].halfBrick()) { Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(i * 16, j * 16, 16, 16); for (int index = 0; index < (int) byte.MaxValue; ++index) { if (Main.player[index].active && !Main.player[index].dead && rectangle.Intersects(new Microsoft.Xna.Framework.Rectangle((int) Main.player[index].position.X, (int) Main.player[index].position.Y, Main.player[index].width, Main.player[index].height))) { Main.player[index].gfxOffY += Main.player[index].position.Y + (float) Main.player[index].height - (float) rectangle.Y; Main.player[index].position.Y = (float) (rectangle.Y - Main.player[index].height); } } } } return true; } public static void PoundPlatform(int x, int y) { if (Main.tile[x, y].halfBrick()) { WorldGen.PoundTile(x, y); if (Main.netMode != 1) return; NetMessage.SendData(17, number: 7, number2: ((float) x), number3: ((float) y), number4: 1f); } else { int slope1 = 1; int slope2 = 2; if (TileID.Sets.Platforms[(int) Main.tile[x + 1, y - 1].type] || TileID.Sets.Platforms[(int) Main.tile[x - 1, y + 1].type] || WorldGen.SolidTile(x + 1, y) && !WorldGen.SolidTile(x - 1, y)) { slope1 = 2; slope2 = 1; } if (Main.tile[x, y].slope() == (byte) 0) { WorldGen.SlopeTile(x, y, slope1); int num = (int) Main.tile[x, y].slope(); if (Main.netMode != 1) return; NetMessage.SendData(17, number: 14, number2: ((float) x), number3: ((float) y), number4: ((float) num)); } else if ((int) Main.tile[x, y].slope() == slope1) { WorldGen.SlopeTile(x, y, slope2); int num = (int) Main.tile[x, y].slope(); if (Main.netMode != 1) return; NetMessage.SendData(17, number: 14, number2: ((float) x), number3: ((float) y), number4: ((float) num)); } else { WorldGen.SlopeTile(x, y); int num = (int) Main.tile[x, y].slope(); if (Main.netMode == 1) NetMessage.SendData(17, number: 14, number2: ((float) x), number3: ((float) y), number4: ((float) num)); WorldGen.PoundTile(x, y); if (Main.netMode != 1) return; NetMessage.SendData(17, number: 7, number2: ((float) x), number3: ((float) y), number4: 1f); } } } public static int PlatformProperSides(int x, int y, bool acceptNonOpposing = false) { Tile tile = Main.tile[x, y]; if (!tile.active() || !TileID.Sets.Platforms[(int) tile.type]) return 0; int num1 = (int) tile.slope(); int num2 = -1; if (num1 == 1) num2 = 2; if (num1 == 2) num2 = 1; int num3 = 0; int num4 = 1; int num5 = 0; if (num1 == 1) num5 = 1; if (num1 == 2) num5 = -1; if (acceptNonOpposing) { if (Main.tile[x + num4, y + num5].active() && TileID.Sets.Platforms[(int) Main.tile[x + num4, y + num5].type] && (int) Main.tile[x + num4, y + num5].slope() != num2) ++num3; } else if (Main.tile[x + num4, y + num5].active() && TileID.Sets.Platforms[(int) Main.tile[x + num4, y + num5].type] && (int) Main.tile[x + num4, y + num5].slope() == num1) ++num3; int num6 = num4 * -1; int num7 = num5 * -1; if (acceptNonOpposing) { if (Main.tile[x + num6, y + num7].active() && TileID.Sets.Platforms[(int) Main.tile[x + num6, y + num7].type] && (int) Main.tile[x + num6, y + num7].slope() != num2) ++num3; } else if (Main.tile[x + num6, y + num7].active() && TileID.Sets.Platforms[(int) Main.tile[x + num6, y + num7].type] && (int) Main.tile[x + num6, y + num7].slope() == num1) ++num3; return num3; } public static bool UpdateMapTile(int i, int j, bool addToList = true) { bool flag = false; if (Main.mapEnabled && !WorldGen.noMapUpdate && !WorldGen.gen && ((Main.Map[i, j].Light <= (byte) 0 ? 0 : (Main.Map.UpdateType(i, j) ? 1 : 0)) & (addToList ? 1 : 0)) != 0) { flag = true; if (MapHelper.numUpdateTile < MapHelper.maxUpdateTile - 1) { MapHelper.updateTileX[MapHelper.numUpdateTile] = (short) i; MapHelper.updateTileY[MapHelper.numUpdateTile] = (short) j; ++MapHelper.numUpdateTile; } else Main.refreshMap = true; } return flag; } public static void TileMergeAttemptFrametest( int i, int j, int myType, int lookfor, ref int up, ref int down, ref int left, ref int right, ref int upLeft, ref int upRight, ref int downLeft, ref int downRight) { if (up == lookfor) { WorldGen.TileFrame(i, j - 1); if (WorldGen.mergeDown) up = myType; } if (down == lookfor) { WorldGen.TileFrame(i, j + 1); if (WorldGen.mergeUp) down = myType; } if (left == lookfor) { WorldGen.TileFrame(i - 1, j); if (WorldGen.mergeRight) left = myType; } if (right == lookfor) { WorldGen.TileFrame(i + 1, j); if (WorldGen.mergeLeft) right = myType; } if (upLeft == lookfor) upLeft = myType; if (upRight == lookfor) upRight = myType; if (downLeft == lookfor) downLeft = myType; if (downRight != lookfor) return; downRight = myType; } public static void TileMergeAttemptFrametest( int i, int j, int myType, bool[] lookfor, ref int up, ref int down, ref int left, ref int right, ref int upLeft, ref int upRight, ref int downLeft, ref int downRight) { if (up > -1 && lookfor[up]) { WorldGen.TileFrame(i, j - 1); if (WorldGen.mergeDown) up = myType; } if (down > -1 && lookfor[down]) { WorldGen.TileFrame(i, j + 1); if (WorldGen.mergeUp) down = myType; } if (left > -1 && lookfor[left]) { WorldGen.TileFrame(i - 1, j); if (WorldGen.mergeRight) left = myType; } if (right > -1 && lookfor[right]) { WorldGen.TileFrame(i + 1, j); if (WorldGen.mergeLeft) right = myType; } if (upLeft > -1 && lookfor[upLeft]) upLeft = myType; if (upRight > -1 && lookfor[upRight]) upRight = myType; if (downLeft > -1 && lookfor[downLeft]) downLeft = myType; if (downRight <= -1 || !lookfor[downRight]) return; downRight = myType; } public static void TileMergeAttempt( int myType, int lookfor, ref int up, ref int down, ref int left, ref int right) { if (lookfor == up) up = myType; if (lookfor == down) down = myType; if (lookfor == left) left = myType; if (lookfor != right) return; right = myType; } public static void TileMergeAttempt( int myType, int lookfor, ref int up, ref int down, ref int left, ref int right, ref int upLeft, ref int upRight, ref int downLeft, ref int downRight) { if (lookfor == up) up = myType; if (lookfor == down) down = myType; if (lookfor == left) left = myType; if (lookfor == right) right = myType; if (lookfor == upLeft) upLeft = myType; if (lookfor == upRight) upRight = myType; if (lookfor == downLeft) downLeft = myType; if (lookfor != downRight) return; downRight = myType; } public static void TileMergeAttempt( int myType, bool[] lookfor, ref int up, ref int down, ref int left, ref int right, ref int upLeft, ref int upRight, ref int downLeft, ref int downRight) { if (up > -1 && lookfor[up]) up = myType; if (down > -1 && lookfor[down]) down = myType; if (left > -1 && lookfor[left]) left = myType; if (right > -1 && lookfor[right]) right = myType; if (upLeft > -1 && lookfor[upLeft]) upLeft = myType; if (upRight > -1 && lookfor[upRight]) upRight = myType; if (downLeft > -1 && lookfor[downLeft]) downLeft = myType; if (downRight <= -1 || !lookfor[downRight]) return; downRight = myType; } public static void TileMergeAttempt( int myType, bool[] lookfor, bool[] exclude, ref int up, ref int down, ref int left, ref int right, ref int upLeft, ref int upRight, ref int downLeft, ref int downRight) { if (up > -1 && !exclude[up] && lookfor[up]) up = myType; if (down > -1 && !exclude[down] && lookfor[down]) down = myType; if (left > -1 && !exclude[left] && lookfor[left]) left = myType; if (right > -1 && !exclude[right] && lookfor[right]) right = myType; if (upLeft > -1 && !exclude[upLeft] && lookfor[upLeft]) upLeft = myType; if (upRight > -1 && !exclude[upRight] && lookfor[upRight]) upRight = myType; if (downLeft > -1 && !exclude[downLeft] && lookfor[downLeft]) downLeft = myType; if (downRight <= -1 || exclude[downRight] || !lookfor[downRight]) return; downRight = myType; } public static void TileMergeAttemptWeird( int myType, int changeTo, bool[] exclude, ref int up, ref int down, ref int left, ref int right, ref int upLeft, ref int upRight, ref int downLeft, ref int downRight) { if (up > -1 && !exclude[up] && up != myType) up = changeTo; if (down > -1 && !exclude[down] && down != myType) down = changeTo; if (left > -1 && !exclude[left] && left != myType) left = changeTo; if (right > -1 && !exclude[right] && right != myType) right = changeTo; if (upLeft > -1 && !exclude[upLeft] && upLeft != myType) upLeft = changeTo; if (upRight > -1 && !exclude[upRight] && upRight != myType) upRight = changeTo; if (downLeft > -1 && !exclude[downLeft] && downLeft != myType) downLeft = changeTo; if (downRight <= -1 || exclude[downRight] || downRight == myType) return; downRight = changeTo; } public static void TileFrame(int i, int j, bool resetFrame = false, bool noBreak = false) { bool addToList = false; try { if (i > 5) { if (j > 5) { if (i < Main.maxTilesX - 5) { if (j < Main.maxTilesY - 5) { if (Main.tile[i, j] != null) { addToList = WorldGen.UpdateMapTile(i, j); Tile centerTile = Main.tile[i, j]; if (!centerTile.active()) { centerTile.halfBrick(false); centerTile.color((byte) 0); centerTile.slope((byte) 0); } if (centerTile.liquid > (byte) 0 && Main.netMode != 1 && !WorldGen.noLiquidCheck) Liquid.AddWater(i, j); if (centerTile.active()) { if (noBreak && Main.tileFrameImportant[(int) centerTile.type] && centerTile.type != (ushort) 4) return; int index1 = (int) centerTile.type; if (Main.tileStone[index1]) index1 = 1; int frameX1 = (int) centerTile.frameX; int frameY1 = (int) centerTile.frameY; Microsoft.Xna.Framework.Rectangle rectangle = new Microsoft.Xna.Framework.Rectangle(-1, -1, 0, 0); if (Main.tileFrameImportant[(int) centerTile.type]) { switch (index1) { case 4: Tile tile1 = Main.tile[i, j - 1]; Tile tile2 = Main.tile[i, j + 1]; Tile tile3 = Main.tile[i - 1, j]; Tile tile4 = Main.tile[i + 1, j]; Tile tile5 = Main.tile[i - 1, j + 1]; Tile tile6 = Main.tile[i + 1, j + 1]; Tile tile7 = Main.tile[i - 1, j - 1]; Tile tile8 = Main.tile[i + 1, j - 1]; short num1 = 0; if (centerTile.frameX >= (short) 66) num1 = (short) 66; int index2 = -1; int index3 = -1; int index4 = -1; int num2 = -1; int num3 = -1; int num4 = -1; int num5 = -1; if (tile1 != null && tile1.active() && !tile1.bottomSlope()) { int type1 = (int) tile1.type; } if (tile2 != null && tile2.active() && !tile2.halfBrick() && !tile2.topSlope()) index2 = (int) tile2.type; if (tile3 != null && tile3.active() && (tile3.slope() == (byte) 0 || (int) tile3.slope() % 2 != 1)) index3 = (int) tile3.type; if (tile4 != null && tile4.active() && (tile4.slope() == (byte) 0 || (int) tile4.slope() % 2 != 0)) index4 = (int) tile4.type; if (tile5 != null && tile5.active()) num2 = (int) tile5.type; if (tile6 != null && tile6.active()) num3 = (int) tile6.type; if (tile7 != null && tile7.active()) num4 = (int) tile7.type; if (tile8 != null && tile8.active()) num5 = (int) tile8.type; if (index2 >= 0 && Main.tileSolid[index2] && (!Main.tileNoAttach[index2] || TileID.Sets.Platforms[index2])) { centerTile.frameX = num1; return; } if (index3 >= 0 && Main.tileSolid[index3] && !Main.tileNoAttach[index3] || index3 == 124 || index3 == 5 && num4 == 5 && num2 == 5) { centerTile.frameX = (short) (22 + (int) num1); return; } if (index4 >= 0 && Main.tileSolid[index4] && !Main.tileNoAttach[index4] || index4 == 124 || index4 == 5 && num5 == 5 && num3 == 5) { centerTile.frameX = (short) (44 + (int) num1); return; } if (centerTile.wall > (byte) 0) { centerTile.frameX = num1; return; } WorldGen.KillTile(i, j); return; case 136: Tile tile9 = Main.tile[i, j - 1]; Tile tile10 = Main.tile[i, j + 1]; Tile tile11 = Main.tile[i - 1, j]; Tile tile12 = Main.tile[i + 1, j]; Tile tile13 = Main.tile[i - 1, j + 1]; Tile tile14 = Main.tile[i + 1, j + 1]; Tile tile15 = Main.tile[i - 1, j - 1]; Tile tile16 = Main.tile[i + 1, j - 1]; int index5 = -1; int index6 = -1; int index7 = -1; int num6 = -1; int num7 = -1; int num8 = -1; int num9 = -1; if (tile9 != null && tile9.nactive()) { int type2 = (int) tile9.type; } if (tile10 != null && tile10.nactive() && !tile10.halfBrick() && !tile10.topSlope()) index5 = (int) tile10.type; if (tile11 != null && tile11.nactive()) index6 = (int) tile11.type; if (tile12 != null && tile12.nactive()) index7 = (int) tile12.type; if (tile13 != null && tile13.nactive()) num6 = (int) tile13.type; if (tile14 != null && tile14.nactive()) num7 = (int) tile14.type; if (tile15 != null && tile15.nactive()) num8 = (int) tile15.type; if (tile16 != null && tile16.nactive()) num9 = (int) tile16.type; if (index5 >= 0 && Main.tileSolid[index5] && !Main.tileNoAttach[index5] && !tile10.halfBrick() && (tile10.slope() == (byte) 0 || tile10.bottomSlope())) { centerTile.frameX = (short) 0; return; } if (index6 >= 0 && Main.tileSolid[index6] && !Main.tileNoAttach[index6] && (tile11.leftSlope() || tile11.slope() == (byte) 0) && !tile11.halfBrick() || index6 == 124 || index6 == 5 && num8 == 5 && num6 == 5) { centerTile.frameX = (short) 18; return; } if (index7 >= 0 && Main.tileSolid[index7] && !Main.tileNoAttach[index7] && (tile12.rightSlope() || tile12.slope() == (byte) 0) && !tile12.halfBrick() || index7 == 124 || index7 == 5 && num9 == 5 && num7 == 5) { centerTile.frameX = (short) 36; return; } if (centerTile.wall > (byte) 0) { centerTile.frameX = (short) 54; return; } WorldGen.KillTile(i, j); return; case 442: Tile tile17 = Main.tile[i, j - 1]; Tile tile18 = Main.tile[i, j + 1]; Tile tile19 = Main.tile[i - 1, j]; Tile tile20 = Main.tile[i + 1, j]; Tile tile21 = Main.tile[i - 1, j + 1]; Tile tile22 = Main.tile[i + 1, j + 1]; Tile tile23 = Main.tile[i - 1, j - 1]; Tile tile24 = Main.tile[i + 1, j - 1]; int index8 = -1; int index9 = -1; int index10 = -1; int index11 = -1; int num10 = -1; int num11 = -1; int num12 = -1; int num13 = -1; if (tile17 != null && tile17.nactive() && !tile17.bottomSlope()) index9 = (int) tile17.type; if (tile18 != null && tile18.nactive() && !tile18.halfBrick() && !tile18.topSlope()) index8 = (int) tile18.type; if (tile19 != null && tile19.nactive() && (tile19.slope() == (byte) 0 || (int) tile19.slope() % 2 != 1)) index10 = (int) tile19.type; if (tile20 != null && tile20.nactive() && (tile20.slope() == (byte) 0 || (int) tile20.slope() % 2 != 0)) index11 = (int) tile20.type; if (tile21 != null && tile21.nactive()) num10 = (int) tile21.type; if (tile22 != null && tile22.nactive()) num11 = (int) tile22.type; if (tile23 != null && tile23.nactive()) num12 = (int) tile23.type; if (tile24 != null && tile24.nactive()) num13 = (int) tile24.type; bool flag1 = false; bool flag2 = false; bool flag3 = false; bool flag4 = false; if (index8 >= 0 && Main.tileSolid[index8] && (!Main.tileNoAttach[index8] || TileID.Sets.Platforms[index8]) && (tile18.bottomSlope() || tile18.slope() == (byte) 0) && !tile18.halfBrick()) flag4 = true; if (index9 >= 0 && Main.tileSolid[index9] && (!Main.tileNoAttach[index9] || TileID.Sets.Platforms[index9] && tile17.halfBrick()) && (tile17.topSlope() || tile17.slope() == (byte) 0 || tile17.halfBrick())) flag1 = true; if (index10 >= 0 && Main.tileSolid[index10] && !Main.tileNoAttach[index10] && (tile19.leftSlope() || tile19.slope() == (byte) 0) && !tile19.halfBrick() || index10 == 124 || index10 == 5 && num12 == 5 && num10 == 5) flag2 = true; if (index11 >= 0 && Main.tileSolid[index11] && !Main.tileNoAttach[index11] && (tile20.rightSlope() || tile20.slope() == (byte) 0) && !tile20.halfBrick() || index11 == 124 || index11 == 5 && num13 == 5 && num11 == 5) flag3 = true; bool flag5; switch ((int) centerTile.frameX / 22) { case 0: flag5 = !flag4; break; case 1: flag5 = !flag1; break; case 2: flag5 = !flag2; break; case 3: flag5 = !flag3; break; default: flag5 = true; break; } if (!flag5) return; if (flag4) { centerTile.frameX = (short) 0; return; } if (flag1) { centerTile.frameX = (short) 22; return; } if (flag2) { centerTile.frameX = (short) 44; return; } if (flag3) { centerTile.frameX = (short) 66; return; } WorldGen.KillTile(i, j); return; default: if (index1 == 129 || index1 == 149) { Tile tile25 = Main.tile[i, j - 1]; Tile tile26 = Main.tile[i, j + 1]; Tile tile27 = Main.tile[i - 1, j]; Tile tile28 = Main.tile[i + 1, j]; int index12 = -1; int index13 = -1; int index14 = -1; int index15 = -1; if (tile25 != null && tile25.nactive() && !tile25.bottomSlope()) index13 = (int) tile25.type; if (tile26 != null && tile26.nactive() && !tile26.halfBrick() && !tile26.topSlope()) index12 = (int) tile26.type; if (tile27 != null && tile27.nactive()) index14 = (int) tile27.type; if (tile28 != null && tile28.nactive()) index15 = (int) tile28.type; if (index12 >= 0 && Main.tileSolid[index12] && !Main.tileSolidTop[index12]) { centerTile.frameY = (short) 0; return; } if (index14 >= 0 && Main.tileSolid[index14] && !Main.tileSolidTop[index14]) { centerTile.frameY = (short) 54; return; } if (index15 >= 0 && Main.tileSolid[index15] && !Main.tileSolidTop[index15]) { centerTile.frameY = (short) 36; return; } if (index13 >= 0 && Main.tileSolid[index13] && !Main.tileSolidTop[index13]) { centerTile.frameY = (short) 18; return; } WorldGen.KillTile(i, j); return; } if (index1 >= 373 && index1 <= 375 || index1 == 461) { Tile tile29 = Main.tile[i, j - 1]; if (tile29 != null && tile29.active() && !tile29.bottomSlope() && Main.tileSolid[(int) tile29.type] && !Main.tileSolidTop[(int) tile29.type]) return; WorldGen.KillTile(i, j); return; } switch (index1) { case 178: Tile tile30 = Main.tile[i, j - 1]; Tile tile31 = Main.tile[i, j + 1]; Tile tile32 = Main.tile[i - 1, j]; Tile tile33 = Main.tile[i + 1, j]; int index16 = -1; int index17 = -1; int index18 = -1; int index19 = -1; if (tile30 != null && tile30.active() && !tile30.bottomSlope()) index17 = (int) tile30.type; if (tile31 != null && tile31.active() && !tile31.halfBrick() && !tile31.topSlope()) index16 = (int) tile31.type; if (tile32 != null && tile32.active()) index18 = (int) tile32.type; if (tile33 != null && tile33.active()) index19 = (int) tile33.type; short num14 = (short) (WorldGen.genRand.Next(3) * 18); if (index16 >= 0 && Main.tileSolid[index16] && !Main.tileSolidTop[index16]) { if (centerTile.frameY >= (short) 0 && centerTile.frameY <= (short) 36) return; centerTile.frameY = num14; return; } if (index18 >= 0 && Main.tileSolid[index18] && !Main.tileSolidTop[index18]) { if (centerTile.frameY >= (short) 108 && centerTile.frameY <= (short) 54) return; centerTile.frameY = (short) (108 + (int) num14); return; } if (index19 >= 0 && Main.tileSolid[index19] && !Main.tileSolidTop[index19]) { if (centerTile.frameY >= (short) 162 && centerTile.frameY <= (short) 198) return; centerTile.frameY = (short) (162 + (int) num14); return; } if (index17 >= 0 && Main.tileSolid[index17] && !Main.tileSolidTop[index17]) { if (centerTile.frameY >= (short) 54 && centerTile.frameY <= (short) 90) return; centerTile.frameY = (short) (54 + (int) num14); return; } WorldGen.KillTile(i, j); return; case 184: Tile tile34 = Main.tile[i, j - 1]; Tile tile35 = Main.tile[i, j + 1]; Tile tile36 = Main.tile[i - 1, j]; Tile tile37 = Main.tile[i + 1, j]; int index20 = -1; int index21 = -1; int index22 = -1; int index23 = -1; if (tile34 != null && tile34.active() && !tile34.bottomSlope()) index21 = (int) tile34.type; if (tile35 != null && tile35.active() && !tile35.halfBrick() && !tile35.topSlope()) index20 = (int) tile35.type; if (tile36 != null && tile36.active()) index22 = (int) tile36.type; if (tile37 != null && tile37.active()) index23 = (int) tile37.type; short num15 = (short) (WorldGen.genRand.Next(3) * 18); if (index20 >= 0 && Main.tileMoss[index20]) { centerTile.frameX = index20 != 381 ? (short) (22 * (index20 - 179)) : (short) 110; if (centerTile.frameY >= (short) 0 && centerTile.frameY <= (short) 36) return; centerTile.frameY = num15; return; } if (index21 >= 0 && Main.tileMoss[index21]) { centerTile.frameX = index21 != 381 ? (short) (22 * (index21 - 179)) : (short) 110; if (centerTile.frameY >= (short) 54 && centerTile.frameY <= (short) 90) return; centerTile.frameY = (short) (54 + (int) num15); return; } if (index22 >= 0 && Main.tileMoss[index22]) { centerTile.frameX = index22 != 381 ? (short) (22 * (index22 - 179)) : (short) 110; if (centerTile.frameY >= (short) 108 && centerTile.frameY <= (short) 54) return; centerTile.frameY = (short) (108 + (int) num15); return; } if (index23 >= 0 && Main.tileMoss[index23]) { centerTile.frameX = index23 != 381 ? (short) (22 * (index23 - 179)) : (short) 110; if (centerTile.frameY >= (short) 162 && centerTile.frameY <= (short) 198) return; centerTile.frameY = (short) (162 + (int) num15); return; } WorldGen.KillTile(i, j); return; default: if (index1 == 3 || index1 == 24 || index1 == 61 || index1 == 71 || index1 == 73 || index1 == 74 || index1 == 110 || index1 == 113 || index1 == 201) { WorldGen.PlantCheck(i, j); return; } if (index1 == 227) { WorldGen.CheckDye(i, j); return; } if (index1 == 12 || index1 == 31) { WorldGen.CheckOrb(i, j, index1); return; } switch (index1) { case 165: WorldGen.CheckTight(i, j); return; case 185: WorldGen.CheckPile(i, j); return; case 235: WorldGen.Check3x1(i, j, index1); return; case 324: Tile tile38 = Main.tile[i, j + 1]; if (tile38 == null) { tile38 = new Tile(); Main.tile[i, j + 1] = tile38; } if (tile38.nactive() && (Main.tileSolid[(int) tile38.type] || Main.tileSolidTop[(int) tile38.type])) return; WorldGen.KillTile(i, j); return; default: if (index1 >= 275 && index1 <= 281 || index1 == 296 || index1 == 297 || index1 == 309 || index1 == 358 || index1 == 359 || index1 == 413 || index1 == 414) { WorldGen.Check6x3(i, j, index1); return; } switch (index1) { case 10: if (WorldGen.destroyObject) return; bool flag6 = false; int frameY2 = (int) centerTile.frameY; int doorStyle1 = frameY2 / 54 + (int) centerTile.frameX / 54 * 36; int j1 = j - frameY2 % 54 / 18; Tile tile39 = Main.tile[i, j1 - 1]; Tile tile40 = Main.tile[i, j1]; Tile tile41 = Main.tile[i, j1 + 1]; Tile tile42 = Main.tile[i, j1 + 2]; Tile testTile1 = Main.tile[i, j1 + 3]; if (tile39 == null) { tile39 = new Tile(); Main.tile[i, j1 - 1] = tile39; } if (tile40 == null) { tile40 = new Tile(); Main.tile[i, j1] = tile40; } if (tile41 == null) { tile41 = new Tile(); Main.tile[i, j1 + 1] = tile41; } if (tile42 == null) { tile42 = new Tile(); Main.tile[i, j1 + 2] = tile42; } if (testTile1 == null) { testTile1 = new Tile(); Main.tile[i, j1 + 3] = testTile1; } if (!tile39.active() || !Main.tileSolid[(int) tile39.type]) flag6 = true; if (!WorldGen.SolidTile(testTile1)) flag6 = true; if (!tile40.active() || (int) tile40.type != index1) flag6 = true; if (!tile41.active() || (int) tile41.type != index1) flag6 = true; if (!tile42.active() || (int) tile42.type != index1) flag6 = true; if (flag6) { WorldGen.destroyObject = true; WorldGen.KillTile(i, j1); WorldGen.KillTile(i, j1 + 1); WorldGen.KillTile(i, j1 + 2); WorldGen.DropDoorItem(i, j, doorStyle1); } WorldGen.destroyObject = false; return; case 11: if (WorldGen.destroyObject) return; int num16 = 0; int index24 = i; int frameX2 = (int) centerTile.frameX; int frameY3 = (int) centerTile.frameY; int doorStyle2 = frameY3 / 54 + (int) centerTile.frameX / 72 * 36; int num17 = j - frameY3 % 54 / 18; bool flag7 = false; switch (frameX2 % 72) { case 0: index24 = i; num16 = 1; break; case 18: index24 = i - 1; num16 = 1; break; case 36: index24 = i + 1; num16 = -1; break; case 54: index24 = i; num16 = -1; break; } Tile tile43 = Main.tile[index24, num17 - 1]; Tile testTile2 = Main.tile[index24, num17 + 3]; if (tile43 == null) { tile43 = new Tile(); Main.tile[index24, num17 - 1] = tile43; } if (testTile2 == null) { testTile2 = new Tile(); Main.tile[index24, num17 + 3] = testTile2; } if (!tile43.active() || !Main.tileSolid[(int) tile43.type] || !WorldGen.SolidTile(testTile2)) { flag7 = true; WorldGen.destroyObject = true; WorldGen.DropDoorItem(i, j, doorStyle2); } int num18 = index24; if (num16 == -1) num18 = index24 - 1; for (int i1 = num18; i1 < num18 + 2; ++i1) { for (int j2 = num17; j2 < num17 + 3; ++j2) { if (!flag7) { Tile tile44 = Main.tile[i1, j2]; if (!tile44.active() || tile44.type != (ushort) 11) { WorldGen.destroyObject = true; WorldGen.DropDoorItem(i, j, doorStyle2); flag7 = true; i1 = num18; j2 = num17; } } if (flag7) WorldGen.KillTile(i1, j2); } } WorldGen.destroyObject = false; return; case 314: Minecart.FrameTrack(i, j, false); return; case 380: Tile tile45 = Main.tile[i - 1, j]; if (tile45 == null) return; Tile tile46 = Main.tile[i + 1, j]; if (tile46 == null || Main.tile[i - 1, j + 1] == null || Main.tile[i + 1, j + 1] == null || Main.tile[i - 1, j - 1] == null || Main.tile[i + 1, j - 1] == null) return; int index25 = -1; int index26 = -1; if (tile45 != null && tile45.active()) index26 = !Main.tileStone[(int) tile45.type] ? (int) tile45.type : 1; if (tile46 != null && tile46.active()) index25 = !Main.tileStone[(int) tile46.type] ? (int) tile46.type : 1; if (index25 >= 0 && !Main.tileSolid[index25]) index25 = -1; if (index26 >= 0 && !Main.tileSolid[index26]) index26 = -1; rectangle.X = index26 != index1 || index25 != index1 ? (index26 != index1 || index25 == index1 ? (index26 == index1 || index25 != index1 ? 54 : 0) : 36) : 18; centerTile.frameX = (short) rectangle.X; return; default: if (index1 >= 0 && TileID.Sets.Platforms[index1]) { Tile tile47 = Main.tile[i - 1, j]; if (tile47 == null) return; Tile tile48 = Main.tile[i + 1, j]; if (tile48 == null) return; Tile tile49 = Main.tile[i - 1, j + 1]; if (tile49 == null) return; Tile tile50 = Main.tile[i + 1, j + 1]; if (tile50 == null) return; Tile tile51 = Main.tile[i - 1, j - 1]; if (tile51 == null) return; Tile tile52 = Main.tile[i + 1, j - 1]; if (tile52 == null) return; int index27 = -1; int index28 = -1; if (tile47 != null && tile47.active()) index28 = !Main.tileStone[(int) tile47.type] ? (!TileID.Sets.Platforms[(int) tile47.type] ? (int) tile47.type : index1) : 1; if (tile48 != null && tile48.active()) index27 = !Main.tileStone[(int) tile48.type] ? (!TileID.Sets.Platforms[(int) tile48.type] ? (int) tile48.type : index1) : 1; if (index27 >= 0 && !Main.tileSolid[index27]) index27 = -1; if (index28 >= 0 && !Main.tileSolid[index28]) index28 = -1; if (index28 == index1 && tile47.halfBrick() != centerTile.halfBrick()) index28 = -1; if (index27 == index1 && tile48.halfBrick() != centerTile.halfBrick()) index27 = -1; if (index28 != -1 && index28 != index1 && centerTile.halfBrick()) index28 = -1; if (index27 != -1 && index27 != index1 && centerTile.halfBrick()) index27 = -1; if (index28 == -1 && tile51.active() && (int) tile51.type == index1 && tile51.slope() == (byte) 1) index28 = index1; if (index27 == -1 && tile52.active() && (int) tile52.type == index1 && tile52.slope() == (byte) 2) index27 = index1; if (index28 == index1 && tile47.slope() == (byte) 2 && index27 != index1) index27 = -1; if (index27 == index1 && tile48.slope() == (byte) 1 && index28 != index1) index28 = -1; rectangle.X = centerTile.slope() != (byte) 1 ? (centerTile.slope() != (byte) 2 ? (index28 != index1 || index27 != index1 ? (index28 != index1 || index27 != -1 ? (index28 != -1 || index27 != index1 ? (index28 == index1 || index27 != index1 ? (index28 != index1 || index27 == index1 ? (index28 == index1 || index28 == -1 || index27 != -1 ? (index28 != -1 || index27 == index1 || index27 == -1 ? 90 : 126) : 108) : 72) : 54) : (tile48.slope() != (byte) 1 ? 36 : 288)) : (tile47.slope() != (byte) 2 ? 18 : 270)) : (tile47.slope() != (byte) 2 || tile48.slope() != (byte) 1 ? (tile47.slope() != (byte) 2 ? (tile48.slope() != (byte) 1 ? 0 : 234) : 216) : 252)) : (!TileID.Sets.Platforms[(int) tile47.type] || tile47.slope() != (byte) 0 ? (tile49.active() || TileID.Sets.Platforms[(int) tile49.type] && tile49.slope() != (byte) 1 ? (tile48.active() || TileID.Sets.Platforms[(int) tile52.type] && tile52.slope() == (byte) 2 ? 144 : 378) : (tile48.active() || TileID.Sets.Platforms[(int) tile52.type] && tile52.slope() == (byte) 2 ? 342 : 414)) : 450)) : (!TileID.Sets.Platforms[(int) tile48.type] || tile48.slope() != (byte) 0 ? (tile50.active() || TileID.Sets.Platforms[(int) tile50.type] && tile50.slope() != (byte) 2 ? (tile47.active() || TileID.Sets.Platforms[(int) tile51.type] && tile51.slope() == (byte) 1 ? 180 : 396) : (tile47.active() || TileID.Sets.Platforms[(int) tile51.type] && tile51.slope() == (byte) 1 ? 360 : 432)) : 468); centerTile.frameX = (short) rectangle.X; return; } if (index1 == 233 || index1 == 236 || index1 == 238) { WorldGen.CheckJunglePlant(i, j, index1); return; } if (index1 == 240 || index1 == 440) { WorldGen.Check3x3Wall(i, j); return; } switch (index1) { case 241: WorldGen.Check4x3Wall(i, j); return; case 242: WorldGen.Check6x4Wall(i, j); return; case 245: WorldGen.Check2x3Wall(i, j); return; case 246: WorldGen.Check3x2Wall(i, j); return; default: if (index1 == 464 || index1 == 466) { WorldGen.Check5x4(i, j, index1); return; } if (index1 == 334) { WorldGen.CheckWeaponsRack(i, j); return; } if (index1 == 34 || index1 == 454) { WorldGen.CheckChand(i, j, index1); return; } if (index1 == 106 || index1 == 212 || index1 == 219 || index1 == 220 || index1 == 228 || index1 == 231 || index1 == 243 || index1 == 247 || index1 == 283 || index1 >= 300 && index1 <= 308 || index1 == 354 || index1 == 406 || index1 == 412 || index1 == 355 || index1 == 452 || index1 == 455) { WorldGen.Check3x3(i, j, (int) (ushort) index1); return; } if (index1 == 15 || index1 == 20 || index1 == 216 || index1 == 338 || index1 == 390) { WorldGen.Check1x2(i, j, (ushort) index1); return; } if (index1 == 14 || index1 == 469 || index1 == 17 || index1 == 26 || index1 == 77 || index1 == 86 || index1 == 87 || index1 == 377 || index1 == 88 || index1 == 89 || index1 == 114 || index1 == 133 || index1 == 186 || index1 == 187 || index1 == 215 || index1 == 217 || index1 == 218 || index1 == 237 || index1 == 244 || index1 == 285 || index1 == 286 || index1 == 298 || index1 == 299 || index1 == 310 || index1 == 339 || index1 >= 361 && index1 <= 364 || index1 >= 391 && index1 <= 394 || index1 == 405) { WorldGen.Check3x2(i, j, (int) (ushort) index1); return; } if (index1 == 135 || index1 == 144 || index1 == 141 || index1 == 210 || index1 == 239 || index1 == 36 || index1 == 428) { WorldGen.Check1x1(i, j, index1); return; } if (index1 == 419 || index1 == 420 || index1 == 423 || index1 == 424 || index1 == 429 || index1 == 445) { WorldGen.CheckLogicTiles(i, j, index1); return; } if (index1 == 16 || index1 == 18 || index1 == 29 || index1 == 103 || index1 == 134 || index1 == 462) { WorldGen.Check2x1(i, j, (ushort) index1); return; } if (index1 == 13 || index1 == 33 || index1 == 50 || index1 == 78 || index1 == 174 || index1 == 372) { WorldGen.CheckOnTable1x1(i, j, (int) (byte) index1); return; } if (TileID.Sets.BasicChest[index1]) { WorldGen.CheckChest(i, j, index1); return; } switch (index1) { case 27: WorldGen.CheckSunflower(i, j); return; case 28: WorldGen.CheckPot(i, j); return; case 128: WorldGen.CheckMan(i, j); return; case 171: WorldGen.CheckXmasTree(i, j); return; case 254: WorldGen.Check2x2Style(i, j, index1); return; case 269: WorldGen.CheckWoman(i, j); return; default: if (!TileID.Sets.BasicChestFake[index1] && index1 != 457) { if (index1 == 335 || index1 == 411) { WorldGen.Check2x2(i, j, index1); return; } if (index1 == 132 || index1 == 138 || index1 == 142 || index1 == 143 || index1 >= 288 && index1 <= 295 || index1 >= 316 && index1 <= 318 || index1 == 172 || index1 == 360) { WorldGen.Check2x2(i, j, index1); return; } if (index1 == 376 || index1 == 443 || index1 == 444) { WorldGen.CheckSuper(i, j, index1); return; } if (index1 == 91) { WorldGen.CheckBanner(i, j, (byte) index1); return; } if (index1 == 139 || index1 == 35) { WorldGen.CheckMB(i, j, (int) (byte) index1); return; } if (index1 == 386 || index1 == 387) { WorldGen.CheckTrapDoor(i, j, index1); return; } if (index1 == 389 || index1 == 388) { WorldGen.CheckTallGate(i, j, index1); return; } if (index1 == 92 || index1 == 93 || index1 == 453) { WorldGen.Check1xX(i, j, (short) index1); return; } if (index1 == 104 || index1 == 105 || index1 == 207 || index1 == 320 || index1 == 337 || index1 == 349 || index1 == 356 || index1 == 378 || index1 == 410 || index1 == 456 || index1 == 465) { WorldGen.Check2xX(i, j, (ushort) index1); return; } if (index1 == 101 || index1 == 102 || index1 == 463) { WorldGen.Check3x4(i, j, index1); return; } if (index1 == 42 || index1 == 270 || index1 == 271) { WorldGen.Check1x2Top(i, j, (ushort) index1); return; } if (index1 == 55 || index1 == 85 || index1 == 395 || index1 == 425) { WorldGen.CheckSign(i, j, (ushort) index1); return; } if (index1 == 209) { WorldGen.CheckCannon(i, j, index1); return; } if (index1 == 79 || index1 == 90) { WorldGen.Check4x2(i, j, index1); return; } if (index1 == 94 || index1 == 95 || index1 == 97 || index1 == 319 || index1 == 98 || index1 == 99 || index1 == 100 || index1 == 125 || index1 == 126 || index1 == 173 || index1 == 282 || index1 == 287) { WorldGen.Check2x2(i, j, index1); return; } switch (index1) { case 81: Tile tile53 = Main.tile[i, j - 1]; Tile tile54 = Main.tile[i, j + 1]; Tile tile55 = Main.tile[i - 1, j]; Tile tile56 = Main.tile[i + 1, j]; int index29 = -1; int num19 = -1; if (tile53 != null && tile53.active()) num19 = (int) tile53.type; if (tile54 != null && tile54.active()) index29 = (int) tile54.type; if (num19 != -1) { WorldGen.KillTile(i, j); return; } if (index29 >= 0 && Main.tileSolid[index29] && !tile54.halfBrick() && !tile54.topSlope()) return; WorldGen.KillTile(i, j); return; case 96: WorldGen.Check2x2Style(i, j, index1); return; default: if (Main.tileAlch[index1]) { WorldGen.CheckAlch(i, j); return; } switch (index1) { case 5: WorldGen.CheckTree(i, j); return; case 72: Tile tile57 = Main.tile[i, j - 1]; Tile tile58 = Main.tile[i, j + 1]; int num20 = -1; int num21 = -1; if (tile57 != null && tile57.active()) num21 = (int) tile57.type; if (tile58 != null && tile58.active()) num20 = (int) tile58.type; if (num20 != index1 && num20 != 70) { WorldGen.KillTile(i, j); return; } if (num21 == index1 || centerTile.frameX != (short) 0) return; centerTile.frameNumber((byte) WorldGen.genRand.Next(3)); if (centerTile.frameNumber() == (byte) 0) { centerTile.frameX = (short) 18; centerTile.frameY = (short) 0; } if (centerTile.frameNumber() == (byte) 1) { centerTile.frameX = (short) 18; centerTile.frameY = (short) 18; } if (centerTile.frameNumber() != (byte) 2) return; centerTile.frameX = (short) 18; centerTile.frameY = (short) 36; return; case 323: WorldGen.CheckPalmTree(i, j); return; default: return; } } } else goto case 254; } } } } } } } else { if (index1 >= (int) byte.MaxValue && index1 <= 268 || index1 == 385 || index1 >= 446 && index1 <= 448) { Framing.SelfFrame8Way(i, j, centerTile, resetFrame); return; } Tile tile59 = Main.tile[i, j - 1]; Tile tile60 = Main.tile[i, j + 1]; Tile tile61 = Main.tile[i - 1, j]; Tile tile62 = Main.tile[i + 1, j]; Tile tile63 = Main.tile[i - 1, j + 1]; Tile tile64 = Main.tile[i + 1, j + 1]; Tile tile65 = Main.tile[i - 1, j - 1]; Tile tile66 = Main.tile[i + 1, j - 1]; int upLeft = -1; int up = -1; int upRight = -1; int left = -1; int right = -1; int downLeft = -1; int down = -1; int downRight = -1; if (tile61 != null && tile61.active()) { left = !Main.tileStone[(int) tile61.type] ? (int) tile61.type : 1; if (tile61.slope() == (byte) 1 || tile61.slope() == (byte) 3) left = -1; } if (tile62 != null && tile62.active()) { right = !Main.tileStone[(int) tile62.type] ? (int) tile62.type : 1; if (tile62.slope() == (byte) 2 || tile62.slope() == (byte) 4) right = -1; } if (tile59 != null && tile59.active()) { up = !Main.tileStone[(int) tile59.type] ? (int) tile59.type : 1; if (tile59.slope() == (byte) 3 || tile59.slope() == (byte) 4) up = -1; } if (tile60 != null && tile60.active()) { down = !Main.tileStone[(int) tile60.type] ? (int) tile60.type : 1; if (tile60.slope() == (byte) 1 || tile60.slope() == (byte) 2) down = -1; } if (tile65 != null && tile65.active()) upLeft = !Main.tileStone[(int) tile65.type] ? (int) tile65.type : 1; if (tile66 != null && tile66.active()) upRight = !Main.tileStone[(int) tile66.type] ? (int) tile66.type : 1; if (tile63 != null && tile63.active()) downLeft = !Main.tileStone[(int) tile63.type] ? (int) tile63.type : 1; if (tile64 != null && tile64.active()) downRight = !Main.tileStone[(int) tile64.type] ? (int) tile64.type : 1; if (centerTile.slope() == (byte) 2) { up = -1; left = -1; } if (centerTile.slope() == (byte) 1) { up = -1; right = -1; } if (centerTile.slope() == (byte) 4) { down = -1; left = -1; } if (centerTile.slope() == (byte) 3) { down = -1; right = -1; } switch (index1) { case 147: WorldGen.TileMergeAttempt(index1, Main.tileBrick, TileID.Sets.Ices, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 161: case 163: case 164: case 200: WorldGen.TileMergeAttempt(index1, Main.tileBrick, TileID.Sets.Snow, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 162: WorldGen.TileMergeAttempt(index1, Main.tileBrick, TileID.Sets.IcesSnow, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; default: if (Main.tileBrick[index1]) { if (index1 == 60 || index1 == 70) { WorldGen.TileMergeAttempt(index1, Main.tileBrick, TileID.Sets.Mud, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; } WorldGen.TileMergeAttempt(index1, Main.tileBrick, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; } if (Main.tilePile[index1]) { WorldGen.TileMergeAttempt(index1, Main.tilePile, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; } break; } if ((index1 == 1 || Main.tileMoss[index1] || index1 == 117 || index1 == 25 || index1 == 203) && down == 165) { if (tile60.frameY == (short) 72) down = index1; else if (tile60.frameY == (short) 0) down = index1; } if ((index1 == 1 || Main.tileMoss[index1] || index1 == 117 || index1 == 25 || index1 == 203) && up == 165) { if (tile59.frameY == (short) 90) up = index1; else if (tile59.frameY == (short) 54) up = index1; } if (index1 == 225) { if (down == 165) down = index1; if (up == 165) up = index1; } if ((index1 == 200 || index1 == 161 || index1 == 163 || index1 == 164) && down == 165) down = index1; if ((centerTile.slope() == (byte) 1 || centerTile.slope() == (byte) 2) && down > -1 && !TileID.Sets.Platforms[down]) down = index1; if (up > -1 && (tile59.slope() == (byte) 1 || tile59.slope() == (byte) 2) && !TileID.Sets.Platforms[up]) up = index1; if ((centerTile.slope() == (byte) 3 || centerTile.slope() == (byte) 4) && up > -1 && !TileID.Sets.Platforms[up]) up = index1; if (down > -1 && (tile60.slope() == (byte) 3 || tile60.slope() == (byte) 4) && !TileID.Sets.Platforms[down]) down = index1; if (index1 == 124) { if (up > -1 && Main.tileSolid[up]) up = index1; if (down > -1 && Main.tileSolid[down]) down = index1; } if (up > -1 && tile59.halfBrick() && !TileID.Sets.Platforms[up]) up = index1; if (left > -1 && tile61.halfBrick()) { if (centerTile.halfBrick()) left = index1; else if ((int) tile61.type != index1) left = -1; } if (right > -1 && tile62.halfBrick()) { if (centerTile.halfBrick()) right = index1; else if ((int) tile62.type != index1) right = -1; } if (centerTile.halfBrick()) { if (left != index1) left = -1; if (right != index1) right = -1; up = -1; } if (tile60 != null && tile60.halfBrick()) down = -1; if (!Main.tileSolid[index1]) { if (index1 == 49) { WorldGen.CheckOnTable1x1(i, j, (int) (byte) index1); return; } if (index1 == 80) { WorldGen.CactusFrame(i, j); return; } } WorldGen.mergeUp = false; WorldGen.mergeDown = false; WorldGen.mergeLeft = false; WorldGen.mergeRight = false; int num22; if (resetFrame) { num22 = WorldGen.genRand.Next(0, 3); centerTile.frameNumber((byte) num22); } else num22 = (int) centerTile.frameNumber(); if (Main.tileLargeFrames[index1] == (byte) 1) num22 = new int[4, 3] { { 2, 4, 2 }, { 1, 3, 1 }, { 2, 2, 4 }, { 1, 1, 3 } }[j % 4, i % 3] - 1; WorldGen.TileMergeAttempt(index1, Main.tileBlendAll, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); if (Main.tileBlendAll[index1]) WorldGen.TileMergeAttempt(index1, Main.tileSolid, Main.tileSolidTop, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); switch (index1) { case 0: if (up > -1 && Main.tileMergeDirt[up]) { WorldGen.TileFrame(i, j - 1); if (WorldGen.mergeDown) up = index1; } else if (up == 147) { WorldGen.TileFrame(i, j - 1); if (WorldGen.mergeDown) up = index1; } if (down > -1 && Main.tileMergeDirt[down]) { WorldGen.TileFrame(i, j + 1); if (WorldGen.mergeUp) down = index1; } else if (down == 147) { WorldGen.TileFrame(i, j + 1); if (WorldGen.mergeUp) down = index1; } if (left > -1 && Main.tileMergeDirt[left]) { WorldGen.TileFrame(i - 1, j); if (WorldGen.mergeRight) left = index1; } else if (left == 147) { WorldGen.TileFrame(i - 1, j); if (WorldGen.mergeRight) left = index1; } if (right > -1 && Main.tileMergeDirt[right]) { WorldGen.TileFrame(i + 1, j); if (WorldGen.mergeLeft) right = index1; } else if (right == 147) { WorldGen.TileFrame(i + 1, j); if (WorldGen.mergeLeft) right = index1; } if (up == 2 || up == 23 || up == 109 || up == 199) up = index1; if (down == 2 || down == 23 || down == 109 || down == 199) down = index1; if (left == 2 || left == 23 || left == 109 || left == 199) left = index1; if (right == 2 || right == 23 || right == 109 || right == 199) right = index1; if (upLeft > -1 && Main.tileMergeDirt[upLeft]) upLeft = index1; else if (upLeft == 2 || upLeft == 23 || upLeft == 109 || upLeft == 199) upLeft = index1; if (upRight > -1 && Main.tileMergeDirt[upRight]) upRight = index1; else if (upRight == 2 || upRight == 23 || upRight == 109 || upRight == 199) upRight = index1; if (downLeft > -1 && Main.tileMergeDirt[downLeft]) downLeft = index1; else if (downLeft == 2 || downLeft == 23 || downLeft == 109 || downLeft == 199) downLeft = index1; if (downRight > -1 && Main.tileMergeDirt[downRight]) downRight = index1; else if (downRight == 2 || downRight == 23 || downRight == 109 || downRight == 199) downRight = index1; WorldGen.TileMergeAttempt(-2, 59, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); WorldGen.TileMergeAttempt(index1, 191, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 53: WorldGen.TileMergeAttemptFrametest(i, j, index1, 397, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); WorldGen.TileMergeAttemptFrametest(i, j, index1, 396, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 112: WorldGen.TileMergeAttemptFrametest(i, j, index1, 398, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); WorldGen.TileMergeAttemptFrametest(i, j, index1, 400, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 116: WorldGen.TileMergeAttemptFrametest(i, j, index1, 402, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); WorldGen.TileMergeAttemptFrametest(i, j, index1, 403, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 213: if (up > -1 && Main.tileSolid[up] && !Main.tileSolidTop[up]) up = index1; if (down > -1 && Main.tileSolid[down]) down = index1; if (up != index1) { if (left > -1 && Main.tileSolid[left]) left = index1; if (right > -1 && Main.tileSolid[right]) { right = index1; break; } break; } break; case 234: WorldGen.TileMergeAttemptFrametest(i, j, index1, 399, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); WorldGen.TileMergeAttemptFrametest(i, j, index1, 401, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; } if (Main.tileMergeDirt[index1]) { WorldGen.TileMergeAttempt(-2, 0, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); if (index1 == 1) { if ((double) j > Main.rockLayer) WorldGen.TileMergeAttemptFrametest(i, j, index1, 59, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); WorldGen.TileMergeAttemptFrametest(i, j, index1, 57, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); } } else { switch (index1) { case 32: if (down == 23) { down = index1; break; } break; case 51: WorldGen.TileMergeAttempt(index1, TileID.Sets.AllTiles, Main.tileNoAttach, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 57: WorldGen.TileMergeAttempt(-2, 1, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); WorldGen.TileMergeAttemptFrametest(i, j, index1, TileID.Sets.HellSpecial, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 58: case 75: case 76: WorldGen.TileMergeAttempt(-2, 57, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 59: if ((double) j > Main.rockLayer) WorldGen.TileMergeAttempt(-2, 1, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); WorldGen.TileMergeAttempt(index1, TileID.Sets.GrassSpecial, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); WorldGen.TileMergeAttemptFrametest(i, j, index1, TileID.Sets.JungleSpecial, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); if ((double) j < Main.rockLayer) { WorldGen.TileMergeAttemptFrametest(i, j, index1, 0, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; } WorldGen.TileMergeAttempt(index1, 0, ref up, ref down, ref left, ref right); break; case 60: WorldGen.TileMergeAttempt(59, 211, ref up, ref down, ref left, ref right); break; case 69: if (down == 60) { down = index1; break; } break; case 147: WorldGen.TileMergeAttemptFrametest(i, j, index1, TileID.Sets.IcesSlush, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 161: case 163: case 164: case 200: case 224: WorldGen.TileMergeAttempt(-2, 147, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 162: WorldGen.TileMergeAttempt(-2, TileID.Sets.IcesSnow, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 189: WorldGen.TileMergeAttemptFrametest(i, j, index1, 196, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 191: WorldGen.TileMergeAttempt(-2, 192, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); WorldGen.TileMergeAttempt(index1, 0, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 192: WorldGen.TileMergeAttemptFrametest(i, j, index1, 191, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 196: WorldGen.TileMergeAttempt(-2, 189, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 211: WorldGen.TileMergeAttempt(59, 60, ref up, ref down, ref left, ref right); WorldGen.TileMergeAttempt(-2, 59, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 225: case 226: WorldGen.TileMergeAttempt(-2, 59, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 352: if (down == 199) { down = index1; break; } break; case 383: WorldGen.TileMergeAttempt(-2, 384, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); WorldGen.TileMergeAttempt(index1, 59, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 384: WorldGen.TileMergeAttemptFrametest(i, j, index1, 383, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 396: WorldGen.TileMergeAttempt(-2, 397, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); WorldGen.TileMergeAttempt(-2, 53, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); WorldGen.TileMergeAttemptFrametest(i, j, index1, 404, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 397: WorldGen.TileMergeAttempt(-2, 53, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); WorldGen.TileMergeAttemptFrametest(i, j, index1, 396, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 398: WorldGen.TileMergeAttempt(-2, 112, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); WorldGen.TileMergeAttemptFrametest(i, j, index1, 400, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 399: WorldGen.TileMergeAttempt(-2, 234, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); WorldGen.TileMergeAttemptFrametest(i, j, index1, 401, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 400: WorldGen.TileMergeAttempt(-2, 398, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); WorldGen.TileMergeAttempt(-2, 112, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 401: WorldGen.TileMergeAttempt(-2, 399, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); WorldGen.TileMergeAttempt(-2, 234, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 402: WorldGen.TileMergeAttempt(-2, 116, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); WorldGen.TileMergeAttemptFrametest(i, j, index1, 403, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 403: WorldGen.TileMergeAttempt(-2, 402, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); WorldGen.TileMergeAttempt(-2, 116, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 404: WorldGen.TileMergeAttempt(-2, 396, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); WorldGen.TileMergeAttemptFrametest(i, j, index1, 407, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 407: WorldGen.TileMergeAttempt(-2, 404, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; } } if (Main.tileStone[index1] || index1 == 1) WorldGen.TileMergeAttempt(index1, Main.tileMoss, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); bool flag8 = false; if (up == -2 && (int) centerTile.color() != (int) tile59.color()) { up = index1; WorldGen.mergeUp = true; } if (down == -2 && (int) centerTile.color() != (int) tile60.color()) { down = index1; WorldGen.mergeDown = true; } if (left == -2 && (int) centerTile.color() != (int) tile61.color()) { left = index1; WorldGen.mergeLeft = true; } if (right == -2 && (int) centerTile.color() != (int) tile62.color()) { right = index1; WorldGen.mergeRight = true; } if (index1 == 2 || index1 == 23 || index1 == 60 || index1 == 70 || index1 == 109 || index1 == 199 || Main.tileMoss[index1] || TileID.Sets.NeedsGrassFraming[index1]) { flag8 = true; WorldGen.TileMergeAttemptWeird(index1, -1, Main.tileSolid, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); int num23 = TileID.Sets.NeedsGrassFramingDirt[index1]; if (index1 == 60 || index1 == 70) num23 = 59; else if (Main.tileMoss[index1]) { num23 = 1; } else { switch (index1) { case 2: WorldGen.TileMergeAttempt(num23, 23, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; case 23: WorldGen.TileMergeAttempt(num23, 2, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); break; } } if (up != index1 && up != num23 && (down == index1 || down == num23)) { if (left == num23 && right == index1) { switch (num22) { 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 (left == index1 && right == num23) { switch (num22) { 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 (down != index1 && down != num23 && (up == index1 || up == num23)) { if (left == num23 && right == index1) { switch (num22) { 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 (left == index1 && right == num23) { switch (num22) { 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 (left != index1 && left != num23 && (right == index1 || right == num23)) { if (up == num23 && down == index1) { switch (num22) { 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 (down == index1 && up == num23) { switch (num22) { 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 (right != index1 && right != num23 && (left == index1 || left == num23)) { if (up == num23 && down == index1) { switch (num22) { 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 (down == index1 && right == up) { switch (num22) { 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 (up == index1 && down == index1 && left == index1 && right == index1) { if (upLeft != index1 && upRight != index1 && downLeft != index1 && downRight != index1) { if (downRight == num23) { switch (num22) { 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 (upRight == num23) { switch (num22) { 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 (downLeft == num23) { switch (num22) { 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 (upLeft == num23) { switch (num22) { 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 (num22) { 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 (upLeft != index1 && downRight != index1) { switch (num22) { 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 (upRight != index1 && downLeft != index1) { switch (num22) { 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 (upLeft != index1 && upRight == index1 && downLeft == index1 && downRight == index1) { switch (num22) { 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 (upLeft == index1 && upRight != index1 && downLeft == index1 && downRight == index1) { switch (num22) { 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 (upLeft == index1 && upRight == index1 && downLeft != index1 && downRight == index1) { switch (num22) { 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 (upLeft == index1 && upRight == index1 && downLeft == index1 && downRight != index1) { switch (num22) { 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 (up == index1 && down == num23 && left == index1 && right == index1 && upLeft == -1 && upRight == -1) { switch (num22) { 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 (up == num23 && down == index1 && left == index1 && right == index1 && downLeft == -1 && downRight == -1) { switch (num22) { 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 (up == index1 && down == index1 && left == num23 && right == index1 && upRight == -1 && downRight == -1) { switch (num22) { 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 (up == index1 && down == index1 && left == index1 && right == num23 && upLeft == -1 && downLeft == -1) { switch (num22) { 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 (up == index1 && down == num23 && left == index1 && right == index1) { if (upRight != -1) { switch (num22) { 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 (upLeft != -1) { switch (num22) { 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 (up == num23 && down == index1 && left == index1 && right == index1) { if (downRight != -1) { switch (num22) { 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 (downLeft != -1) { switch (num22) { 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 (up == index1 && down == index1 && left == index1 && right == num23) { if (upLeft != -1) { switch (num22) { 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 (downLeft != -1) { switch (num22) { 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 (up == index1 && down == index1 && left == num23 && right == index1) { if (upRight != -1) { switch (num22) { 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 (downRight != -1) { switch (num22) { 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 (up == num23 && down == index1 && left == index1 && right == index1 || up == index1 && down == num23 && left == index1 && right == index1 || up == index1 && down == index1 && left == num23 && right == index1 || up == index1 && down == index1 && left == index1 && right == num23) { switch (num22) { 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 ((up == index1 || up == num23) && (down == index1 || down == num23) && (left == index1 || left == num23) && (right == index1 || right == num23)) { if (upLeft != index1 && upLeft != num23 && (upRight == index1 || upRight == num23) && (downLeft == index1 || downLeft == num23) && (downRight == index1 || downRight == num23)) { switch (num22) { 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 (upRight != index1 && upRight != num23 && (upLeft == index1 || upLeft == num23) && (downLeft == index1 || downLeft == num23) && (downRight == index1 || downRight == num23)) { switch (num22) { 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 (downLeft != index1 && downLeft != num23 && (upLeft == index1 || upLeft == num23) && (upRight == index1 || upRight == num23) && (downRight == index1 || downRight == num23)) { switch (num22) { 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 (downRight != index1 && downRight != num23 && (upLeft == index1 || upLeft == num23) && (downLeft == index1 || downLeft == num23) && (upRight == index1 || upRight == num23)) { switch (num22) { 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 (up != num23 && up != index1 && down == index1 && left != num23 && left != index1 && right == index1 && downRight != num23 && downRight != index1) { switch (num22) { 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 (up != num23 && up != index1 && down == index1 && left == index1 && right != num23 && right != index1 && downLeft != num23 && downLeft != index1) { switch (num22) { 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 (down != num23 && down != index1 && up == index1 && left != num23 && left != index1 && right == index1 && upRight != num23 && upRight != index1) { switch (num22) { 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 (down != num23 && down != index1 && up == index1 && left == index1 && right != num23 && right != index1 && upLeft != num23 && upLeft != index1) { switch (num22) { 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 (up != index1 && up != num23 && down == index1 && left == index1 && right == index1 && downLeft != index1 && downLeft != num23 && downRight != index1 && downRight != num23) { switch (num22) { 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 (down != index1 && down != num23 && up == index1 && left == index1 && right == index1 && upLeft != index1 && upLeft != num23 && upRight != index1 && upRight != num23) { switch (num22) { 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 (left != index1 && left != num23 && down == index1 && up == index1 && right == index1 && upRight != index1 && upRight != num23 && downRight != index1 && downRight != num23) { switch (num22) { 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 (right != index1 && right != num23 && down == index1 && up == index1 && left == index1 && upLeft != index1 && upLeft != num23 && downLeft != index1 && downLeft != num23) { switch (num22) { 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 (up != num23 && up != index1 && (down == num23 || down == index1) && left == num23 && right == num23) { switch (num22) { 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 (down != num23 && down != index1 && (up == num23 || up == index1) && left == num23 && right == num23) { switch (num22) { 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 (left != num23 && left != index1 && (right == num23 || right == index1) && up == num23 && down == num23) { switch (num22) { 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 (right != num23 && right != index1 && (left == num23 || left == index1) && up == num23 && down == num23) { switch (num22) { 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 (up == index1 && down == num23 && left == num23 && right == num23) { switch (num22) { 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 (up == num23 && down == index1 && left == num23 && right == num23) { switch (num22) { 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 (up == num23 && down == num23 && left == index1 && right == num23) { switch (num22) { 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 (up == num23 && down == num23 && left == num23 && right == index1) { switch (num22) { 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 (up != index1 && up != num23 && down == index1 && left == index1 && right == index1) { if ((downLeft == num23 || downLeft == index1) && downRight != num23 && downRight != index1) { switch (num22) { 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 ((downRight == num23 || downRight == index1) && downLeft != num23 && downLeft != index1) { switch (num22) { 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 (down != index1 && down != num23 && up == index1 && left == index1 && right == index1) { if ((upLeft == num23 || upLeft == index1) && upRight != num23 && upRight != index1) { switch (num22) { 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 ((upRight == num23 || upRight == index1) && upLeft != num23 && upLeft != index1) { switch (num22) { 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 (left != index1 && left != num23 && up == index1 && down == index1 && right == index1) { if ((upRight == num23 || upRight == index1) && downRight != num23 && downRight != index1) { switch (num22) { 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 ((downRight == num23 || downRight == index1) && upRight != num23 && upRight != index1) { switch (num22) { 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 (right != index1 && right != num23 && up == index1 && down == index1 && left == index1) { if ((upLeft == num23 || upLeft == index1) && downLeft != num23 && downLeft != index1) { switch (num22) { 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 ((downLeft == num23 || downLeft == index1) && upLeft != num23 && upLeft != index1) { switch (num22) { 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 ((up == index1 || up == num23) && (down == index1 || down == num23) && (left == index1 || left == num23) && (right == index1 || right == num23) && upLeft != -1 && upRight != -1 && downLeft != -1 && downRight != -1) { if ((i + j) % 2 == 1) { switch (num22) { 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; } } else { switch (num22) { 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; } } } WorldGen.TileMergeAttempt(-2, num23, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); } WorldGen.TileMergeAttempt(index1, Main.tileMerge[index1], ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); if (rectangle.X == -1 && rectangle.Y == -1 && (Main.tileMergeDirt[index1] || index1 > -1 && TileID.Sets.ChecksForMerge[index1])) { if (!flag8) { flag8 = true; WorldGen.TileMergeAttemptWeird(index1, -1, Main.tileSolid, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); } if (up > -1 && up != index1) up = -1; if (down > -1 && down != index1) down = -1; if (left > -1 && left != index1) left = -1; if (right > -1 && right != index1) right = -1; if (up != -1 && down != -1 && left != -1 && right != -1) { if (up == -2 && down == index1 && left == index1 && right == index1) { switch (num22) { 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 (up == index1 && down == -2 && left == index1 && right == index1) { switch (num22) { 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 (up == index1 && down == index1 && left == -2 && right == index1) { switch (num22) { 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 (up == index1 && down == index1 && left == index1 && right == -2) { switch (num22) { 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 (up == -2 && down == index1 && left == -2 && right == index1) { switch (num22) { 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 (up == -2 && down == index1 && left == index1 && right == -2) { switch (num22) { 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 (up == index1 && down == -2 && left == -2 && right == index1) { switch (num22) { 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 (up == index1 && down == -2 && left == index1 && right == -2) { switch (num22) { 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 (up == index1 && down == index1 && left == -2 && right == -2) { switch (num22) { 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 (up == -2 && down == -2 && left == index1 && right == index1) { switch (num22) { 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 (up == -2 && down == index1 && left == -2 && right == -2) { switch (num22) { 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 (up == index1 && down == -2 && left == -2 && right == -2) { switch (num22) { 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 (up == -2 && down == -2 && left == index1 && right == -2) { switch (num22) { 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 (up == -2 && down == -2 && left == -2 && right == index1) { switch (num22) { 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 (up == -2 && down == -2 && left == -2 && right == -2) { switch (num22) { 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 (up == index1 && down == index1 && left == index1 && right == index1) { if (upLeft == -2) { switch (num22) { 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 (upRight == -2) { switch (num22) { 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 (downLeft == -2) { switch (num22) { 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 (downRight == -2) { switch (num22) { 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 (index1 != 2 && index1 != 23 && index1 != 60 && index1 != 70 && index1 != 109 && index1 != 199) { if (up == -1 && down == -2 && left == index1 && right == index1) { switch (num22) { 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 (up == -2 && down == -1 && left == index1 && right == index1) { switch (num22) { 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 (up == index1 && down == index1 && left == -1 && right == -2) { switch (num22) { 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 (up == index1 && down == index1 && left == -2 && right == -1) { switch (num22) { 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 (up != -1 && down != -1 && left == -1 && right == index1) { if (up == -2 && down == index1) { switch (num22) { 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 (down == -2 && up == index1) { switch (num22) { 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 (up != -1 && down != -1 && left == index1 && right == -1) { if (up == -2 && down == index1) { switch (num22) { 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 (down == -2 && up == index1) { switch (num22) { 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 (up == -1 && down == index1 && left != -1 && right != -1) { if (left == -2 && right == index1) { switch (num22) { 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 (right == -2 && left == index1) { switch (num22) { 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 (up == index1 && down == -1 && left != -1 && right != -1) { if (left == -2 && right == index1) { switch (num22) { 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 (right == -2 && left == index1) { switch (num22) { 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 (up != -1 && down != -1 && left == -1 && right == -1) { if (up == -2 && down == -2) { switch (num22) { 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 (up == -2) { switch (num22) { 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 (down == -2) { switch (num22) { 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 (up == -1 && down == -1 && left != -1 && right != -1) { if (left == -2 && right == -2) { switch (num22) { 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 (left == -2) { switch (num22) { 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 (right == -2) { switch (num22) { 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 (up == -2 && down == -1 && left == -1 && right == -1) { switch (num22) { 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 (up == -1 && down == -2 && left == -1 && right == -1) { switch (num22) { 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 (up == -1 && down == -1 && left == -2 && right == -1) { switch (num22) { 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 (up == -1 && down == -1 && left == -1 && right == -2) { switch (num22) { 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; } } } int num24 = centerTile.blockType(); if (TileID.Sets.HasSlopeFrames[index1]) { if (num24 == 0) { bool flag9 = index1 == up && tile59.topSlope(); bool flag10 = index1 == left && tile61.leftSlope(); bool flag11 = index1 == right && tile62.rightSlope(); bool flag12 = index1 == down && tile60.bottomSlope(); int num25 = 0; int num26 = 0; if (flag9.ToInt() + flag10.ToInt() + flag11.ToInt() + flag12.ToInt() > 2) { int num27 = (tile59.slope() == (byte) 1).ToInt() + (tile62.slope() == (byte) 1).ToInt() + (tile60.slope() == (byte) 4).ToInt() + (tile61.slope() == (byte) 4).ToInt(); int num28 = (tile59.slope() == (byte) 2).ToInt() + (tile62.slope() == (byte) 3).ToInt() + (tile60.slope() == (byte) 3).ToInt() + (tile61.slope() == (byte) 2).ToInt(); if (num27 == num28) { num25 = 2; num26 = 4; } else if (num27 > num28) { int num29 = index1 != upLeft ? 0 : (tile65.slope() == (byte) 0 ? 1 : 0); bool flag13 = index1 == downRight && tile64.slope() == (byte) 0; int num30 = flag13 ? 1 : 0; if ((num29 & num30) != 0) num26 = 4; else if (flag13) { num25 = 6; } else { num25 = 7; num26 = 1; } } else { int num31 = index1 != upRight ? 0 : (tile66.slope() == (byte) 0 ? 1 : 0); bool flag14 = index1 == downLeft && tile63.slope() == (byte) 0; int num32 = flag14 ? 1 : 0; if ((num31 & num32) != 0) { num26 = 4; num25 = 1; } else if (flag14) { num25 = 7; } else { num25 = 6; num26 = 1; } } rectangle.X = (18 + num25) * 18; rectangle.Y = num26 * 18; } else { if (flag9 & flag10 && index1 == down && index1 == right) num26 = 2; else if (flag9 & flag11 && index1 == down && index1 == left) { num25 = 1; num26 = 2; } else if (flag11 & flag12 && index1 == up && index1 == left) { num25 = 1; num26 = 3; } else if (flag12 & flag10 && index1 == up && index1 == right) num26 = 3; if (num25 != 0 || num26 != 0) { rectangle.X = (18 + num25) * 18; rectangle.Y = num26 * 18; } } } if (num24 >= 2 && (rectangle.X < 0 || rectangle.Y < 0)) { int num33 = -1; int num34 = -1; int num35 = -1; int num36 = 0; int num37 = 0; switch (num24) { case 2: num33 = left; num34 = down; num35 = downLeft; ++num36; break; case 3: num33 = right; num34 = down; num35 = downRight; break; case 4: num33 = left; num34 = up; num35 = upLeft; ++num36; ++num37; break; case 5: num33 = right; num34 = up; num35 = upRight; ++num37; break; } if (index1 != num33 || index1 != num34 || index1 != num35) { if (index1 == num33 && index1 == num34) num36 += 2; else if (index1 == num33) num36 += 4; else if (index1 == num34) { num36 += 4; num37 += 2; } else { num36 += 2; num37 += 2; } } rectangle.X = (18 + num36) * 18; rectangle.Y = num37 * 18; } } if (rectangle.X < 0 || rectangle.Y < 0) { if (!flag8) WorldGen.TileMergeAttemptWeird(index1, -1, Main.tileSolid, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); if (index1 == 2 || index1 == 23 || index1 == 60 || index1 == 70 || index1 == 109 || index1 == 199 || Main.tileMoss[index1]) WorldGen.TileMergeAttempt(index1, -2, ref up, ref down, ref left, ref right, ref upLeft, ref upRight, ref downLeft, ref downRight); if (up == index1 && down == index1 && left == index1 && right == index1) { if (upLeft != index1 && upRight != index1) { switch (num22) { 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 (downLeft != index1 && downRight != index1) { switch (num22) { 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 (upLeft != index1 && downLeft != index1) { switch (num22) { 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 (upRight != index1 && downRight != index1) { switch (num22) { 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 (num22) { 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 (up != index1 && down == index1 && left == index1 && right == index1) { switch (num22) { 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 (up == index1 && down != index1 && left == index1 && right == index1) { switch (num22) { 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 (up == index1 && down == index1 && left != index1 && right == index1) { switch (num22) { 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 (up == index1 && down == index1 && left == index1 && right != index1) { switch (num22) { 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 (up != index1 && down == index1 && left != index1 && right == index1) { switch (num22) { 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 (up != index1 && down == index1 && left == index1 && right != index1) { switch (num22) { 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 (up == index1 && down != index1 && left != index1 && right == index1) { switch (num22) { 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 (up == index1 && down != index1 && left == index1 && right != index1) { switch (num22) { 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 (up == index1 && down == index1 && left != index1 && right != index1) { switch (num22) { 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 (up != index1 && down != index1 && left == index1 && right == index1) { switch (num22) { 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 (up != index1 && down == index1 && left != index1 && right != index1) { switch (num22) { 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 (up == index1 && down != index1 && left != index1 && right != index1) { switch (num22) { 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 (up != index1 && down != index1 && left != index1 && right == index1) { switch (num22) { 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 (up != index1 && down != index1 && left == index1 && right != index1) { switch (num22) { 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 (up != index1 && down != index1 && left != index1 && right != index1) { switch (num22) { 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 (num22 <= 0) { rectangle.X = 18; rectangle.Y = 18; } else if (num22 == 1) { rectangle.X = 36; rectangle.Y = 18; } if (num22 >= 2) { rectangle.X = 54; rectangle.Y = 18; } } if (Main.tileLargeFrames[index1] == (byte) 1 && num22 == 3) rectangle.Y += 90; centerTile.frameX = (short) rectangle.X; centerTile.frameY = (short) rectangle.Y; if (index1 == 52 || index1 == 62 || index1 == 115 || index1 == 205) { up = tile59 == null ? index1 : (tile59.active() ? (!tile59.bottomSlope() ? (int) tile59.type : -1) : -1); if ((index1 == 52 || index1 == 205) && (up == 109 || up == 115)) { centerTile.type = (ushort) 115; WorldGen.SquareTileFrame(i, j); return; } if ((index1 == 115 || index1 == 205) && (up == 2 || up == 52)) { centerTile.type = (ushort) 52; WorldGen.SquareTileFrame(i, j); return; } if ((index1 == 52 || index1 == 115) && (up == 199 || up == 205)) { centerTile.type = (ushort) 205; WorldGen.SquareTileFrame(i, j); return; } if (up != index1) { bool flag15 = false; if (up == -1) flag15 = true; if (index1 == 52 && up != 2 && up != 192) flag15 = true; if (index1 == 62 && up != 60) flag15 = true; if (index1 == 115 && up != 109) flag15 = true; if (index1 == 205 && up != 199) flag15 = true; if (flag15) WorldGen.KillTile(i, j); } } if (!WorldGen.noTileActions && centerTile.active() && (index1 == 53 || index1 == 112 || index1 == 116 || index1 == 123 || index1 == 234 || index1 == 224 || index1 == 330 || index1 == 331 || index1 == 332 || index1 == 333)) { switch (Main.netMode) { case 0: if (tile60 != null && !tile60.active()) { bool flag16 = true; if (tile59.active() && (TileID.Sets.BasicChest[(int) tile59.type] || TileID.Sets.BasicChestFake[(int) tile59.type] || tile59.type == (ushort) 323 || tile59.type == (ushort) 88)) flag16 = false; if (flag16) { int Damage = 10; int Type; switch (index1) { case 59: Type = 39; break; case 112: Type = 56; break; case 116: Type = 67; break; case 123: Type = 71; break; case 224: Type = 179; break; case 234: Type = 241; break; case 330: Type = 411; Damage = 0; break; case 331: Type = 412; Damage = 0; break; case 332: Type = 413; Damage = 0; break; case 333: Type = 414; Damage = 0; break; default: Type = 31; break; } centerTile.ClearTile(); int index30 = Projectile.NewProjectile((float) (i * 16 + 8), (float) (j * 16 + 8), 0.0f, 0.41f, Type, Damage, 0.0f, Main.myPlayer); Main.projectile[index30].ai[0] = 1f; WorldGen.SquareTileFrame(i, j); break; } break; } break; case 2: if (tile60 != null && !tile60.active()) { bool flag17 = true; if (tile59.active() && (TileID.Sets.BasicChest[(int) tile59.type] || TileID.Sets.BasicChestFake[(int) tile59.type] || tile59.type == (ushort) 323 || tile59.type == (ushort) 88)) flag17 = false; if (flag17) { int Damage = 10; int Type; switch (index1) { case 59: Type = 39; break; case 112: Type = 56; break; case 116: Type = 67; break; case 123: Type = 71; break; case 224: Type = 179; break; case 234: Type = 241; break; case 330: Type = 411; Damage = 0; break; case 331: Type = 412; Damage = 0; break; case 332: Type = 413; Damage = 0; break; case 333: Type = 414; Damage = 0; break; default: Type = 31; break; } centerTile.active(false); bool flag18 = false; for (int index31 = 0; index31 < 1000; ++index31) { if (Main.projectile[index31].active && Main.projectile[index31].owner == Main.myPlayer && Main.projectile[index31].type == Type && Math.Abs(Main.projectile[index31].timeLeft - 3600) < 60 && (double) Main.projectile[index31].Distance(new Vector2((float) (i * 16 + 8), (float) (j * 16 + 10))) < 4.0) { flag18 = true; break; } } if (!flag18) { int index32 = Projectile.NewProjectile((float) (i * 16 + 8), (float) (j * 16 + 8), 0.0f, 2.5f, Type, Damage, 0.0f, Main.myPlayer); Main.projectile[index32].velocity.Y = 0.5f; Main.projectile[index32].position.Y += 2f; Main.projectile[index32].netUpdate = true; } NetMessage.SendTileSquare(-1, i, j, 1); WorldGen.SquareTileFrame(i, j); break; } break; } break; } } if (rectangle.X != frameX1) { if (rectangle.Y != frameY1) { if (frameX1 >= 0) { if (frameY1 >= 0) { ++WorldGen.tileReframeCount; if (WorldGen.tileReframeCount < 55) { int num38 = WorldGen.mergeUp ? 1 : 0; 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 = num38 != 0; WorldGen.mergeDown = mergeDown; WorldGen.mergeLeft = mergeLeft; WorldGen.mergeRight = mergeRight; } --WorldGen.tileReframeCount; } } } } } } } } } } } } catch { } if (i <= 0 || j <= 0) return; WorldGen.UpdateMapTile(i, j, addToList); } public static void TriggerLunarApocalypse() { List intList = new List() { 517, 422, 507, 493 }; int[] numArray = new int[4]; for (int index = 0; index < 4; ++index) { numArray[index] = intList[Main.rand.Next(intList.Count)]; intList.Remove(numArray[index]); } int num1 = Main.maxTilesX / 5; int worldSurface = (int) Main.worldSurface; for (int index1 = 0; index1 < 4; ++index1) { int num2 = num1 * (1 + index1); bool flag = false; for (int index2 = 0; index2 < 30; ++index2) { int num3 = Main.rand.Next(-100, 101); for (int y = worldSurface; y > 100; --y) { if (!Collision.SolidTiles(num2 + num3 - 10, num2 + num3 + 10, y - 20, y + 15) && !WorldGen.PlayerLOS(num2 + num3 - 10, y) && !WorldGen.PlayerLOS(num2 + num3 + 10, y) && !WorldGen.PlayerLOS(num2 + num3 - 10, y - 20) && !WorldGen.PlayerLOS(num2 + num3 + 10, y - 20)) { int number = NPC.NewNPC((num2 + num3) * 16, y * 16, numArray[index1]); if (Main.netMode == 2 && number < 200) NetMessage.SendData(23, number: number); flag = true; break; } } if (flag) break; } if (!flag) NPC.NewNPC(num2 * 16, (worldSurface - 40) * 16, numArray[index1]); } int num4; NPC.TowerActiveStardust = (num4 = 1) != 0; NPC.TowerActiveSolar = num4 != 0; NPC.TowerActiveNebula = num4 != 0; NPC.TowerActiveVortex = num4 != 0; NPC.LunarApocalypseIsUp = true; int strengthTowerMax; NPC.ShieldStrengthTowerStardust = strengthTowerMax = NPC.ShieldStrengthTowerMax; NPC.ShieldStrengthTowerNebula = strengthTowerMax; NPC.ShieldStrengthTowerVortex = strengthTowerMax; NPC.ShieldStrengthTowerSolar = strengthTowerMax; NetMessage.SendData(101); WorldGen.MessageLunarApocalypse(); } public static void UpdateLunarApocalypse() { if (!NPC.LunarApocalypseIsUp) return; bool flag1 = false; bool flag2 = false; bool flag3 = false; bool flag4 = false; bool flag5 = false; for (int index = 0; index < 200; ++index) { if (Main.npc[index].active) { switch (Main.npc[index].type) { case 398: flag1 = true; continue; case 422: flag3 = true; continue; case 493: flag5 = true; continue; case 507: flag4 = true; continue; case 517: flag2 = true; continue; default: continue; } } } if (!flag2) NPC.TowerActiveSolar = false; if (!flag3) NPC.TowerActiveVortex = false; if (!flag4) NPC.TowerActiveNebula = false; if (!flag5) NPC.TowerActiveStardust = false; if (NPC.TowerActiveSolar || NPC.TowerActiveVortex || NPC.TowerActiveNebula || NPC.TowerActiveStardust || flag1) return; WorldGen.StartImpendingDoom(); } public static void StartImpendingDoom() { NPC.LunarApocalypseIsUp = false; NPC.MoonLordCountdown = 3600; NetMessage.SendData(103, number: NPC.MoonLordCountdown); WorldGen.BroadcastText(NetworkText.FromKey(Lang.misc[52].Key), 50, (int) byte.MaxValue, 130); if (Main.netMode == 1) return; WorldGen.GetRidOfCultists(); } public static void GetRidOfCultists() { for (int number = 0; number < 200; ++number) { if (Main.npc[number].active && (Main.npc[number].type == 437 || Main.npc[number].type == 438 || Main.npc[number].type == 379)) { Main.npc[number].active = false; if (Main.netMode != 1) NetMessage.SendData(23, number: number); } } } public static void MessageLunarApocalypse() { if (!NPC.LunarApocalypseIsUp) return; int num = 0; if (!NPC.TowerActiveSolar) ++num; if (!NPC.TowerActiveVortex) ++num; if (!NPC.TowerActiveNebula) ++num; if (!NPC.TowerActiveStardust) ++num; WorldGen.BroadcastText(NetworkText.FromKey(Lang.misc[43 + num].Key), 175, 75, (int) byte.MaxValue); } public static void BroadcastText(NetworkText text, Vector4 color) => WorldGen.BroadcastText(text, new Color(color)); public static void BroadcastText(NetworkText text, Vector3 color) => WorldGen.BroadcastText(text, new Color(color)); public static void BroadcastText(NetworkText text, int r, int g, int b) => WorldGen.BroadcastText(text, new Color(r, g, b)); public static void BroadcastText(NetworkText text, byte r, byte g, byte b) => WorldGen.BroadcastText(text, new Color((int) r, (int) g, (int) b)); public static void BroadcastText(NetworkText text, Color color) { if (Main.netMode == 0) { Main.NewText(text.ToString(), color.R, color.G, color.B); } else { if (Main.netMode != 2) return; NetMessage.BroadcastChatMessage(text, color); } } public static bool CanCutTile(int x, int y, TileCuttingContext context) { if (Main.tile[x, y + 1] == null || Main.tile[x, y + 1].type == (ushort) 78 || Main.tile[x, y + 1].type == (ushort) 380) return false; return Main.tile[x, y].type != (ushort) 254 || context == TileCuttingContext.TilePlacement; } public class Hooks { public static event Action OnWorldLoad; public static void Initialize() => Player.Hooks.OnEnterWorld += (Action) (player => { if (player.whoAmI != Main.myPlayer) return; WorldGen.Hooks.WorldLoaded(); Main.FixUIScale(); }); public static void WorldLoaded() { if (WorldGen.Hooks.OnWorldLoad == null) return; WorldGen.Hooks.OnWorldLoad(); } public static void ClearWorld() { PressurePlateHelper.Reset(); WorldGen.TownManager.Clear(); NPC.ResetKillCount(); } } public class Spread { public static void Wall(int x, int y, int wallType) { if (!WorldGen.InWorld(x, y)) return; byte num = (byte) wallType; List pointList1 = new List(); List pointList2 = new List(); HashSet pointSet = new HashSet(); pointList2.Add(new Point(x, y)); while (pointList2.Count > 0) { pointList1.Clear(); pointList1.AddRange((IEnumerable) pointList2); pointList2.Clear(); while (pointList1.Count > 0) { Point point1 = pointList1[0]; if (!WorldGen.InWorld(point1.X, point1.Y, 1)) { pointList1.Remove(point1); } else { pointSet.Add(point1); pointList1.Remove(point1); Tile tile = Main.tile[point1.X, point1.Y]; if (WorldGen.SolidTile(point1.X, point1.Y) || tile.wall != (byte) 0) { if (tile.active() && tile.wall == (byte) 0) tile.wall = num; } else { tile.wall = num; Point point2 = new Point(point1.X - 1, point1.Y); if (!pointSet.Contains(point2)) pointList2.Add(point2); point2 = new Point(point1.X + 1, point1.Y); if (!pointSet.Contains(point2)) pointList2.Add(point2); point2 = new Point(point1.X, point1.Y - 1); if (!pointSet.Contains(point2)) pointList2.Add(point2); point2 = new Point(point1.X, point1.Y + 1); if (!pointSet.Contains(point2)) pointList2.Add(point2); } } } } } public static void Wall2(int x, int y, int wallType) { if (!WorldGen.InWorld(x, y)) return; byte num1 = (byte) wallType; int num2 = 0; int maxWallOut2 = WorldGen.maxWallOut2; List pointList1 = new List(); List pointList2 = new List(); HashSet pointSet = new HashSet(); pointList2.Add(new Point(x, y)); while (pointList2.Count > 0) { pointList1.Clear(); pointList1.AddRange((IEnumerable) pointList2); pointList2.Clear(); while (pointList1.Count > 0) { Point point1 = pointList1[0]; if (!WorldGen.InWorld(point1.X, point1.Y, 1)) { pointList1.Remove(point1); } else { pointSet.Add(point1); pointList1.Remove(point1); Tile tile = Main.tile[point1.X, point1.Y]; if (!WorldGen.SolidTile(point1.X, point1.Y) && (int) tile.wall != (int) num1 && tile.wall != (byte) 4 && tile.wall != (byte) 40 && tile.wall != (byte) 3) { if (num1 == (byte) 63 && tile.wall == (byte) 0) { pointList1.Remove(point1); } else { ++num2; if (num2 >= maxWallOut2) { pointList1.Remove(point1); } else { tile.wall = num1; Point point2 = new Point(point1.X - 1, point1.Y); if (!pointSet.Contains(point2)) pointList2.Add(point2); point2 = new Point(point1.X + 1, point1.Y); if (!pointSet.Contains(point2)) pointList2.Add(point2); point2 = new Point(point1.X, point1.Y - 1); if (!pointSet.Contains(point2)) pointList2.Add(point2); point2 = new Point(point1.X, point1.Y + 1); if (!pointSet.Contains(point2)) pointList2.Add(point2); if (num1 == (byte) 63) { point2 = new Point(point1.X - 1, point1.Y - 1); if (!pointSet.Contains(point2)) pointList2.Add(point2); point2 = new Point(point1.X + 1, point1.Y - 1); if (!pointSet.Contains(point2)) pointList2.Add(point2); point2 = new Point(point1.X - 1, point1.Y + 1); if (!pointSet.Contains(point2)) pointList2.Add(point2); point2 = new Point(point1.X + 1, point1.Y + 1); if (!pointSet.Contains(point2)) pointList2.Add(point2); point2 = new Point(point1.X - 2, point1.Y); if (!pointSet.Contains(point2)) pointList2.Add(point2); point2 = new Point(point1.X + 2, point1.Y); if (!pointSet.Contains(point2)) pointList2.Add(point2); } } } } else if (tile.active() && (int) tile.wall != (int) num1 && tile.wall != (byte) 4 && tile.wall != (byte) 40 && tile.wall != (byte) 3) tile.wall = num1; } } } } public static void Moss(int x, int y) { if (!WorldGen.InWorld(x, y)) return; byte mossWall = WorldGen.mossWall; ushort mossTile = (ushort) WorldGen.mossTile; List pointList1 = new List(); List pointList2 = new List(); HashSet pointSet = new HashSet(); pointList2.Add(new Point(x, y)); while (pointList2.Count > 0) { pointList1.Clear(); pointList1.AddRange((IEnumerable) pointList2); pointList2.Clear(); while (pointList1.Count > 0) { Point point1 = pointList1[0]; if (!WorldGen.InWorld(point1.X, point1.Y, 1)) { pointList1.Remove(point1); } else { pointSet.Add(point1); pointList1.Remove(point1); Tile tile = Main.tile[point1.X, point1.Y]; if (WorldGen.SolidTile(point1.X, point1.Y) || tile.wall != (byte) 0) { if (tile.active()) { if (tile.wall == (byte) 0) tile.wall = mossWall; if (tile.type == (ushort) 1) tile.type = mossTile; } } else { tile.wall = mossWall; Point point2 = new Point(point1.X - 1, point1.Y); if (!pointSet.Contains(point2)) pointList2.Add(point2); point2 = new Point(point1.X + 1, point1.Y); if (!pointSet.Contains(point2)) pointList2.Add(point2); point2 = new Point(point1.X, point1.Y - 1); if (!pointSet.Contains(point2)) pointList2.Add(point2); point2 = new Point(point1.X, point1.Y + 1); if (!pointSet.Contains(point2)) pointList2.Add(point2); } } } } } public static void Gem(int x, int y) { if (!WorldGen.InWorld(x, y)) return; List pointList1 = new List(); List pointList2 = new List(); HashSet pointSet = new HashSet(); pointList2.Add(new Point(x, y)); while (pointList2.Count > 0) { pointList1.Clear(); pointList1.AddRange((IEnumerable) pointList2); pointList2.Clear(); while (pointList1.Count > 0) { Point point1 = pointList1[0]; if (!WorldGen.InWorld(point1.X, point1.Y, 1)) { pointList1.Remove(point1); } else { pointSet.Add(point1); pointList1.Remove(point1); Tile tile1 = Main.tile[point1.X, point1.Y]; if (WorldGen.SolidTile(point1.X, point1.Y) || tile1.wall != (byte) 0) { if (tile1.active()) { if (WorldGen.Spread.Gemmable((int) tile1.type)) tile1.type = WorldGen.randGemTile(); Tile tile2 = Main.tile[point1.X - 1, point1.Y]; if (WorldGen.Spread.Gemmable((int) tile2.type)) tile2.type = WorldGen.randGemTile(); Tile tile3 = Main.tile[point1.X + 1, point1.Y]; if (WorldGen.Spread.Gemmable((int) tile3.type)) tile3.type = WorldGen.randGemTile(); Tile tile4 = Main.tile[point1.X, point1.Y - 1]; if (WorldGen.Spread.Gemmable((int) tile4.type)) tile4.type = WorldGen.randGemTile(); Tile tile5 = Main.tile[point1.X, point1.Y + 1]; if (WorldGen.Spread.Gemmable((int) tile5.type)) tile5.type = WorldGen.randGemTile(); } } else { tile1.wall = (byte) (48 + WorldGen.randGem()); if (!tile1.active() && WorldGen.genRand.Next(2) == 0) WorldGen.PlaceTile(point1.X, point1.Y, 178, true, style: WorldGen.randGem()); Point point2 = new Point(point1.X - 1, point1.Y); if (!pointSet.Contains(point2)) pointList2.Add(point2); point2 = new Point(point1.X + 1, point1.Y); if (!pointSet.Contains(point2)) pointList2.Add(point2); point2 = new Point(point1.X, point1.Y - 1); if (!pointSet.Contains(point2)) pointList2.Add(point2); point2 = new Point(point1.X, point1.Y + 1); if (!pointSet.Contains(point2)) pointList2.Add(point2); } } } } } public static void Spider(int x, int y) { if (!WorldGen.InWorld(x, y)) return; byte num = 62; List pointList1 = new List(); List pointList2 = new List(); HashSet pointSet = new HashSet(); pointList2.Add(new Point(x, y)); while (pointList2.Count > 0) { pointList1.Clear(); pointList1.AddRange((IEnumerable) pointList2); pointList2.Clear(); while (pointList1.Count > 0) { Point point1 = pointList1[0]; if (!WorldGen.InWorld(point1.X, point1.Y, 1)) { pointList1.Remove(point1); } else { pointSet.Add(point1); pointList1.Remove(point1); Tile tile = Main.tile[point1.X, point1.Y]; if (WorldGen.SolidTile(point1.X, point1.Y) || tile.wall != (byte) 0) { if (tile.active() && tile.wall == (byte) 0) tile.wall = num; } else { tile.wall = num; WorldGen.SquareWallFrame(point1.X, point1.Y); if (!tile.active()) { tile.liquid = (byte) 0; tile.lava(false); if (WorldGen.SolidTile(point1.X, point1.Y + 1) && WorldGen.genRand.Next(3) == 0) { if (WorldGen.genRand.Next(15) == 0) WorldGen.AddBuriedChest(point1.X, point1.Y, 939, true, 15); else WorldGen.PlacePot(point1.X, point1.Y, style: WorldGen.genRand.Next(19, 21)); } if (!tile.active()) { if (WorldGen.SolidTile(point1.X, point1.Y - 1) && WorldGen.genRand.Next(3) == 0) WorldGen.PlaceTight(point1.X, point1.Y, spiders: true); else if (WorldGen.SolidTile(point1.X, point1.Y + 1)) { WorldGen.PlaceTile(point1.X, point1.Y, 187, true, style: (9 + WorldGen.genRand.Next(5))); if (WorldGen.genRand.Next(3) == 0) { if (!tile.active()) WorldGen.PlaceSmallPile(point1.X, point1.Y, 34 + WorldGen.genRand.Next(4), 1); if (!tile.active()) WorldGen.PlaceSmallPile(point1.X, point1.Y, 48 + WorldGen.genRand.Next(6), 0); } } } } Point point2 = new Point(point1.X - 1, point1.Y); if (!pointSet.Contains(point2)) pointList2.Add(point2); point2 = new Point(point1.X + 1, point1.Y); if (!pointSet.Contains(point2)) pointList2.Add(point2); point2 = new Point(point1.X, point1.Y - 1); if (!pointSet.Contains(point2)) pointList2.Add(point2); point2 = new Point(point1.X, point1.Y + 1); if (!pointSet.Contains(point2)) pointList2.Add(point2); } } } } } public static void WallDungeon(int x, int y, int wallType) { if (!WorldGen.InWorld(x, y)) return; byte num = (byte) wallType; List pointList1 = new List(); List pointList2 = new List(); HashSet pointSet = new HashSet(); pointList2.Add(new Point(x, y)); while (pointList2.Count > 0) { pointList1.Clear(); pointList1.AddRange((IEnumerable) pointList2); pointList2.Clear(); while (pointList1.Count > 0) { Point point1 = pointList1[0]; if (!WorldGen.InWorld(point1.X, point1.Y, 1)) { pointList1.Remove(point1); } else { pointSet.Add(point1); pointList1.Remove(point1); Tile tile = Main.tile[point1.X, point1.Y]; if (!WorldGen.SolidTile(point1.X, point1.Y) && (int) tile.wall != (int) num && tile.wall > (byte) 0) { tile.wall = num; Point point2 = new Point(point1.X - 1, point1.Y); if (!pointSet.Contains(point2)) pointList2.Add(point2); point2 = new Point(point1.X + 1, point1.Y); if (!pointSet.Contains(point2)) pointList2.Add(point2); point2 = new Point(point1.X, point1.Y - 1); if (!pointSet.Contains(point2)) pointList2.Add(point2); point2 = new Point(point1.X, point1.Y + 1); if (!pointSet.Contains(point2)) pointList2.Add(point2); } else if (tile.active()) tile.wall = num; } } } } private static bool Gemmable(int type) => type == 0 || type == 1 || type == 40 || type == 59 || type == 60 || type == 70 || type == 147 || type == 161; } } }