terraria-source-code/Terraria/WorldGen.cs
TheVamp 0462173018 Version 1.2.0.3.1
Decompiled with IlSpy
Fixes Source Code
2013-10-12 11:25:17 +02:00

46469 lines
1.3 MiB

using Microsoft.Xna.Framework;
using System;
using System.Diagnostics;
using System.IO;
using System.Threading;
namespace Terraria
{
internal class WorldGen
{
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 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 Vector2[] teleport = new Vector2[2];
private static int dWallCount = 0;
private static bool dWallBroke = false;
public static int maxMech = 1000;
public static int[] mechX = new int[WorldGen.maxMech];
public static int[] mechY = new int[WorldGen.maxMech];
public static int numMechs = 0;
public static int[] mechTime = new int[WorldGen.maxMech];
public static int maxWire = 2000;
public static int[] wireX = new int[WorldGen.maxWire];
public static int[] wireY = new int[WorldGen.maxWire];
public static int numWire = 0;
public static int[] noWireX = new int[WorldGen.maxWire];
public static int[] noWireY = new int[WorldGen.maxWire];
public static int numNoWire = 0;
public static int maxPump = 20;
public static int[] inPumpX = new int[WorldGen.maxPump];
public static int[] inPumpY = new int[WorldGen.maxPump];
public static int numInPump = 0;
public static int[] outPumpX = new int[WorldGen.maxPump];
public static int[] outPumpY = new int[WorldGen.maxPump];
public static int numOutPump = 0;
public static bool[] gem = new bool[6];
public static int totalEvil = 0;
public static int totalGood = 0;
public static int totalSolid = 0;
public static int totalEvil2 = 0;
public static int totalGood2 = 0;
public static int totalSolid2 = 0;
public static byte tEvil = 0;
public static byte tGood = 0;
public static int totalX = 0;
public static int totalD = 0;
public static bool hardLock = false;
private static Vector2[] heartPos = new Vector2[100];
private static int heartCount = 0;
private static object padlock = new object();
public static int lavaLine;
public static int waterLine;
public static bool noTileActions = false;
public static bool spawnEye = false;
public static int spawnHardBoss = 0;
public static bool gen = false;
public static bool shadowOrbSmashed = false;
public static int shadowOrbCount = 0;
public static int altarCount = 0;
public static bool spawnMeteor = false;
public static bool loadFailed = false;
public static bool loadSuccess = false;
public static bool worldCleared = false;
public static bool worldBackup = false;
public static bool loadBackup = false;
private static int lastMaxTilesX = 0;
private static int lastMaxTilesY = 0;
public static bool saveLock = false;
private static bool mergeUp = false;
private static bool mergeDown = false;
private static bool mergeLeft = false;
private static bool mergeRight = false;
private static int tempMoonPhase = Main.moonPhase;
private static bool tempDayTime = Main.dayTime;
private static bool tempBloodMoon = Main.bloodMoon;
private static bool tempEclipse = Main.eclipse;
private static double tempTime = Main.time;
public static bool tempRaining = false;
public static float tempMaxRain = 0f;
public static int tempRainTime = 0;
private static bool stopDrops = false;
private static bool mudWall = false;
private static int grassSpread = 0;
public static bool noLiquidCheck = false;
[ThreadStatic]
public static Random genRand = new Random();
public static string statusText = "";
public static bool destroyObject = false;
public static int spawnDelay = 0;
public static int spawnNPC = 0;
public static int numTileCount = 0;
public static int maxTileCount = 3500;
public static int maxWallOut2 = 5000;
public static int numWallOut2 = 0;
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 roomX1;
public static int roomX2;
public static int roomY1;
public static int roomY2;
public static bool canSpawn;
public static bool[] houseTile = new bool[251];
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 = default(Vector2);
public static int maxDRooms = 100;
public static int numDRooms = 0;
public static int[] dRoomX = new int[WorldGen.maxDRooms];
public static int[] dRoomY = new int[WorldGen.maxDRooms];
public static int[] dRoomSize = new int[WorldGen.maxDRooms];
private static bool[] dRoomTreasure = new bool[WorldGen.maxDRooms];
private static int[] dRoomL = new int[WorldGen.maxDRooms];
private static int[] dRoomR = new int[WorldGen.maxDRooms];
private static int[] dRoomT = new int[WorldGen.maxDRooms];
private static int[] dRoomB = new int[WorldGen.maxDRooms];
private static int numDDoors;
private static int[] DDoorX = new int[300];
private static int[] DDoorY = new int[300];
private static int[] DDoorPos = new int[300];
private static int numDPlats;
private static int[] DPlatX = new int[300];
private static int[] DPlatY = new int[300];
private static int[] JChestX = new int[100];
private static int[] JChestY = new int[100];
private static int numJChests = 0;
private static int[] HiveX = new int[100];
private static int[] HiveY = new int[100];
private static int numHives = 0;
public static int dEnteranceX = 0;
public static bool dSurface = false;
private static double dxStrength1;
private static double dyStrength1;
private static double dxStrength2;
private static double dyStrength2;
private static int dMinX;
private static int dMaxX;
private static int dMinY;
private static int dMaxY;
private static int numIslandHouses = 0;
private static int houseCount = 0;
private static int[] fihX = new int[300];
private static int[] fihY = new int[300];
private static int numMCaves = 0;
private static int[] mCaveX = new int[300];
private static int[] mCaveY = new int[300];
private static int JungleX = 0;
private static int hellChest = 0;
private static bool roomTorch;
private static bool roomDoor;
private static bool roomChair;
private static bool roomTable;
private static bool roomOccupied;
private static bool roomEvil;
public static bool MoveNPC(int x, int y, int n)
{
if (!WorldGen.StartRoomCheck(x, y))
{
Main.NewText(Lang.inter[40], 255, 240, 20, false);
return false;
}
if (!WorldGen.RoomNeeds(WorldGen.spawnNPC))
{
if (Lang.lang <= 1)
{
int num = 0;
string[] array = new string[4];
if (!WorldGen.roomTorch)
{
array[num] = "a light source";
num++;
}
if (!WorldGen.roomDoor)
{
array[num] = "a door";
num++;
}
if (!WorldGen.roomTable)
{
array[num] = "a table";
num++;
}
if (!WorldGen.roomChair)
{
array[num] = "a chair";
num++;
}
string text = "";
for (int i = 0; i < num; i++)
{
if (num == 2 && i == 1)
{
text += " and ";
}
else
{
if (i > 0 && i != num - 1)
{
text += ", and ";
}
else
{
if (i > 0)
{
text += ", ";
}
}
}
text += array[i];
}
Main.NewText("This housing is missing " + text + ".", 255, 240, 20, false);
}
else
{
Main.NewText(Lang.inter[39], 255, 240, 20, false);
}
return false;
}
WorldGen.ScoreRoom(-1);
if (WorldGen.hiScore <= 0)
{
if (WorldGen.roomOccupied)
{
Main.NewText(Lang.inter[41], 255, 240, 20, false);
}
else
{
if (WorldGen.roomEvil)
{
Main.NewText(Lang.inter[42], 255, 240, 20, false);
}
else
{
Main.NewText(Lang.inter[40], 255, 240, 20, false);
}
}
return false;
}
if (n > 0 && !WorldGen.CheckConditions(Main.npc[n].type))
{
Main.NewText(Lang.inter[55] + " " + Main.npc[n].name, 255, 240, 20, false);
return false;
}
return true;
}
public static void moveRoom(int x, int y, int n)
{
if (Main.netMode == 1)
{
NetMessage.SendData(60, -1, -1, "", n, (float)x, (float)y, 1f, 0);
return;
}
WorldGen.spawnNPC = Main.npc[n].type;
Main.npc[n].homeless = true;
WorldGen.SpawnNPC(x, y);
}
public static void kickOut(int n)
{
if (Main.netMode == 1)
{
NetMessage.SendData(60, -1, -1, "", n, 0f, 0f, 0f, 0);
return;
}
Main.npc[n].homeless = true;
}
public static bool NextNPC()
{
if (WorldGen.CheckConditions(WorldGen.spawnNPC))
{
return true;
}
for (int i = 0; i < 301; i++)
{
if (Main.nextNPC[i] && WorldGen.CheckConditions(i))
{
WorldGen.spawnNPC = i;
return true;
}
}
return false;
}
public static bool CheckConditions(int type)
{
if (type != 160)
{
return true;
}
if ((double)WorldGen.roomY2 > Main.worldSurface)
{
return false;
}
int num = 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 i = num2 + 1; i < num3; i++)
{
for (int j = num4 + 2; j < num5 + 2; j++)
{
if (Main.tile[i, j].active() && (Main.tile[i, j].type == 70 || Main.tile[i, j].type == 71 || Main.tile[i, j].type == 72))
{
num++;
}
}
}
return num >= 100;
}
public static void SpawnNPC(int x, int y)
{
if (Main.wallHouse[(int)Main.tile[x, y].wall])
{
WorldGen.canSpawn = true;
}
if (!WorldGen.canSpawn)
{
return;
}
if (!WorldGen.StartRoomCheck(x, y))
{
return;
}
if (!WorldGen.RoomNeeds(WorldGen.spawnNPC))
{
return;
}
WorldGen.ScoreRoom(-1);
if (WorldGen.hiScore > 0)
{
int num = -1;
for (int i = 0; i < 200; i++)
{
if (Main.npc[i].active && Main.npc[i].homeless && Main.npc[i].type == WorldGen.spawnNPC && WorldGen.CheckConditions(Main.npc[i].type))
{
num = i;
break;
}
}
if (!WorldGen.NextNPC())
{
return;
}
if (num == -1)
{
int num2 = WorldGen.bestX;
int num3 = WorldGen.bestY;
bool flag = false;
if (!flag)
{
flag = true;
Rectangle value = new Rectangle(num2 * 16 + 8 - NPC.sWidth / 2 - NPC.safeRangeX, num3 * 16 + 8 - NPC.sHeight / 2 - NPC.safeRangeY, NPC.sWidth + NPC.safeRangeX * 2, NPC.sHeight + NPC.safeRangeY * 2);
for (int j = 0; j < 255; j++)
{
if (Main.player[j].active)
{
Rectangle rectangle = new Rectangle((int)Main.player[j].position.X, (int)Main.player[j].position.Y, Main.player[j].width, Main.player[j].height);
if (rectangle.Intersects(value))
{
flag = false;
break;
}
}
}
}
if (!flag && (double)num3 <= Main.worldSurface)
{
for (int k = 1; k < 500; k++)
{
for (int l = 0; l < 2; l++)
{
if (l == 0)
{
num2 = WorldGen.bestX + k;
}
else
{
num2 = WorldGen.bestX - k;
}
if (num2 > 10 && num2 < Main.maxTilesX - 10)
{
int num4 = WorldGen.bestY - k;
double num5 = (double)(WorldGen.bestY + k);
if (num4 < 10)
{
num4 = 10;
}
if (num5 > Main.worldSurface)
{
num5 = Main.worldSurface;
}
int num6 = num4;
while ((double)num6 < num5)
{
num3 = num6;
if (Main.tile[num2, num3].nactive() && Main.tileSolid[(int)Main.tile[num2, num3].type])
{
if (!Collision.SolidTiles(num2 - 1, num2 + 1, num3 - 3, num3 - 1))
{
flag = true;
Rectangle value2 = new Rectangle(num2 * 16 + 8 - NPC.sWidth / 2 - NPC.safeRangeX, num3 * 16 + 8 - NPC.sHeight / 2 - NPC.safeRangeY, NPC.sWidth + NPC.safeRangeX * 2, NPC.sHeight + NPC.safeRangeY * 2);
for (int m = 0; m < 255; m++)
{
if (Main.player[m].active)
{
Rectangle rectangle2 = new Rectangle((int)Main.player[m].position.X, (int)Main.player[m].position.Y, Main.player[m].width, Main.player[m].height);
if (rectangle2.Intersects(value2))
{
flag = false;
break;
}
}
}
break;
}
break;
}
else
{
num6++;
}
}
}
if (flag)
{
break;
}
}
if (flag)
{
break;
}
}
}
int num7 = NPC.NewNPC(num2 * 16, num3 * 16, WorldGen.spawnNPC, 1);
Main.npc[num7].homeTileX = WorldGen.bestX;
Main.npc[num7].homeTileY = WorldGen.bestY;
if (num2 < WorldGen.bestX)
{
Main.npc[num7].direction = 1;
}
else
{
if (num2 > WorldGen.bestX)
{
Main.npc[num7].direction = -1;
}
}
Main.npc[num7].netUpdate = true;
string str = Main.npc[num7].name;
if (Main.chrName[Main.npc[num7].type] != "")
{
if (Lang.lang <= 1)
{
str = Main.chrName[Main.npc[num7].type] + " " + Lang.the + Main.npc[num7].name;
}
else
{
str = Main.chrName[Main.npc[num7].type];
}
}
if (Main.netMode == 0)
{
Main.NewText(str + " " + Lang.misc[18], 50, 125, 255, false);
}
else
{
if (Main.netMode == 2)
{
NetMessage.SendData(25, -1, -1, str + " " + Lang.misc[18], 255, 50f, 125f, 255f, 0);
}
}
}
else
{
WorldGen.spawnNPC = 0;
Main.npc[num].homeTileX = WorldGen.bestX;
Main.npc[num].homeTileY = WorldGen.bestY;
Main.npc[num].homeless = false;
}
WorldGen.spawnNPC = 0;
}
}
public static bool RoomNeeds(int npcType)
{
WorldGen.roomChair = false;
WorldGen.roomDoor = false;
WorldGen.roomTable = false;
WorldGen.roomTorch = false;
if (WorldGen.houseTile[15] || WorldGen.houseTile[79] || WorldGen.houseTile[89] || WorldGen.houseTile[102])
{
WorldGen.roomChair = true;
}
if (WorldGen.houseTile[14] || WorldGen.houseTile[18] || WorldGen.houseTile[87] || WorldGen.houseTile[88] || WorldGen.houseTile[90] || WorldGen.houseTile[101])
{
WorldGen.roomTable = true;
}
if (WorldGen.houseTile[4] || WorldGen.houseTile[33] || WorldGen.houseTile[34] || WorldGen.houseTile[35] || WorldGen.houseTile[36] || WorldGen.houseTile[42] || WorldGen.houseTile[49] || WorldGen.houseTile[93] || WorldGen.houseTile[95] || WorldGen.houseTile[98] || WorldGen.houseTile[100] || WorldGen.houseTile[149] || WorldGen.houseTile[170] || WorldGen.houseTile[171] || WorldGen.houseTile[172] || WorldGen.houseTile[173] || WorldGen.houseTile[174])
{
WorldGen.roomTorch = true;
}
if (WorldGen.houseTile[10] || WorldGen.houseTile[11] || WorldGen.houseTile[19])
{
WorldGen.roomDoor = true;
}
if (WorldGen.roomChair && WorldGen.roomTable && WorldGen.roomDoor && WorldGen.roomTorch)
{
WorldGen.canSpawn = true;
}
else
{
WorldGen.canSpawn = false;
}
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)
{
WorldGen.canSpawn = false;
WorldGen.StartRoomCheck(Main.npc[npc].homeTileX, Main.npc[npc].homeTileY - 1);
if (!WorldGen.canSpawn)
{
for (int i = Main.npc[npc].homeTileX - 1; i < Main.npc[npc].homeTileX + 2; i++)
{
int num = Main.npc[npc].homeTileY - 1;
while (num < Main.npc[npc].homeTileY + 2 && !WorldGen.StartRoomCheck(i, num))
{
num++;
}
}
}
if (!WorldGen.canSpawn)
{
int num2 = 10;
for (int j = Main.npc[npc].homeTileX - num2; j <= Main.npc[npc].homeTileX + num2; j += 2)
{
int num3 = Main.npc[npc].homeTileY - num2;
while (num3 <= Main.npc[npc].homeTileY + num2 && !WorldGen.StartRoomCheck(j, num3))
{
num3 += 2;
}
}
}
if (WorldGen.canSpawn)
{
WorldGen.RoomNeeds(Main.npc[npc].type);
if (WorldGen.canSpawn)
{
WorldGen.ScoreRoom(npc);
}
if (WorldGen.canSpawn && WorldGen.hiScore > 0)
{
Main.npc[npc].homeTileX = WorldGen.bestX;
Main.npc[npc].homeTileY = WorldGen.bestY;
Main.npc[npc].homeless = false;
WorldGen.canSpawn = false;
return;
}
Main.npc[npc].homeless = true;
return;
}
else
{
Main.npc[npc].homeless = true;
}
}
}
public static void ScoreRoom(int ignoreNPC = -1)
{
WorldGen.roomOccupied = false;
WorldGen.roomEvil = false;
for (int i = 0; i < 200; i++)
{
if (Main.npc[i].active && Main.npc[i].townNPC && ignoreNPC != i && !Main.npc[i].homeless)
{
for (int j = 0; j < WorldGen.numRoomTiles; j++)
{
if (Main.npc[i].homeTileX == WorldGen.roomX[j] && Main.npc[i].homeTileY == WorldGen.roomY[j])
{
bool flag = false;
for (int k = 0; k < WorldGen.numRoomTiles; k++)
{
if (Main.npc[i].homeTileX == WorldGen.roomX[k] && Main.npc[i].homeTileY - 1 == WorldGen.roomY[k])
{
flag = true;
break;
}
}
if (flag)
{
WorldGen.roomOccupied = true;
WorldGen.hiScore = -1;
return;
}
}
}
}
}
WorldGen.hiScore = 0;
int num = 50;
int num2 = 0;
int num3 = WorldGen.roomX1 - Main.zoneX / 2 / 16 - 1 - Lighting.offScreenTiles;
int num4 = WorldGen.roomX2 + Main.zoneX / 2 / 16 + 1 + Lighting.offScreenTiles;
int num5 = WorldGen.roomY1 - Main.zoneY / 2 / 16 - 1 - Lighting.offScreenTiles;
int num6 = WorldGen.roomY2 + Main.zoneY / 2 / 16 + 1 + Lighting.offScreenTiles;
if (num3 < 0)
{
num3 = 0;
}
if (num4 >= Main.maxTilesX)
{
num4 = Main.maxTilesX - 1;
}
if (num5 < 0)
{
num5 = 0;
}
if (num6 > Main.maxTilesX)
{
num6 = Main.maxTilesX;
}
for (int l = num3 + 1; l < num4; l++)
{
for (int m = num5 + 2; m < num6 + 2; m++)
{
if (Main.tile[l, m].active())
{
if (Main.tile[l, m].type == 23 || Main.tile[l, m].type == 24 || Main.tile[l, m].type == 25 || Main.tile[l, m].type == 32 || Main.tile[l, m].type == 112 || Main.tile[l, m].type == 163)
{
num2++;
}
else
{
if (Main.tile[l, m].type == 199 || Main.tile[l, m].type == 201 || Main.tile[l, m].type == 200 || Main.tile[l, m].type == 203 || Main.tile[l, m].type == 234)
{
num2++;
}
else
{
if (Main.tile[l, m].type == 27)
{
num2 -= 5;
}
else
{
if (Main.tile[l, m].type == 109 || Main.tile[l, m].type == 110 || Main.tile[l, m].type == 113 || Main.tile[l, m].type == 116 || Main.tile[l, m].type == 164)
{
num2--;
}
}
}
}
}
}
}
if (num2 < 50)
{
num2 = 0;
}
num -= num2;
if (num <= -250)
{
WorldGen.hiScore = num;
WorldGen.roomEvil = true;
return;
}
num3 = WorldGen.roomX1;
num4 = WorldGen.roomX2;
num5 = WorldGen.roomY1;
num6 = WorldGen.roomY2;
for (int n = num3 + 1; n < num4; n++)
{
for (int num7 = num5 + 2; num7 < num6 + 2; num7++)
{
if (Main.tile[n, num7].nactive())
{
int num8 = num;
if (Main.tileSolid[(int)Main.tile[n, num7].type] && !Main.tileSolidTop[(int)Main.tile[n, num7].type] && !Collision.SolidTiles(n - 1, n + 1, num7 - 3, num7 - 1) && Main.tile[n - 1, num7].nactive() && Main.tileSolid[(int)Main.tile[n - 1, num7].type] && Main.tile[n + 1, num7].nactive() && Main.tileSolid[(int)Main.tile[n + 1, num7].type])
{
for (int num9 = n - 2; num9 < n + 3; num9++)
{
for (int num10 = num7 - 4; num10 < num7; num10++)
{
if (Main.tile[num9, num10].nactive())
{
if (num9 == n)
{
num8 -= 15;
}
else
{
if (Main.tile[num9, num10].type == 10 || Main.tile[num9, num10].type == 11)
{
num8 -= 20;
}
else
{
if (Main.tileSolid[(int)Main.tile[num9, num10].type])
{
num8 -= 5;
}
else
{
num8 += 5;
}
}
}
}
}
}
if (num8 > WorldGen.hiScore)
{
bool flag2 = false;
for (int num11 = 0; num11 < WorldGen.numRoomTiles; num11++)
{
if (WorldGen.roomX[num11] == n && WorldGen.roomY[num11] == num7)
{
flag2 = true;
break;
}
}
if (flag2)
{
WorldGen.hiScore = num8;
WorldGen.bestX = n;
WorldGen.bestY = num7;
}
}
}
}
}
}
}
public static bool StartRoomCheck(int x, int y)
{
WorldGen.roomX1 = x;
WorldGen.roomX2 = x;
WorldGen.roomY1 = y;
WorldGen.roomY2 = y;
WorldGen.numRoomTiles = 0;
for (int i = 0; i < 251; i++)
{
WorldGen.houseTile[i] = false;
}
WorldGen.canSpawn = true;
if (Main.tile[x, y].nactive() && Main.tileSolid[(int)Main.tile[x, y].type])
{
WorldGen.canSpawn = false;
}
WorldGen.CheckRoom(x, y);
if (WorldGen.numRoomTiles < 60)
{
WorldGen.canSpawn = false;
}
return WorldGen.canSpawn;
}
public static void CheckRoom(int x, int y)
{
if (!WorldGen.canSpawn)
{
return;
}
if (x < 10 || y < 10 || x >= Main.maxTilesX - 10 || y >= WorldGen.lastMaxTilesY - 10)
{
WorldGen.canSpawn = false;
return;
}
for (int i = 0; i < WorldGen.numRoomTiles; i++)
{
if (WorldGen.roomX[i] == x && WorldGen.roomY[i] == y)
{
return;
}
}
WorldGen.roomX[WorldGen.numRoomTiles] = x;
WorldGen.roomY[WorldGen.numRoomTiles] = y;
WorldGen.numRoomTiles++;
if (WorldGen.numRoomTiles >= WorldGen.maxRoomTiles)
{
WorldGen.canSpawn = false;
return;
}
if (Main.tile[x, y].nactive())
{
WorldGen.houseTile[(int)Main.tile[x, y].type] = true;
if (Main.tileSolid[(int)Main.tile[x, y].type])
{
return;
}
if (Main.tile[x, y].type == 11 && (Main.tile[x, y].frameX == 0 || Main.tile[x, y].frameX == 54))
{
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 flag = false;
bool flag2 = false;
for (int j = -2; j < 3; j++)
{
if (Main.wallHouse[(int)Main.tile[x + j, y].wall])
{
flag = true;
}
if (Main.tile[x + j, y].nactive() && (Main.tileSolid[(int)Main.tile[x + j, y].type] || Main.tile[x + j, y].type == 11))
{
flag = true;
}
if (Main.wallHouse[(int)Main.tile[x, y + j].wall])
{
flag2 = true;
}
if (Main.tile[x, y + j].nactive() && (Main.tileSolid[(int)Main.tile[x, y + j].type] || Main.tile[x, y + j].type == 11))
{
flag2 = true;
}
}
if (!flag || !flag2)
{
WorldGen.canSpawn = false;
return;
}
for (int k = x - 1; k < x + 2; k++)
{
for (int l = y - 1; l < y + 2; l++)
{
if ((k != x || l != y) && WorldGen.canSpawn)
{
WorldGen.CheckRoom(k, l);
}
}
}
}
public static void dropMeteor()
{
bool flag = true;
int num = 0;
if (Main.netMode == 1)
{
return;
}
for (int i = 0; i < 255; i++)
{
if (Main.player[i].active)
{
flag = false;
break;
}
}
int num2 = 0;
float num3 = (float)(Main.maxTilesX / 4200);
int num4 = (int)(400f * num3);
for (int j = 5; j < Main.maxTilesX - 5; j++)
{
int num5 = 5;
while ((double)num5 < Main.worldSurface)
{
if (Main.tile[j, num5].active() && Main.tile[j, num5].type == 37)
{
num2++;
if (num2 > num4)
{
return;
}
}
num5++;
}
}
while (!flag)
{
float num6 = (float)Main.maxTilesX * 0.08f;
int num7 = Main.rand.Next(50, Main.maxTilesX - 50);
while ((float)num7 > (float)Main.spawnTileX - num6 && (float)num7 < (float)Main.spawnTileX + num6)
{
num7 = Main.rand.Next(50, Main.maxTilesX - 50);
}
for (int k = Main.rand.Next(100); k < Main.maxTilesY; k++)
{
if (Main.tile[num7, k].active() && Main.tileSolid[(int)Main.tile[num7, k].type])
{
flag = WorldGen.meteor(num7, k);
break;
}
}
num++;
if (num >= 100)
{
return;
}
}
}
public static bool meteor(int i, int j)
{
if (i < 50 || i > Main.maxTilesX - 50)
{
return false;
}
if (j < 50 || j > Main.maxTilesY - 50)
{
return false;
}
int num = 25;
Rectangle rectangle = new Rectangle((i - num) * 16, (j - num) * 16, num * 2 * 16, num * 2 * 16);
for (int k = 0; k < 255; k++)
{
if (Main.player[k].active)
{
Rectangle value = new Rectangle((int)(Main.player[k].position.X + (float)(Main.player[k].width / 2) - (float)(NPC.sWidth / 2) - (float)NPC.safeRangeX), (int)(Main.player[k].position.Y + (float)(Main.player[k].height / 2) - (float)(NPC.sHeight / 2) - (float)NPC.safeRangeY), NPC.sWidth + NPC.safeRangeX * 2, NPC.sHeight + NPC.safeRangeY * 2);
if (rectangle.Intersects(value))
{
return false;
}
}
}
for (int l = 0; l < 200; l++)
{
if (Main.npc[l].active)
{
Rectangle value2 = new Rectangle((int)Main.npc[l].position.X, (int)Main.npc[l].position.Y, Main.npc[l].width, Main.npc[l].height);
if (rectangle.Intersects(value2))
{
return false;
}
}
}
for (int m = i - num; m < i + num; m++)
{
for (int n = j - num; n < j + num; n++)
{
if (Main.tile[m, n].active() && Main.tile[m, n].type == 21)
{
return false;
}
}
}
WorldGen.stopDrops = true;
num = 15;
for (int num2 = i - num; num2 < i + num; num2++)
{
for (int num3 = j - num; num3 < j + num; num3++)
{
if (num3 > j + Main.rand.Next(-2, 3) - 5 && (double)(Math.Abs(i - num2) + Math.Abs(j - num3)) < (double)num * 1.5 + (double)Main.rand.Next(-5, 5))
{
if (!Main.tileSolid[(int)Main.tile[num2, num3].type])
{
Main.tile[num2, num3].active(false);
}
Main.tile[num2, num3].type = 37;
}
}
}
num = 10;
for (int num4 = i - num; num4 < i + num; num4++)
{
for (int num5 = j - num; num5 < j + num; num5++)
{
if (num5 > j + Main.rand.Next(-2, 3) - 5 && Math.Abs(i - num4) + Math.Abs(j - num5) < num + Main.rand.Next(-3, 4))
{
Main.tile[num4, num5].active(false);
}
}
}
num = 16;
for (int num6 = i - num; num6 < i + num; num6++)
{
for (int num7 = j - num; num7 < j + num; num7++)
{
if (Main.tile[num6, num7].type == 5 || Main.tile[num6, num7].type == 32)
{
WorldGen.KillTile(num6, num7, false, false, false);
}
WorldGen.SquareTileFrame(num6, num7, true);
WorldGen.SquareWallFrame(num6, num7, true);
}
}
num = 23;
for (int num8 = i - num; num8 < i + num; num8++)
{
for (int num9 = j - num; num9 < j + num; num9++)
{
if (Main.tile[num8, num9].active() && Main.rand.Next(10) == 0 && (double)(Math.Abs(i - num8) + Math.Abs(j - num9)) < (double)num * 1.3)
{
if (Main.tile[num8, num9].type == 5 || Main.tile[num8, num9].type == 32)
{
WorldGen.KillTile(num8, num9, false, false, false);
}
Main.tile[num8, num9].type = 37;
WorldGen.SquareTileFrame(num8, num9, true);
}
}
}
WorldGen.stopDrops = false;
if (Main.netMode == 0)
{
Main.NewText(Lang.gen[59], 50, 255, 130, false);
}
else
{
if (Main.netMode == 2)
{
NetMessage.SendData(25, -1, -1, Lang.gen[59], 255, 50f, 255f, 130f, 0);
}
}
if (Main.netMode != 1)
{
NetMessage.SendTileSquare(-1, i, j, 30);
}
return true;
}
public static void setWorldSize()
{
Main.bottomWorld = (float)(Main.maxTilesY * 16);
Main.rightWorld = (float)(Main.maxTilesX * 16);
Main.maxSectionsX = Main.maxTilesX / 200;
Main.maxSectionsY = Main.maxTilesY / 150;
}
public static void worldGenCallBack(object threadContext)
{
Main.PlaySound(10, -1, -1, 1);
WorldGen.clearWorld();
WorldGen.generateWorld(-1);
WorldGen.saveWorld(true);
Main.LoadWorlds();
if (Main.menuMode == 10)
{
Main.menuMode = 6;
}
Main.PlaySound(10, -1, -1, 1);
}
public static void CreateNewWorld()
{
ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.worldGenCallBack), 1);
}
public static void SaveAndQuitCallBack(object threadContext)
{
Main.menuMode = 10;
Main.gameMenu = true;
Player.SavePlayer(Main.player[Main.myPlayer], Main.playerPathName);
if (Main.netMode == 0)
{
WorldGen.saveWorld(false);
Main.PlaySound(10, -1, -1, 1);
}
else
{
Netplay.disconnect = true;
Main.netMode = 0;
}
Main.menuMode = 0;
}
public static void SaveAndQuit()
{
Main.PlaySound(11, -1, -1, 1);
ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.SaveAndQuitCallBack), 1);
}
public static void playWorldCallBack(object threadContext)
{
if (Main.rand == null)
{
Main.rand = new Random((int)DateTime.Now.Ticks);
}
for (int i = 0; i < 255; i++)
{
if (i != Main.myPlayer)
{
Main.player[i].active = false;
}
}
WorldGen.noMapUpdate = true;
WorldGen.loadWorld();
if (WorldGen.loadFailed || !WorldGen.loadSuccess)
{
WorldGen.loadWorld();
if (WorldGen.loadFailed || !WorldGen.loadSuccess)
{
if (File.Exists(Main.worldPathName + ".bak"))
{
WorldGen.worldBackup = true;
}
else
{
WorldGen.worldBackup = false;
}
if (!Main.dedServ)
{
if (WorldGen.worldBackup)
{
Main.menuMode = 200;
return;
}
Main.menuMode = 201;
return;
}
else
{
if (!WorldGen.worldBackup)
{
Console.WriteLine("Load failed! No backup found.");
return;
}
File.Copy(Main.worldPathName + ".bak", Main.worldPathName, true);
File.Delete(Main.worldPathName + ".bak");
WorldGen.loadWorld();
if (WorldGen.loadFailed || !WorldGen.loadSuccess)
{
WorldGen.loadWorld();
if (WorldGen.loadFailed || !WorldGen.loadSuccess)
{
Console.WriteLine("Load failed!");
return;
}
}
}
}
}
if (Main.mapEnabled)
{
Map.loadMap();
}
WorldGen.EveryTileFrame();
while (Main.loadMapLock)
{
float num = (float)Main.loadMapLastX / (float)Main.maxTilesX;
Main.statusText = string.Concat(new object[]
{
Lang.gen[68],
" ",
(int)(num * 100f + 1f),
"%"
});
Thread.Sleep(0);
if (!Main.mapEnabled)
{
break;
}
}
if (Main.gameMenu)
{
Main.gameMenu = false;
}
Main.player[Main.myPlayer].Spawn();
Main.player[Main.myPlayer].UpdatePlayer(Main.myPlayer);
Main.dayTime = WorldGen.tempDayTime;
Main.time = WorldGen.tempTime;
Main.moonPhase = WorldGen.tempMoonPhase;
Main.bloodMoon = WorldGen.tempBloodMoon;
Main.raining = WorldGen.tempRaining;
Main.rainTime = WorldGen.tempRainTime;
Main.maxRaining = WorldGen.tempMaxRain;
Main.cloudAlpha = WorldGen.tempMaxRain;
Main.PlaySound(11, -1, -1, 1);
Main.resetClouds = true;
WorldGen.noMapUpdate = false;
}
public static void playWorld()
{
ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.playWorldCallBack), 1);
}
public static void saveAndPlayCallBack(object threadContext)
{
WorldGen.saveWorld(false);
}
public static void saveAndPlay()
{
ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.saveAndPlayCallBack), 1);
}
public static void saveToonWhilePlayingCallBack(object threadContext)
{
Player.SavePlayer(Main.player[Main.myPlayer], Main.playerPathName);
}
public static void saveToonWhilePlaying()
{
ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.saveToonWhilePlayingCallBack), 1);
}
public static void serverLoadWorldCallBack(object threadContext)
{
WorldGen.loadWorld();
if (WorldGen.loadFailed || !WorldGen.loadSuccess)
{
WorldGen.loadWorld();
if (WorldGen.loadFailed || !WorldGen.loadSuccess)
{
if (File.Exists(Main.worldPathName + ".bak"))
{
WorldGen.worldBackup = true;
}
else
{
WorldGen.worldBackup = false;
}
if (!Main.dedServ)
{
if (WorldGen.worldBackup)
{
Main.menuMode = 200;
return;
}
Main.menuMode = 201;
return;
}
else
{
if (!WorldGen.worldBackup)
{
Console.WriteLine("Load failed! No backup found.");
return;
}
File.Copy(Main.worldPathName + ".bak", Main.worldPathName, true);
File.Delete(Main.worldPathName + ".bak");
WorldGen.loadWorld();
if (WorldGen.loadFailed || !WorldGen.loadSuccess)
{
WorldGen.loadWorld();
if (WorldGen.loadFailed || !WorldGen.loadSuccess)
{
Console.WriteLine("Load failed!");
return;
}
}
}
}
}
Main.PlaySound(10, -1, -1, 1);
Netplay.StartServer();
Main.dayTime = WorldGen.tempDayTime;
Main.time = WorldGen.tempTime;
Main.raining = WorldGen.tempRaining;
Main.rainTime = WorldGen.tempRainTime;
Main.maxRaining = WorldGen.tempMaxRain;
Main.cloudAlpha = WorldGen.tempMaxRain;
Main.moonPhase = WorldGen.tempMoonPhase;
Main.bloodMoon = WorldGen.tempBloodMoon;
Main.eclipse = WorldGen.tempEclipse;
}
public static void serverLoadWorld()
{
ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.serverLoadWorldCallBack), 1);
}
public static void clearWorld()
{
if (Main.mapReady)
{
for (int i = 0; i < WorldGen.lastMaxTilesX; i++)
{
float num = (float)i / (float)WorldGen.lastMaxTilesX;
Main.statusText = string.Concat(new object[]
{
Lang.gen[65],
" ",
(int)(num * 100f + 1f),
"%"
});
for (int j = 0; j < WorldGen.lastMaxTilesY; j++)
{
if (Main.map[i, j] != null)
{
Main.map[i, j] = null;
}
}
}
}
Main.clearMap = true;
Main.mapTime = 0;
Main.updateMap = false;
Main.mapReady = false;
Main.refreshMap = false;
Main.eclipse = false;
WorldGen.spawnHardBoss = 0;
WorldGen.totalSolid2 = 0;
WorldGen.totalGood2 = 0;
WorldGen.totalEvil2 = 0;
WorldGen.totalSolid = 0;
WorldGen.totalGood = 0;
WorldGen.totalEvil = 0;
WorldGen.tempMaxRain = 0f;
Main.maxRaining = 0f;
WorldGen.totalX = 0;
WorldGen.totalD = 0;
WorldGen.tEvil = 0;
WorldGen.tGood = 0;
NPC.clrNames();
Main.trashItem = new Item();
WorldGen.spawnEye = false;
WorldGen.spawnNPC = 0;
WorldGen.shadowOrbCount = 0;
WorldGen.altarCount = 0;
WorldGen.oreTier1 = -1;
WorldGen.oreTier2 = -1;
WorldGen.oreTier3 = -1;
Main.cloudBGActive = 0f;
Main.raining = false;
Main.hardMode = false;
Main.helpText = 0;
Main.dungeonX = 0;
Main.dungeonY = 0;
NPC.downedBoss1 = false;
NPC.downedBoss2 = false;
NPC.downedBoss3 = false;
NPC.downedQueenBee = false;
NPC.downedMechBossAny = false;
NPC.downedMechBoss1 = false;
NPC.downedMechBoss2 = false;
NPC.downedMechBoss3 = false;
NPC.downedPlantBoss = false;
NPC.savedGoblin = false;
NPC.savedWizard = false;
NPC.savedMech = false;
NPC.downedGoblins = false;
NPC.downedClown = false;
NPC.downedFrost = false;
NPC.downedPirates = false;
WorldGen.shadowOrbSmashed = false;
WorldGen.spawnMeteor = false;
WorldGen.stopDrops = false;
Main.invasionDelay = 0;
Main.invasionType = 0;
Main.invasionSize = 0;
Main.invasionWarn = 0;
Main.invasionX = 0.0;
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 k = 0; k < WorldGen.lastMaxTilesX; k++)
{
float num2 = (float)k / (float)WorldGen.lastMaxTilesX;
Main.statusText = string.Concat(new object[]
{
Lang.gen[46],
" ",
(int)(num2 * 100f + 1f),
"%"
});
for (int l = 0; l < WorldGen.lastMaxTilesY; l++)
{
Main.tile[k, l] = null;
}
}
}
WorldGen.lastMaxTilesX = Main.maxTilesX;
WorldGen.lastMaxTilesY = Main.maxTilesY;
if (Main.netMode != 1)
{
for (int m = 0; m < Main.maxTilesX; m++)
{
float num3 = (float)m / (float)Main.maxTilesX;
Main.statusText = string.Concat(new object[]
{
Lang.gen[47],
" ",
(int)(num3 * 100f + 1f),
"%"
});
for (int n = 0; n < Main.maxTilesY; n++)
{
Main.tile[m, n] = new Tile();
}
}
}
for (int num4 = 0; num4 < 6000; num4++)
{
Main.dust[num4] = new Dust();
}
for (int num5 = 0; num5 < 500; num5++)
{
Main.gore[num5] = new Gore();
}
for (int num6 = 0; num6 < 400; num6++)
{
Main.item[num6] = new Item();
}
for (int num7 = 0; num7 < 200; num7++)
{
Main.npc[num7] = new NPC();
}
for (int num8 = 0; num8 < 1000; num8++)
{
Main.projectile[num8] = new Projectile();
}
for (int num9 = 0; num9 < 1000; num9++)
{
Main.chest[num9] = null;
}
for (int num10 = 0; num10 < 1000; num10++)
{
Main.sign[num10] = null;
}
for (int num11 = 0; num11 < Liquid.resLiquid; num11++)
{
Main.liquid[num11] = new Liquid();
}
for (int num12 = 0; num12 < 10000; num12++)
{
Main.liquidBuffer[num12] = new LiquidBuffer();
}
WorldGen.setWorldSize();
WorldGen.worldCleared = true;
}
public static void saveWorld(bool resetTime = false)
{
if (Main.worldName == "")
{
Main.worldName = "World";
}
if (WorldGen.saveLock)
{
return;
}
WorldGen.saveLock = true;
while (WorldGen.hardLock)
{
Main.statusText = Lang.gen[48];
}
lock (WorldGen.padlock)
{
try
{
Directory.CreateDirectory(Main.WorldPath);
}
catch
{
}
if (!Main.skipMenu)
{
bool value = Main.dayTime;
WorldGen.tempTime = Main.time;
WorldGen.tempMoonPhase = Main.moonPhase;
WorldGen.tempBloodMoon = Main.bloodMoon;
WorldGen.tempEclipse = Main.eclipse;
if (resetTime)
{
value = true;
WorldGen.tempTime = 13500.0;
WorldGen.tempMoonPhase = 0;
WorldGen.tempBloodMoon = false;
WorldGen.tempEclipse = false;
}
if (Main.worldPathName != null)
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
string text = Main.worldPathName + ".sav";
using (FileStream fileStream = new FileStream(text, FileMode.Create))
{
using (BinaryWriter binaryWriter = new BinaryWriter(fileStream))
{
binaryWriter.Write(Main.curRelease);
binaryWriter.Write(Main.worldName);
binaryWriter.Write(Main.worldID);
binaryWriter.Write((int)Main.leftWorld);
binaryWriter.Write((int)Main.rightWorld);
binaryWriter.Write((int)Main.topWorld);
binaryWriter.Write((int)Main.bottomWorld);
binaryWriter.Write(Main.maxTilesY);
binaryWriter.Write(Main.maxTilesX);
binaryWriter.Write((byte)Main.moonType);
binaryWriter.Write(Main.treeX[0]);
binaryWriter.Write(Main.treeX[1]);
binaryWriter.Write(Main.treeX[2]);
binaryWriter.Write(Main.treeStyle[0]);
binaryWriter.Write(Main.treeStyle[1]);
binaryWriter.Write(Main.treeStyle[2]);
binaryWriter.Write(Main.treeStyle[3]);
binaryWriter.Write(Main.caveBackX[0]);
binaryWriter.Write(Main.caveBackX[1]);
binaryWriter.Write(Main.caveBackX[2]);
binaryWriter.Write(Main.caveBackStyle[0]);
binaryWriter.Write(Main.caveBackStyle[1]);
binaryWriter.Write(Main.caveBackStyle[2]);
binaryWriter.Write(Main.caveBackStyle[3]);
binaryWriter.Write(Main.iceBackStyle);
binaryWriter.Write(Main.jungleBackStyle);
binaryWriter.Write(Main.hellBackStyle);
binaryWriter.Write(Main.spawnTileX);
binaryWriter.Write(Main.spawnTileY);
binaryWriter.Write(Main.worldSurface);
binaryWriter.Write(Main.rockLayer);
binaryWriter.Write(WorldGen.tempTime);
binaryWriter.Write(value);
binaryWriter.Write(WorldGen.tempMoonPhase);
binaryWriter.Write(WorldGen.tempBloodMoon);
binaryWriter.Write(WorldGen.tempEclipse);
binaryWriter.Write(Main.dungeonX);
binaryWriter.Write(Main.dungeonY);
binaryWriter.Write(WorldGen.crimson);
binaryWriter.Write(NPC.downedBoss1);
binaryWriter.Write(NPC.downedBoss2);
binaryWriter.Write(NPC.downedBoss3);
binaryWriter.Write(NPC.downedQueenBee);
binaryWriter.Write(NPC.downedMechBoss1);
binaryWriter.Write(NPC.downedMechBoss2);
binaryWriter.Write(NPC.downedMechBoss3);
binaryWriter.Write(NPC.downedMechBossAny);
binaryWriter.Write(NPC.downedPlantBoss);
binaryWriter.Write(NPC.downedGolemBoss);
binaryWriter.Write(NPC.savedGoblin);
binaryWriter.Write(NPC.savedWizard);
binaryWriter.Write(NPC.savedMech);
binaryWriter.Write(NPC.downedGoblins);
binaryWriter.Write(NPC.downedClown);
binaryWriter.Write(NPC.downedFrost);
binaryWriter.Write(NPC.downedPirates);
binaryWriter.Write(WorldGen.shadowOrbSmashed);
binaryWriter.Write(WorldGen.spawnMeteor);
binaryWriter.Write((byte)WorldGen.shadowOrbCount);
binaryWriter.Write(WorldGen.altarCount);
binaryWriter.Write(Main.hardMode);
binaryWriter.Write(Main.invasionDelay);
binaryWriter.Write(Main.invasionSize);
binaryWriter.Write(Main.invasionType);
binaryWriter.Write(Main.invasionX);
binaryWriter.Write(WorldGen.tempRaining);
binaryWriter.Write(WorldGen.tempRainTime);
binaryWriter.Write(WorldGen.tempMaxRain);
binaryWriter.Write(WorldGen.oreTier1);
binaryWriter.Write(WorldGen.oreTier2);
binaryWriter.Write(WorldGen.oreTier3);
binaryWriter.Write((byte)WorldGen.treeBG);
binaryWriter.Write((byte)WorldGen.corruptBG);
binaryWriter.Write((byte)WorldGen.jungleBG);
binaryWriter.Write((byte)WorldGen.snowBG);
binaryWriter.Write((byte)WorldGen.hallowBG);
binaryWriter.Write((byte)WorldGen.crimsonBG);
binaryWriter.Write((byte)WorldGen.desertBG);
binaryWriter.Write((byte)WorldGen.oceanBG);
binaryWriter.Write((int)Main.cloudBGActive);
binaryWriter.Write((short)Main.numClouds);
binaryWriter.Write(Main.windSpeedSet);
for (int i = 0; i < Main.maxTilesX; i++)
{
float num = (float)i / (float)Main.maxTilesX;
Main.statusText = string.Concat(new object[]
{
Lang.gen[49],
" ",
(int)(num * 100f + 1f),
"%"
});
for (int j = 0; j < Main.maxTilesY; j++)
{
if (Main.tile[i, j].type == 127 && Main.tile[i, j].active())
{
WorldGen.KillTile(i, j, false, false, false);
WorldGen.KillTile(i, j, false, false, false);
if (!Main.tile[i, j].active() && Main.netMode != 0)
{
NetMessage.SendData(17, -1, -1, "", 0, (float)i, (float)j, 0f, 0);
}
}
Tile tile = (Tile)Main.tile[i, j].Clone();
binaryWriter.Write(tile.active());
if (tile.active())
{
binaryWriter.Write(tile.type);
if (Main.tileFrameImportant[(int)tile.type])
{
binaryWriter.Write(tile.frameX);
binaryWriter.Write(tile.frameY);
}
if (tile.color() > 0)
{
binaryWriter.Write(true);
binaryWriter.Write(tile.color());
}
else
{
binaryWriter.Write(false);
}
}
if (Main.tile[i, j].wall > 0)
{
binaryWriter.Write(true);
binaryWriter.Write(tile.wall);
if (tile.wallColor() > 0)
{
binaryWriter.Write(true);
binaryWriter.Write(tile.wallColor());
}
else
{
binaryWriter.Write(false);
}
}
else
{
binaryWriter.Write(false);
}
if (tile.liquid > 0)
{
binaryWriter.Write(true);
binaryWriter.Write(tile.liquid);
binaryWriter.Write(tile.lava());
binaryWriter.Write(tile.honey());
}
else
{
binaryWriter.Write(false);
}
binaryWriter.Write(tile.wire());
binaryWriter.Write(tile.wire2());
binaryWriter.Write(tile.wire3());
binaryWriter.Write(tile.halfBrick());
binaryWriter.Write(tile.slope());
binaryWriter.Write(tile.actuator());
binaryWriter.Write(tile.inActive());
int num2 = 1;
while (j + num2 < Main.maxTilesY && tile.isTheSameAs(Main.tile[i, j + num2]))
{
num2++;
}
num2--;
binaryWriter.Write((short)num2);
j += num2;
}
}
for (int k = 0; k < 1000; k++)
{
if (Main.chest[k] == null)
{
binaryWriter.Write(false);
}
else
{
Chest chest = (Chest)Main.chest[k].Clone();
binaryWriter.Write(true);
binaryWriter.Write(chest.x);
binaryWriter.Write(chest.y);
for (int l = 0; l < Chest.maxItems; l++)
{
if (chest.item[l] == null)
{
chest.item[l] = new Item();
}
if (chest.item[l].type == 0)
{
chest.item[l].stack = 0;
}
binaryWriter.Write((short)chest.item[l].stack);
if (chest.item[l].stack > 0)
{
binaryWriter.Write(chest.item[l].netID);
binaryWriter.Write(chest.item[l].prefix);
}
}
}
}
for (int m = 0; m < 1000; m++)
{
if (Main.sign[m] == null || Main.sign[m].text == null)
{
binaryWriter.Write(false);
}
else
{
Sign sign = (Sign)Main.sign[m].Clone();
binaryWriter.Write(true);
binaryWriter.Write(sign.text);
binaryWriter.Write(sign.x);
binaryWriter.Write(sign.y);
}
}
for (int n = 0; n < 200; n++)
{
NPC nPC = (NPC)Main.npc[n].Clone();
if (nPC.active && nPC.townNPC)
{
binaryWriter.Write(true);
binaryWriter.Write(nPC.name);
binaryWriter.Write(nPC.position.X);
binaryWriter.Write(nPC.position.Y);
binaryWriter.Write(nPC.homeless);
binaryWriter.Write(nPC.homeTileX);
binaryWriter.Write(nPC.homeTileY);
}
}
binaryWriter.Write(false);
binaryWriter.Write(Main.chrName[17]);
binaryWriter.Write(Main.chrName[18]);
binaryWriter.Write(Main.chrName[19]);
binaryWriter.Write(Main.chrName[20]);
binaryWriter.Write(Main.chrName[22]);
binaryWriter.Write(Main.chrName[54]);
binaryWriter.Write(Main.chrName[38]);
binaryWriter.Write(Main.chrName[107]);
binaryWriter.Write(Main.chrName[108]);
binaryWriter.Write(Main.chrName[124]);
binaryWriter.Write(Main.chrName[160]);
binaryWriter.Write(Main.chrName[178]);
binaryWriter.Write(Main.chrName[207]);
binaryWriter.Write(Main.chrName[208]);
binaryWriter.Write(Main.chrName[209]);
binaryWriter.Write(Main.chrName[227]);
binaryWriter.Write(Main.chrName[228]);
binaryWriter.Write(Main.chrName[229]);
binaryWriter.Write(true);
binaryWriter.Write(Main.worldName);
binaryWriter.Write(Main.worldID);
binaryWriter.Close();
fileStream.Close();
if (File.Exists(Main.worldPathName))
{
Main.statusText = Lang.gen[50];
string destFileName = Main.worldPathName + ".bak";
File.Copy(Main.worldPathName, destFileName, true);
}
File.Copy(text, Main.worldPathName, true);
File.Delete(text);
}
}
WorldGen.saveLock = false;
}
}
}
}
public static void randMoon()
{
Main.moonType = WorldGen.genRand.Next(Main.maxMoons);
}
public static void setBG(int bg, int style)
{
if (bg == 0)
{
WorldGen.treeBG = style;
Main.treeMntBG[0] = 7;
Main.treeMntBG[1] = 8;
if (style == 1)
{
Main.treeBG[0] = 50;
Main.treeBG[1] = 51;
Main.treeBG[2] = 52;
return;
}
if (style == 2)
{
Main.treeBG[0] = 53;
Main.treeBG[1] = 54;
Main.treeBG[2] = 55;
return;
}
if (style == 3)
{
Main.treeMntBG[1] = 90;
Main.treeBG[0] = 91;
Main.treeBG[1] = -1;
Main.treeBG[2] = 92;
return;
}
if (style == 31)
{
Main.treeMntBG[1] = 90;
Main.treeBG[0] = 91;
Main.treeBG[1] = -1;
Main.treeBG[2] = 11;
return;
}
if (style == 4)
{
Main.treeMntBG[0] = 93;
Main.treeMntBG[1] = 94;
Main.treeBG[0] = -1;
Main.treeBG[1] = -1;
Main.treeBG[2] = -1;
return;
}
if (style == 5)
{
Main.treeMntBG[0] = 93;
Main.treeMntBG[1] = 94;
Main.treeBG[0] = -1;
Main.treeBG[1] = -1;
Main.treeBG[2] = 55;
return;
}
if (style == 51)
{
Main.treeMntBG[0] = 93;
Main.treeMntBG[1] = 94;
Main.treeBG[0] = -1;
Main.treeBG[1] = -1;
Main.treeBG[2] = 11;
return;
}
if (style == 6)
{
Main.treeMntBG[0] = 171;
Main.treeMntBG[1] = 172;
Main.treeBG[0] = 173;
Main.treeBG[1] = -1;
Main.treeBG[2] = -1;
return;
}
if (style == 7)
{
Main.treeMntBG[0] = 176;
Main.treeMntBG[1] = 177;
Main.treeBG[0] = 178;
Main.treeBG[1] = -1;
Main.treeBG[2] = -1;
return;
}
if (style == 71)
{
Main.treeMntBG[0] = 176;
Main.treeMntBG[1] = 177;
Main.treeBG[0] = 178;
Main.treeBG[1] = -1;
Main.treeBG[2] = 11;
return;
}
if (style == 72)
{
Main.treeMntBG[0] = 176;
Main.treeMntBG[1] = 177;
Main.treeBG[0] = 178;
Main.treeBG[1] = -1;
Main.treeBG[2] = 52;
return;
}
if (style == 73)
{
Main.treeMntBG[0] = 176;
Main.treeMntBG[1] = 177;
Main.treeBG[0] = 178;
Main.treeBG[1] = -1;
Main.treeBG[2] = 55;
return;
}
if (style == 8)
{
Main.treeMntBG[0] = 179;
Main.treeMntBG[1] = 180;
Main.treeBG[0] = 184;
Main.treeBG[1] = -1;
Main.treeBG[2] = -1;
return;
}
Main.treeBG[0] = 9;
Main.treeBG[1] = 10;
Main.treeBG[2] = 11;
return;
}
else
{
if (bg == 1)
{
WorldGen.corruptBG = style;
if (style == 1)
{
Main.corruptBG[0] = 56;
Main.corruptBG[1] = 57;
Main.corruptBG[2] = 58;
return;
}
Main.corruptBG[0] = 12;
Main.corruptBG[1] = 13;
Main.corruptBG[2] = 14;
return;
}
else
{
if (bg == 2)
{
WorldGen.jungleBG = style;
if (style == 1)
{
Main.jungleBG[0] = 59;
Main.jungleBG[1] = 60;
Main.jungleBG[2] = 61;
return;
}
Main.jungleBG[0] = 15;
Main.jungleBG[1] = 16;
Main.jungleBG[2] = 17;
return;
}
else
{
if (bg == 3)
{
WorldGen.snowBG = style;
Main.snowMntBG[0] = 35;
Main.snowMntBG[1] = 36;
if (style == 1)
{
Main.snowBG[0] = 95;
Main.snowBG[1] = 96;
Main.snowBG[2] = 97;
return;
}
if (style == 2)
{
Main.snowMntBG[0] = 98;
Main.snowMntBG[1] = 99;
Main.snowBG[0] = -1;
Main.snowBG[1] = -1;
Main.snowBG[2] = -1;
return;
}
if (style == 21)
{
Main.snowMntBG[0] = 98;
Main.snowMntBG[1] = 99;
Main.snowBG[0] = 95;
Main.snowBG[1] = 96;
Main.snowBG[2] = 97;
return;
}
if (style == 22)
{
Main.snowMntBG[0] = 98;
Main.snowMntBG[1] = 99;
Main.snowBG[0] = 37;
Main.snowBG[1] = 38;
Main.snowBG[2] = 39;
return;
}
if (style == 3)
{
Main.snowMntBG[0] = 98;
Main.snowMntBG[1] = 100;
Main.snowBG[0] = -1;
Main.snowBG[1] = -1;
Main.snowBG[2] = -1;
return;
}
if (style == 31)
{
Main.snowMntBG[0] = 98;
Main.snowMntBG[1] = 100;
Main.snowBG[0] = 95;
Main.snowBG[1] = 96;
Main.snowBG[2] = 97;
return;
}
if (style == 32)
{
Main.snowMntBG[0] = 98;
Main.snowMntBG[1] = 100;
Main.snowBG[0] = 37;
Main.snowBG[1] = 38;
Main.snowBG[2] = 39;
return;
}
if (style == 4)
{
Main.snowMntBG[0] = 98;
Main.snowMntBG[1] = 101;
Main.snowBG[0] = -1;
Main.snowBG[1] = -1;
Main.snowBG[2] = -1;
return;
}
if (style == 41)
{
Main.snowMntBG[0] = 98;
Main.snowMntBG[1] = 101;
Main.snowBG[0] = 95;
Main.snowBG[1] = 96;
Main.snowBG[2] = 97;
return;
}
if (style == 42)
{
Main.snowMntBG[0] = 98;
Main.snowMntBG[1] = 101;
Main.snowBG[0] = 37;
Main.snowBG[1] = 38;
Main.snowBG[2] = 39;
return;
}
Main.snowBG[0] = 37;
Main.snowBG[1] = 38;
Main.snowBG[2] = 39;
return;
}
else
{
if (bg == 4)
{
WorldGen.hallowBG = style;
if (style == 1)
{
Main.hallowBG[0] = 102;
Main.hallowBG[1] = 103;
Main.hallowBG[2] = 104;
return;
}
Main.hallowBG[0] = 29;
Main.hallowBG[1] = 30;
Main.hallowBG[2] = 31;
return;
}
else
{
if (bg == 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;
return;
}
Main.crimsonBG[0] = 43;
Main.crimsonBG[1] = 44;
Main.crimsonBG[2] = 45;
return;
}
else
{
if (bg != 6)
{
if (bg == 7)
{
WorldGen.oceanBG = style;
if (style == 1)
{
Main.oceanBG = 110;
return;
}
if (style == 2)
{
Main.oceanBG = 111;
return;
}
Main.oceanBG = 28;
}
return;
}
WorldGen.desertBG = style;
if (style == 1)
{
Main.desertBG[0] = 108;
Main.desertBG[1] = 109;
return;
}
Main.desertBG[0] = 21;
Main.desertBG[1] = 20;
return;
}
}
}
}
}
}
}
public static void RandomWeather()
{
if (Main.cloudLimit < 10)
{
return;
}
Main.numClouds = WorldGen.genRand.Next(10, Main.cloudLimit);
Main.windSpeed = 0f;
while (Main.windSpeed == 0f)
{
Main.windSpeed = (float)WorldGen.genRand.Next(-100, 101) * 0.01f;
Main.windSpeedSet = Main.windSpeed;
}
Cloud.resetClouds();
}
public static void loadWorld()
{
Main.checkXMas();
if (!File.Exists(Main.worldPathName) && Main.autoGen)
{
for (int i = Main.worldPathName.Length - 1; i >= 0; i--)
{
if (Main.worldPathName.Substring(i, 1) == string.Concat(Path.DirectorySeparatorChar))
{
string path = Main.worldPathName.Substring(0, i);
Directory.CreateDirectory(path);
break;
}
}
WorldGen.clearWorld();
WorldGen.generateWorld(-1);
WorldGen.saveWorld(false);
}
if (WorldGen.genRand == null)
{
WorldGen.genRand = new Random((int)DateTime.Now.Ticks);
}
using (FileStream fileStream = new FileStream(Main.worldPathName, FileMode.Open))
{
using (BinaryReader binaryReader = new BinaryReader(fileStream))
{
try
{
WorldGen.loadFailed = false;
WorldGen.loadSuccess = false;
int num = binaryReader.ReadInt32();
if (num > Main.curRelease)
{
WorldGen.loadFailed = true;
WorldGen.loadSuccess = false;
try
{
binaryReader.Close();
fileStream.Close();
}
catch
{
}
}
else
{
Main.worldName = binaryReader.ReadString();
Main.worldID = binaryReader.ReadInt32();
Main.leftWorld = (float)binaryReader.ReadInt32();
Main.rightWorld = (float)binaryReader.ReadInt32();
Main.topWorld = (float)binaryReader.ReadInt32();
Main.bottomWorld = (float)binaryReader.ReadInt32();
Main.maxTilesY = binaryReader.ReadInt32();
Main.maxTilesX = binaryReader.ReadInt32();
if (num >= 63)
{
Main.moonType = (int)binaryReader.ReadByte();
}
else
{
WorldGen.randMoon();
}
WorldGen.clearWorld();
if (num >= 44)
{
Main.treeX[0] = binaryReader.ReadInt32();
Main.treeX[1] = binaryReader.ReadInt32();
Main.treeX[2] = binaryReader.ReadInt32();
Main.treeStyle[0] = binaryReader.ReadInt32();
Main.treeStyle[1] = binaryReader.ReadInt32();
Main.treeStyle[2] = binaryReader.ReadInt32();
Main.treeStyle[3] = binaryReader.ReadInt32();
}
if (num >= 60)
{
Main.caveBackX[0] = binaryReader.ReadInt32();
Main.caveBackX[1] = binaryReader.ReadInt32();
Main.caveBackX[2] = binaryReader.ReadInt32();
Main.caveBackStyle[0] = binaryReader.ReadInt32();
Main.caveBackStyle[1] = binaryReader.ReadInt32();
Main.caveBackStyle[2] = binaryReader.ReadInt32();
Main.caveBackStyle[3] = binaryReader.ReadInt32();
Main.iceBackStyle = binaryReader.ReadInt32();
if (num >= 61)
{
Main.jungleBackStyle = binaryReader.ReadInt32();
Main.hellBackStyle = binaryReader.ReadInt32();
}
}
else
{
WorldGen.setCaveBacks();
}
Main.spawnTileX = binaryReader.ReadInt32();
Main.spawnTileY = binaryReader.ReadInt32();
Main.worldSurface = binaryReader.ReadDouble();
Main.rockLayer = binaryReader.ReadDouble();
WorldGen.tempTime = binaryReader.ReadDouble();
WorldGen.tempDayTime = binaryReader.ReadBoolean();
WorldGen.tempMoonPhase = binaryReader.ReadInt32();
WorldGen.tempBloodMoon = binaryReader.ReadBoolean();
if (num >= 70)
{
WorldGen.tempEclipse = binaryReader.ReadBoolean();
Main.eclipse = WorldGen.tempEclipse;
}
Main.dungeonX = binaryReader.ReadInt32();
Main.dungeonY = binaryReader.ReadInt32();
if (num >= 56)
{
WorldGen.crimson = binaryReader.ReadBoolean();
}
else
{
WorldGen.crimson = false;
}
NPC.downedBoss1 = binaryReader.ReadBoolean();
NPC.downedBoss2 = binaryReader.ReadBoolean();
NPC.downedBoss3 = binaryReader.ReadBoolean();
if (num >= 66)
{
NPC.downedQueenBee = binaryReader.ReadBoolean();
}
if (num >= 44)
{
NPC.downedMechBoss1 = binaryReader.ReadBoolean();
NPC.downedMechBoss2 = binaryReader.ReadBoolean();
NPC.downedMechBoss3 = binaryReader.ReadBoolean();
NPC.downedMechBossAny = binaryReader.ReadBoolean();
}
if (num >= 64)
{
NPC.downedPlantBoss = binaryReader.ReadBoolean();
NPC.downedGolemBoss = binaryReader.ReadBoolean();
}
if (num >= 29)
{
NPC.savedGoblin = binaryReader.ReadBoolean();
NPC.savedWizard = binaryReader.ReadBoolean();
if (num >= 34)
{
NPC.savedMech = binaryReader.ReadBoolean();
}
NPC.downedGoblins = binaryReader.ReadBoolean();
}
if (num >= 32)
{
NPC.downedClown = binaryReader.ReadBoolean();
}
if (num >= 37)
{
NPC.downedFrost = binaryReader.ReadBoolean();
}
if (num >= 56)
{
NPC.downedPirates = binaryReader.ReadBoolean();
}
WorldGen.shadowOrbSmashed = binaryReader.ReadBoolean();
WorldGen.spawnMeteor = binaryReader.ReadBoolean();
WorldGen.shadowOrbCount = (int)binaryReader.ReadByte();
if (num >= 23)
{
WorldGen.altarCount = binaryReader.ReadInt32();
Main.hardMode = binaryReader.ReadBoolean();
}
Main.invasionDelay = binaryReader.ReadInt32();
Main.invasionSize = binaryReader.ReadInt32();
Main.invasionType = binaryReader.ReadInt32();
Main.invasionX = binaryReader.ReadDouble();
if (num >= 53)
{
WorldGen.tempRaining = binaryReader.ReadBoolean();
WorldGen.tempRainTime = binaryReader.ReadInt32();
WorldGen.tempMaxRain = binaryReader.ReadSingle();
}
if (num >= 54)
{
WorldGen.oreTier1 = binaryReader.ReadInt32();
WorldGen.oreTier2 = binaryReader.ReadInt32();
WorldGen.oreTier3 = binaryReader.ReadInt32();
}
else
{
if (num >= 23 && WorldGen.altarCount == 0)
{
WorldGen.oreTier1 = -1;
WorldGen.oreTier2 = -1;
WorldGen.oreTier3 = -1;
}
else
{
WorldGen.oreTier1 = 107;
WorldGen.oreTier2 = 108;
WorldGen.oreTier3 = 111;
}
}
int style = 0;
int style2 = 0;
int style3 = 0;
int style4 = 0;
int style5 = 0;
int style6 = 0;
int style7 = 0;
int style8 = 0;
if (num >= 55)
{
style = (int)binaryReader.ReadByte();
style2 = (int)binaryReader.ReadByte();
style3 = (int)binaryReader.ReadByte();
}
if (num >= 60)
{
style4 = (int)binaryReader.ReadByte();
style5 = (int)binaryReader.ReadByte();
style6 = (int)binaryReader.ReadByte();
style7 = (int)binaryReader.ReadByte();
style8 = (int)binaryReader.ReadByte();
}
WorldGen.setBG(0, style);
WorldGen.setBG(1, style2);
WorldGen.setBG(2, style3);
WorldGen.setBG(3, style4);
WorldGen.setBG(4, style5);
WorldGen.setBG(5, style6);
WorldGen.setBG(6, style7);
WorldGen.setBG(7, style8);
if (num >= 60)
{
Main.cloudBGActive = (float)binaryReader.ReadInt32();
if (Main.cloudBGActive >= 1f)
{
Main.cloudBGAlpha = 1f;
}
else
{
Main.cloudBGAlpha = 0f;
}
}
else
{
Main.cloudBGActive = (float)(-(float)WorldGen.genRand.Next(8640, 86400));
}
if (num >= 62)
{
Main.numClouds = (int)binaryReader.ReadInt16();
Main.windSpeedSet = binaryReader.ReadSingle();
Main.windSpeed = Main.windSpeedSet;
}
else
{
WorldGen.RandomWeather();
}
for (int j = 0; j < Main.maxTilesX; j++)
{
float num2 = (float)j / (float)Main.maxTilesX;
Main.statusText = string.Concat(new object[]
{
Lang.gen[51],
" ",
(int)(num2 * 100f + 1f),
"%"
});
for (int k = 0; k < Main.maxTilesY; k++)
{
Main.tile[j, k].active(binaryReader.ReadBoolean());
if (Main.tile[j, k].active())
{
Main.tile[j, k].type = binaryReader.ReadByte();
if (Main.tile[j, k].type == 127)
{
Main.tile[j, k].active(false);
}
if (Main.tileFrameImportant[(int)Main.tile[j, k].type])
{
if (num < 28 && Main.tile[j, k].type == 4)
{
Main.tile[j, k].frameX = 0;
Main.tile[j, k].frameY = 0;
}
else
{
if (num < 40 && Main.tile[j, k].type == 19)
{
Main.tile[j, k].frameX = 0;
Main.tile[j, k].frameY = 0;
}
else
{
Main.tile[j, k].frameX = binaryReader.ReadInt16();
Main.tile[j, k].frameY = binaryReader.ReadInt16();
if (Main.tile[j, k].type == 144)
{
Main.tile[j, k].frameY = 0;
}
}
}
}
else
{
Main.tile[j, k].frameX = -1;
Main.tile[j, k].frameY = -1;
}
if (num >= 48 && binaryReader.ReadBoolean())
{
Main.tile[j, k].color(binaryReader.ReadByte());
}
}
if (num <= 25)
{
binaryReader.ReadBoolean();
}
if (binaryReader.ReadBoolean())
{
Main.tile[j, k].wall = binaryReader.ReadByte();
if (num >= 48 && binaryReader.ReadBoolean())
{
Main.tile[j, k].wallColor(binaryReader.ReadByte());
}
}
if (binaryReader.ReadBoolean())
{
Main.tile[j, k].liquid = binaryReader.ReadByte();
Main.tile[j, k].lava(binaryReader.ReadBoolean());
if (num >= 51)
{
Main.tile[j, k].honey(binaryReader.ReadBoolean());
}
}
if (num >= 33)
{
Main.tile[j, k].wire(binaryReader.ReadBoolean());
}
if (num >= 43)
{
Main.tile[j, k].wire2(binaryReader.ReadBoolean());
Main.tile[j, k].wire3(binaryReader.ReadBoolean());
}
if (num >= 41)
{
Main.tile[j, k].halfBrick(binaryReader.ReadBoolean());
if (!Main.tileSolid[(int)Main.tile[j, k].type])
{
Main.tile[j, k].halfBrick(false);
}
if (num >= 49)
{
Main.tile[j, k].slope(binaryReader.ReadByte());
if (!Main.tileSolid[(int)Main.tile[j, k].type])
{
Main.tile[j, k].slope(0);
}
}
}
if (num >= 42)
{
Main.tile[j, k].actuator(binaryReader.ReadBoolean());
Main.tile[j, k].inActive(binaryReader.ReadBoolean());
}
if (num >= 25)
{
int num3 = (int)binaryReader.ReadInt16();
if (num3 > 0)
{
for (int l = k + 1; l < k + num3 + 1; l++)
{
Main.tile[j, l].active(Main.tile[j, k].active());
Main.tile[j, l].type = Main.tile[j, k].type;
Main.tile[j, l].wall = Main.tile[j, k].wall;
Main.tile[j, l].frameX = Main.tile[j, k].frameX;
Main.tile[j, l].frameY = Main.tile[j, k].frameY;
Main.tile[j, l].liquid = Main.tile[j, k].liquid;
Main.tile[j, l].lava(Main.tile[j, k].lava());
Main.tile[j, l].honey(Main.tile[j, k].honey());
Main.tile[j, l].wire(Main.tile[j, k].wire());
Main.tile[j, l].wire2(Main.tile[j, k].wire2());
Main.tile[j, l].wire3(Main.tile[j, k].wire3());
Main.tile[j, l].halfBrick(Main.tile[j, k].halfBrick());
Main.tile[j, l].actuator(Main.tile[j, k].actuator());
Main.tile[j, l].inActive(Main.tile[j, k].inActive());
Main.tile[j, l].color(Main.tile[j, k].color());
Main.tile[j, l].wallColor(Main.tile[j, k].wallColor());
}
k += num3;
}
}
}
}
if (num < 67)
{
WorldGen.FixSunflowers();
}
int num4 = 40;
if (num < 58)
{
num4 = 20;
}
for (int m = 0; m < 1000; m++)
{
if (binaryReader.ReadBoolean())
{
Main.chest[m] = new Chest();
Main.chest[m].x = binaryReader.ReadInt32();
Main.chest[m].y = binaryReader.ReadInt32();
for (int n = 0; n < 40; n++)
{
Main.chest[m].item[n] = new Item();
if (n < num4)
{
int num5;
if (num >= 59)
{
num5 = (int)binaryReader.ReadInt16();
}
else
{
num5 = (int)binaryReader.ReadByte();
}
if (num5 > 0)
{
if (num >= 38)
{
Main.chest[m].item[n].netDefaults(binaryReader.ReadInt32());
}
else
{
string defaults = Item.VersionName(binaryReader.ReadString(), num);
Main.chest[m].item[n].SetDefaults(defaults);
}
Main.chest[m].item[n].stack = num5;
if (num >= 36)
{
Main.chest[m].item[n].Prefix((int)binaryReader.ReadByte());
}
}
}
}
}
}
for (int num6 = 0; num6 < 1000; num6++)
{
if (binaryReader.ReadBoolean())
{
string text = binaryReader.ReadString();
int num7 = binaryReader.ReadInt32();
int num8 = binaryReader.ReadInt32();
if (Main.tile[num7, num8].active() && (Main.tile[num7, num8].type == 55 || Main.tile[num7, num8].type == 85))
{
Main.sign[num6] = new Sign();
Main.sign[num6].x = num7;
Main.sign[num6].y = num8;
Main.sign[num6].text = text;
}
}
}
bool flag = binaryReader.ReadBoolean();
int num9 = 0;
while (flag)
{
Main.npc[num9].SetDefaults(binaryReader.ReadString());
Main.npc[num9].position.X = binaryReader.ReadSingle();
Main.npc[num9].position.Y = binaryReader.ReadSingle();
Main.npc[num9].homeless = binaryReader.ReadBoolean();
Main.npc[num9].homeTileX = binaryReader.ReadInt32();
Main.npc[num9].homeTileY = binaryReader.ReadInt32();
flag = binaryReader.ReadBoolean();
num9++;
}
if (num >= 31)
{
Main.chrName[17] = binaryReader.ReadString();
Main.chrName[18] = binaryReader.ReadString();
Main.chrName[19] = binaryReader.ReadString();
Main.chrName[20] = binaryReader.ReadString();
Main.chrName[22] = binaryReader.ReadString();
Main.chrName[54] = binaryReader.ReadString();
Main.chrName[38] = binaryReader.ReadString();
Main.chrName[107] = binaryReader.ReadString();
Main.chrName[108] = binaryReader.ReadString();
if (num >= 35)
{
Main.chrName[124] = binaryReader.ReadString();
if (num >= 65)
{
Main.chrName[160] = binaryReader.ReadString();
Main.chrName[178] = binaryReader.ReadString();
Main.chrName[207] = binaryReader.ReadString();
Main.chrName[208] = binaryReader.ReadString();
Main.chrName[209] = binaryReader.ReadString();
Main.chrName[227] = binaryReader.ReadString();
Main.chrName[228] = binaryReader.ReadString();
Main.chrName[229] = binaryReader.ReadString();
}
}
}
if (num >= 7)
{
bool flag2 = binaryReader.ReadBoolean();
string text2 = binaryReader.ReadString();
int num10 = binaryReader.ReadInt32();
if (!flag2 || !(text2 == Main.worldName) || num10 != Main.worldID)
{
WorldGen.loadSuccess = false;
WorldGen.loadFailed = true;
binaryReader.Close();
fileStream.Close();
return;
}
WorldGen.loadSuccess = true;
}
else
{
WorldGen.loadSuccess = true;
}
binaryReader.Close();
fileStream.Close();
if (!WorldGen.loadFailed && WorldGen.loadSuccess)
{
WorldGen.gen = true;
for (int num11 = 0; num11 < Main.maxTilesX; num11++)
{
float num12 = (float)num11 / (float)Main.maxTilesX;
Main.statusText = string.Concat(new object[]
{
Lang.gen[52],
" ",
(int)(num12 * 100f + 1f),
"%"
});
WorldGen.CountTiles(num11);
}
WorldGen.waterLine = Main.maxTilesY;
NPC.setNames();
Liquid.QuickWater(2, -1, -1);
WorldGen.WaterCheck();
int num13 = 0;
Liquid.quickSettle = true;
int num14 = Liquid.numLiquid + LiquidBuffer.numLiquidBuffer;
float num15 = 0f;
while (Liquid.numLiquid > 0 && num13 < 100000)
{
num13++;
float num16 = (float)(num14 - (Liquid.numLiquid + LiquidBuffer.numLiquidBuffer)) / (float)num14;
if (Liquid.numLiquid + LiquidBuffer.numLiquidBuffer > num14)
{
num14 = Liquid.numLiquid + LiquidBuffer.numLiquidBuffer;
}
if (num16 > num15)
{
num15 = num16;
}
else
{
num16 = num15;
}
Main.statusText = string.Concat(new object[]
{
Lang.gen[27],
" ",
(int)(num16 * 100f / 2f + 50f),
"%"
});
Liquid.UpdateLiquid();
}
Liquid.quickSettle = false;
Main.weatherCounter = WorldGen.genRand.Next(3600, 18000);
Cloud.resetClouds();
WorldGen.WaterCheck();
WorldGen.gen = false;
}
}
}
catch
{
WorldGen.loadFailed = true;
WorldGen.loadSuccess = false;
try
{
binaryReader.Close();
fileStream.Close();
}
catch
{
}
}
}
}
}
private static void resetGen()
{
WorldGen.mudWall = false;
WorldGen.hellChest = 0;
WorldGen.JungleX = 0;
WorldGen.numMCaves = 0;
WorldGen.numIslandHouses = 0;
WorldGen.houseCount = 0;
WorldGen.dEnteranceX = 0;
WorldGen.numDRooms = 0;
WorldGen.numDDoors = 0;
WorldGen.numDPlats = 0;
WorldGen.numJChests = 0;
WorldGen.numHives = 0;
}
public static bool mayanTrap(int x2, int y2)
{
int num = 1;
if (WorldGen.genRand.Next(3) == 0)
{
num = 0;
}
int num2 = y2;
while (!WorldGen.SolidTile(x2, num2))
{
num2++;
if (num2 >= Main.maxTilesY - 300)
{
return false;
}
}
if (Main.tile[x2, num2].type == 232)
{
return false;
}
num2--;
if (Main.tile[x2, num2].liquid > 0 && Main.tile[x2, num2].lava())
{
return false;
}
if (num == -1 && Main.rand.Next(20) == 0)
{
num = 2;
}
else
{
if (num == -1)
{
num = Main.rand.Next(2);
}
}
if (Main.tile[x2, num2].nactive() || Main.tile[x2 - 1, num2].nactive() || Main.tile[x2 + 1, num2].nactive() || Main.tile[x2, num2 - 1].nactive() || Main.tile[x2 - 1, num2 - 1].nactive() || Main.tile[x2 + 1, num2 - 1].nactive() || Main.tile[x2, num2 - 2].nactive() || Main.tile[x2 - 1, num2 - 2].nactive() || Main.tile[x2 + 1, num2 - 2].nactive())
{
return false;
}
if (Main.tile[x2, num2 + 1].type == 48)
{
return false;
}
if (Main.tile[x2, num2 + 1].type == 232)
{
return false;
}
if (num == 0)
{
int num3 = x2;
int num4 = num2;
num4 -= WorldGen.genRand.Next(3);
while (!WorldGen.SolidTile(num3, num4))
{
num3--;
}
int num5 = num3;
num3 = x2;
while (!WorldGen.SolidTile(num3, num4))
{
num3++;
}
int num6 = num3;
int num7 = x2 - num5;
int num8 = num6 - x2;
bool flag = false;
bool flag2 = false;
if (num7 > 5 && num7 < 50)
{
flag = true;
}
if (num8 > 5 && num8 < 50)
{
flag2 = true;
}
if (flag && !WorldGen.SolidTile(num5, num4 + 1))
{
flag = false;
}
if (flag2 && !WorldGen.SolidTile(num6, num4 + 1))
{
flag2 = false;
}
if (flag && (Main.tile[num5, num4].type == 10 || Main.tile[num5, num4].type == 48 || Main.tile[num5, num4 + 1].type == 10 || Main.tile[num5, num4 + 1].type == 48))
{
flag = false;
}
if (flag2 && (Main.tile[num6, num4].type == 10 || Main.tile[num6, num4].type == 48 || Main.tile[num6, num4 + 1].type == 10 || Main.tile[num6, num4 + 1].type == 48))
{
flag2 = false;
}
int num9;
if (flag && flag2)
{
num9 = 1;
num3 = num5;
if (WorldGen.genRand.Next(2) == 0)
{
num3 = num6;
num9 = -1;
}
}
else
{
if (flag2)
{
num3 = num6;
num9 = -1;
}
else
{
if (!flag)
{
return false;
}
num3 = num5;
num9 = 1;
}
}
if (Main.tile[num3, num4].wall != 87)
{
return false;
}
if (Main.tile[num3, num4].type == 190)
{
return false;
}
if (Main.tile[num3, num4].type == 135)
{
return false;
}
if (Main.tile[num3, num4].type == 137)
{
return false;
}
if (Main.tile[num3, num4].type == 232)
{
return false;
}
WorldGen.PlaceTile(x2, num2, 135, true, true, -1, 6);
WorldGen.KillTile(num3, num4, false, false, false);
int num10 = WorldGen.genRand.Next(3);
if (Main.tile[x2, num2].wire())
{
num10 = 0;
}
if (Main.tile[x2, num2].wire2())
{
num10 = 1;
}
if (Main.tile[x2, num2].wire3())
{
num10 = 2;
}
int num11 = Math.Abs(num3 - x2);
int style = 1;
if (num11 < 10 && WorldGen.genRand.Next(3) != 0)
{
style = 2;
}
WorldGen.PlaceTile(num3, num4, 137, true, true, -1, style);
if (num9 == 1)
{
Tile expr_482 = Main.tile[num3, num4];
expr_482.frameX += 18;
}
int i = WorldGen.genRand.Next(5);
int num12 = num4;
while (i > 0)
{
i--;
num12--;
if (!WorldGen.SolidTile(num3, num12) || !WorldGen.SolidTile(num3 - num9, num12) || WorldGen.SolidTile(num3 + num9, num12))
{
break;
}
WorldGen.PlaceTile(num3, num12, 137, true, true, -1, style);
if (num9 == 1)
{
Tile expr_505 = Main.tile[num3, num12];
expr_505.frameX += 18;
}
if (num10 == 0)
{
Main.tile[num3, num12].wire(true);
}
else
{
if (num10 == 1)
{
Main.tile[num3, num12].wire2(true);
}
else
{
if (num10 == 2)
{
Main.tile[num3, num12].wire3(true);
}
}
}
}
int num13 = x2;
int num14 = num2;
while (num13 != num3 || num14 != num4)
{
if (num10 == 0)
{
Main.tile[num13, num14].wire(true);
}
else
{
if (num10 == 1)
{
Main.tile[num13, num14].wire2(true);
}
else
{
if (num10 == 2)
{
Main.tile[num13, num14].wire3(true);
}
}
}
if (num13 > num3)
{
num13--;
}
if (num13 < num3)
{
num13++;
}
if (num10 == 0)
{
Main.tile[num13, num14].wire(true);
}
else
{
if (num10 == 1)
{
Main.tile[num13, num14].wire2(true);
}
else
{
if (num10 == 2)
{
Main.tile[num13, num14].wire3(true);
}
}
}
if (num14 > num4)
{
num14--;
}
if (num14 < num4)
{
num14++;
}
if (num10 == 0)
{
Main.tile[num13, num14].wire(true);
}
else
{
if (num10 == 1)
{
Main.tile[num13, num14].wire2(true);
}
else
{
if (num10 == 2)
{
Main.tile[num13, num14].wire3(true);
}
}
}
}
return true;
}
else
{
if (num != 1)
{
return false;
}
int num15 = num2;
while (!WorldGen.SolidTile(x2, num15))
{
num15--;
if ((double)num15 < Main.worldSurface)
{
return false;
}
}
int num16 = Math.Abs(num15 - num2);
if (num16 < 3)
{
return false;
}
int num17 = WorldGen.genRand.Next(3);
if (Main.tile[x2, num2].wire())
{
num17 = 0;
}
if (Main.tile[x2, num2].wire2())
{
num17 = 1;
}
if (Main.tile[x2, num2].wire3())
{
num17 = 2;
}
int style2 = 3;
if (num16 < 16 && Main.rand.Next(3) != 0)
{
style2 = 4;
}
if (Main.tile[x2, num15].type == 135)
{
return false;
}
if (Main.tile[x2, num15].type == 137)
{
return false;
}
if (Main.tile[x2, num15].type == 232)
{
return false;
}
if (Main.tile[x2, num15].wall != 87)
{
return false;
}
WorldGen.PlaceTile(x2, num2, 135, true, true, -1, 6);
WorldGen.PlaceTile(x2, num15, 137, true, true, -1, style2);
for (int j = 0; j < 2; j++)
{
int k = WorldGen.genRand.Next(1, 5);
int num18 = x2;
int num19 = -1;
if (j == 1)
{
num19 = 1;
}
while (k > 0)
{
k--;
num18 += num19;
if (!WorldGen.SolidTile(num18, num15 - 1) || WorldGen.SolidTile(num18, num15 + 1))
{
break;
}
WorldGen.PlaceTile(num18, num15, 137, true, true, -1, style2);
if (num17 == 0)
{
Main.tile[num18, num15].wire(true);
}
else
{
if (num17 == 1)
{
Main.tile[num18, num15].wire2(true);
}
else
{
if (num17 == 2)
{
Main.tile[num18, num15].wire3(true);
}
}
}
}
}
int num20 = x2;
int num21 = num2;
while (num20 != x2 || num21 != num15)
{
if (num17 == 0)
{
Main.tile[num20, num21].wire(true);
}
else
{
if (num17 == 1)
{
Main.tile[num20, num21].wire2(true);
}
else
{
if (num17 == 2)
{
Main.tile[num20, num21].wire3(true);
}
}
}
if (num20 > x2)
{
num20--;
}
if (num20 < x2)
{
num20++;
}
if (num17 == 0)
{
Main.tile[num20, num21].wire(true);
}
else
{
if (num17 == 1)
{
Main.tile[num20, num21].wire2(true);
}
else
{
if (num17 == 2)
{
Main.tile[num20, num21].wire3(true);
}
}
}
if (num21 > num15)
{
num21--;
}
if (num21 < num15)
{
num21++;
}
if (num17 == 0)
{
Main.tile[num20, num21].wire(true);
}
else
{
if (num17 == 1)
{
Main.tile[num20, num21].wire2(true);
}
else
{
if (num17 == 2)
{
Main.tile[num20, num21].wire3(true);
}
}
}
}
return true;
}
}
public static bool placeTrap(int x2, int y2, int type = -1)
{
int num = y2;
while (!WorldGen.SolidTile(x2, num))
{
num++;
if (num >= Main.maxTilesY - 300)
{
return false;
}
}
num--;
if (Main.tile[x2, num].wall == 87)
{
return false;
}
if (Main.tile[x2, num].liquid > 0 && Main.tile[x2, num].lava())
{
return false;
}
if (type == -1 && Main.rand.Next(20) == 0)
{
type = 2;
}
else
{
if (type == -1)
{
type = Main.rand.Next(2);
}
}
if (Main.tile[x2, num].nactive() || Main.tile[x2 - 1, num].nactive() || Main.tile[x2 + 1, num].nactive() || Main.tile[x2, num - 1].nactive() || Main.tile[x2 - 1, num - 1].nactive() || Main.tile[x2 + 1, num - 1].nactive() || Main.tile[x2, num - 2].nactive() || Main.tile[x2 - 1, num - 2].nactive() || Main.tile[x2 + 1, num - 2].nactive())
{
return false;
}
if (Main.tile[x2, num + 1].type == 48)
{
return false;
}
if (Main.tile[x2, num + 1].type == 232)
{
return false;
}
if (type == 1)
{
for (int i = x2 - 3; i <= x2 + 3; i++)
{
for (int j = num - 3; j <= num + 3; j++)
{
if (Main.tile[i, j].type == 147 || Main.tile[i, j].type == 161)
{
type = 0;
}
}
}
}
if (type == 0)
{
int num2 = x2;
int num3 = num;
num3 -= WorldGen.genRand.Next(3);
while (!WorldGen.SolidTile(num2, num3))
{
num2--;
}
int num4 = num2;
num2 = x2;
while (!WorldGen.SolidTile(num2, num3))
{
num2++;
}
int num5 = num2;
int num6 = x2 - num4;
int num7 = num5 - x2;
bool flag = false;
bool flag2 = false;
if (num6 > 5 && num6 < 50)
{
flag = true;
}
if (num7 > 5 && num7 < 50)
{
flag2 = true;
}
if (flag && !WorldGen.SolidTile(num4, num3 + 1))
{
flag = false;
}
if (flag2 && !WorldGen.SolidTile(num5, num3 + 1))
{
flag2 = false;
}
if (flag && (Main.tile[num4, num3].type == 10 || Main.tile[num4, num3].type == 48 || Main.tile[num4, num3 + 1].type == 10 || Main.tile[num4, num3 + 1].type == 48))
{
flag = false;
}
if (flag2 && (Main.tile[num5, num3].type == 10 || Main.tile[num5, num3].type == 48 || Main.tile[num5, num3 + 1].type == 10 || Main.tile[num5, num3 + 1].type == 48))
{
flag2 = false;
}
int num8;
if (flag && flag2)
{
num8 = 1;
num2 = num4;
if (WorldGen.genRand.Next(2) == 0)
{
num2 = num5;
num8 = -1;
}
}
else
{
if (flag2)
{
num2 = num5;
num8 = -1;
}
else
{
if (!flag)
{
return false;
}
num2 = num4;
num8 = 1;
}
}
if (Main.tile[num2, num3].type == 190)
{
return false;
}
if (Main.tile[x2, num].wall > 0)
{
WorldGen.PlaceTile(x2, num, 135, true, true, -1, 2);
}
else
{
WorldGen.PlaceTile(x2, num, 135, true, true, -1, WorldGen.genRand.Next(2, 4));
}
WorldGen.KillTile(num2, num3, false, false, false);
WorldGen.PlaceTile(num2, num3, 137, true, true, -1, 0);
if (num8 == 1)
{
Tile expr_42F = Main.tile[num2, num3];
expr_42F.frameX += 18;
}
int num9 = x2;
int num10 = num;
while (num9 != num2 || num10 != num3)
{
Main.tile[num9, num10].wire(true);
if (num9 > num2)
{
num9--;
}
if (num9 < num2)
{
num9++;
}
Main.tile[num9, num10].wire(true);
if (num10 > num3)
{
num10--;
}
if (num10 < num3)
{
num10++;
}
Main.tile[num9, num10].wire(true);
}
return true;
}
else
{
if (type != 1)
{
if (type == 2)
{
int num11 = Main.rand.Next(4, 7);
int num12 = x2 + Main.rand.Next(-1, 2);
int num13 = num;
for (int k = 0; k < num11; k++)
{
num13++;
if (!WorldGen.SolidTile(num12, num13))
{
return false;
}
}
for (int l = num12 - 2; l <= num12 + 2; l++)
{
for (int m = num13 - 2; m <= num13 + 2; m++)
{
if (!WorldGen.SolidTile(l, m))
{
return false;
}
}
}
WorldGen.KillTile(num12, num13, false, false, false);
Main.tile[num12, num13].active(true);
Main.tile[num12, num13].type = 141;
Main.tile[num12, num13].frameX = 0;
Main.tile[num12, num13].frameY = (short)(18 * Main.rand.Next(2));
WorldGen.PlaceTile(x2, num, 135, true, true, -1, WorldGen.genRand.Next(2, 4));
int num14 = x2;
int num15 = num;
while (num14 != num12 || num15 != num13)
{
Main.tile[num14, num15].wire(true);
if (num14 > num12)
{
num14--;
}
if (num14 < num12)
{
num14++;
}
Main.tile[num14, num15].wire(true);
if (num15 > num13)
{
num15--;
}
if (num15 < num13)
{
num15++;
}
Main.tile[num14, num15].wire(true);
}
}
return false;
}
int num16 = num - 8;
int num17 = x2 + WorldGen.genRand.Next(-1, 2);
bool flag3 = true;
while (flag3)
{
bool flag4 = true;
int num18 = 0;
for (int n = num17 - 2; n <= num17 + 3; n++)
{
for (int num19 = num16; num19 <= num16 + 3; num19++)
{
if (!WorldGen.SolidTile(n, num19))
{
flag4 = false;
}
if (Main.tile[n, num19].active() && (Main.tile[n, num19].type == 0 || Main.tile[n, num19].type == 1 || Main.tile[n, num19].type == 59))
{
num18++;
}
}
}
num16--;
if ((double)num16 < Main.worldSurface)
{
return false;
}
if (flag4 && num18 > 2)
{
flag3 = false;
}
}
if (num - num16 <= 5 || num - num16 >= 40)
{
return false;
}
for (int num20 = num17; num20 <= num17 + 1; num20++)
{
for (int num21 = num16; num21 <= num; num21++)
{
if (WorldGen.SolidTile(num20, num21))
{
WorldGen.KillTile(num20, num21, false, false, false);
}
}
}
for (int num22 = num17 - 2; num22 <= num17 + 3; num22++)
{
for (int num23 = num16 - 2; num23 <= num16 + 3; num23++)
{
if (WorldGen.SolidTile(num22, num23))
{
Main.tile[num22, num23].type = 1;
}
}
}
WorldGen.PlaceTile(x2, num, 135, true, true, -1, WorldGen.genRand.Next(2, 4));
WorldGen.PlaceTile(num17, num16 + 2, 130, true, false, -1, 0);
WorldGen.PlaceTile(num17 + 1, num16 + 2, 130, true, false, -1, 0);
WorldGen.PlaceTile(num17 + 1, num16 + 1, 138, true, false, -1, 0);
num16 += 2;
Main.tile[num17, num16].wire(true);
Main.tile[num17 + 1, num16].wire(true);
num16++;
WorldGen.PlaceTile(num17, num16, 130, true, false, -1, 0);
WorldGen.PlaceTile(num17 + 1, num16, 130, true, false, -1, 0);
Main.tile[num17, num16].wire(true);
Main.tile[num17 + 1, num16].wire(true);
WorldGen.PlaceTile(num17, num16 + 1, 130, true, false, -1, 0);
WorldGen.PlaceTile(num17 + 1, num16 + 1, 130, true, false, -1, 0);
Main.tile[num17, num16 + 1].wire(true);
Main.tile[num17 + 1, num16 + 1].wire(true);
int num24 = x2;
int num25 = num;
while (num24 != num17 || num25 != num16)
{
Main.tile[num24, num25].wire(true);
if (num24 > num17)
{
num24--;
}
if (num24 < num17)
{
num24++;
}
Main.tile[num24, num25].wire(true);
if (num25 > num16)
{
num25--;
}
if (num25 < num16)
{
num25++;
}
Main.tile[num24, num25].wire(true);
}
return true;
}
}
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;
return;
}
for (int i = 0; i < WorldGen.numTileCount; i++)
{
if (WorldGen.countX[i] == x && WorldGen.countY[i] == y)
{
return;
}
}
if (!jungle)
{
if (Main.tile[x, y].wall != 0)
{
WorldGen.numTileCount = WorldGen.maxTileCount;
return;
}
if (!lavaOk)
{
if (Main.tile[x, y].lava() && Main.tile[x, y].liquid > 0)
{
WorldGen.lavaCount++;
WorldGen.numTileCount = WorldGen.maxTileCount;
return;
}
}
else
{
if (Main.tile[x, y].lava() && Main.tile[x, y].liquid > 0)
{
WorldGen.lavaCount++;
}
}
}
if (Main.tile[x, y].active())
{
if (Main.tile[x, y].type == 1)
{
WorldGen.rockCount++;
}
if (Main.tile[x, y].type == 147 || Main.tile[x, y].type == 161)
{
WorldGen.iceCount++;
}
}
if (!WorldGen.SolidTile(x, y))
{
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;
return;
}
for (int i = 0; i < WorldGen.numTileCount; i++)
{
if (WorldGen.countX[i] == x && WorldGen.countY[i] == y)
{
return;
}
}
if (Main.tile[x, y].active() && (Main.tile[x, y].type == 147 || Main.tile[x, y].type == 161))
{
WorldGen.numTileCount = WorldGen.maxTileCount;
return;
}
if (Main.tile[x, y].wall == 78)
{
WorldGen.numTileCount = 3500;
return;
}
if (!WorldGen.SolidTile(x, y) && (Main.tile[x, y].wall == 2 || Main.tile[x, y].wall == 59))
{
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 void mossCave(int x, int y)
{
WorldGen.mossOut(x, y);
}
public static void mossOut(int x, int y)
{
if (!WorldGen.SolidTile(x, y) && Main.tile[x, y].wall == 0)
{
Main.tile[x, y].wall = WorldGen.mossWall;
WorldGen.mossOut(x - 1, y);
WorldGen.mossOut(x + 1, y);
WorldGen.mossOut(x, y - 1);
WorldGen.mossOut(x, y + 1);
return;
}
if (Main.tile[x, y].active())
{
if (Main.tile[x, y].wall == 0)
{
Main.tile[x, y].wall = WorldGen.mossWall;
}
int type = (int)Main.tile[x, y].type;
if (type == 1)
{
Main.tile[x, y].type = WorldGen.mossTile;
}
}
}
public static void wallOut(int x, int y, int wall)
{
if (!WorldGen.SolidTile(x, y) && Main.tile[x, y].wall == 0)
{
Main.tile[x, y].wall = (byte)wall;
WorldGen.wallOut(x - 1, y, wall);
WorldGen.wallOut(x + 1, y, wall);
WorldGen.wallOut(x, y - 1, wall);
WorldGen.wallOut(x, y + 1, wall);
return;
}
if (Main.tile[x, y].active() && Main.tile[x, y].wall == 0)
{
Main.tile[x, y].wall = (byte)wall;
}
}
public static void wallOut2(int x, int y, int wall)
{
try
{
if (!WorldGen.SolidTile(x, y) && (int)Main.tile[x, y].wall != wall && Main.tile[x, y].wall != 4 && Main.tile[x, y].wall != 40 && Main.tile[x, y].wall != 3)
{
if (wall != 63 || Main.tile[x, y].wall != 0)
{
WorldGen.numWallOut2++;
if (WorldGen.numWallOut2 < WorldGen.maxWallOut2)
{
Main.tile[x, y].wall = (byte)wall;
WorldGen.wallOut2(x - 1, y, wall);
WorldGen.wallOut2(x + 1, y, wall);
WorldGen.wallOut2(x, y - 1, wall);
WorldGen.wallOut2(x, y + 1, wall);
if (wall == 63)
{
WorldGen.wallOut2(x - 1, y - 1, wall);
WorldGen.wallOut2(x - 1, y + 1, wall);
WorldGen.wallOut2(x + 1, y - 1, wall);
WorldGen.wallOut2(x + 1, y + 1, wall);
WorldGen.wallOut2(x - 2, y, wall);
WorldGen.wallOut2(x + 2, y, wall);
}
}
}
}
else
{
if (Main.tile[x, y].active() && (int)Main.tile[x, y].wall != wall && Main.tile[x, y].wall != 4 && Main.tile[x, y].wall != 40 && Main.tile[x, y].wall != 3)
{
Main.tile[x, y].wall = (byte)wall;
}
}
}
catch
{
}
}
public static void gemCave(int x, int y)
{
WorldGen.countTiles(x, y, false, false);
for (int i = 0; i < 6; i++)
{
WorldGen.gem[i] = false;
}
WorldGen.gem[WorldGen.genRand.Next(6)] = true;
for (int j = 0; j < 6; j++)
{
if (WorldGen.genRand.Next(6) == 0)
{
WorldGen.gem[j] = true;
}
}
WorldGen.gemOut(x, y);
}
public static int randGem()
{
int num = WorldGen.genRand.Next(6);
while (!WorldGen.gem[num])
{
num = WorldGen.genRand.Next(6);
}
return num;
}
public static int randGemTile()
{
if (WorldGen.genRand.Next(20) != 0)
{
return 1;
}
int num = WorldGen.randGem();
if (num == 0)
{
return 67;
}
if (num == 1)
{
return 66;
}
if (num == 2)
{
return 63;
}
if (num == 3)
{
return 65;
}
if (num == 4)
{
return 64;
}
return 68;
}
public static void gemOut(int x, int y)
{
if (!WorldGen.SolidTile(x, y) && Main.tile[x, y].wall == 0)
{
Main.tile[x, y].wall = (byte)(48 + WorldGen.randGem());
if (!Main.tile[x, y].active() && WorldGen.genRand.Next(2) == 0)
{
WorldGen.PlaceTile(x, y, 178, true, false, -1, WorldGen.randGem());
}
WorldGen.gemOut(x - 1, y);
WorldGen.gemOut(x + 1, y);
WorldGen.gemOut(x, y - 1);
WorldGen.gemOut(x, y + 1);
return;
}
if (Main.tile[x, y].active())
{
int type = (int)Main.tile[x, y].type;
if (type == 0 || type == 1 || type == 40 || type == 59 || type == 60 || type == 70 || type == 147 || type == 161)
{
Main.tile[x, y].type = (byte)WorldGen.randGemTile();
}
for (int i = 0; i < 4; i++)
{
int num = x;
int num2 = y;
if (i == 0)
{
x--;
}
if (i == 1)
{
x++;
}
if (i == 2)
{
y--;
}
if (i == 3)
{
y++;
}
type = (int)Main.tile[num, num2].type;
if (type == 0 || type == 1 || type == 40 || type == 59 || type == 60 || type == 70 || type == 147 || type == 161)
{
Main.tile[num, num2].type = (byte)WorldGen.randGemTile();
}
}
}
}
public static void spiderOut(int x, int y)
{
if (!WorldGen.SolidTile(x, y) && Main.tile[x, y].wall == 0)
{
Main.tile[x, y].wall = 62;
WorldGen.SquareWallFrame(x, y, true);
if (!Main.tile[x, y].active())
{
Main.tile[x, y].liquid = 0;
Main.tile[x, y].lava(false);
if (WorldGen.SolidTile(x, y + 1) && WorldGen.genRand.Next(3) == 0)
{
if (WorldGen.genRand.Next(15) == 0)
{
WorldGen.AddBuriedChest(x, y, 939, true, 15);
}
else
{
WorldGen.PlacePot(x, y, 28, WorldGen.genRand.Next(19, 21));
}
}
if (!Main.tile[x, y].active())
{
if (WorldGen.SolidTile(x, y - 1) && WorldGen.genRand.Next(3) == 0)
{
WorldGen.PlaceTight(x, y, 165, true);
}
else
{
if (WorldGen.SolidTile(x, y + 1))
{
WorldGen.PlaceTile(x, y, 187, true, false, -1, 9 + WorldGen.genRand.Next(5));
if (WorldGen.genRand.Next(3) == 0)
{
if (!Main.tile[x, y].active())
{
WorldGen.PlaceSmallPile(x, y, 34 + WorldGen.genRand.Next(4), 1, 185);
}
if (!Main.tile[x, y].active())
{
WorldGen.PlaceSmallPile(x, y, 48 + WorldGen.genRand.Next(6), 0, 185);
}
}
}
}
}
}
WorldGen.spiderOut(x - 1, y);
WorldGen.spiderOut(x + 1, y);
WorldGen.spiderOut(x, y - 1);
WorldGen.spiderOut(x, y + 1);
return;
}
if (Main.tile[x, y].active() && Main.tile[x, y].wall == 0)
{
Main.tile[x, y].wall = 62;
}
}
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 num;
if ((double)x < (double)Main.maxTilesX * 0.334)
{
num = 0;
}
else
{
if ((double)x < (double)Main.maxTilesX * 0.667)
{
num = 1;
}
else
{
num = 2;
}
}
WorldGen.mossWall = (byte)(54 + WorldGen.mossType[num]);
WorldGen.mossTile = (byte)(179 + WorldGen.mossType[num]);
}
public static void setCaveBacks()
{
int maxValue = 8;
if (Main.maxTilesX == 4200)
{
Main.caveBackX[0] = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.5 - (double)((float)Main.maxTilesX * 0.25f)), (int)((double)Main.maxTilesX * 0.5 + (double)((float)Main.maxTilesX * 0.25f)));
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);
}
}
else
{
if (Main.maxTilesX == 6400)
{
Main.caveBackX[0] = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.334 - (double)((float)Main.maxTilesX * 0.2f)), (int)((double)Main.maxTilesX * 0.334 + (double)((float)Main.maxTilesX * 0.2f)));
Main.caveBackX[1] = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.667 - (double)((float)Main.maxTilesX * 0.2f)), (int)((double)Main.maxTilesX * 0.667 + (double)((float)Main.maxTilesX * 0.2f)));
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);
}
}
else
{
Main.caveBackX[0] = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.25 - (double)((float)Main.maxTilesX * 0.15f)), (int)((double)Main.maxTilesX * 0.25 + (double)((float)Main.maxTilesX * 0.15f)));
Main.caveBackX[1] = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.5 - (double)((float)Main.maxTilesX * 0.15f)), (int)((double)Main.maxTilesX * 0.5 + (double)((float)Main.maxTilesX * 0.15f)));
Main.caveBackX[2] = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.75 - (double)((float)Main.maxTilesX * 0.15f)), (int)((double)Main.maxTilesX * 0.75 + (double)((float)Main.maxTilesX * 0.15f)));
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);
}
}
}
Main.iceBackStyle = WorldGen.genRand.Next(4);
Main.hellBackStyle = WorldGen.genRand.Next(3);
Main.jungleBackStyle = WorldGen.genRand.Next(2);
}
public static void randomBackgrounds()
{
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)
{
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.snowBG = 21;
}
else
{
WorldGen.snowBG = 22;
}
}
if (WorldGen.snowBG == 3 && WorldGen.genRand.Next(2) == 0)
{
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.snowBG = 31;
}
else
{
WorldGen.snowBG = 32;
}
}
if (WorldGen.snowBG == 4 && WorldGen.genRand.Next(2) == 0)
{
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.snowBG = 41;
}
else
{
WorldGen.snowBG = 42;
}
}
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 generateWorld(int seed = -1)
{
if (seed > 0)
{
WorldGen.genRand = new Random(seed);
}
else
{
WorldGen.genRand = new Random((int)DateTime.Now.Ticks);
}
WorldGen.randMoon();
WorldGen.RandomWeather();
Main.cloudAlpha = 0f;
Main.maxRaining = 0f;
WorldGen.tempMaxRain = 0f;
Main.raining = false;
WorldGen.crimson = false;
WorldGen.heartCount = 0;
Main.checkXMas();
NPC.clrNames();
NPC.setNames();
WorldGen.gen = true;
WorldGen.resetGen();
WorldGen.worldSurfaceLow = 0.0;
int type = 7;
int type2 = 6;
int type3 = 9;
int type4 = 8;
Main.cloudBGActive = (float)(-(float)WorldGen.genRand.Next(8640, 86400));
WorldGen.copperBar = 20;
WorldGen.ironBar = 22;
WorldGen.silverBar = 21;
WorldGen.goldBar = 19;
if (WorldGen.genRand.Next(2) == 0)
{
type = 166;
WorldGen.copperBar = 703;
}
if (WorldGen.genRand.Next(2) == 0)
{
type2 = 167;
WorldGen.ironBar = 704;
}
if (WorldGen.genRand.Next(2) == 0)
{
type3 = 168;
WorldGen.silverBar = 705;
}
if (WorldGen.genRand.Next(2) == 0)
{
type4 = 169;
WorldGen.goldBar = 706;
}
WorldGen.randomBackgrounds();
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.crimson = true;
}
int num = WorldGen.genRand.Next(5);
if (num == 0)
{
num = 119;
}
else
{
if (num == 1)
{
num = 120;
}
else
{
if (num == 2)
{
num = 158;
}
else
{
if (num == 3)
{
num = 175;
}
else
{
if (num == 4)
{
num = 45;
}
}
}
}
}
Main.worldID = WorldGen.genRand.Next(2147483647);
int num2 = 0;
int num3 = 0;
double num4 = (double)Main.maxTilesY * 0.3;
num4 *= (double)WorldGen.genRand.Next(90, 110) * 0.005;
double num5 = num4 + (double)Main.maxTilesY * 0.2;
num5 *= (double)WorldGen.genRand.Next(90, 110) * 0.01;
if (Main.maxTilesX == 4200)
{
Main.treeX[0] = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.5 - (double)((float)Main.maxTilesX * 0.25f)), (int)((double)Main.maxTilesX * 0.5 + (double)((float)Main.maxTilesX * 0.25f)));
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;
}
else
{
if (Main.maxTilesX == 6400)
{
Main.treeX[0] = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.334 - (double)((float)Main.maxTilesX * 0.2f)), (int)((double)Main.maxTilesX * 0.334 + (double)((float)Main.maxTilesX * 0.2f)));
Main.treeX[1] = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.667 - (double)((float)Main.maxTilesX * 0.2f)), (int)((double)Main.maxTilesX * 0.667 + (double)((float)Main.maxTilesX * 0.2f)));
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;
}
else
{
Main.treeX[0] = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.25 - (double)((float)Main.maxTilesX * 0.15f)), (int)((double)Main.maxTilesX * 0.25 + (double)((float)Main.maxTilesX * 0.15f)));
Main.treeX[1] = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.5 - (double)((float)Main.maxTilesX * 0.15f)), (int)((double)Main.maxTilesX * 0.5 + (double)((float)Main.maxTilesX * 0.15f)));
Main.treeX[2] = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.75 - (double)((float)Main.maxTilesX * 0.15f)), (int)((double)Main.maxTilesX * 0.75 + (double)((float)Main.maxTilesX * 0.15f)));
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);
}
}
}
WorldGen.setCaveBacks();
WorldGen.worldSurfaceLow = num4;
double num6 = num4;
double num7 = num5;
double num8 = num5;
int num9 = 0;
if (WorldGen.genRand.Next(2) == 0)
{
num9 = -1;
}
else
{
num9 = 1;
}
for (int i = 0; i < Main.maxTilesX; i++)
{
float num10 = (float)i / (float)Main.maxTilesX;
Main.statusText = string.Concat(new object[]
{
Lang.gen[0],
" ",
(int)(num10 * 100f + 1f),
"%"
});
if (num4 < WorldGen.worldSurfaceLow)
{
WorldGen.worldSurfaceLow = num4;
}
if (num4 > num6)
{
num6 = num4;
}
if (num5 < num7)
{
num7 = num5;
}
if (num5 > num8)
{
num8 = num5;
}
if (num3 <= 0)
{
num2 = WorldGen.genRand.Next(0, 5);
num3 = WorldGen.genRand.Next(5, 40);
if (num2 == 0)
{
num3 *= (int)((double)WorldGen.genRand.Next(5, 30) * 0.2);
}
}
num3--;
if (num2 == 0)
{
while (WorldGen.genRand.Next(0, 7) == 0)
{
num4 += (double)WorldGen.genRand.Next(-1, 2);
}
}
else
{
if (num2 == 1)
{
while (WorldGen.genRand.Next(0, 4) == 0)
{
num4 -= 1.0;
}
while (WorldGen.genRand.Next(0, 10) == 0)
{
num4 += 1.0;
}
}
else
{
if (num2 == 2)
{
while (WorldGen.genRand.Next(0, 4) == 0)
{
num4 += 1.0;
}
while (WorldGen.genRand.Next(0, 10) == 0)
{
num4 -= 1.0;
}
}
else
{
if (num2 == 3)
{
while (WorldGen.genRand.Next(0, 2) == 0)
{
num4 -= 1.0;
}
while (WorldGen.genRand.Next(0, 6) == 0)
{
num4 += 1.0;
}
}
else
{
if (num2 == 4)
{
while (WorldGen.genRand.Next(0, 2) == 0)
{
num4 += 1.0;
}
while (WorldGen.genRand.Next(0, 5) == 0)
{
num4 -= 1.0;
}
}
}
}
}
}
if (num4 < (double)Main.maxTilesY * 0.17)
{
num4 = (double)Main.maxTilesY * 0.17;
num3 = 0;
}
else
{
if (num4 > (double)Main.maxTilesY * 0.3)
{
num4 = (double)Main.maxTilesY * 0.3;
num3 = 0;
}
}
if ((i < 275 || i > Main.maxTilesX - 275) && num4 > (double)Main.maxTilesY * 0.25)
{
num4 = (double)Main.maxTilesY * 0.25;
num3 = 1;
}
while (WorldGen.genRand.Next(0, 3) == 0)
{
num5 += (double)WorldGen.genRand.Next(-2, 3);
}
if (num5 < num4 + (double)Main.maxTilesY * 0.05)
{
num5 += 1.0;
}
if (num5 > num4 + (double)Main.maxTilesY * 0.35)
{
num5 -= 1.0;
}
int num11 = 0;
while ((double)num11 < num4)
{
Main.tile[i, num11].active(false);
Main.tile[i, num11].frameX = -1;
Main.tile[i, num11].frameY = -1;
num11++;
}
for (int j = (int)num4; j < Main.maxTilesY; j++)
{
if ((double)j < num5)
{
Main.tile[i, j].active(true);
Main.tile[i, j].type = 0;
Main.tile[i, j].frameX = -1;
Main.tile[i, j].frameY = -1;
}
else
{
Main.tile[i, j].active(true);
Main.tile[i, j].type = 1;
Main.tile[i, j].frameX = -1;
Main.tile[i, j].frameY = -1;
}
}
}
Main.worldSurface = num6 + 25.0;
Main.rockLayer = num8;
double num12 = (double)((int)((Main.rockLayer - Main.worldSurface) / 6.0) * 6);
Main.rockLayer = Main.worldSurface + num12;
WorldGen.waterLine = (int)(Main.rockLayer + (double)Main.maxTilesY) / 2;
WorldGen.waterLine += WorldGen.genRand.Next(-100, 20);
WorldGen.lavaLine = WorldGen.waterLine + WorldGen.genRand.Next(50, 80);
int num13 = 0;
for (int k = 0; k < (int)((double)Main.maxTilesX * 0.0015); k++)
{
int[] array = new int[10];
int[] array2 = new int[10];
int num14 = WorldGen.genRand.Next(450, Main.maxTilesX - 450);
int num15 = 0;
for (int l = 0; l < 10; l++)
{
while (!Main.tile[num14, num15].active())
{
num15++;
}
array[l] = num14;
array2[l] = num15 - WorldGen.genRand.Next(11, 16);
num14 += WorldGen.genRand.Next(5, 11);
}
for (int m = 0; m < 10; m++)
{
WorldGen.TileRunner(array[m], array2[m], (double)WorldGen.genRand.Next(5, 8), WorldGen.genRand.Next(6, 9), 0, true, -2f, -0.3f, false, true);
WorldGen.TileRunner(array[m], array2[m], (double)WorldGen.genRand.Next(5, 8), WorldGen.genRand.Next(6, 9), 0, true, 2f, -0.3f, false, true);
}
}
Main.statusText = Lang.gen[1];
int num16 = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.0008), (int)((double)Main.maxTilesX * 0.0025));
num16 += 2;
int[] array3 = new int[num16];
int[] array4 = new int[num16];
int num17 = 0;
for (int n = 0; n < num16; n++)
{
int num18 = WorldGen.genRand.Next(Main.maxTilesX);
while ((float)num18 > (float)Main.maxTilesX * 0.4f && (float)num18 < (float)Main.maxTilesX * 0.6f)
{
num18 = WorldGen.genRand.Next(Main.maxTilesX);
}
int num19 = WorldGen.genRand.Next(35, 90);
if (n == 1)
{
float num20 = (float)(Main.maxTilesX / 4200);
num19 += (int)((float)WorldGen.genRand.Next(20, 40) * num20);
}
if (WorldGen.genRand.Next(3) == 0)
{
num19 *= 2;
}
if (n == 1)
{
num19 *= 2;
}
int num21 = num18 - num19;
num19 = WorldGen.genRand.Next(35, 90);
if (WorldGen.genRand.Next(3) == 0)
{
num19 *= 2;
}
if (n == 1)
{
num19 *= 2;
}
int num22 = num18 + num19;
if (num21 < 0)
{
num21 = 0;
}
if (num22 > Main.maxTilesX)
{
num22 = Main.maxTilesX;
}
if (n == 0)
{
num21 = 0;
num22 = WorldGen.genRand.Next(260, 300);
if (num9 == 1)
{
num22 += 40;
}
}
else
{
if (n == 2)
{
num21 = Main.maxTilesX - WorldGen.genRand.Next(260, 300);
num22 = Main.maxTilesX;
if (num9 == -1)
{
num21 -= 40;
}
}
}
int num23 = WorldGen.genRand.Next(50, 100);
for (int num24 = num21; num24 < num22; num24++)
{
if (WorldGen.genRand.Next(2) == 0)
{
num23 += WorldGen.genRand.Next(-1, 2);
if (num23 < 50)
{
num23 = 50;
}
if (num23 > 100)
{
num23 = 100;
}
}
int num25 = 0;
while ((double)num25 < Main.worldSurface)
{
if (Main.tile[num24, num25].active())
{
if (num24 == (num21 + num22) / 2 && WorldGen.genRand.Next(7) == 0)
{
array3[num17] = num24;
array4[num17] = num25;
num17++;
}
int num26 = num23;
if (num24 - num21 < num26)
{
num26 = num24 - num21;
}
if (num22 - num24 < num26)
{
num26 = num22 - num24;
}
num26 += WorldGen.genRand.Next(5);
for (int num27 = num25; num27 < num25 + num26; num27++)
{
if (num24 > num21 + WorldGen.genRand.Next(5) && num24 < num22 - WorldGen.genRand.Next(5))
{
Main.tile[num24, num27].type = 53;
}
}
break;
}
num25++;
}
}
}
for (int num28 = 0; num28 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 8E-06); num28++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)Main.worldSurface, (int)Main.rockLayer), (double)WorldGen.genRand.Next(15, 70), WorldGen.genRand.Next(20, 130), 53, false, 0f, 0f, false, true);
}
WorldGen.numMCaves = 0;
Main.statusText = Lang.gen[2];
for (int num29 = 0; num29 < (int)((double)Main.maxTilesX * 0.0008); num29++)
{
int num30 = 0;
bool flag = false;
bool flag2 = false;
int num31 = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.25), (int)((double)Main.maxTilesX * 0.75));
while (!flag2)
{
flag2 = true;
while (num31 > Main.maxTilesX / 2 - 100 && num31 < Main.maxTilesX / 2 + 100)
{
num31 = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.25), (int)((double)Main.maxTilesX * 0.75));
}
for (int num32 = 0; num32 < WorldGen.numMCaves; num32++)
{
if (num31 > WorldGen.mCaveX[num32] - 50 && num31 < WorldGen.mCaveX[num32] + 50)
{
num30++;
flag2 = false;
break;
}
}
if (num30 >= 200)
{
flag = true;
break;
}
}
if (!flag)
{
int num33 = 0;
while ((double)num33 < Main.worldSurface)
{
if (Main.tile[num31, num33].active())
{
for (int num34 = num31 - 50; num34 < num31 + 50; num34++)
{
for (int num35 = num33 - 25; num35 < num33 + 25; num35++)
{
if (Main.tile[num34, num35].active() && (Main.tile[num34, num35].type == 53 || Main.tile[num34, num35].type == 151))
{
flag = true;
}
}
}
if (!flag)
{
WorldGen.Mountinater(num31, num33);
WorldGen.mCaveX[WorldGen.numMCaves] = num31;
WorldGen.mCaveY[WorldGen.numMCaves] = num33;
WorldGen.numMCaves++;
break;
}
}
num33++;
}
}
}
for (int num36 = 1; num36 < Main.maxTilesX - 1; num36++)
{
byte wall = 2;
float num37 = (float)num36 / (float)Main.maxTilesX;
Main.statusText = string.Concat(new object[]
{
Lang.gen[3],
" ",
(int)(num37 * 100f + 1f),
"%"
});
bool flag3 = false;
num13 += WorldGen.genRand.Next(-1, 2);
if (num13 < 0)
{
num13 = 0;
}
if (num13 > 10)
{
num13 = 10;
}
int num38 = 0;
while ((double)num38 < Main.worldSurface + 10.0 && (double)num38 <= Main.worldSurface + (double)num13)
{
if (Main.tile[num36, num38].active())
{
if (Main.tile[num36, num38].type == 147)
{
wall = 40;
}
else
{
wall = 2;
}
}
if (flag3 && Main.tile[num36, num38].wall != 64)
{
Main.tile[num36, num38].wall = wall;
}
if (Main.tile[num36, num38].active() && Main.tile[num36 - 1, num38].active() && Main.tile[num36 + 1, num38].active() && Main.tile[num36, num38 + 1].active() && Main.tile[num36 - 1, num38 + 1].active() && Main.tile[num36 + 1, num38 + 1].active())
{
flag3 = true;
}
num38++;
}
}
Main.statusText = Lang.gen[4];
for (int num39 = 0; num39 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.0002); num39++)
{
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, false, 0f, 0f, false, true);
}
for (int num40 = 0; num40 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.0002); num40++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)WorldGen.worldSurfaceLow, (int)num6 + 1), (double)WorldGen.genRand.Next(4, 10), WorldGen.genRand.Next(5, 30), 1, false, 0f, 0f, false, true);
}
for (int num41 = 0; num41 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.0045); num41++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num6, (int)num8 + 1), (double)WorldGen.genRand.Next(2, 7), WorldGen.genRand.Next(2, 23), 1, false, 0f, 0f, false, true);
}
Main.statusText = Lang.gen[5];
for (int num42 = 0; num42 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.005); num42++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num7, Main.maxTilesY), (double)WorldGen.genRand.Next(2, 6), WorldGen.genRand.Next(2, 40), 0, false, 0f, 0f, false, true);
}
Main.statusText = Lang.gen[6];
for (int num43 = 0; num43 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 2E-05); num43++)
{
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, false, 0f, 0f, false, true);
}
for (int num44 = 0; num44 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 5E-05); num44++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)WorldGen.worldSurfaceLow, (int)num6 + 1), (double)WorldGen.genRand.Next(8, 14), WorldGen.genRand.Next(15, 45), 40, false, 0f, 0f, false, true);
}
for (int num45 = 0; num45 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 2E-05); num45++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num6, (int)num8 + 1), (double)WorldGen.genRand.Next(8, 15), WorldGen.genRand.Next(5, 50), 40, false, 0f, 0f, false, true);
}
for (int num46 = 5; num46 < Main.maxTilesX - 5; num46++)
{
int num47 = 1;
while ((double)num47 < Main.worldSurface - 1.0)
{
if (Main.tile[num46, num47].active())
{
for (int num48 = num47; num48 < num47 + 5; num48++)
{
if (Main.tile[num46, num48].type == 40)
{
Main.tile[num46, num48].type = 0;
}
}
break;
}
num47++;
}
}
int num49 = 0;
for (int num50 = 0; num50 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.0015); num50++)
{
float num51 = (float)((double)num50 / ((double)(Main.maxTilesX * Main.maxTilesY) * 0.0015));
Main.statusText = string.Concat(new object[]
{
Lang.gen[7],
" ",
(int)(num51 * 100f + 1f),
"%"
});
int type5 = -1;
if (WorldGen.genRand.Next(5) == 0)
{
type5 = -2;
}
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num6, Main.maxTilesY), (double)WorldGen.genRand.Next(2, 5), WorldGen.genRand.Next(2, 20), type5, false, 0f, 0f, false, true);
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num6, Main.maxTilesY), (double)WorldGen.genRand.Next(8, 15), WorldGen.genRand.Next(7, 30), type5, false, 0f, 0f, false, true);
}
for (int num52 = 0; num52 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 3E-05); num52++)
{
float num53 = (float)((double)num52 / ((double)(Main.maxTilesX * Main.maxTilesY) * 3E-05));
Main.statusText = string.Concat(new object[]
{
Lang.gen[8],
" ",
(int)(num53 * 100f + 1f),
"%"
});
if (num8 <= (double)Main.maxTilesY)
{
int type6 = -1;
if (WorldGen.genRand.Next(6) == 0)
{
type6 = -2;
}
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)WorldGen.worldSurfaceLow, (int)num8 + 1), (double)WorldGen.genRand.Next(5, 15), WorldGen.genRand.Next(30, 200), type6, false, 0f, 0f, false, true);
}
}
for (int num54 = 0; num54 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.00013); num54++)
{
float num55 = (float)((double)num54 / ((double)(Main.maxTilesX * Main.maxTilesY) * 0.00013));
Main.statusText = string.Concat(new object[]
{
Lang.gen[9],
" ",
(int)(num55 * 100f + 1f),
"%"
});
if (num8 <= (double)Main.maxTilesY)
{
int type7 = -1;
if (WorldGen.genRand.Next(10) == 0)
{
type7 = -2;
}
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num8, Main.maxTilesY), (double)WorldGen.genRand.Next(6, 20), WorldGen.genRand.Next(50, 300), type7, false, 0f, 0f, false, true);
}
}
Main.statusText = Lang.gen[10];
for (int num56 = 0; num56 < (int)((double)Main.maxTilesX * 0.0025); num56++)
{
num49 = WorldGen.genRand.Next(0, Main.maxTilesX);
int num57 = 0;
while ((double)num57 < num6)
{
if (Main.tile[num49, num57].active())
{
WorldGen.TileRunner(num49, num57, (double)WorldGen.genRand.Next(3, 6), WorldGen.genRand.Next(5, 50), -1, false, (float)WorldGen.genRand.Next(-10, 11) * 0.1f, 1f, false, true);
break;
}
num57++;
}
}
for (int num58 = 0; num58 < (int)((double)Main.maxTilesX * 0.0007); num58++)
{
num49 = WorldGen.genRand.Next(0, Main.maxTilesX);
int num59 = 0;
while ((double)num59 < num6)
{
if (Main.tile[num49, num59].active())
{
WorldGen.TileRunner(num49, num59, (double)WorldGen.genRand.Next(10, 15), WorldGen.genRand.Next(50, 130), -1, false, (float)WorldGen.genRand.Next(-10, 11) * 0.1f, 2f, false, true);
break;
}
num59++;
}
}
for (int num60 = 0; num60 < (int)((double)Main.maxTilesX * 0.0003); num60++)
{
num49 = WorldGen.genRand.Next(0, Main.maxTilesX);
int num61 = 0;
while ((double)num61 < num6)
{
if (Main.tile[num49, num61].active())
{
WorldGen.TileRunner(num49, num61, (double)WorldGen.genRand.Next(12, 25), WorldGen.genRand.Next(150, 500), -1, false, (float)WorldGen.genRand.Next(-10, 11) * 0.1f, 4f, false, true);
WorldGen.TileRunner(num49, num61, (double)WorldGen.genRand.Next(8, 17), WorldGen.genRand.Next(60, 200), -1, false, (float)WorldGen.genRand.Next(-10, 11) * 0.1f, 2f, false, true);
WorldGen.TileRunner(num49, num61, (double)WorldGen.genRand.Next(5, 13), WorldGen.genRand.Next(40, 170), -1, false, (float)WorldGen.genRand.Next(-10, 11) * 0.1f, 2f, false, true);
break;
}
num61++;
}
}
for (int num62 = 0; num62 < (int)((double)Main.maxTilesX * 0.0004); num62++)
{
num49 = WorldGen.genRand.Next(0, Main.maxTilesX);
int num63 = 0;
while ((double)num63 < num6)
{
if (Main.tile[num49, num63].active())
{
WorldGen.TileRunner(num49, num63, (double)WorldGen.genRand.Next(7, 12), WorldGen.genRand.Next(150, 250), -1, false, 0f, 1f, true, true);
break;
}
num63++;
}
}
float num64 = (float)(Main.maxTilesX / 4200);
int num65 = 0;
while ((float)num65 < 5f * num64)
{
try
{
WorldGen.Caverer(WorldGen.genRand.Next(100, Main.maxTilesX - 100), WorldGen.genRand.Next((int)Main.rockLayer, Main.maxTilesY - 400));
}
catch
{
}
num65++;
}
int[] array5 = new int[Main.maxTilesY];
int[] array6 = new int[Main.maxTilesY];
int num66 = (int)Main.worldSurface;
int num67 = 0;
Main.statusText = Lang.gen[56];
int num68 = WorldGen.genRand.Next(Main.maxTilesX);
if (num9 == 1)
{
while ((float)num68 < (float)Main.maxTilesX * 0.55f || (float)num68 > (float)Main.maxTilesX * 0.7f)
{
num68 = WorldGen.genRand.Next(Main.maxTilesX);
}
}
else
{
while ((float)num68 < (float)Main.maxTilesX * 0.3f || (float)num68 > (float)Main.maxTilesX * 0.45f)
{
num68 = WorldGen.genRand.Next(Main.maxTilesX);
}
}
int num69 = WorldGen.genRand.Next(50, 90);
float num70 = (float)(Main.maxTilesX / 4200);
num69 += (int)((float)WorldGen.genRand.Next(20, 40) * num70);
num69 += (int)((float)WorldGen.genRand.Next(20, 40) * num70);
int num71 = num68 - num69;
num69 = WorldGen.genRand.Next(50, 90);
num69 += (int)((float)WorldGen.genRand.Next(20, 40) * num70);
num69 += (int)((float)WorldGen.genRand.Next(20, 40) * num70);
int num72 = num68 + num69;
if (num71 < 0)
{
num71 = 0;
}
if (num72 > Main.maxTilesX)
{
num72 = Main.maxTilesX;
}
int num73 = WorldGen.lavaLine - 60;
for (int num74 = 0; num74 < WorldGen.lavaLine - 100; num74++)
{
num71 += WorldGen.genRand.Next(-4, 4);
num72 += WorldGen.genRand.Next(-3, 5);
array5[num74] = num71;
array6[num74] = num72;
for (int num75 = num71; num75 < num72; num75++)
{
if (num74 < num73)
{
num73 += WorldGen.genRand.Next(-2, 3);
if (num73 < WorldGen.lavaLine - 140)
{
num73 = WorldGen.lavaLine - 140;
}
if (num73 > WorldGen.lavaLine - 100)
{
num73 = WorldGen.lavaLine - 100;
}
if (Main.tile[num75, num74].wall == 2)
{
Main.tile[num75, num74].wall = 40;
}
int type8 = (int)Main.tile[num75, num74].type;
if (type8 == 0 || type8 == 2 || type8 == 23 || type8 == 40 || type8 == 53)
{
Main.tile[num75, num74].type = 147;
}
else
{
if (type8 == 1)
{
Main.tile[num75, num74].type = 161;
}
}
}
else
{
num73 += WorldGen.genRand.Next(1, 3);
}
}
if (num67 < num73)
{
num67 = num73;
}
}
for (int num76 = 0; num76 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.002); num76++)
{
int num77 = WorldGen.genRand.Next(1, Main.maxTilesX - 1);
int num78 = WorldGen.genRand.Next((int)WorldGen.worldSurfaceLow, (int)num6);
if (num78 >= Main.maxTilesY)
{
num78 = Main.maxTilesY - 2;
}
if (Main.tile[num77 - 1, num78].active() && Main.tile[num77 - 1, num78].type == 0 && Main.tile[num77 + 1, num78].active() && Main.tile[num77 + 1, num78].type == 0 && Main.tile[num77, num78 - 1].active() && Main.tile[num77, num78 - 1].type == 0 && Main.tile[num77, num78 + 1].active() && Main.tile[num77, num78 + 1].type == 0)
{
Main.tile[num77, num78].active(true);
Main.tile[num77, num78].type = 2;
}
num77 = WorldGen.genRand.Next(1, Main.maxTilesX - 1);
num78 = WorldGen.genRand.Next(0, (int)WorldGen.worldSurfaceLow);
if (num78 >= Main.maxTilesY)
{
num78 = Main.maxTilesY - 2;
}
if (Main.tile[num77 - 1, num78].active() && Main.tile[num77 - 1, num78].type == 0 && Main.tile[num77 + 1, num78].active() && Main.tile[num77 + 1, num78].type == 0 && Main.tile[num77, num78 - 1].active() && Main.tile[num77, num78 - 1].type == 0 && Main.tile[num77, num78 + 1].active() && Main.tile[num77, num78 + 1].type == 0)
{
Main.tile[num77, num78].active(true);
Main.tile[num77, num78].type = 2;
}
}
Main.statusText = Lang.gen[11] + " 0%";
float num79 = (float)(Main.maxTilesX / 4200);
num79 *= 1.5f;
float num80 = (float)WorldGen.genRand.Next(15, 30) * 0.01f;
int num81;
if (num9 == -1)
{
num80 = 1f - num80;
num81 = (int)((float)Main.maxTilesX * num80);
}
else
{
num81 = (int)((float)Main.maxTilesX * num80);
}
int num82 = (int)((double)Main.maxTilesY + Main.rockLayer) / 2;
num81 += WorldGen.genRand.Next((int)(-100f * num79), (int)(101f * num79));
num82 += WorldGen.genRand.Next((int)(-100f * num79), (int)(101f * num79));
int num83 = num81;
int num84 = num82;
WorldGen.TileRunner(num81, num82, (double)WorldGen.genRand.Next((int)(250f * num79), (int)(500f * num79)), WorldGen.genRand.Next(50, 150), 59, false, (float)(num9 * 3), 0f, false, true);
int num85 = 0;
while ((float)num85 < 6f * num79)
{
WorldGen.TileRunner(num81 + WorldGen.genRand.Next(-(int)(125f * num79), (int)(125f * num79)), num82 + WorldGen.genRand.Next(-(int)(125f * num79), (int)(125f * num79)), (double)WorldGen.genRand.Next(3, 7), WorldGen.genRand.Next(3, 8), WorldGen.genRand.Next(63, 65), false, 0f, 0f, false, true);
num85++;
}
WorldGen.mudWall = true;
Main.statusText = Lang.gen[11] + " 15%";
num81 += WorldGen.genRand.Next((int)(-250f * num79), (int)(251f * num79));
num82 += WorldGen.genRand.Next((int)(-150f * num79), (int)(151f * num79));
int num86 = num81;
int num87 = num82;
int num88 = num81;
int num89 = num82;
WorldGen.TileRunner(num81, num82, (double)WorldGen.genRand.Next((int)(250f * num79), (int)(500f * num79)), WorldGen.genRand.Next(50, 150), 59, false, 0f, 0f, false, true);
WorldGen.mudWall = false;
int num90 = 0;
while ((float)num90 < 6f * num79)
{
WorldGen.TileRunner(num81 + WorldGen.genRand.Next(-(int)(125f * num79), (int)(125f * num79)), num82 + WorldGen.genRand.Next(-(int)(125f * num79), (int)(125f * num79)), (double)WorldGen.genRand.Next(3, 7), WorldGen.genRand.Next(3, 8), WorldGen.genRand.Next(65, 67), false, 0f, 0f, false, true);
num90++;
}
WorldGen.mudWall = true;
Main.statusText = Lang.gen[11] + " 30%";
num81 += WorldGen.genRand.Next((int)(-400f * num79), (int)(401f * num79));
num82 += WorldGen.genRand.Next((int)(-150f * num79), (int)(151f * num79));
int num91 = num81;
int num92 = num82;
WorldGen.TileRunner(num81, num82, (double)WorldGen.genRand.Next((int)(250f * num79), (int)(500f * num79)), WorldGen.genRand.Next(50, 150), 59, false, (float)(num9 * -3), 0f, false, true);
WorldGen.mudWall = false;
int num93 = 0;
while ((float)num93 < 6f * num79)
{
WorldGen.TileRunner(num81 + WorldGen.genRand.Next(-(int)(125f * num79), (int)(125f * num79)), num82 + WorldGen.genRand.Next(-(int)(125f * num79), (int)(125f * num79)), (double)WorldGen.genRand.Next(3, 7), WorldGen.genRand.Next(3, 8), WorldGen.genRand.Next(67, 69), false, 0f, 0f, false, true);
num93++;
}
WorldGen.mudWall = true;
Main.statusText = Lang.gen[11] + " 45%";
num81 = (num83 + num86 + num91) / 3;
num82 = (num84 + num87 + num92) / 3;
WorldGen.TileRunner(num81, num82, (double)WorldGen.genRand.Next((int)(400f * num79), (int)(600f * num79)), 10000, 59, false, 0f, -20f, true, true);
WorldGen.JungleRunner(num81, num82);
Main.statusText = Lang.gen[11] + " 60%";
WorldGen.mudWall = false;
for (int num94 = 0; num94 < Main.maxTilesX / 4; num94++)
{
num81 = WorldGen.genRand.Next(20, Main.maxTilesX - 20);
num82 = WorldGen.genRand.Next((int)num4 + 10, Main.maxTilesY - 200);
while (Main.tile[num81, num82].wall != 64 && Main.tile[num81, num82].wall != 15)
{
num81 = WorldGen.genRand.Next(20, Main.maxTilesX - 20);
num82 = WorldGen.genRand.Next((int)num4 + 10, Main.maxTilesY - 200);
}
WorldGen.MudWallRunner(num81, num82);
}
num81 = num88;
num82 = num89;
int num95 = 0;
while ((float)num95 <= 20f * num79)
{
Main.statusText = string.Concat(new object[]
{
Lang.gen[11],
" ",
(int)(60f + (float)num95 / num79),
"%"
});
num81 += WorldGen.genRand.Next((int)(-5f * num79), (int)(6f * num79));
num82 += WorldGen.genRand.Next((int)(-5f * num79), (int)(6f * num79));
WorldGen.TileRunner(num81, num82, (double)WorldGen.genRand.Next(40, 100), WorldGen.genRand.Next(300, 500), 59, false, 0f, 0f, false, true);
num95++;
}
int num96 = 0;
while ((float)num96 <= 10f * num79)
{
Main.statusText = string.Concat(new object[]
{
Lang.gen[11],
" ",
(int)(80f + (float)num96 / num79 * 2f),
"%"
});
num81 = num88 + WorldGen.genRand.Next((int)(-600f * num79), (int)(600f * num79));
num82 = num89 + WorldGen.genRand.Next((int)(-200f * num79), (int)(200f * num79));
while (num81 < 1 || num81 >= Main.maxTilesX - 1 || num82 < 1 || num82 >= Main.maxTilesY - 1 || Main.tile[num81, num82].type != 59)
{
num81 = num88 + WorldGen.genRand.Next((int)(-600f * num79), (int)(600f * num79));
num82 = num89 + WorldGen.genRand.Next((int)(-200f * num79), (int)(200f * num79));
}
int num97 = 0;
while ((float)num97 < 8f * num79)
{
num81 += WorldGen.genRand.Next(-30, 31);
num82 += WorldGen.genRand.Next(-30, 31);
int type9 = -1;
if (WorldGen.genRand.Next(7) == 0)
{
type9 = -2;
}
WorldGen.TileRunner(num81, num82, (double)WorldGen.genRand.Next(10, 20), WorldGen.genRand.Next(30, 70), type9, false, 0f, 0f, false, true);
num97++;
}
num96++;
}
int num98 = 0;
while ((float)num98 <= 300f * num79)
{
num81 = num88 + WorldGen.genRand.Next((int)(-600f * num79), (int)(600f * num79));
num82 = num89 + WorldGen.genRand.Next((int)(-200f * num79), (int)(200f * num79));
while (num81 < 1 || num81 >= Main.maxTilesX - 1 || num82 < 1 || num82 >= Main.maxTilesY - 1 || Main.tile[num81, num82].type != 59)
{
num81 = num88 + WorldGen.genRand.Next((int)(-600f * num79), (int)(600f * num79));
num82 = num89 + WorldGen.genRand.Next((int)(-200f * num79), (int)(200f * num79));
}
WorldGen.TileRunner(num81, num82, (double)WorldGen.genRand.Next(4, 10), WorldGen.genRand.Next(5, 30), 1, false, 0f, 0f, false, true);
if (WorldGen.genRand.Next(4) == 0)
{
int type10 = WorldGen.genRand.Next(63, 69);
WorldGen.TileRunner(num81 + WorldGen.genRand.Next(-1, 2), num82 + WorldGen.genRand.Next(-1, 2), (double)WorldGen.genRand.Next(3, 7), WorldGen.genRand.Next(4, 8), type10, false, 0f, 0f, false, true);
}
num98++;
}
float num99 = (float)(Main.maxTilesX / 4200);
float num100 = (float)WorldGen.genRand.Next((int)(5f * num99), (int)(8f * num99));
int num101 = 0;
while ((float)num101 < num100)
{
bool flag4 = true;
while (flag4)
{
num81 = WorldGen.genRand.Next(20, Main.maxTilesX - 20);
num82 = WorldGen.genRand.Next((int)(Main.worldSurface + Main.rockLayer) / 2, Main.maxTilesY - 300);
if (Main.tile[num81, num82].type == 59)
{
flag4 = false;
int num102 = 100;
for (int num103 = num81 - num102; num103 < num81 + num102; num103 += 5)
{
if (Main.tile[num81, num82].wall == 3 || Main.tile[num81, num82].wall == 83)
{
flag4 = true;
break;
}
}
if (!flag4)
{
WorldGen.HiveX[WorldGen.numHives] = num81;
WorldGen.HiveY[WorldGen.numHives] = num82;
WorldGen.numHives++;
}
}
}
num101++;
}
for (int num104 = 0; num104 < Main.maxTilesX; num104++)
{
for (int num105 = 0; num105 < Main.maxTilesY; num105++)
{
if (Main.tile[num104, num105].active())
{
try
{
WorldGen.grassSpread = 0;
WorldGen.SpreadGrass(num104, num105, 59, 60, true, 0);
}
catch
{
WorldGen.grassSpread = 0;
WorldGen.SpreadGrass(num104, num105, 59, 60, false, 0);
}
}
}
}
WorldGen.numIslandHouses = 0;
WorldGen.houseCount = 0;
Main.statusText = Lang.gen[12];
for (int num106 = 0; num106 < (int)((double)Main.maxTilesX * 0.0008); num106++)
{
int num107 = 0;
bool flag5 = false;
int num108 = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.1), (int)((double)Main.maxTilesX * 0.9));
bool flag6 = false;
while (!flag6)
{
flag6 = true;
while (num108 > Main.maxTilesX / 2 - 80 && num108 < Main.maxTilesX / 2 + 80)
{
num108 = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.1), (int)((double)Main.maxTilesX * 0.9));
}
for (int num109 = 0; num109 < WorldGen.numIslandHouses; num109++)
{
if (num108 > WorldGen.fihX[num109] - 180 && num108 < WorldGen.fihX[num109] + 180)
{
num107++;
flag6 = false;
break;
}
}
if (num107 >= 200)
{
flag5 = true;
break;
}
}
if (!flag5)
{
int num110 = 200;
while ((double)num110 < Main.worldSurface)
{
if (Main.tile[num108, num110].active())
{
int num111 = num108;
int num112 = WorldGen.genRand.Next(90, num110 - 100);
while ((double)num112 > WorldGen.worldSurfaceLow - 50.0)
{
num112--;
}
WorldGen.CloudIsland(num111, num112);
WorldGen.fihX[WorldGen.numIslandHouses] = num111;
WorldGen.fihY[WorldGen.numIslandHouses] = num112;
WorldGen.numIslandHouses++;
break;
}
num110++;
}
}
}
Main.statusText = Lang.gen[13];
for (int num113 = 0; num113 < Main.maxTilesX / 500; num113++)
{
int num114 = 0;
bool flag7 = true;
while (flag7)
{
int num115 = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.3), (int)((double)Main.maxTilesX * 0.7));
int num116 = WorldGen.genRand.Next((int)Main.rockLayer, Main.maxTilesY - 350);
flag7 = false;
int num117 = 60;
for (int num118 = num115 - num117; num118 < num115 + num117; num118 += 3)
{
for (int num119 = num116 - num117; num119 < num116 + num117; num119 += 3)
{
if (Main.tile[num118, num119].type == 147 || Main.tile[num118, num119].type == 161 || Main.tile[num118, num119].type == 162)
{
flag7 = true;
break;
}
}
}
if (!flag7)
{
WorldGen.ShroomPatch(num115, num116);
}
num114++;
if (num114 > 100)
{
break;
}
}
}
for (int num120 = 0; num120 < Main.maxTilesX; num120++)
{
for (int num121 = (int)Main.worldSurface; num121 < Main.maxTilesY; num121++)
{
if (Main.tile[num120, num121].active())
{
WorldGen.grassSpread = 0;
WorldGen.SpreadGrass(num120, num121, 59, 70, false, 0);
if (Main.tile[num120, num121].type == 70 && WorldGen.genRand.Next(20) == 0)
{
int num122;
if (WorldGen.genRand.Next(5) == 0)
{
num122 = 2;
}
else
{
num122 = 1;
}
int num123 = WorldGen.genRand.Next(2, 6);
int num124 = num121 - num123;
bool flag8 = true;
for (int num125 = num120 - num122; num125 <= num120 + num122; num125++)
{
if (Main.tile[num125, num124].active())
{
flag8 = false;
}
if (Main.tileBrick[(int)Main.tile[num125, num124 - 1].type])
{
flag8 = false;
}
if (Main.tileBrick[(int)Main.tile[num125, num124 + 1].type])
{
flag8 = false;
}
}
if (Main.tile[num120 - num122 - 1, num124].type == 190)
{
flag8 = false;
}
if (Main.tile[num120 + num122 + 1, num124].type == 190)
{
flag8 = false;
}
for (int num126 = num124; num126 < num121; num126++)
{
if (Main.tile[num120, num126].active())
{
flag8 = false;
}
if (Main.tileBrick[(int)Main.tile[num120 - 1, num126].type])
{
flag8 = false;
}
if (Main.tileBrick[(int)Main.tile[num120 + 1, num126].type])
{
flag8 = false;
}
}
if (flag8)
{
for (int num127 = num120 - num122; num127 <= num120 + num122; num127++)
{
WorldGen.PlaceTile(num127, num124, 190, true, true, -1, 0);
}
for (int num128 = num124; num128 < num121; num128++)
{
WorldGen.PlaceTile(num120, num128, 190, true, true, -1, 0);
}
}
}
}
}
}
Main.statusText = Lang.gen[14];
for (int num129 = 0; num129 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.001); num129++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num7, Main.maxTilesY), (double)WorldGen.genRand.Next(2, 6), WorldGen.genRand.Next(2, 40), 59, false, 0f, 0f, false, true);
}
Main.statusText = Lang.gen[15];
for (int num130 = 0; num130 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.0001); num130++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num8, Main.maxTilesY), (double)WorldGen.genRand.Next(5, 12), WorldGen.genRand.Next(15, 50), 123, false, 0f, 0f, false, true);
}
for (int num131 = 0; num131 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.0005); num131++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num8, Main.maxTilesY), (double)WorldGen.genRand.Next(2, 5), WorldGen.genRand.Next(2, 5), 123, false, 0f, 0f, false, true);
}
Main.statusText = Lang.gen[16];
for (int num132 = 0; num132 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 6E-05); num132++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)WorldGen.worldSurfaceLow, (int)num6), (double)WorldGen.genRand.Next(3, 6), WorldGen.genRand.Next(2, 6), type, false, 0f, 0f, false, true);
}
for (int num133 = 0; num133 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 8E-05); num133++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num6, (int)num8), (double)WorldGen.genRand.Next(3, 7), WorldGen.genRand.Next(3, 7), type, false, 0f, 0f, false, true);
}
for (int num134 = 0; num134 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.0002); num134++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num7, Main.maxTilesY), (double)WorldGen.genRand.Next(4, 9), WorldGen.genRand.Next(4, 8), type, false, 0f, 0f, false, true);
}
for (int num135 = 0; num135 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 3E-05); num135++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)WorldGen.worldSurfaceLow, (int)num6), (double)WorldGen.genRand.Next(3, 7), WorldGen.genRand.Next(2, 5), type2, false, 0f, 0f, false, true);
}
for (int num136 = 0; num136 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 8E-05); num136++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num6, (int)num8), (double)WorldGen.genRand.Next(3, 6), WorldGen.genRand.Next(3, 6), type2, false, 0f, 0f, false, true);
}
for (int num137 = 0; num137 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.0002); num137++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num7, Main.maxTilesY), (double)WorldGen.genRand.Next(4, 9), WorldGen.genRand.Next(4, 8), type2, false, 0f, 0f, false, true);
}
for (int num138 = 0; num138 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 2.6E-05); num138++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num6, (int)num8), (double)WorldGen.genRand.Next(3, 6), WorldGen.genRand.Next(3, 6), type3, false, 0f, 0f, false, true);
}
for (int num139 = 0; num139 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.00015); num139++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num7, Main.maxTilesY), (double)WorldGen.genRand.Next(4, 9), WorldGen.genRand.Next(4, 8), type3, false, 0f, 0f, false, true);
}
for (int num140 = 0; num140 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.00017); num140++)
{
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), type3, false, 0f, 0f, false, true);
}
for (int num141 = 0; num141 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.00012); num141++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num7, Main.maxTilesY), (double)WorldGen.genRand.Next(4, 8), WorldGen.genRand.Next(4, 8), type4, false, 0f, 0f, false, true);
}
for (int num142 = 0; num142 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.00012); num142++)
{
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), type4, false, 0f, 0f, false, true);
}
if (WorldGen.crimson)
{
for (int num143 = 0; num143 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 2E-05); num143++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num7, Main.maxTilesY), (double)WorldGen.genRand.Next(2, 4), WorldGen.genRand.Next(3, 6), 204, false, 0f, 0f, false, true);
}
}
else
{
for (int num144 = 0; num144 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 2E-05); num144++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)num7, Main.maxTilesY), (double)WorldGen.genRand.Next(2, 4), WorldGen.genRand.Next(3, 6), 22, false, 0f, 0f, false, true);
}
}
Main.statusText = Lang.gen[17];
for (int num145 = 0; num145 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.0006); num145++)
{
int num146 = WorldGen.genRand.Next(20, Main.maxTilesX - 20);
int num147 = WorldGen.genRand.Next((int)WorldGen.worldSurfaceLow, Main.maxTilesY - 20);
if (num145 < WorldGen.numMCaves)
{
num146 = WorldGen.mCaveX[num145];
num147 = WorldGen.mCaveY[num145];
}
if (!Main.tile[num146, num147].active())
{
if ((double)num147 <= Main.worldSurface)
{
if (Main.tile[num146, num147].wall <= 0)
{
goto IL_3CC7;
}
}
while (!Main.tile[num146, num147].active() && num147 > (int)WorldGen.worldSurfaceLow)
{
num147--;
}
num147++;
int num148 = 1;
if (WorldGen.genRand.Next(2) == 0)
{
num148 = -1;
}
while (!Main.tile[num146, num147].active() && num146 > 10 && num146 < Main.maxTilesX - 10)
{
num146 += num148;
}
num146 -= num148;
if ((double)num147 > Main.worldSurface || Main.tile[num146, num147].wall > 0)
{
WorldGen.TileRunner(num146, num147, (double)WorldGen.genRand.Next(4, 11), WorldGen.genRand.Next(2, 4), 51, true, (float)num148, -1f, false, false);
}
}
IL_3CC7:;
}
Main.statusText = Lang.gen[18] + " 0%";
int num149 = Main.maxTilesY - WorldGen.genRand.Next(150, 190);
for (int num150 = 0; num150 < Main.maxTilesX; num150++)
{
num149 += WorldGen.genRand.Next(-3, 4);
if (num149 < Main.maxTilesY - 190)
{
num149 = Main.maxTilesY - 190;
}
if (num149 > Main.maxTilesY - 160)
{
num149 = Main.maxTilesY - 160;
}
for (int num151 = num149 - 20 - WorldGen.genRand.Next(3); num151 < Main.maxTilesY; num151++)
{
if (num151 >= num149)
{
Main.tile[num150, num151].active(false);
Main.tile[num150, num151].lava(false);
Main.tile[num150, num151].liquid = 0;
}
else
{
Main.tile[num150, num151].type = 57;
}
}
}
int num152 = Main.maxTilesY - WorldGen.genRand.Next(40, 70);
for (int num153 = 10; num153 < Main.maxTilesX - 10; num153++)
{
num152 += WorldGen.genRand.Next(-10, 11);
if (num152 > Main.maxTilesY - 60)
{
num152 = Main.maxTilesY - 60;
}
if (num152 < Main.maxTilesY - 100)
{
num152 = Main.maxTilesY - 120;
}
for (int num154 = num152; num154 < Main.maxTilesY - 10; num154++)
{
if (!Main.tile[num153, num154].active())
{
Main.tile[num153, num154].lava(true);
Main.tile[num153, num154].liquid = 255;
}
}
}
for (int num155 = 0; num155 < Main.maxTilesX; num155++)
{
if (WorldGen.genRand.Next(50) == 0)
{
int num156 = Main.maxTilesY - 65;
while (!Main.tile[num155, num156].active() && num156 > Main.maxTilesY - 135)
{
num156--;
}
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), num156 + WorldGen.genRand.Next(20, 50), (double)WorldGen.genRand.Next(15, 20), 1000, 57, true, 0f, (float)WorldGen.genRand.Next(1, 3), true, true);
}
}
Liquid.QuickWater(-2, -1, -1);
for (int num157 = 0; num157 < Main.maxTilesX; num157++)
{
float num158 = (float)num157 / (float)(Main.maxTilesX - 1);
Main.statusText = string.Concat(new object[]
{
Lang.gen[18],
" ",
(int)(num158 * 100f / 2f + 50f),
"%"
});
if (WorldGen.genRand.Next(13) == 0)
{
int num159 = Main.maxTilesY - 65;
while ((Main.tile[num157, num159].liquid > 0 || Main.tile[num157, num159].active()) && num159 > Main.maxTilesY - 140)
{
num159--;
}
WorldGen.TileRunner(num157, num159 - WorldGen.genRand.Next(2, 5), (double)WorldGen.genRand.Next(5, 30), 1000, 57, true, 0f, (float)WorldGen.genRand.Next(1, 3), true, true);
float num160 = (float)WorldGen.genRand.Next(1, 3);
if (WorldGen.genRand.Next(3) == 0)
{
num160 *= 0.5f;
}
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.TileRunner(num157, num159 - WorldGen.genRand.Next(2, 5), (double)((int)((float)WorldGen.genRand.Next(5, 15) * num160)), (int)((float)WorldGen.genRand.Next(10, 15) * num160), 57, true, 1f, 0.3f, false, true);
}
if (WorldGen.genRand.Next(2) == 0)
{
num160 = (float)WorldGen.genRand.Next(1, 3);
WorldGen.TileRunner(num157, num159 - WorldGen.genRand.Next(2, 5), (double)((int)((float)WorldGen.genRand.Next(5, 15) * num160)), (int)((float)WorldGen.genRand.Next(10, 15) * num160), 57, true, -1f, 0.3f, false, true);
}
WorldGen.TileRunner(num157 + WorldGen.genRand.Next(-10, 10), num159 + WorldGen.genRand.Next(-10, 10), (double)WorldGen.genRand.Next(5, 15), WorldGen.genRand.Next(5, 10), -2, false, (float)WorldGen.genRand.Next(-1, 3), (float)WorldGen.genRand.Next(-1, 3), false, true);
if (WorldGen.genRand.Next(3) == 0)
{
WorldGen.TileRunner(num157 + WorldGen.genRand.Next(-10, 10), num159 + WorldGen.genRand.Next(-10, 10), (double)WorldGen.genRand.Next(10, 30), WorldGen.genRand.Next(10, 20), -2, false, (float)WorldGen.genRand.Next(-1, 3), (float)WorldGen.genRand.Next(-1, 3), false, true);
}
if (WorldGen.genRand.Next(5) == 0)
{
WorldGen.TileRunner(num157 + WorldGen.genRand.Next(-15, 15), num159 + WorldGen.genRand.Next(-15, 10), (double)WorldGen.genRand.Next(15, 30), WorldGen.genRand.Next(5, 20), -2, false, (float)WorldGen.genRand.Next(-1, 3), (float)WorldGen.genRand.Next(-1, 3), false, true);
}
}
}
for (int num161 = 0; num161 < Main.maxTilesX; num161++)
{
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, false, 0f, 0f, false, true);
}
for (int num162 = 0; num162 < Main.maxTilesX; num162++)
{
if (!Main.tile[num162, Main.maxTilesY - 145].active())
{
Main.tile[num162, Main.maxTilesY - 145].liquid = 255;
Main.tile[num162, Main.maxTilesY - 145].lava(true);
}
if (!Main.tile[num162, Main.maxTilesY - 144].active())
{
Main.tile[num162, Main.maxTilesY - 144].liquid = 255;
Main.tile[num162, Main.maxTilesY - 144].lava(true);
}
}
for (int num163 = 0; num163 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.0008); num163++)
{
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, false, 0f, 0f, false, true);
}
WorldGen.AddHellHouses();
int num164 = WorldGen.genRand.Next(2, (int)((double)Main.maxTilesX * 0.005));
for (int num165 = 0; num165 < num164; num165++)
{
float num166 = (float)num165 / (float)num164;
Main.statusText = string.Concat(new object[]
{
Lang.gen[19],
" ",
(int)(num166 * 100f),
"%"
});
int num167 = WorldGen.genRand.Next(300, Main.maxTilesX - 300);
while (num167 > Main.maxTilesX / 2 - 50 && num167 < Main.maxTilesX / 2 + 50)
{
num167 = WorldGen.genRand.Next(300, Main.maxTilesX - 300);
}
int num168 = (int)WorldGen.worldSurfaceLow - 20;
while (!Main.tile[num167, num168].active())
{
num168++;
}
WorldGen.Lakinater(num167, num168);
}
int x;
if (num9 == -1)
{
x = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.05), (int)((double)Main.maxTilesX * 0.2));
num9 = -1;
}
else
{
x = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.8), (int)((double)Main.maxTilesX * 0.95));
num9 = 1;
}
int y = (int)((Main.worldSurface + Main.rockLayer) / 2.0) + WorldGen.genRand.Next(-200, 200);
WorldGen.MakeDungeon(x, y, 41, 7);
if (WorldGen.crimson)
{
int num169 = 0;
while ((double)num169 < (double)Main.maxTilesX * 0.00045)
{
float num170 = (float)((double)num169 / ((double)Main.maxTilesX * 0.00045));
Main.statusText = string.Concat(new object[]
{
Lang.gen[72],
" ",
(int)(num170 * 100f),
"%"
});
bool flag9 = false;
int num171 = 0;
int num172 = 0;
int num173 = 0;
while (!flag9)
{
int num174 = 0;
flag9 = true;
int num175 = Main.maxTilesX / 2;
int num176 = 200;
if (num9 < 0)
{
num171 = WorldGen.genRand.Next(600, Main.maxTilesX - 320);
}
else
{
num171 = WorldGen.genRand.Next(320, Main.maxTilesX - 600);
}
num172 = num171 - WorldGen.genRand.Next(200) - 100;
num173 = num171 + WorldGen.genRand.Next(200) + 100;
if (num172 < 285)
{
num172 = 285;
}
if (num173 > Main.maxTilesX - 285)
{
num173 = Main.maxTilesX - 285;
}
if (num9 < 0 && num172 < 400)
{
num172 = 400;
}
else
{
if (num9 > 0 && num172 > Main.maxTilesX - 400)
{
num172 = Main.maxTilesX - 400;
}
}
if (num171 > num175 - num176 && num171 < num175 + num176)
{
flag9 = false;
}
if (num172 > num175 - num176 && num172 < num175 + num176)
{
flag9 = false;
}
if (num173 > num175 - num176 && num173 < num175 + num176)
{
flag9 = false;
}
for (int num177 = num172; num177 < num173; num177++)
{
for (int num178 = 0; num178 < (int)Main.worldSurface; num178 += 5)
{
if (Main.tile[num177, num178].active() && Main.tileDungeon[(int)Main.tile[num177, num178].type])
{
flag9 = false;
break;
}
if (!flag9)
{
break;
}
}
}
if (num174 < 200 && WorldGen.JungleX > num172 && WorldGen.JungleX < num173)
{
num174++;
flag9 = false;
}
}
WorldGen.CrimStart(num171, (int)WorldGen.worldSurfaceLow - 10);
for (int num179 = num172; num179 < num173; num179++)
{
int num180 = (int)WorldGen.worldSurfaceLow;
while ((double)num180 < Main.worldSurface - 1.0)
{
if (Main.tile[num179, num180].active())
{
int num181 = num180 + WorldGen.genRand.Next(10, 14);
for (int num182 = num180; num182 < num181; num182++)
{
if ((Main.tile[num179, num182].type == 59 || Main.tile[num179, num182].type == 60) && num179 >= num172 + WorldGen.genRand.Next(5) && num179 < num173 - WorldGen.genRand.Next(5))
{
Main.tile[num179, num182].type = 0;
}
}
break;
}
num180++;
}
}
double num183 = Main.worldSurface + 40.0;
for (int num184 = num172; num184 < num173; num184++)
{
num183 += (double)WorldGen.genRand.Next(-2, 3);
if (num183 < Main.worldSurface + 30.0)
{
num183 = Main.worldSurface + 30.0;
}
if (num183 > Main.worldSurface + 50.0)
{
num183 = Main.worldSurface + 50.0;
}
num49 = num184;
bool flag10 = false;
int num185 = (int)WorldGen.worldSurfaceLow;
while ((double)num185 < num183)
{
if (Main.tile[num49, num185].active())
{
if (Main.tile[num49, num185].type == 53 && num49 >= num172 + WorldGen.genRand.Next(5) && num49 <= num173 - WorldGen.genRand.Next(5))
{
Main.tile[num49, num185].type = 234;
}
if (Main.tile[num49, num185].type == 0 && (double)num185 < Main.worldSurface - 1.0 && !flag10)
{
WorldGen.grassSpread = 0;
WorldGen.SpreadGrass(num49, num185, 0, 199, true, 0);
}
flag10 = true;
if (Main.tile[num49, num185].type == 1 && num49 >= num172 + WorldGen.genRand.Next(5) && num49 <= num173 - WorldGen.genRand.Next(5))
{
Main.tile[num49, num185].type = 203;
}
if (Main.tile[num49, num185].type == 2)
{
Main.tile[num49, num185].type = 199;
}
if (Main.tile[num49, num185].type == 161)
{
Main.tile[num49, num185].type = 200;
}
}
num185++;
}
}
int num186 = WorldGen.genRand.Next(10, 15);
for (int num187 = 0; num187 < num186; num187++)
{
int num188 = 0;
bool flag11 = false;
int num189 = 0;
while (!flag11)
{
num188++;
int num190 = WorldGen.genRand.Next(num172 - num189, num173 + num189);
int num191 = WorldGen.genRand.Next((int)(Main.worldSurface - (double)(num189 / 2)), (int)(Main.worldSurface + 100.0 + (double)num189));
if (num188 > 100)
{
num189++;
num188 = 0;
}
if (!Main.tile[num190, num191].active())
{
while (!Main.tile[num190, num191].active())
{
num191++;
}
num191--;
}
else
{
while (Main.tile[num190, num191].active() && (double)num191 > Main.worldSurface)
{
num191--;
}
}
if (num189 > 10 || (Main.tile[num190, num191 + 1].active() && Main.tile[num190, num191 + 1].type == 203))
{
WorldGen.Place3x2(num190, num191, 26, 1);
if (Main.tile[num190, num191].type == 26)
{
flag11 = true;
}
}
if (num189 > 100)
{
flag11 = true;
}
}
}
num169++;
}
}
else
{
int num192 = 0;
while ((double)num192 < (double)Main.maxTilesX * 0.00045)
{
float num193 = (float)((double)num192 / ((double)Main.maxTilesX * 0.00045));
Main.statusText = string.Concat(new object[]
{
Lang.gen[20],
" ",
(int)(num193 * 100f),
"%"
});
bool flag12 = false;
int num194 = 0;
int num195 = 0;
int num196 = 0;
while (!flag12)
{
int num197 = 0;
flag12 = true;
int num198 = Main.maxTilesX / 2;
int num199 = 200;
num194 = WorldGen.genRand.Next(320, Main.maxTilesX - 320);
num195 = num194 - WorldGen.genRand.Next(200) - 100;
num196 = num194 + WorldGen.genRand.Next(200) + 100;
if (num195 < 285)
{
num195 = 285;
}
if (num196 > Main.maxTilesX - 285)
{
num196 = Main.maxTilesX - 285;
}
if (num194 > num198 - num199 && num194 < num198 + num199)
{
flag12 = false;
}
if (num195 > num198 - num199 && num195 < num198 + num199)
{
flag12 = false;
}
if (num196 > num198 - num199 && num196 < num198 + num199)
{
flag12 = false;
}
for (int num200 = num195; num200 < num196; num200++)
{
for (int num201 = 0; num201 < (int)Main.worldSurface; num201 += 5)
{
if (Main.tile[num200, num201].active() && Main.tileDungeon[(int)Main.tile[num200, num201].type])
{
flag12 = false;
break;
}
if (!flag12)
{
break;
}
}
}
if (num197 < 200 && WorldGen.JungleX > num195 && WorldGen.JungleX < num196)
{
num197++;
flag12 = false;
}
}
int num202 = 0;
for (int num203 = num195; num203 < num196; num203++)
{
if (num202 > 0)
{
num202--;
}
if (num203 == num194 || num202 == 0)
{
int num204 = (int)WorldGen.worldSurfaceLow;
while ((double)num204 < Main.worldSurface - 1.0)
{
if (Main.tile[num203, num204].active() || Main.tile[num203, num204].wall > 0)
{
if (num203 == num194)
{
num202 = 20;
WorldGen.ChasmRunner(num203, num204, WorldGen.genRand.Next(150) + 150, true);
break;
}
if (WorldGen.genRand.Next(35) == 0 && num202 == 0)
{
num202 = 30;
bool makeOrb = true;
WorldGen.ChasmRunner(num203, num204, WorldGen.genRand.Next(50) + 50, makeOrb);
break;
}
break;
}
else
{
num204++;
}
}
}
int num205 = (int)WorldGen.worldSurfaceLow;
while ((double)num205 < Main.worldSurface - 1.0)
{
if (Main.tile[num203, num205].active())
{
int num206 = num205 + WorldGen.genRand.Next(10, 14);
for (int num207 = num205; num207 < num206; num207++)
{
if ((Main.tile[num203, num207].type == 59 || Main.tile[num203, num207].type == 60) && num203 >= num195 + WorldGen.genRand.Next(5) && num203 < num196 - WorldGen.genRand.Next(5))
{
Main.tile[num203, num207].type = 0;
}
}
break;
}
num205++;
}
}
double num208 = Main.worldSurface + 40.0;
for (int num209 = num195; num209 < num196; num209++)
{
num208 += (double)WorldGen.genRand.Next(-2, 3);
if (num208 < Main.worldSurface + 30.0)
{
num208 = Main.worldSurface + 30.0;
}
if (num208 > Main.worldSurface + 50.0)
{
num208 = Main.worldSurface + 50.0;
}
num49 = num209;
bool flag13 = false;
int num210 = (int)WorldGen.worldSurfaceLow;
while ((double)num210 < num208)
{
if (Main.tile[num49, num210].active())
{
if (Main.tile[num49, num210].type == 53 && num49 >= num195 + WorldGen.genRand.Next(5) && num49 <= num196 - WorldGen.genRand.Next(5))
{
Main.tile[num49, num210].type = 112;
}
if (Main.tile[num49, num210].type == 0 && (double)num210 < Main.worldSurface - 1.0 && !flag13)
{
WorldGen.grassSpread = 0;
WorldGen.SpreadGrass(num49, num210, 0, 23, true, 0);
}
flag13 = true;
if (Main.tile[num49, num210].type == 1 && num49 >= num195 + WorldGen.genRand.Next(5) && num49 <= num196 - WorldGen.genRand.Next(5))
{
Main.tile[num49, num210].type = 25;
}
if (Main.tile[num49, num210].type == 2)
{
Main.tile[num49, num210].type = 23;
}
if (Main.tile[num49, num210].type == 161)
{
Main.tile[num49, num210].type = 163;
}
}
num210++;
}
}
for (int num211 = num195; num211 < num196; num211++)
{
for (int num212 = 0; num212 < Main.maxTilesY - 50; num212++)
{
if (Main.tile[num211, num212].active() && Main.tile[num211, num212].type == 31)
{
int num213 = num211 - 13;
int num214 = num211 + 13;
int num215 = num212 - 13;
int num216 = num212 + 13;
for (int num217 = num213; num217 < num214; num217++)
{
if (num217 > 10 && num217 < Main.maxTilesX - 10)
{
for (int num218 = num215; num218 < num216; num218++)
{
if (Math.Abs(num217 - num211) + Math.Abs(num218 - num212) < 9 + WorldGen.genRand.Next(11) && WorldGen.genRand.Next(3) != 0 && Main.tile[num217, num218].type != 31)
{
Main.tile[num217, num218].active(true);
Main.tile[num217, num218].type = 25;
if (Math.Abs(num217 - num211) <= 1 && Math.Abs(num218 - num212) <= 1)
{
Main.tile[num217, num218].active(false);
}
}
if (Main.tile[num217, num218].type != 31 && Math.Abs(num217 - num211) <= 2 + WorldGen.genRand.Next(3) && Math.Abs(num218 - num212) <= 2 + WorldGen.genRand.Next(3))
{
Main.tile[num217, num218].active(false);
}
}
}
}
}
}
}
num192++;
}
}
for (int num219 = num66; num219 < num67; num219++)
{
for (int num220 = array5[num219]; num220 < array6[num219]; num220++)
{
int type11 = (int)Main.tile[num220, num219].type;
if (type11 == 123)
{
Main.tile[num220, num219].type = 224;
}
else
{
if (type11 == 59)
{
bool flag14 = true;
int num221 = 3;
for (int num222 = num220 - num221; num222 <= num220 + num221; num222++)
{
for (int num223 = num219 - num221; num223 <= num219 + num221; num223++)
{
if (Main.tile[num222, num223].type == 60 || Main.tile[num222, num223].type == 70 || Main.tile[num222, num223].type == 71 || Main.tile[num222, num223].type == 72)
{
flag14 = false;
break;
}
}
}
if (flag14)
{
Main.tile[num220, num219].type = 224;
}
}
else
{
if (type11 == 1)
{
Main.tile[num220, num219].type = 161;
}
}
}
}
}
Main.statusText = Lang.gen[21];
for (int num224 = 0; num224 < WorldGen.numMCaves; num224++)
{
int i2 = WorldGen.mCaveX[num224];
int j2 = WorldGen.mCaveY[num224];
WorldGen.CaveOpenater(i2, j2);
WorldGen.Cavinator(i2, j2, WorldGen.genRand.Next(40, 50));
}
int num225 = 0;
int num226 = 0;
int num227 = 20;
int num228 = Main.maxTilesX - 20;
Main.statusText = Lang.gen[22];
for (int num229 = 0; num229 < 2; num229++)
{
if (num229 == 0)
{
int num230 = 0;
int num231 = WorldGen.genRand.Next(125, 200) + 50;
if (num9 == 1)
{
num231 = 275;
}
int num232 = 0;
float num233 = 1f;
int num234 = 0;
while (!Main.tile[num231 - 1, num234].active())
{
num234++;
}
num225 = num234;
num234 += WorldGen.genRand.Next(1, 5);
for (int num235 = num231 - 1; num235 >= num230; num235--)
{
num232++;
if (num232 < 3)
{
num233 += (float)WorldGen.genRand.Next(10, 20) * 0.2f;
}
else
{
if (num232 < 6)
{
num233 += (float)WorldGen.genRand.Next(10, 20) * 0.15f;
}
else
{
if (num232 < 9)
{
num233 += (float)WorldGen.genRand.Next(10, 20) * 0.1f;
}
else
{
if (num232 < 15)
{
num233 += (float)WorldGen.genRand.Next(10, 20) * 0.07f;
}
else
{
if (num232 < 50)
{
num233 += (float)WorldGen.genRand.Next(10, 20) * 0.05f;
}
else
{
if (num232 < 75)
{
num233 += (float)WorldGen.genRand.Next(10, 20) * 0.04f;
}
else
{
if (num232 < 100)
{
num233 += (float)WorldGen.genRand.Next(10, 20) * 0.03f;
}
else
{
if (num232 < 125)
{
num233 += (float)WorldGen.genRand.Next(10, 20) * 0.02f;
}
else
{
if (num232 < 150)
{
num233 += (float)WorldGen.genRand.Next(10, 20) * 0.01f;
}
else
{
if (num232 < 175)
{
num233 += (float)WorldGen.genRand.Next(10, 20) * 0.005f;
}
else
{
if (num232 < 200)
{
num233 += (float)WorldGen.genRand.Next(10, 20) * 0.001f;
}
else
{
if (num232 < 230)
{
num233 += (float)WorldGen.genRand.Next(10, 20) * 0.01f;
}
else
{
if (num232 < 235)
{
num233 += (float)WorldGen.genRand.Next(10, 20) * 0.05f;
}
else
{
if (num232 < 240)
{
num233 += (float)WorldGen.genRand.Next(10, 20) * 0.1f;
}
else
{
if (num232 < 245)
{
num233 += (float)WorldGen.genRand.Next(10, 20) * 0.05f;
}
else
{
if (num232 < 255)
{
num233 += (float)WorldGen.genRand.Next(10, 20) * 0.01f;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
if (num232 == 235)
{
num228 = num235;
}
if (num232 == 235)
{
num227 = num235;
}
int num236 = WorldGen.genRand.Next(15, 20);
int num237 = 0;
while ((float)num237 < (float)num234 + num233 + (float)num236)
{
if ((float)num237 < (float)num234 + num233 * 0.75f - 3f)
{
Main.tile[num235, num237].active(false);
if (num237 > num234)
{
Main.tile[num235, num237].liquid = 255;
}
else
{
if (num237 == num234)
{
Main.tile[num235, num237].liquid = 127;
}
}
}
else
{
if (num237 > num234)
{
Main.tile[num235, num237].type = 53;
Main.tile[num235, num237].active(true);
}
}
Main.tile[num235, num237].wall = 0;
num237++;
}
}
}
else
{
int num230 = Main.maxTilesX - WorldGen.genRand.Next(125, 200) - 50;
int num231 = Main.maxTilesX;
if (num9 == -1)
{
num230 = Main.maxTilesX - 275;
}
float num238 = 1f;
int num239 = 0;
int num240 = 0;
while (!Main.tile[num230, num240].active())
{
num240++;
}
num226 = num240;
num240 += WorldGen.genRand.Next(1, 5);
for (int num241 = num230; num241 < num231; num241++)
{
num239++;
if (num239 < 3)
{
num238 += (float)WorldGen.genRand.Next(10, 20) * 0.2f;
}
else
{
if (num239 < 6)
{
num238 += (float)WorldGen.genRand.Next(10, 20) * 0.15f;
}
else
{
if (num239 < 9)
{
num238 += (float)WorldGen.genRand.Next(10, 20) * 0.1f;
}
else
{
if (num239 < 15)
{
num238 += (float)WorldGen.genRand.Next(10, 20) * 0.07f;
}
else
{
if (num239 < 50)
{
num238 += (float)WorldGen.genRand.Next(10, 20) * 0.05f;
}
else
{
if (num239 < 75)
{
num238 += (float)WorldGen.genRand.Next(10, 20) * 0.04f;
}
else
{
if (num239 < 100)
{
num238 += (float)WorldGen.genRand.Next(10, 20) * 0.03f;
}
else
{
if (num239 < 125)
{
num238 += (float)WorldGen.genRand.Next(10, 20) * 0.02f;
}
else
{
if (num239 < 150)
{
num238 += (float)WorldGen.genRand.Next(10, 20) * 0.01f;
}
else
{
if (num239 < 175)
{
num238 += (float)WorldGen.genRand.Next(10, 20) * 0.005f;
}
else
{
if (num239 < 200)
{
num238 += (float)WorldGen.genRand.Next(10, 20) * 0.001f;
}
else
{
if (num239 < 230)
{
num238 += (float)WorldGen.genRand.Next(10, 20) * 0.01f;
}
else
{
if (num239 < 235)
{
num238 += (float)WorldGen.genRand.Next(10, 20) * 0.05f;
}
else
{
if (num239 < 240)
{
num238 += (float)WorldGen.genRand.Next(10, 20) * 0.1f;
}
else
{
if (num239 < 245)
{
num238 += (float)WorldGen.genRand.Next(10, 20) * 0.05f;
}
else
{
if (num239 < 255)
{
num238 += (float)WorldGen.genRand.Next(10, 20) * 0.01f;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
if (num239 == 235)
{
num228 = num241;
}
int num242 = WorldGen.genRand.Next(15, 20);
int num243 = 0;
while ((float)num243 < (float)num240 + num238 + (float)num242)
{
if ((float)num243 < (float)num240 + num238 * 0.75f - 3f && (double)num243 < Main.worldSurface - 2.0)
{
Main.tile[num241, num243].active(false);
if (num243 > num240)
{
Main.tile[num241, num243].liquid = 255;
}
else
{
if (num243 == num240)
{
Main.tile[num241, num243].liquid = 127;
}
}
}
else
{
if (num243 > num240)
{
Main.tile[num241, num243].type = 53;
Main.tile[num241, num243].active(true);
}
}
Main.tile[num241, num243].wall = 0;
num243++;
}
}
}
}
while (!Main.tile[num227, num225].active())
{
num225++;
}
num225++;
while (!Main.tile[num228, num226].active())
{
num226++;
}
num226++;
Main.statusText = Lang.gen[23];
for (int num244 = 63; num244 <= 68; num244++)
{
float num245 = 0f;
if (num244 == 67)
{
num245 = (float)Main.maxTilesX * 0.5f;
}
else
{
if (num244 == 66)
{
num245 = (float)Main.maxTilesX * 0.45f;
}
else
{
if (num244 == 63)
{
num245 = (float)Main.maxTilesX * 0.3f;
}
else
{
if (num244 == 65)
{
num245 = (float)Main.maxTilesX * 0.25f;
}
else
{
if (num244 == 64)
{
num245 = (float)Main.maxTilesX * 0.1f;
}
else
{
if (num244 == 68)
{
num245 = (float)Main.maxTilesX * 0.05f;
}
}
}
}
}
}
num245 *= 0.2f;
int num246 = 0;
while ((float)num246 < num245)
{
int num247 = WorldGen.genRand.Next(0, Main.maxTilesX);
int num248 = WorldGen.genRand.Next((int)Main.worldSurface, Main.maxTilesY);
while (Main.tile[num247, num248].type != 1)
{
num247 = WorldGen.genRand.Next(0, Main.maxTilesX);
num248 = WorldGen.genRand.Next((int)Main.worldSurface, Main.maxTilesY);
}
WorldGen.TileRunner(num247, num248, (double)WorldGen.genRand.Next(2, 6), WorldGen.genRand.Next(3, 7), num244, false, 0f, 0f, false, true);
num246++;
}
}
for (int num249 = 0; num249 < 2; num249++)
{
int num250 = 1;
int num251 = 5;
int num252 = Main.maxTilesX - 5;
if (num249 == 1)
{
num250 = -1;
num251 = Main.maxTilesX - 5;
num252 = 5;
}
for (int num253 = num251; num253 != num252; num253 += num250)
{
for (int num254 = 10; num254 < Main.maxTilesY - 10; num254++)
{
if (Main.tile[num253, num254].active() && Main.tile[num253, num254 + 1].active() && Main.tileSand[(int)Main.tile[num253, num254].type] && Main.tileSand[(int)Main.tile[num253, num254 + 1].type])
{
byte type12 = Main.tile[num253, num254].type;
int num255 = num253 + num250;
int num256 = num254 + 1;
if (!Main.tile[num255, num254].active() && !Main.tile[num255, num254 + 1].active())
{
while (!Main.tile[num255, num256].active())
{
num256++;
}
num256--;
Main.tile[num253, num254].active(false);
Main.tile[num255, num256].active(true);
Main.tile[num255, num256].type = type12;
}
}
}
}
}
for (int num257 = 0; num257 < Main.maxTilesX; num257++)
{
float num258 = (float)num257 / (float)(Main.maxTilesX - 1);
Main.statusText = string.Concat(new object[]
{
Lang.gen[24],
" ",
(int)(num258 * 100f),
"%"
});
for (int num259 = Main.maxTilesY - 5; num259 > 0; num259--)
{
if (Main.tile[num257, num259].active())
{
if (Main.tile[num257, num259].type == 53)
{
int num260 = num259;
while (!Main.tile[num257, num260 + 1].active())
{
if (num260 >= Main.maxTilesY - 5)
{
break;
}
Main.tile[num257, num260 + 1].active(true);
Main.tile[num257, num260 + 1].type = 53;
num260++;
}
}
else
{
if (Main.tile[num257, num259].type == 123)
{
int num261 = num259;
while (!Main.tile[num257, num261 + 1].active())
{
if (num261 >= Main.maxTilesY - 5)
{
break;
}
Main.tile[num257, num261 + 1].active(true);
Main.tile[num257, num261 + 1].type = 123;
Main.tile[num257, num261].active(false);
num261++;
}
}
else
{
if (Main.tile[num257, num259].type == 224)
{
int num262 = num259;
while (!Main.tile[num257, num262 + 1].active())
{
if (num262 >= Main.maxTilesY - 5)
{
break;
}
Main.tile[num257, num262 + 1].active(true);
Main.tile[num257, num262 + 1].type = 224;
Main.tile[num257, num262].active(false);
num262++;
}
}
else
{
if (Main.tile[num257, num259].type == 234)
{
int num263 = num259;
while (!Main.tile[num257, num263 + 1].active())
{
if (num263 >= Main.maxTilesY - 5)
{
break;
}
Main.tile[num257, num263 + 1].active(true);
Main.tile[num257, num263 + 1].type = 234;
Main.tile[num257, num263].active(false);
num263++;
}
}
else
{
if (Main.tile[num257, num259].type == 112)
{
int num264 = num259;
while (!Main.tile[num257, num264 + 1].active() && num264 < Main.maxTilesY - 5)
{
Main.tile[num257, num264 + 1].active(true);
Main.tile[num257, num264 + 1].type = 112;
Main.tile[num257, num264].active(false);
num264++;
}
}
}
}
}
}
}
}
}
for (int num265 = 3; num265 < Main.maxTilesX - 3; num265++)
{
float num266 = (float)num265 / (float)Main.maxTilesX;
Main.statusText = string.Concat(new object[]
{
Lang.gen[25],
" ",
(int)(num266 * 100f + 1f),
"%"
});
bool flag15 = true;
int num267 = 0;
while ((double)num267 < Main.worldSurface)
{
if (flag15)
{
if (Main.tile[num265, num267].wall == 2 || Main.tile[num265, num267].wall == 40 || Main.tile[num265, num267].wall == 64)
{
Main.tile[num265, num267].wall = 0;
}
if (Main.tile[num265, num267].type != 53 && Main.tile[num265, num267].type != 112 && Main.tile[num265, num267].type != 234)
{
if (Main.tile[num265 - 1, num267].wall == 2 || Main.tile[num265 - 1, num267].wall == 40 || Main.tile[num265 - 1, num267].wall == 40)
{
Main.tile[num265 - 1, num267].wall = 0;
}
if ((Main.tile[num265 - 2, num267].wall == 2 || Main.tile[num265 - 2, num267].wall == 40 || Main.tile[num265 - 2, num267].wall == 40) && WorldGen.genRand.Next(2) == 0)
{
Main.tile[num265 - 2, num267].wall = 0;
}
if ((Main.tile[num265 - 3, num267].wall == 2 || Main.tile[num265 - 3, num267].wall == 40 || Main.tile[num265 - 3, num267].wall == 40) && WorldGen.genRand.Next(2) == 0)
{
Main.tile[num265 - 3, num267].wall = 0;
}
if (Main.tile[num265 + 1, num267].wall == 2 || Main.tile[num265 + 1, num267].wall == 40 || Main.tile[num265 + 1, num267].wall == 40)
{
Main.tile[num265 + 1, num267].wall = 0;
}
if ((Main.tile[num265 + 2, num267].wall == 2 || Main.tile[num265 + 2, num267].wall == 40 || Main.tile[num265 + 2, num267].wall == 40) && WorldGen.genRand.Next(2) == 0)
{
Main.tile[num265 + 2, num267].wall = 0;
}
if ((Main.tile[num265 + 3, num267].wall == 2 || Main.tile[num265 + 3, num267].wall == 40 || Main.tile[num265 + 3, num267].wall == 40) && WorldGen.genRand.Next(2) == 0)
{
Main.tile[num265 + 3, num267].wall = 0;
}
if (Main.tile[num265, num267].active())
{
flag15 = false;
}
}
}
else
{
if (Main.tile[num265, num267].wall == 0 && Main.tile[num265, num267 + 1].wall == 0 && Main.tile[num265, num267 + 2].wall == 0 && Main.tile[num265, num267 + 3].wall == 0 && Main.tile[num265, num267 + 4].wall == 0 && Main.tile[num265 - 1, num267].wall == 0 && Main.tile[num265 + 1, num267].wall == 0 && Main.tile[num265 - 2, num267].wall == 0 && Main.tile[num265 + 2, num267].wall == 0 && !Main.tile[num265, num267].active() && !Main.tile[num265, num267 + 1].active() && !Main.tile[num265, num267 + 2].active() && !Main.tile[num265, num267 + 3].active())
{
flag15 = true;
}
}
num267++;
}
}
for (int num268 = Main.maxTilesX - 5; num268 >= 5; num268--)
{
float num269 = (float)num268 / (float)Main.maxTilesX;
Main.statusText = string.Concat(new object[]
{
Lang.gen[25],
" ",
(int)(num269 * 100f + 1f),
"%"
});
bool flag16 = true;
int num270 = 0;
while ((double)num270 < Main.worldSurface)
{
if (flag16)
{
if (Main.tile[num268, num270].wall == 2 || Main.tile[num268, num270].wall == 40 || Main.tile[num268, num270].wall == 64)
{
Main.tile[num268, num270].wall = 0;
}
if (Main.tile[num268, num270].type != 53)
{
if (Main.tile[num268 - 1, num270].wall == 2 || Main.tile[num268 - 1, num270].wall == 40 || Main.tile[num268 - 1, num270].wall == 40)
{
Main.tile[num268 - 1, num270].wall = 0;
}
if ((Main.tile[num268 - 2, num270].wall == 2 || Main.tile[num268 - 2, num270].wall == 40 || Main.tile[num268 - 2, num270].wall == 40) && WorldGen.genRand.Next(2) == 0)
{
Main.tile[num268 - 2, num270].wall = 0;
}
if ((Main.tile[num268 - 3, num270].wall == 2 || Main.tile[num268 - 3, num270].wall == 40 || Main.tile[num268 - 3, num270].wall == 40) && WorldGen.genRand.Next(2) == 0)
{
Main.tile[num268 - 3, num270].wall = 0;
}
if (Main.tile[num268 + 1, num270].wall == 2 || Main.tile[num268 + 1, num270].wall == 40 || Main.tile[num268 + 1, num270].wall == 40)
{
Main.tile[num268 + 1, num270].wall = 0;
}
if ((Main.tile[num268 + 2, num270].wall == 2 || Main.tile[num268 + 2, num270].wall == 40 || Main.tile[num268 + 2, num270].wall == 40) && WorldGen.genRand.Next(2) == 0)
{
Main.tile[num268 + 2, num270].wall = 0;
}
if ((Main.tile[num268 + 3, num270].wall == 2 || Main.tile[num268 + 3, num270].wall == 40 || Main.tile[num268 + 3, num270].wall == 40) && WorldGen.genRand.Next(2) == 0)
{
Main.tile[num268 + 3, num270].wall = 0;
}
if (Main.tile[num268, num270].active())
{
flag16 = false;
}
}
}
else
{
if (Main.tile[num268, num270].wall == 0 && Main.tile[num268, num270 + 1].wall == 0 && Main.tile[num268, num270 + 2].wall == 0 && Main.tile[num268, num270 + 3].wall == 0 && Main.tile[num268, num270 + 4].wall == 0 && Main.tile[num268 - 1, num270].wall == 0 && Main.tile[num268 + 1, num270].wall == 0 && Main.tile[num268 - 2, num270].wall == 0 && Main.tile[num268 + 2, num270].wall == 0 && !Main.tile[num268, num270].active() && !Main.tile[num268, num270 + 1].active() && !Main.tile[num268, num270 + 2].active() && !Main.tile[num268, num270 + 3].active())
{
flag16 = true;
}
}
num270++;
}
}
for (int num271 = 0; num271 < num17; num271++)
{
int num272 = array3[num271];
int num273 = array4[num271];
if (num272 > 300 && num272 < Main.maxTilesX - 300 && (num9 >= 0 || (double)num272 >= (double)WorldGen.dungeonX + (double)Main.maxTilesX * 0.15))
{
if (num9 <= 0 || (double)num272 <= (double)WorldGen.dungeonX - (double)Main.maxTilesX * 0.15)
{
while (!Main.tile[num272, num273].active() && (double)num273 < Main.worldSurface)
{
num273++;
}
if ((double)num273 < Main.worldSurface && Main.tile[num272, num273].type == 53)
{
int num274 = Main.maxTilesX;
for (int num275 = 0; num275 < num271; num275++)
{
int num276 = Math.Abs(num272 - array3[num275]);
if (num276 < num274)
{
num274 = num276;
}
}
if (num274 >= 250)
{
num273--;
WorldGen.Pyramid(num272, num273);
}
}
}
}
}
for (int num277 = 0; num277 < Main.maxTilesX; num277++)
{
int num278 = WorldGen.genRand.Next(10, Main.maxTilesX - 10);
int num279 = WorldGen.genRand.Next(10, (int)Main.worldSurface);
if (Main.tile[num278, num279].wall == 2)
{
WorldGen.DirtyRockRunner(num278, num279);
}
}
float num280 = (float)(Main.maxTilesX / 4200);
int num281 = WorldGen.genRand.Next(0, (int)(3f * num280));
for (int num282 = 0; num282 < num281; num282++)
{
bool flag17 = false;
int num283 = 0;
while (!flag17)
{
num283++;
if (num283 > 1000)
{
flag17 = true;
}
int num284 = WorldGen.genRand.Next(300, Main.maxTilesX - 300);
if (num284 <= Main.maxTilesX / 2 - 100 || num284 >= Main.maxTilesX / 2 + 100)
{
int num285 = 0;
while (!Main.tile[num284, num285].active() && (double)num285 < Main.worldSurface)
{
num285++;
}
if (Main.tile[num284, num285].type == 0)
{
num285--;
if (num285 > 150)
{
bool flag18 = true;
for (int num286 = num284 - 50; num286 < num284 + 50; num286++)
{
for (int num287 = num285 - 50; num287 < num285 + 50; num287++)
{
if (Main.tile[num286, num287].active())
{
int type13 = (int)Main.tile[num286, num287].type;
if (type13 == 41 || type13 == 43 || type13 == 44 || type13 == 189 || type13 == 196)
{
flag18 = false;
}
}
}
}
if (flag18)
{
flag17 = WorldGen.GrowLivingTree(num284, num285);
}
}
}
}
}
}
Main.tileSolid[192] = false;
for (int num288 = 25; num288 < Main.maxTilesX - 25; num288++)
{
int num289 = 25;
while ((double)num289 < Main.worldSurface)
{
if (Main.tile[num288, num289].type == 191 || Main.tile[num288, num289 - 1].type == 191 || Main.tile[num288 - 1, num289].type == 191 || Main.tile[num288 + 1, num289].type == 191 || Main.tile[num288, num289 + 1].type == 191)
{
bool flag19 = true;
for (int num290 = num288 - 1; num290 <= num288 + 1; num290++)
{
for (int num291 = num289 - 1; num291 <= num289 + 1; num291++)
{
if (num290 != num288 && num291 != num289 && Main.tile[num290, num291].type != 191 && Main.tile[num290, num291].wall != 78)
{
flag19 = false;
}
}
}
if (flag19)
{
Main.tile[num288, num289].wall = 78;
}
}
num289++;
}
}
for (int num292 = 0; num292 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 2E-05); num292++)
{
float num293 = (float)((double)num292 / ((double)(Main.maxTilesX * Main.maxTilesY) * 2E-05));
Main.statusText = string.Concat(new object[]
{
Lang.gen[26],
" ",
(int)(num293 * 100f + 1f),
"%"
});
bool flag20 = false;
int num294 = 0;
while (!flag20)
{
int num295 = WorldGen.genRand.Next(1, Main.maxTilesX);
int num296 = (int)(num6 + 20.0);
int style = 0;
if (WorldGen.crimson)
{
style = 1;
}
WorldGen.Place3x2(num295, num296, 26, style);
if (Main.tile[num295, num296].type == 26)
{
flag20 = true;
}
else
{
num294++;
if (num294 >= 10000)
{
flag20 = true;
}
}
}
}
for (int num297 = 0; num297 < Main.maxTilesX; num297++)
{
num49 = num297;
int num298 = (int)WorldGen.worldSurfaceLow;
while ((double)num298 < Main.worldSurface - 1.0)
{
if (Main.tile[num49, num298].active())
{
if (Main.tile[num49, num298].type == 60)
{
Main.tile[num49, num298 - 1].liquid = 255;
Main.tile[num49, num298 - 2].liquid = 255;
break;
}
break;
}
else
{
num298++;
}
}
}
for (int num299 = 400; num299 < Main.maxTilesX - 400; num299++)
{
num49 = num299;
int num300 = (int)WorldGen.worldSurfaceLow;
while ((double)num300 < Main.worldSurface - 1.0)
{
if (Main.tile[num49, num300].active())
{
if (Main.tile[num49, num300].type == 53)
{
int num301 = num300;
while ((double)num301 > WorldGen.worldSurfaceLow)
{
num301--;
Main.tile[num49, num301].liquid = 0;
}
break;
}
break;
}
else
{
num300++;
}
}
}
Main.tileSolid[192] = true;
Main.statusText = Lang.gen[70];
bool flag21 = true;
while (flag21)
{
int num302 = WorldGen.genRand.Next((int)Main.rockLayer, Main.maxTilesY - 500);
int num303;
if (num9 < 0)
{
num303 = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.6), (int)((double)Main.maxTilesX * 0.85));
}
else
{
num303 = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.15), (int)((double)Main.maxTilesX * 0.4));
}
if (Main.tile[num303, num302].active() && Main.tile[num303, num302].type == 60)
{
flag21 = false;
WorldGen.makeTemple(num303, num302);
}
}
int num304 = 0;
int[] array7 = new int[50];
int[] array8 = new int[50];
Main.statusText = Lang.gen[71];
for (int num305 = 0; num305 < WorldGen.numHives; num305++)
{
bool flag22 = false;
int num306 = WorldGen.HiveX[num305];
int num307 = WorldGen.HiveY[num305];
int num308 = 150;
for (int num309 = num306 - num308; num309 < num306 + num308; num309 += 10)
{
if (num309 > 0 && num309 <= Main.maxTilesX - 1)
{
for (int num310 = num307 - num308; num310 < num307 + num308; num310 += 10)
{
if (num310 > 0 && num310 <= Main.maxTilesY - 1)
{
if (Main.tile[num309, num310].active() && Main.tile[num309, num310].type == 226)
{
flag22 = true;
break;
}
if (Main.tile[num309, num310].wall == 87 || Main.tile[num309, num310].wall == 3 || Main.tile[num309, num310].wall == 83)
{
flag22 = true;
break;
}
}
}
}
}
if (!flag22)
{
int num311 = WorldGen.HiveX[num305];
int num312 = WorldGen.HiveY[num305];
int num313 = 0;
int[] array9 = new int[10];
int[] array10 = new int[10];
Vector2 vector = new Vector2((float)num311, (float)num312);
Vector2 vector2 = vector;
int num314 = WorldGen.genRand.Next(2, 5);
for (int num315 = 0; num315 < num314; num315++)
{
int num316 = WorldGen.genRand.Next(2, 5);
for (int num317 = 0; num317 < num316; num317++)
{
vector2 = WorldGen.Hive((int)vector.X, (int)vector.Y);
}
vector = vector2;
array9[num313] = (int)vector.X;
array10[num313] = (int)vector.Y;
num313++;
}
for (int num318 = 0; num318 < num313; num318++)
{
int num319 = array9[num318];
int num320 = array10[num318];
bool flag23 = false;
int num321 = 1;
if (WorldGen.genRand.Next(2) == 0)
{
num321 = -1;
}
while (!Main.tile[num319, num320].active() || !Main.tile[num319, num320 + 1].active() || !Main.tile[num319 + 1, num320].active() || !Main.tile[num319 + 1, num320 + 1].active())
{
num319 += num321;
if (Math.Abs(num319 - array9[num318]) > 50)
{
flag23 = true;
break;
}
}
if (!flag23)
{
num319 += num321;
for (int num322 = num319 - 1; num322 <= num319 + 2; num322++)
{
for (int num323 = num320 - 1; num323 <= num320 + 2; num323++)
{
if (Main.tile[num322, num323].active() && Main.tile[num322, num323].type != 225)
{
flag23 = true;
break;
}
}
}
if (!flag23)
{
for (int num324 = num319 - 1; num324 <= num319 + 2; num324++)
{
for (int num325 = num320 - 1; num325 <= num320 + 2; num325++)
{
if (num324 >= num319 && num324 <= num319 + 1 && num325 >= num320 && num325 <= num320 + 1)
{
Main.tile[num324, num325].active(false);
Main.tile[num324, num325].liquid = 255;
Main.tile[num324, num325].honey(true);
}
else
{
Main.tile[num324, num325].active(true);
Main.tile[num324, num325].type = 225;
}
}
}
num321 *= -1;
num320++;
int num326 = 0;
while ((num326 < 4 || WorldGen.SolidTile(num319, num320)) && num319 > 10 && num319 < Main.maxTilesX - 10)
{
num326++;
num319 += num321;
if (WorldGen.SolidTile(num319, num320))
{
WorldGen.PoundTile(num319, num320);
if (!Main.tile[num319, num320 + 1].active())
{
Main.tile[num319, num320 + 1].active(true);
Main.tile[num319, num320 + 1].type = 225;
}
}
}
}
}
}
array7[num304] = (int)vector.X;
array8[num304] = (int)vector.Y;
num304++;
int num327 = (int)vector.X;
int num328 = (int)vector.Y;
for (int num329 = num327 - 1; num329 <= num327 + 1; num329++)
{
for (int num330 = num328 - 2; num330 <= num328 + 1; num330++)
{
if (num330 != num328 + 1)
{
Main.tile[num329, num330].active(false);
}
else
{
Main.tile[num329, num330].active(true);
Main.tile[num329, num330].type = 225;
Main.tile[num329, num330].slope(0);
Main.tile[num329, num330].halfBrick(false);
}
}
}
}
}
int num331 = WorldGen.genRand.Next(40, Main.maxTilesX - 40);
int num332 = WorldGen.genRand.Next((int)(Main.worldSurface + Main.rockLayer) / 2, Main.maxTilesY - 400);
float num333 = (float)WorldGen.genRand.Next(7, 12);
num333 *= (float)(Main.maxTilesX / 4200);
int num334 = 0;
while ((float)num334 < num333)
{
bool flag24 = true;
while (flag24)
{
num331 = WorldGen.genRand.Next(40, Main.maxTilesX / 2 - 40);
if (num9 < 0)
{
num331 += Main.maxTilesX / 2;
}
num332 = WorldGen.genRand.Next((int)(Main.worldSurface + Main.rockLayer) / 2, Main.maxTilesY - 400);
if (Main.tile[num331, num332].type == 60)
{
int num335 = 30;
flag24 = false;
for (int num336 = num331 - num335; num336 < num331 + num335; num336 += 3)
{
for (int num337 = num332 - num335; num337 < num332 + num335; num337 += 3)
{
if (Main.tile[num336, num337].active() && (Main.tile[num336, num337].type == 225 || Main.tile[num336, num337].type == 229 || Main.tile[num336, num337].type == 226 || Main.tile[num336, num337].type == 119 || Main.tile[num336, num337].type == 120))
{
flag24 = false;
}
if (Main.tile[num336, num337].wall == 86 || Main.tile[num336, num337].wall == 87)
{
flag24 = false;
}
}
}
}
if (!flag24)
{
int num338 = WorldGen.genRand.Next(2, 4);
int num339 = WorldGen.genRand.Next(2, 4);
int num340 = 0;
if (num == 119)
{
num340 = 23;
}
else
{
if (num == 120)
{
num340 = 24;
}
else
{
if (num == 158)
{
num340 = 42;
}
else
{
if (num == 175)
{
num340 = 45;
}
else
{
if (num == 45)
{
num340 = 10;
}
}
}
}
}
for (int num341 = num331 - num338 - 1; num341 <= num331 + num338 + 1; num341++)
{
for (int num342 = num332 - num339 - 1; num342 <= num332 + num339 + 1; num342++)
{
Main.tile[num341, num342].active(true);
Main.tile[num341, num342].type = (byte)num;
Main.tile[num341, num342].liquid = 0;
Main.tile[num341, num342].lava(false);
}
}
for (int num343 = num331 - num338; num343 <= num331 + num338; num343++)
{
for (int num344 = num332 - num339; num344 <= num332 + num339; num344++)
{
Main.tile[num343, num344].active(false);
Main.tile[num343, num344].wall = (byte)num340;
}
}
bool flag25 = false;
int num345 = 0;
while (!flag25 && num345 < 100)
{
num345++;
int num346 = WorldGen.genRand.Next(num331 - num338, num331 + num338 + 1);
int num347 = WorldGen.genRand.Next(num332 - num339, num332 + num339 - 2);
WorldGen.PlaceTile(num346, num347, 4, true, false, -1, 3);
if (Main.tile[num346, num347].type == 4)
{
flag25 = true;
}
}
for (int num348 = num331 - num338 - 1; num348 <= num331 + num338 + 1; num348++)
{
for (int num349 = num332 + num339 - 2; num349 <= num332 + num339; num349++)
{
Main.tile[num348, num349].active(false);
}
}
for (int num350 = num331 - num338 - 1; num350 <= num331 + num338 + 1; num350++)
{
for (int num351 = num332 + num339 - 2; num351 <= num332 + num339 - 1; num351++)
{
Main.tile[num350, num351].active(false);
}
}
for (int num352 = num331 - num338 - 1; num352 <= num331 + num338 + 1; num352++)
{
int num353 = 4;
int num354 = num332 + num339 + 2;
while (!Main.tile[num352, num354].active() && num354 < Main.maxTilesY && num353 > 0)
{
Main.tile[num352, num354].active(true);
Main.tile[num352, num354].type = 59;
num354++;
num353--;
}
}
num338 -= WorldGen.genRand.Next(1, 3);
int num355 = num332 - num339 - 2;
while (num338 > -1)
{
for (int num356 = num331 - num338 - 1; num356 <= num331 + num338 + 1; num356++)
{
Main.tile[num356, num355].active(true);
Main.tile[num356, num355].type = (byte)num;
}
num338 -= WorldGen.genRand.Next(1, 3);
num355--;
}
WorldGen.JChestX[WorldGen.numJChests] = num331;
WorldGen.JChestY[WorldGen.numJChests] = num332;
WorldGen.numJChests++;
}
}
num334++;
}
Main.tileSolid[137] = false;
for (int num357 = 20; num357 < Main.maxTilesX - 20; num357++)
{
float num358 = (float)num357 / (float)Main.maxTilesX;
Main.statusText = string.Concat(new object[]
{
Lang.gen[60],
" ",
(int)(num358 * 100f + 1f),
"%"
});
for (int num359 = 20; num359 < Main.maxTilesY - 20; num359++)
{
if (!Main.tile[num357, num359 - 1].active() && Main.tile[num357, num359].type != 48 && Main.tile[num357, num359].type != 137 && Main.tile[num357, num359].type != 232 && Main.tile[num357, num359].type != 191 && Main.tile[num357, num359].type != 151)
{
if (WorldGen.SolidTile(num357, num359))
{
if (!Main.tile[num357 - 1, num359].halfBrick() && !Main.tile[num357 + 1, num359].halfBrick() && Main.tile[num357 - 1, num359].slope() == 0 && Main.tile[num357 + 1, num359].slope() == 0)
{
if (WorldGen.SolidTile(num357, num359 + 1))
{
if (!WorldGen.SolidTile(num357 - 1, num359) && !Main.tile[num357 - 1, num359 + 1].halfBrick() && WorldGen.SolidTile(num357 - 1, num359 + 1) && WorldGen.SolidTile(num357 + 1, num359) && !Main.tile[num357 + 1, num359 - 1].active())
{
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.SlopeTile(num357, num359, 2);
}
else
{
WorldGen.PoundTile(num357, num359);
}
}
else
{
if (!WorldGen.SolidTile(num357 + 1, num359) && !Main.tile[num357 + 1, num359 + 1].halfBrick() && WorldGen.SolidTile(num357 + 1, num359 + 1) && WorldGen.SolidTile(num357 - 1, num359) && !Main.tile[num357 - 1, num359 - 1].active())
{
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.SlopeTile(num357, num359, 1);
}
else
{
WorldGen.PoundTile(num357, num359);
}
}
else
{
if (WorldGen.SolidTile(num357 + 1, num359 + 1) && WorldGen.SolidTile(num357 - 1, num359 + 1) && !Main.tile[num357 + 1, num359].active() && !Main.tile[num357 - 1, num359].active())
{
WorldGen.PoundTile(num357, num359);
}
}
}
if (WorldGen.SolidTile(num357, num359))
{
if (WorldGen.SolidTile(num357 - 1, num359) && WorldGen.SolidTile(num357 + 1, num359 + 2) && !Main.tile[num357 + 1, num359].active() && !Main.tile[num357 + 1, num359 + 1].active() && !Main.tile[num357 - 1, num359 - 1].active())
{
WorldGen.KillTile(num357, num359, false, false, false);
}
else
{
if (WorldGen.SolidTile(num357 + 1, num359) && WorldGen.SolidTile(num357 - 1, num359 + 2) && !Main.tile[num357 - 1, num359].active() && !Main.tile[num357 - 1, num359 + 1].active() && !Main.tile[num357 + 1, num359 - 1].active())
{
WorldGen.KillTile(num357, num359, false, false, false);
}
else
{
if (!Main.tile[num357 - 1, num359 + 1].active() && !Main.tile[num357 - 1, num359].active() && WorldGen.SolidTile(num357 + 1, num359) && WorldGen.SolidTile(num357, num359 + 2))
{
if (WorldGen.genRand.Next(5) == 0)
{
WorldGen.KillTile(num357, num359, false, false, false);
}
else
{
if (WorldGen.genRand.Next(5) == 0)
{
WorldGen.PoundTile(num357, num359);
}
else
{
WorldGen.SlopeTile(num357, num359, 2);
}
}
}
else
{
if (!Main.tile[num357 + 1, num359 + 1].active() && !Main.tile[num357 + 1, num359].active() && WorldGen.SolidTile(num357 - 1, num359) && WorldGen.SolidTile(num357, num359 + 2))
{
if (WorldGen.genRand.Next(5) == 0)
{
WorldGen.KillTile(num357, num359, false, false, false);
}
else
{
if (WorldGen.genRand.Next(5) == 0)
{
WorldGen.PoundTile(num357, num359);
}
else
{
WorldGen.SlopeTile(num357, num359, 1);
}
}
}
}
}
}
}
}
if (WorldGen.SolidTile(num357, num359) && !Main.tile[num357 - 1, num359].active() && !Main.tile[num357 + 1, num359].active())
{
WorldGen.KillTile(num357, num359, false, false, false);
}
}
}
else
{
if (!Main.tile[num357, num359].active() && Main.tile[num357, num359 + 1].type != 151)
{
if (Main.tile[num357 + 1, num359].type != 190 && Main.tile[num357 + 1, num359].type != 48 && Main.tile[num357 + 1, num359].type != 232 && WorldGen.SolidTile(num357 - 1, num359 + 1) && WorldGen.SolidTile(num357 + 1, num359) && !Main.tile[num357 - 1, num359].active() && !Main.tile[num357 + 1, num359 - 1].active())
{
WorldGen.PlaceTile(num357, num359, (int)Main.tile[num357, num359 + 1].type, false, false, -1, 0);
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.SlopeTile(num357, num359, 2);
}
else
{
WorldGen.PoundTile(num357, num359);
}
}
if (Main.tile[num357 - 1, num359].type != 190 && Main.tile[num357 - 1, num359].type != 48 && Main.tile[num357 - 1, num359].type != 232 && WorldGen.SolidTile(num357 + 1, num359 + 1) && WorldGen.SolidTile(num357 - 1, num359) && !Main.tile[num357 + 1, num359].active() && !Main.tile[num357 - 1, num359 - 1].active())
{
WorldGen.PlaceTile(num357, num359, (int)Main.tile[num357, num359 + 1].type, false, false, -1, 0);
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.SlopeTile(num357, num359, 1);
}
else
{
WorldGen.PoundTile(num357, num359);
}
}
}
}
}
}
}
for (int num360 = 20; num360 < Main.maxTilesX - 20; num360++)
{
for (int num361 = 20; num361 < Main.maxTilesY - 20; num361++)
{
if (WorldGen.genRand.Next(2) == 0 && !Main.tile[num360, num361 - 1].active() && Main.tile[num360, num361].type != 137 && Main.tile[num360, num361].type != 48 && Main.tile[num360, num361].type != 232 && Main.tile[num360, num361].type != 191 && Main.tile[num360, num361].type != 151 && Main.tile[num360, num361].type != 75 && Main.tile[num360, num361].type != 76 && WorldGen.SolidTile(num360, num361) && Main.tile[num360 - 1, num361].type != 137 && Main.tile[num360 + 1, num361].type != 137)
{
if (WorldGen.SolidTile(num360, num361 + 1) && WorldGen.SolidTile(num360 + 1, num361) && !Main.tile[num360 - 1, num361].active())
{
WorldGen.SlopeTile(num360, num361, 2);
}
if (WorldGen.SolidTile(num360, num361 + 1) && WorldGen.SolidTile(num360 - 1, num361) && !Main.tile[num360 + 1, num361].active())
{
WorldGen.SlopeTile(num360, num361, 1);
}
}
if (Main.tile[num360, num361].slope() == 1 && !WorldGen.SolidTile(num360 - 1, num361))
{
WorldGen.SlopeTile(num360, num361, 0);
WorldGen.PoundTile(num360, num361);
}
if (Main.tile[num360, num361].slope() == 2 && !WorldGen.SolidTile(num360 + 1, num361))
{
WorldGen.SlopeTile(num360, num361, 0);
WorldGen.PoundTile(num360, num361);
}
}
}
for (int num362 = 20; num362 < Main.maxTilesX - 20; num362++)
{
for (int num363 = 20; num363 < Main.maxTilesY - 20; num363++)
{
if (Main.tile[num362, num363].slope() != 0 || Main.tile[num362, num363].halfBrick())
{
if (!Main.tile[num362, num363 + 1].active())
{
Main.tile[num362, num363].active(false);
}
if (Main.tile[num362 + 1, num363].type == 137 || Main.tile[num362 - 1, num363].type == 137)
{
Main.tile[num362, num363].active(false);
}
}
}
}
Main.tileSolid[137] = true;
Main.tileSolid[190] = false;
Main.tileSolid[192] = false;
Liquid.QuickWater(3, -1, -1);
WorldGen.WaterCheck();
int num364 = 0;
Liquid.quickSettle = true;
while (num364 < 10)
{
int num365 = Liquid.numLiquid + LiquidBuffer.numLiquidBuffer;
num364++;
float num366 = 0f;
while (Liquid.numLiquid > 0)
{
float num367 = (float)(num365 - (Liquid.numLiquid + LiquidBuffer.numLiquidBuffer)) / (float)num365;
if (Liquid.numLiquid + LiquidBuffer.numLiquidBuffer > num365)
{
num365 = Liquid.numLiquid + LiquidBuffer.numLiquidBuffer;
}
if (num367 > num366)
{
num366 = num367;
}
else
{
num367 = num366;
}
if (num364 == 1)
{
Main.statusText = string.Concat(new object[]
{
Lang.gen[27],
" ",
(int)(num367 * 100f / 3f + 33f),
"%"
});
}
int num368 = 10;
if (num364 > num368)
{
}
Liquid.UpdateLiquid();
}
WorldGen.WaterCheck();
Main.statusText = string.Concat(new object[]
{
Lang.gen[27],
" ",
(int)((float)num364 * 10f / 3f + 66f),
"%"
});
}
Liquid.quickSettle = false;
Main.tileSolid[190] = true;
for (int num369 = 20; num369 < Main.maxTilesX - 20; num369++)
{
float num370 = (float)num369 / (float)Main.maxTilesX;
Main.statusText = string.Concat(new object[]
{
Lang.gen[69],
" ",
(int)(num370 * 50f + 1f),
"%"
});
for (int num371 = 20; num371 < Main.maxTilesY - 20; num371++)
{
if (WorldGen.SolidTile(num369, num371) && !Main.tile[num369 - 1, num371].active() && WorldGen.SolidTile(num369, num371 + 1) && !Main.tile[num369 + 1, num371].active() && (Main.tile[num369 - 1, num371].liquid > 0 || Main.tile[num369 + 1, num371].liquid > 0))
{
bool flag26 = true;
int num372 = Main.rand.Next(8, 20);
int num373 = Main.rand.Next(8, 20);
num372 = num371 - num372;
num373 += num371;
for (int num374 = num372; num374 <= num373; num374++)
{
if (Main.tile[num369, num374].halfBrick())
{
flag26 = false;
}
}
if ((Main.tile[num369, num371].type == 75 || Main.tile[num369, num371].type == 76) && WorldGen.genRand.Next(10) != 0)
{
flag26 = false;
}
if (flag26)
{
WorldGen.PoundTile(num369, num371);
}
}
}
}
for (int num375 = 20; num375 < Main.maxTilesX - 20; num375++)
{
float num376 = (float)num375 / (float)Main.maxTilesX;
Main.statusText = string.Concat(new object[]
{
Lang.gen[69],
" ",
(int)(num376 * 50f + 51f),
"%"
});
for (int num377 = 20; num377 < Main.maxTilesY - 20; num377++)
{
if (Main.tile[num375, num377].type != 48 && Main.tile[num375, num377].type != 232 && WorldGen.SolidTile(num375, num377) && WorldGen.SolidTile(num375, num377 + 1))
{
if (!WorldGen.SolidTile(num375 + 1, num377) && Main.tile[num375 - 1, num377].halfBrick() && Main.tile[num375 - 2, num377].liquid > 0)
{
WorldGen.PoundTile(num375, num377);
}
if (!WorldGen.SolidTile(num375 - 1, num377) && Main.tile[num375 + 1, num377].halfBrick() && Main.tile[num375 + 2, num377].liquid > 0)
{
WorldGen.PoundTile(num375, num377);
}
}
}
}
for (int num378 = 10; num378 < Main.maxTilesX - 10; num378++)
{
for (int num379 = (int)Main.worldSurface; num379 < Main.maxTilesY - 100; num379++)
{
if (Main.tile[num378, num379].liquid > 0 && !Main.tile[num378, num379].lava())
{
WorldGen.MakeWateryIceThing(num378, num379);
}
}
}
Main.tileSolid[226] = false;
Main.tileSolid[162] = false;
float num380 = (float)(Main.maxTilesX / 4200);
for (int num381 = 0; num381 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 2E-05); num381++)
{
float num382 = (float)((double)num381 / ((double)(Main.maxTilesX * Main.maxTilesY) * 2E-05));
Main.statusText = string.Concat(new object[]
{
Lang.gen[28],
" ",
(int)(num382 * 100f + 1f),
"%"
});
bool flag27 = false;
int num383 = 0;
while (!flag27)
{
if (WorldGen.AddLifeCrystal(WorldGen.genRand.Next(1, Main.maxTilesX), WorldGen.genRand.Next((int)(num6 + 20.0), Main.maxTilesY - 300)))
{
flag27 = true;
}
else
{
num383++;
if (num383 >= 10000)
{
flag27 = true;
}
}
}
}
Main.tileSolid[225] = false;
int num384 = 0;
int num385 = 0;
while ((float)num385 < 82f * num380)
{
if (num384 > 41)
{
num384 = 0;
}
float num386 = (float)num385 / (200f * num380);
Main.statusText = string.Concat(new object[]
{
Lang.gen[29],
" ",
(int)(num386 * 100f + 1f),
"%"
});
bool flag28 = false;
int num387 = 0;
while (!flag28)
{
int num388 = WorldGen.genRand.Next(20, Main.maxTilesX - 20);
int num389 = WorldGen.genRand.Next((int)(num6 + 20.0), Main.maxTilesY - 300);
while (!Main.tile[num388, num389].active())
{
num389++;
}
num389--;
WorldGen.PlaceTile(num388, num389, 105, true, true, -1, num384);
if (Main.tile[num388, num389].active() && Main.tile[num388, num389].type == 105)
{
flag28 = true;
num384++;
}
else
{
num387++;
if (num387 >= 10000)
{
flag28 = true;
}
}
}
num385++;
}
for (int num390 = 0; num390 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 1.6E-05); num390++)
{
float num391 = (float)((double)num390 / ((double)(Main.maxTilesX * Main.maxTilesY) * 1.6E-05));
Main.statusText = string.Concat(new object[]
{
Lang.gen[30],
" ",
(int)(num391 * 100f + 1f),
"%"
});
bool flag29 = false;
int num392 = 0;
while (!flag29)
{
int num393 = WorldGen.genRand.Next(20, Main.maxTilesX - 20);
int num394 = WorldGen.genRand.Next((int)(num6 + 20.0), Main.maxTilesY - 230);
if ((float)num390 <= 3f * num380)
{
num394 = WorldGen.genRand.Next(Main.maxTilesY - 200, Main.maxTilesY - 50);
}
int num395 = 0;
while (Main.wallDungeon[(int)Main.tile[num393, num394].wall])
{
num395++;
num393 = WorldGen.genRand.Next(1, Main.maxTilesX);
num394 = WorldGen.genRand.Next((int)(num6 + 20.0), Main.maxTilesY - 230);
if (num395 < 1000 && (float)num390 <= 3f * num380)
{
num394 = WorldGen.genRand.Next(Main.maxTilesY - 200, Main.maxTilesY - 50);
}
}
if (WorldGen.AddBuriedChest(num393, num394, 0, false, -1))
{
flag29 = true;
if (WorldGen.genRand.Next(2) == 0)
{
int num396 = num394;
while (Main.tile[num393, num396].type != 21 && num396 < Main.maxTilesY - 300)
{
num396++;
}
if (num394 < Main.maxTilesY - 300)
{
WorldGen.MineHouse(num393, num396);
}
}
}
num392++;
if (num392 >= 1000)
{
flag29 = true;
}
}
}
for (int num397 = 0; num397 < (int)((double)Main.maxTilesX * 0.005); num397++)
{
float num398 = (float)((double)num397 / ((double)Main.maxTilesX * 0.005));
Main.statusText = string.Concat(new object[]
{
Lang.gen[31],
" ",
(int)(num398 * 100f + 1f),
"%"
});
bool flag30 = false;
int num399 = 0;
while (!flag30)
{
int num400 = WorldGen.genRand.Next(300, Main.maxTilesX - 300);
int num401 = WorldGen.genRand.Next((int)WorldGen.worldSurfaceLow, (int)Main.worldSurface);
bool flag31 = false;
if (Main.tile[num400, num401].wall == 2 && !Main.tile[num400, num401].active())
{
flag31 = true;
}
if (flag31 && WorldGen.AddBuriedChest(num400, num401, 0, true, -1))
{
flag30 = true;
}
else
{
num399++;
if (num399 >= 2000)
{
flag30 = true;
}
}
}
}
int num402 = 0;
for (int num403 = 0; num403 < WorldGen.numJChests; num403++)
{
float num404 = (float)(num403 / WorldGen.numJChests);
Main.statusText = string.Concat(new object[]
{
Lang.gen[32],
" ",
(int)(num404 * 100f + 1f),
"%"
});
num402++;
int contain = 211;
if (num402 == 1)
{
contain = 211;
}
else
{
if (num402 == 2)
{
contain = 212;
}
else
{
if (num402 == 3)
{
contain = 213;
}
else
{
if (num402 == 4)
{
contain = 964;
}
}
}
}
if (Main.rand.Next(50) == 0)
{
contain = 753;
}
if (num402 > 4)
{
num402 = 0;
}
if (!WorldGen.AddBuriedChest(WorldGen.JChestX[num403] + WorldGen.genRand.Next(2), WorldGen.JChestY[num403], contain, false, 10))
{
for (int num405 = WorldGen.JChestX[num403]; num405 <= WorldGen.JChestX[num403] + 1; num405++)
{
for (int num406 = WorldGen.JChestY[num403]; num406 <= WorldGen.JChestY[num403] + 1; num406++)
{
WorldGen.KillTile(num405, num406, false, false, false);
}
}
for (int num407 = WorldGen.JChestX[num403]; num407 <= WorldGen.JChestX[num403] + 1; num407++)
{
for (int num408 = WorldGen.JChestY[num403]; num408 <= WorldGen.JChestY[num403] + 3; num408++)
{
if (num408 < Main.maxTilesY)
{
Main.tile[num407, num408].slope(0);
Main.tile[num407, num408].halfBrick(false);
}
}
}
WorldGen.AddBuriedChest(WorldGen.JChestX[num403], WorldGen.JChestY[num403], contain, false, 10);
}
}
int num409 = 0;
int num410 = 0;
while ((float)num410 < 9f * num380)
{
float num411 = (float)num410 / (9f * num380);
Main.statusText = string.Concat(new object[]
{
Lang.gen[33],
" ",
(int)(num411 * 100f + 1f),
"%"
});
num409++;
int contain2;
if (WorldGen.genRand.Next(15) == 0)
{
contain2 = 863;
}
else
{
if (num409 == 1)
{
contain2 = 186;
}
else
{
if (num409 == 2)
{
contain2 = 277;
}
else
{
if (num409 == 3)
{
contain2 = 859;
}
else
{
contain2 = 187;
num409 = 0;
}
}
}
}
bool flag32 = false;
while (!flag32)
{
int num412 = WorldGen.genRand.Next(1, Main.maxTilesX);
int num413 = WorldGen.genRand.Next(1, Main.maxTilesY - 200);
while (Main.tile[num412, num413].liquid < 200 || Main.tile[num412, num413].lava())
{
num412 = WorldGen.genRand.Next(1, Main.maxTilesX);
num413 = WorldGen.genRand.Next(1, Main.maxTilesY - 200);
}
flag32 = WorldGen.AddBuriedChest(num412, num413, contain2, false, 17);
}
flag32 = false;
while (!flag32)
{
int num414 = WorldGen.genRand.Next(1, Main.maxTilesX);
int num415 = WorldGen.genRand.Next((int)Main.worldSurface, Main.maxTilesY - 200);
while (Main.tile[num414, num415].liquid < 200 || Main.tile[num414, num415].lava())
{
num414 = WorldGen.genRand.Next(1, Main.maxTilesX);
num415 = WorldGen.genRand.Next(1, Main.maxTilesY - 200);
}
flag32 = WorldGen.AddBuriedChest(num414, num415, contain2, false, 17);
}
num410++;
}
WorldGen.maxTileCount = 3500;
for (int num416 = 0; num416 < (int)((double)Main.maxTilesX * 0.005); num416++)
{
float num417 = (float)((double)num416 / ((double)Main.maxTilesX * 0.005));
Main.statusText = string.Concat(new object[]
{
Lang.gen[64],
" ",
(int)(num417 * 100f + 1f),
"%"
});
int num418 = 0;
int x2 = WorldGen.genRand.Next(200, Main.maxTilesX - 200);
int y2 = WorldGen.genRand.Next((int)(Main.worldSurface + Main.rockLayer) / 2, Main.maxTilesY - 230);
int num419 = WorldGen.countTiles(x2, y2, false, true);
while ((num419 >= 3500 || num419 < 500) && num418 < 500)
{
num418++;
x2 = WorldGen.genRand.Next(200, Main.maxTilesX - 200);
y2 = WorldGen.genRand.Next((int)Main.rockLayer + 30, Main.maxTilesY - 230);
num419 = WorldGen.countTiles(x2, y2, false, true);
}
if (num418 < 500)
{
WorldGen.spiderOut(x2, y2);
}
}
Main.tileSolid[162] = true;
WorldGen.maxTileCount = 300;
for (int num420 = 0; num420 < (int)((double)Main.maxTilesX * 0.003); num420++)
{
float num421 = (float)((double)num420 / ((double)Main.maxTilesX * 0.003));
Main.statusText = string.Concat(new object[]
{
Lang.gen[62],
" ",
(int)(num421 * 100f + 1f),
"%"
});
int num422 = 0;
int x3 = WorldGen.genRand.Next(200, Main.maxTilesX - 200);
int y3 = WorldGen.genRand.Next((int)Main.rockLayer + 30, Main.maxTilesY - 230);
int num423 = WorldGen.countTiles(x3, y3, false, false);
while ((num423 >= 300 || num423 < 50 || WorldGen.lavaCount > 0 || WorldGen.iceCount > 0 || WorldGen.rockCount == 0) && num422 < 1000)
{
num422++;
x3 = WorldGen.genRand.Next(200, Main.maxTilesX - 200);
y3 = WorldGen.genRand.Next((int)Main.rockLayer + 30, Main.maxTilesY - 230);
num423 = WorldGen.countTiles(x3, y3, false, false);
}
if (num422 < 1000)
{
WorldGen.gemCave(x3, y3);
}
}
WorldGen.randMoss();
WorldGen.maxTileCount = 2500;
for (int num424 = 0; num424 < (int)((double)Main.maxTilesX * 0.01); num424++)
{
float num425 = (float)((double)num424 / ((double)Main.maxTilesX * 0.01));
Main.statusText = string.Concat(new object[]
{
Lang.gen[61],
" ",
(int)(num425 * 100f + 1f),
"%"
});
int num426 = 0;
int x4 = WorldGen.genRand.Next(200, Main.maxTilesX - 200);
int y4 = WorldGen.genRand.Next((int)(Main.worldSurface + Main.rockLayer) / 2, WorldGen.waterLine);
int num427 = WorldGen.countTiles(x4, y4, false, false);
while ((num427 >= 2500 || num427 < 10 || WorldGen.lavaCount > 0 || WorldGen.iceCount > 0 || WorldGen.rockCount == 0) && num426 < 1000)
{
num426++;
x4 = WorldGen.genRand.Next(200, Main.maxTilesX - 200);
y4 = WorldGen.genRand.Next((int)Main.rockLayer + 30, Main.maxTilesY - 230);
num427 = WorldGen.countTiles(x4, y4, false, false);
}
if (num426 < 1000)
{
WorldGen.setMoss(x4, y4);
WorldGen.mossCave(x4, y4);
}
}
for (int num428 = 0; num428 < Main.maxTilesX; num428++)
{
int num429 = WorldGen.genRand.Next(50, Main.maxTilesX - 50);
int num430 = WorldGen.genRand.Next((int)(Main.worldSurface + Main.rockLayer) / 2, WorldGen.lavaLine);
if (Main.tile[num429, num430].type == 1)
{
WorldGen.setMoss(num429, num430);
Main.tile[num429, num430].type = WorldGen.mossTile;
}
}
int num431 = (int)((double)Main.maxTilesX * 0.05);
while (num431 > 0)
{
int num432 = WorldGen.genRand.Next(50, Main.maxTilesX - 50);
int num433 = WorldGen.genRand.Next((int)(Main.worldSurface + Main.rockLayer) / 2, WorldGen.lavaLine);
if (Main.tile[num432, num433].type == 1 && (!Main.tile[num432 - 1, num433].active() || !Main.tile[num432 + 1, num433].active() || !Main.tile[num432, num433 - 1].active() || !Main.tile[num432, num433 + 1].active()))
{
WorldGen.setMoss(num432, num433);
Main.tile[num432, num433].type = WorldGen.mossTile;
num431--;
}
}
for (int num434 = 0; num434 < Main.maxTilesX; num434++)
{
for (int num435 = 0; num435 < Main.maxTilesY; num435++)
{
if (Main.tile[num434, num435].active() && Main.tileMoss[(int)Main.tile[num434, num435].type])
{
for (int num436 = 0; num436 < 4; num436++)
{
int num437 = num434;
int num438 = num435;
if (num436 == 0)
{
num437--;
}
if (num436 == 1)
{
num437++;
}
if (num436 == 2)
{
num438--;
}
if (num436 == 3)
{
num438++;
}
try
{
WorldGen.grassSpread = 0;
WorldGen.SpreadGrass(num437, num438, 1, (int)Main.tile[num434, num435].type, true, 0);
}
catch
{
WorldGen.grassSpread = 0;
WorldGen.SpreadGrass(num437, num438, 1, (int)Main.tile[num434, num435].type, false, 0);
}
}
}
}
}
Main.tileSolid[162] = false;
Main.tileSolid[226] = true;
WorldGen.templePart2();
Main.tileSolid[232] = false;
WorldGen.maxTileCount = 1500;
for (int num439 = 0; num439 < (int)((double)Main.maxTilesX * 0.04); num439++)
{
float num440 = (float)((double)num439 / ((double)Main.maxTilesX * 0.04));
Main.statusText = string.Concat(new object[]
{
Lang.gen[63],
" ",
(int)(num440 * 66f + 1f),
"%"
});
int num441 = 0;
int x5 = WorldGen.genRand.Next(200, Main.maxTilesX - 200);
int y5 = WorldGen.genRand.Next((int)(Main.worldSurface + Main.rockLayer) / 2, Main.maxTilesY - 220);
int num442 = WorldGen.countTiles(x5, y5, false, true);
while ((num442 >= 1500 || num442 < 10) && num441 < 500)
{
num441++;
x5 = WorldGen.genRand.Next(200, Main.maxTilesX - 200);
y5 = WorldGen.genRand.Next((int)(Main.worldSurface + Main.rockLayer) / 2, Main.maxTilesY - 220);
num442 = WorldGen.countTiles(x5, y5, false, true);
}
if (num441 < 500)
{
int num443 = WorldGen.genRand.Next(2);
if (WorldGen.iceCount > 0)
{
if (num443 == 0)
{
num443 = 40;
}
else
{
if (num443 == 1)
{
num443 = 71;
}
}
}
else
{
if (WorldGen.lavaCount > 0)
{
num443 = 79;
}
else
{
if (num443 == 0)
{
num443 = 59;
}
else
{
if (num443 == 1)
{
num443 = 61;
}
}
}
}
WorldGen.wallOut(x5, y5, num443);
}
}
WorldGen.maxTileCount = 1500;
for (int num444 = 0; num444 < (int)((double)Main.maxTilesX * 0.02); num444++)
{
float num445 = (float)((double)num444 / ((double)Main.maxTilesX * 0.02));
Main.statusText = string.Concat(new object[]
{
Lang.gen[63],
" ",
(int)(num445 * 33f + 67f),
"%"
});
int num446 = 0;
int num447 = WorldGen.genRand.Next(200, Main.maxTilesX - 200);
int num448 = WorldGen.genRand.Next((int)Main.worldSurface, WorldGen.lavaLine);
int num449 = 0;
if (Main.tile[num447, num448].wall == 64)
{
num449 = WorldGen.countTiles(num447, num448, true, false);
}
while ((num449 >= 1500 || num449 < 10) && num446 < 1000)
{
num446++;
num447 = WorldGen.genRand.Next(200, Main.maxTilesX - 200);
num448 = WorldGen.genRand.Next((int)Main.worldSurface, WorldGen.lavaLine);
if (!Main.wallHouse[(int)Main.tile[num447, num448].wall])
{
if (Main.tile[num447, num448].wall == 64)
{
num449 = WorldGen.countTiles(num447, num448, true, false);
}
else
{
num449 = 0;
}
}
}
if (num446 < 1000)
{
WorldGen.numWallOut2 = 0;
WorldGen.wallOut2(num447, num448, 15);
}
}
for (int num450 = 0; num450 < Main.maxTilesX; num450++)
{
for (int num451 = (int)Main.worldSurface - 1; num451 < Main.maxTilesY - 350; num451++)
{
if (WorldGen.genRand.Next(10) == 0)
{
WorldGen.GrowUndergroundTree(num450, num451);
}
}
}
for (int num452 = 0; num452 < WorldGen.numIslandHouses; num452++)
{
WorldGen.IslandHouse(WorldGen.fihX[num452], WorldGen.fihY[num452]);
}
for (int num453 = 0; num453 < (int)((double)Main.maxTilesX * 0.05); num453++)
{
float num454 = (float)((double)num453 / ((double)Main.maxTilesX * 0.05));
Main.statusText = string.Concat(new object[]
{
Lang.gen[34],
" ",
(int)(num454 * 100f + 1f),
"%"
});
for (int num455 = 0; num455 < 1000; num455++)
{
int num456 = Main.rand.Next(200, Main.maxTilesX - 200);
int num457 = Main.rand.Next((int)Main.worldSurface, Main.maxTilesY - 300);
if (Main.tile[num456, num457].wall == 0 && WorldGen.placeTrap(num456, num457, -1))
{
break;
}
}
}
for (int num458 = 0; num458 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.0008); num458++)
{
float num459 = (float)((double)num458 / ((double)(Main.maxTilesX * Main.maxTilesY) * 0.0008));
Main.statusText = string.Concat(new object[]
{
Lang.gen[35],
" ",
(int)(num459 * 100f + 1f),
"%"
});
bool flag33 = false;
int num460 = 0;
while (!flag33)
{
int num461 = WorldGen.genRand.Next((int)num6, Main.maxTilesY - 10);
if ((double)num459 > 0.93)
{
num461 = Main.maxTilesY - 150;
}
else
{
if ((double)num459 > 0.75)
{
num461 = (int)WorldGen.worldSurfaceLow;
}
}
int num462 = WorldGen.genRand.Next(1, Main.maxTilesX);
bool flag34 = false;
for (int num463 = num461; num463 < Main.maxTilesY; num463++)
{
if (!flag34)
{
if (Main.tile[num462, num463].active() && Main.tileSolid[(int)Main.tile[num462, num463].type] && !Main.tile[num462, num463 - 1].lava())
{
flag34 = true;
}
}
else
{
int style2 = WorldGen.genRand.Next(0, 4);
int num464 = 0;
if (num463 < Main.maxTilesY - 5)
{
num464 = (int)Main.tile[num462, num463 + 1].type;
}
if (num464 == 147 || num464 == 161 || num464 == 162)
{
style2 = WorldGen.genRand.Next(4, 7);
}
if (num464 == 60)
{
style2 = WorldGen.genRand.Next(7, 10);
}
if (Main.wallDungeon[(int)Main.tile[num462, num463].wall])
{
style2 = WorldGen.genRand.Next(10, 13);
}
if (num464 == 41 || num464 == 43 || num464 == 44)
{
style2 = WorldGen.genRand.Next(10, 13);
}
if (num464 == 22 || num464 == 23 || num464 == 25)
{
style2 = WorldGen.genRand.Next(16, 19);
}
if (num464 == 199 || num464 == 203 || num464 == 204 || num464 == 200)
{
style2 = WorldGen.genRand.Next(22, 25);
}
if (num464 == 226)
{
style2 = WorldGen.genRand.Next(28, 31);
}
if (num463 > Main.maxTilesY - 200)
{
style2 = WorldGen.genRand.Next(13, 16);
}
if (WorldGen.PlacePot(num462, num463, 28, style2))
{
flag33 = true;
break;
}
num460++;
if (num460 >= 10000)
{
flag33 = true;
break;
}
}
}
}
}
for (int num465 = 0; num465 < Main.maxTilesX / 200; num465++)
{
float num466 = (float)(num465 / (Main.maxTilesX / 200));
Main.statusText = string.Concat(new object[]
{
Lang.gen[36],
" ",
(int)(num466 * 100f + 1f),
"%"
});
bool flag35 = false;
int num467 = 0;
while (!flag35)
{
int num468 = WorldGen.genRand.Next(1, Main.maxTilesX);
int num469 = WorldGen.genRand.Next(Main.maxTilesY - 250, Main.maxTilesY - 5);
try
{
if (Main.tile[num468, num469].wall != 13)
{
if (Main.tile[num468, num469].wall != 14)
{
continue;
}
}
while (!Main.tile[num468, num469].active())
{
num469++;
}
num469--;
WorldGen.PlaceTile(num468, num469, 77, false, false, -1, 0);
if (Main.tile[num468, num469].type == 77)
{
flag35 = true;
}
else
{
num467++;
if (num467 >= 10000)
{
flag35 = true;
}
}
}
catch
{
}
}
}
Main.statusText = Lang.gen[37];
for (int num470 = 0; num470 < Main.maxTilesX; num470++)
{
num49 = num470;
bool flag36 = true;
int num471 = 0;
while ((double)num471 < Main.worldSurface - 1.0)
{
if (Main.tile[num49, num471].active())
{
if (flag36 && Main.tile[num49, num471].type == 0)
{
try
{
WorldGen.grassSpread = 0;
WorldGen.SpreadGrass(num49, num471, 0, 2, true, 0);
}
catch
{
WorldGen.grassSpread = 0;
WorldGen.SpreadGrass(num49, num471, 0, 2, false, 0);
}
}
if ((double)num471 > num6)
{
break;
}
flag36 = false;
}
else
{
if (Main.tile[num49, num471].wall == 0)
{
flag36 = true;
}
}
num471++;
}
}
Main.tileSolid[190] = false;
Main.tileSolid[196] = false;
Main.tileSolid[189] = false;
Main.tileSolid[202] = false;
int num472 = 0;
while ((double)num472 < (double)Main.maxTilesX * 0.06)
{
bool flag37 = false;
while (!flag37)
{
int num473 = WorldGen.genRand.Next(25, Main.maxTilesX - 25);
int num474 = WorldGen.genRand.Next((int)Main.worldSurface, Main.maxTilesY - 300);
if (!Main.tile[num473, num474].active())
{
int num475 = 186;
while (!Main.tile[num473, num474 + 1].active() && num474 < Main.maxTilesY - 5)
{
num474++;
}
int num476 = WorldGen.genRand.Next(22);
if (num476 >= 16 && num476 <= 22)
{
num476 = WorldGen.genRand.Next(22);
}
if ((Main.tile[num473, num474 + 1].type == 0 || Main.tile[num473, num474 + 1].type == 1 || Main.tileMoss[(int)Main.tile[num473, num474 + 1].type]) && WorldGen.genRand.Next(5) == 0)
{
num476 = WorldGen.genRand.Next(23, 29);
num475 = 187;
}
if (num474 > Main.maxTilesY - 300 || Main.wallDungeon[(int)Main.tile[num473, num474].wall] || Main.tile[num473, num474 + 1].type == 30 || Main.tile[num473, num474 + 1].type == 19 || Main.tile[num473, num474 + 1].type == 25 || Main.tile[num473, num474 + 1].type == 203)
{
num476 = WorldGen.genRand.Next(7);
num475 = 186;
}
if (Main.tile[num473, num474 + 1].type == 147 || Main.tile[num473, num474 + 1].type == 161 || Main.tile[num473, num474 + 1].type == 162)
{
num476 = WorldGen.genRand.Next(26, 32);
num475 = 186;
}
if (Main.tile[num473, num474 + 1].type == 60)
{
num475 = 187;
num476 = WorldGen.genRand.Next(6);
}
if ((Main.tile[num473, num474 + 1].type == 57 || Main.tile[num473, num474 + 1].type == 58) && WorldGen.genRand.Next(3) < 2)
{
num475 = 187;
num476 = WorldGen.genRand.Next(6, 9);
}
if (Main.tile[num473, num474 + 1].type == 226)
{
num475 = 187;
num476 = WorldGen.genRand.Next(18, 23);
}
if (Main.tile[num473, num474 + 1].type == 70)
{
num476 = WorldGen.genRand.Next(32, 35);
num475 = 186;
}
if (num475 == 186 && num476 >= 7 && num476 <= 15 && WorldGen.genRand.Next(100) == 0)
{
num475 = 187;
num476 = 17;
}
if (Main.wallDungeon[(int)Main.tile[num473, num474].wall] && WorldGen.genRand.Next(3) != 0)
{
flag37 = true;
}
else
{
WorldGen.PlaceTile(num473, num474, num475, true, false, -1, num476);
if (Main.tile[num473, num474].type == 186 || Main.tile[num473, num474].type == 187)
{
flag37 = true;
}
if (flag37 && num475 == 186 && num476 <= 7)
{
int num477 = WorldGen.genRand.Next(1, 5);
for (int num478 = 0; num478 < num477; num478++)
{
int num479 = num473 + WorldGen.genRand.Next(-10, 11);
int num480 = num474 - WorldGen.genRand.Next(5);
if (!Main.tile[num479, num480].active())
{
while (!Main.tile[num479, num480 + 1].active() && num480 < Main.maxTilesY - 5)
{
num480++;
}
int x6 = WorldGen.genRand.Next(12, 36);
WorldGen.PlaceSmallPile(num479, num480, x6, 0, 185);
}
}
}
}
}
}
num472++;
}
int num481 = 0;
while ((double)num481 < (double)Main.maxTilesX * 0.01)
{
bool flag38 = false;
while (!flag38)
{
int num482 = WorldGen.genRand.Next(25, Main.maxTilesX - 25);
int num483 = WorldGen.genRand.Next(Main.maxTilesY - 300, Main.maxTilesY - 10);
if (!Main.tile[num482, num483].active())
{
int num484 = 186;
while (!Main.tile[num482, num483 + 1].active() && num483 < Main.maxTilesY - 5)
{
num483++;
}
int num485 = WorldGen.genRand.Next(22);
if (num485 >= 16 && num485 <= 22)
{
num485 = WorldGen.genRand.Next(22);
}
if (num483 > Main.maxTilesY - 300 || Main.wallDungeon[(int)Main.tile[num482, num483].wall] || Main.tile[num482, num483 + 1].type == 30 || Main.tile[num482, num483 + 1].type == 19)
{
num485 = WorldGen.genRand.Next(7);
}
if ((Main.tile[num482, num483 + 1].type == 57 || Main.tile[num482, num483 + 1].type == 58) && WorldGen.genRand.Next(3) < 2)
{
num484 = 187;
num485 = WorldGen.genRand.Next(6, 9);
}
if (Main.tile[num482, num483 + 1].type == 147 || Main.tile[num482, num483 + 1].type == 161 || Main.tile[num482, num483 + 1].type == 162)
{
num485 = WorldGen.genRand.Next(26, 32);
}
WorldGen.PlaceTile(num482, num483, num484, true, false, -1, num485);
if (Main.tile[num482, num483].type == 186 || Main.tile[num482, num483].type == 187)
{
flag38 = true;
}
if (flag38 && num484 == 186 && num485 <= 7)
{
int num486 = WorldGen.genRand.Next(1, 5);
for (int num487 = 0; num487 < num486; num487++)
{
int num488 = num482 + WorldGen.genRand.Next(-10, 11);
int num489 = num483 - WorldGen.genRand.Next(5);
if (!Main.tile[num488, num489].active())
{
while (!Main.tile[num488, num489 + 1].active() && num489 < Main.maxTilesY - 5)
{
num489++;
}
int x7 = WorldGen.genRand.Next(12, 36);
WorldGen.PlaceSmallPile(num488, num489, x7, 0, 185);
}
}
}
}
}
num481++;
}
int num490 = 0;
while ((double)num490 < (double)Main.maxTilesX * 0.003)
{
bool flag39 = false;
while (!flag39)
{
int num491 = 186;
int num492 = WorldGen.genRand.Next(25, Main.maxTilesX - 25);
int num493 = WorldGen.genRand.Next(10, (int)Main.worldSurface);
if (!Main.tile[num492, num493].active())
{
while (!Main.tile[num492, num493 + 1].active() && num493 < Main.maxTilesY - 5)
{
num493++;
}
int num494 = WorldGen.genRand.Next(7, 13);
if (num493 > Main.maxTilesY - 300 || Main.wallDungeon[(int)Main.tile[num492, num493].wall] || Main.tile[num492, num493 + 1].type == 30 || Main.tile[num492, num493 + 1].type == 19 || Main.tile[num492, num493 + 1].type == 53 || Main.tile[num492, num493 + 1].type == 25 || Main.tile[num492, num493 + 1].type == 203)
{
num494 = -1;
}
if (Main.tile[num492, num493 + 1].type == 147 || Main.tile[num492, num493 + 1].type == 161 || Main.tile[num492, num493 + 1].type == 162)
{
num494 = WorldGen.genRand.Next(26, 32);
}
if (Main.tile[num492, num493 + 1].type == 2 || Main.tile[num492 - 1, num493 + 1].type == 2 || Main.tile[num492 + 1, num493 + 1].type == 2)
{
num491 = 187;
num494 = WorldGen.genRand.Next(14, 17);
}
if (Main.tile[num492, num493 + 1].type == 151)
{
num491 = 186;
num494 = WorldGen.genRand.Next(7);
}
if (num494 >= 0)
{
WorldGen.PlaceTile(num492, num493, num491, true, false, -1, num494);
}
if ((int)Main.tile[num492, num493].type == num491)
{
flag39 = true;
}
}
}
num490++;
}
int num495 = 0;
while ((double)num495 < (double)Main.maxTilesX * 0.0035)
{
bool flag40 = false;
while (!flag40)
{
int num496 = WorldGen.genRand.Next(25, Main.maxTilesX - 25);
int num497 = WorldGen.genRand.Next(10, (int)Main.worldSurface);
if (!Main.tile[num496, num497].active() && Main.tile[num496, num497].wall > 0)
{
int num498 = 186;
while (!Main.tile[num496, num497 + 1].active() && num497 < Main.maxTilesY - 5)
{
num497++;
}
int num499 = WorldGen.genRand.Next(7, 13);
if (num497 > Main.maxTilesY - 300 || Main.wallDungeon[(int)Main.tile[num496, num497].wall] || Main.tile[num496, num497 + 1].type == 30 || Main.tile[num496, num497 + 1].type == 19)
{
num499 = -1;
}
if (Main.tile[num496, num497 + 1].type == 25)
{
num499 = WorldGen.genRand.Next(7);
}
if (Main.tile[num496, num497 + 1].type == 147 || Main.tile[num496, num497 + 1].type == 161 || Main.tile[num496, num497 + 1].type == 162)
{
num499 = WorldGen.genRand.Next(26, 32);
}
if (Main.tile[num496, num497 + 1].type == 2 || Main.tile[num496 - 1, num497 + 1].type == 2 || Main.tile[num496 + 1, num497 + 1].type == 2)
{
num498 = 187;
num499 = WorldGen.genRand.Next(14, 17);
}
if (Main.tile[num496, num497 + 1].type == 151)
{
num498 = 186;
num499 = WorldGen.genRand.Next(7);
}
if (num499 >= 0)
{
WorldGen.PlaceTile(num496, num497, num498, true, false, -1, num499);
}
if ((int)Main.tile[num496, num497].type == num498)
{
flag40 = true;
}
if (flag40 && num499 <= 7)
{
int num500 = WorldGen.genRand.Next(1, 5);
for (int num501 = 0; num501 < num500; num501++)
{
int num502 = num496 + WorldGen.genRand.Next(-10, 11);
int num503 = num497 - WorldGen.genRand.Next(5);
if (!Main.tile[num502, num503].active())
{
while (!Main.tile[num502, num503 + 1].active() && num503 < Main.maxTilesY - 5)
{
num503++;
}
int x8 = WorldGen.genRand.Next(12, 36);
WorldGen.PlaceSmallPile(num502, num503, x8, 0, 185);
}
}
}
}
}
num495++;
}
int num504 = 0;
while ((double)num504 < (double)Main.maxTilesX * 0.6)
{
bool flag41 = false;
while (!flag41)
{
int num505 = WorldGen.genRand.Next(25, Main.maxTilesX - 25);
int num506 = WorldGen.genRand.Next((int)Main.worldSurface, Main.maxTilesY - 20);
if (Main.tile[num505, num506].wall == 87 && WorldGen.genRand.Next(2) == 0)
{
num505 = WorldGen.genRand.Next(25, Main.maxTilesX - 25);
num506 = WorldGen.genRand.Next((int)Main.worldSurface, Main.maxTilesY - 20);
}
if (!Main.tile[num505, num506].active())
{
while (!Main.tile[num505, num506 + 1].active() && num506 < Main.maxTilesY - 5)
{
num506++;
}
int num507 = WorldGen.genRand.Next(2);
int num508 = WorldGen.genRand.Next(36);
if (num508 >= 28 && num508 <= 35)
{
num508 = WorldGen.genRand.Next(36);
}
if (num507 == 1)
{
num508 = WorldGen.genRand.Next(25);
if (num508 >= 16 && num508 <= 24)
{
num508 = WorldGen.genRand.Next(25);
}
}
if (num506 > Main.maxTilesY - 300)
{
if (num507 == 0)
{
num508 = WorldGen.genRand.Next(12, 28);
}
if (num507 == 1)
{
num508 = WorldGen.genRand.Next(6, 16);
}
}
if (Main.wallDungeon[(int)Main.tile[num505, num506].wall] || Main.tile[num505, num506 + 1].type == 30 || Main.tile[num505, num506 + 1].type == 19 || Main.tile[num505, num506 + 1].type == 25 || Main.tile[num505, num506 + 1].type == 203 || Main.tile[num505, num506].wall == 87)
{
if (num507 == 0 && num508 < 12)
{
num508 += 12;
}
if (num507 == 1 && num508 < 6)
{
num508 += 6;
}
if (num507 == 1 && num508 >= 17)
{
num508 -= 10;
}
}
if (Main.tile[num505, num506 + 1].type == 147 || Main.tile[num505, num506 + 1].type == 161 || Main.tile[num505, num506 + 1].type == 162)
{
if (num507 == 0 && num508 < 12)
{
num508 += 36;
}
if (num507 == 1 && num508 >= 20)
{
num508 += 6;
}
if (num507 == 1 && num508 < 6)
{
num508 += 25;
}
}
if (Main.tile[num505, num506 + 1].type == 151)
{
if (num507 == 0)
{
num508 = WorldGen.genRand.Next(12, 28);
}
if (num507 == 1)
{
num508 = WorldGen.genRand.Next(12, 19);
}
}
flag41 = ((Main.wallDungeon[(int)Main.tile[num505, num506].wall] && WorldGen.genRand.Next(3) != 0) || WorldGen.PlaceSmallPile(num505, num506, num508, num507, 185));
if (flag41 && num507 == 1 && num508 >= 6 && num508 <= 15)
{
int num509 = WorldGen.genRand.Next(1, 5);
for (int num510 = 0; num510 < num509; num510++)
{
int num511 = num505 + WorldGen.genRand.Next(-10, 11);
int num512 = num506 - WorldGen.genRand.Next(5);
if (!Main.tile[num511, num512].active())
{
while (!Main.tile[num511, num512 + 1].active() && num512 < Main.maxTilesY - 5)
{
num512++;
}
int x9 = WorldGen.genRand.Next(12, 36);
WorldGen.PlaceSmallPile(num511, num512, x9, 0, 185);
}
}
}
}
}
num504++;
}
int num513 = 0;
while ((float)num513 < (float)Main.maxTilesX * 0.02f)
{
bool flag42 = false;
while (!flag42)
{
int num514 = WorldGen.genRand.Next(25, Main.maxTilesX - 25);
int num515 = WorldGen.genRand.Next(15, (int)Main.worldSurface);
if (!Main.tile[num514, num515].active())
{
while (!Main.tile[num514, num515 + 1].active() && num515 < Main.maxTilesY - 5)
{
num515++;
}
int num516 = WorldGen.genRand.Next(2);
int num517 = WorldGen.genRand.Next(11);
if (num516 == 1)
{
num517 = WorldGen.genRand.Next(5);
}
if (Main.tile[num514, num515 + 1].type == 147 || Main.tile[num514, num515 + 1].type == 161 || Main.tile[num514, num515 + 1].type == 162)
{
if (num516 == 0 && num517 < 12)
{
num517 += 36;
}
if (num516 == 1 && num517 >= 20)
{
num517 += 6;
}
if (num516 == 1 && num517 < 6)
{
num517 += 25;
}
}
if (Main.tile[num514, num515 + 1].type == 2 && num516 == 1)
{
num517 = WorldGen.genRand.Next(38, 41);
}
if (Main.tile[num514, num515 + 1].type == 151)
{
if (num516 == 0)
{
num517 = WorldGen.genRand.Next(12, 28);
}
if (num516 == 1)
{
num517 = WorldGen.genRand.Next(12, 19);
}
}
if (!Main.wallDungeon[(int)Main.tile[num514, num515].wall] && Main.tile[num514, num515 + 1].type != 30 && Main.tile[num514, num515 + 1].type != 19 && Main.tile[num514, num515 + 1].type != 41 && Main.tile[num514, num515 + 1].type != 43 && Main.tile[num514, num515 + 1].type != 44 && Main.tile[num514, num515 + 1].type != 45 && Main.tile[num514, num515 + 1].type != 46 && Main.tile[num514, num515 + 1].type != 47 && Main.tile[num514, num515 + 1].type != 175 && Main.tile[num514, num515 + 1].type != 176 && Main.tile[num514, num515 + 1].type != 177 && Main.tile[num514, num515 + 1].type != 53 && Main.tile[num514, num515 + 1].type != 25 && Main.tile[num514, num515 + 1].type != 203)
{
flag42 = WorldGen.PlaceSmallPile(num514, num515, num517, num516, 185);
}
}
}
num513++;
}
int num518 = 0;
while ((float)num518 < (float)Main.maxTilesX * 0.15f)
{
bool flag43 = false;
while (!flag43)
{
int num519 = WorldGen.genRand.Next(25, Main.maxTilesX - 25);
int num520 = WorldGen.genRand.Next(15, (int)Main.worldSurface);
if (!Main.tile[num519, num520].active())
{
if (Main.tile[num519, num520].wall != 2)
{
if (Main.tile[num519, num520].wall != 40)
{
continue;
}
}
while (!Main.tile[num519, num520 + 1].active() && num520 < Main.maxTilesY - 5)
{
num520++;
}
int num521 = WorldGen.genRand.Next(2);
int num522 = WorldGen.genRand.Next(11);
if (num521 == 1)
{
num522 = WorldGen.genRand.Next(5);
}
if (Main.tile[num519, num520 + 1].type == 147 || Main.tile[num519, num520 + 1].type == 161 || Main.tile[num519, num520 + 1].type == 162)
{
if (num521 == 0 && num522 < 12)
{
num522 += 36;
}
if (num521 == 1 && num522 >= 20)
{
num522 += 6;
}
if (num521 == 1 && num522 < 6)
{
num522 += 25;
}
}
if (Main.tile[num519, num520 + 1].type == 2 && num521 == 1)
{
num522 = WorldGen.genRand.Next(38, 41);
}
if (Main.tile[num519, num520 + 1].type == 151)
{
if (num521 == 0)
{
num522 = WorldGen.genRand.Next(12, 28);
}
if (num521 == 1)
{
num522 = WorldGen.genRand.Next(12, 19);
}
}
if (!Main.wallDungeon[(int)Main.tile[num519, num520].wall] && Main.tile[num519, num520 + 1].type != 30 && Main.tile[num519, num520 + 1].type != 19 && Main.tile[num519, num520 + 1].type != 41 && Main.tile[num519, num520 + 1].type != 43 && Main.tile[num519, num520 + 1].type != 44 && Main.tile[num519, num520 + 1].type != 45 && Main.tile[num519, num520 + 1].type != 46 && Main.tile[num519, num520 + 1].type != 47 && Main.tile[num519, num520 + 1].type != 175 && Main.tile[num519, num520 + 1].type != 176 && Main.tile[num519, num520 + 1].type != 177 && Main.tile[num519, num520 + 1].type != 25 && Main.tile[num519, num520 + 1].type != 203)
{
flag43 = WorldGen.PlaceSmallPile(num519, num520, num522, num521, 185);
}
}
}
num518++;
}
Main.tileSolid[190] = true;
Main.tileSolid[192] = true;
Main.tileSolid[196] = true;
Main.tileSolid[189] = true;
Main.tileSolid[202] = true;
Main.tileSolid[225] = true;
Main.statusText = Lang.gen[38];
for (int num523 = 5; num523 < Main.maxTilesX - 5; num523++)
{
if (WorldGen.genRand.Next(8) == 0)
{
int num524 = 0;
while ((double)num524 < Main.worldSurface - 1.0)
{
if (Main.tile[num523, num524].active() && Main.tile[num523, num524].type == 53 && !Main.tile[num523, num524 - 1].active() && Main.tile[num523, num524 - 1].wall == 0)
{
if (num523 < 250 || num523 > Main.maxTilesX - 250)
{
if (Main.tile[num523, num524 - 2].liquid == 255 && Main.tile[num523, num524 - 3].liquid == 255 && Main.tile[num523, num524 - 4].liquid == 255)
{
WorldGen.PlaceTile(num523, num524 - 1, 81, true, false, -1, 0);
}
}
else
{
if (num523 > 400 && num523 < Main.maxTilesX - 400)
{
WorldGen.PlantCactus(num523, num524);
}
}
}
num524++;
}
}
}
int num525 = 5;
bool flag44 = true;
while (flag44)
{
int num526 = Main.maxTilesX / 2 + WorldGen.genRand.Next(-num525, num525 + 1);
for (int num527 = 0; num527 < Main.maxTilesY; num527++)
{
if (Main.tile[num526, num527].active())
{
Main.spawnTileX = num526;
Main.spawnTileY = num527;
break;
}
}
flag44 = false;
num525++;
if ((double)Main.spawnTileY > Main.worldSurface)
{
flag44 = true;
}
if (Main.tile[Main.spawnTileX, Main.spawnTileY - 1].liquid > 0)
{
flag44 = true;
}
}
int num528 = 10;
while ((double)Main.spawnTileY > Main.worldSurface)
{
int num529 = WorldGen.genRand.Next(Main.maxTilesX / 2 - num528, Main.maxTilesX / 2 + num528);
for (int num530 = 0; num530 < Main.maxTilesY; num530++)
{
if (Main.tile[num529, num530].active())
{
Main.spawnTileX = num529;
Main.spawnTileY = num530;
break;
}
}
num528++;
}
WorldGen.maxTileCount = 3500;
for (int num531 = 50; num531 < Main.maxTilesX - 50; num531++)
{
int num532 = 0;
while ((double)num532 < Main.worldSurface - 10.0)
{
if (WorldGen.genRand.Next(4) == 0)
{
bool flag45 = false;
int num533 = -1;
int num534 = -1;
if (Main.tile[num531, num532].active() && Main.tile[num531, num532].type == 2 && (Main.tile[num531, num532].wall == 2 || Main.tile[num531, num532].wall == 63))
{
for (int num535 = num531 - 1; num535 <= num531 + 1; num535++)
{
for (int num536 = num532 - 1; num536 <= num532 + 1; num536++)
{
if (Main.tile[num535, num536].wall == 0 && !WorldGen.SolidTile(num535, num536))
{
flag45 = true;
}
}
}
if (flag45)
{
for (int num537 = num531 - 1; num537 <= num531 + 1; num537++)
{
for (int num538 = num532 - 1; num538 <= num532 + 1; num538++)
{
if ((Main.tile[num537, num538].wall == 2 || Main.tile[num537, num538].wall == 15) && !WorldGen.SolidTile(num537, num538))
{
num533 = num537;
num534 = num538;
}
}
}
}
}
if (flag45 && num533 > -1 && num534 > -1)
{
WorldGen.countDirtTiles(num533, num534);
if (WorldGen.numTileCount < 3500)
{
try
{
WorldGen.numWallOut2 = 0;
WorldGen.wallOut2(num533, num534, 63);
}
catch
{
}
}
}
}
num532++;
}
}
for (int num539 = 5; num539 < Main.maxTilesX - 5; num539++)
{
int num540 = 10;
while ((double)num540 < Main.worldSurface - 1.0)
{
if (Main.tile[num539, num540].wall == 63 && WorldGen.genRand.Next(10) == 0)
{
Main.tile[num539, num540].wall = 65;
}
if (Main.tile[num539, num540].active() && Main.tile[num539, num540].type == 0)
{
bool flag46 = false;
for (int num541 = num539 - 1; num541 <= num539 + 1; num541++)
{
for (int num542 = num540 - 1; num542 <= num540 + 1; num542++)
{
if (Main.tile[num539, num540].wall == 63 || Main.tile[num539, num540].wall == 65)
{
flag46 = true;
break;
}
}
}
if (flag46)
{
WorldGen.SpreadGrass(num539, num540, 0, 2, true, 0);
}
}
num540++;
}
}
int num543 = NPC.NewNPC(Main.spawnTileX * 16, Main.spawnTileY * 16, 22, 0);
Main.npc[num543].homeTileX = Main.spawnTileX;
Main.npc[num543].homeTileY = Main.spawnTileY;
Main.npc[num543].direction = 1;
Main.npc[num543].homeless = true;
Main.statusText = Lang.gen[39];
int num544 = 0;
while ((double)num544 < (double)Main.maxTilesX * 0.002)
{
int arg_E465_0 = Main.maxTilesX / 2;
int num545 = WorldGen.genRand.Next(Main.maxTilesX);
int num546 = num545 - WorldGen.genRand.Next(10) - 7;
int num547 = num545 + WorldGen.genRand.Next(10) + 7;
if (num546 < 0)
{
num546 = 0;
}
if (num547 > Main.maxTilesX - 1)
{
num547 = Main.maxTilesX - 1;
}
for (int num548 = num546; num548 < num547; num548++)
{
int num549 = 1;
while ((double)num549 < Main.worldSurface - 1.0)
{
if (Main.tile[num548, num549].type == 2 && Main.tile[num548, num549].active() && !Main.tile[num548, num549 - 1].active())
{
WorldGen.PlaceTile(num548, num549 - 1, 27, true, false, -1, 0);
}
if (Main.tile[num548, num549].active())
{
break;
}
num549++;
}
}
num544++;
}
Main.statusText = Lang.gen[40];
int num550 = 0;
while ((double)num550 < (double)Main.maxTilesX * 0.003)
{
int num551 = WorldGen.genRand.Next(50, Main.maxTilesX - 50);
int num552 = WorldGen.genRand.Next(25, 50);
for (int num553 = num551 - num552; num553 < num551 + num552; num553++)
{
int num554 = 20;
while ((double)num554 < Main.worldSurface)
{
WorldGen.GrowEpicTree(num553, num554);
num554++;
}
}
num550++;
}
WorldGen.AddTrees();
Main.statusText = Lang.gen[41];
int num555 = 0;
while ((double)num555 < (double)Main.maxTilesX * 1.7)
{
WorldGen.PlantAlch();
num555++;
}
for (int num556 = 0; num556 < Main.maxTilesX * 2; num556++)
{
WorldGen.plantDye(WorldGen.genRand.Next(100, Main.maxTilesX - 100), WorldGen.genRand.Next(100, Main.maxTilesY - 200));
}
for (int num557 = 100; num557 < Main.maxTilesX - 100; num557++)
{
for (int num558 = (int)Main.worldSurface; num558 < Main.maxTilesY - 100; num558++)
{
if (Main.tile[num557, num558].wall == 86)
{
if (Main.tile[num557, num558].liquid > 0)
{
Main.tile[num557, num558].honey(true);
}
if (WorldGen.genRand.Next(3) == 0)
{
WorldGen.PlaceTight(num557, num558, 165, false);
}
}
if (Main.tile[num557, num558].wall == 62)
{
Main.tile[num557, num558].liquid = 0;
Main.tile[num557, num558].lava(false);
}
if (Main.tile[num557, num558].wall == 62 && !Main.tile[num557, num558].active() && WorldGen.genRand.Next(10) != 0)
{
int num559 = WorldGen.genRand.Next(2, 5);
int num560 = num557 - num559;
int num561 = num557 + num559;
int num562 = num558 - num559;
int num563 = num558 + num559;
bool flag47 = false;
for (int num564 = num560; num564 <= num561; num564++)
{
for (int num565 = num562; num565 <= num563; num565++)
{
if (WorldGen.SolidTile(num564, num565))
{
flag47 = true;
break;
}
}
}
if (flag47)
{
WorldGen.PlaceTile(num557, num558, 51, true, false, -1, 0);
WorldGen.TileFrame(num557, num558, false, false);
}
}
}
}
Main.statusText = Lang.gen[42];
WorldGen.AddPlants();
for (int num566 = 0; num566 < Main.maxTilesX; num566++)
{
for (int num567 = 0; num567 < Main.maxTilesY; num567++)
{
if (Main.tile[num566, num567].active())
{
if (num567 >= (int)Main.worldSurface && Main.tile[num566, num567].type == 70 && !Main.tile[num566, num567 - 1].active())
{
WorldGen.GrowShroom(num566, num567);
if (!Main.tile[num566, num567 - 1].active())
{
WorldGen.PlaceTile(num566, num567 - 1, 71, true, false, -1, 0);
}
}
if (Main.tile[num566, num567].type == 60 && !Main.tile[num566, num567 - 1].active())
{
WorldGen.PlaceTile(num566, num567 - 1, 61, true, false, -1, 0);
}
}
}
}
for (int num568 = 0; num568 < Main.maxTilesX * 100; num568++)
{
int num569 = WorldGen.genRand.Next(40, Main.maxTilesX / 2 - 40);
if (num9 < 0)
{
num569 += Main.maxTilesX / 2;
}
int num570 = WorldGen.genRand.Next(Main.maxTilesY - 300);
while (!Main.tile[num569, num570].active() && num570 < Main.maxTilesY - 300)
{
num570++;
}
if (Main.tile[num569, num570].active() && Main.tile[num569, num570].type == 60)
{
num570--;
WorldGen.PlaceJunglePlant(num569, num570, 233, WorldGen.genRand.Next(8), 0);
if (Main.tile[num569, num570].type != 233)
{
WorldGen.PlaceJunglePlant(num569, num570, 233, WorldGen.genRand.Next(12), 1);
}
}
}
Main.statusText = Lang.gen[43];
for (int num571 = 0; num571 < Main.maxTilesX; num571++)
{
int num572 = 0;
int num573 = 0;
while ((double)num573 < Main.worldSurface)
{
if (num572 > 0 && !Main.tile[num571, num573].active())
{
Main.tile[num571, num573].active(true);
Main.tile[num571, num573].type = 52;
num572--;
}
else
{
num572 = 0;
}
if (Main.tile[num571, num573].active() && (Main.tile[num571, num573].type == 2 || (Main.tile[num571, num573].type == 192 && WorldGen.genRand.Next(4) == 0)) && WorldGen.genRand.Next(5) < 3)
{
num572 = WorldGen.genRand.Next(1, 10);
}
num573++;
}
num572 = 0;
for (int num574 = 0; num574 < Main.maxTilesY; num574++)
{
if (num572 > 0 && !Main.tile[num571, num574].active())
{
Main.tile[num571, num574].active(true);
Main.tile[num571, num574].type = 62;
num572--;
}
else
{
num572 = 0;
}
if (Main.tile[num571, num574].active() && Main.tile[num571, num574].type == 60 && WorldGen.genRand.Next(5) < 3)
{
num572 = WorldGen.genRand.Next(1, 10);
}
}
num572 = 0;
for (int num575 = 0; num575 < Main.maxTilesY; num575++)
{
if (num572 > 0 && !Main.tile[num571, num575].active())
{
Main.tile[num571, num575].active(true);
Main.tile[num571, num575].type = 205;
num572--;
}
else
{
num572 = 0;
}
if (Main.tile[num571, num575].active() && Main.tile[num571, num575].type == 199 && WorldGen.genRand.Next(5) < 3)
{
num572 = WorldGen.genRand.Next(1, 10);
}
}
}
Main.statusText = Lang.gen[44];
int num576 = 0;
while ((double)num576 < (double)Main.maxTilesX * 0.005)
{
int num577 = WorldGen.genRand.Next(20, Main.maxTilesX - 20);
int num578 = WorldGen.genRand.Next(5, 15);
int num579 = WorldGen.genRand.Next(15, 30);
int num580 = 1;
while ((double)num580 < Main.worldSurface - 1.0)
{
if (Main.tile[num577, num580].active())
{
for (int num581 = num577 - num578; num581 < num577 + num578; num581++)
{
for (int num582 = num580 - num579; num582 < num580 + num579; num582++)
{
if (Main.tile[num581, num582].type == 3 || Main.tile[num581, num582].type == 24)
{
Main.tile[num581, num582].frameX = (short)(WorldGen.genRand.Next(6, 8) * 18);
if (Main.tile[num581, num582].type == 3 && WorldGen.genRand.Next(2) == 0)
{
Main.tile[num581, num582].frameX = (short)(WorldGen.genRand.Next(9, 11) * 18);
}
}
}
}
break;
}
num580++;
}
num576++;
}
Main.statusText = Lang.gen[45];
int num583 = 0;
while ((double)num583 < (double)Main.maxTilesX * 0.002)
{
int num584 = WorldGen.genRand.Next(20, Main.maxTilesX - 20);
int num585 = WorldGen.genRand.Next(4, 10);
int num586 = WorldGen.genRand.Next(15, 30);
int num587 = 1;
while ((double)num587 < Main.worldSurface - 1.0)
{
if (Main.tile[num584, num587].active())
{
for (int num588 = num584 - num585; num588 < num584 + num585; num588++)
{
for (int num589 = num587 - num586; num589 < num587 + num586; num589++)
{
if (Main.tile[num588, num589].type == 3 || Main.tile[num588, num589].type == 24)
{
Main.tile[num588, num589].frameX = 144;
}
}
}
break;
}
num587++;
}
num583++;
}
for (int num590 = 20; num590 < Main.maxTilesX - 20; num590++)
{
for (int num591 = (int)Main.worldSurface; num591 < Main.maxTilesY - 20; num591++)
{
if (!Main.tile[num590, num591].active() && Main.rand.Next(5) == 0)
{
WorldGen.PlaceTight(num590, num591, 165, false);
}
}
for (int num592 = 5; num592 < (int)Main.worldSurface; num592++)
{
if ((Main.tile[num590, num592 - 1].type == 147 || Main.tile[num590, num592 - 1].type == 161) && Main.rand.Next(5) == 0)
{
WorldGen.PlaceTight(num590, num592, 165, false);
}
}
}
int num593 = 0;
while ((double)num593 < (double)Main.maxTilesX * 0.25)
{
int num594 = WorldGen.genRand.Next((int)(Main.worldSurface + Main.rockLayer) / 2, WorldGen.lavaLine);
int num595 = WorldGen.genRand.Next(array5[num594], array6[num594]);
if (Main.tile[num595, num594].active() && (Main.tile[num595, num594].type == 147 || Main.tile[num595, num594].type == 161 || Main.tile[num595, num594].type == 162 || Main.tile[num595, num594].type == 224))
{
int num596 = WorldGen.genRand.Next(1, 4);
int num597 = WorldGen.genRand.Next(1, 4);
int num598 = WorldGen.genRand.Next(1, 4);
int num599 = WorldGen.genRand.Next(1, 4);
int num600 = WorldGen.genRand.Next(12);
int style3;
if (num600 < 3)
{
style3 = 0;
}
else
{
if (num600 < 6)
{
style3 = 1;
}
else
{
if (num600 < 8)
{
style3 = 2;
}
else
{
if (num600 < 10)
{
style3 = 3;
}
else
{
if (num600 < 11)
{
style3 = 4;
}
else
{
style3 = 5;
}
}
}
}
}
for (int num601 = num595 - num596; num601 < num595 + num597; num601++)
{
for (int num602 = num594 - num598; num602 < num594 + num599; num602++)
{
if (!Main.tile[num601, num602].active())
{
WorldGen.PlaceTile(num601, num602, 178, true, false, -1, style3);
}
}
}
}
num593++;
}
for (int num603 = 0; num603 < Main.maxTilesX; num603++)
{
int num604 = WorldGen.genRand.Next(20, Main.maxTilesX - 20);
int num605 = WorldGen.genRand.Next((int)Main.rockLayer, Main.maxTilesY - 300);
if (!Main.tile[num604, num605].active() && !Main.tile[num604, num605].lava() && !Main.wallDungeon[(int)Main.tile[num604, num605].wall] && Main.tile[num604, num605].wall != 27)
{
int num606 = WorldGen.genRand.Next(12);
int style4;
if (num606 < 3)
{
style4 = 0;
}
else
{
if (num606 < 6)
{
style4 = 1;
}
else
{
if (num606 < 8)
{
style4 = 2;
}
else
{
if (num606 < 10)
{
style4 = 3;
}
else
{
if (num606 < 11)
{
style4 = 4;
}
else
{
style4 = 5;
}
}
}
}
}
WorldGen.PlaceTile(num604, num605, 178, true, false, -1, style4);
}
}
for (int num607 = 5; num607 < Main.maxTilesX - 5; num607++)
{
for (int num608 = 5; num608 < Main.maxTilesY - 5; num608++)
{
if (Main.tile[num607, num608].active() && Main.tileMoss[(int)Main.tile[num607, num608].type])
{
for (int num609 = 0; num609 < 4; num609++)
{
int num610 = num607;
int num611 = num608;
if (num609 == 0)
{
num610--;
}
if (num609 == 1)
{
num610++;
}
if (num609 == 2)
{
num611--;
}
if (num609 == 3)
{
num611++;
}
if (!Main.tile[num610, num611].active())
{
WorldGen.PlaceTile(num610, num611, 184, true, false, -1, 0);
}
}
}
}
}
int num612 = 0;
int num613 = 0;
bool flag48 = false;
for (int num614 = 5; num614 < Main.maxTilesX - 5; num614++)
{
int num615 = 0;
while ((double)num615 < Main.worldSurface + 20.0)
{
if (Main.tile[num614, num615].active() && Main.tile[num614, num615].type == 60)
{
num612 = num614;
flag48 = true;
break;
}
num615++;
}
if (flag48)
{
break;
}
}
flag48 = false;
for (int num616 = Main.maxTilesX - 5; num616 > 5; num616--)
{
int num617 = 0;
while ((double)num617 < Main.worldSurface + 20.0)
{
if (Main.tile[num616, num617].active() && Main.tile[num616, num617].type == 60)
{
num613 = num616;
flag48 = true;
break;
}
num617++;
}
if (flag48)
{
break;
}
}
for (int num618 = num612; num618 <= num613; num618++)
{
int num619 = 0;
while ((double)num619 < Main.worldSurface + 20.0)
{
if (((num618 >= num612 + 2 && num618 <= num613 - 2) || WorldGen.genRand.Next(2) != 0) && ((num618 >= num612 + 3 && num618 <= num613 - 3) || WorldGen.genRand.Next(3) != 0) && (Main.tile[num618, num619].wall == 2 || Main.tile[num618, num619].wall == 59))
{
Main.tile[num618, num619].wall = 15;
}
num619++;
}
}
for (int num620 = 0; num620 < num304; num620++)
{
int num621 = array7[num620];
int num622 = array8[num620];
for (int num623 = num621 - 1; num623 <= num621 + 1; num623++)
{
for (int num624 = num622 - 2; num624 <= num622 + 1; num624++)
{
if (num624 != num622 + 1)
{
Main.tile[num623, num624].active(false);
}
else
{
Main.tile[num623, num624].active(true);
Main.tile[num623, num624].type = 225;
Main.tile[num623, num624].slope(0);
Main.tile[num623, num624].halfBrick(false);
}
}
}
WorldGen.PlaceTile(num621, num622, 231, true, false, -1, 0);
}
Main.tileSolid[232] = true;
Main.tileSolid[162] = true;
for (int num625 = 5; num625 < Main.maxTilesX - 5; num625++)
{
for (int num626 = 5; num626 < Main.maxTilesY - 5; num626++)
{
if (Main.tile[num625, num626].type == 137)
{
if (Main.tile[num625, num626].frameY <= 52)
{
int num627 = -1;
if (Main.tile[num625, num626].frameX >= 18)
{
num627 = 1;
}
if (Main.tile[num625 + num627, num626].halfBrick() || Main.tile[num625 + num627, num626].slope() != 0)
{
Main.tile[num625 + num627, num626].active(false);
}
}
}
else
{
if (Main.tile[num625, num626].type == 162 && Main.tile[num625, num626 + 1].liquid == 0)
{
Main.tile[num625, num626].active(false);
}
}
if (Main.tile[num625, num626].wall == 13 || Main.tile[num625, num626].wall == 14)
{
Main.tile[num625, num626].liquid = 0;
}
}
}
WorldGen.gen = false;
}
public static bool GrowEpicTree(int i, int y)
{
int num = y;
while (Main.tile[i, num].type == 20)
{
num++;
}
if (Main.tile[i, num].active() && !Main.tile[i, num].halfBrick() && Main.tile[i, num].slope() == 0 && Main.tile[i, num].type == 2 && Main.tile[i, num - 1].wall == 0 && Main.tile[i, num - 1].liquid == 0 && ((Main.tile[i - 1, num].active() && (Main.tile[i - 1, num].type == 2 || Main.tile[i - 1, num].type == 23 || Main.tile[i - 1, num].type == 60 || Main.tile[i - 1, num].type == 109)) || (Main.tile[i + 1, num].active() && (Main.tile[i + 1, num].type == 2 || Main.tile[i + 1, num].type == 23 || Main.tile[i + 1, num].type == 60 || Main.tile[i + 1, num].type == 109))))
{
int num2 = 2;
if (WorldGen.EmptyTileCheck(i - num2, i + num2, num - 55, num - 1, 20))
{
bool flag = false;
bool flag2 = false;
int num3 = WorldGen.genRand.Next(20, 30);
int num4;
for (int j = num - num3; j < num; j++)
{
Main.tile[i, j].frameNumber((byte)WorldGen.genRand.Next(3));
Main.tile[i, j].active(true);
Main.tile[i, j].type = 5;
num4 = WorldGen.genRand.Next(3);
int num5 = WorldGen.genRand.Next(10);
if (j == num - 1 || j == num - num3)
{
num5 = 0;
}
while (((num5 == 5 || num5 == 7) && flag) || ((num5 == 6 || num5 == 7) && flag2))
{
num5 = WorldGen.genRand.Next(10);
}
flag = false;
flag2 = false;
if (num5 == 5 || num5 == 7)
{
flag = true;
}
if (num5 == 6 || num5 == 7)
{
flag2 = true;
}
if (num5 == 1)
{
if (num4 == 0)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 66;
}
if (num4 == 1)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 88;
}
if (num4 == 2)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 110;
}
}
else
{
if (num5 == 2)
{
if (num4 == 0)
{
Main.tile[i, j].frameX = 22;
Main.tile[i, j].frameY = 0;
}
if (num4 == 1)
{
Main.tile[i, j].frameX = 22;
Main.tile[i, j].frameY = 22;
}
if (num4 == 2)
{
Main.tile[i, j].frameX = 22;
Main.tile[i, j].frameY = 44;
}
}
else
{
if (num5 == 3)
{
if (num4 == 0)
{
Main.tile[i, j].frameX = 44;
Main.tile[i, j].frameY = 66;
}
if (num4 == 1)
{
Main.tile[i, j].frameX = 44;
Main.tile[i, j].frameY = 88;
}
if (num4 == 2)
{
Main.tile[i, j].frameX = 44;
Main.tile[i, j].frameY = 110;
}
}
else
{
if (num5 == 4)
{
if (num4 == 0)
{
Main.tile[i, j].frameX = 22;
Main.tile[i, j].frameY = 66;
}
if (num4 == 1)
{
Main.tile[i, j].frameX = 22;
Main.tile[i, j].frameY = 88;
}
if (num4 == 2)
{
Main.tile[i, j].frameX = 22;
Main.tile[i, j].frameY = 110;
}
}
else
{
if (num5 == 5)
{
if (num4 == 0)
{
Main.tile[i, j].frameX = 88;
Main.tile[i, j].frameY = 0;
}
if (num4 == 1)
{
Main.tile[i, j].frameX = 88;
Main.tile[i, j].frameY = 22;
}
if (num4 == 2)
{
Main.tile[i, j].frameX = 88;
Main.tile[i, j].frameY = 44;
}
}
else
{
if (num5 == 6)
{
if (num4 == 0)
{
Main.tile[i, j].frameX = 66;
Main.tile[i, j].frameY = 66;
}
if (num4 == 1)
{
Main.tile[i, j].frameX = 66;
Main.tile[i, j].frameY = 88;
}
if (num4 == 2)
{
Main.tile[i, j].frameX = 66;
Main.tile[i, j].frameY = 110;
}
}
else
{
if (num5 == 7)
{
if (num4 == 0)
{
Main.tile[i, j].frameX = 110;
Main.tile[i, j].frameY = 66;
}
if (num4 == 1)
{
Main.tile[i, j].frameX = 110;
Main.tile[i, j].frameY = 88;
}
if (num4 == 2)
{
Main.tile[i, j].frameX = 110;
Main.tile[i, j].frameY = 110;
}
}
else
{
if (num4 == 0)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 0;
}
if (num4 == 1)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 22;
}
if (num4 == 2)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 44;
}
}
}
}
}
}
}
}
if (num5 == 5 || num5 == 7)
{
Main.tile[i - 1, j].active(true);
Main.tile[i - 1, j].type = 5;
num4 = WorldGen.genRand.Next(3);
if (WorldGen.genRand.Next(3) < 2)
{
if (num4 == 0)
{
Main.tile[i - 1, j].frameX = 44;
Main.tile[i - 1, j].frameY = 198;
}
if (num4 == 1)
{
Main.tile[i - 1, j].frameX = 44;
Main.tile[i - 1, j].frameY = 220;
}
if (num4 == 2)
{
Main.tile[i - 1, j].frameX = 44;
Main.tile[i - 1, j].frameY = 242;
}
}
else
{
if (num4 == 0)
{
Main.tile[i - 1, j].frameX = 66;
Main.tile[i - 1, j].frameY = 0;
}
if (num4 == 1)
{
Main.tile[i - 1, j].frameX = 66;
Main.tile[i - 1, j].frameY = 22;
}
if (num4 == 2)
{
Main.tile[i - 1, j].frameX = 66;
Main.tile[i - 1, j].frameY = 44;
}
}
}
if (num5 == 6 || num5 == 7)
{
Main.tile[i + 1, j].active(true);
Main.tile[i + 1, j].type = 5;
num4 = WorldGen.genRand.Next(3);
if (WorldGen.genRand.Next(3) < 2)
{
if (num4 == 0)
{
Main.tile[i + 1, j].frameX = 66;
Main.tile[i + 1, j].frameY = 198;
}
if (num4 == 1)
{
Main.tile[i + 1, j].frameX = 66;
Main.tile[i + 1, j].frameY = 220;
}
if (num4 == 2)
{
Main.tile[i + 1, j].frameX = 66;
Main.tile[i + 1, j].frameY = 242;
}
}
else
{
if (num4 == 0)
{
Main.tile[i + 1, j].frameX = 88;
Main.tile[i + 1, j].frameY = 66;
}
if (num4 == 1)
{
Main.tile[i + 1, j].frameX = 88;
Main.tile[i + 1, j].frameY = 88;
}
if (num4 == 2)
{
Main.tile[i + 1, j].frameX = 88;
Main.tile[i + 1, j].frameY = 110;
}
}
}
}
int num6 = WorldGen.genRand.Next(3);
bool flag3 = false;
bool flag4 = false;
if (Main.tile[i - 1, num].active() && !Main.tile[i - 1, num].halfBrick() && Main.tile[i - 1, num].slope() == 0 && (Main.tile[i - 1, num].type == 2 || Main.tile[i - 1, num].type == 23 || Main.tile[i - 1, num].type == 60 || Main.tile[i - 1, num].type == 109))
{
flag3 = true;
}
if (Main.tile[i + 1, num].active() && !Main.tile[i + 1, num].halfBrick() && Main.tile[i + 1, num].slope() == 0 && (Main.tile[i + 1, num].type == 2 || Main.tile[i + 1, num].type == 23 || Main.tile[i + 1, num].type == 60 || Main.tile[i + 1, num].type == 109))
{
flag4 = true;
}
if (!flag3)
{
if (num6 == 0)
{
num6 = 2;
}
if (num6 == 1)
{
num6 = 3;
}
}
if (!flag4)
{
if (num6 == 0)
{
num6 = 1;
}
if (num6 == 2)
{
num6 = 3;
}
}
if (flag3 && !flag4)
{
num6 = 2;
}
if (flag4 && !flag3)
{
num6 = 1;
}
if (num6 == 0 || num6 == 1)
{
Main.tile[i + 1, num - 1].active(true);
Main.tile[i + 1, num - 1].type = 5;
num4 = WorldGen.genRand.Next(3);
if (num4 == 0)
{
Main.tile[i + 1, num - 1].frameX = 22;
Main.tile[i + 1, num - 1].frameY = 132;
}
if (num4 == 1)
{
Main.tile[i + 1, num - 1].frameX = 22;
Main.tile[i + 1, num - 1].frameY = 154;
}
if (num4 == 2)
{
Main.tile[i + 1, num - 1].frameX = 22;
Main.tile[i + 1, num - 1].frameY = 176;
}
}
if (num6 == 0 || num6 == 2)
{
Main.tile[i - 1, num - 1].active(true);
Main.tile[i - 1, num - 1].type = 5;
num4 = WorldGen.genRand.Next(3);
if (num4 == 0)
{
Main.tile[i - 1, num - 1].frameX = 44;
Main.tile[i - 1, num - 1].frameY = 132;
}
if (num4 == 1)
{
Main.tile[i - 1, num - 1].frameX = 44;
Main.tile[i - 1, num - 1].frameY = 154;
}
if (num4 == 2)
{
Main.tile[i - 1, num - 1].frameX = 44;
Main.tile[i - 1, num - 1].frameY = 176;
}
}
num4 = WorldGen.genRand.Next(3);
if (num6 == 0)
{
if (num4 == 0)
{
Main.tile[i, num - 1].frameX = 88;
Main.tile[i, num - 1].frameY = 132;
}
if (num4 == 1)
{
Main.tile[i, num - 1].frameX = 88;
Main.tile[i, num - 1].frameY = 154;
}
if (num4 == 2)
{
Main.tile[i, num - 1].frameX = 88;
Main.tile[i, num - 1].frameY = 176;
}
}
else
{
if (num6 == 1)
{
if (num4 == 0)
{
Main.tile[i, num - 1].frameX = 0;
Main.tile[i, num - 1].frameY = 132;
}
if (num4 == 1)
{
Main.tile[i, num - 1].frameX = 0;
Main.tile[i, num - 1].frameY = 154;
}
if (num4 == 2)
{
Main.tile[i, num - 1].frameX = 0;
Main.tile[i, num - 1].frameY = 176;
}
}
else
{
if (num6 == 2)
{
if (num4 == 0)
{
Main.tile[i, num - 1].frameX = 66;
Main.tile[i, num - 1].frameY = 132;
}
if (num4 == 1)
{
Main.tile[i, num - 1].frameX = 66;
Main.tile[i, num - 1].frameY = 154;
}
if (num4 == 2)
{
Main.tile[i, num - 1].frameX = 66;
Main.tile[i, num - 1].frameY = 176;
}
}
}
}
if (WorldGen.genRand.Next(8) != 0)
{
num4 = WorldGen.genRand.Next(3);
if (num4 == 0)
{
Main.tile[i, num - num3].frameX = 22;
Main.tile[i, num - num3].frameY = 198;
}
if (num4 == 1)
{
Main.tile[i, num - num3].frameX = 22;
Main.tile[i, num - num3].frameY = 220;
}
if (num4 == 2)
{
Main.tile[i, num - num3].frameX = 22;
Main.tile[i, num - num3].frameY = 242;
}
}
else
{
num4 = WorldGen.genRand.Next(3);
if (num4 == 0)
{
Main.tile[i, num - num3].frameX = 0;
Main.tile[i, num - num3].frameY = 198;
}
if (num4 == 1)
{
Main.tile[i, num - num3].frameX = 0;
Main.tile[i, num - num3].frameY = 220;
}
if (num4 == 2)
{
Main.tile[i, num - num3].frameX = 0;
Main.tile[i, num - num3].frameY = 242;
}
}
WorldGen.RangeFrame(i - 2, num - num3 - 1, i + 2, num + 1);
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, i, (int)((double)num - (double)num3 * 0.5), num3 + 1);
}
return true;
}
}
return false;
}
public static bool Pyramid(int i, int j)
{
int num = j - WorldGen.genRand.Next(0, 7);
int num2 = WorldGen.genRand.Next(9, 13);
int num3 = 1;
int num4 = j + WorldGen.genRand.Next(75, 125);
for (int k = num; k < num4; k++)
{
for (int l = i - num3; l < i + num3 - 1; l++)
{
Main.tile[l, k].type = 151;
Main.tile[l, k].active(true);
Main.tile[l, k].halfBrick(false);
}
num3++;
}
for (int m = i - num3 - 5; m <= i + num3 + 5; m++)
{
for (int n = j - 1; n <= num4 + 1; n++)
{
bool flag = true;
for (int num5 = m - 1; num5 <= m + 1; num5++)
{
for (int num6 = n - 1; num6 <= n + 1; num6++)
{
if (Main.tile[num5, num6].type != 151)
{
flag = false;
}
}
}
if (flag)
{
Main.tile[m, n].wall = 34;
WorldGen.SquareWallFrame(m, n, true);
}
}
}
int num7 = 1;
if (WorldGen.genRand.Next(2) == 0)
{
num7 = -1;
}
int num8 = i - num2 * num7;
int num9 = j + num2;
int num10 = WorldGen.genRand.Next(5, 8);
bool flag2 = true;
int num11 = WorldGen.genRand.Next(20, 30);
while (flag2)
{
flag2 = false;
bool flag3 = false;
for (int num12 = num9; num12 <= num9 + num10; num12++)
{
int num13 = num8;
if (Main.tile[num13, num12 - 1].type == 53)
{
flag3 = true;
}
if (Main.tile[num13, num12].type == 151)
{
Main.tile[num13, num12 + 1].wall = 34;
Main.tile[num13 + num7, num12].wall = 34;
Main.tile[num13, num12].active(false);
flag2 = true;
}
if (flag3)
{
Main.tile[num13, num12].type = 53;
Main.tile[num13, num12].active(true);
Main.tile[num13, num12].halfBrick(false);
}
}
num8 -= num7;
}
num8 = i - num2 * num7;
bool flag4 = true;
bool flag5 = false;
flag2 = true;
while (flag2)
{
for (int num14 = num9; num14 <= num9 + num10; num14++)
{
int num15 = num8;
Main.tile[num15, num14].active(false);
}
num8 += num7;
num9++;
num11--;
if (num9 >= num4 - num10 * 2)
{
num11 = 10;
}
if (num11 <= 0)
{
bool flag6 = false;
if (!flag4 && !flag5)
{
flag5 = true;
flag6 = true;
int num16 = WorldGen.genRand.Next(7, 13);
int num17 = WorldGen.genRand.Next(23, 28);
int num18 = num17;
int num19 = num8;
while (num17 > 0)
{
for (int num20 = num9 - num16 + num10; num20 <= num9 + num10; num20++)
{
if (num17 == num18 || num17 == 1)
{
if (num20 >= num9 - num16 + num10 + 2)
{
Main.tile[num8, num20].active(false);
}
}
else
{
if (num17 == num18 - 1 || num17 == 2 || num17 == num18 - 2 || num17 == 3)
{
if (num20 >= num9 - num16 + num10 + 1)
{
Main.tile[num8, num20].active(false);
}
}
else
{
Main.tile[num8, num20].active(false);
}
}
}
num17--;
num8 += num7;
}
int num21 = num8 - num7;
int num22 = num21;
int num23 = num19;
if (num21 > num19)
{
num22 = num19;
num23 = num21;
}
int num24 = WorldGen.genRand.Next(3);
if (num24 == 0)
{
num24 = 857;
}
else
{
if (num24 == 1)
{
num24 = 848;
}
else
{
if (num24 == 2)
{
num24 = 934;
}
}
}
WorldGen.AddBuriedChest((num22 + num23) / 2, num9, num24, false, 1);
int num25 = WorldGen.genRand.Next(1, 10);
for (int num26 = 0; num26 < num25; num26++)
{
int i2 = WorldGen.genRand.Next(num22, num23);
int j2 = num9 + num10;
WorldGen.PlaceSmallPile(i2, j2, WorldGen.genRand.Next(16, 19), 1, 185);
}
WorldGen.PlaceTile(num22 + 2, num9 - num16 + num10 + 1, 91, true, false, -1, WorldGen.genRand.Next(4, 7));
WorldGen.PlaceTile(num22 + 3, num9 - num16 + num10, 91, true, false, -1, WorldGen.genRand.Next(4, 7));
WorldGen.PlaceTile(num23 - 2, num9 - num16 + num10 + 1, 91, true, false, -1, WorldGen.genRand.Next(4, 7));
WorldGen.PlaceTile(num23 - 3, num9 - num16 + num10, 91, true, false, -1, WorldGen.genRand.Next(4, 7));
for (int num27 = num22; num27 <= num23; num27++)
{
WorldGen.PlacePot(num27, num9 + num10, 28, WorldGen.genRand.Next(25, 28));
}
}
if (flag4)
{
flag4 = false;
num7 *= -1;
num11 = WorldGen.genRand.Next(15, 20);
}
else
{
if (flag6)
{
num11 = WorldGen.genRand.Next(10, 15);
}
else
{
num7 *= -1;
num11 = WorldGen.genRand.Next(20, 40);
}
}
}
if (num9 >= num4 - num10)
{
flag2 = false;
}
}
int num28 = WorldGen.genRand.Next(100, 200);
int num29 = WorldGen.genRand.Next(500, 800);
flag2 = true;
int num30 = num10;
num11 = WorldGen.genRand.Next(10, 50);
if (num7 == 1)
{
num8 -= num30;
}
int num31 = WorldGen.genRand.Next(5, 10);
while (flag2)
{
num28--;
num29--;
num11--;
for (int num32 = num8 - num31 - WorldGen.genRand.Next(0, 2); num32 <= num8 + num30 + num31 + WorldGen.genRand.Next(0, 2); num32++)
{
int num33 = num9;
if (num32 >= num8 && num32 <= num8 + num30)
{
Main.tile[num32, num33].active(false);
}
else
{
Main.tile[num32, num33].type = 151;
Main.tile[num32, num33].active(true);
Main.tile[num32, num33].halfBrick(false);
}
if (num32 >= num8 - 1 && num32 <= num8 + 1 + num30)
{
Main.tile[num32, num33].wall = 34;
}
}
num9++;
num8 += num7;
if (num28 <= 0)
{
flag2 = false;
for (int num34 = num8 + 1; num34 <= num8 + num30 - 1; num34++)
{
if (Main.tile[num34, num9].active())
{
flag2 = true;
}
}
}
if (num11 < 0)
{
num11 = WorldGen.genRand.Next(10, 50);
num7 *= -1;
}
if (num29 <= 0)
{
flag2 = false;
}
}
return true;
}
public static bool GrowLivingTree(int i, int j)
{
int num = 0;
int[] array = new int[1000];
int[] array2 = new int[1000];
int[] array3 = new int[1000];
int[] array4 = new int[1000];
int num2 = 0;
int[] array5 = new int[2000];
int[] array6 = new int[2000];
bool[] array7 = new bool[2000];
if (!WorldGen.SolidTile(i, j + 1))
{
return false;
}
if (Main.tile[i, j].active())
{
return false;
}
int num3 = i - WorldGen.genRand.Next(1, 4);
int num4 = i + WorldGen.genRand.Next(1, 4);
if (j < 150)
{
return false;
}
int num5 = i - 50;
int num6 = i + 50;
for (int k = num5; k <= num6; k++)
{
for (int l = 5; l < j - 5; l++)
{
if (Main.tile[k, l].active())
{
return false;
}
}
}
int num7 = num3;
int num8 = num4;
int num9 = num3;
int num10 = num4;
int num11 = num4 - num3;
bool flag = true;
int num12 = WorldGen.genRand.Next(-10, -5);
int num13 = WorldGen.genRand.Next(2);
int num14 = j;
while (flag)
{
num12++;
if (num12 > WorldGen.genRand.Next(5, 30))
{
num12 = 0;
array2[num] = num14 + WorldGen.genRand.Next(5);
if (WorldGen.genRand.Next(5) == 0)
{
if (num13 == 0)
{
num13 = 1;
}
else
{
num13 = 0;
}
}
if (num13 == 0)
{
array3[num] = -1;
array[num] = num3;
array4[num] = num4 - num3;
if (WorldGen.genRand.Next(2) == 0)
{
num3++;
}
num7++;
num13 = 1;
}
else
{
array3[num] = 1;
array[num] = num4;
array4[num] = num4 - num3;
if (WorldGen.genRand.Next(2) == 0)
{
num4--;
}
num8--;
num13 = 0;
}
if (num7 == num8)
{
flag = false;
}
num++;
}
for (int m = num3; m <= num4; m++)
{
Main.tile[m, num14].type = 191;
Main.tile[m, num14].active(true);
Main.tile[m, num14].halfBrick(false);
}
num14--;
}
for (int n = 0; n < num; n++)
{
int num15 = array[n] + array3[n];
int num16 = array2[n];
int num17 = (int)((float)array4[n] * (1f + (float)WorldGen.genRand.Next(20, 30) * 0.1f));
Main.tile[num15, num16 + 1].type = 191;
Main.tile[num15, num16 + 1].active(true);
Main.tile[num15, num16 + 1].halfBrick(false);
int num18 = WorldGen.genRand.Next(3, 5);
while (num17 > 0)
{
num17--;
Main.tile[num15, num16].type = 191;
Main.tile[num15, num16].active(true);
Main.tile[num15, num16].halfBrick(false);
if (WorldGen.genRand.Next(10) == 0)
{
if (WorldGen.genRand.Next(2) == 0)
{
num16--;
}
else
{
num16++;
}
}
else
{
num15 += array3[n];
}
if (num18 > 0)
{
num18--;
}
else
{
if (WorldGen.genRand.Next(2) == 0)
{
num18 = WorldGen.genRand.Next(2, 5);
if (WorldGen.genRand.Next(2) == 0)
{
Main.tile[num15, num16].type = 191;
Main.tile[num15, num16].active(true);
Main.tile[num15, num16].halfBrick(false);
Main.tile[num15, num16 - 1].type = 191;
Main.tile[num15, num16 - 1].active(true);
Main.tile[num15, num16 - 1].halfBrick(false);
array5[num2] = num15;
array6[num2] = num16;
num2++;
}
else
{
Main.tile[num15, num16].type = 191;
Main.tile[num15, num16].active(true);
Main.tile[num15, num16].halfBrick(false);
Main.tile[num15, num16 + 1].type = 191;
Main.tile[num15, num16 + 1].active(true);
Main.tile[num15, num16 + 1].halfBrick(false);
array5[num2] = num15;
array6[num2] = num16;
num2++;
}
}
}
if (num17 == 0)
{
array5[num2] = num15;
array6[num2] = num16;
num2++;
}
}
}
int num19 = (num3 + num4) / 2;
int num20 = num14;
int num21 = WorldGen.genRand.Next(num11 * 3, num11 * 5);
int num22 = 0;
int num23 = 0;
while (num21 > 0)
{
Main.tile[num19, num20].type = 191;
Main.tile[num19, num20].active(true);
Main.tile[num19, num20].halfBrick(false);
if (num22 > 0)
{
num22--;
}
if (num23 > 0)
{
num23--;
}
for (int num24 = -1; num24 < 2; num24++)
{
if (num24 != 0 && ((num24 < 0 && num22 == 0) || (num24 > 0 && num23 == 0)) && WorldGen.genRand.Next(2) == 0)
{
int num25 = num19;
int num26 = num20;
int num27 = WorldGen.genRand.Next(num11, num11 * 3);
if (num24 < 0)
{
num22 = WorldGen.genRand.Next(3, 5);
}
if (num24 > 0)
{
num23 = WorldGen.genRand.Next(3, 5);
}
int num28 = 0;
while (num27 > 0)
{
num27--;
num25 += num24;
Main.tile[num25, num26].type = 191;
Main.tile[num25, num26].active(true);
Main.tile[num25, num26].halfBrick(false);
if (num27 == 0)
{
array5[num2] = num25;
array6[num2] = num26;
array7[num2] = true;
num2++;
}
if (WorldGen.genRand.Next(5) == 0)
{
if (WorldGen.genRand.Next(2) == 0)
{
num26--;
}
else
{
num26++;
}
Main.tile[num25, num26].type = 191;
Main.tile[num25, num26].active(true);
Main.tile[num25, num26].halfBrick(false);
}
if (num28 > 0)
{
num28--;
}
else
{
if (WorldGen.genRand.Next(3) == 0)
{
num28 = WorldGen.genRand.Next(2, 4);
int num29 = num25;
int num30 = num26;
if (WorldGen.genRand.Next(2) == 0)
{
num30--;
}
else
{
num30++;
}
Main.tile[num29, num30].type = 191;
Main.tile[num29, num30].active(true);
Main.tile[num29, num30].halfBrick(false);
array5[num2] = num29;
array6[num2] = num30;
array7[num2] = true;
num2++;
}
}
}
}
}
array5[num2] = num19;
array6[num2] = num20;
num2++;
if (WorldGen.genRand.Next(4) == 0)
{
if (WorldGen.genRand.Next(2) == 0)
{
num19--;
}
else
{
num19++;
}
Main.tile[num19, num20].type = 191;
Main.tile[num19, num20].active(true);
Main.tile[num19, num20].halfBrick(false);
}
num20--;
num21--;
}
for (int num31 = num9; num31 <= num10; num31++)
{
int num32 = WorldGen.genRand.Next(1, 6);
int num33 = j + 1;
while (num32 > 0)
{
if (WorldGen.SolidTile(num31, num33))
{
num32--;
}
Main.tile[num31, num33].type = 191;
Main.tile[num31, num33].active(true);
Main.tile[num31, num33].halfBrick(false);
num33++;
}
int num34 = num33;
for (int num35 = 0; num35 < 2; num35++)
{
num33 = num34;
int num36 = (num9 + num10) / 2;
int num37 = 1;
int num38;
if (num31 < num36)
{
num38 = -1;
}
else
{
num38 = 1;
}
if (num31 == num36 || (num11 > 6 && (num31 == num36 - 1 || num31 == num36 + 1)))
{
num38 = 0;
}
int num39 = num38;
int num40 = num31;
num32 = WorldGen.genRand.Next((int)((double)num11 * 2.5), num11 * 4);
while (num32 > 0)
{
num32--;
num40 += num38;
Main.tile[num40, num33].type = 191;
Main.tile[num40, num33].active(true);
Main.tile[num40, num33].halfBrick(false);
num33 += num37;
Main.tile[num40, num33].type = 191;
Main.tile[num40, num33].active(true);
Main.tile[num40, num33].halfBrick(false);
if (!Main.tile[num40, num33 + 1].active())
{
num38 = 0;
num37 = 1;
}
if (WorldGen.genRand.Next(3) == 0)
{
if (num39 < 0)
{
if (num38 == 0)
{
num38 = -1;
}
else
{
num38 = 0;
}
}
else
{
if (num39 > 0)
{
if (num38 == 0)
{
num38 = 1;
}
else
{
num38 = 0;
}
}
else
{
num38 = WorldGen.genRand.Next(-1, 2);
}
}
}
if (WorldGen.genRand.Next(3) == 0)
{
if (num37 == 0)
{
num37 = 1;
}
else
{
num37 = 0;
}
}
}
}
}
for (int num41 = 0; num41 < num2; num41++)
{
int num42 = WorldGen.genRand.Next(5, 8);
num42 = (int)((float)num42 * (1f + (float)num11 * 0.05f));
if (array7[num41])
{
num42 = WorldGen.genRand.Next(7, 13);
}
int num43 = array5[num41] - num42;
int num44 = array5[num41] + num42;
int num45 = array6[num41] - num42;
int num46 = array6[num41] + num42;
float num47 = 2f - (float)WorldGen.genRand.Next(5) * 0.1f;
for (int num48 = num43; num48 <= num44; num48++)
{
for (int num49 = num45; num49 <= num46; num49++)
{
if (Main.tile[num48, num49].type != 191 && (float)Math.Abs(array5[num41] - num48) + (float)Math.Abs(array6[num41] - num49) * num47 < (float)num42)
{
Main.tile[num48, num49].type = 192;
Main.tile[num48, num49].active(true);
Main.tile[num48, num49].halfBrick(false);
}
}
}
}
if (num11 >= 4 && WorldGen.genRand.Next(3) != 0)
{
bool flag2 = false;
int num50 = num9;
int num51 = num10;
int num52 = j - 5;
int num53 = 50;
int num54 = WorldGen.genRand.Next(400, 700);
int num55 = 1;
bool flag3 = true;
while (num54 > 0)
{
num52++;
num54--;
num53--;
int num56 = (num9 + num10) / 2;
int num57 = 0;
if (num52 > j && num11 == 4)
{
num57 = 1;
}
for (int num58 = num9 - num57; num58 <= num10 + num57; num58++)
{
if (num58 > num56 - 2 && num58 <= num56 + 1)
{
if (Main.tile[num58, num52].type != 19)
{
Main.tile[num58, num52].active(false);
}
Main.tile[num58, num52].wall = 78;
if (Main.tile[num58 - 1, num52].wall > 0 || (double)num52 >= Main.worldSurface)
{
Main.tile[num58 - 1, num52].wall = 78;
}
if (Main.tile[num58 + 1, num52].wall > 0 || (double)num52 >= Main.worldSurface)
{
Main.tile[num58 + 1, num52].wall = 78;
}
}
else
{
Main.tile[num58, num52].type = 191;
Main.tile[num58, num52].active(true);
Main.tile[num58, num52].halfBrick(false);
}
}
num55++;
if (num55 >= 6)
{
num55 = 0;
int num59 = WorldGen.genRand.Next(3);
if (num59 == 0)
{
num59 = -1;
}
if (flag3)
{
num59 = 2;
}
if (num59 == 2)
{
flag3 = false;
for (int num60 = num9; num60 <= num10; num60++)
{
if (num60 > num56 - 2 && num60 <= num56 + 1)
{
Main.tile[num60, num52 + 1].active(false);
WorldGen.PlaceTile(num60, num52 + 1, 19, true, false, -1, 0);
}
}
}
else
{
num9 += num59;
num10 += num59;
}
if (num53 <= 0 && !flag2)
{
flag2 = true;
int num61 = WorldGen.genRand.Next(2);
if (num61 == 0)
{
num61 = -1;
}
int num62 = num52 - 2;
int num63 = num52;
int num64 = (num9 + num10) / 2;
if (num61 < 0)
{
num64--;
}
if (num61 > 0)
{
num64++;
}
int num65 = WorldGen.genRand.Next(15, 30);
int num66 = num64 + num65;
if (num61 < 0)
{
num66 = num64;
num64 -= num65;
}
WorldGen.dMinX = num64;
WorldGen.dMaxX = num66;
if (num61 < 0)
{
WorldGen.dMinX -= 40;
}
else
{
WorldGen.dMaxX += 40;
}
bool flag4 = false;
for (int num67 = num64; num67 < num66; num67++)
{
for (int num68 = num52 - 20; num68 < num52 + 10; num68++)
{
if (Main.tile[num67, num68].wall == 0 && !Main.tile[num67, num68].active() && (double)num68 < Main.worldSurface)
{
flag4 = true;
}
}
}
if (!flag4)
{
for (int num69 = num64; num69 <= num66; num69++)
{
for (int num70 = num62 - 2; num70 <= num63 + 2; num70++)
{
if (Main.tile[num69, num70].wall != 78 && Main.tile[num69, num70].type != 19)
{
Main.tile[num69, num70].active(true);
Main.tile[num69, num70].type = 191;
Main.tile[num69, num70].halfBrick(false);
}
if (num70 >= num62 && num70 <= num63)
{
Main.tile[num69, num70].liquid = 0;
Main.tile[num69, num70].wall = 78;
Main.tile[num69, num70].active(false);
}
}
}
int i2 = (num9 + num10) / 2 + 3 * num61;
int j2 = num52;
WorldGen.PlaceTile(i2, j2, 10, true, false, -1, 7);
int num71 = WorldGen.genRand.Next(5, 9);
int num72 = WorldGen.genRand.Next(4, 6);
if (num61 < 0)
{
num66 = num64 + num71;
num64 -= num71;
}
else
{
num64 = num66 - num71;
num66 += num71;
}
num62 = num63 - num72;
for (int num73 = num64 - 2; num73 <= num66 + 2; num73++)
{
for (int num74 = num62 - 2; num74 <= num63 + 2; num74++)
{
if (Main.tile[num73, num74].wall != 78 && Main.tile[num73, num74].type != 19)
{
Main.tile[num73, num74].active(true);
Main.tile[num73, num74].type = 191;
Main.tile[num73, num74].halfBrick(false);
}
if (num74 >= num62 && num74 <= num63 && num73 >= num64 && num73 <= num66)
{
Main.tile[num73, num74].liquid = 0;
Main.tile[num73, num74].wall = 78;
Main.tile[num73, num74].active(false);
}
}
}
i2 = num64 - 2;
if (num61 < 0)
{
i2 = num66 + 2;
}
WorldGen.PlaceTile(i2, j2, 10, true, false, -1, 7);
int num75 = num66;
if (num61 < 0)
{
num75 = num64;
}
WorldGen.PlaceTile(num75, num52, 15, true, false, -1, 5);
if (num61 < 0)
{
Tile expr_115A = Main.tile[num75, num52 - 1];
expr_115A.frameX += 18;
Tile expr_1177 = Main.tile[num75, num52];
expr_1177.frameX += 18;
}
num75 = num66 - 2;
if (num61 < 0)
{
num75 = num64 + 2;
}
WorldGen.PlaceTile(num75, num52, 14, true, false, -1, 6);
num75 = num66 - 4;
if (num61 < 0)
{
num75 = num64 + 4;
}
WorldGen.PlaceTile(num75, num52, 15, true, false, -1, 5);
if (num61 > 0)
{
Tile expr_11DD = Main.tile[num75, num52 - 1];
expr_11DD.frameX += 18;
Tile expr_11FA = Main.tile[num75, num52];
expr_11FA.frameX += 18;
}
num75 = num66 - 7;
if (num61 < 0)
{
num75 = num64 + 8;
}
int contain;
if (WorldGen.genRand.Next(2) == 0)
{
contain = 832;
}
else
{
contain = 933;
}
WorldGen.AddBuriedChest(num75, num52, contain, false, 12);
}
}
}
if (num53 <= 0)
{
bool flag5 = true;
for (int num76 = num9; num76 <= num10; num76++)
{
for (int num77 = num52 + 1; num77 <= num52 + 4; num77++)
{
if (WorldGen.SolidTile(num76, num77))
{
flag5 = false;
}
}
}
if (flag5)
{
num54 = 0;
}
}
}
num9 = num50;
num10 = num51;
int num78 = (num9 + num10) / 2;
if (WorldGen.genRand.Next(2) == 0)
{
num10 = num78;
}
else
{
num9 = num78;
}
for (int num79 = num9; num79 <= num10; num79++)
{
for (int num80 = j - 3; num80 <= j; num80++)
{
Main.tile[num79, num80].active(false);
bool flag6 = true;
for (int num81 = num79 - 1; num81 <= num79 + 1; num81++)
{
for (int num82 = num80 - 1; num82 <= num80 + 1; num82++)
{
if (!Main.tile[num81, num82].active() && Main.tile[num81, num82].wall == 0)
{
flag6 = false;
}
}
}
if (flag6)
{
Main.tile[num79, num80].wall = 78;
}
}
}
}
return true;
}
public static void GrowTree(int i, int y)
{
int num = y;
while (Main.tile[i, num].type == 20)
{
num++;
}
if ((Main.tile[i - 1, num - 1].liquid != 0 || Main.tile[i - 1, num - 1].liquid != 0 || Main.tile[i + 1, num - 1].liquid != 0) && Main.tile[i, num].type != 60)
{
return;
}
if (Main.tile[i, num].nactive() && !Main.tile[i, num].halfBrick() && Main.tile[i, num].slope() == 0 && (((Main.tile[i, num].type == 2 || Main.tile[i, num].type == 23 || Main.tile[i, num].type == 60 || Main.tile[i, num].type == 109 || Main.tile[i, num].type == 147 || Main.tile[i, num].type == 199 || Main.tile[i, num].type == 70) && Main.tile[i, num - 1].wall == 0) || Main.tile[i, num - 1].wall == 106 || Main.tile[i, num - 1].wall == 107) && ((Main.tile[i - 1, num].active() && (Main.tile[i - 1, num].type == 2 || Main.tile[i - 1, num].type == 23 || Main.tile[i - 1, num].type == 60 || Main.tile[i - 1, num].type == 109 || Main.tile[i - 1, num].type == 147 || Main.tile[i - 1, num].type == 199 || Main.tile[i - 1, num].type == 70)) || (Main.tile[i + 1, num].active() && (Main.tile[i + 1, num].type == 2 || Main.tile[i + 1, num].type == 23 || Main.tile[i + 1, num].type == 60 || Main.tile[i + 1, num].type == 109 || Main.tile[i + 1, num].type == 147 || Main.tile[i + 1, num].type == 199 || Main.tile[i + 1, num].type == 70))))
{
int num2 = 2;
int num3 = 16;
if (Main.tile[i, num].type == 60)
{
num3 += 5;
}
if (WorldGen.EmptyTileCheck(i - num2, i + num2, num - num3, num - 1, 20))
{
bool flag = false;
bool flag2 = false;
int num4 = WorldGen.genRand.Next(5, num3 + 1);
int num5;
for (int j = num - num4; j < num; j++)
{
Main.tile[i, j].frameNumber((byte)WorldGen.genRand.Next(3));
Main.tile[i, j].active(true);
Main.tile[i, j].type = 5;
num5 = WorldGen.genRand.Next(3);
int num6 = WorldGen.genRand.Next(10);
if (j == num - 1 || j == num - num4)
{
num6 = 0;
}
while (((num6 == 5 || num6 == 7) && flag) || ((num6 == 6 || num6 == 7) && flag2))
{
num6 = WorldGen.genRand.Next(10);
}
flag = false;
flag2 = false;
if (num6 == 5 || num6 == 7)
{
flag = true;
}
if (num6 == 6 || num6 == 7)
{
flag2 = true;
}
if (num6 == 1)
{
if (num5 == 0)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 66;
}
if (num5 == 1)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 88;
}
if (num5 == 2)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 110;
}
}
else
{
if (num6 == 2)
{
if (num5 == 0)
{
Main.tile[i, j].frameX = 22;
Main.tile[i, j].frameY = 0;
}
if (num5 == 1)
{
Main.tile[i, j].frameX = 22;
Main.tile[i, j].frameY = 22;
}
if (num5 == 2)
{
Main.tile[i, j].frameX = 22;
Main.tile[i, j].frameY = 44;
}
}
else
{
if (num6 == 3)
{
if (num5 == 0)
{
Main.tile[i, j].frameX = 44;
Main.tile[i, j].frameY = 66;
}
if (num5 == 1)
{
Main.tile[i, j].frameX = 44;
Main.tile[i, j].frameY = 88;
}
if (num5 == 2)
{
Main.tile[i, j].frameX = 44;
Main.tile[i, j].frameY = 110;
}
}
else
{
if (num6 == 4)
{
if (num5 == 0)
{
Main.tile[i, j].frameX = 22;
Main.tile[i, j].frameY = 66;
}
if (num5 == 1)
{
Main.tile[i, j].frameX = 22;
Main.tile[i, j].frameY = 88;
}
if (num5 == 2)
{
Main.tile[i, j].frameX = 22;
Main.tile[i, j].frameY = 110;
}
}
else
{
if (num6 == 5)
{
if (num5 == 0)
{
Main.tile[i, j].frameX = 88;
Main.tile[i, j].frameY = 0;
}
if (num5 == 1)
{
Main.tile[i, j].frameX = 88;
Main.tile[i, j].frameY = 22;
}
if (num5 == 2)
{
Main.tile[i, j].frameX = 88;
Main.tile[i, j].frameY = 44;
}
}
else
{
if (num6 == 6)
{
if (num5 == 0)
{
Main.tile[i, j].frameX = 66;
Main.tile[i, j].frameY = 66;
}
if (num5 == 1)
{
Main.tile[i, j].frameX = 66;
Main.tile[i, j].frameY = 88;
}
if (num5 == 2)
{
Main.tile[i, j].frameX = 66;
Main.tile[i, j].frameY = 110;
}
}
else
{
if (num6 == 7)
{
if (num5 == 0)
{
Main.tile[i, j].frameX = 110;
Main.tile[i, j].frameY = 66;
}
if (num5 == 1)
{
Main.tile[i, j].frameX = 110;
Main.tile[i, j].frameY = 88;
}
if (num5 == 2)
{
Main.tile[i, j].frameX = 110;
Main.tile[i, j].frameY = 110;
}
}
else
{
if (num5 == 0)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 0;
}
if (num5 == 1)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 22;
}
if (num5 == 2)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 44;
}
}
}
}
}
}
}
}
if (num6 == 5 || num6 == 7)
{
Main.tile[i - 1, j].active(true);
Main.tile[i - 1, j].type = 5;
num5 = WorldGen.genRand.Next(3);
if (WorldGen.genRand.Next(3) < 2)
{
if (num5 == 0)
{
Main.tile[i - 1, j].frameX = 44;
Main.tile[i - 1, j].frameY = 198;
}
if (num5 == 1)
{
Main.tile[i - 1, j].frameX = 44;
Main.tile[i - 1, j].frameY = 220;
}
if (num5 == 2)
{
Main.tile[i - 1, j].frameX = 44;
Main.tile[i - 1, j].frameY = 242;
}
}
else
{
if (num5 == 0)
{
Main.tile[i - 1, j].frameX = 66;
Main.tile[i - 1, j].frameY = 0;
}
if (num5 == 1)
{
Main.tile[i - 1, j].frameX = 66;
Main.tile[i - 1, j].frameY = 22;
}
if (num5 == 2)
{
Main.tile[i - 1, j].frameX = 66;
Main.tile[i - 1, j].frameY = 44;
}
}
}
if (num6 == 6 || num6 == 7)
{
Main.tile[i + 1, j].active(true);
Main.tile[i + 1, j].type = 5;
num5 = WorldGen.genRand.Next(3);
if (WorldGen.genRand.Next(3) < 2)
{
if (num5 == 0)
{
Main.tile[i + 1, j].frameX = 66;
Main.tile[i + 1, j].frameY = 198;
}
if (num5 == 1)
{
Main.tile[i + 1, j].frameX = 66;
Main.tile[i + 1, j].frameY = 220;
}
if (num5 == 2)
{
Main.tile[i + 1, j].frameX = 66;
Main.tile[i + 1, j].frameY = 242;
}
}
else
{
if (num5 == 0)
{
Main.tile[i + 1, j].frameX = 88;
Main.tile[i + 1, j].frameY = 66;
}
if (num5 == 1)
{
Main.tile[i + 1, j].frameX = 88;
Main.tile[i + 1, j].frameY = 88;
}
if (num5 == 2)
{
Main.tile[i + 1, j].frameX = 88;
Main.tile[i + 1, j].frameY = 110;
}
}
}
}
int num7 = WorldGen.genRand.Next(3);
bool flag3 = false;
bool flag4 = false;
if (Main.tile[i - 1, num].nactive() && !Main.tile[i - 1, num].halfBrick() && Main.tile[i - 1, num].slope() == 0 && (Main.tile[i - 1, num].type == 2 || Main.tile[i - 1, num].type == 23 || Main.tile[i - 1, num].type == 60 || Main.tile[i - 1, num].type == 109 || Main.tile[i - 1, num].type == 147))
{
flag3 = true;
}
if (Main.tile[i + 1, num].nactive() && !Main.tile[i + 1, num].halfBrick() && Main.tile[i + 1, num].slope() == 0 && (Main.tile[i + 1, num].type == 2 || Main.tile[i + 1, num].type == 23 || Main.tile[i + 1, num].type == 60 || Main.tile[i + 1, num].type == 109 || Main.tile[i + 1, num].type == 147))
{
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, num - 1].active(true);
Main.tile[i + 1, num - 1].type = 5;
num5 = WorldGen.genRand.Next(3);
if (num5 == 0)
{
Main.tile[i + 1, num - 1].frameX = 22;
Main.tile[i + 1, num - 1].frameY = 132;
}
if (num5 == 1)
{
Main.tile[i + 1, num - 1].frameX = 22;
Main.tile[i + 1, num - 1].frameY = 154;
}
if (num5 == 2)
{
Main.tile[i + 1, num - 1].frameX = 22;
Main.tile[i + 1, num - 1].frameY = 176;
}
}
if (num7 == 0 || num7 == 2)
{
Main.tile[i - 1, num - 1].active(true);
Main.tile[i - 1, num - 1].type = 5;
num5 = WorldGen.genRand.Next(3);
if (num5 == 0)
{
Main.tile[i - 1, num - 1].frameX = 44;
Main.tile[i - 1, num - 1].frameY = 132;
}
if (num5 == 1)
{
Main.tile[i - 1, num - 1].frameX = 44;
Main.tile[i - 1, num - 1].frameY = 154;
}
if (num5 == 2)
{
Main.tile[i - 1, num - 1].frameX = 44;
Main.tile[i - 1, num - 1].frameY = 176;
}
}
num5 = WorldGen.genRand.Next(3);
if (num7 == 0)
{
if (num5 == 0)
{
Main.tile[i, num - 1].frameX = 88;
Main.tile[i, num - 1].frameY = 132;
}
if (num5 == 1)
{
Main.tile[i, num - 1].frameX = 88;
Main.tile[i, num - 1].frameY = 154;
}
if (num5 == 2)
{
Main.tile[i, num - 1].frameX = 88;
Main.tile[i, num - 1].frameY = 176;
}
}
else
{
if (num7 == 1)
{
if (num5 == 0)
{
Main.tile[i, num - 1].frameX = 0;
Main.tile[i, num - 1].frameY = 132;
}
if (num5 == 1)
{
Main.tile[i, num - 1].frameX = 0;
Main.tile[i, num - 1].frameY = 154;
}
if (num5 == 2)
{
Main.tile[i, num - 1].frameX = 0;
Main.tile[i, num - 1].frameY = 176;
}
}
else
{
if (num7 == 2)
{
if (num5 == 0)
{
Main.tile[i, num - 1].frameX = 66;
Main.tile[i, num - 1].frameY = 132;
}
if (num5 == 1)
{
Main.tile[i, num - 1].frameX = 66;
Main.tile[i, num - 1].frameY = 154;
}
if (num5 == 2)
{
Main.tile[i, num - 1].frameX = 66;
Main.tile[i, num - 1].frameY = 176;
}
}
}
}
if (WorldGen.genRand.Next(8) != 0)
{
num5 = WorldGen.genRand.Next(3);
if (num5 == 0)
{
Main.tile[i, num - num4].frameX = 22;
Main.tile[i, num - num4].frameY = 198;
}
if (num5 == 1)
{
Main.tile[i, num - num4].frameX = 22;
Main.tile[i, num - num4].frameY = 220;
}
if (num5 == 2)
{
Main.tile[i, num - num4].frameX = 22;
Main.tile[i, num - num4].frameY = 242;
}
}
else
{
num5 = WorldGen.genRand.Next(3);
if (num5 == 0)
{
Main.tile[i, num - num4].frameX = 0;
Main.tile[i, num - num4].frameY = 198;
}
if (num5 == 1)
{
Main.tile[i, num - num4].frameX = 0;
Main.tile[i, num - num4].frameY = 220;
}
if (num5 == 2)
{
Main.tile[i, num - num4].frameX = 0;
Main.tile[i, num - num4].frameY = 242;
}
}
WorldGen.RangeFrame(i - 2, num - num4 - 1, i + 2, num + 1);
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, i, (int)((double)num - (double)num4 * 0.5), num4 + 1);
}
}
}
}
public static void GrowUndergroundTree(int i, int y)
{
if (Main.tile[i, y].type != 60)
{
return;
}
if (Main.tile[i, y].nactive() && !Main.tile[i, y].halfBrick() && Main.tile[i, y].slope() == 0 && Main.tile[i, y].type == 60 && ((Main.tile[i - 1, y].active() && Main.tile[i - 1, y].type == 60) || (Main.tile[i + 1, y].active() && Main.tile[i + 1, y].type == 60)))
{
int num = 1;
int num2 = WorldGen.genRand.Next(5, 15);
int num3 = num2 + 2;
if (Main.tile[i, y].type == 60)
{
num3 += 5;
}
if (WorldGen.EmptyTileCheck(i - num, i + num, y - num3, y - 1, 20))
{
bool flag = false;
bool flag2 = false;
int num4;
for (int j = y - num2; j < y; j++)
{
Main.tile[i, j].frameNumber((byte)WorldGen.genRand.Next(3));
Main.tile[i, j].active(true);
Main.tile[i, j].type = 5;
num4 = WorldGen.genRand.Next(3);
int num5 = WorldGen.genRand.Next(10);
if (j == y - 1 || j == y - num2)
{
num5 = 0;
}
while (((num5 == 5 || num5 == 7) && flag) || ((num5 == 6 || num5 == 7) && flag2))
{
num5 = WorldGen.genRand.Next(10);
}
flag = false;
flag2 = false;
if (num5 == 5 || num5 == 7)
{
flag = true;
}
if (num5 == 6 || num5 == 7)
{
flag2 = true;
}
if (num5 == 1)
{
if (num4 == 0)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 66;
}
if (num4 == 1)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 88;
}
if (num4 == 2)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 110;
}
}
else
{
if (num5 == 2)
{
if (num4 == 0)
{
Main.tile[i, j].frameX = 22;
Main.tile[i, j].frameY = 0;
}
if (num4 == 1)
{
Main.tile[i, j].frameX = 22;
Main.tile[i, j].frameY = 22;
}
if (num4 == 2)
{
Main.tile[i, j].frameX = 22;
Main.tile[i, j].frameY = 44;
}
}
else
{
if (num5 == 3)
{
if (num4 == 0)
{
Main.tile[i, j].frameX = 44;
Main.tile[i, j].frameY = 66;
}
if (num4 == 1)
{
Main.tile[i, j].frameX = 44;
Main.tile[i, j].frameY = 88;
}
if (num4 == 2)
{
Main.tile[i, j].frameX = 44;
Main.tile[i, j].frameY = 110;
}
}
else
{
if (num5 == 4)
{
if (num4 == 0)
{
Main.tile[i, j].frameX = 22;
Main.tile[i, j].frameY = 66;
}
if (num4 == 1)
{
Main.tile[i, j].frameX = 22;
Main.tile[i, j].frameY = 88;
}
if (num4 == 2)
{
Main.tile[i, j].frameX = 22;
Main.tile[i, j].frameY = 110;
}
}
else
{
if (num5 == 5)
{
if (num4 == 0)
{
Main.tile[i, j].frameX = 88;
Main.tile[i, j].frameY = 0;
}
if (num4 == 1)
{
Main.tile[i, j].frameX = 88;
Main.tile[i, j].frameY = 22;
}
if (num4 == 2)
{
Main.tile[i, j].frameX = 88;
Main.tile[i, j].frameY = 44;
}
}
else
{
if (num5 == 6)
{
if (num4 == 0)
{
Main.tile[i, j].frameX = 66;
Main.tile[i, j].frameY = 66;
}
if (num4 == 1)
{
Main.tile[i, j].frameX = 66;
Main.tile[i, j].frameY = 88;
}
if (num4 == 2)
{
Main.tile[i, j].frameX = 66;
Main.tile[i, j].frameY = 110;
}
}
else
{
if (num5 == 7)
{
if (num4 == 0)
{
Main.tile[i, j].frameX = 110;
Main.tile[i, j].frameY = 66;
}
if (num4 == 1)
{
Main.tile[i, j].frameX = 110;
Main.tile[i, j].frameY = 88;
}
if (num4 == 2)
{
Main.tile[i, j].frameX = 110;
Main.tile[i, j].frameY = 110;
}
}
else
{
if (num4 == 0)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 0;
}
if (num4 == 1)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 22;
}
if (num4 == 2)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 44;
}
}
}
}
}
}
}
}
if (num5 == 5 || num5 == 7)
{
Main.tile[i - 1, j].active(true);
Main.tile[i - 1, j].type = 5;
num4 = WorldGen.genRand.Next(3);
if (WorldGen.genRand.Next(3) < 2)
{
if (num4 == 0)
{
Main.tile[i - 1, j].frameX = 44;
Main.tile[i - 1, j].frameY = 198;
}
if (num4 == 1)
{
Main.tile[i - 1, j].frameX = 44;
Main.tile[i - 1, j].frameY = 220;
}
if (num4 == 2)
{
Main.tile[i - 1, j].frameX = 44;
Main.tile[i - 1, j].frameY = 242;
}
}
else
{
if (num4 == 0)
{
Main.tile[i - 1, j].frameX = 66;
Main.tile[i - 1, j].frameY = 0;
}
if (num4 == 1)
{
Main.tile[i - 1, j].frameX = 66;
Main.tile[i - 1, j].frameY = 22;
}
if (num4 == 2)
{
Main.tile[i - 1, j].frameX = 66;
Main.tile[i - 1, j].frameY = 44;
}
}
}
if (num5 == 6 || num5 == 7)
{
Main.tile[i + 1, j].active(true);
Main.tile[i + 1, j].type = 5;
num4 = WorldGen.genRand.Next(3);
if (WorldGen.genRand.Next(3) < 2)
{
if (num4 == 0)
{
Main.tile[i + 1, j].frameX = 66;
Main.tile[i + 1, j].frameY = 198;
}
if (num4 == 1)
{
Main.tile[i + 1, j].frameX = 66;
Main.tile[i + 1, j].frameY = 220;
}
if (num4 == 2)
{
Main.tile[i + 1, j].frameX = 66;
Main.tile[i + 1, j].frameY = 242;
}
}
else
{
if (num4 == 0)
{
Main.tile[i + 1, j].frameX = 88;
Main.tile[i + 1, j].frameY = 66;
}
if (num4 == 1)
{
Main.tile[i + 1, j].frameX = 88;
Main.tile[i + 1, j].frameY = 88;
}
if (num4 == 2)
{
Main.tile[i + 1, j].frameX = 88;
Main.tile[i + 1, j].frameY = 110;
}
}
}
}
int num6 = WorldGen.genRand.Next(3);
bool flag3 = false;
bool flag4 = false;
if (Main.tile[i - 1, y].nactive() && !Main.tile[i - 1, y].halfBrick() && Main.tile[i - 1, y].slope() == 0 && (Main.tile[i - 1, y].type == 2 || Main.tile[i - 1, y].type == 23 || Main.tile[i - 1, y].type == 60 || Main.tile[i - 1, y].type == 109 || Main.tile[i - 1, y].type == 147))
{
flag3 = true;
}
if (Main.tile[i + 1, y].nactive() && !Main.tile[i + 1, y].halfBrick() && Main.tile[i + 1, y].slope() == 0 && (Main.tile[i + 1, y].type == 2 || Main.tile[i + 1, y].type == 23 || Main.tile[i + 1, y].type == 60 || Main.tile[i + 1, y].type == 109 || Main.tile[i + 1, y].type == 147))
{
flag4 = true;
}
if (!flag3)
{
if (num6 == 0)
{
num6 = 2;
}
if (num6 == 1)
{
num6 = 3;
}
}
if (!flag4)
{
if (num6 == 0)
{
num6 = 1;
}
if (num6 == 2)
{
num6 = 3;
}
}
if (flag3 && !flag4)
{
num6 = 2;
}
if (flag4 && !flag3)
{
num6 = 1;
}
if (num6 == 0 || num6 == 1)
{
Main.tile[i + 1, y - 1].active(true);
Main.tile[i + 1, y - 1].type = 5;
num4 = WorldGen.genRand.Next(3);
if (num4 == 0)
{
Main.tile[i + 1, y - 1].frameX = 22;
Main.tile[i + 1, y - 1].frameY = 132;
}
if (num4 == 1)
{
Main.tile[i + 1, y - 1].frameX = 22;
Main.tile[i + 1, y - 1].frameY = 154;
}
if (num4 == 2)
{
Main.tile[i + 1, y - 1].frameX = 22;
Main.tile[i + 1, y - 1].frameY = 176;
}
}
if (num6 == 0 || num6 == 2)
{
Main.tile[i - 1, y - 1].active(true);
Main.tile[i - 1, y - 1].type = 5;
num4 = WorldGen.genRand.Next(3);
if (num4 == 0)
{
Main.tile[i - 1, y - 1].frameX = 44;
Main.tile[i - 1, y - 1].frameY = 132;
}
if (num4 == 1)
{
Main.tile[i - 1, y - 1].frameX = 44;
Main.tile[i - 1, y - 1].frameY = 154;
}
if (num4 == 2)
{
Main.tile[i - 1, y - 1].frameX = 44;
Main.tile[i - 1, y - 1].frameY = 176;
}
}
num4 = WorldGen.genRand.Next(3);
if (num6 == 0)
{
if (num4 == 0)
{
Main.tile[i, y - 1].frameX = 88;
Main.tile[i, y - 1].frameY = 132;
}
if (num4 == 1)
{
Main.tile[i, y - 1].frameX = 88;
Main.tile[i, y - 1].frameY = 154;
}
if (num4 == 2)
{
Main.tile[i, y - 1].frameX = 88;
Main.tile[i, y - 1].frameY = 176;
}
}
else
{
if (num6 == 1)
{
if (num4 == 0)
{
Main.tile[i, y - 1].frameX = 0;
Main.tile[i, y - 1].frameY = 132;
}
if (num4 == 1)
{
Main.tile[i, y - 1].frameX = 0;
Main.tile[i, y - 1].frameY = 154;
}
if (num4 == 2)
{
Main.tile[i, y - 1].frameX = 0;
Main.tile[i, y - 1].frameY = 176;
}
}
else
{
if (num6 == 2)
{
if (num4 == 0)
{
Main.tile[i, y - 1].frameX = 66;
Main.tile[i, y - 1].frameY = 132;
}
if (num4 == 1)
{
Main.tile[i, y - 1].frameX = 66;
Main.tile[i, y - 1].frameY = 154;
}
if (num4 == 2)
{
Main.tile[i, y - 1].frameX = 66;
Main.tile[i, y - 1].frameY = 176;
}
}
}
}
if (WorldGen.genRand.Next(8) != 0)
{
num4 = WorldGen.genRand.Next(3);
if (num4 == 0)
{
Main.tile[i, y - num2].frameX = 22;
Main.tile[i, y - num2].frameY = 198;
}
if (num4 == 1)
{
Main.tile[i, y - num2].frameX = 22;
Main.tile[i, y - num2].frameY = 220;
}
if (num4 == 2)
{
Main.tile[i, y - num2].frameX = 22;
Main.tile[i, y - num2].frameY = 242;
}
}
else
{
num4 = WorldGen.genRand.Next(3);
if (num4 == 0)
{
Main.tile[i, y - num2].frameX = 0;
Main.tile[i, y - num2].frameY = 198;
}
if (num4 == 1)
{
Main.tile[i, y - num2].frameX = 0;
Main.tile[i, y - num2].frameY = 220;
}
if (num4 == 2)
{
Main.tile[i, y - num2].frameX = 0;
Main.tile[i, y - num2].frameY = 242;
}
}
WorldGen.RangeFrame(i - 2, y - num2 - 1, i + 2, y + 1);
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, i, (int)((double)y - (double)num2 * 0.5), num2 + 1);
}
}
}
}
public static void GrowShroom(int i, int y)
{
if (Main.tile[i - 1, y - 1].lava() || Main.tile[i - 1, y - 1].lava() || Main.tile[i + 1, y - 1].lava())
{
return;
}
if (Main.tile[i, y].nactive() && !Main.tile[i, y].halfBrick() && Main.tile[i, y].slope() == 0 && Main.tile[i, y].type == 70 && Main.tile[i, y - 1].wall == 0 && Main.tile[i - 1, y].active() && Main.tile[i - 1, y].type == 70 && Main.tile[i + 1, y].active() && Main.tile[i + 1, y].type == 70 && WorldGen.EmptyTileCheck(i - 2, i + 2, y - 13, y - 1, 71))
{
int num = WorldGen.genRand.Next(4, 11);
int num2;
for (int j = y - num; j < y; j++)
{
Main.tile[i, j].frameNumber((byte)WorldGen.genRand.Next(3));
Main.tile[i, j].active(true);
Main.tile[i, j].type = 72;
num2 = WorldGen.genRand.Next(3);
if (num2 == 0)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 0;
}
if (num2 == 1)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 18;
}
if (num2 == 2)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 36;
}
}
num2 = WorldGen.genRand.Next(3);
if (num2 == 0)
{
Main.tile[i, y - num].frameX = 36;
Main.tile[i, y - num].frameY = 0;
}
if (num2 == 1)
{
Main.tile[i, y - num].frameX = 36;
Main.tile[i, y - num].frameY = 18;
}
if (num2 == 2)
{
Main.tile[i, y - num].frameX = 36;
Main.tile[i, y - num].frameY = 36;
}
WorldGen.RangeFrame(i - 2, y - num - 1, i + 2, y + 1);
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, i, (int)((double)y - (double)num * 0.5), num + 1);
}
}
}
public static void AddTrees()
{
for (int i = 1; i < Main.maxTilesX - 1; i++)
{
int num = 20;
while ((double)num < Main.worldSurface)
{
WorldGen.GrowTree(i, num);
num++;
}
if (WorldGen.genRand.Next(3) == 0)
{
i++;
}
if (WorldGen.genRand.Next(4) == 0)
{
i++;
}
}
}
public static void ExplodeMine(int i, int j)
{
byte arg_11_0 = Main.tile[i, j].type;
WorldGen.KillTile(i, j, false, false, true);
NetMessage.SendTileSquare(-1, i, j, 1);
Projectile.NewProjectile((float)(i * 16 + 8), (float)(j * 16 + 8), 0f, 0f, 164, 250, 10f, Main.myPlayer, 0f, 0f);
}
public static bool EmptyTileCheck(int startX, int endX, int startY, int endY, int ignoreStyle = -1)
{
if (startX < 0)
{
return false;
}
if (endX >= Main.maxTilesX)
{
return false;
}
if (startY < 0)
{
return false;
}
if (endY >= Main.maxTilesY)
{
return false;
}
for (int i = startX; i < endX + 1; i++)
{
for (int j = startY; j < endY + 1; j++)
{
if (Main.tile[i, j].active())
{
if (ignoreStyle == -1)
{
return false;
}
if (ignoreStyle == 11 && Main.tile[i, j].type != 11)
{
return false;
}
if (ignoreStyle == 20 && Main.tile[i, j].type != 20 && Main.tile[i, j].type != 3 && Main.tile[i, j].type != 62 && Main.tile[i, j].type != 24 && Main.tile[i, j].type != 61 && Main.tile[i, j].type != 32 && Main.tile[i, j].type != 69 && Main.tile[i, j].type != 71 && Main.tile[i, j].type != 73 && Main.tile[i, j].type != 74 && Main.tile[i, j].type != 110 && Main.tile[i, j].type != 113 && Main.tile[i, j].type != 82 && Main.tile[i, j].type != 83 && Main.tile[i, j].type != 84)
{
return false;
}
if (ignoreStyle == 71 && Main.tile[i, j].type != 71)
{
return false;
}
}
}
}
return true;
}
public static void smCallBack(object threadContext)
{
if (Main.hardMode)
{
return;
}
WorldGen.hardLock = true;
Main.hardMode = true;
if (WorldGen.genRand == null)
{
WorldGen.genRand = new Random((int)DateTime.Now.Ticks);
}
float num = (float)WorldGen.genRand.Next(300, 400) * 0.001f;
float num2 = (float)WorldGen.genRand.Next(200, 300) * 0.001f;
int num3 = (int)((float)Main.maxTilesX * num);
int num4 = (int)((float)Main.maxTilesX * (1f - num));
int num5 = 1;
if (WorldGen.genRand.Next(2) == 0)
{
num4 = (int)((float)Main.maxTilesX * num);
num3 = (int)((float)Main.maxTilesX * (1f - num));
num5 = -1;
}
int num6 = 1;
if (WorldGen.dungeonX < Main.maxTilesX / 2)
{
num6 = -1;
}
if (num6 < 0)
{
if (num4 < num3)
{
num4 = (int)((float)Main.maxTilesX * num2);
}
else
{
num3 = (int)((float)Main.maxTilesX * num2);
}
}
else
{
if (num4 > num3)
{
num4 = (int)((float)Main.maxTilesX * (1f - num2));
}
else
{
num3 = (int)((float)Main.maxTilesX * (1f - num2));
}
}
WorldGen.GERunner(num3, 0, (float)(3 * num5), 5f, true);
WorldGen.GERunner(num4, 0, (float)(3 * -(float)num5), 5f, false);
if (Main.netMode == 0)
{
Main.NewText(Lang.misc[15], 50, 255, 130, false);
}
else
{
if (Main.netMode == 2)
{
NetMessage.SendData(25, -1, -1, Lang.misc[15], 255, 50f, 255f, 130f, 0);
}
}
if (Main.netMode == 2)
{
Netplay.ResetSections();
}
WorldGen.hardLock = false;
}
public static void StartHardmode()
{
if (Main.netMode == 1)
{
return;
}
ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.smCallBack), 1);
}
public static bool PlaceDoor(int i, int j, int type, int style = 0)
{
int num = 54 * style;
bool result;
try
{
if (Main.tile[i, j - 2].nactive() && Main.tileSolid[(int)Main.tile[i, j - 2].type] && WorldGen.SolidTile(i, j + 2))
{
Main.tile[i, j - 1].active(true);
Main.tile[i, j - 1].type = 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 = 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 = 10;
Main.tile[i, j + 1].frameY = (short)(num + 36);
Main.tile[i, j + 1].frameX = (short)(WorldGen.genRand.Next(3) * 18);
result = true;
}
else
{
result = false;
}
}
catch
{
result = false;
}
return result;
}
public static bool CloseDoor(int i, int j, bool forced = false)
{
int num = 0;
int num2 = i;
if (Main.tile[i, j] == null)
{
Main.tile[i, j] = new Tile();
}
int frameX = (int)Main.tile[i, j].frameX;
int k = (int)Main.tile[i, j].frameY;
int num3 = 0;
while (k >= 54)
{
k -= 54;
num3++;
}
int num4 = j - k / 18;
if (frameX == 0)
{
num2 = i;
num = 1;
}
else
{
if (frameX == 18)
{
num2 = i - 1;
num = 1;
}
else
{
if (frameX == 36)
{
num2 = i + 1;
num = -1;
}
else
{
if (frameX == 54)
{
num2 = i;
num = -1;
}
}
}
}
int num5 = num2;
if (num == -1)
{
num5 = num2 - 1;
}
if (!forced)
{
for (int l = num4; l < num4 + 3; l++)
{
if (!Collision.EmptyTile(num2, l, true))
{
return false;
}
}
}
for (int m = num5; m < num5 + 2; m++)
{
for (int n = num4; n < num4 + 3; n++)
{
if (m == num2)
{
if (Main.tile[m, n] == null)
{
Main.tile[m, n] = new Tile();
}
Main.tile[m, n].type = 10;
Main.tile[m, n].frameX = (short)(WorldGen.genRand.Next(3) * 18);
}
else
{
if (Main.tile[m, n] == null)
{
Main.tile[m, n] = new Tile();
}
Main.tile[m, n].active(false);
}
}
}
if (Main.netMode != 1)
{
int num6 = num2;
for (int num7 = num4; num7 <= num4 + 2; num7++)
{
if (WorldGen.numNoWire < WorldGen.maxWire - 1)
{
WorldGen.noWireX[WorldGen.numNoWire] = num6;
WorldGen.noWireY[WorldGen.numNoWire] = num7;
WorldGen.numNoWire++;
}
}
}
for (int num8 = num2 - 1; num8 <= num2 + 1; num8++)
{
for (int num9 = num4 - 1; num9 <= num4 + 2; num9++)
{
WorldGen.TileFrame(num8, num9, false, false);
}
}
Main.PlaySound(9, i * 16, j * 16, 1);
return true;
}
public static bool AddLifeCrystal(int i, int j)
{
int k = j;
while (k < Main.maxTilesY)
{
if (Main.tile[i, k].active() && Main.tileSolid[(int)Main.tile[i, k].type])
{
int num = k - 1;
if (Main.tile[i, num - 1].lava() || Main.tile[i - 1, num - 1].lava())
{
return false;
}
if (!WorldGen.EmptyTileCheck(i - 1, i, num - 1, num, -1))
{
return false;
}
Main.tile[i - 1, num - 1].active(true);
Main.tile[i - 1, num - 1].type = 12;
Main.tile[i - 1, num - 1].frameX = 0;
Main.tile[i - 1, num - 1].frameY = 0;
Main.tile[i, num - 1].active(true);
Main.tile[i, num - 1].type = 12;
Main.tile[i, num - 1].frameX = 18;
Main.tile[i, num - 1].frameY = 0;
Main.tile[i - 1, num].active(true);
Main.tile[i - 1, num].type = 12;
Main.tile[i - 1, num].frameX = 0;
Main.tile[i - 1, num].frameY = 18;
Main.tile[i, num].active(true);
Main.tile[i, num].type = 12;
Main.tile[i, num].frameX = 18;
Main.tile[i, num].frameY = 18;
return true;
}
else
{
k++;
}
}
return false;
}
public static void AddShadowOrb(int x, int y)
{
if (x < 10 || x > Main.maxTilesX - 10)
{
return;
}
if (y < 10 || y > Main.maxTilesY - 10)
{
return;
}
for (int i = x - 1; i < x + 1; i++)
{
for (int j = y - 1; j < y + 1; j++)
{
if (Main.tile[i, j].active() && Main.tile[i, j].type == 31)
{
return;
}
}
}
short num = 0;
if (WorldGen.crimson)
{
num += 36;
}
Main.tile[x - 1, y - 1].active(true);
Main.tile[x - 1, y - 1].type = 31;
Main.tile[x - 1, y - 1].frameX = num;
Main.tile[x - 1, y - 1].frameY = 0;
Main.tile[x, y - 1].active(true);
Main.tile[x, y - 1].type = 31;
Main.tile[x, y - 1].frameX = (short)(18 + num);
Main.tile[x, y - 1].frameY = 0;
Main.tile[x - 1, y].active(true);
Main.tile[x - 1, y].type = 31;
Main.tile[x - 1, y].frameX = num;
Main.tile[x - 1, y].frameY = 18;
Main.tile[x, y].active(true);
Main.tile[x, y].type = 31;
Main.tile[x, y].frameX = (short)(18 + num);
Main.tile[x, y].frameY = 18;
}
public static void AddHellHouses()
{
int num = (int)((double)Main.maxTilesX * 0.25);
for (int i = num; i < Main.maxTilesX - num; i++)
{
int num2 = Main.maxTilesY - 40;
while (Main.tile[i, num2].active() || Main.tile[i, num2].liquid > 0)
{
num2--;
}
if (Main.tile[i, num2 + 1].active())
{
byte b = (byte)WorldGen.genRand.Next(75, 77);
byte wallType = 13;
if (WorldGen.genRand.Next(5) > 0)
{
b = 75;
}
if (b == 75)
{
wallType = 14;
}
WorldGen.HellFort(i, num2, b, wallType);
i += WorldGen.genRand.Next(30, 130);
if (WorldGen.genRand.Next(10) == 0)
{
i += WorldGen.genRand.Next(0, 200);
}
}
}
float num3 = (float)(Main.maxTilesX / 4200);
int num4 = 0;
while ((float)num4 < 200f * num3)
{
int num5 = 0;
bool flag = false;
while (!flag)
{
num5++;
int num6 = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.2), (int)((double)Main.maxTilesX * 0.8));
int num7 = WorldGen.genRand.Next(Main.maxTilesY - 300, Main.maxTilesY - 20);
if (Main.tile[num6, num7].active() && (Main.tile[num6, num7].type == 75 || Main.tile[num6, num7].type == 76))
{
int num8 = 0;
if (Main.tile[num6 - 1, num7].wall > 0)
{
num8 = -1;
}
else
{
if (Main.tile[num6 + 1, num7].wall > 0)
{
num8 = 1;
}
}
if (!Main.tile[num6 + num8, num7].active() && !Main.tile[num6 + num8, num7 + 1].active())
{
bool flag2 = false;
for (int j = num6 - 8; j < num6 + 8; j++)
{
for (int k = num7 - 8; k < num7 + 8; k++)
{
if (Main.tile[j, k].active() && Main.tile[j, k].type == 4)
{
flag2 = true;
break;
}
}
}
if (!flag2)
{
WorldGen.PlaceTile(num6 + num8, num7, 4, true, true, -1, 7);
flag = true;
}
}
}
if (num5 > 1000)
{
flag = true;
}
}
num4++;
}
float num9 = 4200000f / (float)Main.maxTilesX;
int num10 = 0;
while ((float)num10 < num9)
{
int num11 = WorldGen.genRand.Next(num, Main.maxTilesX - num);
int num12 = WorldGen.genRand.Next(Main.maxTilesY - 250, Main.maxTilesY - 20);
while ((Main.tile[num11, num12].wall != 13 && Main.tile[num11, num12].wall != 14) || Main.tile[num11, num12].active())
{
num11 = WorldGen.genRand.Next(num, Main.maxTilesX - num);
num12 = WorldGen.genRand.Next(Main.maxTilesY - 250, Main.maxTilesY - 20);
}
if ((Main.tile[num11, num12].wall == 13 || Main.tile[num11, num12].wall == 14) && !Main.tile[num11, num12].active())
{
while (!WorldGen.SolidTile(num11, num12) && num12 < Main.maxTilesY - 20)
{
num12++;
}
num12--;
int num13 = num11;
int num14 = num11;
while (!Main.tile[num13, num12].active() && WorldGen.SolidTile(num13, num12 + 1))
{
num13--;
}
num13++;
while (!Main.tile[num14, num12].active() && WorldGen.SolidTile(num14, num12 + 1))
{
num14++;
}
num14--;
int num15 = num14 - num13;
int num16 = (num14 + num13) / 2;
if (!Main.tile[num16, num12].active() && (Main.tile[num16, num12].wall == 13 || Main.tile[num16, num12].wall == 14) && WorldGen.SolidTile(num16, num12 + 1))
{
int style = 16;
int style2 = 13;
int style3 = 14;
int style4 = 49;
int style5 = 4;
int style6 = 8;
int num17 = WorldGen.genRand.Next(6);
int num18 = 0;
int num19 = 0;
if (num17 == 0)
{
num18 = 5;
num19 = 4;
}
if (num17 == 1)
{
num18 = 4;
num19 = 3;
}
if (num17 == 2)
{
num18 = 3;
num19 = 5;
}
if (num17 == 3)
{
num18 = 4;
num19 = 6;
}
if (num17 == 4)
{
num18 = 3;
num19 = 3;
}
if (num17 == 5)
{
num18 = 5;
num19 = 3;
}
for (int l = num16 - num18; l <= num16 + num18; l++)
{
for (int m = num12 - num19; m <= num12; m++)
{
if (Main.tile[l, m].active())
{
num17 = -1;
break;
}
}
}
if ((double)num15 < (double)num18 * 1.75)
{
num17 = -1;
}
if (num17 == 0)
{
WorldGen.PlaceTile(num16, num12, 14, true, false, -1, style2);
if (Main.tile[num16, num12].active())
{
if (!Main.tile[num16 - 2, num12].active())
{
WorldGen.PlaceTile(num16 - 2, num12, 15, true, false, -1, style);
if (Main.tile[num16 - 2, num12].active())
{
Tile expr_5F7 = Main.tile[num16 - 2, num12];
expr_5F7.frameX += 18;
Tile expr_618 = Main.tile[num16 - 2, num12 - 1];
expr_618.frameX += 18;
}
}
if (!Main.tile[num16 + 2, num12].active())
{
WorldGen.PlaceTile(num16 + 2, num12, 15, true, false, -1, style);
}
}
}
else
{
if (num17 == 1)
{
WorldGen.PlaceTile(num16, num12, 18, true, false, -1, style3);
if (Main.tile[num16, num12].active())
{
if (WorldGen.genRand.Next(2) == 0)
{
if (!Main.tile[num16 - 1, num12].active())
{
WorldGen.PlaceTile(num16 - 1, num12, 15, true, false, -1, style);
if (Main.tile[num16 - 1, num12].active())
{
Tile expr_6F1 = Main.tile[num16 - 1, num12];
expr_6F1.frameX += 18;
Tile expr_712 = Main.tile[num16 - 1, num12 - 1];
expr_712.frameX += 18;
}
}
}
else
{
if (!Main.tile[num16 + 2, num12].active())
{
WorldGen.PlaceTile(num16 + 2, num12, 15, true, false, -1, style);
}
}
}
}
else
{
if (num17 == 2)
{
WorldGen.PlaceTile(num16, num12, 105, true, false, -1, style4);
}
else
{
if (num17 == 3)
{
WorldGen.PlaceTile(num16, num12, 101, true, false, -1, style5);
}
else
{
if (num17 == 4)
{
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.PlaceTile(num16, num12, 15, true, false, -1, style);
Tile expr_7BF = Main.tile[num16, num12];
expr_7BF.frameX += 18;
Tile expr_7DE = Main.tile[num16, num12 - 1];
expr_7DE.frameX += 18;
}
else
{
WorldGen.PlaceTile(num16, num12, 15, true, false, -1, style);
}
}
else
{
if (num17 == 5)
{
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.Place4x2(num16, num12, 79, 1, style6);
}
else
{
WorldGen.Place4x2(num16, num12, 79, -1, style6);
}
}
}
}
}
}
}
}
}
num10++;
}
num9 = 420000f / (float)Main.maxTilesX;
int num20 = 0;
while ((float)num20 < num9)
{
int num21 = WorldGen.genRand.Next(num, Main.maxTilesX - num);
int num22 = WorldGen.genRand.Next(Main.maxTilesY - 250, Main.maxTilesY - 20);
while ((Main.tile[num21, num22].wall != 13 && Main.tile[num21, num22].wall != 14) || Main.tile[num21, num22].active())
{
num21 = WorldGen.genRand.Next(num, Main.maxTilesX - num);
num22 = WorldGen.genRand.Next(Main.maxTilesY - 250, Main.maxTilesY - 20);
}
int num23;
int num24;
int num25;
int num26;
for (int n = 0; n < 2; n++)
{
num23 = num21;
num24 = num21;
while (!Main.tile[num23, num22].active() && (Main.tile[num23, num22].wall == 13 || Main.tile[num23, num22].wall == 14))
{
num23--;
}
num23++;
while (!Main.tile[num24, num22].active() && (Main.tile[num24, num22].wall == 13 || Main.tile[num24, num22].wall == 14))
{
num24++;
}
num24--;
num21 = (num23 + num24) / 2;
num25 = num22;
num26 = num22;
while (!Main.tile[num21, num25].active() && (Main.tile[num21, num25].wall == 13 || Main.tile[num21, num25].wall == 14))
{
num25--;
}
num25++;
while (!Main.tile[num21, num26].active() && (Main.tile[num21, num26].wall == 13 || Main.tile[num21, num26].wall == 14))
{
num26++;
}
num26--;
num22 = (num25 + num26) / 2;
}
num23 = num21;
num24 = num21;
while (!Main.tile[num23, num22].active() && !Main.tile[num23, num22 - 1].active() && !Main.tile[num23, num22 + 1].active())
{
num23--;
}
num23++;
while (!Main.tile[num24, num22].active() && !Main.tile[num24, num22 - 1].active() && !Main.tile[num24, num22 + 1].active())
{
num24++;
}
num24--;
num25 = num22;
num26 = num22;
while (!Main.tile[num21, num25].active() && !Main.tile[num21 - 1, num25].active() && !Main.tile[num21 + 1, num25].active())
{
num25--;
}
num25++;
while (!Main.tile[num21, num26].active() && !Main.tile[num21 - 1, num26].active() && !Main.tile[num21 + 1, num26].active())
{
num26++;
}
num26--;
num21 = (num23 + num24) / 2;
num22 = (num25 + num26) / 2;
int num27 = num24 - num23;
int num28 = num26 - num25;
if (num27 > 7 && num28 > 5)
{
int num29 = 0;
if (WorldGen.nearPicture2(num21, num22))
{
num29 = -1;
}
if (num29 == 0)
{
Vector2 vector = WorldGen.randHellPicture();
int type = (int)vector.X;
int style7 = (int)vector.Y;
if (!WorldGen.nearPicture(num21, num22))
{
WorldGen.PlaceTile(num21, num22, type, true, false, -1, style7);
}
}
}
num20++;
}
int[] array = new int[]
{
WorldGen.genRand.Next(16, 22),
WorldGen.genRand.Next(16, 22),
WorldGen.genRand.Next(16, 22)
};
while (array[1] == array[0])
{
array[1] = WorldGen.genRand.Next(16, 22);
}
while (array[2] == array[0] || array[2] == array[1])
{
array[2] = WorldGen.genRand.Next(16, 22);
}
num9 = 420000f / (float)Main.maxTilesX;
int num30 = 0;
while ((float)num30 < num9)
{
int num31 = WorldGen.genRand.Next(num, Main.maxTilesX - num);
int num32 = WorldGen.genRand.Next(Main.maxTilesY - 250, Main.maxTilesY - 20);
while ((Main.tile[num31, num32].wall != 13 && Main.tile[num31, num32].wall != 14) || Main.tile[num31, num32].active())
{
num31 = WorldGen.genRand.Next(num, Main.maxTilesX - num);
num32 = WorldGen.genRand.Next(Main.maxTilesY - 250, Main.maxTilesY - 20);
}
while (!WorldGen.SolidTile(num31, num32) && num32 > 10)
{
num32--;
}
num32++;
if ((Main.tile[num31, num32].wall == 13 || Main.tile[num31, num32].wall == 14) && !Main.tile[num31, num32].active() && !Main.tile[num31, num32 + 1].active() && !Main.tile[num31, num32 + 2].active() && !Main.tile[num31, num32 + 3].active())
{
bool flag3 = true;
for (int num33 = num31 - 1; num33 <= num31 + 1; num33++)
{
for (int num34 = num32; num34 <= num32 + 3; num34++)
{
if (Main.tile[num33, num34].active() && (Main.tile[num33, num34].type == 10 || Main.tile[num33, num34].type == 11 || Main.tile[num33, num34].type == 91))
{
flag3 = false;
}
}
}
if (flag3)
{
int style8 = array[WorldGen.genRand.Next(3)];
WorldGen.PlaceTile(num31, num32, 91, true, false, -1, style8);
}
}
num30++;
}
}
public static void HellFort(int i, int j, byte tileType = 75, byte wallType = 14)
{
int[] array = new int[5];
int[] array2 = new int[5];
int[] array3 = new int[10];
int[] array4 = new int[10];
int num = 8;
int num2 = 20;
array[2] = i - WorldGen.genRand.Next(num / 2, num2 / 2);
array2[2] = i + WorldGen.genRand.Next(num / 2, num2 / 2);
array[3] = array2[2];
array2[3] = array[3] + WorldGen.genRand.Next(num, num2);
array[4] = array2[3];
array2[4] = array[4] + WorldGen.genRand.Next(num, num2);
array2[1] = array[2];
array[1] = array2[1] - WorldGen.genRand.Next(num, num2);
array2[0] = array[1];
array[0] = array2[0] - WorldGen.genRand.Next(num, num2);
num = 6;
num2 = 12;
array3[3] = j - WorldGen.genRand.Next(num, num2);
array4[3] = j;
for (int k = 4; k < 10; k++)
{
array3[k] = array4[k - 1];
array4[k] = array3[k] + WorldGen.genRand.Next(num, num2);
}
for (int l = 2; l >= 0; l--)
{
array4[l] = array3[l + 1];
array3[l] = array4[l] - WorldGen.genRand.Next(num, num2);
}
bool flag = false;
bool flag2 = false;
bool[,] array5 = new bool[5, 10];
int num3 = 3;
int num4 = 3;
for (int m = 0; m < 2; m++)
{
if (WorldGen.genRand.Next(3) == 0)
{
flag = true;
int num5 = WorldGen.genRand.Next(10);
if (num5 < num3)
{
num3 = num5;
}
if (num5 > num4)
{
num4 = num5;
}
int num6 = 1;
if (WorldGen.genRand.Next(2) == 0)
{
array5[0, num5] = true;
array5[1, num5] = true;
num6 = 0;
}
else
{
array5[1, num5] = true;
}
int num7 = WorldGen.genRand.Next(2);
if (num7 == 0)
{
num7 = -1;
}
int num8 = WorldGen.genRand.Next(10);
while (num8 > 0 && num5 >= 0 && num5 < 10)
{
array5[num6, num5] = true;
num5 += num7;
}
}
if (WorldGen.genRand.Next(3) == 0)
{
flag2 = true;
int num9 = WorldGen.genRand.Next(10);
if (num9 < num3)
{
num3 = num9;
}
if (num9 > num4)
{
num4 = num9;
}
int num10 = 3;
if (WorldGen.genRand.Next(2) == 0)
{
array5[3, num9] = true;
array5[4, num9] = true;
num10 = 4;
}
else
{
array5[3, num9] = true;
}
int num11 = WorldGen.genRand.Next(2);
if (num11 == 0)
{
num11 = -1;
}
int num12 = WorldGen.genRand.Next(10);
while (num12 > 0 && num9 >= 0 && num9 < 10)
{
array5[num10, num9] = true;
num9 += num11;
}
}
}
for (int n = 0; n < 5; n++)
{
int num13 = array[n];
bool flag3 = false;
for (int num14 = Main.maxTilesY - 200; num14 < Main.maxTilesY; num14++)
{
if (Main.tile[num13, num14].wall > 0)
{
flag3 = true;
}
}
if (flag3)
{
for (int num15 = 0; num15 < 10; num15++)
{
array5[n, num15] = false;
}
}
}
int num16 = WorldGen.genRand.Next(10);
if (num16 < num3)
{
num3 = num16;
}
num16 = WorldGen.genRand.Next(10);
if (num16 > num4)
{
num4 = num16;
}
if (!flag && !flag2)
{
while (num4 - num3 < 5)
{
num16 = WorldGen.genRand.Next(10);
if (num16 < num3)
{
num3 = num16;
}
num16 = WorldGen.genRand.Next(10);
if (num16 > num4)
{
num4 = num16;
}
}
}
for (int num17 = num3; num17 <= num4; num17++)
{
array5[2, num17] = true;
}
for (int num18 = 0; num18 < 5; num18++)
{
for (int num19 = 0; num19 < 10; num19++)
{
if (array5[num18, num19] && (array3[num19] < Main.maxTilesY - 200 || array4[num19] > Main.maxTilesY - 20))
{
array5[num18, num19] = false;
}
}
}
for (int num20 = 0; num20 < 5; num20++)
{
for (int num21 = 0; num21 < 10; num21++)
{
if (array5[num20, num21])
{
for (int num22 = array[num20]; num22 <= array2[num20]; num22++)
{
for (int num23 = array3[num21]; num23 <= array4[num21]; num23++)
{
Main.tile[num22, num23].liquid = 0;
if (num22 == array[num20] || num22 == array2[num20] || num23 == array3[num21] || num23 == array4[num21])
{
Main.tile[num22, num23].active(true);
Main.tile[num22, num23].type = tileType;
Main.tile[num22, num23].halfBrick(false);
Main.tile[num22, num23].slope(0);
}
else
{
Main.tile[num22, num23].wall = wallType;
Main.tile[num22, num23].active(false);
}
}
}
}
}
}
int style = 19;
int style2 = 13;
for (int num24 = 0; num24 < 4; num24++)
{
bool[] array6 = new bool[10];
bool flag4 = false;
for (int num25 = 0; num25 < 10; num25++)
{
if (array5[num24, num25] && array5[num24 + 1, num25])
{
array6[num25] = true;
flag4 = true;
}
}
while (flag4)
{
int num26 = WorldGen.genRand.Next(10);
if (array6[num26])
{
flag4 = false;
Main.tile[array2[num24], array4[num26] - 1].active(false);
Main.tile[array2[num24], array4[num26] - 2].active(false);
Main.tile[array2[num24], array4[num26] - 3].active(false);
Main.tile[array2[num24], array4[num26] - 1].wall = wallType;
Main.tile[array2[num24], array4[num26] - 2].wall = wallType;
Main.tile[array2[num24], array4[num26] - 3].wall = wallType;
WorldGen.PlaceTile(array2[num24], array4[num26] - 1, 10, true, false, -1, style);
}
}
}
for (int num27 = 0; num27 < 5; num27++)
{
for (int num28 = 0; num28 < 10; num28++)
{
if (array5[num27, num28])
{
if (num28 > 0 && array5[num27, num28 - 1])
{
int num29 = WorldGen.genRand.Next(array[num27] + 2, array2[num27] - 1);
int num30 = WorldGen.genRand.Next(array[num27] + 2, array2[num27] - 1);
while (num30 - num29 < 2 || num30 - num29 > 5)
{
num29 = WorldGen.genRand.Next(array[num27] + 2, array2[num27] - 1);
num30 = WorldGen.genRand.Next(array[num27] + 2, array2[num27] - 1);
}
for (int num31 = num29; num31 <= num30; num31++)
{
Main.tile[num31, array3[num28]].active(false);
WorldGen.PlaceTile(num31, array3[num28], 19, true, true, -1, style2);
Main.tile[num31, array3[num28]].wall = wallType;
}
}
if (num27 < 4 && array5[num27 + 1, num28] && WorldGen.genRand.Next(3) == 0)
{
Main.tile[array2[num27], array4[num28] - 1].active(false);
Main.tile[array2[num27], array4[num28] - 2].active(false);
Main.tile[array2[num27], array4[num28] - 3].active(false);
Main.tile[array2[num27], array4[num28] - 1].wall = wallType;
Main.tile[array2[num27], array4[num28] - 2].wall = wallType;
Main.tile[array2[num27], array4[num28] - 3].wall = wallType;
WorldGen.PlaceTile(array2[num27], array4[num28] - 1, 10, true, false, -1, style);
}
}
}
}
bool flag5 = false;
for (int num32 = 0; num32 < 5; num32++)
{
bool[] array7 = new bool[10];
for (int num33 = 0; num33 < 10; num33++)
{
if (array5[num32, num33])
{
flag5 = true;
array7[num33] = true;
}
}
if (flag5)
{
bool flag6 = false;
for (int num34 = 0; num34 < 10; num34++)
{
if (array7[num34])
{
if (!Main.tile[array[num32] - 1, array4[num34] - 1].active() && !Main.tile[array[num32] - 1, array4[num34] - 2].active() && !Main.tile[array[num32] - 1, array4[num34] - 3].active() && Main.tile[array[num32] - 1, array4[num34] - 1].liquid == 0 && Main.tile[array[num32] - 1, array4[num34] - 2].liquid == 0 && Main.tile[array[num32] - 1, array4[num34] - 3].liquid == 0)
{
flag6 = true;
}
else
{
array7[num34] = false;
}
}
}
while (flag6)
{
int num35 = WorldGen.genRand.Next(10);
if (array7[num35])
{
flag6 = false;
Main.tile[array[num32], array4[num35] - 1].active(false);
Main.tile[array[num32], array4[num35] - 2].active(false);
Main.tile[array[num32], array4[num35] - 3].active(false);
WorldGen.PlaceTile(array[num32], array4[num35] - 1, 10, true, false, -1, style);
}
}
break;
}
}
bool flag7 = false;
for (int num36 = 4; num36 >= 0; num36--)
{
bool[] array8 = new bool[10];
for (int num37 = 0; num37 < 10; num37++)
{
if (array5[num36, num37])
{
flag7 = true;
array8[num37] = true;
}
}
if (flag7)
{
bool flag8 = false;
for (int num38 = 0; num38 < 10; num38++)
{
if (array8[num38])
{
if (!Main.tile[array2[num36] + 1, array4[num38] - 1].active() && !Main.tile[array2[num36] + 1, array4[num38] - 2].active() && !Main.tile[array2[num36] + 1, array4[num38] - 3].active() && Main.tile[array2[num36] + 1, array4[num38] - 1].liquid == 0 && Main.tile[array2[num36] + 1, array4[num38] - 2].liquid == 0 && Main.tile[array2[num36] + 1, array4[num38] - 3].liquid == 0)
{
flag8 = true;
}
else
{
array8[num38] = false;
}
}
}
while (flag8)
{
int num39 = WorldGen.genRand.Next(10);
if (array8[num39])
{
flag8 = false;
Main.tile[array2[num36], array4[num39] - 1].active(false);
Main.tile[array2[num36], array4[num39] - 2].active(false);
Main.tile[array2[num36], array4[num39] - 3].active(false);
WorldGen.PlaceTile(array2[num36], array4[num39] - 1, 10, true, false, -1, style);
}
}
break;
}
}
bool flag9 = false;
for (int num40 = 0; num40 < 10; num40++)
{
bool[] array9 = new bool[10];
for (int num41 = 0; num41 < 5; num41++)
{
if (array5[num41, num40])
{
flag9 = true;
array9[num41] = true;
}
}
if (flag9)
{
bool flag10 = true;
while (flag10)
{
int num42 = WorldGen.genRand.Next(5);
if (array9[num42])
{
int num43 = WorldGen.genRand.Next(array[num42] + 2, array2[num42] - 1);
int num44 = WorldGen.genRand.Next(array[num42] + 2, array2[num42] - 1);
while (num44 - num43 < 2 || num44 - num43 > 5)
{
num43 = WorldGen.genRand.Next(array[num42] + 2, array2[num42] - 1);
num44 = WorldGen.genRand.Next(array[num42] + 2, array2[num42] - 1);
}
for (int num45 = num43; num45 <= num44; num45++)
{
if (Main.tile[num45, array3[num40] - 1].active() || Main.tile[num45, array3[num40] - 1].liquid > 0)
{
flag10 = false;
}
}
if (flag10)
{
for (int num46 = num43; num46 <= num44; num46++)
{
Main.tile[num46, array3[num40]].active(false);
WorldGen.PlaceTile(num46, array3[num40], 19, true, true, -1, style2);
}
}
flag10 = false;
}
}
return;
}
}
}
public static void HellHouse(int i, int j, byte type = 76, byte wall = 13)
{
int num = WorldGen.genRand.Next(8, 20);
int num2 = WorldGen.genRand.Next(1, 3);
int num3 = WorldGen.genRand.Next(4, 13);
int num4 = j;
for (int k = 0; k < num2; k++)
{
int num5 = WorldGen.genRand.Next(5, 9);
WorldGen.HellRoom(i, num4, num, num5, type, wall);
num4 -= num5;
}
num4 = j;
for (int l = 0; l < num3; l++)
{
int num6 = WorldGen.genRand.Next(5, 9);
num4 += num6;
WorldGen.HellRoom(i, num4, num, num6, type, wall);
}
for (int m = i - num / 2; m <= i + num / 2; m++)
{
num4 = j;
while (num4 < Main.maxTilesY && ((Main.tile[m, num4].active() && (Main.tile[m, num4].type == 76 || Main.tile[m, num4].type == 75)) || Main.tile[i, num4].wall == 13 || Main.tile[i, num4].wall == 14))
{
num4++;
}
int num7 = 6 + WorldGen.genRand.Next(3);
while (num4 < Main.maxTilesY && !Main.tile[m, num4].active())
{
num7--;
Main.tile[m, num4].active(true);
Main.tile[m, num4].type = 57;
num4++;
if (num7 <= 0)
{
break;
}
}
}
int num8 = 0;
int num9 = 0;
num4 = j;
while (num4 < Main.maxTilesY && ((Main.tile[i, num4].active() && (Main.tile[i, num4].type == 76 || Main.tile[i, num4].type == 75)) || Main.tile[i, num4].wall == 13 || Main.tile[i, num4].wall == 14))
{
num4++;
}
num4--;
num9 = num4;
while ((Main.tile[i, num4].active() && (Main.tile[i, num4].type == 76 || Main.tile[i, num4].type == 75)) || Main.tile[i, num4].wall == 13 || Main.tile[i, num4].wall == 14)
{
num4--;
if (Main.tile[i, num4].active() && (Main.tile[i, num4].type == 76 || Main.tile[i, num4].type == 75))
{
int num10 = WorldGen.genRand.Next(i - num / 2 + 1, i + num / 2 - 1);
int num11 = WorldGen.genRand.Next(i - num / 2 + 1, i + num / 2 - 1);
if (num10 > num11)
{
int num12 = num10;
num10 = num11;
num11 = num12;
}
if (num10 == num11)
{
if (num10 < i)
{
num11++;
}
else
{
num10--;
}
}
for (int n = num10; n <= num11; n++)
{
if (Main.tile[n, num4 - 1].wall == 13)
{
Main.tile[n, num4].wall = 13;
}
if (Main.tile[n, num4 - 1].wall == 14)
{
Main.tile[n, num4].wall = 14;
}
Main.tile[n, num4].type = 19;
Main.tile[n, num4].active(true);
}
num4--;
}
}
num8 = num4;
float num13 = (float)((num9 - num8) * num);
float num14 = num13 * 0.02f;
int num15 = 0;
while ((float)num15 < num14)
{
int num16 = WorldGen.genRand.Next(i - num / 2, i + num / 2 + 1);
int num17 = WorldGen.genRand.Next(num8, num9);
int num18 = WorldGen.genRand.Next(3, 8);
for (int num19 = num16 - num18; num19 <= num16 + num18; num19++)
{
for (int num20 = num17 - num18; num20 <= num17 + num18; num20++)
{
float num21 = (float)Math.Abs(num19 - num16);
float num22 = (float)Math.Abs(num20 - num17);
double num23 = Math.Sqrt((double)(num21 * num21 + num22 * num22));
if (num23 < (double)num18 * 0.4)
{
try
{
if (Main.tile[num19, num20].type == 76 || Main.tile[num19, num20].type == 19)
{
Main.tile[num19, num20].active(false);
}
Main.tile[num19, num20].wall = 0;
}
catch
{
}
}
}
}
num15++;
}
}
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 k = i - width / 2; k <= i + width / 2; k++)
{
for (int l = j - height; l <= j; l++)
{
try
{
Main.tile[k, l].active(true);
Main.tile[k, l].type = type;
Main.tile[k, l].liquid = 0;
Main.tile[k, l].lava(false);
}
catch
{
}
}
}
for (int m = i - width / 2 + 1; m <= i + width / 2 - 1; m++)
{
for (int n = j - height + 1; n <= j - 1; n++)
{
try
{
Main.tile[m, n].active(false);
Main.tile[m, n].wall = wall;
Main.tile[m, n].liquid = 0;
Main.tile[m, n].lava(false);
}
catch
{
}
}
}
}
public static void templeCleaner(int x, int y)
{
int num = 0;
if (Main.tile[x + 1, y].active() && Main.tile[x + 1, y].type == 226)
{
num++;
}
if (Main.tile[x - 1, y].active() && Main.tile[x - 1, y].type == 226)
{
num++;
}
if (Main.tile[x, y + 1].active() && Main.tile[x, y + 1].type == 226)
{
num++;
}
if (Main.tile[x, y - 1].active() && Main.tile[x, y - 1].type == 226)
{
num++;
}
if (Main.tile[x, y].active() && Main.tile[x, y].type == 226)
{
if (num <= 1)
{
Main.tile[x, y].active(false);
Main.tile[x, y].wall = 87;
return;
}
}
else
{
if (!Main.tile[x, y].active() && num == 3)
{
Main.tile[x, y].active(true);
Main.tile[x, y].type = 226;
Main.tile[x, y].liquid = 0;
Main.tile[x, y].slope(0);
Main.tile[x, y].halfBrick(false);
}
}
}
public static Vector2 templePather(Vector2 templePath, int destX, int destY)
{
int num = (int)templePath.X;
int num2 = (int)templePath.Y;
int num3 = WorldGen.genRand.Next(5, 20);
int num4 = WorldGen.genRand.Next(2, 5);
while (num3 > 0 && (num != destX || num2 != destY))
{
num3--;
if (num > destX)
{
num--;
}
if (num < destX)
{
num++;
}
if (num2 > destY)
{
num2--;
}
if (num2 < destY)
{
num2++;
}
for (int i = num - num4; i < num + num4; i++)
{
for (int j = num2 - num4; j < num2 + num4; j++)
{
Main.tile[i, j].active(false);
Main.tile[i, j].wall = 87;
}
}
}
return new Vector2((float)num, (float)num2);
}
public static void outerTempled(int x, int y)
{
if (Main.tile[x, y].active() & Main.tile[x, y].type == 226)
{
return;
}
if (Main.tile[x, y].wall == 87)
{
return;
}
int num = 6;
for (int i = x - num; i <= x + num; i++)
{
for (int j = y - num; j <= y + num; j++)
{
if (!Main.tile[i, j].active() && Main.tile[i, j].wall == 87)
{
Main.tile[x, y].active(true);
Main.tile[x, y].type = 226;
Main.tile[x, y].liquid = 0;
Main.tile[x, y].slope(0);
Main.tile[x, y].halfBrick(false);
return;
}
}
}
}
public static void makeTemple(int x, int y)
{
Rectangle[] array = new Rectangle[40];
float num = (float)(Main.maxTilesX / 4200);
int num2 = WorldGen.genRand.Next((int)(num * 10f), (int)(num * 16f));
int num3 = 1;
if (WorldGen.genRand.Next(2) == 0)
{
num3 = -1;
}
int num4 = num3;
int num5 = x;
int num6 = y;
int num7 = x;
int num8 = y;
int num9 = WorldGen.genRand.Next(1, 3);
int num10 = 0;
for (int i = 0; i < num2; i++)
{
num10++;
int num11 = num3;
int num12 = num7;
int num13 = num8;
bool flag = true;
int num14 = 0;
int num15 = 0;
int num16 = -10;
Rectangle rectangle = new Rectangle(num12 - num14 / 2, num13 - num15 / 2, num14, num15);
while (flag)
{
num12 = num7;
num13 = num8;
num14 = WorldGen.genRand.Next(25, 50);
num15 = WorldGen.genRand.Next(20, 35);
if (num15 > num14)
{
num15 = num14;
}
if (i == num2 - 1)
{
num14 = WorldGen.genRand.Next(50, 60);
num15 = WorldGen.genRand.Next(40, 45);
if (num15 > num14)
{
num15 = num14;
}
num14 = (int)((double)((float)num14) * 1.5);
num15 = (int)((double)((float)num15) * 1.25);
num13 += WorldGen.genRand.Next(5, 10);
}
if (num10 > num9)
{
num13 += WorldGen.genRand.Next(num15 + 1, num15 + 3) + num16;
num12 += WorldGen.genRand.Next(-5, 6);
num11 = num3 * -1;
}
else
{
num12 += (WorldGen.genRand.Next(num14 + 1, num14 + 3) + num16) * num11;
num13 += WorldGen.genRand.Next(-5, 6);
}
flag = false;
rectangle = new Rectangle(num12 - num14 / 2, num13 - num15 / 2, num14, num15);
for (int j = 0; j < i; j++)
{
if (rectangle.Intersects(array[j]))
{
flag = true;
}
if (WorldGen.genRand.Next(100) == 0)
{
num16++;
}
}
}
if (num10 > num9)
{
num9++;
num10 = 1;
}
array[i] = rectangle;
num3 = num11;
num7 = num12;
num8 = num13;
}
for (int k = 0; k < num2; k++)
{
for (int l = 0; l < 2; l++)
{
for (int m = 0; m < num2; m++)
{
for (int n = 0; n < 2; n++)
{
int num17 = array[k].X;
if (l == 1)
{
num17 += array[k].Width - 1;
}
int num18 = array[k].Y;
int num19 = num18 + array[k].Height;
int num20 = array[m].X;
if (n == 1)
{
num20 += array[m].Width - 1;
}
int y2 = array[m].Y;
int num21 = y2 + array[m].Height;
while (num17 != num20 || num18 != y2 || num19 != num21)
{
if (num17 < num20)
{
num17++;
}
if (num17 > num20)
{
num17--;
}
if (num18 < y2)
{
num18++;
}
if (num18 > y2)
{
num18--;
}
if (num19 < num21)
{
num19++;
}
if (num19 > num21)
{
num19--;
}
int num22 = num17;
for (int num23 = num18; num23 < num19; num23++)
{
Main.tile[num22, num23].active(true);
Main.tile[num22, num23].type = 226;
Main.tile[num22, num23].liquid = 0;
Main.tile[num22, num23].slope(0);
Main.tile[num22, num23].halfBrick(false);
}
}
}
}
}
}
for (int num24 = 0; num24 < num2; num24++)
{
if (WorldGen.genRand.Next(1) == 0)
{
for (int num25 = array[num24].X; num25 < array[num24].X + array[num24].Width; num25++)
{
for (int num26 = array[num24].Y; num26 < array[num24].Y + array[num24].Height; num26++)
{
Main.tile[num25, num26].active(true);
Main.tile[num25, num26].type = 226;
Main.tile[num25, num26].liquid = 0;
Main.tile[num25, num26].slope(0);
Main.tile[num25, num26].halfBrick(false);
}
}
int num27 = array[num24].X;
int num28 = num27 + array[num24].Width;
int num29 = array[num24].Y;
int num30 = num29 + array[num24].Height;
num27 += WorldGen.genRand.Next(3, 8);
num28 -= WorldGen.genRand.Next(3, 8);
num29 += WorldGen.genRand.Next(3, 8);
num30 -= WorldGen.genRand.Next(3, 8);
int num31 = num27;
int num32 = num28;
int num33 = num29;
int num34 = num30;
int num35 = (num27 + num28) / 2;
int num36 = (num29 + num30) / 2;
for (int num37 = num27; num37 < num28; num37++)
{
for (int num38 = num29; num38 < num30; num38++)
{
if (WorldGen.genRand.Next(20) == 0)
{
num33 += WorldGen.genRand.Next(-1, 2);
}
if (WorldGen.genRand.Next(20) == 0)
{
num34 += WorldGen.genRand.Next(-1, 2);
}
if (WorldGen.genRand.Next(20) == 0)
{
num31 += WorldGen.genRand.Next(-1, 2);
}
if (WorldGen.genRand.Next(20) == 0)
{
num32 += WorldGen.genRand.Next(-1, 2);
}
if (num31 < num27)
{
num31 = num27;
}
if (num32 > num28)
{
num32 = num28;
}
if (num33 < num29)
{
num33 = num29;
}
if (num34 > num30)
{
num34 = num30;
}
if (num31 > num35)
{
num31 = num35;
}
if (num32 < num35)
{
num32 = num35;
}
if (num33 > num36)
{
num33 = num36;
}
if (num34 < num36)
{
num34 = num36;
}
if (num37 >= num31 && (num37 < num32 & num38 >= num33) && num38 <= num34)
{
Main.tile[num37, num38].active(false);
Main.tile[num37, num38].wall = 87;
}
}
}
for (int num39 = num30; num39 > num29; num39--)
{
for (int num40 = num28; num40 > num27; num40--)
{
if (WorldGen.genRand.Next(20) == 0)
{
num33 += WorldGen.genRand.Next(-1, 2);
}
if (WorldGen.genRand.Next(20) == 0)
{
num34 += WorldGen.genRand.Next(-1, 2);
}
if (WorldGen.genRand.Next(20) == 0)
{
num31 += WorldGen.genRand.Next(-1, 2);
}
if (WorldGen.genRand.Next(20) == 0)
{
num32 += WorldGen.genRand.Next(-1, 2);
}
if (num31 < num27)
{
num31 = num27;
}
if (num32 > num28)
{
num32 = num28;
}
if (num33 < num29)
{
num33 = num29;
}
if (num34 > num30)
{
num34 = num30;
}
if (num31 > num35)
{
num31 = num35;
}
if (num32 < num35)
{
num32 = num35;
}
if (num33 > num36)
{
num33 = num36;
}
if (num34 < num36)
{
num34 = num36;
}
if (num40 >= num31 && (num40 < num32 & num39 >= num33) && num39 <= num34)
{
Main.tile[num40, num39].active(false);
Main.tile[num40, num39].wall = 87;
}
}
}
}
}
Vector2 templePath = new Vector2((float)num5, (float)num6);
for (int num41 = 0; num41 < num2; num41++)
{
Rectangle rectangle2 = array[num41];
rectangle2.X += 8;
rectangle2.Y += 8;
rectangle2.Width -= 16;
rectangle2.Height -= 16;
bool flag2 = true;
while (flag2)
{
int num42 = WorldGen.genRand.Next(rectangle2.X, rectangle2.X + rectangle2.Width);
int num43 = WorldGen.genRand.Next(rectangle2.Y, rectangle2.Y + rectangle2.Height);
templePath = WorldGen.templePather(templePath, num42, num43);
if (templePath.X == (float)num42 && templePath.Y == (float)num43)
{
flag2 = false;
}
}
if (num41 < num2 - 1)
{
if (WorldGen.genRand.Next(3) != 0)
{
int num44 = num41 + 1;
if (array[num44].Y >= array[num41].Y + array[num41].Height)
{
rectangle2.X = array[num44].X;
if (array[num44].X < array[num41].X)
{
rectangle2.X += (int)((double)((float)array[num44].Width) * 0.2);
}
else
{
rectangle2.X += (int)((double)((float)array[num44].Width) * 0.8);
}
rectangle2.Y = array[num44].Y;
}
else
{
rectangle2.X = (array[num41].X + array[num41].Width / 2 + (array[num44].X + array[num44].Width / 2)) / 2;
rectangle2.Y = (int)((double)array[num44].Y + (double)array[num44].Height * 0.8);
}
int x2 = rectangle2.X;
int y3 = rectangle2.Y;
flag2 = true;
while (flag2)
{
int num45 = WorldGen.genRand.Next(x2 - 6, x2 + 7);
int num46 = WorldGen.genRand.Next(y3 - 6, y3 + 7);
templePath = WorldGen.templePather(templePath, num45, num46);
if (templePath.X == (float)num45 && templePath.Y == (float)num46)
{
flag2 = false;
}
}
}
else
{
int num47 = num41 + 1;
int num48 = (array[num41].X + array[num41].Width / 2 + (array[num47].X + array[num47].Width / 2)) / 2;
int num49 = (array[num41].Y + array[num41].Height / 2 + (array[num47].Y + array[num47].Height / 2)) / 2;
flag2 = true;
while (flag2)
{
int num50 = WorldGen.genRand.Next(num48 - 6, num48 + 7);
int num51 = WorldGen.genRand.Next(num49 - 6, num49 + 7);
templePath = WorldGen.templePather(templePath, num50, num51);
if (templePath.X == (float)num50 && templePath.Y == (float)num51)
{
flag2 = false;
}
}
}
}
}
int num52 = Main.maxTilesX - 20;
int num53 = 20;
int num54 = Main.maxTilesY - 20;
int num55 = 20;
for (int num56 = 0; num56 < num2; num56++)
{
if (array[num56].X < num52)
{
num52 = array[num56].X;
}
if (array[num56].X + array[num56].Width > num53)
{
num53 = array[num56].X + array[num56].Width;
}
if (array[num56].Y < num54)
{
num54 = array[num56].Y;
}
if (array[num56].Y + array[num56].Height > num55)
{
num55 = array[num56].Y + array[num56].Height;
}
}
num52 -= 10;
num53 += 10;
num54 -= 10;
num55 += 10;
for (int num57 = num52; num57 < num53; num57++)
{
for (int num58 = num54; num58 < num55; num58++)
{
WorldGen.outerTempled(num57, num58);
}
}
for (int num59 = num53; num59 >= num52; num59--)
{
for (int num60 = num54; num60 < num55 / 2; num60++)
{
WorldGen.outerTempled(num59, num60);
}
}
for (int num61 = num54; num61 < num55; num61++)
{
for (int num62 = num52; num62 < num53; num62++)
{
WorldGen.outerTempled(num62, num61);
}
}
for (int num63 = num55; num63 >= num54; num63--)
{
for (int num64 = num52; num64 < num53; num64++)
{
WorldGen.outerTempled(num64, num63);
}
}
num3 = -num4;
Vector2 vector = new Vector2((float)num5, (float)num6);
int num65 = WorldGen.genRand.Next(2, 5);
bool flag3 = true;
int num66 = 0;
int num67 = WorldGen.genRand.Next(9, 14);
while (flag3)
{
num66++;
if (num66 >= num67)
{
num66 = 0;
vector.Y -= 1f;
}
vector.X += (float)num3;
int num68 = (int)vector.X;
flag3 = false;
int num69 = (int)vector.Y - num65;
while ((float)num69 < vector.Y + (float)num65)
{
if (Main.tile[num68, num69].wall == 87 || (Main.tile[num68, num69].active() && Main.tile[num68, num69].type == 226))
{
flag3 = true;
}
if (Main.tile[num68, num69].active() && Main.tile[num68, num69].type == 226)
{
Main.tile[num68, num69].active(false);
Main.tile[num68, num69].wall = 87;
}
num69++;
}
}
int num70 = num5;
int num71 = num6;
while (!Main.tile[num70, num71].active())
{
num71++;
}
num71 -= 4;
int num72 = num71;
while ((Main.tile[num70, num72].active() && Main.tile[num70, num72].type == 226) || Main.tile[num70, num72].wall == 87)
{
num72--;
}
num72 += 2;
for (int num73 = num70 - 1; num73 <= num70 + 1; num73++)
{
for (int num74 = num72; num74 <= num71; num74++)
{
Main.tile[num73, num74].active(true);
Main.tile[num73, num74].type = 226;
Main.tile[num73, num74].liquid = 0;
Main.tile[num73, num74].slope(0);
Main.tile[num73, num74].halfBrick(false);
}
}
for (int num75 = num70 - 4; num75 <= num70 + 4; num75++)
{
for (int num76 = num71 - 1; num76 < num71 + 3; num76++)
{
Main.tile[num75, num76].active(false);
Main.tile[num75, num76].wall = 87;
}
}
for (int num77 = num70 - 1; num77 <= num70 + 1; num77++)
{
for (int num78 = num71 - 5; num78 <= num71 + 8; num78++)
{
Main.tile[num77, num78].active(true);
Main.tile[num77, num78].type = 226;
Main.tile[num77, num78].liquid = 0;
Main.tile[num77, num78].slope(0);
Main.tile[num77, num78].halfBrick(false);
}
}
for (int num79 = num70 - 1; num79 <= num70 + 1; num79++)
{
for (int num80 = num71; num80 < num71 + 3; num80++)
{
Main.tile[num79, num80].active(false);
Main.tile[num79, num80].wall = 87;
}
}
WorldGen.PlaceTile(num70, num71, 10, true, false, -1, 11);
for (int num81 = num52; num81 < num53; num81++)
{
for (int num82 = num54; num82 < num55; num82++)
{
WorldGen.templeCleaner(num81, num82);
}
}
for (int num83 = num55; num83 >= num54; num83--)
{
for (int num84 = num53; num84 >= num52; num84--)
{
WorldGen.templeCleaner(num84, num83);
}
}
for (int num85 = num52; num85 < num53; num85++)
{
for (int num86 = num54; num86 < num55; num86++)
{
bool flag4 = true;
for (int num87 = num85 - 1; num87 <= num85 + 1; num87++)
{
for (int num88 = num86 - 1; num88 <= num86 + 1; num88++)
{
if ((!Main.tile[num87, num88].active() || Main.tile[num87, num88].type != 226) && Main.tile[num87, num88].wall != 87)
{
flag4 = false;
break;
}
}
}
if (flag4)
{
Main.tile[num85, num86].wall = 87;
}
}
}
int num89 = 0;
Rectangle rectangle3;
int num90;
int num91;
do
{
num89++;
rectangle3 = array[num2 - 1];
num90 = rectangle3.X + WorldGen.genRand.Next(rectangle3.Width);
num91 = rectangle3.Y + WorldGen.genRand.Next(rectangle3.Height);
WorldGen.PlaceTile(num90, num91, 237, false, false, -1, 0);
if (Main.tile[num90, num91].type == 237)
{
goto IL_14EC;
}
}
while (num89 < 1000);
num90 = rectangle3.X + rectangle3.Width / 2;
num91 = rectangle3.Y + rectangle3.Height / 2;
num90 += WorldGen.genRand.Next(-10, 11);
num91 += WorldGen.genRand.Next(-10, 11);
while (!Main.tile[num90, num91].active())
{
num91++;
}
Main.tile[num90 - 1, num91].active(true);
Main.tile[num90 - 1, num91].slope(0);
Main.tile[num90 - 1, num91].halfBrick(false);
Main.tile[num90 - 1, num91].type = 226;
Main.tile[num90, num91].active(true);
Main.tile[num90, num91].slope(0);
Main.tile[num90, num91].halfBrick(false);
Main.tile[num90, num91].type = 226;
Main.tile[num90 + 1, num91].active(true);
Main.tile[num90 + 1, num91].slope(0);
Main.tile[num90 + 1, num91].halfBrick(false);
Main.tile[num90 + 1, num91].type = 226;
num91 -= 2;
num90--;
for (int num92 = 0; num92 <= 2; num92++)
{
for (int num93 = 0; num93 <= 1; num93++)
{
x = num90 + num92;
y = num91 + num93;
Main.tile[x, y].active(true);
Main.tile[x, y].type = 237;
Main.tile[x, y].frameX = (short)(num92 * 18);
Main.tile[x, y].frameY = (short)(num93 * 18);
}
}
IL_14EC:
float num94 = (float)num2 * 1.1f;
num94 *= 1f + (float)WorldGen.genRand.Next(-25, 26) * 0.01f;
int num95 = 0;
while (num94 > 0f)
{
num95++;
int num96 = WorldGen.genRand.Next(num2);
int num97 = WorldGen.genRand.Next(array[num96].X, array[num96].X + array[num96].Width);
int num98 = WorldGen.genRand.Next(array[num96].Y, array[num96].Y + array[num96].Height);
if (Main.tile[num97, num98].wall == 87 && !Main.tile[num97, num98].active())
{
bool flag5 = false;
if (WorldGen.genRand.Next(2) == 0)
{
int num99 = 1;
if (WorldGen.genRand.Next(2) == 0)
{
num99 = -1;
}
while (!Main.tile[num97, num98].active())
{
num98 += num99;
}
num98 -= num99;
int num100 = WorldGen.genRand.Next(2);
int num101 = WorldGen.genRand.Next(3, 10);
bool flag6 = true;
for (int num102 = num97 - num101; num102 < num97 + num101; num102++)
{
for (int num103 = num98 - num101; num103 < num98 + num101; num103++)
{
if (Main.tile[num102, num103].active() && Main.tile[num102, num103].type == 10)
{
flag6 = false;
break;
}
}
}
if (flag6)
{
for (int num104 = num97 - num101; num104 < num97 + num101; num104++)
{
for (int num105 = num98 - num101; num105 < num98 + num101; num105++)
{
if (WorldGen.SolidTile(num104, num105) && Main.tile[num104, num105].type != 232 && !WorldGen.SolidTile(num104, num105 - num99))
{
Main.tile[num104, num105].type = 232;
flag5 = true;
if (num100 == 0)
{
Main.tile[num104, num105 - 1].type = 232;
Main.tile[num104, num105 - 1].active(true);
}
else
{
Main.tile[num104, num105 + 1].type = 232;
Main.tile[num104, num105 + 1].active(true);
}
num100++;
if (num100 > 1)
{
num100 = 0;
}
}
}
}
}
if (flag5)
{
num95 = 0;
num94 -= 1f;
}
}
else
{
int num106 = 1;
if (WorldGen.genRand.Next(2) == 0)
{
num106 = -1;
}
while (!Main.tile[num97, num98].active())
{
num97 += num106;
}
num97 -= num106;
int num107 = WorldGen.genRand.Next(2);
int num108 = WorldGen.genRand.Next(3, 10);
bool flag7 = true;
for (int num109 = num97 - num108; num109 < num97 + num108; num109++)
{
for (int num110 = num98 - num108; num110 < num98 + num108; num110++)
{
if (Main.tile[num109, num110].active() && Main.tile[num109, num110].type == 10)
{
flag7 = false;
break;
}
}
}
if (flag7)
{
for (int num111 = num97 - num108; num111 < num97 + num108; num111++)
{
for (int num112 = num98 - num108; num112 < num98 + num108; num112++)
{
if (WorldGen.SolidTile(num111, num112) && Main.tile[num111, num112].type != 232 && !WorldGen.SolidTile(num111 - num106, num112))
{
Main.tile[num111, num112].type = 232;
flag5 = true;
if (num107 == 0)
{
Main.tile[num111 - 1, num112].type = 232;
Main.tile[num111 - 1, num112].active(true);
}
else
{
Main.tile[num111 + 1, num112].type = 232;
Main.tile[num111 + 1, num112].active(true);
}
num107++;
if (num107 > 1)
{
num107 = 0;
}
}
}
}
}
if (flag5)
{
num95 = 0;
num94 -= 1f;
}
}
}
if (num95 > 1000)
{
num95 = 0;
num94 -= 1f;
}
}
WorldGen.tLeft = num52;
WorldGen.tRight = num53;
WorldGen.tTop = num54;
WorldGen.tBottom = num55;
WorldGen.tRooms = num2;
}
public static void templePart2()
{
int minValue = WorldGen.tLeft;
int maxValue = WorldGen.tRight;
int minValue2 = WorldGen.tTop;
int num = WorldGen.tBottom;
int num2 = WorldGen.tRooms;
float num3 = (float)num2 * 1.9f;
num3 *= 1f + (float)WorldGen.genRand.Next(-15, 16) * 0.01f;
int num4 = 0;
while (num3 > 0f)
{
int num5 = WorldGen.genRand.Next(minValue, maxValue);
int num6 = WorldGen.genRand.Next(minValue2, num);
if (Main.tile[num5, num6].wall == 87 && !Main.tile[num5, num6].active())
{
if (WorldGen.mayanTrap(num5, num6))
{
num3 -= 1f;
num4 = 0;
}
else
{
num4++;
}
}
else
{
num4++;
}
if (num4 > 100)
{
num4 = 0;
num3 -= 1f;
}
}
Main.tileSolid[232] = false;
float num7 = (float)num2 * 0.35f;
num7 *= 1f + (float)WorldGen.genRand.Next(-15, 16) * 0.01f;
int contain = 1293;
num4 = 0;
while (num7 > 0f)
{
int num8 = WorldGen.genRand.Next(minValue, maxValue);
int num9 = WorldGen.genRand.Next(minValue2, num);
if (Main.tile[num8, num9].wall == 87 && !Main.tile[num8, num9].active() && WorldGen.AddBuriedChest(num8, num9, contain, true, 16))
{
num7 -= 1f;
num4 = 0;
}
num4++;
if (num4 > 10000)
{
break;
}
}
float num10 = (float)num2 * 1.25f;
num10 *= 1f + (float)WorldGen.genRand.Next(-25, 36) * 0.01f;
num4 = 0;
while (num10 > 0f)
{
num4++;
int num11 = WorldGen.genRand.Next(minValue, maxValue);
int num12 = WorldGen.genRand.Next(minValue2, num);
if (Main.tile[num11, num12].wall == 87 && !Main.tile[num11, num12].active())
{
int num13 = num11;
int num14 = num12;
while (!Main.tile[num13, num14].active())
{
num14++;
if (num14 > num)
{
break;
}
}
num14--;
if (num14 <= num)
{
WorldGen.PlaceTile(num13, num14, 105, true, false, -1, WorldGen.genRand.Next(43, 46));
if (Main.tile[num13, num14].type == 105)
{
num10 -= 1f;
}
}
}
}
float num15 = (float)num2 * 1.35f;
num15 *= 1f + (float)WorldGen.genRand.Next(-15, 26) * 0.01f;
num4 = 0;
while (num15 > 0f)
{
num4++;
int num16 = WorldGen.genRand.Next(minValue, maxValue);
int num17 = WorldGen.genRand.Next(minValue2, num);
if (Main.tile[num16, num17].wall == 87 && !Main.tile[num16, num17].active())
{
int num18 = num16;
int num19 = num17;
while (!Main.tile[num18, num19].active())
{
num19++;
if (num19 > num)
{
break;
}
}
num19--;
if (num19 <= num)
{
int num20 = WorldGen.genRand.Next(3);
if (num20 == 0)
{
WorldGen.PlaceTile(num18, num19, 18, true, false, -1, 10);
if (Main.tile[num18, num19].type == 18)
{
num15 -= 1f;
}
}
else
{
if (num20 == 1)
{
WorldGen.PlaceTile(num18, num19, 14, true, false, -1, 9);
if (Main.tile[num18, num19].type == 14)
{
num15 -= 1f;
}
}
else
{
if (num20 == 2)
{
WorldGen.PlaceTile(num18, num19, 15, true, false, -1, 12);
if (Main.tile[num18, num19].type == 15)
{
num15 -= 1f;
}
}
}
}
}
}
if (num4 > 10000)
{
break;
}
}
Main.tileSolid[232] = true;
}
public static void dWallOut(int x, int y, int wall)
{
if (!WorldGen.SolidTile(x, y) && (int)Main.tile[x, y].wall != wall && Main.tile[x, y].wall > 0)
{
WorldGen.dWallCount++;
if (WorldGen.dWallCount > 1000)
{
Main.tile[x, y].wall = 17;
WorldGen.dWallBroke = true;
return;
}
Main.tile[x, y].wall = (byte)wall;
if ((int)Main.tile[x - 1, y].wall != wall)
{
WorldGen.dWallOut(x - 1, y, wall);
}
if ((int)Main.tile[x + 1, y].wall != wall)
{
WorldGen.dWallOut(x + 1, y, wall);
}
if ((int)Main.tile[x, y - 1].wall != wall)
{
WorldGen.dWallOut(x, y - 1, wall);
}
if ((int)Main.tile[x, y + 1].wall != wall)
{
WorldGen.dWallOut(x, y + 1, wall);
return;
}
}
else
{
if (Main.tile[x, y].active())
{
Main.tile[x, y].wall = (byte)wall;
}
}
}
public static bool nearPicture(int x, int y)
{
for (int i = x - 4; i <= x + 3; i++)
{
for (int j = y - 3; j <= y + 2; j++)
{
if (Main.tile[i, j].active())
{
return true;
}
}
}
return false;
}
public static bool nearPicture2(int x, int y)
{
if (Main.tile[x, y].wall != 7 && Main.tile[x, y].wall != 8 && Main.tile[x, y].wall != 9)
{
for (int i = x - 8; i <= x + 8; i++)
{
for (int j = y - 5; j <= y + 5; j++)
{
if (Main.tile[i, j].active() && (Main.tile[i, j].type == 240 || Main.tile[i, j].type == 241 || Main.tile[i, j].type == 242))
{
return true;
}
}
}
}
else
{
for (int k = x - 15; k <= x + 15; k++)
{
for (int l = y - 10; l <= y + 10; l++)
{
if (Main.tile[k, l].active() && (Main.tile[k, l].type == 240 || Main.tile[k, l].type == 241 || Main.tile[k, l].type == 242))
{
return true;
}
}
}
}
return false;
}
public static void MakeDungeon(int x, int y, int tileType = 41, int wallType = 7)
{
int num = WorldGen.genRand.Next(3);
int num2 = WorldGen.genRand.Next(3);
num2 = num;
if (num == 1)
{
tileType = 43;
}
else
{
if (num == 2)
{
tileType = 44;
}
}
if (num2 == 1)
{
wallType = 8;
}
else
{
if (num2 == 2)
{
wallType = 9;
}
}
WorldGen.numDDoors = 0;
WorldGen.numDPlats = 0;
WorldGen.numDRooms = 0;
WorldGen.dungeonX = x;
WorldGen.dungeonY = y;
WorldGen.dMinX = x;
WorldGen.dMaxX = x;
WorldGen.dMinY = y;
WorldGen.dMaxY = y;
WorldGen.dxStrength1 = (double)WorldGen.genRand.Next(25, 30);
WorldGen.dyStrength1 = (double)WorldGen.genRand.Next(20, 25);
WorldGen.dxStrength2 = (double)WorldGen.genRand.Next(35, 50);
WorldGen.dyStrength2 = (double)WorldGen.genRand.Next(10, 15);
float num3 = (float)(Main.maxTilesX / 60);
num3 += (float)WorldGen.genRand.Next(0, (int)(num3 / 3f));
float num4 = num3;
int num5 = 5;
WorldGen.DungeonRoom(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType);
while (num3 > 0f)
{
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 -= 1f;
Main.statusText = string.Concat(new object[]
{
Lang.gen[58],
" ",
(int)((num4 - num3) / num4 * 60f),
"%"
});
if (num5 > 0)
{
num5--;
}
if (num5 == 0 & WorldGen.genRand.Next(3) == 0)
{
num5 = 5;
if (WorldGen.genRand.Next(2) == 0)
{
int num6 = WorldGen.dungeonX;
int num7 = WorldGen.dungeonY;
WorldGen.DungeonHalls(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType, false);
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.DungeonHalls(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType, false);
}
WorldGen.DungeonRoom(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType);
WorldGen.dungeonX = num6;
WorldGen.dungeonY = num7;
}
else
{
WorldGen.DungeonRoom(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType);
}
}
else
{
WorldGen.DungeonHalls(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType, false);
}
}
WorldGen.DungeonRoom(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType);
int num8 = WorldGen.dRoomX[0];
int num9 = WorldGen.dRoomY[0];
for (int i = 0; i < WorldGen.numDRooms; i++)
{
if (WorldGen.dRoomY[i] < num9)
{
num8 = WorldGen.dRoomX[i];
num9 = WorldGen.dRoomY[i];
}
}
WorldGen.dungeonX = num8;
WorldGen.dungeonY = num9;
WorldGen.dEnteranceX = num8;
WorldGen.dSurface = false;
num5 = 5;
while (!WorldGen.dSurface)
{
if (num5 > 0)
{
num5--;
}
if (num5 == 0 && WorldGen.genRand.Next(5) == 0 && (double)WorldGen.dungeonY > Main.worldSurface + 100.0)
{
num5 = 10;
int num10 = WorldGen.dungeonX;
int num11 = WorldGen.dungeonY;
WorldGen.DungeonHalls(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType, true);
WorldGen.DungeonRoom(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType);
WorldGen.dungeonX = num10;
WorldGen.dungeonY = num11;
}
WorldGen.DungeonStairs(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType);
}
WorldGen.DungeonEnt(WorldGen.dungeonX, WorldGen.dungeonY, tileType, wallType);
Main.statusText = Lang.gen[58] + " 65%";
for (int j = 0; j < WorldGen.numDRooms; j++)
{
for (int k = WorldGen.dRoomL[j]; k <= WorldGen.dRoomR[j]; k++)
{
if (!Main.tile[k, WorldGen.dRoomT[j] - 1].active())
{
WorldGen.DPlatX[WorldGen.numDPlats] = k;
WorldGen.DPlatY[WorldGen.numDPlats] = WorldGen.dRoomT[j] - 1;
WorldGen.numDPlats++;
break;
}
}
for (int l = WorldGen.dRoomL[j]; l <= WorldGen.dRoomR[j]; l++)
{
if (!Main.tile[l, WorldGen.dRoomB[j] + 1].active())
{
WorldGen.DPlatX[WorldGen.numDPlats] = l;
WorldGen.DPlatY[WorldGen.numDPlats] = WorldGen.dRoomB[j] + 1;
WorldGen.numDPlats++;
break;
}
}
for (int m = WorldGen.dRoomT[j]; m <= WorldGen.dRoomB[j]; m++)
{
if (!Main.tile[WorldGen.dRoomL[j] - 1, m].active())
{
WorldGen.DDoorX[WorldGen.numDDoors] = WorldGen.dRoomL[j] - 1;
WorldGen.DDoorY[WorldGen.numDDoors] = m;
WorldGen.DDoorPos[WorldGen.numDDoors] = -1;
WorldGen.numDDoors++;
break;
}
}
for (int n = WorldGen.dRoomT[j]; n <= WorldGen.dRoomB[j]; n++)
{
if (!Main.tile[WorldGen.dRoomR[j] + 1, n].active())
{
WorldGen.DDoorX[WorldGen.numDDoors] = WorldGen.dRoomR[j] + 1;
WorldGen.DDoorY[WorldGen.numDDoors] = n;
WorldGen.DDoorPos[WorldGen.numDDoors] = 1;
WorldGen.numDDoors++;
break;
}
}
}
Main.statusText = Lang.gen[58] + " 70%";
int num12 = 0;
int num13 = 1000;
int num14 = 0;
while (num14 < Main.maxTilesX / 100)
{
num12++;
int num15 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
int num16 = WorldGen.genRand.Next((int)Main.worldSurface + 25, WorldGen.dMaxY);
int num17 = num15;
if ((int)Main.tile[num15, num16].wall == wallType && !Main.tile[num15, num16].active())
{
int num18 = 1;
if (WorldGen.genRand.Next(2) == 0)
{
num18 = -1;
}
while (!Main.tile[num15, num16].active())
{
num16 += num18;
}
if (Main.tile[num15 - 1, num16].active() && Main.tile[num15 + 1, num16].active() && !Main.tile[num15 - 1, num16 - num18].active() && !Main.tile[num15 + 1, num16 - num18].active())
{
num14++;
int num19 = WorldGen.genRand.Next(5, 13);
while (Main.tile[num15 - 1, num16].active() && Main.tile[num15, num16 + num18].active() && Main.tile[num15, num16].active() && !Main.tile[num15, num16 - num18].active() && num19 > 0)
{
Main.tile[num15, num16].type = 48;
if (!Main.tile[num15 - 1, num16 - num18].active() && !Main.tile[num15 + 1, num16 - num18].active())
{
Main.tile[num15, num16 - num18].type = 48;
Main.tile[num15, num16 - num18].active(true);
}
num15--;
num19--;
}
num19 = WorldGen.genRand.Next(5, 13);
num15 = num17 + 1;
while (Main.tile[num15 + 1, num16].active() && Main.tile[num15, num16 + num18].active() && Main.tile[num15, num16].active() && !Main.tile[num15, num16 - num18].active() && num19 > 0)
{
Main.tile[num15, num16].type = 48;
if (!Main.tile[num15 - 1, num16 - num18].active() && !Main.tile[num15 + 1, num16 - num18].active())
{
Main.tile[num15, num16 - num18].type = 48;
Main.tile[num15, num16 - num18].active(true);
}
num15++;
num19--;
}
}
}
if (num12 > num13)
{
num12 = 0;
num14++;
}
}
num12 = 0;
num13 = 1000;
num14 = 0;
Main.statusText = Lang.gen[58] + " 75%";
while (num14 < Main.maxTilesX / 100)
{
num12++;
int num20 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
int num21 = WorldGen.genRand.Next((int)Main.worldSurface + 25, WorldGen.dMaxY);
int num22 = num21;
if ((int)Main.tile[num20, num21].wall == wallType && !Main.tile[num20, num21].active())
{
int num23 = 1;
if (WorldGen.genRand.Next(2) == 0)
{
num23 = -1;
}
while (num20 > 5 && num20 < Main.maxTilesX - 5 && !Main.tile[num20, num21].active())
{
num20 += num23;
}
if (Main.tile[num20, num21 - 1].active() && Main.tile[num20, num21 + 1].active() && !Main.tile[num20 - num23, num21 - 1].active() && !Main.tile[num20 - num23, num21 + 1].active())
{
num14++;
int num24 = WorldGen.genRand.Next(5, 13);
while (Main.tile[num20, num21 - 1].active() && Main.tile[num20 + num23, num21].active() && Main.tile[num20, num21].active() && !Main.tile[num20 - num23, num21].active() && num24 > 0)
{
Main.tile[num20, num21].type = 48;
if (!Main.tile[num20 - num23, num21 - 1].active() && !Main.tile[num20 - num23, num21 + 1].active())
{
Main.tile[num20 - num23, num21].type = 48;
Main.tile[num20 - num23, num21].active(true);
}
num21--;
num24--;
}
num24 = WorldGen.genRand.Next(5, 13);
num21 = num22 + 1;
while (Main.tile[num20, num21 + 1].active() && Main.tile[num20 + num23, num21].active() && Main.tile[num20, num21].active() && !Main.tile[num20 - num23, num21].active() && num24 > 0)
{
Main.tile[num20, num21].type = 48;
if (!Main.tile[num20 - num23, num21 - 1].active() && !Main.tile[num20 - num23, num21 + 1].active())
{
Main.tile[num20 - num23, num21].type = 48;
Main.tile[num20 - num23, num21].active(true);
}
num21++;
num24--;
}
}
}
if (num12 > num13)
{
num12 = 0;
num14++;
}
}
Main.statusText = Lang.gen[58] + " 80%";
for (int num25 = 0; num25 < WorldGen.numDDoors; num25++)
{
int num26 = WorldGen.DDoorX[num25] - 10;
int num27 = WorldGen.DDoorX[num25] + 10;
int num28 = 100;
int num29 = 0;
for (int num30 = num26; num30 < num27; num30++)
{
bool flag = true;
int num31 = WorldGen.DDoorY[num25];
while (num31 > 10 && !Main.tile[num30, num31].active())
{
num31--;
}
if (!Main.tileDungeon[(int)Main.tile[num30, num31].type])
{
flag = false;
}
int num32 = num31;
num31 = WorldGen.DDoorY[num25];
while (!Main.tile[num30, num31].active())
{
num31++;
}
if (!Main.tileDungeon[(int)Main.tile[num30, num31].type])
{
flag = false;
}
int num33 = num31;
if (num33 - num32 >= 3)
{
int num34 = num30 - 20;
int num35 = num30 + 20;
int num36 = num33 - 10;
int num37 = num33 + 10;
for (int num38 = num34; num38 < num35; num38++)
{
for (int num39 = num36; num39 < num37; num39++)
{
if (Main.tile[num38, num39].active() && Main.tile[num38, num39].type == 10)
{
flag = false;
break;
}
}
}
if (flag)
{
for (int num40 = num33 - 3; num40 < num33; num40++)
{
for (int num41 = num30 - 3; num41 <= num30 + 3; num41++)
{
if (Main.tile[num41, num40].active())
{
flag = false;
break;
}
}
}
}
if (flag && num33 - num32 < 20)
{
bool flag2 = false;
if (WorldGen.DDoorPos[num25] == 0 && num33 - num32 < num28)
{
flag2 = true;
}
if (WorldGen.DDoorPos[num25] == -1 && num30 > num29)
{
flag2 = true;
}
if (WorldGen.DDoorPos[num25] == 1 && (num30 < num29 || num29 == 0))
{
flag2 = true;
}
if (flag2)
{
num29 = num30;
num28 = num33 - num32;
}
}
}
}
if (num28 < 20)
{
int num42 = num29;
int num43 = WorldGen.DDoorY[num25];
int num44 = num43;
while (!Main.tile[num42, num43].active())
{
Main.tile[num42, num43].active(false);
num43++;
}
while (!Main.tile[num42, num44].active())
{
num44--;
}
num43--;
num44++;
for (int num45 = num44; num45 < num43 - 2; num45++)
{
Main.tile[num42, num45].active(true);
Main.tile[num42, num45].type = (byte)tileType;
}
int style = 13;
if (WorldGen.genRand.Next(3) == 0)
{
if (wallType == 7)
{
style = 16;
}
else
{
if (wallType == 8)
{
style = 17;
}
else
{
if (wallType == 9)
{
style = 18;
}
}
}
}
WorldGen.PlaceTile(num42, num43, 10, true, false, -1, style);
num42--;
int num46 = num43 - 3;
while (!Main.tile[num42, num46].active())
{
num46--;
}
if (num43 - num46 < num43 - num44 + 5 && Main.tileDungeon[(int)Main.tile[num42, num46].type])
{
for (int num47 = num43 - 4 - WorldGen.genRand.Next(3); num47 > num46; num47--)
{
Main.tile[num42, num47].active(true);
Main.tile[num42, num47].type = (byte)tileType;
}
}
num42 += 2;
num46 = num43 - 3;
while (!Main.tile[num42, num46].active())
{
num46--;
}
if (num43 - num46 < num43 - num44 + 5 && Main.tileDungeon[(int)Main.tile[num42, num46].type])
{
for (int num48 = num43 - 4 - WorldGen.genRand.Next(3); num48 > num46; num48--)
{
Main.tile[num42, num48].active(true);
Main.tile[num42, num48].type = (byte)tileType;
}
}
num43++;
num42--;
Main.tile[num42 - 1, num43].active(true);
Main.tile[num42 - 1, num43].type = (byte)tileType;
Main.tile[num42 + 1, num43].active(true);
Main.tile[num42 + 1, num43].type = (byte)tileType;
}
}
int[] array = new int[3];
if (wallType == 7)
{
array[0] = 7;
array[1] = 94;
array[2] = 95;
}
else
{
if (wallType == 9)
{
array[0] = 9;
array[1] = 96;
array[2] = 97;
}
else
{
array[0] = 8;
array[1] = 98;
array[2] = 99;
}
}
for (int num49 = 0; num49 < 5; num49++)
{
for (int num50 = 0; num50 < 3; num50++)
{
int num51 = WorldGen.genRand.Next(40, 240);
int num52 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
int num53 = WorldGen.genRand.Next(WorldGen.dMinY, WorldGen.dMaxY);
for (int num54 = num52 - num51; num54 < num52 + num51; num54++)
{
for (int num55 = num53 - num51; num55 < num53 + num51; num55++)
{
if ((double)num55 > Main.worldSurface)
{
float num56 = (float)Math.Abs(num52 - num54);
float num57 = (float)Math.Abs(num53 - num55);
double num58 = Math.Sqrt((double)(num56 * num56 + num57 * num57));
if (num58 < (double)num51 * 0.4 && Main.wallDungeon[(int)Main.tile[num54, num55].wall])
{
WorldGen.dWallCount = 0;
WorldGen.dWallOut(num54, num55, array[num50]);
while (WorldGen.dWallBroke)
{
WorldGen.dWallBroke = false;
for (int num59 = WorldGen.dMinX; num59 < WorldGen.dMaxX; num59++)
{
for (int num60 = 10; num60 < WorldGen.dMaxY; num60++)
{
if (Main.tile[num59, num60].wall == 17)
{
WorldGen.dWallCount = 0;
WorldGen.dWallOut(num59, num60, array[num50]);
}
}
}
}
}
}
}
}
}
}
Main.statusText = Lang.gen[58] + " 85%";
for (int num61 = 0; num61 < WorldGen.numDPlats; num61++)
{
int num62 = WorldGen.DPlatX[num61];
int num63 = WorldGen.DPlatY[num61];
int num64 = Main.maxTilesX;
int num65 = 10;
if ((double)num63 < Main.worldSurface + 50.0)
{
num65 = 20;
}
for (int num66 = num63 - 5; num66 <= num63 + 5; num66++)
{
int num67 = num62;
int num68 = num62;
bool flag3 = false;
if (Main.tile[num67, num66].active())
{
flag3 = true;
}
else
{
while (!Main.tile[num67, num66].active())
{
num67--;
if (!Main.tileDungeon[(int)Main.tile[num67, num66].type])
{
flag3 = true;
}
}
while (!Main.tile[num68, num66].active())
{
num68++;
if (!Main.tileDungeon[(int)Main.tile[num68, num66].type])
{
flag3 = true;
}
}
}
if (!flag3 && num68 - num67 <= num65)
{
bool flag4 = true;
int num69 = num62 - num65 / 2 - 2;
int num70 = num62 + num65 / 2 + 2;
int num71 = num66 - 5;
int num72 = num66 + 5;
for (int num73 = num69; num73 <= num70; num73++)
{
for (int num74 = num71; num74 <= num72; num74++)
{
if (Main.tile[num73, num74].active() && Main.tile[num73, num74].type == 19)
{
flag4 = false;
break;
}
}
}
for (int num75 = num66 + 3; num75 >= num66 - 5; num75--)
{
if (Main.tile[num62, num75].active())
{
flag4 = false;
break;
}
}
if (flag4)
{
num64 = num66;
break;
}
}
}
if (num64 > num63 - 10 && num64 < num63 + 10)
{
int num76 = num62;
int num77 = num64;
int num78 = num62 + 1;
while (!Main.tile[num76, num77].active())
{
Main.tile[num76, num77].active(true);
Main.tile[num76, num77].type = 19;
if (wallType == 7)
{
Main.tile[num76, num77].frameY = 108;
}
if (wallType == 8)
{
Main.tile[num76, num77].frameY = 144;
}
if (wallType == 9)
{
Main.tile[num76, num77].frameY = 126;
}
num76--;
}
while (!Main.tile[num78, num77].active())
{
Main.tile[num78, num77].active(true);
Main.tile[num78, num77].type = 19;
if (wallType == 7)
{
Main.tile[num78, num77].frameY = 108;
}
if (wallType == 8)
{
Main.tile[num78, num77].frameY = 144;
}
if (wallType == 9)
{
Main.tile[num78, num77].frameY = 126;
}
num78++;
}
}
}
for (int num79 = 0; num79 < 4; num79++)
{
bool flag5 = false;
while (!flag5)
{
int num80 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
int num81 = WorldGen.genRand.Next((int)Main.worldSurface, WorldGen.dMaxY);
if (Main.wallDungeon[(int)Main.tile[num80, num81].wall] && !Main.tile[num80, num81].active())
{
int contain = 0;
int style2 = 0;
if (num79 == 0)
{
style2 = 23;
contain = 1156;
}
else
{
if (num79 == 1)
{
if (!WorldGen.crimson)
{
style2 = 24;
contain = 1571;
}
else
{
style2 = 25;
contain = 1569;
}
}
else
{
if (num79 == 2)
{
style2 = 26;
contain = 1260;
}
else
{
if (num79 == 3)
{
style2 = 27;
contain = 1572;
}
}
}
}
flag5 = WorldGen.AddBuriedChest(num80, num81, contain, false, style2);
}
}
}
int[] array2 = new int[3];
array2[0] = WorldGen.genRand.Next(9, 13);
array2[1] = WorldGen.genRand.Next(9, 13);
while (array2[1] == array2[0])
{
array2[1] = WorldGen.genRand.Next(9, 13);
}
array2[2] = WorldGen.genRand.Next(9, 13);
while (array2[2] == array2[0] || array2[2] == array2[1])
{
array2[2] = WorldGen.genRand.Next(9, 13);
}
Main.statusText = Lang.gen[58] + " 90%";
num12 = 0;
num13 = 1000;
num14 = 0;
while (num14 < Main.maxTilesX / 20)
{
num12++;
int num82 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
int num83 = WorldGen.genRand.Next(WorldGen.dMinY, WorldGen.dMaxY);
bool flag6 = true;
if (Main.wallDungeon[(int)Main.tile[num82, num83].wall] && !Main.tile[num82, num83].active())
{
int num84 = 1;
if (WorldGen.genRand.Next(2) == 0)
{
num84 = -1;
}
while (flag6 && !Main.tile[num82, num83].active())
{
num82 -= num84;
if (num82 < 5 || num82 > Main.maxTilesX - 5)
{
flag6 = false;
}
else
{
if (Main.tile[num82, num83].active() && !Main.tileDungeon[(int)Main.tile[num82, num83].type])
{
flag6 = false;
}
}
}
if (flag6 && Main.tile[num82, num83].active() && Main.tileDungeon[(int)Main.tile[num82, num83].type] && Main.tile[num82, num83 - 1].active() && Main.tileDungeon[(int)Main.tile[num82, num83 - 1].type] && Main.tile[num82, num83 + 1].active() && Main.tileDungeon[(int)Main.tile[num82, num83 + 1].type])
{
num82 += num84;
for (int num85 = num82 - 3; num85 <= num82 + 3; num85++)
{
for (int num86 = num83 - 3; num86 <= num83 + 3; num86++)
{
if (Main.tile[num85, num86].active() && Main.tile[num85, num86].type == 19)
{
flag6 = false;
break;
}
}
}
if (flag6 && (!Main.tile[num82, num83 - 1].active() & !Main.tile[num82, num83 - 2].active() & !Main.tile[num82, num83 - 3].active()))
{
int num87 = num82;
int num88 = num82;
while (num87 > WorldGen.dMinX && num87 < WorldGen.dMaxX && !Main.tile[num87, num83].active() && !Main.tile[num87, num83 - 1].active() && !Main.tile[num87, num83 + 1].active())
{
num87 += num84;
}
num87 = Math.Abs(num82 - num87);
bool flag7 = false;
if (WorldGen.genRand.Next(2) == 0)
{
flag7 = true;
}
if (num87 > 5)
{
for (int num89 = WorldGen.genRand.Next(1, 4); num89 > 0; num89--)
{
Main.tile[num82, num83].active(true);
Main.tile[num82, num83].type = 19;
if ((int)Main.tile[num82, num83].wall == array[0])
{
Main.tile[num82, num83].frameY = (short)(18 * array2[0]);
}
if ((int)Main.tile[num82, num83].wall == array[1])
{
Main.tile[num82, num83].frameY = (short)(18 * array2[1]);
}
if ((int)Main.tile[num82, num83].wall == array[2])
{
Main.tile[num82, num83].frameY = (short)(18 * array2[2]);
}
if (flag7)
{
WorldGen.PlaceTile(num82, num83 - 1, 50, true, false, -1, 0);
if (WorldGen.genRand.Next(50) == 0 && Main.tile[num82, num83 - 1].type == 50)
{
Main.tile[num82, num83 - 1].frameX = 90;
}
}
num82 += num84;
}
num12 = 0;
num14++;
if (!flag7 && WorldGen.genRand.Next(2) == 0)
{
num82 = num88;
num83--;
int num90 = 0;
if (WorldGen.genRand.Next(4) == 0)
{
num90 = 1;
}
if (num90 == 0)
{
num90 = 13;
}
else
{
if (num90 == 1)
{
num90 = 49;
}
}
WorldGen.PlaceTile(num82, num83, num90, true, false, -1, 0);
if (Main.tile[num82, num83].type == 13)
{
if (WorldGen.genRand.Next(2) == 0)
{
Main.tile[num82, num83].frameX = 18;
}
else
{
Main.tile[num82, num83].frameX = 36;
}
}
}
}
}
}
}
if (num12 > num13)
{
num12 = 0;
num14++;
}
}
Main.statusText = Lang.gen[58] + " 95%";
int num91 = 1;
for (int num92 = 0; num92 < WorldGen.numDRooms; num92++)
{
int num93 = 0;
while (num93 < 1000)
{
int num94 = (int)((double)WorldGen.dRoomSize[num92] * 0.4);
int i2 = WorldGen.dRoomX[num92] + WorldGen.genRand.Next(-num94, num94 + 1);
int num95 = WorldGen.dRoomY[num92] + WorldGen.genRand.Next(-num94, num94 + 1);
int style3 = 2;
int num96;
if (num91 == 1)
{
num96 = 329;
}
else
{
if (num91 == 2)
{
num96 = 155;
}
else
{
if (num91 == 3)
{
num96 = 156;
}
else
{
if (num91 == 4)
{
num96 = 157;
}
else
{
if (num91 == 5)
{
num96 = 163;
}
else
{
if (num91 == 6)
{
num96 = 113;
}
else
{
if (num91 == 7)
{
num96 = 327;
style3 = 0;
}
else
{
num96 = 164;
num91 = 0;
}
}
}
}
}
}
}
if ((double)num95 < Main.worldSurface + 50.0)
{
num96 = 327;
style3 = 0;
}
if (num96 == 0 && WorldGen.genRand.Next(2) == 0)
{
num93 = 1000;
}
else
{
if (WorldGen.AddBuriedChest(i2, num95, num96, false, style3))
{
num93 += 1000;
num91++;
}
num93++;
}
}
}
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;
}
num12 = 0;
num13 = 1000;
num14 = 0;
int[] array3 = new int[3];
array3[0] = WorldGen.genRand.Next(7);
array3[1] = WorldGen.genRand.Next(7);
while (array3[1] == array3[0])
{
array3[1] = WorldGen.genRand.Next(7);
}
array3[2] = WorldGen.genRand.Next(7);
while (array3[2] == array3[0] || array3[2] == array3[1])
{
array3[2] = WorldGen.genRand.Next(7);
}
while (num14 < Main.maxTilesX / 150)
{
num12++;
int num97 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
int num98 = WorldGen.genRand.Next(WorldGen.dMinY, WorldGen.dMaxY);
if (Main.wallDungeon[(int)Main.tile[num97, num98].wall])
{
int num99 = num98;
while (num99 > WorldGen.dMinY)
{
if (Main.tile[num97, num99 - 1].active() && (int)Main.tile[num97, num99 - 1].type == tileType)
{
bool flag8 = false;
for (int num100 = num97 - 15; num100 < num97 + 15; num100++)
{
for (int num101 = num99 - 15; num101 < num99 + 15; num101++)
{
if (num100 > 0 && num100 < Main.maxTilesX && num101 > 0 && num101 < Main.maxTilesY && Main.tile[num100, num101].type == 42)
{
flag8 = true;
break;
}
}
}
if (Main.tile[num97 - 1, num99].active() || Main.tile[num97 + 1, num99].active() || Main.tile[num97 - 1, num99 + 1].active() || Main.tile[num97 + 1, num99 + 1].active() || Main.tile[num97, num99 + 2].active())
{
flag8 = true;
}
if (flag8)
{
break;
}
int style4 = array3[0];
if ((int)Main.tile[num97, num99].wall == array[1])
{
style4 = array3[1];
}
if ((int)Main.tile[num97, num99].wall == array[2])
{
style4 = array3[2];
}
WorldGen.Place1x2Top(num97, num99, 42, style4);
if (Main.tile[num97, num99].type == 42)
{
num12 = 0;
num14++;
for (int num102 = 0; num102 < 1000; num102++)
{
int num103 = num97 + WorldGen.genRand.Next(-12, 13);
int num104 = num99 + WorldGen.genRand.Next(3, 21);
if (!Main.tile[num103, num104].active() && !Main.tile[num103, num104 + 1].active() && Main.tile[num103 - 1, num104].type != 48 && Main.tile[num103 + 1, num104].type != 48 && Collision.CanHit(new Vector2((float)(num103 * 16), (float)(num104 * 16)), 16, 16, new Vector2((float)(num97 * 16), (float)(num99 * 16 + 1)), 16, 16))
{
WorldGen.PlaceTile(num103, num104, 136, true, false, -1, 0);
if (Main.tile[num103, num104].active())
{
while (num103 != num97 || num104 != num99)
{
Main.tile[num103, num104].wire(true);
if (num103 > num97)
{
num103--;
}
if (num103 < num97)
{
num103++;
}
Main.tile[num103, num104].wire(true);
if (num104 > num99)
{
num104--;
}
if (num104 < num99)
{
num104++;
}
Main.tile[num103, num104].wire(true);
}
if (Main.rand.Next(3) > 0)
{
Main.tile[num97, num99].frameX = 18;
Main.tile[num97, num99 + 1].frameX = 18;
break;
}
break;
}
}
}
break;
}
break;
}
else
{
num99--;
}
}
}
if (num12 > num13)
{
num14++;
num12 = 0;
}
}
num12 = 0;
num13 = 1000;
num14 = 0;
while (num14 < Main.maxTilesX / 500)
{
num12++;
int num105 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
int num106 = WorldGen.genRand.Next(WorldGen.dMinY, WorldGen.dMaxY);
while ((double)num106 < Main.worldSurface)
{
num106 = WorldGen.genRand.Next(WorldGen.dMinY, WorldGen.dMaxY);
}
if (Main.wallDungeon[(int)Main.tile[num105, num106].wall] && WorldGen.placeTrap(num105, num106, 0))
{
num12 = num13;
}
if (num12 > num13)
{
num14++;
num12 = 0;
}
}
float num107 = 8400000f / (float)Main.maxTilesX;
int num108 = 0;
while ((float)num108 < num107)
{
int num109 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
int num110 = WorldGen.genRand.Next(50, WorldGen.dMaxY);
while (!Main.wallDungeon[(int)Main.tile[num109, num110].wall] || Main.tile[num109, num110].active())
{
num109 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
num110 = WorldGen.genRand.Next(50, WorldGen.dMaxY);
}
if (Main.wallDungeon[(int)Main.tile[num109, num110].wall] && !Main.tile[num109, num110].active())
{
while (!WorldGen.SolidTile(num109, num110) && num110 < Main.maxTilesY - 200)
{
num110++;
}
num110--;
int num111 = num109;
int num112 = num109;
while (!Main.tile[num111, num110].active() && WorldGen.SolidTile(num111, num110 + 1))
{
num111--;
}
num111++;
while (!Main.tile[num112, num110].active() && WorldGen.SolidTile(num112, num110 + 1))
{
num112++;
}
num112--;
int num113 = num112 - num111;
int num114 = (num112 + num111) / 2;
if (!Main.tile[num114, num110].active() && Main.wallDungeon[(int)Main.tile[num114, num110].wall] && WorldGen.SolidTile(num114, num110 + 1) && Main.tile[num114, num110 + 1].type != 48)
{
int style5 = 13;
int style6 = 10;
int style7 = 11;
int num115 = 1;
int num116 = 46;
int style8 = 1;
int num117 = 5;
if (wallType == 8)
{
style5 = 14;
style6 = 11;
style7 = 12;
num115 = 2;
num116 = 47;
style8 = 2;
num117 = 6;
}
else
{
if (wallType == 9)
{
style5 = 15;
style6 = 12;
style7 = 13;
num115 = 3;
num116 = 48;
style8 = 3;
num117 = 7;
}
}
if (Main.tile[num114, num110].wall >= 94 && Main.tile[num114, num110].wall <= 105)
{
style5 = 17;
style6 = 14;
style7 = 15;
num115 = -1;
num116 = -1;
style8 = 5;
num117 = -1;
}
int num118 = WorldGen.genRand.Next(6);
while ((num118 == 2 && num116 == -1) || (num118 == 5 && num117 == -1))
{
num118 = WorldGen.genRand.Next(6);
}
int num119 = 0;
int num120 = 0;
if (num118 == 0)
{
num119 = 5;
num120 = 4;
}
if (num118 == 1)
{
num119 = 4;
num120 = 3;
}
if (num118 == 2)
{
num119 = 3;
num120 = 5;
}
if (num118 == 3)
{
num119 = 4;
num120 = 6;
}
if (num118 == 4)
{
num119 = 3;
num120 = 3;
}
if (num118 == 5)
{
num119 = 5;
num120 = 3;
}
for (int num121 = num114 - num119; num121 <= num114 + num119; num121++)
{
for (int num122 = num110 - num120; num122 <= num110; num122++)
{
if (Main.tile[num121, num122].active())
{
num118 = -1;
break;
}
}
}
if ((double)num113 < (double)num119 * 1.75)
{
num118 = -1;
}
if (num118 == 0)
{
WorldGen.PlaceTile(num114, num110, 14, true, false, -1, style6);
if (Main.tile[num114, num110].active())
{
if (!Main.tile[num114 - 2, num110].active())
{
WorldGen.PlaceTile(num114 - 2, num110, 15, true, false, -1, style5);
if (Main.tile[num114 - 2, num110].active())
{
Tile expr_273A = Main.tile[num114 - 2, num110];
expr_273A.frameX += 18;
Tile expr_275B = Main.tile[num114 - 2, num110 - 1];
expr_275B.frameX += 18;
}
}
if (!Main.tile[num114 + 2, num110].active())
{
WorldGen.PlaceTile(num114 + 2, num110, 15, true, false, -1, style5);
}
}
for (int num123 = num114 - 1; num123 <= num114 + 1; num123++)
{
if (WorldGen.genRand.Next(2) == 0 && !Main.tile[num123, num110 - 2].active())
{
int num124 = WorldGen.genRand.Next(5);
if (num115 != -1 && num124 <= 1 && !Main.tileLighted[(int)Main.tile[num123 - 1, num110 - 2].type])
{
WorldGen.PlaceTile(num123, num110 - 2, 33, true, false, -1, num115);
}
if (num124 == 2 && !Main.tileLighted[(int)Main.tile[num123 - 1, num110 - 2].type])
{
WorldGen.PlaceTile(num123, num110 - 2, 49, true, false, -1, 0);
}
if (num124 == 3)
{
WorldGen.PlaceTile(num123, num110 - 2, 50, true, false, -1, 0);
}
if (num124 == 4)
{
WorldGen.PlaceTile(num123, num110 - 2, 103, true, false, -1, 0);
}
}
}
}
else
{
if (num118 == 1)
{
WorldGen.PlaceTile(num114, num110, 18, true, false, -1, style7);
if (Main.tile[num114, num110].active())
{
if (WorldGen.genRand.Next(2) == 0)
{
if (!Main.tile[num114 - 1, num110].active())
{
WorldGen.PlaceTile(num114 - 1, num110, 15, true, false, -1, style5);
if (Main.tile[num114 - 1, num110].active())
{
Tile expr_2921 = Main.tile[num114 - 1, num110];
expr_2921.frameX += 18;
Tile expr_2942 = Main.tile[num114 - 1, num110 - 1];
expr_2942.frameX += 18;
}
}
}
else
{
if (!Main.tile[num114 + 2, num110].active())
{
WorldGen.PlaceTile(num114 + 2, num110, 15, true, false, -1, style5);
}
}
for (int num125 = num114; num125 <= num114 + 1; num125++)
{
if (WorldGen.genRand.Next(2) == 0 && !Main.tile[num125, num110 - 1].active())
{
int num126 = WorldGen.genRand.Next(5);
if (num115 != -1 && num126 <= 1 && !Main.tileLighted[(int)Main.tile[num125 - 1, num110 - 1].type])
{
WorldGen.PlaceTile(num125, num110 - 1, 33, true, false, -1, num115);
}
if (num126 == 2 && !Main.tileLighted[(int)Main.tile[num125 - 1, num110 - 1].type])
{
WorldGen.PlaceTile(num125, num110 - 1, 49, true, false, -1, 0);
}
if (num126 == 3)
{
WorldGen.PlaceTile(num125, num110 - 1, 50, true, false, -1, 0);
}
if (num126 == 4)
{
WorldGen.PlaceTile(num125, num110 - 1, 103, true, false, -1, 0);
}
}
}
}
}
else
{
if (num118 == 2)
{
WorldGen.PlaceTile(num114, num110, 105, true, false, -1, num116);
}
else
{
if (num118 == 3)
{
WorldGen.PlaceTile(num114, num110, 101, true, false, -1, style8);
}
else
{
if (num118 == 4)
{
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.PlaceTile(num114, num110, 15, true, false, -1, style5);
Tile expr_2ADA = Main.tile[num114, num110];
expr_2ADA.frameX += 18;
Tile expr_2AF9 = Main.tile[num114, num110 - 1];
expr_2AF9.frameX += 18;
}
else
{
WorldGen.PlaceTile(num114, num110, 15, true, false, -1, style5);
}
}
else
{
if (num118 == 5)
{
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.Place4x2(num114, num110, 79, 1, num117);
}
else
{
WorldGen.Place4x2(num114, num110, 79, -1, num117);
}
}
}
}
}
}
}
}
}
num108++;
}
num107 = 420000f / (float)Main.maxTilesX;
int num127 = 0;
while ((float)num127 < num107)
{
int num128 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
int num129 = WorldGen.genRand.Next((int)Main.worldSurface, WorldGen.dMaxY);
while (!Main.wallDungeon[(int)Main.tile[num128, num129].wall] || Main.tile[num128, num129].active())
{
num128 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
num129 = WorldGen.genRand.Next((int)Main.worldSurface, WorldGen.dMaxY);
}
int num131;
int num132;
int num133;
int num134;
for (int num130 = 0; num130 < 2; num130++)
{
num131 = num128;
num132 = num128;
while (!Main.tile[num131, num129].active() && Main.wallDungeon[(int)Main.tile[num131, num129].wall])
{
num131--;
}
num131++;
while (!Main.tile[num132, num129].active() && Main.wallDungeon[(int)Main.tile[num132, num129].wall])
{
num132++;
}
num132--;
num128 = (num131 + num132) / 2;
num133 = num129;
num134 = num129;
while (!Main.tile[num128, num133].active() && Main.wallDungeon[(int)Main.tile[num128, num133].wall])
{
num133--;
}
num133++;
while (!Main.tile[num128, num134].active() && Main.wallDungeon[(int)Main.tile[num128, num134].wall])
{
num134++;
}
num134--;
num129 = (num133 + num134) / 2;
}
num131 = num128;
num132 = num128;
while (!Main.tile[num131, num129].active() && !Main.tile[num131, num129 - 1].active() && !Main.tile[num131, num129 + 1].active())
{
num131--;
}
num131++;
while (!Main.tile[num132, num129].active() && !Main.tile[num132, num129 - 1].active() && !Main.tile[num132, num129 + 1].active())
{
num132++;
}
num132--;
num133 = num129;
num134 = num129;
while (!Main.tile[num128, num133].active() && !Main.tile[num128 - 1, num133].active() && !Main.tile[num128 + 1, num133].active())
{
num133--;
}
num133++;
while (!Main.tile[num128, num134].active() && !Main.tile[num128 - 1, num134].active() && !Main.tile[num128 + 1, num134].active())
{
num134++;
}
num134--;
num128 = (num131 + num132) / 2;
num129 = (num133 + num134) / 2;
int num135 = num132 - num131;
int num136 = num134 - num133;
if (num135 > 7 && num136 > 5)
{
bool[] array4 = new bool[3];
array4[0] = true;
if (num135 > num136 * 3 && num135 > 21)
{
array4[1] = true;
}
if (num136 > num135 * 3 && num136 > 21)
{
array4[2] = true;
}
int num137 = WorldGen.genRand.Next(3);
if ((int)Main.tile[num128, num129].wall == array[0])
{
num137 = 0;
}
while (!array4[num137])
{
num137 = WorldGen.genRand.Next(3);
}
if (WorldGen.nearPicture2(num128, num129))
{
num137 = -1;
}
if (num137 == 0)
{
Vector2 vector = WorldGen.randPictureTile();
if ((int)Main.tile[num128, num129].wall != array[0])
{
vector = WorldGen.randBoneTile();
}
int type = (int)vector.X;
int style9 = (int)vector.Y;
if (!WorldGen.nearPicture(num128, num129))
{
WorldGen.PlaceTile(num128, num129, type, true, false, -1, style9);
}
}
else
{
if (num137 == 1)
{
Vector2 vector2 = WorldGen.randPictureTile();
if ((int)Main.tile[num128, num129].wall != array[0])
{
vector2 = WorldGen.randBoneTile();
}
int type2 = (int)vector2.X;
int style10 = (int)vector2.Y;
if (!Main.tile[num128, num129].active())
{
WorldGen.PlaceTile(num128, num129, type2, true, false, -1, style10);
}
int num138 = num128;
int num139 = num129;
int num140 = num129;
for (int num141 = 0; num141 < 2; num141++)
{
num128 += 7;
num133 = num140;
num134 = num140;
while (!Main.tile[num128, num133].active() && !Main.tile[num128 - 1, num133].active() && !Main.tile[num128 + 1, num133].active())
{
num133--;
}
num133++;
while (!Main.tile[num128, num134].active() && !Main.tile[num128 - 1, num134].active() && !Main.tile[num128 + 1, num134].active())
{
num134++;
}
num134--;
num140 = (num133 + num134) / 2;
vector2 = WorldGen.randPictureTile();
if ((int)Main.tile[num128, num140].wall != array[0])
{
vector2 = WorldGen.randBoneTile();
}
type2 = (int)vector2.X;
style10 = (int)vector2.Y;
if (Math.Abs(num139 - num140) >= 4 || WorldGen.nearPicture(num128, num140))
{
break;
}
WorldGen.PlaceTile(num128, num140, type2, true, false, -1, style10);
}
num140 = num129;
num128 = num138;
for (int num142 = 0; num142 < 2; num142++)
{
num128 -= 7;
num133 = num140;
num134 = num140;
while (!Main.tile[num128, num133].active() && !Main.tile[num128 - 1, num133].active() && !Main.tile[num128 + 1, num133].active())
{
num133--;
}
num133++;
while (!Main.tile[num128, num134].active() && !Main.tile[num128 - 1, num134].active() && !Main.tile[num128 + 1, num134].active())
{
num134++;
}
num134--;
num140 = (num133 + num134) / 2;
vector2 = WorldGen.randPictureTile();
if ((int)Main.tile[num128, num140].wall != array[0])
{
vector2 = WorldGen.randBoneTile();
}
type2 = (int)vector2.X;
style10 = (int)vector2.Y;
if (Math.Abs(num139 - num140) >= 4 || WorldGen.nearPicture(num128, num140))
{
break;
}
WorldGen.PlaceTile(num128, num140, type2, true, false, -1, style10);
}
}
else
{
if (num137 == 2)
{
Vector2 vector3 = WorldGen.randPictureTile();
if ((int)Main.tile[num128, num129].wall != array[0])
{
vector3 = WorldGen.randBoneTile();
}
int type3 = (int)vector3.X;
int style11 = (int)vector3.Y;
if (!Main.tile[num128, num129].active())
{
WorldGen.PlaceTile(num128, num129, type3, true, false, -1, style11);
}
int num143 = num129;
int num144 = num128;
int num145 = num128;
for (int num146 = 0; num146 < 3; num146++)
{
num129 += 7;
num131 = num145;
num132 = num145;
while (!Main.tile[num131, num129].active() && !Main.tile[num131, num129 - 1].active() && !Main.tile[num131, num129 + 1].active())
{
num131--;
}
num131++;
while (!Main.tile[num132, num129].active() && !Main.tile[num132, num129 - 1].active() && !Main.tile[num132, num129 + 1].active())
{
num132++;
}
num132--;
num145 = (num131 + num132) / 2;
vector3 = WorldGen.randPictureTile();
if ((int)Main.tile[num145, num129].wall != array[0])
{
vector3 = WorldGen.randBoneTile();
}
type3 = (int)vector3.X;
style11 = (int)vector3.Y;
if (Math.Abs(num144 - num145) >= 4 || WorldGen.nearPicture(num145, num129))
{
break;
}
WorldGen.PlaceTile(num145, num129, type3, true, false, -1, style11);
}
num145 = num128;
num129 = num143;
for (int num147 = 0; num147 < 3; num147++)
{
num129 -= 7;
num131 = num145;
num132 = num145;
while (!Main.tile[num131, num129].active() && !Main.tile[num131, num129 - 1].active() && !Main.tile[num131, num129 + 1].active())
{
num131--;
}
num131++;
while (!Main.tile[num132, num129].active() && !Main.tile[num132, num129 - 1].active() && !Main.tile[num132, num129 + 1].active())
{
num132++;
}
num132--;
num145 = (num131 + num132) / 2;
vector3 = WorldGen.randPictureTile();
if ((int)Main.tile[num145, num129].wall != array[0])
{
vector3 = WorldGen.randBoneTile();
}
type3 = (int)vector3.X;
style11 = (int)vector3.Y;
if (Math.Abs(num144 - num145) >= 4 || WorldGen.nearPicture(num145, num129))
{
break;
}
WorldGen.PlaceTile(num145, num129, type3, true, false, -1, style11);
}
}
}
}
}
num127++;
}
num107 = 840000f / (float)Main.maxTilesX;
int num148 = 0;
while ((float)num148 < num107)
{
int num149 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
int num150 = WorldGen.genRand.Next(WorldGen.dMinY, WorldGen.dMaxY);
while (!Main.wallDungeon[(int)Main.tile[num149, num150].wall] || Main.tile[num149, num150].active())
{
num149 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
num150 = WorldGen.genRand.Next(WorldGen.dMinY, WorldGen.dMaxY);
}
while (!WorldGen.SolidTile(num149, num150) && num150 > 10)
{
num150--;
}
num150++;
if (Main.wallDungeon[(int)Main.tile[num149, num150].wall] && Main.tile[num149, num150 - 1].type != 48 && !Main.tile[num149, num150].active() && !Main.tile[num149, num150 + 1].active() && !Main.tile[num149, num150 + 2].active() && !Main.tile[num149, num150 + 3].active())
{
bool flag9 = true;
for (int num151 = num149 - 1; num151 <= num149 + 1; num151++)
{
for (int num152 = num150; num152 <= num150 + 3; num152++)
{
if (Main.tile[num151, num152].active() && (Main.tile[num151, num152].type == 10 || Main.tile[num151, num152].type == 11 || Main.tile[num151, num152].type == 91))
{
flag9 = false;
}
}
}
if (flag9)
{
int num153 = 10;
if ((int)Main.tile[num149, num150].wall == array[1])
{
num153 = 12;
}
if ((int)Main.tile[num149, num150].wall == array[2])
{
num153 = 14;
}
num153 += WorldGen.genRand.Next(2);
WorldGen.PlaceTile(num149, num150, 91, true, false, -1, num153);
}
}
num148++;
}
}
public static Vector2 randBoneTile()
{
int num = WorldGen.genRand.Next(2);
int num2 = 0;
if (num == 0)
{
num = 240;
num2 = WorldGen.genRand.Next(2);
if (num2 == 0)
{
num2 = 16;
}
else
{
if (num2 == 1)
{
num2 = 17;
}
}
}
else
{
if (num == 1)
{
num = 241;
num2 = WorldGen.genRand.Next(9);
}
}
return new Vector2((float)num, (float)num2);
}
public static Vector2 randHellPicture()
{
int num = WorldGen.genRand.Next(4);
if (num == 1)
{
num = WorldGen.genRand.Next(4);
}
int num2;
if (num == 0)
{
num = 240;
num2 = WorldGen.genRand.Next(5);
if (num2 == 0)
{
num2 = 27;
}
else
{
if (num2 == 1)
{
num2 = 29;
}
else
{
if (num2 == 2)
{
num2 = 30;
}
else
{
if (num2 == 3)
{
num2 = 31;
}
else
{
if (num2 == 4)
{
num2 = 32;
}
}
}
}
}
}
else
{
if (num == 1)
{
num = 242;
num2 = 14;
}
else
{
if (num == 2)
{
num = 245;
num2 = WorldGen.genRand.Next(3);
if (num2 == 0)
{
num2 = 1;
}
else
{
if (num2 == 1)
{
num2 = 2;
}
else
{
if (num2 == 2)
{
num2 = 4;
}
}
}
}
else
{
num = 246;
num2 = WorldGen.genRand.Next(3);
if (num2 == 0)
{
num2 = 0;
}
else
{
if (num2 == 1)
{
num2 = 16;
}
else
{
if (num2 == 2)
{
num2 = 17;
}
}
}
}
}
}
return new Vector2((float)num, (float)num2);
}
public static Vector2 randHousePicture()
{
int num = WorldGen.genRand.Next(4);
int num2;
if (num <= 1)
{
num = 240;
int maxValue = 10;
num2 = WorldGen.genRand.Next(maxValue);
if (num2 == 9)
{
num2 = WorldGen.genRand.Next(maxValue);
}
if (num2 == 5)
{
num2 = WorldGen.genRand.Next(maxValue);
}
if (num2 == 6)
{
num2 = WorldGen.genRand.Next(maxValue);
}
if (num2 == 0)
{
num2 = 26;
}
else
{
if (num2 == 1)
{
num2 = 28;
}
else
{
if (num2 == 2)
{
num2 = 20;
}
else
{
if (num2 == 3)
{
num2 = 21;
}
else
{
if (num2 == 4)
{
num2 = 22;
}
else
{
if (num2 == 5)
{
num2 = 24;
}
else
{
if (num2 == 6)
{
num2 = 25;
}
else
{
if (num2 == 7)
{
num2 = 33;
}
else
{
if (num2 == 8)
{
num2 = 34;
}
else
{
if (num2 == 9)
{
num2 = 35;
}
}
}
}
}
}
}
}
}
}
}
else
{
if (num == 2)
{
int maxValue2 = 4;
num = 245;
num2 = WorldGen.genRand.Next(maxValue2);
if (num2 == 2)
{
num2 = WorldGen.genRand.Next(maxValue2);
}
if (num2 == 0)
{
num2 = WorldGen.genRand.Next(maxValue2);
}
if (num2 == 0)
{
num2 = WorldGen.genRand.Next(maxValue2);
}
if (num2 == 0)
{
num2 = WorldGen.genRand.Next(maxValue2);
}
if (num2 == 0)
{
num2 = 0;
}
else
{
if (num2 == 1)
{
num2 = 3;
}
else
{
if (num2 == 2)
{
num2 = 5;
}
else
{
if (num2 == 3)
{
num2 = 6;
}
}
}
}
}
else
{
num = 246;
num2 = 1;
}
}
return new Vector2((float)num, (float)num2);
}
public static Vector2 randPictureTile()
{
int num = WorldGen.genRand.Next(3);
int num2 = 0;
if (num <= 1)
{
int maxValue = 7;
num = 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 (num == 2)
{
num = 242;
int maxValue2 = 16;
num2 = WorldGen.genRand.Next(maxValue2);
for (int i = 0; i < 2; i++)
{
if (num2 == 6)
{
num2 = WorldGen.genRand.Next(maxValue2);
}
if (num2 == 13)
{
num2 = WorldGen.genRand.Next(maxValue2);
}
if (num2 == 14)
{
num2 = WorldGen.genRand.Next(maxValue2);
}
if (num2 == 15)
{
num2 = WorldGen.genRand.Next(maxValue2);
}
}
if (num2 == 14)
{
num2 = 15;
}
if (num2 == 15)
{
num2 = 16;
}
}
}
return new Vector2((float)num, (float)num2);
}
public static void DungeonStairs(int i, int j, int tileType, int wallType)
{
Vector2 value = default(Vector2);
double num = (double)WorldGen.genRand.Next(5, 9);
Vector2 value2;
value2.X = (float)i;
value2.Y = (float)j;
int k = WorldGen.genRand.Next(10, 30);
int num2;
if (i > WorldGen.dEnteranceX)
{
num2 = -1;
}
else
{
num2 = 1;
}
if (i > Main.maxTilesX - 400)
{
num2 = -1;
}
else
{
if (i < 400)
{
num2 = 1;
}
}
value.Y = -1f;
value.X = (float)num2;
if (WorldGen.genRand.Next(3) != 0)
{
value.X *= 1f + (float)WorldGen.genRand.Next(0, 200) * 0.01f;
}
else
{
if (WorldGen.genRand.Next(3) == 0)
{
value.X *= (float)WorldGen.genRand.Next(50, 76) * 0.01f;
}
else
{
if (WorldGen.genRand.Next(6) == 0)
{
value.Y *= 2f;
}
}
}
if (WorldGen.dungeonX < Main.maxTilesX / 2 && value.X < 0f && (double)value.X < 0.5)
{
value.X = -0.5f;
}
if (WorldGen.dungeonX > Main.maxTilesX / 2 && value.X > 0f && (double)value.X > 0.5)
{
value.X = -0.5f;
}
while (k > 0)
{
k--;
int num3 = (int)((double)value2.X - num - 4.0 - (double)WorldGen.genRand.Next(6));
int num4 = (int)((double)value2.X + num + 4.0 + (double)WorldGen.genRand.Next(6));
int num5 = (int)((double)value2.Y - num - 4.0);
int num6 = (int)((double)value2.Y + num + 4.0 + (double)WorldGen.genRand.Next(6));
if (num3 < 0)
{
num3 = 0;
}
if (num4 > Main.maxTilesX)
{
num4 = Main.maxTilesX;
}
if (num5 < 0)
{
num5 = 0;
}
if (num6 > Main.maxTilesY)
{
num6 = Main.maxTilesY;
}
int num7 = 1;
if (value2.X > (float)(Main.maxTilesX / 2))
{
num7 = -1;
}
int num8 = (int)(value2.X + (float)WorldGen.dxStrength1 * 0.6f * (float)num7 + (float)WorldGen.dxStrength2 * (float)num7);
int num9 = (int)(WorldGen.dyStrength2 * 0.5);
if ((double)value2.Y < Main.worldSurface - 5.0 && Main.tile[num8, (int)((double)value2.Y - num - 6.0 + (double)num9)].wall == 0 && Main.tile[num8, (int)((double)value2.Y - num - 7.0 + (double)num9)].wall == 0 && Main.tile[num8, (int)((double)value2.Y - num - 8.0 + (double)num9)].wall == 0)
{
WorldGen.dSurface = true;
WorldGen.TileRunner(num8, (int)((double)value2.Y - num - 6.0 + (double)num9), (double)WorldGen.genRand.Next(25, 35), WorldGen.genRand.Next(10, 20), -1, false, 0f, -1f, false, true);
}
for (int l = num3; l < num4; l++)
{
for (int m = num5; m < num6; m++)
{
Main.tile[l, m].liquid = 0;
if (!Main.wallDungeon[(int)Main.tile[l, m].wall])
{
Main.tile[l, m].wall = 0;
Main.tile[l, m].active(true);
Main.tile[l, m].type = (byte)tileType;
}
}
}
for (int n = num3 + 1; n < num4 - 1; n++)
{
for (int num10 = num5 + 1; num10 < num6 - 1; num10++)
{
Main.tile[n, num10].wall = (byte)wallType;
}
}
int num11 = 0;
if (WorldGen.genRand.Next((int)num) == 0)
{
num11 = WorldGen.genRand.Next(1, 3);
}
num3 = (int)((double)value2.X - num * 0.5 - (double)num11);
num4 = (int)((double)value2.X + num * 0.5 + (double)num11);
num5 = (int)((double)value2.Y - num * 0.5 - (double)num11);
num6 = (int)((double)value2.Y + num * 0.5 + (double)num11);
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 num12 = num3; num12 < num4; num12++)
{
for (int num13 = num5; num13 < num6; num13++)
{
Main.tile[num12, num13].active(false);
WorldGen.PlaceWall(num12, num13, wallType, true);
}
}
if (WorldGen.dSurface)
{
k = 0;
}
value2 += value;
if ((double)value2.Y < Main.worldSurface)
{
value.Y *= 0.98f;
}
}
WorldGen.dungeonX = (int)value2.X;
WorldGen.dungeonY = (int)value2.Y;
}
public static void DungeonHalls(int i, int j, int tileType, int wallType, bool forceX = false)
{
Vector2 value = default(Vector2);
double num = (double)WorldGen.genRand.Next(4, 6);
double num2 = num;
Vector2 vector = default(Vector2);
Vector2 value2 = default(Vector2);
Vector2 value3;
value3.X = (float)i;
value3.Y = (float)j;
int k = WorldGen.genRand.Next(35, 80);
if (forceX)
{
k += 20;
WorldGen.lastDungeonHall = default(Vector2);
}
else
{
if (WorldGen.genRand.Next(5) == 0)
{
num *= 2.0;
k /= 2;
}
}
bool flag = false;
bool flag2 = false;
bool flag3 = true;
while (!flag)
{
bool flag4 = false;
int num5;
if (flag3 && !forceX)
{
bool flag5 = true;
bool flag6 = true;
bool flag7 = true;
bool flag8 = true;
int num3 = k;
bool flag9 = false;
for (int l = j; l > j - num3; l--)
{
if ((int)Main.tile[i, l].wall == wallType)
{
if (flag9)
{
flag5 = false;
break;
}
}
else
{
flag9 = true;
}
}
flag9 = false;
for (int m = j; m < j + num3; m++)
{
if ((int)Main.tile[i, m].wall == wallType)
{
if (flag9)
{
flag6 = false;
break;
}
}
else
{
flag9 = true;
}
}
flag9 = false;
for (int n = i; n > i - num3; n--)
{
if ((int)Main.tile[n, j].wall == wallType)
{
if (flag9)
{
flag7 = false;
break;
}
}
else
{
flag9 = true;
}
}
flag9 = false;
for (int num4 = i; num4 < i + num3; num4++)
{
if ((int)Main.tile[num4, j].wall == wallType)
{
if (flag9)
{
flag8 = false;
break;
}
}
else
{
flag9 = true;
}
}
if (!flag7 && !flag8 && !flag5 && !flag6)
{
if (WorldGen.genRand.Next(2) == 0)
{
num5 = -1;
}
else
{
num5 = 1;
}
if (WorldGen.genRand.Next(2) == 0)
{
flag4 = true;
}
}
else
{
int num6 = WorldGen.genRand.Next(4);
do
{
num6 = WorldGen.genRand.Next(4);
}
while ((num6 != 0 || !flag5) && (num6 != 1 || !flag6) && (num6 != 2 || !flag7) && (num6 != 3 || !flag8));
if (num6 == 0)
{
num5 = -1;
}
else
{
if (num6 == 1)
{
num5 = 1;
}
else
{
flag4 = true;
if (num6 == 2)
{
num5 = -1;
}
else
{
num5 = 1;
}
}
}
}
}
else
{
if (WorldGen.genRand.Next(2) == 0)
{
num5 = -1;
}
else
{
num5 = 1;
}
if (WorldGen.genRand.Next(2) == 0)
{
flag4 = true;
}
}
flag3 = false;
if (forceX)
{
flag4 = true;
}
if (flag4)
{
vector.Y = 0f;
vector.X = (float)num5;
value2.Y = 0f;
value2.X = (float)(-(float)num5);
value.Y = 0f;
value.X = (float)num5;
if (WorldGen.genRand.Next(3) == 0)
{
if (WorldGen.genRand.Next(2) == 0)
{
value.Y = -0.2f;
}
else
{
value.Y = 0.2f;
}
}
}
else
{
num += 1.0;
value.Y = (float)num5;
value.X = 0f;
vector.X = 0f;
vector.Y = (float)num5;
value2.X = 0f;
value2.Y = (float)(-(float)num5);
if (WorldGen.genRand.Next(3) != 0)
{
flag2 = true;
if (WorldGen.genRand.Next(2) == 0)
{
value.X = (float)WorldGen.genRand.Next(10, 20) * 0.1f;
}
else
{
value.X = (float)(-(float)WorldGen.genRand.Next(10, 20)) * 0.1f;
}
}
else
{
if (WorldGen.genRand.Next(2) == 0)
{
if (WorldGen.genRand.Next(2) == 0)
{
value.X = (float)WorldGen.genRand.Next(20, 40) * 0.01f;
}
else
{
value.X = (float)(-(float)WorldGen.genRand.Next(20, 40)) * 0.01f;
}
}
else
{
k /= 2;
}
}
}
if (WorldGen.lastDungeonHall != value2)
{
flag = true;
}
}
int num7 = 0;
if (!forceX)
{
if (value3.X > (float)(WorldGen.lastMaxTilesX - 200))
{
int num5 = -1;
vector.Y = 0f;
vector.X = (float)num5;
value.Y = 0f;
value.X = (float)num5;
if (WorldGen.genRand.Next(3) == 0)
{
if (WorldGen.genRand.Next(2) == 0)
{
value.Y = -0.2f;
}
else
{
value.Y = 0.2f;
}
}
}
else
{
if (value3.X < 200f)
{
int num5 = 1;
vector.Y = 0f;
vector.X = (float)num5;
value.Y = 0f;
value.X = (float)num5;
if (WorldGen.genRand.Next(3) == 0)
{
if (WorldGen.genRand.Next(2) == 0)
{
value.Y = -0.2f;
}
else
{
value.Y = 0.2f;
}
}
}
else
{
if (value3.Y > (float)(WorldGen.lastMaxTilesY - 300))
{
int num5 = -1;
num += 1.0;
value.Y = (float)num5;
value.X = 0f;
vector.X = 0f;
vector.Y = (float)num5;
if (WorldGen.genRand.Next(2) == 0)
{
if (WorldGen.genRand.Next(2) == 0)
{
value.X = (float)WorldGen.genRand.Next(20, 50) * 0.01f;
}
else
{
value.X = (float)(-(float)WorldGen.genRand.Next(20, 50)) * 0.01f;
}
}
}
else
{
if ((double)value3.Y < Main.rockLayer + 100.0)
{
int num5 = 1;
num += 1.0;
value.Y = (float)num5;
value.X = 0f;
vector.X = 0f;
vector.Y = (float)num5;
if (WorldGen.genRand.Next(3) != 0)
{
flag2 = true;
if (WorldGen.genRand.Next(2) == 0)
{
value.X = (float)WorldGen.genRand.Next(10, 20) * 0.1f;
}
else
{
value.X = (float)(-(float)WorldGen.genRand.Next(10, 20)) * 0.1f;
}
}
else
{
if (WorldGen.genRand.Next(2) == 0)
{
if (WorldGen.genRand.Next(2) == 0)
{
value.X = (float)WorldGen.genRand.Next(20, 50) * 0.01f;
}
else
{
value.X = (float)WorldGen.genRand.Next(20, 50) * 0.01f;
}
}
}
}
else
{
if (value3.X < (float)(Main.maxTilesX / 2) && (double)value3.X > (double)Main.maxTilesX * 0.25)
{
int num5 = -1;
vector.Y = 0f;
vector.X = (float)num5;
value.Y = 0f;
value.X = (float)num5;
if (WorldGen.genRand.Next(3) == 0)
{
if (WorldGen.genRand.Next(2) == 0)
{
value.Y = -0.2f;
}
else
{
value.Y = 0.2f;
}
}
}
else
{
if (value3.X > (float)(Main.maxTilesX / 2) && (double)value3.X < (double)Main.maxTilesX * 0.75)
{
int num5 = 1;
vector.Y = 0f;
vector.X = (float)num5;
value.Y = 0f;
value.X = (float)num5;
if (WorldGen.genRand.Next(3) == 0)
{
if (WorldGen.genRand.Next(2) == 0)
{
value.Y = -0.2f;
}
else
{
value.Y = 0.2f;
}
}
}
}
}
}
}
}
}
if (vector.Y == 0f)
{
WorldGen.DDoorX[WorldGen.numDDoors] = (int)value3.X;
WorldGen.DDoorY[WorldGen.numDDoors] = (int)value3.Y;
WorldGen.DDoorPos[WorldGen.numDDoors] = 0;
WorldGen.numDDoors++;
}
else
{
WorldGen.DPlatX[WorldGen.numDPlats] = (int)value3.X;
WorldGen.DPlatY[WorldGen.numDPlats] = (int)value3.Y;
WorldGen.numDPlats++;
}
WorldGen.lastDungeonHall = vector;
if (Math.Abs(value.X) > Math.Abs(value.Y) && WorldGen.genRand.Next(3) != 0)
{
num = (double)((int)((double)((float)num2) * ((double)WorldGen.genRand.Next(110, 150) * 0.01)));
}
while (k > 0)
{
num7++;
if (vector.X > 0f && value3.X > (float)(Main.maxTilesX - 100))
{
k = 0;
}
else
{
if (vector.X < 0f && value3.X < 100f)
{
k = 0;
}
else
{
if (vector.Y > 0f && value3.Y > (float)(Main.maxTilesY - 100))
{
k = 0;
}
else
{
if (vector.Y < 0f && (double)value3.Y < Main.rockLayer + 50.0)
{
k = 0;
}
}
}
}
k--;
int num8 = (int)((double)value3.X - num - 4.0 - (double)WorldGen.genRand.Next(6));
int num9 = (int)((double)value3.X + num + 4.0 + (double)WorldGen.genRand.Next(6));
int num10 = (int)((double)value3.Y - num - 4.0 - (double)WorldGen.genRand.Next(6));
int num11 = (int)((double)value3.Y + num + 4.0 + (double)WorldGen.genRand.Next(6));
if (num8 < 0)
{
num8 = 0;
}
if (num9 > Main.maxTilesX)
{
num9 = Main.maxTilesX;
}
if (num10 < 0)
{
num10 = 0;
}
if (num11 > Main.maxTilesY)
{
num11 = Main.maxTilesY;
}
for (int num12 = num8; num12 < num9; num12++)
{
for (int num13 = num10; num13 < num11; num13++)
{
if (num12 < WorldGen.dMinX)
{
WorldGen.dMinX = num12;
}
if (num12 > WorldGen.dMaxX)
{
WorldGen.dMaxX = num12;
}
if (num13 > WorldGen.dMaxY)
{
WorldGen.dMaxY = num13;
}
Main.tile[num12, num13].liquid = 0;
if (!Main.wallDungeon[(int)Main.tile[num12, num13].wall])
{
Main.tile[num12, num13].active(true);
Main.tile[num12, num13].type = (byte)tileType;
}
}
}
for (int num14 = num8 + 1; num14 < num9 - 1; num14++)
{
for (int num15 = num10 + 1; num15 < num11 - 1; num15++)
{
Main.tile[num14, num15].wall = (byte)wallType;
}
}
int num16 = 0;
if (value.Y == 0f && WorldGen.genRand.Next((int)num + 1) == 0)
{
num16 = WorldGen.genRand.Next(1, 3);
}
else
{
if (value.X == 0f && WorldGen.genRand.Next((int)num - 1) == 0)
{
num16 = WorldGen.genRand.Next(1, 3);
}
else
{
if (WorldGen.genRand.Next((int)num * 3) == 0)
{
num16 = WorldGen.genRand.Next(1, 3);
}
}
}
num8 = (int)((double)value3.X - num * 0.5 - (double)num16);
num9 = (int)((double)value3.X + num * 0.5 + (double)num16);
num10 = (int)((double)value3.Y - num * 0.5 - (double)num16);
num11 = (int)((double)value3.Y + num * 0.5 + (double)num16);
if (num8 < 0)
{
num8 = 0;
}
if (num9 > Main.maxTilesX)
{
num9 = Main.maxTilesX;
}
if (num10 < 0)
{
num10 = 0;
}
if (num11 > Main.maxTilesY)
{
num11 = Main.maxTilesY;
}
for (int num17 = num8; num17 < num9; num17++)
{
for (int num18 = num10; num18 < num11; num18++)
{
Main.tile[num17, num18].active(false);
Main.tile[num17, num18].wall = (byte)wallType;
}
}
value3 += value;
if (flag2 && num7 > WorldGen.genRand.Next(10, 20))
{
num7 = 0;
value.X *= -1f;
}
}
WorldGen.dungeonX = (int)value3.X;
WorldGen.dungeonY = (int)value3.Y;
if (vector.Y == 0f)
{
WorldGen.DDoorX[WorldGen.numDDoors] = (int)value3.X;
WorldGen.DDoorY[WorldGen.numDDoors] = (int)value3.Y;
WorldGen.DDoorPos[WorldGen.numDDoors] = 0;
WorldGen.numDDoors++;
return;
}
WorldGen.DPlatX[WorldGen.numDPlats] = (int)value3.X;
WorldGen.DPlatY[WorldGen.numDPlats] = (int)value3.Y;
WorldGen.numDPlats++;
}
public static void DungeonRoom(int i, int j, int tileType, int wallType)
{
double num = (double)WorldGen.genRand.Next(15, 30);
Vector2 value;
value.X = (float)WorldGen.genRand.Next(-10, 11) * 0.1f;
value.Y = (float)WorldGen.genRand.Next(-10, 11) * 0.1f;
Vector2 value2;
value2.X = (float)i;
value2.Y = (float)j - (float)num / 2f;
int k = WorldGen.genRand.Next(10, 20);
double num2 = (double)value2.X;
double num3 = (double)value2.X;
double num4 = (double)value2.Y;
double num5 = (double)value2.Y;
while (k > 0)
{
k--;
int num6 = (int)((double)value2.X - num * 0.800000011920929 - 5.0);
int num7 = (int)((double)value2.X + num * 0.800000011920929 + 5.0);
int num8 = (int)((double)value2.Y - num * 0.800000011920929 - 5.0);
int num9 = (int)((double)value2.Y + num * 0.800000011920929 + 5.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 l = num6; l < num7; l++)
{
for (int m = num8; m < num9; m++)
{
if (l < WorldGen.dMinX)
{
WorldGen.dMinX = l;
}
if (l > WorldGen.dMaxX)
{
WorldGen.dMaxX = l;
}
if (m > WorldGen.dMaxY)
{
WorldGen.dMaxY = m;
}
Main.tile[l, m].liquid = 0;
if (!Main.wallDungeon[(int)Main.tile[l, m].wall])
{
Main.tile[l, m].active(true);
Main.tile[l, m].type = (byte)tileType;
}
}
}
for (int n = num6 + 1; n < num7 - 1; n++)
{
for (int num10 = num8 + 1; num10 < num9 - 1; num10++)
{
Main.tile[n, num10].wall = (byte)wallType;
}
}
num6 = (int)((double)value2.X - num * 0.5);
num7 = (int)((double)value2.X + num * 0.5);
num8 = (int)((double)value2.Y - num * 0.5);
num9 = (int)((double)value2.Y + num * 0.5);
if (num6 < 0)
{
num6 = 0;
}
if (num7 > Main.maxTilesX)
{
num7 = Main.maxTilesX;
}
if (num8 < 0)
{
num8 = 0;
}
if (num9 > Main.maxTilesY)
{
num9 = Main.maxTilesY;
}
if ((double)num6 < num2)
{
num2 = (double)num6;
}
if ((double)num7 > num3)
{
num3 = (double)num7;
}
if ((double)num8 < num4)
{
num4 = (double)num8;
}
if ((double)num9 > num5)
{
num5 = (double)num9;
}
for (int num11 = num6; num11 < num7; num11++)
{
for (int num12 = num8; num12 < num9; num12++)
{
Main.tile[num11, num12].active(false);
Main.tile[num11, num12].wall = (byte)wallType;
}
}
value2 += value;
value.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
value.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
if (value.X > 1f)
{
value.X = 1f;
}
if (value.X < -1f)
{
value.X = -1f;
}
if (value.Y > 1f)
{
value.Y = 1f;
}
if (value.Y < -1f)
{
value.Y = -1f;
}
}
WorldGen.dRoomX[WorldGen.numDRooms] = (int)value2.X;
WorldGen.dRoomY[WorldGen.numDRooms] = (int)value2.Y;
WorldGen.dRoomSize[WorldGen.numDRooms] = (int)num;
WorldGen.dRoomL[WorldGen.numDRooms] = (int)num2;
WorldGen.dRoomR[WorldGen.numDRooms] = (int)num3;
WorldGen.dRoomT[WorldGen.numDRooms] = (int)num4;
WorldGen.dRoomB[WorldGen.numDRooms] = (int)num5;
WorldGen.dRoomTreasure[WorldGen.numDRooms] = false;
WorldGen.numDRooms++;
}
public static void DungeonEnt(int i, int j, int tileType, int wallType)
{
int num = 60;
for (int k = i - num; k < i + num; k++)
{
for (int l = j - num; l < j + num; l++)
{
Main.tile[k, l].liquid = 0;
Main.tile[k, l].lava(false);
}
}
double num2 = WorldGen.dxStrength1;
double num3 = WorldGen.dyStrength1;
Vector2 vector;
vector.X = (float)i;
vector.Y = (float)j - (float)num3 / 2f;
WorldGen.dMinY = (int)vector.Y;
int num4 = 1;
if (i > Main.maxTilesX / 2)
{
num4 = -1;
}
int num5 = (int)((double)vector.X - num2 * 0.60000002384185791 - (double)WorldGen.genRand.Next(2, 5));
int num6 = (int)((double)vector.X + num2 * 0.60000002384185791 + (double)WorldGen.genRand.Next(2, 5));
int num7 = (int)((double)vector.Y - num3 * 0.60000002384185791 - (double)WorldGen.genRand.Next(2, 5));
int num8 = (int)((double)vector.Y + num3 * 0.60000002384185791 + (double)WorldGen.genRand.Next(8, 16));
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 m = num5; m < num6; m++)
{
for (int n = num7; n < num8; n++)
{
Main.tile[m, n].liquid = 0;
if ((int)Main.tile[m, n].wall != wallType)
{
Main.tile[m, n].wall = 0;
if (m > num5 + 1 && m < num6 - 2 && n > num7 + 1 && n < num8 - 2)
{
Main.tile[m, n].wall = (byte)wallType;
}
Main.tile[m, n].active(true);
Main.tile[m, n].type = (byte)tileType;
}
}
}
int num9 = num5;
int num10 = num5 + 5 + WorldGen.genRand.Next(4);
int num11 = num7 - 3 - WorldGen.genRand.Next(3);
int num12 = num7;
for (int num13 = num9; num13 < num10; num13++)
{
for (int num14 = num11; num14 < num12; num14++)
{
if ((int)Main.tile[num13, num14].wall != wallType)
{
Main.tile[num13, num14].active(true);
Main.tile[num13, num14].type = (byte)tileType;
}
}
}
num9 = num6 - 5 - WorldGen.genRand.Next(4);
num10 = num6;
num11 = num7 - 3 - WorldGen.genRand.Next(3);
num12 = num7;
for (int num15 = num9; num15 < num10; num15++)
{
for (int num16 = num11; num16 < num12; num16++)
{
if ((int)Main.tile[num15, num16].wall != wallType)
{
Main.tile[num15, num16].active(true);
Main.tile[num15, num16].type = (byte)tileType;
}
}
}
int num17 = 1 + WorldGen.genRand.Next(2);
int num18 = 2 + WorldGen.genRand.Next(4);
int num19 = 0;
for (int num20 = num5; num20 < num6; num20++)
{
for (int num21 = num7 - num17; num21 < num7; num21++)
{
if ((int)Main.tile[num20, num21].wall != wallType)
{
Main.tile[num20, num21].active(true);
Main.tile[num20, num21].type = (byte)tileType;
}
}
num19++;
if (num19 >= num18)
{
num20 += num18;
num19 = 0;
}
}
for (int num22 = num5; num22 < num6; num22++)
{
int num23 = num8;
while ((double)num23 < Main.worldSurface)
{
if (!Main.wallDungeon[(int)Main.tile[num22, num23].wall])
{
Main.tile[num22, num23].active(true);
Main.tile[num22, num23].type = (byte)tileType;
}
Main.tile[num22, num23].wall = (byte)wallType;
num23++;
}
}
num5 = (int)((double)vector.X - num2 * 0.60000002384185791);
num6 = (int)((double)vector.X + num2 * 0.60000002384185791);
num7 = (int)((double)vector.Y - num3 * 0.60000002384185791);
num8 = (int)((double)vector.Y + num3 * 0.60000002384185791);
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 num24 = num5; num24 < num6; num24++)
{
for (int num25 = num7; num25 < num8; num25++)
{
Main.tile[num24, num25].wall = (byte)wallType;
}
}
num5 = (int)((double)vector.X - num2 * 0.6 - 1.0);
num6 = (int)((double)vector.X + num2 * 0.6 + 1.0);
num7 = (int)((double)vector.Y - num3 * 0.6 - 1.0);
num8 = (int)((double)vector.Y + num3 * 0.6 + 1.0);
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 num26 = num5; num26 < num6; num26++)
{
for (int num27 = num7; num27 < num8; num27++)
{
Main.tile[num26, num27].wall = (byte)wallType;
}
}
num5 = (int)((double)vector.X - num2 * 0.5);
num6 = (int)((double)vector.X + num2 * 0.5);
num7 = (int)((double)vector.Y - num3 * 0.5);
num8 = (int)((double)vector.Y + num3 * 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 num28 = num5; num28 < num6; num28++)
{
for (int num29 = num7; num29 < num8; num29++)
{
Main.tile[num28, num29].active(false);
Main.tile[num28, num29].wall = (byte)wallType;
}
}
int num30 = (int)vector.X;
int num31 = num8;
for (int num32 = 0; num32 < 20; num32++)
{
num30 = (int)vector.X - num32;
if (!Main.tile[num30, num31].active() && Main.wallDungeon[(int)Main.tile[num30, num31].wall])
{
WorldGen.DPlatX[WorldGen.numDPlats] = num30;
WorldGen.DPlatY[WorldGen.numDPlats] = num31;
WorldGen.numDPlats++;
break;
}
num30 = (int)vector.X + num32;
if (!Main.tile[num30, num31].active() && Main.wallDungeon[(int)Main.tile[num30, num31].wall])
{
WorldGen.DPlatX[WorldGen.numDPlats] = num30;
WorldGen.DPlatY[WorldGen.numDPlats] = num31;
WorldGen.numDPlats++;
break;
}
}
vector.X += (float)num2 * 0.6f * (float)num4;
vector.Y += (float)num3 * 0.5f;
num2 = WorldGen.dxStrength2;
num3 = WorldGen.dyStrength2;
vector.X += (float)num2 * 0.55f * (float)num4;
vector.Y -= (float)num3 * 0.5f;
num5 = (int)((double)vector.X - num2 * 0.60000002384185791 - (double)WorldGen.genRand.Next(1, 3));
num6 = (int)((double)vector.X + num2 * 0.60000002384185791 + (double)WorldGen.genRand.Next(1, 3));
num7 = (int)((double)vector.Y - num3 * 0.60000002384185791 - (double)WorldGen.genRand.Next(1, 3));
num8 = (int)((double)vector.Y + num3 * 0.60000002384185791 + (double)WorldGen.genRand.Next(6, 16));
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 num33 = num5; num33 < num6; num33++)
{
for (int num34 = num7; num34 < num8; num34++)
{
if ((int)Main.tile[num33, num34].wall != wallType)
{
bool flag = true;
if (num4 < 0)
{
if ((double)num33 < (double)vector.X - num2 * 0.5)
{
flag = false;
}
}
else
{
if ((double)num33 > (double)vector.X + num2 * 0.5 - 1.0)
{
flag = false;
}
}
if (flag)
{
Main.tile[num33, num34].wall = 0;
Main.tile[num33, num34].active(true);
Main.tile[num33, num34].type = (byte)tileType;
}
}
}
}
for (int num35 = num5; num35 < num6; num35++)
{
int num36 = num8;
while ((double)num36 < Main.worldSurface)
{
if (!Main.wallDungeon[(int)Main.tile[num35, num36].wall])
{
Main.tile[num35, num36].active(true);
Main.tile[num35, num36].type = (byte)tileType;
}
Main.tile[num35, num36].wall = (byte)wallType;
num36++;
}
}
num5 = (int)((double)vector.X - num2 * 0.5);
num6 = (int)((double)vector.X + num2 * 0.5);
num9 = num5;
if (num4 < 0)
{
num9++;
}
num10 = num9 + 5 + WorldGen.genRand.Next(4);
num11 = num7 - 3 - WorldGen.genRand.Next(3);
num12 = num7;
for (int num37 = num9; num37 < num10; num37++)
{
for (int num38 = num11; num38 < num12; num38++)
{
if ((int)Main.tile[num37, num38].wall != wallType)
{
Main.tile[num37, num38].active(true);
Main.tile[num37, num38].type = (byte)tileType;
}
}
}
num9 = num6 - 5 - WorldGen.genRand.Next(4);
num10 = num6;
num11 = num7 - 3 - WorldGen.genRand.Next(3);
num12 = num7;
for (int num39 = num9; num39 < num10; num39++)
{
for (int num40 = num11; num40 < num12; num40++)
{
if ((int)Main.tile[num39, num40].wall != wallType)
{
Main.tile[num39, num40].active(true);
Main.tile[num39, num40].type = (byte)tileType;
}
}
}
num17 = 1 + WorldGen.genRand.Next(2);
num18 = 2 + WorldGen.genRand.Next(4);
num19 = 0;
if (num4 < 0)
{
num6++;
}
for (int num41 = num5 + 1; num41 < num6 - 1; num41++)
{
for (int num42 = num7 - num17; num42 < num7; num42++)
{
if ((int)Main.tile[num41, num42].wall != wallType)
{
Main.tile[num41, num42].active(true);
Main.tile[num41, num42].type = (byte)tileType;
}
}
num19++;
if (num19 >= num18)
{
num41 += num18;
num19 = 0;
}
}
num5 = (int)((double)vector.X - num2 * 0.6);
num6 = (int)((double)vector.X + num2 * 0.6);
num7 = (int)((double)vector.Y - num3 * 0.6);
num8 = (int)((double)vector.Y + num3 * 0.6);
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 num43 = num5; num43 < num6; num43++)
{
for (int num44 = num7; num44 < num8; num44++)
{
Main.tile[num43, num44].wall = 0;
}
}
num5 = (int)((double)vector.X - num2 * 0.5);
num6 = (int)((double)vector.X + num2 * 0.5);
num7 = (int)((double)vector.Y - num3 * 0.5);
num8 = (int)((double)vector.Y + num3 * 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 num45 = num5; num45 < num6; num45++)
{
for (int num46 = num7; num46 < num8; num46++)
{
Main.tile[num45, num46].active(false);
Main.tile[num45, num46].wall = 0;
}
}
for (int num47 = num5; num47 < num6; num47++)
{
if (!Main.tile[num47, num8].active())
{
Main.tile[num47, num8].active(true);
Main.tile[num47, num8].type = 19;
if (wallType == 7)
{
Main.tile[num47, num8].frameY = 108;
}
if (wallType == 8)
{
Main.tile[num47, num8].frameY = 144;
}
if (wallType == 9)
{
Main.tile[num47, num8].frameY = 126;
}
}
}
Main.dungeonX = (int)vector.X;
Main.dungeonY = num8;
int num48 = NPC.NewNPC(Main.dungeonX * 16 + 8, Main.dungeonY * 16, 37, 0);
Main.npc[num48].homeless = false;
Main.npc[num48].homeTileX = Main.dungeonX;
Main.npc[num48].homeTileY = Main.dungeonY;
if (num4 == 1)
{
int num49 = 0;
for (int num50 = num6; num50 < num6 + 50; num50++)
{
num49++;
for (int num51 = num8 + num49; num51 < num8 + 50; num51++)
{
if (!Main.wallDungeon[(int)Main.tile[num50, num51].wall])
{
Main.tile[num50, num51].active(true);
Main.tile[num50, num51].type = (byte)tileType;
}
}
}
}
else
{
int num52 = 0;
for (int num53 = num5; num53 > num5 - 50; num53--)
{
num52++;
for (int num54 = num8 + num52; num54 < num8 + 50; num54++)
{
if (!Main.wallDungeon[(int)Main.tile[num53, num54].wall])
{
Main.tile[num53, num54].active(true);
Main.tile[num53, num54].type = (byte)tileType;
}
}
}
}
num17 = 1 + WorldGen.genRand.Next(2);
num18 = 2 + WorldGen.genRand.Next(4);
num19 = 0;
num5 = (int)((double)vector.X - num2 * 0.5);
num6 = (int)((double)vector.X + num2 * 0.5);
num5 += 2;
num6 -= 2;
for (int num55 = num5; num55 < num6; num55++)
{
for (int num56 = num7; num56 < num8; num56++)
{
WorldGen.PlaceWall(num55, num56, wallType, true);
}
num19++;
if (num19 >= num18)
{
num55 += num18 * 2;
num19 = 0;
}
}
vector.X -= (float)num2 * 0.6f * (float)num4;
vector.Y += (float)num3 * 0.5f;
num2 = 15.0;
num3 = 3.0;
vector.Y -= (float)num3 * 0.5f;
num5 = (int)((double)vector.X - num2 * 0.5);
num6 = (int)((double)vector.X + num2 * 0.5);
num7 = (int)((double)vector.Y - num3 * 0.5);
num8 = (int)((double)vector.Y + num3 * 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 num57 = num5; num57 < num6; num57++)
{
for (int num58 = num7; num58 < num8; num58++)
{
Main.tile[num57, num58].active(false);
}
}
if (num4 < 0)
{
vector.X -= 1f;
}
WorldGen.PlaceTile((int)vector.X, (int)vector.Y + 1, 10, true, false, -1, 13);
}
public static bool AddBuriedChest(int i, int j, int contain = 0, bool notNearOtherChests = false, int Style = -1)
{
if (WorldGen.genRand == null)
{
WorldGen.genRand = new Random((int)DateTime.Now.Ticks);
}
int k = j;
while (k < Main.maxTilesY)
{
if (WorldGen.SolidTile(i, k))
{
bool flag = false;
int num = k;
int num2 = 0;
if ((double)num >= Main.worldSurface + 25.0 || contain > 0)
{
num2 = 1;
if (contain == 211 || contain == 212 || contain == 213 || contain == 753)
{
num2 = 10;
}
}
if (Style >= 0)
{
num2 = Style;
}
if (contain == 0 && (double)num >= Main.worldSurface + 25.0 && num <= Main.maxTilesY - 205 && (Main.tile[i, k].type == 147 || Main.tile[i, k].type == 161 || Main.tile[i, k].type == 162))
{
num2 = 11;
int num3 = WorldGen.genRand.Next(6);
if (num3 == 0)
{
contain = 670;
}
else
{
if (num3 == 1)
{
contain = 724;
}
else
{
if (num3 == 2)
{
contain = 950;
}
else
{
if (num3 == 3)
{
contain = 1319;
}
else
{
if (num3 == 4)
{
contain = 987;
}
else
{
if (num3 == 5)
{
contain = 1579;
}
}
}
}
}
}
if (WorldGen.genRand.Next(20) == 0)
{
contain = 997;
}
if (WorldGen.genRand.Next(50) == 0)
{
contain = 669;
}
}
if (num > Main.maxTilesY - 205 && contain == 0)
{
if (WorldGen.hellChest == 0)
{
contain = 274;
num2 = 4;
flag = true;
}
else
{
if (WorldGen.hellChest == 1)
{
contain = 220;
num2 = 4;
flag = true;
}
else
{
if (WorldGen.hellChest == 2)
{
contain = 112;
num2 = 4;
flag = true;
}
else
{
if (WorldGen.hellChest == 3)
{
contain = 218;
num2 = 4;
flag = true;
}
}
}
}
}
int num4 = WorldGen.PlaceChest(i - 1, num - 1, 21, notNearOtherChests, num2);
if (num4 >= 0)
{
if (flag)
{
WorldGen.hellChest++;
if (WorldGen.hellChest > 3)
{
WorldGen.hellChest = 0;
}
}
int num5 = 0;
while (num5 == 0)
{
if ((double)num < Main.worldSurface + 25.0 || contain == 848)
{
if (contain > 0)
{
Main.chest[num4].item[num5].SetDefaults(contain, false);
Main.chest[num4].item[num5].Prefix(-1);
if (contain == 848)
{
num5++;
Main.chest[num4].item[num5].SetDefaults(866, false);
}
num5++;
}
else
{
int num6 = WorldGen.genRand.Next(8);
if (num6 == 0)
{
Main.chest[num4].item[num5].SetDefaults(280, false);
Main.chest[num4].item[num5].Prefix(-1);
}
if (num6 == 1)
{
Main.chest[num4].item[num5].SetDefaults(281, false);
Main.chest[num4].item[num5].Prefix(-1);
}
if (num6 == 2)
{
Main.chest[num4].item[num5].SetDefaults(284, false);
Main.chest[num4].item[num5].Prefix(-1);
}
if (num6 == 3)
{
Main.chest[num4].item[num5].SetDefaults(282, false);
Main.chest[num4].item[num5].stack = WorldGen.genRand.Next(50, 75);
}
if (num6 == 4)
{
Main.chest[num4].item[num5].SetDefaults(279, false);
Main.chest[num4].item[num5].stack = WorldGen.genRand.Next(25, 50);
}
if (num6 == 5)
{
Main.chest[num4].item[num5].SetDefaults(285, false);
Main.chest[num4].item[num5].Prefix(-1);
}
if (num6 == 6)
{
Main.chest[num4].item[num5].SetDefaults(953, false);
Main.chest[num4].item[num5].Prefix(-1);
}
if (num6 == 7)
{
Main.chest[num4].item[num5].SetDefaults(946, false);
Main.chest[num4].item[num5].Prefix(-1);
}
num5++;
}
if (WorldGen.genRand.Next(3) == 0)
{
Main.chest[num4].item[num5].SetDefaults(168, false);
Main.chest[num4].item[num5].stack = WorldGen.genRand.Next(3, 6);
num5++;
}
if (WorldGen.genRand.Next(2) == 0)
{
int num7 = WorldGen.genRand.Next(2);
int stack = WorldGen.genRand.Next(8) + 3;
if (num7 == 0)
{
Main.chest[num4].item[num5].SetDefaults(WorldGen.copperBar, false);
}
if (num7 == 1)
{
Main.chest[num4].item[num5].SetDefaults(WorldGen.ironBar, false);
}
Main.chest[num4].item[num5].stack = stack;
num5++;
}
if (WorldGen.genRand.Next(2) == 0)
{
int stack2 = WorldGen.genRand.Next(50, 101);
Main.chest[num4].item[num5].SetDefaults(965, false);
Main.chest[num4].item[num5].stack = stack2;
num5++;
}
if (WorldGen.genRand.Next(3) != 0)
{
int num8 = WorldGen.genRand.Next(2);
int stack3 = WorldGen.genRand.Next(26) + 25;
if (num8 == 0)
{
Main.chest[num4].item[num5].SetDefaults(40, false);
}
if (num8 == 1)
{
Main.chest[num4].item[num5].SetDefaults(42, false);
}
Main.chest[num4].item[num5].stack = stack3;
num5++;
}
if (WorldGen.genRand.Next(2) == 0)
{
int num9 = WorldGen.genRand.Next(1);
int stack4 = WorldGen.genRand.Next(3) + 3;
if (num9 == 0)
{
Main.chest[num4].item[num5].SetDefaults(28, false);
}
Main.chest[num4].item[num5].stack = stack4;
num5++;
}
if (WorldGen.genRand.Next(3) > 0)
{
int num10 = WorldGen.genRand.Next(4);
int stack5 = WorldGen.genRand.Next(1, 3);
if (num10 == 0)
{
Main.chest[num4].item[num5].SetDefaults(292, false);
}
if (num10 == 1)
{
Main.chest[num4].item[num5].SetDefaults(298, false);
}
if (num10 == 2)
{
Main.chest[num4].item[num5].SetDefaults(299, false);
}
if (num10 == 3)
{
Main.chest[num4].item[num5].SetDefaults(290, false);
}
Main.chest[num4].item[num5].stack = stack5;
num5++;
}
if (WorldGen.genRand.Next(2) == 0)
{
int num11 = WorldGen.genRand.Next(2);
int stack6 = WorldGen.genRand.Next(11) + 10;
if (num11 == 0)
{
Main.chest[num4].item[num5].SetDefaults(8, false);
}
if (num11 == 1)
{
Main.chest[num4].item[num5].SetDefaults(31, false);
}
Main.chest[num4].item[num5].stack = stack6;
num5++;
}
if (WorldGen.genRand.Next(2) == 0)
{
Main.chest[num4].item[num5].SetDefaults(72, false);
Main.chest[num4].item[num5].stack = WorldGen.genRand.Next(10, 30);
num5++;
}
}
else
{
if ((double)num < Main.rockLayer)
{
if (contain > 0)
{
Main.chest[num4].item[num5].SetDefaults(contain, false);
Main.chest[num4].item[num5].Prefix(-1);
num5++;
}
else
{
int num12 = WorldGen.genRand.Next(7);
if (WorldGen.genRand.Next(20) == 0)
{
Main.chest[num4].item[num5].SetDefaults(997, false);
Main.chest[num4].item[num5].Prefix(-1);
}
else
{
if (num12 == 0)
{
Main.chest[num4].item[num5].SetDefaults(49, false);
Main.chest[num4].item[num5].Prefix(-1);
}
if (num12 == 1)
{
Main.chest[num4].item[num5].SetDefaults(50, false);
Main.chest[num4].item[num5].Prefix(-1);
}
if (num12 == 2)
{
Main.chest[num4].item[num5].SetDefaults(53, false);
Main.chest[num4].item[num5].Prefix(-1);
}
if (num12 == 3)
{
Main.chest[num4].item[num5].SetDefaults(54, false);
Main.chest[num4].item[num5].Prefix(-1);
}
if (num12 == 4)
{
Main.chest[num4].item[num5].SetDefaults(55, false);
Main.chest[num4].item[num5].Prefix(-1);
}
if (num12 == 5)
{
Main.chest[num4].item[num5].SetDefaults(975, false);
Main.chest[num4].item[num5].Prefix(-1);
}
if (num12 == 6)
{
Main.chest[num4].item[num5].SetDefaults(930, false);
Main.chest[num4].item[num5].Prefix(-1);
num5++;
Main.chest[num4].item[num5].SetDefaults(931, false);
Main.chest[num4].item[num5].stack = WorldGen.genRand.Next(26) + 25;
}
}
num5++;
}
if (WorldGen.genRand.Next(3) == 0)
{
Main.chest[num4].item[num5].SetDefaults(166, false);
Main.chest[num4].item[num5].stack = WorldGen.genRand.Next(10, 20);
num5++;
}
if (WorldGen.genRand.Next(5) == 0)
{
Main.chest[num4].item[num5].SetDefaults(52, false);
num5++;
}
if (WorldGen.genRand.Next(3) == 0)
{
int stack7 = WorldGen.genRand.Next(50, 101);
Main.chest[num4].item[num5].SetDefaults(965, false);
Main.chest[num4].item[num5].stack = stack7;
num5++;
}
if (WorldGen.genRand.Next(2) == 0)
{
int num13 = WorldGen.genRand.Next(2);
int stack8 = WorldGen.genRand.Next(10) + 5;
if (num13 == 0)
{
Main.chest[num4].item[num5].SetDefaults(WorldGen.ironBar, false);
}
if (num13 == 1)
{
Main.chest[num4].item[num5].SetDefaults(WorldGen.silverBar, false);
}
Main.chest[num4].item[num5].stack = stack8;
num5++;
}
if (WorldGen.genRand.Next(2) == 0)
{
int num14 = WorldGen.genRand.Next(2);
int stack9 = WorldGen.genRand.Next(25) + 25;
if (num14 == 0)
{
Main.chest[num4].item[num5].SetDefaults(40, false);
}
if (num14 == 1)
{
Main.chest[num4].item[num5].SetDefaults(42, false);
}
Main.chest[num4].item[num5].stack = stack9;
num5++;
}
if (WorldGen.genRand.Next(2) == 0)
{
int num15 = WorldGen.genRand.Next(1);
int stack10 = WorldGen.genRand.Next(3) + 3;
if (num15 == 0)
{
Main.chest[num4].item[num5].SetDefaults(28, false);
}
Main.chest[num4].item[num5].stack = stack10;
num5++;
}
if (WorldGen.genRand.Next(3) > 0)
{
int num16 = WorldGen.genRand.Next(7);
int stack11 = WorldGen.genRand.Next(1, 3);
if (num16 == 0)
{
Main.chest[num4].item[num5].SetDefaults(289, false);
}
if (num16 == 1)
{
Main.chest[num4].item[num5].SetDefaults(298, false);
}
if (num16 == 2)
{
Main.chest[num4].item[num5].SetDefaults(299, false);
}
if (num16 == 3)
{
Main.chest[num4].item[num5].SetDefaults(290, false);
}
if (num16 == 4)
{
Main.chest[num4].item[num5].SetDefaults(303, false);
}
if (num16 == 5)
{
Main.chest[num4].item[num5].SetDefaults(291, false);
}
if (num16 == 6)
{
Main.chest[num4].item[num5].SetDefaults(304, false);
}
Main.chest[num4].item[num5].stack = stack11;
num5++;
}
if (WorldGen.genRand.Next(2) == 0)
{
int stack12 = WorldGen.genRand.Next(11) + 10;
if (num2 == 11)
{
Main.chest[num4].item[num5].SetDefaults(974, false);
}
else
{
Main.chest[num4].item[num5].SetDefaults(8, false);
}
Main.chest[num4].item[num5].stack = stack12;
num5++;
}
if (WorldGen.genRand.Next(2) == 0)
{
Main.chest[num4].item[num5].SetDefaults(72, false);
Main.chest[num4].item[num5].stack = WorldGen.genRand.Next(50, 90);
num5++;
}
}
else
{
if (num < Main.maxTilesY - 250)
{
if (contain > 0)
{
Main.chest[num4].item[num5].SetDefaults(contain, false);
Main.chest[num4].item[num5].Prefix(-1);
num5++;
}
else
{
int num17 = WorldGen.genRand.Next(7);
if (WorldGen.genRand.Next(40) == 0)
{
Main.chest[num4].item[num5].SetDefaults(906, false);
Main.chest[num4].item[num5].Prefix(-1);
}
else
{
if (WorldGen.genRand.Next(15) == 0)
{
Main.chest[num4].item[num5].SetDefaults(997, false);
Main.chest[num4].item[num5].Prefix(-1);
}
else
{
if (num17 == 0)
{
Main.chest[num4].item[num5].SetDefaults(49, false);
Main.chest[num4].item[num5].Prefix(-1);
}
if (num17 == 1)
{
Main.chest[num4].item[num5].SetDefaults(50, false);
Main.chest[num4].item[num5].Prefix(-1);
}
if (num17 == 2)
{
Main.chest[num4].item[num5].SetDefaults(53, false);
Main.chest[num4].item[num5].Prefix(-1);
}
if (num17 == 3)
{
Main.chest[num4].item[num5].SetDefaults(54, false);
Main.chest[num4].item[num5].Prefix(-1);
}
if (num17 == 4)
{
Main.chest[num4].item[num5].SetDefaults(55, false);
Main.chest[num4].item[num5].Prefix(-1);
}
if (num17 == 5)
{
Main.chest[num4].item[num5].SetDefaults(975, false);
Main.chest[num4].item[num5].Prefix(-1);
}
if (num17 == 6)
{
Main.chest[num4].item[num5].SetDefaults(930, false);
Main.chest[num4].item[num5].Prefix(-1);
num5++;
Main.chest[num4].item[num5].SetDefaults(931, false);
Main.chest[num4].item[num5].stack = WorldGen.genRand.Next(26) + 25;
}
}
}
num5++;
}
if (WorldGen.genRand.Next(5) == 0)
{
Main.chest[num4].item[num5].SetDefaults(43, false);
num5++;
}
if (WorldGen.genRand.Next(3) == 0)
{
Main.chest[num4].item[num5].SetDefaults(167, false);
num5++;
}
if (WorldGen.genRand.Next(4) == 0)
{
Main.chest[num4].item[num5].SetDefaults(51, false);
Main.chest[num4].item[num5].stack = WorldGen.genRand.Next(26) + 25;
num5++;
}
if (WorldGen.genRand.Next(2) == 0)
{
int num18 = WorldGen.genRand.Next(2);
int stack13 = WorldGen.genRand.Next(8) + 3;
if (num18 == 0)
{
Main.chest[num4].item[num5].SetDefaults(WorldGen.goldBar, false);
}
if (num18 == 1)
{
Main.chest[num4].item[num5].SetDefaults(WorldGen.silverBar, false);
}
Main.chest[num4].item[num5].stack = stack13;
num5++;
}
if (WorldGen.genRand.Next(2) == 0)
{
int num19 = WorldGen.genRand.Next(2);
int stack14 = WorldGen.genRand.Next(26) + 25;
if (num19 == 0)
{
Main.chest[num4].item[num5].SetDefaults(41, false);
}
if (num19 == 1)
{
Main.chest[num4].item[num5].SetDefaults(279, false);
}
Main.chest[num4].item[num5].stack = stack14;
num5++;
}
if (WorldGen.genRand.Next(2) == 0)
{
int num20 = WorldGen.genRand.Next(1);
int stack15 = WorldGen.genRand.Next(3) + 3;
if (num20 == 0)
{
Main.chest[num4].item[num5].SetDefaults(188, false);
}
Main.chest[num4].item[num5].stack = stack15;
num5++;
}
if (WorldGen.genRand.Next(3) > 0)
{
int num21 = WorldGen.genRand.Next(6);
int stack16 = WorldGen.genRand.Next(1, 3);
if (num21 == 0)
{
Main.chest[num4].item[num5].SetDefaults(296, false);
}
if (num21 == 1)
{
Main.chest[num4].item[num5].SetDefaults(295, false);
}
if (num21 == 2)
{
Main.chest[num4].item[num5].SetDefaults(299, false);
}
if (num21 == 3)
{
Main.chest[num4].item[num5].SetDefaults(302, false);
}
if (num21 == 4)
{
Main.chest[num4].item[num5].SetDefaults(303, false);
}
if (num21 == 5)
{
Main.chest[num4].item[num5].SetDefaults(305, false);
}
Main.chest[num4].item[num5].stack = stack16;
num5++;
}
if (WorldGen.genRand.Next(3) > 1)
{
int num22 = WorldGen.genRand.Next(4);
int stack17 = WorldGen.genRand.Next(1, 3);
if (num22 == 0)
{
Main.chest[num4].item[num5].SetDefaults(301, false);
}
if (num22 == 1)
{
Main.chest[num4].item[num5].SetDefaults(302, false);
}
if (num22 == 2)
{
Main.chest[num4].item[num5].SetDefaults(297, false);
}
if (num22 == 3)
{
Main.chest[num4].item[num5].SetDefaults(304, false);
}
Main.chest[num4].item[num5].stack = stack17;
num5++;
}
if (WorldGen.genRand.Next(2) == 0)
{
int num23 = WorldGen.genRand.Next(2);
int stack18 = WorldGen.genRand.Next(15) + 15;
if (num23 == 0)
{
if (num2 == 11)
{
Main.chest[num4].item[num5].SetDefaults(974, false);
}
else
{
Main.chest[num4].item[num5].SetDefaults(8, false);
}
}
if (num23 == 1)
{
Main.chest[num4].item[num5].SetDefaults(282, false);
}
Main.chest[num4].item[num5].stack = stack18;
num5++;
}
if (WorldGen.genRand.Next(2) == 0)
{
Main.chest[num4].item[num5].SetDefaults(73, false);
Main.chest[num4].item[num5].stack = WorldGen.genRand.Next(1, 3);
num5++;
}
}
else
{
if (contain > 0)
{
Main.chest[num4].item[num5].SetDefaults(contain, false);
Main.chest[num4].item[num5].Prefix(-1);
num5++;
}
else
{
int num24 = WorldGen.genRand.Next(4);
if (num24 == 0)
{
Main.chest[num4].item[num5].SetDefaults(49, false);
Main.chest[num4].item[num5].Prefix(-1);
}
if (num24 == 1)
{
Main.chest[num4].item[num5].SetDefaults(50, false);
Main.chest[num4].item[num5].Prefix(-1);
}
if (num24 == 2)
{
Main.chest[num4].item[num5].SetDefaults(53, false);
Main.chest[num4].item[num5].Prefix(-1);
}
if (num24 == 3)
{
Main.chest[num4].item[num5].SetDefaults(54, false);
Main.chest[num4].item[num5].Prefix(-1);
}
num5++;
}
if (WorldGen.genRand.Next(3) == 0)
{
Main.chest[num4].item[num5].SetDefaults(167, false);
num5++;
}
if (WorldGen.genRand.Next(2) == 0)
{
int num25 = WorldGen.genRand.Next(2);
int stack19 = WorldGen.genRand.Next(15) + 15;
if (num25 == 0)
{
Main.chest[num4].item[num5].SetDefaults(117, false);
}
if (num25 == 1)
{
Main.chest[num4].item[num5].SetDefaults(WorldGen.goldBar, false);
}
Main.chest[num4].item[num5].stack = stack19;
num5++;
}
if (WorldGen.genRand.Next(2) == 0)
{
int num26 = WorldGen.genRand.Next(2);
int stack20 = WorldGen.genRand.Next(25) + 50;
if (num26 == 0)
{
Main.chest[num4].item[num5].SetDefaults(265, false);
}
if (num26 == 1)
{
Main.chest[num4].item[num5].SetDefaults(278, false);
}
Main.chest[num4].item[num5].stack = stack20;
num5++;
}
if (WorldGen.genRand.Next(2) == 0)
{
int num27 = WorldGen.genRand.Next(2);
int stack21 = WorldGen.genRand.Next(15) + 15;
if (num27 == 0)
{
Main.chest[num4].item[num5].SetDefaults(226, false);
}
if (num27 == 1)
{
Main.chest[num4].item[num5].SetDefaults(227, false);
}
Main.chest[num4].item[num5].stack = stack21;
num5++;
}
if (WorldGen.genRand.Next(4) > 0)
{
int num28 = WorldGen.genRand.Next(7);
int stack22 = WorldGen.genRand.Next(1, 3);
if (num28 == 0)
{
Main.chest[num4].item[num5].SetDefaults(296, false);
}
if (num28 == 1)
{
Main.chest[num4].item[num5].SetDefaults(295, false);
}
if (num28 == 2)
{
Main.chest[num4].item[num5].SetDefaults(293, false);
}
if (num28 == 3)
{
Main.chest[num4].item[num5].SetDefaults(288, false);
}
if (num28 == 4)
{
Main.chest[num4].item[num5].SetDefaults(294, false);
}
if (num28 == 5)
{
Main.chest[num4].item[num5].SetDefaults(297, false);
}
if (num28 == 6)
{
Main.chest[num4].item[num5].SetDefaults(304, false);
}
Main.chest[num4].item[num5].stack = stack22;
num5++;
}
if (WorldGen.genRand.Next(3) > 0)
{
int num29 = WorldGen.genRand.Next(5);
int stack23 = WorldGen.genRand.Next(1, 3);
if (num29 == 0)
{
Main.chest[num4].item[num5].SetDefaults(305, false);
}
if (num29 == 1)
{
Main.chest[num4].item[num5].SetDefaults(301, false);
}
if (num29 == 2)
{
Main.chest[num4].item[num5].SetDefaults(302, false);
}
if (num29 == 3)
{
Main.chest[num4].item[num5].SetDefaults(288, false);
}
if (num29 == 4)
{
Main.chest[num4].item[num5].SetDefaults(300, false);
}
Main.chest[num4].item[num5].stack = stack23;
num5++;
}
if (WorldGen.genRand.Next(2) == 0)
{
int num30 = WorldGen.genRand.Next(2);
int stack24 = WorldGen.genRand.Next(15) + 15;
if (num30 == 0)
{
Main.chest[num4].item[num5].SetDefaults(8, false);
}
if (num30 == 1)
{
Main.chest[num4].item[num5].SetDefaults(282, false);
}
Main.chest[num4].item[num5].stack = stack24;
num5++;
}
if (WorldGen.genRand.Next(2) == 0)
{
Main.chest[num4].item[num5].SetDefaults(73, false);
Main.chest[num4].item[num5].stack = WorldGen.genRand.Next(2, 5);
num5++;
}
}
}
}
}
return true;
}
return false;
}
else
{
k++;
}
}
return false;
}
public static void UnlockDoor(int i, int j)
{
int num = j;
while (Main.tile[i, num].frameY != 594)
{
num--;
if (Main.tile[i, num].frameY < 594 || num <= 0)
{
return;
}
}
Main.PlaySound(22, i * 16, num * 16 + 16, 1);
for (int k = num; k <= num + 2; k++)
{
if (Main.tile[i, k] == null)
{
Main.tile[i, k] = new Tile();
}
Tile expr_81 = Main.tile[i, k];
expr_81.frameY += 54;
for (int l = 0; l < 4; l++)
{
Dust.NewDust(new Vector2((float)(i * 16), (float)(k * 16)), 16, 16, 11, 0f, 0f, 0, default(Color), 1f);
}
}
}
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();
}
if (Main.tile[i, j].type != 10)
{
return false;
}
if (Main.tile[i, j].frameY >= 594 && Main.tile[i, j].frameY <= 646)
{
return false;
}
int k = (int)Main.tile[i, j].frameY;
int num = 0;
while (k >= 54)
{
k -= 54;
num++;
}
int num2 = j - k / 18;
byte color = Main.tile[i, num2].color();
if (Main.tile[i, num2 + 1] == null)
{
Main.tile[i, num2 + 1] = new Tile();
}
Main.tile[i, num2 + 1].color();
if (Main.tile[i, num2 + 2] == null)
{
Main.tile[i, num2 + 2] = new Tile();
}
Main.tile[i, num2 + 2].color();
short num3 = 0;
int num4;
int num5;
if (direction == -1)
{
num4 = i - 1;
num3 = 36;
num5 = i - 1;
}
else
{
num4 = i;
num5 = i + 1;
}
bool flag = true;
for (int l = num2; l < num2 + 3; l++)
{
if (Main.tile[num5, l] == null)
{
Main.tile[num5, l] = new Tile();
}
if (Main.tile[num5, l].active())
{
if (!Main.tileCut[(int)Main.tile[num5, l].type] && Main.tile[num5, l].type != 3 && Main.tile[num5, l].type != 24 && Main.tile[num5, l].type != 52 && Main.tile[num5, l].type != 61 && Main.tile[num5, l].type != 62 && Main.tile[num5, l].type != 69 && Main.tile[num5, l].type != 71 && Main.tile[num5, l].type != 73 && Main.tile[num5, l].type != 74 && Main.tile[num5, l].type != 110 && Main.tile[num5, l].type != 113 && Main.tile[num5, l].type != 115)
{
flag = false;
break;
}
WorldGen.KillTile(num5, l, false, false, false);
}
}
if (flag)
{
if (Main.netMode != 1)
{
for (int m = num4; m <= num4 + 1; m++)
{
for (int n = num2; n <= num2 + 2; n++)
{
if (WorldGen.numNoWire < WorldGen.maxWire - 1)
{
WorldGen.noWireX[WorldGen.numNoWire] = m;
WorldGen.noWireY[WorldGen.numNoWire] = n;
WorldGen.numNoWire++;
}
}
}
}
int num6 = num * 54;
Main.PlaySound(8, i * 16, j * 16, 1);
Main.tile[num4, num2].active(true);
Main.tile[num4, num2].type = 11;
Main.tile[num4, num2].frameY = (short)num6;
Main.tile[num4, num2].frameX = num3;
Main.tile[num4, num2].color(color);
if (Main.tile[num4 + 1, num2] == null)
{
Main.tile[num4 + 1, num2] = new Tile();
}
Main.tile[num4 + 1, num2].active(true);
Main.tile[num4 + 1, num2].type = 11;
Main.tile[num4 + 1, num2].frameY = (short)num6;
Main.tile[num4 + 1, num2].frameX = (short)(num3 + 18);
Main.tile[num4 + 1, num2].color(color);
if (Main.tile[num4, num2 + 1] == null)
{
Main.tile[num4, num2 + 1] = new Tile();
}
Main.tile[num4, num2 + 1].active(true);
Main.tile[num4, num2 + 1].type = 11;
Main.tile[num4, num2 + 1].frameY = (short)(num6 + 18);
Main.tile[num4, num2 + 1].frameX = num3;
Main.tile[num4, num2 + 1].color(color);
if (Main.tile[num4 + 1, num2 + 1] == null)
{
Main.tile[num4 + 1, num2 + 1] = new Tile();
}
Main.tile[num4 + 1, num2 + 1].active(true);
Main.tile[num4 + 1, num2 + 1].type = 11;
Main.tile[num4 + 1, num2 + 1].frameY = (short)(num6 + 18);
Main.tile[num4 + 1, num2 + 1].frameX = (short)(num3 + 18);
Main.tile[num4 + 1, num2 + 1].color(color);
if (Main.tile[num4, num2 + 2] == null)
{
Main.tile[num4, num2 + 2] = new Tile();
}
Main.tile[num4, num2 + 2].active(true);
Main.tile[num4, num2 + 2].type = 11;
Main.tile[num4, num2 + 2].frameY = (short)(num6 + 36);
Main.tile[num4, num2 + 2].frameX = num3;
Main.tile[num4, num2 + 2].color(color);
if (Main.tile[num4 + 1, num2 + 2] == null)
{
Main.tile[num4 + 1, num2 + 2] = new Tile();
}
Main.tile[num4 + 1, num2 + 2].active(true);
Main.tile[num4 + 1, num2 + 2].type = 11;
Main.tile[num4 + 1, num2 + 2].frameY = (short)(num6 + 36);
Main.tile[num4 + 1, num2 + 2].frameX = (short)(num3 + 18);
Main.tile[num4 + 1, num2 + 2].color(color);
for (int num7 = num4 - 1; num7 <= num4 + 2; num7++)
{
for (int num8 = num2 - 1; num8 <= num2 + 2; num8++)
{
WorldGen.TileFrame(num7, num8, false, false);
}
}
}
return flag;
}
public static void Check1xX(int x, int j, byte type)
{
if (WorldGen.destroyObject)
{
return;
}
int num = j - (int)(Main.tile[x, j].frameY / 18);
int frameX = (int)Main.tile[x, j].frameX;
int num2 = 3;
if (type == 92)
{
num2 = 6;
}
bool flag = false;
for (int i = 0; i < num2; i++)
{
if (Main.tile[x, num + i] == null)
{
Main.tile[x, num + i] = new Tile();
}
if (!Main.tile[x, num + i].active())
{
flag = true;
}
else
{
if (Main.tile[x, num + i].type != type)
{
flag = true;
}
else
{
if ((int)Main.tile[x, num + i].frameY != i * 18)
{
flag = true;
}
else
{
if ((int)Main.tile[x, num + i].frameX != frameX)
{
flag = true;
}
}
}
}
}
if (Main.tile[x, num + num2] == null)
{
Main.tile[x, num + num2] = new Tile();
}
if (!WorldGen.SolidTile2(x, num + num2))
{
flag = true;
}
if (flag)
{
WorldGen.destroyObject = true;
for (int k = 0; k < num2; k++)
{
if (Main.tile[x, num + k].type == type)
{
WorldGen.KillTile(x, num + k, false, false, false);
}
}
if (type == 92)
{
Item.NewItem(x * 16, j * 16, 32, 32, 341, 1, false, 0, false);
}
if (type == 93)
{
Item.NewItem(x * 16, j * 16, 32, 32, 342, 1, false, 0, false);
}
WorldGen.destroyObject = false;
}
}
public static void Check2xX(int i, int j, byte type)
{
if (WorldGen.destroyObject)
{
return;
}
int num = i;
int k;
for (k = (int)Main.tile[i, j].frameX; k >= 36; k -= 36)
{
}
if (k == 18)
{
num--;
}
if (Main.tile[num, j] == null)
{
Main.tile[num, j] = new Tile();
}
int l = (int)(Main.tile[num, j].frameY / 18);
int num2 = 3;
if (type == 104)
{
num2 = 5;
}
if (type == 207)
{
num2 = 4;
}
int num3 = 0;
while (l >= num2)
{
l -= num2;
num3 += num2 * 18;
}
int num4 = j - l;
if (Main.tile[num, num4] == null)
{
Main.tile[num, num4] = new Tile();
}
int frameX = (int)Main.tile[num, j].frameX;
bool flag = false;
for (int m = 0; m < num2; m++)
{
if (Main.tile[num, num4 + m] == null)
{
Main.tile[num, num4 + m] = new Tile();
}
if (!Main.tile[num, num4 + m].active())
{
flag = true;
}
else
{
if (Main.tile[num, num4 + m].type != type)
{
flag = true;
}
else
{
if ((int)Main.tile[num, num4 + m].frameY != m * 18 + num3)
{
flag = true;
}
else
{
if ((int)Main.tile[num, num4 + m].frameX != frameX)
{
flag = true;
}
}
}
}
if (Main.tile[num + 1, num4 + m] == null)
{
Main.tile[num + 1, num4 + m] = new Tile();
}
if (!Main.tile[num + 1, num4 + m].active())
{
flag = true;
}
else
{
if (Main.tile[num + 1, num4 + m].type != type)
{
flag = true;
}
else
{
if ((int)Main.tile[num + 1, num4 + m].frameY != m * 18 + num3)
{
flag = true;
}
else
{
if ((int)Main.tile[num + 1, num4 + m].frameX != frameX + 18)
{
flag = true;
}
}
}
}
}
if (!WorldGen.SolidTile2(num, num4 + num2))
{
flag = true;
}
if (!WorldGen.SolidTile2(num + 1, num4 + num2))
{
flag = true;
}
if (flag)
{
WorldGen.destroyObject = true;
for (int n = 0; n < num2; n++)
{
if (Main.tile[num, num4 + n].type == type)
{
WorldGen.KillTile(num, num4 + n, false, false, false);
}
if (Main.tile[num + 1, num4 + n].type == type)
{
WorldGen.KillTile(num + 1, num4 + n, false, false, false);
}
}
if (type == 104)
{
Item.NewItem(num * 16, j * 16, 32, 32, 359, 1, false, 0, false);
}
if (type == 105)
{
int num5 = frameX / 36;
if (num5 == 0)
{
num5 = 360;
}
else
{
if (num5 == 1)
{
num5 = 52;
}
else
{
if (num5 == 43)
{
num5 = 1152;
}
else
{
if (num5 == 44)
{
num5 = 1153;
}
else
{
if (num5 == 45)
{
num5 = 1154;
}
else
{
if (num5 == 46)
{
num5 = 1408;
}
else
{
if (num5 == 47)
{
num5 = 1409;
}
else
{
if (num5 == 48)
{
num5 = 1410;
}
else
{
if (num5 == 49)
{
num5 = 1462;
}
else
{
num5 = 438 + num5 - 2;
}
}
}
}
}
}
}
}
}
Item.NewItem(num * 16, j * 16, 32, 32, num5, 1, false, 0, false);
}
if (type == 207)
{
int num6 = frameX / 36;
if (num6 == 0)
{
num6 = 909;
}
else
{
if (num6 == 1)
{
num6 = 910;
}
else
{
if (num6 >= 2 && num6 <= 7)
{
num6 = 938 + num6;
}
}
}
Item.NewItem(num * 16, j * 16, 32, 32, num6, 1, false, 0, false);
}
WorldGen.destroyObject = false;
}
}
public static void PlaceTight(int x, int y, int 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 + Main.rand.Next(3) * 18;
Main.tile[x, y].type = (byte)type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameX = (short)num;
Main.tile[x, y].frameY = 0;
Main.tile[x, y + 1].type = (byte)type;
Main.tile[x, y + 1].active(true);
Main.tile[x, y + 1].frameX = (short)num;
Main.tile[x, y + 1].frameY = 18;
return;
}
if (Main.tile[x, y - 1].type == 147 || Main.tile[x, y - 1].type == 161 || Main.tile[x, y - 1].type == 163 || Main.tile[x, y - 1].type == 164)
{
if (WorldGen.genRand.Next(2) == 0)
{
int num2 = Main.rand.Next(3) * 18;
Main.tile[x, y].type = (byte)type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameX = (short)num2;
Main.tile[x, y].frameY = 72;
}
else
{
int num3 = Main.rand.Next(3) * 18;
Main.tile[x, y].type = (byte)type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameX = (short)num3;
Main.tile[x, y].frameY = 0;
Main.tile[x, y + 1].type = (byte)type;
Main.tile[x, y + 1].active(true);
Main.tile[x, y + 1].frameX = (short)num3;
Main.tile[x, y + 1].frameY = 18;
}
}
if (Main.tile[x, y - 1].type == 1 || Main.tileMoss[(int)Main.tile[x, y - 1].type])
{
if (WorldGen.genRand.Next(2) == 0)
{
int num4 = 54 + Main.rand.Next(3) * 18;
Main.tile[x, y].type = (byte)type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameX = (short)num4;
Main.tile[x, y].frameY = 72;
}
else
{
int num5 = 54 + Main.rand.Next(3) * 18;
Main.tile[x, y].type = (byte)type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameX = (short)num5;
Main.tile[x, y].frameY = 0;
Main.tile[x, y + 1].type = (byte)type;
Main.tile[x, y + 1].active(true);
Main.tile[x, y + 1].frameX = (short)num5;
Main.tile[x, y + 1].frameY = 18;
}
}
if (Main.tile[x, y - 1].type == 225)
{
int num6 = 162 + Main.rand.Next(3) * 18;
Main.tile[x, y].type = (byte)type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameX = (short)num6;
Main.tile[x, y].frameY = 72;
return;
}
}
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 == 1 || Main.tileMoss[(int)Main.tile[x, y + 1].type])
{
if (WorldGen.genRand.Next(2) == 0)
{
int num7 = 54 + Main.rand.Next(3) * 18;
Main.tile[x, y].type = (byte)type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameX = (short)num7;
Main.tile[x, y].frameY = 90;
}
else
{
int num8 = 54 + Main.rand.Next(3) * 18;
Main.tile[x, y - 1].type = (byte)type;
Main.tile[x, y - 1].active(true);
Main.tile[x, y - 1].frameX = (short)num8;
Main.tile[x, y - 1].frameY = 36;
Main.tile[x, y].type = (byte)type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameX = (short)num8;
Main.tile[x, y].frameY = 54;
}
}
if (Main.tile[x, y + 1].type == 225)
{
int num9 = 162 + Main.rand.Next(3) * 18;
Main.tile[x, y].type = (byte)type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameX = (short)num9;
Main.tile[x, y].frameY = 90;
}
}
}
}
public static void CheckTight(int x, int j)
{
if (Main.tile[x, j] == null)
{
return;
}
int num = j;
if (Main.tile[x, num].frameY == 72)
{
if (Main.tile[x, num - 1] == null)
{
Main.tile[x, num - 1] = new Tile();
}
if (Main.tile[x, num] == null)
{
Main.tile[x, num] = new Tile();
}
if (Main.tile[x, num + 1] == null)
{
Main.tile[x, num + 1] = new Tile();
}
bool flag = false;
if (!WorldGen.SolidTile(x, num - 1))
{
flag = true;
}
if (flag && Main.tile[x, num].type == Main.tile[x, j].type)
{
WorldGen.KillTile(x, num, false, false, false);
return;
}
}
else
{
if (Main.tile[x, num].frameY == 90)
{
if (Main.tile[x, num - 1] == null)
{
Main.tile[x, num - 1] = new Tile();
}
if (Main.tile[x, num] == null)
{
Main.tile[x, num] = new Tile();
}
if (Main.tile[x, num + 1] == null)
{
Main.tile[x, num + 1] = new Tile();
}
bool flag2 = false;
if (!WorldGen.SolidTile(x, num + 1))
{
flag2 = true;
}
if (flag2 && Main.tile[x, num].type == Main.tile[x, j].type)
{
WorldGen.KillTile(x, num, false, false, false);
return;
}
}
else
{
if (Main.tile[x, num].frameY >= 36)
{
if (Main.tile[x, num].frameY == 54)
{
num--;
}
if (Main.tile[x, num] == null)
{
Main.tile[x, num] = new Tile();
}
if (Main.tile[x, num + 1] == null)
{
Main.tile[x, num + 1] = new Tile();
}
if (Main.tile[x, num + 2] == null)
{
Main.tile[x, num + 2] = new Tile();
}
bool flag3 = false;
if (!WorldGen.SolidTile(x, num + 2))
{
flag3 = true;
}
if (Main.tile[x, num + 1].type != Main.tile[x, num].type)
{
flag3 = true;
}
if (Main.tile[x, num + 1].frameX != Main.tile[x, num].frameX)
{
flag3 = true;
}
if (flag3)
{
if (Main.tile[x, num].type == Main.tile[x, j].type)
{
WorldGen.KillTile(x, num, false, false, false);
}
if (Main.tile[x, num + 1].type == Main.tile[x, j].type)
{
WorldGen.KillTile(x, num + 1, false, false, false);
return;
}
}
}
else
{
if (Main.tile[x, num].frameY == 18)
{
num--;
}
if (Main.tile[x, num - 1] == null)
{
Main.tile[x, num - 1] = new Tile();
}
if (Main.tile[x, num] == null)
{
Main.tile[x, num] = new Tile();
}
if (Main.tile[x, num + 1] == null)
{
Main.tile[x, num + 1] = new Tile();
}
bool flag4 = false;
if (!WorldGen.SolidTile(x, num - 1))
{
flag4 = true;
}
if (Main.tile[x, num + 1].type != Main.tile[x, num].type)
{
flag4 = true;
}
if (Main.tile[x, num + 1].frameX != Main.tile[x, num].frameX)
{
flag4 = true;
}
if (flag4)
{
if (Main.tile[x, num].type == Main.tile[x, j].type)
{
WorldGen.KillTile(x, num, false, false, false);
}
if (Main.tile[x, num + 1].type == Main.tile[x, j].type)
{
WorldGen.KillTile(x, num + 1, false, false, false);
}
}
}
}
}
}
public static void Place1xX(int x, int y, int type, int style = 0)
{
int num = style * 18;
int num2 = 3;
if (type == 92)
{
num2 = 6;
}
bool flag = true;
for (int i = y - num2 + 1; i < y + 1; i++)
{
if (Main.tile[x, i] == null)
{
Main.tile[x, i] = new Tile();
}
if (Main.tile[x, i].active())
{
flag = false;
}
if (type == 93 && Main.tile[x, i].liquid > 0)
{
flag = false;
}
}
if (flag && WorldGen.SolidTile2(x, y + 1))
{
for (int j = 0; j < num2; j++)
{
Main.tile[x, y - num2 + 1 + j].active(true);
Main.tile[x, y - num2 + 1 + j].frameY = (short)(j * 18);
Main.tile[x, y - num2 + 1 + j].frameX = (short)num;
Main.tile[x, y - num2 + 1 + j].type = (byte)type;
}
}
}
public static void Place2xX(int x, int y, int type, int style = 0)
{
int num = style * 36;
int num2 = 3;
if (type == 104)
{
num2 = 5;
}
if (type == 207)
{
num2 = 4;
}
bool flag = true;
for (int i = y - num2 + 1; i < y + 1; i++)
{
if (Main.tile[x, i] == null)
{
Main.tile[x, i] = new Tile();
}
if (Main.tile[x, i].active())
{
flag = false;
}
if (Main.tile[x + 1, i] == null)
{
Main.tile[x + 1, i] = new Tile();
}
if (Main.tile[x + 1, i].active())
{
flag = false;
}
}
if (flag && WorldGen.SolidTile2(x, y + 1) && WorldGen.SolidTile2(x + 1, y + 1))
{
for (int j = 0; j < num2; j++)
{
Main.tile[x, y - num2 + 1 + j].active(true);
Main.tile[x, y - num2 + 1 + j].frameY = (short)(j * 18);
Main.tile[x, y - num2 + 1 + j].frameX = (short)num;
Main.tile[x, y - num2 + 1 + j].type = (byte)type;
Main.tile[x + 1, y - num2 + 1 + j].active(true);
Main.tile[x + 1, y - num2 + 1 + j].frameY = (short)(j * 18);
Main.tile[x + 1, y - num2 + 1 + j].frameX = (short)(num + 18);
Main.tile[x + 1, y - num2 + 1 + j].type = (byte)type;
}
}
}
public static void Check1x2(int x, int j, byte type)
{
if (WorldGen.destroyObject)
{
return;
}
int num = j;
bool flag = true;
if (Main.tile[x, num] == null)
{
Main.tile[x, num] = new Tile();
}
if (Main.tile[x, num + 1] == null)
{
Main.tile[x, num + 1] = new Tile();
}
int i = (int)Main.tile[x, num].frameY;
int num2 = 0;
while (i >= 40)
{
i -= 40;
num2++;
}
if (i == 18)
{
num--;
}
if (Main.tile[x, num] == null)
{
Main.tile[x, num] = new Tile();
}
if ((int)Main.tile[x, num].frameY == 40 * num2 && (int)Main.tile[x, num + 1].frameY == 40 * num2 + 18 && Main.tile[x, num].type == type && Main.tile[x, num + 1].type == type)
{
flag = false;
}
if (Main.tile[x, num + 2] == null)
{
Main.tile[x, num + 2] = new Tile();
}
if (!WorldGen.SolidTile2(x, num + 2))
{
flag = true;
}
if (Main.tile[x, num + 2].type != 2 && Main.tile[x, num + 2].type != 109 && Main.tile[x, num + 2].type != 147 && Main.tile[x, num].type == 20)
{
flag = true;
}
if (flag)
{
WorldGen.destroyObject = true;
if (Main.tile[x, num].type == type)
{
WorldGen.KillTile(x, num, false, false, false);
}
if (Main.tile[x, num + 1].type == type)
{
WorldGen.KillTile(x, num + 1, false, false, false);
}
if (type == 216)
{
Item.NewItem(x * 16, num * 16, 32, 32, 970 + num2, 1, false, 0, false);
}
if (type == 15)
{
if (num2 >= 18 && num2 <= 23)
{
Item.NewItem(x * 16, num * 16, 32, 32, 1703 + num2 - 18, 1, false, 0, false);
}
else
{
if (num2 == 5)
{
Item.NewItem(x * 16, num * 16, 32, 32, 806, 1, false, 0, false);
}
else
{
if (num2 == 6)
{
Item.NewItem(x * 16, num * 16, 32, 32, 807, 1, false, 0, false);
}
else
{
if (num2 == 7)
{
Item.NewItem(x * 16, num * 16, 32, 32, 808, 1, false, 0, false);
}
else
{
if (num2 == 8)
{
Item.NewItem(x * 16, num * 16, 32, 32, 809, 1, false, 0, false);
}
else
{
if (num2 == 9)
{
Item.NewItem(x * 16, num * 16, 32, 32, 810, 1, false, 0, false);
}
else
{
if (num2 == 10)
{
Item.NewItem(x * 16, num * 16, 32, 32, 826, 1, false, 0, false);
}
else
{
if (num2 == 11)
{
Item.NewItem(x * 16, num * 16, 32, 32, 915, 1, false, 0, false);
}
else
{
if (num2 == 13)
{
Item.NewItem(x * 16, num * 16, 32, 32, 1396, 1, false, 0, false);
}
else
{
if (num2 == 14)
{
Item.NewItem(x * 16, num * 16, 32, 32, 1399, 1, false, 0, false);
}
else
{
if (num2 == 15)
{
Item.NewItem(x * 16, num * 16, 32, 32, 1402, 1, false, 0, false);
}
else
{
if (num2 == 12)
{
Item.NewItem(x * 16, num * 16, 32, 32, 1143, 1, false, 0, false);
}
else
{
if (num2 == 4)
{
Item.NewItem(x * 16, num * 16, 32, 32, 630, 1, false, 0, false);
}
else
{
if (num2 == 3)
{
Item.NewItem(x * 16, num * 16, 32, 32, 629, 1, false, 0, false);
}
else
{
if (num2 == 2)
{
Item.NewItem(x * 16, num * 16, 32, 32, 628, 1, false, 0, false);
}
else
{
if (num2 == 17)
{
Item.NewItem(x * 16, num * 16, 32, 32, 1509, 1, false, 0, false);
}
else
{
if (num2 == 1)
{
Item.NewItem(x * 16, num * 16, 32, 32, 358, 1, false, 0, false);
}
else
{
if (num2 == 16)
{
Item.NewItem(x * 16, num * 16, 32, 32, 1459, 1, false, 0, false);
}
else
{
Item.NewItem(x * 16, num * 16, 32, 32, 34, 1, false, 0, false);
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
else
{
if (type == 134)
{
if (num2 == 1)
{
Item.NewItem(x * 16, num * 16, 32, 32, 1220, 1, false, 0, false);
}
else
{
Item.NewItem(x * 16, num * 16, 32, 32, 525, 1, false, 0, false);
}
}
}
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]))
{
if (type == 78)
{
if (!WorldGen.SolidTile2(x, y + 1))
{
WorldGen.KillTile(x, y, false, false, false);
return;
}
}
else
{
WorldGen.KillTile(x, y, false, false, false);
}
}
}
public static void CheckSign(int x, int y, int type)
{
if (WorldGen.destroyObject)
{
return;
}
int num = x - 2;
int num2 = x + 3;
int num3 = y - 2;
int num4 = y + 3;
if (num < 0)
{
return;
}
if (num2 > Main.maxTilesX)
{
return;
}
if (num3 < 0)
{
return;
}
if (num4 > Main.maxTilesY)
{
return;
}
bool flag = false;
for (int i = num; i < num2; i++)
{
for (int j = num3; j < num4; j++)
{
if (Main.tile[i, j] == null)
{
Main.tile[i, j] = new Tile();
}
}
}
int k = (int)(Main.tile[x, y].frameX / 18);
int num5 = (int)(Main.tile[x, y].frameY / 18);
while (k > 1)
{
k -= 2;
}
int num6 = x - k;
int num7 = y - num5;
int num8 = (int)(Main.tile[num6, num7].frameX / 18 / 2);
int l = (int)(Main.tile[x, y].frameX / 18);
int num9 = 0;
while (l > 1)
{
l -= 2;
num9++;
}
num = num6;
num2 = num6 + 2;
num3 = num7;
num4 = num7 + 2;
k = 0;
for (int m = num; m < num2; m++)
{
num5 = 0;
for (int n = num3; n < num4; n++)
{
if (!Main.tile[m, n].active() || (int)Main.tile[m, n].type != type)
{
flag = true;
break;
}
if ((int)(Main.tile[m, n].frameX / 18) != k + num8 * 2 || (int)(Main.tile[m, n].frameY / 18) != num5)
{
flag = true;
break;
}
num5++;
}
k++;
}
if (!flag)
{
if (type == 85)
{
if (WorldGen.SolidTile2(num6, num7 + 2) && WorldGen.SolidTile2(num6 + 1, num7 + 2))
{
num8 = num9;
}
else
{
flag = true;
}
}
else
{
if (WorldGen.SolidTile2(num6, num7 + 2) && WorldGen.SolidTile2(num6 + 1, num7 + 2))
{
num8 = 0;
}
else
{
if (Main.tile[num6, num7 - 1].nactive() && Main.tileSolid[(int)Main.tile[num6, num7 - 1].type] && !Main.tileSolidTop[(int)Main.tile[num6, num7 - 1].type] && Main.tile[num6 + 1, num7 - 1].nactive() && Main.tileSolid[(int)Main.tile[num6 + 1, num7 - 1].type] && !Main.tileSolidTop[(int)Main.tile[num6 + 1, num7 - 1].type])
{
num8 = 1;
}
else
{
if (Main.tile[num6 - 1, num7].nactive() && Main.tileSolid[(int)Main.tile[num6 - 1, num7].type] && !Main.tileSolidTop[(int)Main.tile[num6 - 1, num7].type] && Main.tile[num6 - 1, num7 + 1].nactive() && Main.tileSolid[(int)Main.tile[num6 - 1, num7 + 1].type] && !Main.tileSolidTop[(int)Main.tile[num6 - 1, num7 + 1].type])
{
num8 = 2;
}
else
{
if (Main.tile[num6 + 2, num7].nactive() && Main.tileSolid[(int)Main.tile[num6 + 2, num7].type] && !Main.tileSolidTop[(int)Main.tile[num6 + 2, num7].type] && Main.tile[num6 + 2, num7 + 1].nactive() && Main.tileSolid[(int)Main.tile[num6 + 2, num7 + 1].type] && !Main.tileSolidTop[(int)Main.tile[num6 + 2, num7 + 1].type])
{
num8 = 3;
}
else
{
flag = true;
}
}
}
}
}
}
if (flag)
{
WorldGen.destroyObject = true;
for (int num10 = num; num10 < num2; num10++)
{
for (int num11 = num3; num11 < num4; num11++)
{
if ((int)Main.tile[num10, num11].type == type)
{
WorldGen.KillTile(num10, num11, false, false, false);
}
}
}
Sign.KillSign(num6, num7);
if (type == 85)
{
if (num9 == 0)
{
Item.NewItem(x * 16, y * 16, 32, 32, 321, 1, false, 0, false);
}
else
{
Item.NewItem(x * 16, y * 16, 32, 32, 1172 + num9, 1, false, 0, false);
}
}
else
{
Item.NewItem(x * 16, y * 16, 32, 32, 171, 1, false, 0, false);
}
WorldGen.destroyObject = false;
return;
}
int num12 = 36 * num8;
for (int num13 = 0; num13 < 2; num13++)
{
for (int num14 = 0; num14 < 2; num14++)
{
Main.tile[num6 + num13, num7 + num14].active(true);
Main.tile[num6 + num13, num7 + num14].type = (byte)type;
Main.tile[num6 + num13, num7 + num14].frameX = (short)(num12 + 18 * num13);
Main.tile[num6 + num13, num7 + num14].frameY = (short)(18 * num14);
}
}
}
public static bool PlaceSign(int x, int y, int type, int Style = 0)
{
int num = x - 2;
int num2 = x + 3;
int num3 = y - 2;
int num4 = y + 3;
if (num < 0)
{
return false;
}
if (num2 > Main.maxTilesX)
{
return false;
}
if (num3 < 0)
{
return false;
}
if (num4 > Main.maxTilesY)
{
return false;
}
for (int i = num; i < num2; i++)
{
for (int j = num3; j < num4; j++)
{
if (Main.tile[i, j] == null)
{
Main.tile[i, j] = new Tile();
}
}
}
int num5 = x;
int num6 = y;
int num7 = 0;
if (type == 55)
{
if (WorldGen.SolidTile2(x, y + 1) && WorldGen.SolidTile2(x + 1, y + 1))
{
num6--;
num7 = 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])
{
num7 = 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])
{
num7 = 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])
{
return false;
}
num5--;
num7 = 3;
}
}
}
}
else
{
if (type == 85)
{
if (!WorldGen.SolidTile2(x, y + 1) || !WorldGen.SolidTile2(x + 1, y + 1))
{
return false;
}
num6--;
num7 = Style;
}
}
if (Main.tile[num5, num6].active() || Main.tile[num5 + 1, num6].active() || Main.tile[num5, num6 + 1].active() || Main.tile[num5 + 1, num6 + 1].active())
{
return false;
}
int num8 = 36 * num7;
for (int k = 0; k < 2; k++)
{
for (int l = 0; l < 2; l++)
{
Main.tile[num5 + k, num6 + l].active(true);
Main.tile[num5 + k, num6 + l].type = (byte)type;
Main.tile[num5 + k, num6 + l].frameX = (short)(num8 + 18 * k);
Main.tile[num5 + k, num6 + l].frameY = (short)(18 * l);
}
}
return true;
}
public static Color paintColor(int color)
{
Color white = Color.White;
if (color == 1 || color == 13)
{
white.R = 255;
white.G = 0;
white.B = 0;
}
if (color == 2 || color == 14)
{
white.R = 255;
white.G = 127;
white.B = 0;
}
if (color == 3 || color == 15)
{
white.R = 255;
white.G = 255;
white.B = 0;
}
if (color == 4 || color == 16)
{
white.R = 127;
white.G = 255;
white.B = 0;
}
if (color == 5 || color == 17)
{
white.R = 0;
white.G = 255;
white.B = 0;
}
if (color == 6 || color == 18)
{
white.R = 0;
white.G = 255;
white.B = 127;
}
if (color == 7 || color == 19)
{
white.R = 0;
white.G = 255;
white.B = 255;
}
if (color == 8 || color == 20)
{
white.R = 0;
white.G = 127;
white.B = 255;
}
if (color == 9 || color == 21)
{
white.R = 0;
white.G = 0;
white.B = 255;
}
if (color == 10 || color == 22)
{
white.R = 127;
white.G = 0;
white.B = 255;
}
if (color == 11 || color == 23)
{
white.R = 255;
white.G = 0;
white.B = 255;
}
if (color == 12 || color == 24)
{
white.R = 255;
white.G = 0;
white.B = 127;
}
if (color == 25)
{
white.R = 75;
white.G = 75;
white.B = 75;
}
if (color == 26)
{
white.R = 255;
white.G = 255;
white.B = 255;
}
if (color == 27)
{
white.R = 175;
white.G = 175;
white.B = 175;
}
return white;
}
public static void paintEffect(int x, int y, byte color, byte oldColor)
{
int color2 = (int)((color != null) ? color : oldColor);
Color newColor = WorldGen.paintColor(color2);
for (int i = 0; i < 10; i++)
{
int num = Dust.NewDust(new Vector2((float)(x * 16), (float)(y * 16)), 16, 16, 143, 0f, 0f, 50, newColor, 1f);
if (Main.rand.Next(2) == 0)
{
Main.dust[num].noGravity = true;
Main.dust[num].scale *= 1.2f;
}
else
{
Main.dust[num].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, -1, -1, "", x, (float)y, (float)color, 0f, 0);
}
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 == 0)
{
return false;
}
byte oldColor = Main.tile[x, y].wallColor();
Main.tile[x, y].wallColor(color);
if (broadCast)
{
NetMessage.SendData(64, -1, -1, "", x, (float)y, (float)color, 0f, 0);
}
WorldGen.paintEffect(x, y, color, oldColor);
return true;
}
public static void Place3x3Wall(int x, int y, int type, int style)
{
int num = x - 1;
int num2 = y - 1;
bool flag = true;
for (int i = num; i < num + 3; i++)
{
for (int j = num2; j < num2 + 3; j++)
{
if (Main.tile[i, j].active() || Main.tile[i, j].wall == 0)
{
flag = false;
break;
}
}
}
if (flag)
{
int num3 = style * 54;
int num4 = 0;
for (int k = num; k < num + 3; k++)
{
for (int l = num2; l < num2 + 3; l++)
{
Main.tile[k, l].active(true);
Main.tile[k, l].type = (byte)type;
Main.tile[k, l].frameX = (short)(num3 + 18 * (k - num));
Main.tile[k, l].frameY = (short)(num4 + 18 * (l - 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 num = 0;
int i = (int)(Main.tile[x, y].frameX / 18);
while (i >= 3)
{
i -= 3;
num++;
}
int num2 = x - i;
int num3 = y - (int)(Main.tile[x, y].frameY / 18);
i = num * 54;
for (int j = num2; j < num2 + 3; j++)
{
for (int k = num3; k < num3 + 3; k++)
{
if ((int)Main.tile[j, k].type != type || !Main.tile[j, k].active() || Main.tile[j, k].wall <= 0 || (int)Main.tile[j, k].frameX != i + (j - num2) * 18 || (int)Main.tile[j, k].frameY != (k - num3) * 18)
{
flag = true;
break;
}
}
}
if (flag)
{
WorldGen.destroyObject = true;
for (int l = num2; l < num2 + 3; l++)
{
for (int m = num3; m < num3 + 3; m++)
{
if ((int)Main.tile[l, m].type == type && Main.tile[l, m].active())
{
WorldGen.KillTile(l, m, false, false, false);
}
}
}
if (type == 240)
{
if (num == 33)
{
Item.NewItem(x * 16, y * 16, 32, 32, 1574, 1, false, 0, false);
}
else
{
if (num == 34)
{
Item.NewItem(x * 16, y * 16, 32, 32, 1575, 1, false, 0, false);
}
else
{
if (num == 35)
{
Item.NewItem(x * 16, y * 16, 32, 32, 1576, 1, false, 0, false);
}
else
{
if (num == 18)
{
Item.NewItem(x * 16, y * 16, 32, 32, 1419, 1, false, 0, false);
}
else
{
if (num == 19)
{
Item.NewItem(x * 16, y * 16, 32, 32, 1420, 1, false, 0, false);
}
else
{
if (num == 20)
{
Item.NewItem(x * 16, y * 16, 32, 32, 1427, 1, false, 0, false);
}
else
{
if (num == 21)
{
Item.NewItem(x * 16, y * 16, 32, 32, 1428, 1, false, 0, false);
}
else
{
if (num >= 22 && num <= 25)
{
Item.NewItem(x * 16, y * 16, 32, 32, 1440 + num - 22, 1, false, 0, false);
}
else
{
if (num >= 26 && num <= 29)
{
Item.NewItem(x * 16, y * 16, 32, 32, 1496 + num - 26, 1, false, 0, false);
}
else
{
if (num >= 30 && num <= 32)
{
Item.NewItem(x * 16, y * 16, 32, 32, 1538 + num - 30, 1, false, 0, false);
}
else
{
Item.NewItem(x * 16, y * 16, 32, 32, 1360 + num, 1, false, 0, false);
}
}
}
}
}
}
}
}
}
}
}
WorldGen.destroyObject = false;
}
}
public static void Place2x3Wall(int x, int y, int type, int style)
{
int num = y - 1;
bool flag = true;
for (int i = x; i < x + 2; i++)
{
for (int j = num; j < num + 3; j++)
{
if (Main.tile[i, j].active() || Main.tile[i, j].wall == 0)
{
flag = false;
break;
}
}
}
if (flag)
{
int num2 = style * 36;
int num3 = 0;
for (int k = x; k < x + 2; k++)
{
for (int l = num; l < num + 3; l++)
{
Main.tile[k, l].active(true);
Main.tile[k, l].type = (byte)type;
Main.tile[k, l].frameX = (short)(num2 + 18 * (k - x));
Main.tile[k, l].frameY = (short)(num3 + 18 * (l - num));
}
}
}
}
public static void Check2x3Wall(int x, int y)
{
if (WorldGen.destroyObject)
{
return;
}
bool flag = false;
int type = (int)Main.tile[x, y].type;
int num = 0;
int i = (int)(Main.tile[x, y].frameX / 18);
while (i >= 2)
{
i -= 2;
num++;
}
int num2 = x - i;
int num3 = y - (int)(Main.tile[x, y].frameY / 18);
i = num * 36;
for (int j = num2; j < num2 + 2; j++)
{
for (int k = num3; k < num3 + 3; k++)
{
if ((int)Main.tile[j, k].type != type || !Main.tile[j, k].active() || Main.tile[j, k].wall <= 0 || (int)Main.tile[j, k].frameX != i + (j - num2) * 18 || (int)Main.tile[j, k].frameY != (k - num3) * 18)
{
flag = true;
break;
}
}
}
if (flag)
{
WorldGen.destroyObject = true;
for (int l = num2; l < num2 + 2; l++)
{
for (int m = num3; m < num3 + 3; m++)
{
if ((int)Main.tile[l, m].type == type && Main.tile[l, m].active())
{
WorldGen.KillTile(l, m, false, false, false);
}
}
}
if (type == 245)
{
if (num == 6)
{
Item.NewItem(x * 16, y * 16, 32, 32, 1577, 1, false, 0, false);
}
else
{
if (num == 5)
{
Item.NewItem(x * 16, y * 16, 32, 32, 1495, 1, false, 0, false);
}
else
{
Item.NewItem(x * 16, y * 16, 32, 32, 1474 + num, 1, false, 0, false);
}
}
}
WorldGen.destroyObject = false;
}
}
public static void Place3x2Wall(int x, int y, int type, int style)
{
int num = x - 1;
bool flag = true;
for (int i = num; i < num + 3; i++)
{
for (int j = y; j < y + 2; j++)
{
if (Main.tile[i, j].active() || Main.tile[i, j].wall == 0)
{
flag = false;
break;
}
}
}
if (flag)
{
int num2 = 0;
int num3 = style * 36;
for (int k = num; k < num + 3; k++)
{
for (int l = y; l < y + 2; l++)
{
Main.tile[k, l].active(true);
Main.tile[k, l].type = (byte)type;
Main.tile[k, l].frameX = (short)(num2 + 18 * (k - num));
Main.tile[k, l].frameY = (short)(num3 + 18 * (l - y));
}
}
}
}
public static void Check3x2Wall(int x, int y)
{
if (WorldGen.destroyObject)
{
return;
}
bool flag = false;
int type = (int)Main.tile[x, y].type;
int num = 0;
int i = (int)(Main.tile[x, y].frameY / 18);
while (i >= 2)
{
i -= 2;
num++;
}
int num2 = y - i;
int num3 = x - (int)(Main.tile[x, y].frameX / 18);
i = num * 36;
for (int j = num3; j < num3 + 3; j++)
{
for (int k = num2; k < num2 + 2; k++)
{
if ((int)Main.tile[j, k].type != type || !Main.tile[j, k].active() || Main.tile[j, k].wall <= 0 || (int)Main.tile[j, k].frameY != i + (k - num2) * 18 || (int)Main.tile[j, k].frameX != (j - num3) * 18)
{
flag = true;
break;
}
}
}
if (flag)
{
WorldGen.destroyObject = true;
for (int l = num3; l < num3 + 3; l++)
{
for (int m = num2; m < num2 + 2; m++)
{
if ((int)Main.tile[l, m].type == type && Main.tile[l, m].active())
{
WorldGen.KillTile(l, m, false, false, false);
}
}
}
if (type == 246)
{
if (num == 16)
{
Item.NewItem(x * 16, y * 16, 32, 32, 1541, 1, false, 0, false);
}
else
{
if (num == 17)
{
Item.NewItem(x * 16, y * 16, 32, 32, 1542, 1, false, 0, false);
}
else
{
Item.NewItem(x * 16, y * 16, 32, 32, 1479 + num, 1, false, 0, false);
}
}
}
WorldGen.destroyObject = false;
}
}
public static void Place4x3Wall(int x, int y, int type, int style)
{
int num = x - 1;
int num2 = y - 1;
bool flag = true;
for (int i = num; i < num + 4; i++)
{
for (int j = num2; j < num2 + 3; j++)
{
if (Main.tile[i, j].active() || Main.tile[i, j].wall == 0)
{
flag = false;
break;
}
}
}
if (flag)
{
int num3 = 0;
int num4 = style * 54;
for (int k = num; k < num + 4; k++)
{
for (int l = num2; l < num2 + 3; l++)
{
Main.tile[k, l].active(true);
Main.tile[k, l].type = (byte)type;
Main.tile[k, l].frameX = (short)(num3 + 18 * (k - num));
Main.tile[k, l].frameY = (short)(num4 + 18 * (l - 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 num = 0;
int i = (int)(Main.tile[x, y].frameY / 18);
while (i >= 3)
{
i -= 3;
num++;
}
int num2 = y - i;
int num3 = x - (int)(Main.tile[x, y].frameX / 18);
i = num * 54;
for (int j = num3; j < num3 + 4; j++)
{
for (int k = num2; k < num2 + 3; k++)
{
if ((int)Main.tile[j, k].type != type || !Main.tile[j, k].active() || Main.tile[j, k].wall <= 0 || (int)Main.tile[j, k].frameY != i + (k - num2) * 18 || (int)Main.tile[j, k].frameX != (j - num3) * 18)
{
flag = true;
break;
}
}
}
if (flag)
{
WorldGen.destroyObject = true;
for (int l = num3; l < num3 + 4; l++)
{
for (int m = num2; m < num2 + 3; m++)
{
if ((int)Main.tile[l, m].type == type && Main.tile[l, m].active())
{
WorldGen.KillTile(l, m, false, false, false);
}
}
}
if (type == 241)
{
Item.NewItem(x * 16, y * 16, 32, 32, 1417, 1, false, 0, false);
}
WorldGen.destroyObject = false;
}
}
public static void Place6x4Wall(int x, int y, int type, int style)
{
int num = x - 2;
int num2 = y - 2;
bool flag = true;
for (int i = num; i < num + 6; i++)
{
for (int j = num2; j < num2 + 4; j++)
{
if (Main.tile[i, j].active() || Main.tile[i, j].wall == 0)
{
flag = false;
break;
}
}
}
if (flag)
{
int num3 = 0;
int num4 = style * 72;
for (int k = num; k < num + 6; k++)
{
for (int l = num2; l < num2 + 4; l++)
{
Main.tile[k, l].active(true);
Main.tile[k, l].type = (byte)type;
Main.tile[k, l].frameX = (short)(num3 + 18 * (k - num));
Main.tile[k, l].frameY = (short)(num4 + 18 * (l - 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 num = 0;
int i = (int)(Main.tile[x, y].frameY / 18);
while (i >= 4)
{
i -= 4;
num++;
}
int num2 = y - i;
int num3 = x - (int)(Main.tile[x, y].frameX / 18);
i = num * 72;
for (int j = num3; j < num3 + 6; j++)
{
for (int k = num2; k < num2 + 4; k++)
{
if ((int)Main.tile[j, k].type != type || !Main.tile[j, k].active() || Main.tile[j, k].wall <= 0 || (int)Main.tile[j, k].frameY != i + (k - num2) * 18 || (int)Main.tile[j, k].frameX != (j - num3) * 18)
{
flag = true;
break;
}
}
}
if (flag)
{
WorldGen.destroyObject = true;
for (int l = num3; l < num3 + 6; l++)
{
for (int m = num2; m < num2 + 4; m++)
{
if ((int)Main.tile[l, m].type == type && Main.tile[l, m].active())
{
WorldGen.KillTile(l, m, false, false, false);
}
}
}
if (type == 242)
{
if (num == 16)
{
Item.NewItem(x * 16, y * 16, 32, 32, 1573, 1, false, 0, false);
}
else
{
if (num >= 13)
{
Item.NewItem(x * 16, y * 16, 32, 32, 1500 + num - 13, 1, false, 0, false);
}
else
{
if (num >= 6)
{
Item.NewItem(x * 16, y * 16, 32, 32, 1433 + num - 6, 1, false, 0, false);
}
else
{
Item.NewItem(x * 16, y * 16, 32, 32, 1421 + num, 1, false, 0, false);
}
}
}
}
WorldGen.destroyObject = false;
}
}
public static void Place1x1(int x, int y, int type, int style = 0)
{
if (Main.tile[x, y] == null)
{
Main.tile[x, y] = new Tile();
}
if (Main.tile[x, y + 1] == null)
{
Main.tile[x, y + 1] = new Tile();
}
if (WorldGen.SolidTile2(x, y + 1) && !Main.tile[x, y].active())
{
Main.tile[x, y].active(true);
Main.tile[x, y].type = (byte)type;
if (type == 144 || type == 239)
{
Main.tile[x, y].frameX = (short)(style * 18);
Main.tile[x, y].frameY = 0;
return;
}
Main.tile[x, y].frameY = (short)(style * 18);
}
}
public static void Check1x1(int x, int y, int type)
{
if (Main.tile[x, y + 1] != null && !WorldGen.SolidTile2(x, y + 1))
{
WorldGen.KillTile(x, y, false, false, false);
}
}
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() == 0)
{
flag = true;
}
if (flag)
{
Main.tile[x, y].active(true);
Main.tile[x, y].type = (byte)type;
if (type == 33)
{
Main.tile[x, y].frameX = 0;
Main.tile[x, y].frameY = (short)(style * 22);
}
else
{
Main.tile[x, y].frameX = (short)(style * 18);
Main.tile[x, y].frameY = 0;
}
if (type == 50)
{
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() == 0)
{
bool flag = false;
if (style == 0)
{
if (Main.tile[x, y + 1].type != 2 && Main.tile[x, y + 1].type != 78 && Main.tile[x, y + 1].type != 109)
{
flag = true;
}
if (Main.tile[x, y].liquid > 0)
{
flag = true;
}
}
else
{
if (style == 1)
{
if (Main.tile[x, y + 1].type != 60 && Main.tile[x, y + 1].type != 78)
{
flag = true;
}
if (Main.tile[x, y].liquid > 0)
{
flag = true;
}
}
else
{
if (style == 2)
{
if (Main.tile[x, y + 1].type != 0 && Main.tile[x, y + 1].type != 59 && Main.tile[x, y + 1].type != 78)
{
flag = true;
}
if (Main.tile[x, y].liquid > 0)
{
flag = true;
}
}
else
{
if (style == 3)
{
if (Main.tile[x, y + 1].type != 203 && Main.tile[x, y + 1].type != 199 && Main.tile[x, y + 1].type != 23 && Main.tile[x, y + 1].type != 25 && Main.tile[x, y + 1].type != 78)
{
flag = true;
}
if (Main.tile[x, y].liquid > 0)
{
flag = true;
}
}
else
{
if (style == 4)
{
if (Main.tile[x, y + 1].type != 53 && Main.tile[x, y + 1].type != 78 && Main.tile[x, y + 1].type != 116)
{
flag = true;
}
if (Main.tile[x, y].liquid > 0 && Main.tile[x, y].lava())
{
flag = true;
}
}
else
{
if (style == 5)
{
if (Main.tile[x, y + 1].type != 57 && Main.tile[x, y + 1].type != 78)
{
flag = true;
}
if (Main.tile[x, y].liquid > 0 && !Main.tile[x, y].lava())
{
flag = true;
}
}
}
}
}
}
}
if (!flag)
{
Main.tile[x, y].active(true);
Main.tile[x, y].type = 82;
Main.tile[x, y].frameX = (short)(18 * style);
Main.tile[x, y].frameY = 0;
return true;
}
}
return false;
}
public static void GrowAlch(int x, int y)
{
if (Main.tile[x, y].active())
{
if (Main.tile[x, y].type == 82 && WorldGen.genRand.Next(50) == 0)
{
Main.tile[x, y].type = 83;
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, x, y, 1);
}
WorldGen.SquareTileFrame(x, y, true);
return;
}
if (Main.tile[x, y].frameX == 36)
{
if (Main.tile[x, y].type == 83)
{
Main.tile[x, y].type = 84;
}
else
{
Main.tile[x, y].type = 83;
}
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, x, y, 1);
}
}
}
}
public static void PlantAlch()
{
int num = WorldGen.genRand.Next(20, Main.maxTilesX - 20);
int num2;
if (WorldGen.genRand.Next(40) == 0)
{
num2 = WorldGen.genRand.Next((int)(Main.rockLayer + (double)Main.maxTilesY) / 2, Main.maxTilesY - 20);
}
else
{
if (WorldGen.genRand.Next(10) == 0)
{
num2 = WorldGen.genRand.Next(0, Main.maxTilesY - 20);
}
else
{
num2 = WorldGen.genRand.Next((int)Main.worldSurface, Main.maxTilesY - 20);
}
}
while (num2 < Main.maxTilesY - 20 && !Main.tile[num, num2].active())
{
num2++;
}
if (Main.tile[num, num2].nactive() && !Main.tile[num, num2 - 1].active() && Main.tile[num, num2 - 1].liquid == 0)
{
if (Main.tile[num, num2].type == 2 || Main.tile[num, num2].type == 109)
{
WorldGen.PlaceAlch(num, num2 - 1, 0);
}
if (Main.tile[num, num2].type == 60)
{
WorldGen.PlaceAlch(num, num2 - 1, 1);
}
if (Main.tile[num, num2].type == 0 || Main.tile[num, num2].type == 59)
{
WorldGen.PlaceAlch(num, num2 - 1, 2);
}
if (Main.tile[num, num2].type == 23 || Main.tile[num, num2].type == 25 || Main.tile[num, num2].type == 203 || Main.tile[num, num2].type == 199)
{
WorldGen.PlaceAlch(num, num2 - 1, 3);
}
if (Main.tile[num, num2].type == 53 || Main.tile[num, num2].type == 116)
{
WorldGen.PlaceAlch(num, num2 - 1, 4);
}
if (Main.tile[num, num2].type == 57)
{
WorldGen.PlaceAlch(num, num2 - 1, 5);
}
if (Main.tile[num, num2 - 1].active() && Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num, num2 - 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 = 0;
if (!flag)
{
if (num == 0)
{
if (Main.tile[x, y + 1].type != 109 && Main.tile[x, y + 1].type != 2 && Main.tile[x, y + 1].type != 78)
{
flag = true;
}
if (Main.tile[x, y].liquid > 0 && Main.tile[x, y].lava())
{
flag = true;
}
}
else
{
if (num == 1)
{
if (Main.tile[x, y + 1].type != 60 && Main.tile[x, y + 1].type != 78)
{
flag = true;
}
if (Main.tile[x, y].liquid > 0 && Main.tile[x, y].lava())
{
flag = true;
}
}
else
{
if (num == 2)
{
if (Main.tile[x, y + 1].type != 0 && Main.tile[x, y + 1].type != 59 && Main.tile[x, y + 1].type != 78)
{
flag = true;
}
if (Main.tile[x, y].liquid > 0 && Main.tile[x, y].lava())
{
flag = true;
}
}
else
{
if (num == 3)
{
if (Main.tile[x, y + 1].type != 199 && Main.tile[x, y + 1].type != 203 && Main.tile[x, y + 1].type != 23 && Main.tile[x, y + 1].type != 25 && Main.tile[x, y + 1].type != 78)
{
flag = true;
}
if (Main.tile[x, y].liquid > 0 && Main.tile[x, y].lava())
{
flag = true;
}
}
else
{
if (num == 4)
{
if (Main.tile[x, y + 1].type != 53 && Main.tile[x, y + 1].type != 78 && Main.tile[x, y + 1].type != 116)
{
flag = true;
}
if (Main.tile[x, y].liquid > 0 && Main.tile[x, y].lava())
{
flag = true;
}
if (Main.tile[x, y].type != 82 && !Main.tile[x, y].lava() && Main.netMode != 1)
{
if (Main.tile[x, y].liquid > 16)
{
if (Main.tile[x, y].type == 83)
{
Main.tile[x, y].type = 84;
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, x, y, 1);
}
}
}
else
{
if (Main.tile[x, y].type == 84)
{
Main.tile[x, y].type = 83;
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, x, y, 1);
}
}
}
}
}
else
{
if (num == 5)
{
if (Main.tile[x, y + 1].type != 57 && Main.tile[x, y + 1].type != 78)
{
flag = true;
}
if (Main.tile[x, y].liquid > 0 && !Main.tile[x, y].lava())
{
flag = true;
}
if (Main.tile[x, y].type != 82 && Main.tile[x, y].lava() && Main.tile[x, y].type != 82 && Main.tile[x, y].lava() && Main.netMode != 1)
{
if (Main.tile[x, y].liquid > 16)
{
if (Main.tile[x, y].type == 83)
{
Main.tile[x, y].type = 84;
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, x, y, 1);
}
}
}
else
{
if (Main.tile[x, y].type == 84)
{
Main.tile[x, y].type = 83;
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, x, y, 1);
}
}
}
}
}
}
}
}
}
}
}
if (flag)
{
WorldGen.KillTile(x, y, false, false, false);
}
}
public static void CheckBanner(int x, int j, byte type)
{
if (WorldGen.destroyObject)
{
return;
}
int num = j - (int)(Main.tile[x, j].frameY / 18);
int frameX = (int)Main.tile[x, j].frameX;
bool flag = false;
for (int i = 0; i < 3; i++)
{
if (Main.tile[x, num + i] == null)
{
Main.tile[x, num + i] = new Tile();
}
if (!Main.tile[x, num + i].active())
{
flag = true;
}
else
{
if (Main.tile[x, num + i].type != type)
{
flag = true;
}
else
{
if ((int)Main.tile[x, num + i].frameY != i * 18)
{
flag = true;
}
else
{
if ((int)Main.tile[x, num + i].frameX != frameX)
{
flag = true;
}
}
}
}
}
if (Main.tile[x, num - 1] == null)
{
Main.tile[x, num - 1] = new Tile();
}
if (!Main.tile[x, num - 1].nactive())
{
flag = true;
}
if (!Main.tileSolid[(int)Main.tile[x, num - 1].type])
{
flag = true;
}
if (Main.tileSolidTop[(int)Main.tile[x, num - 1].type])
{
flag = true;
}
if (flag)
{
WorldGen.destroyObject = true;
for (int k = 0; k < 3; k++)
{
if (Main.tile[x, num + k].type == type)
{
WorldGen.KillTile(x, num + k, false, false, false);
}
}
if (type == 91)
{
int num2 = frameX / 18;
if (num2 >= 22)
{
Item.NewItem(x * 16, (num + 1) * 16, 32, 32, 1593 + num2, 1, false, 0, false);
}
else
{
if (num2 >= 10 && num2 <= 15)
{
Item.NewItem(x * 16, (num + 1) * 16, 32, 32, 1441 + num2, 1, false, 0, false);
}
else
{
if (num2 >= 16 && num2 <= 21)
{
Item.NewItem(x * 16, (num + 1) * 16, 32, 32, 1448 + num2, 1, false, 0, false);
}
else
{
if (num2 >= 7 && num2 <= 9)
{
Item.NewItem(x * 16, (num + 1) * 16, 32, 32, 838 + num2, 1, false, 0, false);
}
else
{
if (num2 >= 4 && num2 <= 6)
{
Item.NewItem(x * 16, (num + 1) * 16, 32, 32, 785 + num2, 1, false, 0, false);
}
else
{
Item.NewItem(x * 16, (num + 1) * 16, 32, 32, 337 + num2, 1, false, 0, false);
}
}
}
}
}
}
WorldGen.destroyObject = false;
}
}
public static void PlaceBanner(int x, int y, int type, int style = 0)
{
int num = style * 18;
if (Main.tile[x, y - 1] == null)
{
Main.tile[x, y - 1] = new Tile();
}
if (Main.tile[x, y] == null)
{
Main.tile[x, y] = new Tile();
}
if (Main.tile[x, y + 1] == null)
{
Main.tile[x, y + 1] = new Tile();
}
if (Main.tile[x, y + 2] == null)
{
Main.tile[x, y + 2] = new Tile();
}
if (Main.tile[x, y - 1].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())
{
Main.tile[x, y].active(true);
Main.tile[x, y].frameY = 0;
Main.tile[x, y].frameX = (short)num;
Main.tile[x, y].type = (byte)type;
Main.tile[x, y + 1].active(true);
Main.tile[x, y + 1].frameY = 18;
Main.tile[x, y + 1].frameX = (short)num;
Main.tile[x, y + 1].type = (byte)type;
Main.tile[x, y + 2].active(true);
Main.tile[x, y + 2].frameY = 36;
Main.tile[x, y + 2].frameX = (short)num;
Main.tile[x, y + 2].type = (byte)type;
}
}
public static void PlaceMan(int i, int j, int dir)
{
for (int k = i; k <= i + 1; k++)
{
for (int l = j - 2; l <= j; l++)
{
if (Main.tile[k, l].active())
{
return;
}
}
}
if (!WorldGen.SolidTile2(i, j + 1) || !WorldGen.SolidTile2(i + 1, j + 1))
{
return;
}
byte b = 0;
if (dir == 1)
{
b = 36;
}
Main.tile[i, j - 2].active(true);
Main.tile[i, j - 2].frameY = 0;
Main.tile[i, j - 2].frameX = (short)b;
Main.tile[i, j - 2].type = 128;
Main.tile[i, j - 1].active(true);
Main.tile[i, j - 1].frameY = 18;
Main.tile[i, j - 1].frameX = (short)b;
Main.tile[i, j - 1].type = 128;
Main.tile[i, j].active(true);
Main.tile[i, j].frameY = 36;
Main.tile[i, j].frameX = (short)b;
Main.tile[i, j].type = 128;
Main.tile[i + 1, j - 2].active(true);
Main.tile[i + 1, j - 2].frameY = 0;
Main.tile[i + 1, j - 2].frameX = (short)(18 + b);
Main.tile[i + 1, j - 2].type = 128;
Main.tile[i + 1, j - 1].active(true);
Main.tile[i + 1, j - 1].frameY = 18;
Main.tile[i + 1, j - 1].frameX = (short)(18 + b);
Main.tile[i + 1, j - 1].type = 128;
Main.tile[i + 1, j].active(true);
Main.tile[i + 1, j].frameY = 36;
Main.tile[i + 1, j].frameX = (short)(18 + b);
Main.tile[i + 1, j].type = 128;
}
public static void CheckMan(int i, int j)
{
if (WorldGen.destroyObject)
{
return;
}
int num = j - (int)(Main.tile[i, j].frameY / 18);
int k;
for (k = (int)Main.tile[i, j].frameX; k >= 100; k -= 100)
{
}
while (k >= 36)
{
k -= 36;
}
int num2 = i - k / 18;
bool flag = false;
for (int l = 0; l <= 1; l++)
{
for (int m = 0; m <= 2; m++)
{
int num3 = num2 + l;
int num4 = num + m;
int n;
for (n = (int)Main.tile[num3, num4].frameX; n >= 100; n -= 100)
{
}
if (n >= 36)
{
n -= 36;
}
if (!Main.tile[num3, num4].active() || Main.tile[num3, num4].type != 128 || (int)Main.tile[num3, num4].frameY != m * 18 || n != l * 18)
{
flag = true;
}
}
}
if (!WorldGen.SolidTile2(num2, num + 3) || !WorldGen.SolidTile2(num2 + 1, num + 3))
{
flag = true;
}
if (flag)
{
WorldGen.destroyObject = true;
Item.NewItem(i * 16, j * 16, 32, 32, 498, 1, false, 0, false);
for (int num5 = 0; num5 <= 1; num5++)
{
for (int num6 = 0; num6 <= 2; num6++)
{
int num7 = num2 + num5;
int num8 = num + num6;
if (Main.tile[num7, num8].active() && Main.tile[num7, num8].type == 128)
{
WorldGen.KillTile(num7, num8, false, false, false);
}
}
}
WorldGen.destroyObject = false;
}
}
public static void Place1x2(int x, int y, int type, int style)
{
short frameX = 0;
if (type == 20)
{
frameX = (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())
{
short num = (short)(style * 40);
Main.tile[x, y - 1].active(true);
Main.tile[x, y - 1].frameY = num;
Main.tile[x, y - 1].frameX = frameX;
Main.tile[x, y - 1].type = (byte)type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameY = (short)(num + 18);
Main.tile[x, y].frameX = frameX;
Main.tile[x, y].type = (byte)type;
}
}
public static void Place1x2Top(int x, int y, int type, int style)
{
short frameX = 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())
{
short num = (short)(style * 36);
Main.tile[x, y].active(true);
Main.tile[x, y].frameY = num;
Main.tile[x, y].frameX = frameX;
Main.tile[x, y].type = (byte)type;
Main.tile[x, y + 1].active(true);
Main.tile[x, y + 1].frameY = (short)(num + 18);
Main.tile[x, y + 1].frameX = frameX;
Main.tile[x, y + 1].type = (byte)type;
}
}
public static void Check1x2Top(int x, int j, byte type)
{
if (WorldGen.destroyObject)
{
return;
}
bool flag = true;
int i = (int)(Main.tile[x, j].frameY / 18);
int num = 0;
while (i >= 2)
{
i -= 2;
num++;
}
int num2 = j - i;
i = num * 36;
if (Main.tile[x, num2] == null)
{
Main.tile[x, num2] = new Tile();
}
if (Main.tile[x, num2 + 1] == null)
{
Main.tile[x, num2 + 1] = new Tile();
}
if (Main.tile[x, num2] == null)
{
Main.tile[x, num2] = new Tile();
}
if ((int)Main.tile[x, num2].frameY == i && (int)Main.tile[x, num2 + 1].frameY == i + 18 && Main.tile[x, num2].type == type && Main.tile[x, num2 + 1].type == type)
{
flag = false;
}
if (Main.tile[x, num2 - 1] == null)
{
Main.tile[x, num2 - 1] = new Tile();
}
if (!Main.tile[x, num2 - 1].nactive() || !Main.tileSolid[(int)Main.tile[x, num2 - 1].type] || Main.tileSolidTop[(int)Main.tile[x, num2 - 1].type])
{
flag = true;
}
if (flag)
{
WorldGen.destroyObject = true;
if (Main.tile[x, num2].type == type)
{
WorldGen.KillTile(x, num2, false, false, false);
}
if (Main.tile[x, num2 + 1].type == type)
{
WorldGen.KillTile(x, num2 + 1, false, false, false);
}
if (type == 42)
{
if (num == 0)
{
Item.NewItem(x * 16, num2 * 16, 32, 32, 136, 1, false, 0, false);
}
else
{
if (num == 7)
{
Item.NewItem(x * 16, num2 * 16, 32, 32, 1431, 1, false, 0, false);
}
else
{
Item.NewItem(x * 16, num2 * 16, 32, 32, 1389 + num, 1, false, 0, false);
}
}
}
WorldGen.destroyObject = false;
}
}
public static bool PlaceSmallPile(int i, int j, int X, int Y, int type = 185)
{
short frameY = (short)(Y * 18);
short num = (short)(X * 18);
if (Main.tile[i, j] == null)
{
Main.tile[i, 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 + 1] == null)
{
Main.tile[i + 1, j + 1] = new Tile();
}
if (Main.tile[i, j].lava())
{
return false;
}
if (Y == 1)
{
num = (short)(X * 36);
bool flag = false;
if (WorldGen.SolidTile2(i, j + 1) && WorldGen.SolidTile2(i + 1, j + 1) && !Main.tile[i, j].active() && !Main.tile[i + 1, j].active())
{
flag = true;
}
if (flag)
{
Main.tile[i, j].active(true);
Main.tile[i, j].frameY = frameY;
Main.tile[i, j].frameX = num;
Main.tile[i, j].type = (byte)type;
Main.tile[i + 1, j].active(true);
Main.tile[i + 1, j].frameY = frameY;
Main.tile[i + 1, j].frameX = (short)(num + 18);
Main.tile[i + 1, j].type = (byte)type;
return true;
}
}
else
{
if (WorldGen.SolidTile2(i, j + 1) && !Main.tile[i, j].active())
{
Main.tile[i, j].active(true);
Main.tile[i, j].frameY = frameY;
Main.tile[i, j].frameX = num;
Main.tile[i, j].type = (byte)type;
return true;
}
}
return false;
}
public static void CheckPile(int i, int y)
{
if (Main.tile[i, y] == null)
{
Main.tile[i, y] = new Tile();
}
if (Main.tile[i + 1, y] == null)
{
Main.tile[i + 1, y] = new Tile();
}
if (Main.tile[i, y + 1] == null)
{
Main.tile[i, y + 1] = new Tile();
}
if (Main.tile[i + 1, y + 1] == null)
{
Main.tile[i + 1, y + 1] = new Tile();
}
if (Main.tile[i, y].frameY == 18)
{
WorldGen.Check2x1(i, y, Main.tile[i, y].type);
return;
}
if (!WorldGen.SolidTile(i, y + 1))
{
WorldGen.KillTile(i, y, false, false, false);
}
}
public static void Check2x1(int i, int y, byte type)
{
if (WorldGen.destroyObject)
{
return;
}
bool flag = true;
if (Main.tile[i, y] == null)
{
Main.tile[i, y] = new Tile();
}
if (Main.tile[i + 1, y] == null)
{
Main.tile[i + 1, y] = new Tile();
}
if (Main.tile[i, y + 1] == null)
{
Main.tile[i, y + 1] = new Tile();
}
if (Main.tile[i + 1, y + 1] == null)
{
Main.tile[i + 1, y + 1] = new Tile();
}
int j = (int)(Main.tile[i, y].frameX / 18);
int num = 0;
while (j > 1)
{
j -= 2;
num++;
}
int num2 = i - j;
if (Main.tile[num2 + 1, y].frameX == Main.tile[num2, y].frameX + 18 && Main.tile[num2, y].type == type && Main.tile[num2 + 1, y].type == type)
{
flag = false;
}
if (type == 29 || type == 103)
{
if (!Main.tile[num2, y + 1].active() || !Main.tileTable[(int)Main.tile[num2, y + 1].type])
{
flag = true;
}
if (!Main.tile[num2 + 1, y + 1].active() || !Main.tileTable[(int)Main.tile[num2 + 1, y + 1].type])
{
flag = true;
}
}
else
{
if (!WorldGen.SolidTile2(num2, y + 1))
{
flag = true;
}
if (!WorldGen.SolidTile2(num2 + 1, y + 1))
{
flag = true;
}
}
if (type == 185 && Main.tile[num2, y].frameX >= 1368 && Main.tile[num2, y].frameX <= 1458 && Main.tile[num2, y + 1].type != 2 && Main.tile[num2 + 1, y + 1].type != 2)
{
Tile expr_21E = Main.tile[num2, y];
expr_21E.frameX -= 1368;
Tile expr_23E = Main.tile[num2 + 1, y];
expr_23E.frameX -= 1368;
}
if (flag)
{
int frameX = (int)Main.tile[num2, y].frameX;
if (!Main.tile[num2, y].active())
{
frameX = (int)Main.tile[num2 + 1, y].frameX;
}
WorldGen.destroyObject = true;
if (Main.tile[num2, y].type == type)
{
WorldGen.KillTile(num2, y, false, false, false);
}
if (Main.tile[num2 + 1, y].type == type)
{
WorldGen.KillTile(num2 + 1, y, false, false, false);
}
if (type == 16)
{
if (num == 1)
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 716, 1, false, 0, false);
}
else
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 35, 1, false, 0, false);
}
}
if (type == 18)
{
int type2 = 36;
if (num >= 1 && num <= 3)
{
type2 = 634 + num;
}
if (num >= 4 && num <= 8)
{
type2 = 807 + num;
}
if (num == 9)
{
type2 = 916;
}
if (num == 10)
{
type2 = 1145;
}
if (num == 11)
{
type2 = 1398;
}
if (num == 12)
{
type2 = 1401;
}
if (num == 13)
{
type2 = 1404;
}
if (num == 14)
{
type2 = 1461;
}
if (num == 15)
{
type2 = 1511;
}
Item.NewItem(num2 * 16, y * 16, 32, 32, type2, 1, false, 0, false);
}
if (type == 185)
{
if (frameX >= 576 && frameX <= 610)
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(10, 100), false, 0, false);
Item.NewItem(num2 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100), false, 0, false);
if (WorldGen.genRand.Next(3) != 0)
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(10, 100), false, 0, false);
}
if (WorldGen.genRand.Next(3) != 0)
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100), false, 0, false);
}
if (WorldGen.genRand.Next(2) == 0)
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(10, 100), false, 0, false);
}
if (WorldGen.genRand.Next(2) == 0)
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100), false, 0, false);
}
if (WorldGen.genRand.Next(3) == 0)
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(10, 100), false, 0, false);
}
if (WorldGen.genRand.Next(3) == 0)
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100), false, 0, false);
}
if (WorldGen.genRand.Next(4) == 0)
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(10, 100), false, 0, false);
}
if (WorldGen.genRand.Next(4) == 0)
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100), false, 0, false);
}
if (WorldGen.genRand.Next(5) == 0)
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(10, 100), false, 0, false);
}
if (WorldGen.genRand.Next(5) == 0)
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100), false, 0, false);
}
}
if (frameX >= 612 && frameX <= 646)
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 72, WorldGen.genRand.Next(10, 100), false, 0, false);
if (Main.rand.Next(2) == 0)
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 72, WorldGen.genRand.Next(20, 100), false, 0, false);
}
if (Main.rand.Next(3) == 0)
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 72, WorldGen.genRand.Next(30, 100), false, 0, false);
}
}
if (frameX >= 648 && frameX <= 682)
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 73, WorldGen.genRand.Next(1, 6), false, 0, false);
if (WorldGen.genRand.Next(2) == 0)
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 73, WorldGen.genRand.Next(2, 6), false, 0, false);
}
if (WorldGen.genRand.Next(3) == 0)
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 73, WorldGen.genRand.Next(3, 6), false, 0, false);
}
}
if (frameX >= 684 && frameX <= 718)
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 181, WorldGen.genRand.Next(1, 4), false, 0, false);
}
if (frameX >= 720 && frameX <= 754)
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 180, WorldGen.genRand.Next(1, 4), false, 0, false);
}
if (frameX >= 756 && frameX <= 790)
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 177, WorldGen.genRand.Next(1, 4), false, 0, false);
}
if (frameX >= 792 && frameX <= 826)
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 179, WorldGen.genRand.Next(1, 4), false, 0, false);
}
if (frameX >= 828 && frameX <= 862)
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 178, WorldGen.genRand.Next(1, 4), false, 0, false);
}
if (frameX >= 864 && frameX <= 898)
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 182, WorldGen.genRand.Next(1, 4), false, 0, false);
}
}
if (type == 29)
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 87, 1, false, 0, false);
Main.PlaySound(13, i * 16, y * 16, 1);
}
if (type == 103)
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 356, 1, false, 0, false);
Main.PlaySound(13, i * 16, y * 16, 1);
}
else
{
if (type == 134)
{
if (num == 1)
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 1220, 1, false, 0, false);
}
else
{
Item.NewItem(num2 * 16, y * 16, 32, 32, 525, 1, false, 0, false);
}
}
}
WorldGen.destroyObject = false;
WorldGen.SquareTileFrame(num2, y, true);
WorldGen.SquareTileFrame(num2 + 1, y, true);
}
}
public static void Place2x1(int x, int y, int type, int style = 0)
{
if (Main.tile[x, y] == null)
{
Main.tile[x, y] = new Tile();
}
if (Main.tile[x + 1, y] == null)
{
Main.tile[x + 1, y] = new Tile();
}
if (Main.tile[x, y + 1] == null)
{
Main.tile[x, y + 1] = new Tile();
}
if (Main.tile[x + 1, y + 1] == null)
{
Main.tile[x + 1, y + 1] = new Tile();
}
bool flag = false;
if (type != 29 && type != 103 && 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 == 29 || type == 103) && Main.tile[x, y + 1].active() && Main.tile[x + 1, y + 1].active() && Main.tileTable[(int)Main.tile[x, y + 1].type] && Main.tileTable[(int)Main.tile[x + 1, y + 1].type] && !Main.tile[x, y].active() && !Main.tile[x + 1, y].active())
{
flag = true;
}
}
if (flag)
{
Main.tile[x, y].active(true);
Main.tile[x, y].frameY = 0;
Main.tile[x, y].frameX = (short)(36 * style);
Main.tile[x, y].type = (byte)type;
Main.tile[x + 1, y].active(true);
Main.tile[x + 1, y].frameY = 0;
Main.tile[x + 1, y].frameX = (short)(36 * style + 18);
Main.tile[x + 1, y].type = (byte)type;
}
}
public static void Check4x2(int i, int j, int type)
{
if (WorldGen.destroyObject)
{
return;
}
bool flag = false;
int num = i + (int)(Main.tile[i, j].frameX / 18 * -1);
if ((type == 79 || type == 90) && Main.tile[i, j].frameX >= 72)
{
num += 4;
}
int k = (int)(Main.tile[i, j].frameY / 18);
int num2 = 0;
while (k > 1)
{
k -= 2;
num2++;
}
k = j - k;
for (int l = num; l < num + 4; l++)
{
for (int m = k; m < k + 2; m++)
{
int num3 = (l - num) * 18;
if ((type == 79 || type == 90) && Main.tile[i, j].frameX >= 72)
{
num3 = (l - num + 4) * 18;
}
if (Main.tile[l, m] == null)
{
Main.tile[l, m] = new Tile();
}
if (!Main.tile[l, m].active() || (int)Main.tile[l, m].type != type || (int)Main.tile[l, m].frameX != num3 || (int)Main.tile[l, m].frameY != (m - k) * 18 + num2 * 36)
{
flag = true;
}
}
if (Main.tile[l, k + 2] == null)
{
Main.tile[l, k + 2] = new Tile();
}
if (!WorldGen.SolidTile2(l, k + 2))
{
flag = true;
}
}
if (flag)
{
WorldGen.destroyObject = true;
for (int n = num; n < num + 4; n++)
{
for (int num4 = k; num4 < k + 3; num4++)
{
if ((int)Main.tile[n, num4].type == type && Main.tile[n, num4].active())
{
WorldGen.KillTile(n, num4, false, false, false);
}
}
}
if (type == 79)
{
if (num2 == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 224, 1, false, 0, false);
}
else
{
if (num2 == 4)
{
Item.NewItem(i * 16, j * 16, 32, 32, 920, 1, false, 0, false);
}
else
{
if (num2 >= 9 && num2 <= 12)
{
Item.NewItem(i * 16, j * 16, 32, 32, 1710 + num2, 1, false, 0, false);
}
else
{
if (num2 >= 5 && num2 <= 8)
{
Item.NewItem(i * 16, j * 16, 32, 32, 1465 + num2, 1, false, 0, false);
}
else
{
Item.NewItem(i * 16, j * 16, 32, 32, num2 + 643, 1, false, 0, false);
}
}
}
}
}
if (type == 90)
{
Item.NewItem(i * 16, j * 16, 32, 32, 336, 1, false, 0, false);
}
WorldGen.destroyObject = false;
for (int num5 = num - 1; num5 < num + 4; num5++)
{
for (int num6 = k - 1; num6 < k + 4; num6++)
{
WorldGen.TileFrame(num5, num6, false, false);
}
}
}
}
public static void PlaceJunglePlant(int X2, int Y2, int type, int styleX, int styleY)
{
if (styleY > 0 || type == 236 || type == 238)
{
int num = Y2;
if (type == 95 || type == 126)
{
num++;
}
if (X2 < 5 || X2 > Main.maxTilesX - 5 || num < 5 || num > Main.maxTilesY - 5)
{
return;
}
bool flag = true;
for (int i = X2 - 1; i < X2 + 1; i++)
{
for (int j = num - 1; j < num + 1; j++)
{
if (Main.tile[i, j] == null)
{
Main.tile[i, j] = new Tile();
}
if (Main.tile[i, j].active() && Main.tile[i, j].type != 61 && Main.tile[i, j].type != 62 && Main.tile[i, j].type != 69 && Main.tile[i, j].type != 74 && (type != 236 || Main.tile[i, j].type != 233) && (type != 238 || Main.tile[i, j].type != 233) && (Main.tile[i, j].type != 185 || Main.tile[i, j].frameY != 0))
{
flag = false;
}
if (type == 98 && Main.tile[i, j].liquid > 0)
{
flag = false;
}
}
if (Main.tile[i, num + 1] == null)
{
Main.tile[i, num + 1] = new Tile();
}
if (!WorldGen.SolidTile(i, num + 1) || Main.tile[i, num + 1].type != 60)
{
flag = false;
}
}
if (flag)
{
short num2 = 36;
if (type == 236 || type == 238)
{
num2 = 0;
}
short num3 = (short)(36 * styleX);
Main.tile[X2 - 1, num - 1].active(true);
Main.tile[X2 - 1, num - 1].frameY = num2;
Main.tile[X2 - 1, num - 1].frameX = num3;
Main.tile[X2 - 1, num - 1].type = (byte)type;
Main.tile[X2, num - 1].active(true);
Main.tile[X2, num - 1].frameY = num2;
Main.tile[X2, num - 1].frameX = (short)(18 + num3);
Main.tile[X2, num - 1].type = (byte)type;
Main.tile[X2 - 1, num].active(true);
Main.tile[X2 - 1, num].frameY = (short)(num2 + 18);
Main.tile[X2 - 1, num].frameX = num3;
Main.tile[X2 - 1, num].type = (byte)type;
Main.tile[X2, num].active(true);
Main.tile[X2, num].frameY = (short)(num2 + 18);
Main.tile[X2, num].frameX = (short)(18 + num3);
Main.tile[X2, num].type = (byte)type;
return;
}
}
else
{
if (X2 < 5 || X2 > Main.maxTilesX - 5 || Y2 < 5 || Y2 > Main.maxTilesY - 5)
{
return;
}
bool flag2 = true;
for (int k = X2 - 1; k < X2 + 2; k++)
{
for (int l = Y2 - 1; l < Y2 + 1; l++)
{
if (Main.tile[k, l] == null)
{
Main.tile[k, l] = new Tile();
}
if (Main.tile[k, l].active() && Main.tile[k, l].type != 61 && Main.tile[k, l].type != 62 && Main.tile[k, l].type != 69 && Main.tile[k, l].type != 74 && (Main.tile[k, l].type != 185 || Main.tile[k, l].frameY != 0))
{
flag2 = false;
}
}
if (Main.tile[k, Y2 + 1] == null)
{
Main.tile[k, Y2 + 1] = new Tile();
}
if (!WorldGen.SolidTile(k, Y2 + 1) || Main.tile[k, Y2 + 1].type != 60)
{
flag2 = false;
}
}
if (flag2)
{
short num4 = (short)(54 * styleX);
Main.tile[X2 - 1, Y2 - 1].active(true);
Main.tile[X2 - 1, Y2 - 1].frameY = 0;
Main.tile[X2 - 1, Y2 - 1].frameX = num4;
Main.tile[X2 - 1, Y2 - 1].type = (byte)type;
Main.tile[X2, Y2 - 1].active(true);
Main.tile[X2, Y2 - 1].frameY = 0;
Main.tile[X2, Y2 - 1].frameX = (short)(num4 + 18);
Main.tile[X2, Y2 - 1].type = (byte)type;
Main.tile[X2 + 1, Y2 - 1].active(true);
Main.tile[X2 + 1, Y2 - 1].frameY = 0;
Main.tile[X2 + 1, Y2 - 1].frameX = (short)(num4 + 36);
Main.tile[X2 + 1, Y2 - 1].type = (byte)type;
Main.tile[X2 - 1, Y2].active(true);
Main.tile[X2 - 1, Y2].frameY = 18;
Main.tile[X2 - 1, Y2].frameX = num4;
Main.tile[X2 - 1, Y2].type = (byte)type;
Main.tile[X2, Y2].active(true);
Main.tile[X2, Y2].frameY = 18;
Main.tile[X2, Y2].frameX = (short)(num4 + 18);
Main.tile[X2, Y2].type = (byte)type;
Main.tile[X2 + 1, Y2].active(true);
Main.tile[X2 + 1, Y2].frameY = 18;
Main.tile[X2 + 1, Y2].frameX = (short)(num4 + 36);
Main.tile[X2 + 1, Y2].type = (byte)type;
}
}
}
public static void CheckJunglePlant(int i, int j, int type)
{
if (WorldGen.destroyObject)
{
return;
}
if (Main.tile[i, j].frameY >= 36 || Main.tile[i, j].type == 236 || Main.tile[i, j].type == 238)
{
bool flag = false;
int k = (int)(Main.tile[i, j].frameX / 18);
int num = 0;
while (k > 1)
{
k -= 2;
num++;
}
k = i - k;
int num2 = 36;
if (type == 236 || type == 238)
{
num2 = 0;
}
int l;
for (l = (int)(Main.tile[i, j].frameY / 18); l > 1; l -= 2)
{
}
l = j - l;
int num3 = num * 36;
for (int m = k; m < k + 2; m++)
{
for (int n = l; n < l + 2; n++)
{
if (Main.tile[m, n] == null)
{
Main.tile[m, n] = new Tile();
}
if (!Main.tile[m, n].active() || (int)Main.tile[m, n].type != type || (int)Main.tile[m, n].frameX != (m - k) * 18 + num3 || (int)Main.tile[m, n].frameY != (n - l) * 18 + num2)
{
flag = true;
}
}
if (Main.tile[m, l + 2] == null)
{
Main.tile[m, l + 2] = new Tile();
}
if (!WorldGen.SolidTile(m, l + 2) || Main.tile[m, l + 2].type != 60)
{
flag = true;
}
}
if (flag)
{
if (type == 238)
{
float num4 = (float)(i * 16);
float num5 = (float)(j * 16);
float num6 = -1f;
int plr = 0;
for (int num7 = 0; num7 < 255; num7++)
{
float num8 = Math.Abs(Main.player[num7].position.X - num4) + Math.Abs(Main.player[num7].position.Y - num5);
if (num8 < num6 || num6 == -1f)
{
plr = num7;
num6 = num8;
}
}
if (num6 / 16f < 50f)
{
NPC.SpawnOnPlayer(plr, 262);
}
}
if (type == 236)
{
Item.NewItem(i * 16, j * 16, 32, 32, 1291, 1, false, 0, false);
}
short arg_2A8_0 = Main.tile[i, j].frameX;
WorldGen.destroyObject = true;
for (int num9 = k; num9 < k + 2; num9++)
{
for (int num10 = l; num10 < l + 2; num10++)
{
if (Main.tile[num9, num10] == null)
{
Main.tile[num9, num10] = new Tile();
}
if ((int)Main.tile[num9, num10].type == type && Main.tile[num9, num10].active())
{
WorldGen.KillTile(num9, num10, false, false, false);
}
}
}
return;
}
}
else
{
bool flag2 = false;
int num11 = j + (int)(Main.tile[i, j].frameY / 18 * -1);
int num12 = (int)(Main.tile[i, j].frameX / 18);
int num13 = 0;
while (num12 > 2)
{
num12 -= 3;
num13++;
}
num12 = i - num12;
int num14 = num13 * 54;
for (int num15 = num12; num15 < num12 + 3; num15++)
{
for (int num16 = num11; num16 < num11 + 2; num16++)
{
if (Main.tile[num15, num16] == null)
{
Main.tile[num15, num16] = new Tile();
}
if (!Main.tile[num15, num16].active() || (int)Main.tile[num15, num16].type != type || (int)Main.tile[num15, num16].frameX != (num15 - num12) * 18 + num14 || (int)Main.tile[num15, num16].frameY != (num16 - num11) * 18)
{
flag2 = true;
}
}
if (!WorldGen.SolidTile(num15, num11 + 2) || Main.tile[num15, num11 + 2].type != 60)
{
flag2 = true;
}
}
if (flag2)
{
short arg_48D_0 = Main.tile[i, j].frameX;
WorldGen.destroyObject = true;
for (int num17 = num12; num17 < num12 + 3; num17++)
{
for (int num18 = num11; num18 < num11 + 3; num18++)
{
if (Main.tile[num17, num18] == null)
{
Main.tile[num17, num18] = new Tile();
}
if ((int)Main.tile[num17, num18].type == type && Main.tile[num17, num18].active())
{
WorldGen.KillTile(num17, num18, false, false, false);
}
}
}
}
}
}
public static void Check2x2(int i, int j, int type)
{
if (WorldGen.destroyObject)
{
return;
}
bool flag = false;
int num = 0;
int num2 = (int)(Main.tile[i, j].frameX / 18 * -1);
if (num2 < -1)
{
num2 += 2;
num = 36;
}
num2 += i;
int num3 = (int)(Main.tile[i, j].frameY / 18 * -1);
num3 += j;
for (int k = num2; k < num2 + 2; k++)
{
for (int l = num3; l < num3 + 2; l++)
{
if (Main.tile[k, l] == null)
{
Main.tile[k, l] = new Tile();
}
if (!Main.tile[k, l].active() || (int)Main.tile[k, l].type != type || (int)Main.tile[k, l].frameX != (k - num2) * 18 + num || (int)Main.tile[k, l].frameY != (l - num3) * 18)
{
flag = true;
}
}
if (type == 95 || type == 126)
{
if (Main.tile[k, num3 - 1] == null)
{
Main.tile[k, num3 - 1] = new Tile();
}
if (!Main.tile[k, num3 - 1].active() || !Main.tileSolid[(int)Main.tile[k, num3 - 1].type] || Main.tileSolidTop[(int)Main.tile[k, num3 - 1].type])
{
flag = true;
}
}
else
{
if (type != 138)
{
if (Main.tile[k, num3 + 2] == null)
{
Main.tile[k, num3 + 2] = new Tile();
}
if (!Main.tile[k, num3 + 2].active() || (!Main.tileSolid[(int)Main.tile[k, num3 + 2].type] && !Main.tileTable[(int)Main.tile[k, num3 + 2].type]))
{
flag = true;
}
if (Main.tile[k, num3 + 2].halfBrick())
{
flag = true;
}
}
}
}
if (type == 138 && !WorldGen.SolidTile2(num2, num3 + 2) && !WorldGen.SolidTile2(num2 + 1, num3 + 2))
{
flag = true;
}
if (flag)
{
WorldGen.destroyObject = true;
for (int m = num2; m < num2 + 2; m++)
{
for (int n = num3; n < num3 + 2; n++)
{
if ((int)Main.tile[m, n].type == type && Main.tile[m, n].active())
{
WorldGen.KillTile(m, n, false, false, false);
}
}
}
if (type == 85)
{
Item.NewItem(i * 16, j * 16, 32, 32, 321, 1, false, 0, false);
}
if (type == 94)
{
Item.NewItem(i * 16, j * 16, 32, 32, 352, 1, false, 0, false);
}
if (type == 95)
{
Item.NewItem(i * 16, j * 16, 32, 32, 344, 1, false, 0, false);
}
if (type == 96)
{
Item.NewItem(i * 16, j * 16, 32, 32, 345, 1, false, 0, false);
}
if (type == 97)
{
Item.NewItem(i * 16, j * 16, 32, 32, 346, 1, false, 0, false);
}
if (type == 98)
{
Item.NewItem(i * 16, j * 16, 32, 32, 347, 1, false, 0, false);
}
if (type == 99)
{
Item.NewItem(i * 16, j * 16, 32, 32, 348, 1, false, 0, false);
}
if (type == 100)
{
Item.NewItem(i * 16, j * 16, 32, 32, 349, 1, false, 0, false);
}
if (type == 173)
{
Item.NewItem(i * 16, j * 16, 32, 32, 714, 1, false, 0, false);
}
if (type == 125)
{
Item.NewItem(i * 16, j * 16, 32, 32, 487, 1, false, 0, false);
}
if (type == 126)
{
Item.NewItem(i * 16, j * 16, 32, 32, 488, 1, false, 0, false);
}
if (type == 132)
{
Item.NewItem(i * 16, j * 16, 32, 32, 513, 1, false, 0, false);
}
if (type == 142)
{
Item.NewItem(i * 16, j * 16, 32, 32, 581, 1, false, 0, false);
}
if (type == 143)
{
Item.NewItem(i * 16, j * 16, 32, 32, 582, 1, false, 0, false);
}
if (type == 138 && !WorldGen.gen && Main.netMode != 1)
{
Projectile.NewProjectile((float)(num2 * 16) + 15.5f, (float)(num3 * 16 + 16), 0f, 0f, 99, 70, 10f, Main.myPlayer, 0f, 0f);
}
WorldGen.destroyObject = false;
for (int num4 = num2 - 1; num4 < num2 + 3; num4++)
{
for (int num5 = num3 - 1; num5 < num3 + 3; num5++)
{
WorldGen.TileFrame(num4, num5, false, false);
}
}
}
}
public static void OreRunner(int i, int j, double strength, int steps, int type)
{
double num = strength;
float num2 = (float)steps;
Vector2 value;
value.X = (float)i;
value.Y = (float)j;
Vector2 value2;
value2.X = (float)WorldGen.genRand.Next(-10, 11) * 0.1f;
value2.Y = (float)WorldGen.genRand.Next(-10, 11) * 0.1f;
while (num > 0.0 && num2 > 0f)
{
if (value.Y < 0f && num2 > 0f && type == 59)
{
num2 = 0f;
}
num = strength * (double)(num2 / (float)steps);
num2 -= 1f;
int num3 = (int)((double)value.X - num * 0.5);
int num4 = (int)((double)value.X + num * 0.5);
int num5 = (int)((double)value.Y - num * 0.5);
int num6 = (int)((double)value.Y + num * 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 k = num3; k < num4; k++)
{
for (int l = num5; l < num6; l++)
{
if ((double)(Math.Abs((float)k - value.X) + Math.Abs((float)l - value.Y)) < strength * 0.5 * (1.0 + (double)WorldGen.genRand.Next(-10, 11) * 0.015) && Main.tile[k, l].active() && (Main.tile[k, l].type == 0 || Main.tile[k, l].type == 1 || Main.tile[k, l].type == 23 || Main.tile[k, l].type == 25 || Main.tile[k, l].type == 40 || Main.tile[k, l].type == 53 || Main.tile[k, l].type == 57 || Main.tile[k, l].type == 59 || Main.tile[k, l].type == 60 || Main.tile[k, l].type == 70 || Main.tile[k, l].type == 109 || Main.tile[k, l].type == 112 || Main.tile[k, l].type == 116 || Main.tile[k, l].type == 117 || Main.tile[k, l].type == 147 || Main.tile[k, l].type == 161 || Main.tile[k, l].type == 163 || Main.tile[k, l].type == 164 || Main.tileMoss[(int)Main.tile[k, l].type] || Main.tile[k, l].type == 199 || Main.tile[k, l].type == 200 || Main.tile[k, l].type == 203 || Main.tile[k, l].type == 234))
{
Main.tile[k, l].type = (byte)type;
WorldGen.SquareTileFrame(k, l, true);
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, k, l, 1);
}
}
}
}
value += value2;
value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
if (value2.X > 1f)
{
value2.X = 1f;
}
if (value2.X < -1f)
{
value2.X = -1f;
}
}
}
public static void SmashAltar(int i, int j)
{
if (Main.netMode == 1)
{
return;
}
if (!Main.hardMode)
{
return;
}
if (WorldGen.noTileActions)
{
return;
}
if (WorldGen.gen)
{
return;
}
int num = WorldGen.altarCount % 3;
int num2 = WorldGen.altarCount / 3 + 1;
float num3 = (float)(Main.maxTilesX / 4200);
int num4 = 1 - num;
num3 = num3 * 310f - (float)(85 * num);
num3 *= 0.85f;
num3 /= (float)num2;
if (num == 0)
{
if (WorldGen.oreTier1 == -1)
{
WorldGen.oreTier1 = 107;
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.oreTier1 = 221;
}
}
int num5 = 12;
if (WorldGen.oreTier1 == 221)
{
num5 += 9;
}
if (Main.netMode == 0)
{
Main.NewText(Lang.misc[num5], 50, 255, 130, false);
}
else
{
if (Main.netMode == 2)
{
NetMessage.SendData(25, -1, -1, Lang.misc[num5], 255, 50f, 255f, 130f, 0);
}
}
num = WorldGen.oreTier1;
num3 *= 1.05f;
}
else
{
if (num == 1)
{
if (WorldGen.oreTier2 == -1)
{
WorldGen.oreTier2 = 108;
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.oreTier2 = 222;
}
}
int num6 = 13;
if (WorldGen.oreTier2 == 222)
{
num6 += 9;
}
if (Main.netMode == 0)
{
Main.NewText(Lang.misc[num6], 50, 255, 130, false);
}
else
{
if (Main.netMode == 2)
{
NetMessage.SendData(25, -1, -1, Lang.misc[num6], 255, 50f, 255f, 130f, 0);
}
}
num = WorldGen.oreTier2;
}
else
{
if (WorldGen.oreTier3 == -1)
{
WorldGen.oreTier3 = 111;
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.oreTier3 = 223;
}
}
int num7 = 14;
if (WorldGen.oreTier3 == 223)
{
num7 += 9;
}
if (Main.netMode == 0)
{
Main.NewText(Lang.misc[num7], 50, 255, 130, false);
}
else
{
if (Main.netMode == 2)
{
NetMessage.SendData(25, -1, -1, Lang.misc[num7], 255, 50f, 255f, 130f, 0);
}
}
num = WorldGen.oreTier3;
}
}
int num8 = 0;
while ((float)num8 < num3)
{
int i2 = WorldGen.genRand.Next(100, Main.maxTilesX - 100);
double num9 = Main.worldSurface;
if (num == 108)
{
num9 = Main.rockLayer;
}
if (num == 111)
{
num9 = (Main.rockLayer + Main.rockLayer + (double)Main.maxTilesY) / 3.0;
}
int j2 = WorldGen.genRand.Next((int)num9, Main.maxTilesY - 150);
WorldGen.OreRunner(i2, j2, (double)WorldGen.genRand.Next(5, 9 + num4), WorldGen.genRand.Next(5, 9 + num4), num);
num8++;
}
int num10 = WorldGen.genRand.Next(3);
while (num10 != 2)
{
int num11 = WorldGen.genRand.Next(100, Main.maxTilesX - 100);
int num12 = WorldGen.genRand.Next((int)Main.rockLayer + 50, Main.maxTilesY - 300);
if (Main.tile[num11, num12].active() && Main.tile[num11, num12].type == 1)
{
if (num10 == 0)
{
if (WorldGen.crimson)
{
Main.tile[num11, num12].type = 203;
}
else
{
Main.tile[num11, num12].type = 25;
}
}
else
{
Main.tile[num11, num12].type = 117;
}
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num11, num12, 1);
break;
}
break;
}
}
if (Main.netMode != 1)
{
int num13 = Main.rand.Next(2) + 1;
for (int k = 0; k < num13; k++)
{
NPC.SpawnOnPlayer((int)Player.FindClosest(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16), 82);
}
}
WorldGen.altarCount++;
}
public static void Check3x1(int i, int j, int type)
{
if (WorldGen.destroyObject)
{
return;
}
bool flag = false;
int k = (int)(Main.tile[i, j].frameX / 18);
int num = 0;
while (k > 2)
{
k -= 3;
num++;
}
k = i - k;
int num2 = num * 54;
for (int l = k; l < k + 3; l++)
{
if (Main.tile[l, j] == null)
{
Main.tile[l, j] = new Tile();
}
if (!Main.tile[l, j].active() || (int)Main.tile[l, j].type != type || (int)Main.tile[l, j].frameX != (l - k) * 18 + num2 || Main.tile[l, j].frameY != 0)
{
flag = true;
}
if (!WorldGen.SolidTile2(l, j + 1))
{
flag = true;
}
}
if (flag)
{
short arg_FC_0 = Main.tile[i, j].frameX;
WorldGen.destroyObject = true;
if (type == 235)
{
Item.NewItem(i * 16, j * 16, 32, 32, 1263, 1, false, 0, false);
}
for (int m = k; m < k + 3; m++)
{
if (Main.tile[m, j] == null)
{
Main.tile[m, j] = new Tile();
}
if ((int)Main.tile[m, j].type == type && Main.tile[m, j].active())
{
WorldGen.KillTile(m, j, false, false, false);
}
}
WorldGen.destroyObject = false;
for (int n = k - 1; n < k + 4; n++)
{
WorldGen.TileFrame(n, j, false, false);
}
}
}
public static void Check3x2(int i, int j, int type)
{
if (WorldGen.destroyObject)
{
return;
}
bool flag = false;
int num = j + (int)(Main.tile[i, j].frameY / 18 * -1);
int k = (int)(Main.tile[i, j].frameX / 18);
int num2 = 0;
while (k > 2)
{
k -= 3;
num2++;
}
k = i - k;
int num3 = num2 * 54;
for (int l = k; l < k + 3; l++)
{
for (int m = num; m < num + 2; m++)
{
if (Main.tile[l, m] == null)
{
Main.tile[l, m] = new Tile();
}
if (!Main.tile[l, m].active() || (int)Main.tile[l, m].type != type || (int)Main.tile[l, m].frameX != (l - k) * 18 + num3 || (int)Main.tile[l, m].frameY != (m - num) * 18)
{
flag = true;
}
}
if (!WorldGen.SolidTile2(l, num + 2))
{
flag = true;
}
}
if (type == 187 && Main.tile[k, num].frameX >= 756 && Main.tile[k, num].frameX <= 900 && Main.tile[k, num + 2].type != 2 && Main.tile[k + 1, num + 2].type != 2 && Main.tile[k + 2, num + 2].type != 2)
{
Tile expr_1B9 = Main.tile[k, num];
expr_1B9.frameX -= 378;
Tile expr_1D9 = Main.tile[k + 1, num];
expr_1D9.frameX -= 378;
Tile expr_1F9 = Main.tile[k + 2, num];
expr_1F9.frameX -= 378;
Tile expr_219 = Main.tile[k, num + 1];
expr_219.frameX -= 378;
Tile expr_23B = Main.tile[k + 1, num + 1];
expr_23B.frameX -= 378;
Tile expr_25D = Main.tile[k + 2, num + 1];
expr_25D.frameX -= 378;
Main.tile[k, num].type = 186;
Main.tile[k + 1, num].type = 186;
Main.tile[k + 2, num].type = 186;
Main.tile[k, num + 1].type = 186;
Main.tile[k + 1, num + 1].type = 186;
Main.tile[k + 2, num + 1].type = 186;
}
if (flag)
{
int frameX = (int)Main.tile[i, j].frameX;
WorldGen.destroyObject = true;
for (int n = k; n < k + 3; n++)
{
for (int num4 = num; num4 < num + 3; num4++)
{
if (Main.tile[n, num4] == null)
{
Main.tile[n, num4] = new Tile();
}
if ((int)Main.tile[n, num4].type == type && Main.tile[n, num4].active())
{
WorldGen.KillTile(n, num4, false, false, false);
}
}
}
if (type == 14)
{
int type2 = 32;
if (num2 >= 1 && num2 <= 3)
{
type2 = 637 + num2;
}
if (num2 >= 15 && num2 <= 20)
{
type2 = 1698 + num2;
}
if (num2 >= 4 && num2 <= 7)
{
type2 = 823 + num2;
}
if (num2 == 8)
{
type2 = 917;
}
if (num2 == 9)
{
type2 = 1144;
}
if (num2 == 10)
{
type2 = 1397;
}
if (num2 == 11)
{
type2 = 1400;
}
if (num2 == 12)
{
type2 = 1403;
}
if (num2 == 13)
{
type2 = 1460;
}
if (num2 == 14)
{
type2 = 1510;
}
Item.NewItem(i * 16, j * 16, 32, 32, type2, 1, false, 0, false);
}
else
{
if (type == 114)
{
Item.NewItem(i * 16, j * 16, 32, 32, 398, 1, false, 0, false);
}
else
{
if (type == 26)
{
if (!WorldGen.noTileActions)
{
WorldGen.SmashAltar(i, j);
}
}
else
{
if (type == 217)
{
Item.NewItem(i * 16, j * 16, 32, 32, 995, 1, false, 0, false);
}
else
{
if (type == 218)
{
Item.NewItem(i * 16, j * 16, 32, 32, 996, 1, false, 0, false);
}
else
{
if (type == 219)
{
Item.NewItem(i * 16, j * 16, 32, 32, 997, 1, false, 0, false);
}
else
{
if (type == 220)
{
Item.NewItem(i * 16, j * 16, 32, 32, 998, 1, false, 0, false);
}
else
{
if (type == 228)
{
Item.NewItem(i * 16, j * 16, 32, 32, 1120, 1, false, 0, false);
}
else
{
if (type == 215)
{
Item.NewItem(i * 16, j * 16, 32, 32, 966, 1, false, 0, false);
}
else
{
if (type == 244)
{
Item.NewItem(i * 16, j * 16, 32, 32, 1449, 1, false, 0, false);
}
else
{
if (type == 17)
{
Item.NewItem(i * 16, j * 16, 32, 32, 33, 1, false, 0, false);
}
else
{
if (type == 77)
{
Item.NewItem(i * 16, j * 16, 32, 32, 221, 1, false, 0, false);
}
else
{
if (type == 86)
{
Item.NewItem(i * 16, j * 16, 32, 32, 332, 1, false, 0, false);
}
else
{
if (type == 237)
{
Item.NewItem(i * 16, j * 16, 32, 32, 1292, 1, false, 0, false);
}
else
{
if (type == 87)
{
int type3 = 333;
if (num2 >= 1 && num2 <= 3)
{
type3 = 640 + num2;
}
if (num2 == 4)
{
type3 = 919;
}
Item.NewItem(i * 16, j * 16, 32, 32, type3, 1, false, 0, false);
}
else
{
if (type == 88)
{
int type4 = 334;
if (num2 >= 1 && num2 <= 3)
{
type4 = 646 + num2;
}
if (num2 == 4)
{
type4 = 918;
}
Item.NewItem(i * 16, j * 16, 32, 32, type4, 1, false, 0, false);
}
else
{
if (type == 89)
{
Item.NewItem(i * 16, j * 16, 32, 32, 335, 1, false, 0, false);
}
else
{
if (type == 133)
{
if (frameX >= 54)
{
Item.NewItem(i * 16, j * 16, 32, 32, 1221, 1, false, 0, false);
}
else
{
Item.NewItem(i * 16, j * 16, 32, 32, 524, 1, false, 0, false);
}
}
else
{
if (type == 186)
{
if (frameX >= 864)
{
if (frameX <= 954)
{
Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100), false, 0, false);
Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(30, 100), false, 0, false);
Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(40, 100), false, 0, false);
if (WorldGen.genRand.Next(3) != 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100), false, 0, false);
}
if (WorldGen.genRand.Next(3) != 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(30, 100), false, 0, false);
}
if (WorldGen.genRand.Next(3) != 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(40, 100), false, 0, false);
}
if (WorldGen.genRand.Next(2) == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100), false, 0, false);
}
if (WorldGen.genRand.Next(2) == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(30, 100), false, 0, false);
}
if (WorldGen.genRand.Next(2) == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(40, 100), false, 0, false);
}
if (WorldGen.genRand.Next(3) == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100), false, 0, false);
}
if (WorldGen.genRand.Next(3) == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(30, 100), false, 0, false);
}
if (WorldGen.genRand.Next(3) == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(40, 100), false, 0, false);
}
if (WorldGen.genRand.Next(4) == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100), false, 0, false);
}
if (WorldGen.genRand.Next(4) == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(30, 100), false, 0, false);
}
if (WorldGen.genRand.Next(4) == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(40, 100), false, 0, false);
}
if (WorldGen.genRand.Next(5) == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100), false, 0, false);
}
if (WorldGen.genRand.Next(5) == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(30, 100), false, 0, false);
}
if (WorldGen.genRand.Next(5) == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 71, WorldGen.genRand.Next(40, 100), false, 0, false);
}
}
else
{
if (frameX <= 1062)
{
Item.NewItem(i * 16, j * 16, 32, 32, 72, WorldGen.genRand.Next(10, 100), false, 0, false);
if (Main.rand.Next(2) == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 72, WorldGen.genRand.Next(20, 100), false, 0, false);
}
if (Main.rand.Next(3) == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 72, WorldGen.genRand.Next(30, 100), false, 0, false);
}
if (Main.rand.Next(4) == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 72, WorldGen.genRand.Next(40, 100), false, 0, false);
}
if (Main.rand.Next(5) == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 72, WorldGen.genRand.Next(50, 100), false, 0, false);
}
}
else
{
if (frameX <= 1170)
{
Item.NewItem(i * 16, j * 16, 32, 32, 73, WorldGen.genRand.Next(1, 7), false, 0, false);
if (WorldGen.genRand.Next(2) == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 73, WorldGen.genRand.Next(2, 7), false, 0, false);
}
if (WorldGen.genRand.Next(3) == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 73, WorldGen.genRand.Next(3, 7), false, 0, false);
}
if (WorldGen.genRand.Next(4) == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 73, WorldGen.genRand.Next(4, 7), false, 0, false);
}
if (WorldGen.genRand.Next(5) == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 73, WorldGen.genRand.Next(5, 7), false, 0, false);
}
}
}
}
}
}
else
{
if (type == 187 && frameX >= 918 && frameX <= 970)
{
Item.NewItem(i * 16, j * 16, 32, 32, 989, 1, false, 0, false);
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
WorldGen.destroyObject = false;
for (int num5 = k - 1; num5 < k + 4; num5++)
{
for (int num6 = num - 1; num6 < num + 4; num6++)
{
WorldGen.TileFrame(num5, num6, false, false);
}
}
}
}
public static void Check3x4(int i, int j, int type)
{
if (WorldGen.destroyObject)
{
return;
}
bool flag = false;
int num = 0;
int k;
for (k = (int)(Main.tile[i, j].frameX / 18); k >= 3; k -= 3)
{
num++;
}
int num2 = i - k;
int num3 = j + (int)(Main.tile[i, j].frameY / 18 * -1);
for (int l = num2; l < num2 + 3; l++)
{
for (int m = num3; m < num3 + 4; m++)
{
if (Main.tile[l, m] == null)
{
Main.tile[l, m] = new Tile();
}
if (!Main.tile[l, m].active() || (int)Main.tile[l, m].type != type || (int)Main.tile[l, m].frameX != num * 54 + (l - num2) * 18 || (int)Main.tile[l, m].frameY != (m - num3) * 18)
{
flag = true;
}
}
if (Main.tile[l, num3 + 4] == null)
{
Main.tile[l, num3 + 4] = new Tile();
}
if (!WorldGen.SolidTile2(l, num3 + 4))
{
flag = true;
}
}
if (flag)
{
WorldGen.destroyObject = true;
for (int n = num2; n < num2 + 3; n++)
{
for (int num4 = num3; num4 < num3 + 4; num4++)
{
if ((int)Main.tile[n, num4].type == type && Main.tile[n, num4].active())
{
WorldGen.KillTile(n, num4, false, false, false);
}
}
}
if (type == 101)
{
if (num == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 354, 1, false, 0, false);
}
if (num == 1)
{
Item.NewItem(i * 16, j * 16, 32, 32, 1414, 1, false, 0, false);
}
if (num == 2)
{
Item.NewItem(i * 16, j * 16, 32, 32, 1415, 1, false, 0, false);
}
if (num == 3)
{
Item.NewItem(i * 16, j * 16, 32, 32, 1416, 1, false, 0, false);
}
if (num == 4)
{
Item.NewItem(i * 16, j * 16, 32, 32, 1463, 1, false, 0, false);
}
if (num == 5)
{
Item.NewItem(i * 16, j * 16, 32, 32, 1512, 1, false, 0, false);
}
}
else
{
if (type == 102)
{
Item.NewItem(i * 16, j * 16, 32, 32, 355, 1, false, 0, false);
}
}
WorldGen.destroyObject = false;
for (int num5 = num2 - 1; num5 < num2 + 4; num5++)
{
for (int num6 = num3 - 1; num6 < num3 + 4; num6++)
{
WorldGen.TileFrame(num5, num6, false, false);
}
}
}
}
public static void Place4x2(int x, int y, int 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 j = y - 1; j < y + 1; j++)
{
if (Main.tile[i, j] == null)
{
Main.tile[i, j] = new Tile();
}
if (Main.tile[i, j].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 num = 0;
if (direction == 1)
{
num = 72;
}
int num2 = 36 * style;
if (flag)
{
Main.tile[x - 1, y - 1].active(true);
Main.tile[x - 1, y - 1].frameY = (short)num2;
Main.tile[x - 1, y - 1].frameX = num;
Main.tile[x - 1, y - 1].type = (byte)type;
Main.tile[x, y - 1].active(true);
Main.tile[x, y - 1].frameY = (short)num2;
Main.tile[x, y - 1].frameX = (short)(18 + num);
Main.tile[x, y - 1].type = (byte)type;
Main.tile[x + 1, y - 1].active(true);
Main.tile[x + 1, y - 1].frameY = (short)num2;
Main.tile[x + 1, y - 1].frameX = (short)(36 + num);
Main.tile[x + 1, y - 1].type = (byte)type;
Main.tile[x + 2, y - 1].active(true);
Main.tile[x + 2, y - 1].frameY = (short)num2;
Main.tile[x + 2, y - 1].frameX = (short)(54 + num);
Main.tile[x + 2, y - 1].type = (byte)type;
Main.tile[x - 1, y].active(true);
Main.tile[x - 1, y].frameY = (short)(num2 + 18);
Main.tile[x - 1, y].frameX = num;
Main.tile[x - 1, y].type = (byte)type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameY = (short)(num2 + 18);
Main.tile[x, y].frameX = (short)(18 + num);
Main.tile[x, y].type = (byte)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 + num);
Main.tile[x + 1, y].type = (byte)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 + num);
Main.tile[x + 2, y].type = (byte)type;
}
}
public static void SwitchCannon(int i, int j)
{
int k;
for (k = (int)(Main.tile[i, j].frameX / 18); k >= 4; k -= 4)
{
}
int l;
for (l = (int)(Main.tile[i, j].frameY / 18); l >= 3; l -= 3)
{
}
int num = 1;
if (k < 2)
{
num = -1;
}
k = i - k;
l = j - l;
if (num == 1 && Main.tile[k, l].frameY <= 52)
{
return;
}
if (num == -1 && Main.tile[k, l].frameY >= 432)
{
return;
}
num *= -54;
for (int m = k; m < k + 4; m++)
{
for (int n = l; n < l + 3; n++)
{
if (Main.tile[m, n] == null)
{
Main.tile[m, n] = new Tile();
}
if (Main.tile[m, n].active() && Main.tile[m, n].type == 209)
{
Main.tile[m, n].frameY = (short)((int)Main.tile[m, n].frameY + num);
}
}
}
NetMessage.SendTileSquare(-1, k + 1, l + 1, 4);
}
public static void CheckCannon(int i, int j, int type)
{
if (WorldGen.destroyObject)
{
return;
}
bool flag = false;
int k = (int)(Main.tile[i, j].frameX / 18);
int num = 0;
while (k >= 4)
{
num++;
k -= 4;
}
k = i - k;
int l = (int)(Main.tile[i, j].frameY / 18);
int num2 = 0;
while (l >= 3)
{
num2 += 54;
l -= 3;
}
l = j - l;
int num3 = 72 * num;
for (int m = k; m < k + 4; m++)
{
int num4 = num2;
for (int n = l; n < l + 3; n++)
{
if (Main.tile[m, n] == null)
{
Main.tile[m, n] = new Tile();
}
if (!Main.tile[m, n].active() || (int)Main.tile[m, n].type != type || (int)Main.tile[m, n].frameX != num3 || (int)Main.tile[m, n].frameY != num4)
{
flag = true;
}
num4 += 18;
}
if (Main.tile[m, l + 3] == null)
{
Main.tile[m, l + 3] = new Tile();
}
if (!WorldGen.SolidTile2(m, l + 3) && m != k && m != k + 3)
{
flag = true;
}
num3 += 18;
}
if (flag)
{
WorldGen.destroyObject = true;
for (int num5 = k; num5 < k + 4; num5++)
{
for (int num6 = l; num6 < l + 3; num6++)
{
if ((int)Main.tile[num5, num6].type == type && Main.tile[num5, num6].active())
{
WorldGen.KillTile(num5, num6, false, false, false);
}
}
}
if (num == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 928, 1, false, 0, false);
}
if (num == 1)
{
Item.NewItem(i * 16, j * 16, 32, 32, 1337, 1, false, 0, false);
}
WorldGen.destroyObject = false;
for (int num7 = k; num7 < k + 4; num7++)
{
for (int num8 = l; num8 < l + 3; num8++)
{
WorldGen.TileFrame(num7, num8, false, false);
}
}
}
}
public static void PlaceCannon(int x, int y, int 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 j = y - 2; j < y + 1; j++)
{
if (Main.tile[i, j] == null)
{
Main.tile[i, j] = new Tile();
}
if (Main.tile[i, j].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 num = 72 * style;
int num2 = 0;
if (flag)
{
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)num;
Main.tile[x - 1, y - 2].type = (byte)type;
Main.tile[x, y - 2].active(true);
Main.tile[x, y - 2].frameY = (short)num2;
Main.tile[x, y - 2].frameX = (short)(18 + num);
Main.tile[x, y - 2].type = (byte)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 + num);
Main.tile[x + 1, y - 2].type = (byte)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 + num);
Main.tile[x + 2, y - 2].type = (byte)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)num;
Main.tile[x - 1, y - 1].type = (byte)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 + num);
Main.tile[x, y - 1].type = (byte)type;
Main.tile[x + 1, y - 1].active(true);
Main.tile[x + 1, y - 1].frameY = (short)(num2 + 18);
Main.tile[x + 1, y - 1].frameX = (short)(36 + num);
Main.tile[x + 1, y - 1].type = (byte)type;
Main.tile[x + 2, y - 1].active(true);
Main.tile[x + 2, y - 1].frameY = (short)(num2 + 18);
Main.tile[x + 2, y - 1].frameX = (short)(54 + num);
Main.tile[x + 2, y - 1].type = (byte)type;
Main.tile[x - 1, y].active(true);
Main.tile[x - 1, y].frameY = (short)(num2 + 36);
Main.tile[x - 1, y].frameX = (short)num;
Main.tile[x - 1, y].type = (byte)type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameY = (short)(num2 + 36);
Main.tile[x, y].frameX = (short)(18 + num);
Main.tile[x, y].type = (byte)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 + num);
Main.tile[x + 1, y].type = (byte)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 + num);
Main.tile[x + 2, y].type = (byte)type;
}
}
public static void SwitchMB(int i, int j)
{
int k;
for (k = (int)(Main.tile[i, j].frameY / 18); k >= 2; k -= 2)
{
}
int num = (int)(Main.tile[i, j].frameX / 18);
if (num >= 2)
{
num -= 2;
}
int num2 = i - num;
int num3 = j - k;
for (int l = num2; l < num2 + 2; l++)
{
for (int m = num3; m < num3 + 2; m++)
{
if (Main.tile[l, m] == null)
{
Main.tile[l, m] = new Tile();
}
if (Main.tile[l, m].active() && Main.tile[l, m].type == 139)
{
if (Main.tile[l, m].frameX < 36)
{
Tile expr_D2 = Main.tile[l, m];
expr_D2.frameX += 36;
}
else
{
Tile expr_F1 = Main.tile[l, m];
expr_F1.frameX -= 36;
}
WorldGen.noWireX[WorldGen.numNoWire] = l;
WorldGen.noWireY[WorldGen.numNoWire] = m;
WorldGen.numNoWire++;
}
}
}
NetMessage.SendTileSquare(-1, num2, num3, 3);
}
public static void SwitchFountain(int i, int j)
{
int k;
for (k = (int)(Main.tile[i, j].frameX / 18); k >= 2; k -= 2)
{
}
int num = (int)(Main.tile[i, j].frameY / 18);
if (num >= 4)
{
num -= 4;
}
int num2 = i - k;
int num3 = j - num;
for (int l = num2; l < num2 + 2; l++)
{
for (int m = num3; m < num3 + 4; m++)
{
if (Main.tile[l, m] == null)
{
Main.tile[l, m] = new Tile();
}
if (Main.tile[l, m].active() && Main.tile[l, m].type == 207)
{
if (Main.tile[l, m].frameY < 72)
{
Tile expr_D2 = Main.tile[l, m];
expr_D2.frameY += 72;
}
else
{
Tile expr_F1 = Main.tile[l, m];
expr_F1.frameY -= 72;
}
WorldGen.noWireX[WorldGen.numNoWire] = l;
WorldGen.noWireY[WorldGen.numNoWire] = m;
WorldGen.numNoWire++;
}
}
}
NetMessage.SendTileSquare(-1, num2, num3 + 1, 4);
}
public static void CheckMB(int i, int j, int type)
{
if (WorldGen.destroyObject)
{
return;
}
bool flag = false;
int num = 0;
int k;
for (k = (int)(Main.tile[i, j].frameY / 18); k >= 2; k -= 2)
{
num++;
}
int num2 = (int)(Main.tile[i, j].frameX / 18);
int num3 = 0;
if (num2 >= 2)
{
num2 -= 2;
num3++;
}
int num4 = i - num2;
int num5 = j - k;
for (int l = num4; l < num4 + 2; l++)
{
for (int m = num5; m < num5 + 2; m++)
{
if (Main.tile[l, m] == null)
{
Main.tile[l, m] = new Tile();
}
if (!Main.tile[l, m].active() || (int)Main.tile[l, m].type != type || (int)Main.tile[l, m].frameX != (l - num4) * 18 + num3 * 36 || (int)Main.tile[l, m].frameY != (m - num5) * 18 + num * 36)
{
flag = true;
}
}
if (!Main.tileSolid[(int)Main.tile[l, num5 + 2].type] && !Main.tileTable[(int)Main.tile[l, num5 + 2].type])
{
flag = true;
}
}
if (flag)
{
WorldGen.destroyObject = true;
for (int n = num4; n < num4 + 2; n++)
{
for (int num6 = num5; num6 < num5 + 3; num6++)
{
if ((int)Main.tile[n, num6].type == type && Main.tile[n, num6].active())
{
WorldGen.KillTile(n, num6, false, false, false);
}
}
}
if (num >= 13)
{
Item.NewItem(i * 16, j * 16, 32, 32, 1596 + num - 13, 1, false, 0, false);
}
else
{
Item.NewItem(i * 16, j * 16, 32, 32, 562 + num, 1, false, 0, false);
}
for (int num7 = num4 - 1; num7 < num4 + 3; num7++)
{
for (int num8 = num5 - 1; num8 < num5 + 3; num8++)
{
WorldGen.TileFrame(num7, num8, false, false);
}
}
WorldGen.destroyObject = false;
}
}
public static void PlaceMB(int X, int y, int type, int style)
{
int num = X + 1;
if (num < 5 || num > Main.maxTilesX - 5 || y < 5 || y > Main.maxTilesY - 5)
{
return;
}
bool flag = true;
for (int i = num - 1; i < num + 1; i++)
{
for (int j = y - 1; j < y + 1; j++)
{
if (Main.tile[i, j] == null)
{
Main.tile[i, j] = new Tile();
}
if (Main.tile[i, j].active())
{
flag = false;
}
}
if (Main.tile[i, y + 1] == null)
{
Main.tile[i, y + 1] = new Tile();
}
if (!Main.tile[i, y + 1].active() || Main.tile[i, y + 1].halfBrick() || (!Main.tileSolid[(int)Main.tile[i, y + 1].type] && !Main.tileTable[(int)Main.tile[i, y + 1].type]))
{
flag = false;
}
}
if (flag)
{
Main.tile[num - 1, y - 1].active(true);
Main.tile[num - 1, y - 1].frameY = (short)(style * 36);
Main.tile[num - 1, y - 1].frameX = 0;
Main.tile[num - 1, y - 1].type = (byte)type;
Main.tile[num, y - 1].active(true);
Main.tile[num, y - 1].frameY = (short)(style * 36);
Main.tile[num, y - 1].frameX = 18;
Main.tile[num, y - 1].type = (byte)type;
Main.tile[num - 1, y].active(true);
Main.tile[num - 1, y].frameY = (short)(style * 36 + 18);
Main.tile[num - 1, y].frameX = 0;
Main.tile[num - 1, y].type = (byte)type;
Main.tile[num, y].active(true);
Main.tile[num, y].frameY = (short)(style * 36 + 18);
Main.tile[num, y].frameX = 18;
Main.tile[num, y].type = (byte)type;
}
}
public static void Place2x2(int x, int superY, int type)
{
int num = superY;
if (type == 95 || type == 126)
{
num++;
}
if (x < 5 || x > Main.maxTilesX - 5 || num < 5 || num > Main.maxTilesY - 5)
{
return;
}
bool flag = true;
for (int i = x - 1; i < x + 1; i++)
{
for (int j = num - 1; j < num + 1; j++)
{
if (Main.tile[i, j] == null)
{
Main.tile[i, j] = new Tile();
}
if (Main.tile[i, j].active())
{
flag = false;
}
if (type == 98 && Main.tile[i, j].liquid > 0)
{
flag = false;
}
}
if (type == 95 || type == 126)
{
if (Main.tile[i, num - 2] == null)
{
Main.tile[i, num - 2] = new Tile();
}
if (!Main.tile[i, num - 2].nactive() || !Main.tileSolid[(int)Main.tile[i, num - 2].type] || Main.tileSolidTop[(int)Main.tile[i, num - 2].type])
{
flag = false;
}
}
else
{
if (Main.tile[i, num + 1] == null)
{
Main.tile[i, num + 1] = new Tile();
}
if (!Main.tile[i, num + 1].nactive() || (!WorldGen.SolidTile2(i, num + 1) && !Main.tileTable[(int)Main.tile[i, num + 1].type]))
{
flag = false;
}
}
}
if (flag)
{
Main.tile[x - 1, num - 1].active(true);
Main.tile[x - 1, num - 1].frameY = 0;
Main.tile[x - 1, num - 1].frameX = 0;
Main.tile[x - 1, num - 1].type = (byte)type;
Main.tile[x, num - 1].active(true);
Main.tile[x, num - 1].frameY = 0;
Main.tile[x, num - 1].frameX = 18;
Main.tile[x, num - 1].type = (byte)type;
Main.tile[x - 1, num].active(true);
Main.tile[x - 1, num].frameY = 18;
Main.tile[x - 1, num].frameX = 0;
Main.tile[x - 1, num].type = (byte)type;
Main.tile[x, num].active(true);
Main.tile[x, num].frameY = 18;
Main.tile[x, num].frameX = 18;
Main.tile[x, num].type = (byte)type;
}
}
public static void Place3x4(int x, int y, int 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 j = y - 3; j < y + 1; j++)
{
if (Main.tile[i, j] == null)
{
Main.tile[i, j] = new Tile();
}
if (Main.tile[i, j].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)
{
int num = style * 54;
for (int k = -3; k <= 0; k++)
{
short frameY = (short)((3 + k) * 18);
Main.tile[x - 1, y + k].active(true);
Main.tile[x - 1, y + k].frameY = frameY;
Main.tile[x - 1, y + k].frameX = (short)num;
Main.tile[x - 1, y + k].type = (byte)type;
Main.tile[x, y + k].active(true);
Main.tile[x, y + k].frameY = frameY;
Main.tile[x, y + k].frameX = (short)(num + 18);
Main.tile[x, y + k].type = (byte)type;
Main.tile[x + 1, y + k].active(true);
Main.tile[x + 1, y + k].frameY = frameY;
Main.tile[x + 1, y + k].frameX = (short)(num + 36);
Main.tile[x + 1, y + k].type = (byte)type;
}
}
}
public static void Place3x1(int x, int y, int 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++)
{
if (Main.tile[i, y] == null)
{
Main.tile[i, y] = new Tile();
}
if (Main.tile[i, y].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)
{
short num = (short)(54 * style);
Main.tile[x - 1, y].active(true);
Main.tile[x - 1, y].frameY = 0;
Main.tile[x - 1, y].frameX = num;
Main.tile[x - 1, y].type = (byte)type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameY = 0;
Main.tile[x, y].frameX = (short)(num + 18);
Main.tile[x, y].type = (byte)type;
Main.tile[x + 1, y].active(true);
Main.tile[x + 1, y].frameY = 0;
Main.tile[x + 1, y].frameX = (short)(num + 36);
Main.tile[x + 1, y].type = (byte)type;
}
}
public static void Place3x2(int x, int y, int 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++)
{
for (int j = y - 1; j < y + 1; j++)
{
if (Main.tile[i, j] == null)
{
Main.tile[i, j] = new Tile();
}
if (Main.tile[i, j].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)
{
short num = (short)(54 * style);
Main.tile[x - 1, y - 1].active(true);
Main.tile[x - 1, y - 1].frameY = 0;
Main.tile[x - 1, y - 1].frameX = num;
Main.tile[x - 1, y - 1].type = (byte)type;
Main.tile[x, y - 1].active(true);
Main.tile[x, y - 1].frameY = 0;
Main.tile[x, y - 1].frameX = (short)(num + 18);
Main.tile[x, y - 1].type = (byte)type;
Main.tile[x + 1, y - 1].active(true);
Main.tile[x + 1, y - 1].frameY = 0;
Main.tile[x + 1, y - 1].frameX = (short)(num + 36);
Main.tile[x + 1, y - 1].type = (byte)type;
Main.tile[x - 1, y].active(true);
Main.tile[x - 1, y].frameY = 18;
Main.tile[x - 1, y].frameX = num;
Main.tile[x - 1, y].type = (byte)type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameY = 18;
Main.tile[x, y].frameX = (short)(num + 18);
Main.tile[x, y].type = (byte)type;
Main.tile[x + 1, y].active(true);
Main.tile[x + 1, y].frameY = 18;
Main.tile[x + 1, y].frameX = (short)(num + 36);
Main.tile[x + 1, y].type = (byte)type;
}
}
public static void Check3x3(int i, int j, int type)
{
if (WorldGen.destroyObject)
{
return;
}
bool flag = false;
int k = (int)(Main.tile[i, j].frameX / 18);
int num = 0;
while (k >= 3)
{
num++;
k -= 3;
}
int num2 = i - k;
int num3 = 54 * num;
if (k >= 3)
{
k -= 3;
}
k = i - k;
int num4 = j + (int)(Main.tile[i, j].frameY / 18 * -1);
for (int l = k; l < k + 3; l++)
{
for (int m = num4; m < num4 + 3; m++)
{
if (Main.tile[l, m] == null)
{
Main.tile[l, m] = new Tile();
}
if (!Main.tile[l, m].active() || (int)Main.tile[l, m].type != type || (int)Main.tile[l, m].frameX != (l - num2) * 18 + num3 || (int)Main.tile[l, m].frameY != (m - num4) * 18)
{
flag = true;
}
}
}
if (type == 106 || type == 212 || type == 219 || type == 220 || type == 228 || type == 231 || type == 243 || type == 247)
{
for (int n = k; n < k + 3; n++)
{
if (Main.tile[n, num4 + 3] == null)
{
Main.tile[n, num4 + 3] = new Tile();
}
if (!WorldGen.SolidTile2(n, num4 + 3))
{
flag = true;
break;
}
}
}
else
{
if (Main.tile[k + 1, num4 - 1] == null)
{
Main.tile[k + 1, num4 - 1] = new Tile();
}
if (!Main.tile[k + 1, num4 - 1].nactive() || !Main.tileSolid[(int)Main.tile[k + 1, num4 - 1].type] || Main.tileSolidTop[(int)Main.tile[k + 1, num4 - 1].type])
{
flag = true;
}
}
if (flag)
{
WorldGen.destroyObject = true;
for (int num5 = k; num5 < k + 3; num5++)
{
for (int num6 = num4; num6 < num4 + 3; num6++)
{
if ((int)Main.tile[num5, num6].type == type && Main.tile[num5, num6].active())
{
WorldGen.KillTile(num5, num6, false, false, false);
}
}
}
if (type == 34)
{
Item.NewItem(i * 16, j * 16, 32, 32, 106, 1, false, 0, false);
}
else
{
if (type == 35)
{
Item.NewItem(i * 16, j * 16, 32, 32, 107, 1, false, 0, false);
}
else
{
if (type == 36)
{
Item.NewItem(i * 16, j * 16, 32, 32, 108, 1, false, 0, false);
}
else
{
if (type == 106)
{
Item.NewItem(i * 16, j * 16, 32, 32, 363, 1, false, 0, false);
}
else
{
if (type == 243)
{
Item.NewItem(i * 16, j * 16, 32, 32, 1430, 1, false, 0, false);
}
else
{
if (type == 170)
{
Item.NewItem(i * 16, j * 16, 32, 32, 710, 1, false, 0, false);
}
else
{
if (type == 171)
{
Item.NewItem(i * 16, j * 16, 32, 32, 711, 1, false, 0, false);
}
else
{
if (type == 172)
{
Item.NewItem(i * 16, j * 16, 32, 32, 712, 1, false, 0, false);
}
else
{
if (type == 212)
{
Item.NewItem(i * 16, j * 16, 32, 32, 951, 1, false, 0, false);
}
else
{
if (type == 219)
{
Item.NewItem(i * 16, j * 16, 32, 32, 997, 1, false, 0, false);
}
else
{
if (type == 220)
{
Item.NewItem(i * 16, j * 16, 32, 32, 998, 1, false, 0, false);
}
else
{
if (type == 228)
{
Item.NewItem(i * 16, j * 16, 32, 32, 1120, 1, false, 0, false);
}
else
{
if (type == 247)
{
Item.NewItem(i * 16, j * 16, 32, 32, 1551, 1, false, 0, false);
}
else
{
if (type == 231)
{
int num7 = (i + 1) * 16 + 8;
int num8 = j * 16;
Gore.NewGore(new Vector2((float)num7, (float)num8), default(Vector2), 300, 1f);
Gore.NewGore(new Vector2((float)num7, (float)(num8 + 8)), default(Vector2), 301, 1f);
Gore.NewGore(new Vector2((float)num7, (float)(num8 + 16)), default(Vector2), 302, 1f);
float num9 = (float)(i * 16);
float num10 = (float)(j * 16);
float num11 = -1f;
int plr = 0;
for (int num12 = 0; num12 < 255; num12++)
{
if (Main.player[num12].active && !Main.player[num12].dead)
{
float num13 = Math.Abs(Main.player[num12].position.X - num9) + Math.Abs(Main.player[num12].position.Y - num10);
if (num13 < num11 || num11 == -1f)
{
plr = num12;
num11 = num13;
}
}
}
NPC.SpawnOnPlayer(plr, 222);
}
}
}
}
}
}
}
}
}
}
}
}
}
}
WorldGen.destroyObject = false;
for (int num14 = k - 1; num14 < k + 4; num14++)
{
for (int num15 = num4 - 1; num15 < num4 + 4; num15++)
{
WorldGen.TileFrame(num14, num15, false, false);
}
}
}
}
public static void Place3x3(int x, int y, int type, int style = 0)
{
bool flag = true;
int num = 0;
if (type == 106 || type == 212 || type == 219 || type == 220 || type == 228 || type == 231 || type == 243 || type == 247)
{
num = -2;
for (int i = x - 1; i < x + 2; i++)
{
for (int j = y - 2; j < y + 1; j++)
{
if (Main.tile[i, j] == null)
{
Main.tile[i, j] = new Tile();
}
if (Main.tile[i, j].active())
{
flag = false;
}
}
}
for (int k = x - 1; k < x + 2; k++)
{
if (Main.tile[k, y + 1] == null)
{
Main.tile[k, y + 1] = new Tile();
}
if (!WorldGen.SolidTile2(k, y + 1))
{
flag = false;
break;
}
}
}
else
{
for (int l = x - 1; l < x + 2; l++)
{
for (int m = y; m < y + 3; m++)
{
if (Main.tile[l, m] == null)
{
Main.tile[l, m] = new Tile();
}
if (Main.tile[l, m].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)
{
int num2 = style * 18 * 3;
Main.tile[x - 1, y + num].active(true);
Main.tile[x - 1, y + num].frameY = 0;
Main.tile[x - 1, y + num].frameX = (short)num2;
Main.tile[x - 1, y + num].type = (byte)type;
Main.tile[x, y + num].active(true);
Main.tile[x, y + num].frameY = 0;
Main.tile[x, y + num].frameX = (short)(num2 + 18);
Main.tile[x, y + num].type = (byte)type;
Main.tile[x + 1, y + num].active(true);
Main.tile[x + 1, y + num].frameY = 0;
Main.tile[x + 1, y + num].frameX = (short)(num2 + 36);
Main.tile[x + 1, y + num].type = (byte)type;
Main.tile[x - 1, y + 1 + num].active(true);
Main.tile[x - 1, y + 1 + num].frameY = 18;
Main.tile[x - 1, y + 1 + num].frameX = (short)num2;
Main.tile[x - 1, y + 1 + num].type = (byte)type;
Main.tile[x, y + 1 + num].active(true);
Main.tile[x, y + 1 + num].frameY = 18;
Main.tile[x, y + 1 + num].frameX = (short)(num2 + 18);
Main.tile[x, y + 1 + num].type = (byte)type;
Main.tile[x + 1, y + 1 + num].active(true);
Main.tile[x + 1, y + 1 + num].frameY = 18;
Main.tile[x + 1, y + 1 + num].frameX = (short)(num2 + 36);
Main.tile[x + 1, y + 1 + num].type = (byte)type;
Main.tile[x - 1, y + 2 + num].active(true);
Main.tile[x - 1, y + 2 + num].frameY = 36;
Main.tile[x - 1, y + 2 + num].frameX = (short)num2;
Main.tile[x - 1, y + 2 + num].type = (byte)type;
Main.tile[x, y + 2 + num].active(true);
Main.tile[x, y + 2 + num].frameY = 36;
Main.tile[x, y + 2 + num].frameX = (short)(num2 + 18);
Main.tile[x, y + 2 + num].type = (byte)type;
Main.tile[x + 1, y + 2 + num].active(true);
Main.tile[x + 1, y + 2 + num].frameY = 36;
Main.tile[x + 1, y + 2 + num].frameX = (short)(num2 + 36);
Main.tile[x + 1, y + 2 + num].type = (byte)type;
}
}
public static void PlaceSunflower(int x, int y, int type = 27)
{
if ((double)y > Main.worldSurface - 1.0)
{
return;
}
bool flag = true;
for (int i = x; i < x + 2; i++)
{
for (int j = y - 3; j < y + 1; j++)
{
if (Main.tile[i, j] == null)
{
Main.tile[i, j] = new Tile();
}
if (Main.tile[i, j].active() || Main.tile[i, j].wall > 0)
{
flag = false;
}
}
if (Main.tile[i, y + 1] == null)
{
Main.tile[i, y + 1] = new Tile();
}
if (!Main.tile[i, y + 1].nactive() || Main.tile[i, y + 1].halfBrick() || Main.tile[i, y + 1].slope() != 0 || (Main.tile[i, y + 1].type != 2 && Main.tile[i, y + 1].type != 109))
{
flag = false;
}
}
if (flag)
{
int num = WorldGen.genRand.Next(3);
for (int k = 0; k < 2; k++)
{
for (int l = -3; l < 1; l++)
{
int num2 = k * 18 + WorldGen.genRand.Next(3) * 36;
if (l <= -2)
{
num2 = k * 18 + num * 36;
}
int num3 = (l + 3) * 18;
Main.tile[x + k, y + l].active(true);
Main.tile[x + k, y + l].frameX = (short)num2;
Main.tile[x + k, y + l].frameY = (short)num3;
Main.tile[x + k, y + l].type = (byte)type;
}
}
}
}
public static void FixSunflowers()
{
for (int i = 5; i < Main.maxTilesX - 5; i++)
{
int num = 5;
while ((double)num < Main.worldSurface)
{
if (Main.tile[i, num].active() && Main.tile[i, num].type == 27)
{
WorldGen.FixSunflower(i, num);
}
num++;
}
}
}
public static void FixSunflower(int i, int j)
{
if (Main.tile[i, j].type != 27)
{
return;
}
int k = 0;
k += (int)(Main.tile[i, j].frameX / 18);
int num = j + (int)(Main.tile[i, j].frameY / 18 * -1);
while (k > 1)
{
k -= 2;
}
k *= -1;
k += i;
int num2 = WorldGen.genRand.Next(3) * 36;
int num3 = 0;
for (int l = k; l < k + 2; l++)
{
for (int m = num; m < num + 4; m++)
{
Main.tile[l, m].frameX = (short)(num3 + num2);
}
num3 += 18;
}
}
public static void CheckSunflower(int i, int j, int type = 27)
{
if (WorldGen.destroyObject)
{
return;
}
bool flag = false;
int k = 0;
k += (int)(Main.tile[i, j].frameX / 18);
int num = j + (int)(Main.tile[i, j].frameY / 18 * -1);
while (k > 1)
{
k -= 2;
}
k *= -1;
k += i;
for (int l = k; l < k + 2; l++)
{
for (int m = num; m < num + 4; m++)
{
if (Main.tile[l, m] == null)
{
Main.tile[l, m] = new Tile();
}
int n;
for (n = (int)(Main.tile[l, m].frameX / 18); n > 1; n -= 2)
{
}
if (!Main.tile[l, m].nactive() || (int)Main.tile[l, m].type != type || n != l - k || (int)Main.tile[l, m].frameY != (m - num) * 18)
{
flag = true;
}
}
if (Main.tile[l, num + 4] == null)
{
Main.tile[l, num + 4] = new Tile();
}
if (!Main.tile[l, num + 4].nactive() || (Main.tile[l, num + 4].type != 2 && Main.tile[l, num + 4].type != 109))
{
flag = true;
}
if (!WorldGen.SolidTile(l, num + 4))
{
flag = true;
}
}
if (flag)
{
WorldGen.destroyObject = true;
for (int num2 = k; num2 < k + 2; num2++)
{
for (int num3 = num; num3 < num + 4; num3++)
{
if ((int)Main.tile[num2, num3].type == type && Main.tile[num2, num3].active())
{
WorldGen.KillTile(num2, num3, false, false, false);
}
}
}
Item.NewItem(i * 16, j * 16, 32, 32, 63, 1, false, 0, false);
WorldGen.destroyObject = false;
}
}
public static void CheckDye(int x, int y)
{
int num = (int)(Main.tile[x, y].frameX / 34);
if (num == 7)
{
if (!WorldGen.SolidTile(x, y - 1))
{
WorldGen.KillTile(x, y, false, false, false);
return;
}
}
else
{
if (num == 6)
{
if (!Main.tile[x, y + 1].nactive() || Main.tile[x, y + 1].type != 80)
{
WorldGen.KillTile(x, y, false, false, false);
return;
}
}
else
{
if (!WorldGen.SolidTile(x, y + 1))
{
WorldGen.KillTile(x, y, false, false, false);
}
}
}
}
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 != 3 && Main.tile[x, y + 1].type != 51 && Main.tile[x, y + 1].type != 61 && Main.tile[x, y + 1].type != 73 && Main.tile[x, y + 1].type != 74 && Main.tile[x, y + 1].type != 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 != 3 && Main.tile[x, y - 1].type != 51 && Main.tile[x, y - 1].type != 61 && Main.tile[x, y - 1].type != 73 && Main.tile[x, y - 1].type != 74 && Main.tile[x, y - 1].type != 184)
{
return;
}
if (style == 6)
{
if (Main.tile[x, y + 1].nactive() && Main.tile[x, y + 1].type == 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())
{
if (style == 5)
{
if (Main.tile[x, y].liquid == 255)
{
flag = true;
}
}
else
{
if (Main.tile[x, y].liquid == 0)
{
if (style == 3 || style == 4)
{
if (Main.tile[x, y].wall == 0)
{
flag = true;
}
}
else
{
flag = true;
}
}
}
}
}
}
if (flag)
{
Main.tile[x, y].type = 227;
Main.tile[x, y].active(true);
Main.tile[x, y].halfBrick(false);
Main.tile[x, y].slope(0);
Main.tile[x, y].frameY = 0;
Main.tile[x, y].frameX = (short)(34 * style);
}
}
public static bool PlacePot(int x, int y, int type = 28, int style = 0)
{
bool flag = true;
for (int i = x; i < x + 2; i++)
{
for (int j = y - 1; j < y + 1; j++)
{
if (Main.tile[i, j] == null)
{
Main.tile[i, j] = new Tile();
}
if (Main.tile[i, j].active())
{
flag = false;
}
}
if (Main.tile[i, y + 1] == null)
{
Main.tile[i, y + 1] = new Tile();
}
if (!Main.tile[i, y + 1].nactive() || Main.tile[i, y + 1].halfBrick() || Main.tile[i, y + 1].slope() != 0 || !Main.tileSolid[(int)Main.tile[i, y + 1].type])
{
flag = false;
}
}
if (flag)
{
int num = WorldGen.genRand.Next(3) * 36;
for (int k = 0; k < 2; k++)
{
for (int l = -1; l < 1; l++)
{
int num2 = k * 18 + num;
int num3 = (l + 1) * 18;
Main.tile[x + k, y + l].active(true);
Main.tile[x + k, y + l].frameX = (short)num2;
Main.tile[x + k, y + l].frameY = (short)(num3 + style * 36);
Main.tile[x + k, y + l].type = (byte)type;
Main.tile[x + k, y + l].halfBrick(false);
}
}
return true;
}
return false;
}
public static bool CheckCactus(int i, int j)
{
int num = j;
int num2 = i;
while (Main.tile[num2, num].active() && Main.tile[num2, num].type == 80)
{
num++;
if (!Main.tile[num2, num].active() || Main.tile[num2, num].type != 80)
{
if (Main.tile[num2 - 1, num].active() && Main.tile[num2 - 1, num].type == 80 && Main.tile[num2 - 1, num - 1].active() && Main.tile[num2 - 1, num - 1].type == 80 && num2 >= i)
{
num2--;
}
if (Main.tile[num2 + 1, num].active() && Main.tile[num2 + 1, num].type == 80 && Main.tile[num2 + 1, num - 1].active() && Main.tile[num2 + 1, num - 1].type == 80 && num2 <= i)
{
num2++;
}
}
}
if (!Main.tile[num2, num].nactive() || Main.tile[num2, num].halfBrick() || Main.tile[num2, num].slope() != 0 || (Main.tile[num2, num].type != 53 && Main.tile[num2, num].type != 112 && Main.tile[num2, num].type != 116 && Main.tile[num2, num].type != 234))
{
WorldGen.KillTile(i, j, false, false, false);
return true;
}
if (i != num2)
{
if ((!Main.tile[i, j + 1].active() || Main.tile[i, j + 1].type != 80) && (!Main.tile[i - 1, j].active() || Main.tile[i - 1, j].type != 80) && (!Main.tile[i + 1, j].active() || Main.tile[i + 1, j].type != 80))
{
WorldGen.KillTile(i, j, false, false, false);
return true;
}
}
else
{
if (i == num2 && (!Main.tile[i, j + 1].active() || (Main.tile[i, j + 1].type != 80 && Main.tile[i, j + 1].type != 53 && Main.tile[i, j + 1].type != 112 && Main.tile[i, j + 1].type != 116 && Main.tile[i, j + 1].type != 234)))
{
WorldGen.KillTile(i, j, false, false, false);
return true;
}
}
return false;
}
public static void PlantCactus(int i, int j)
{
WorldGen.GrowCactus(i, j);
for (int k = 0; k < 150; k++)
{
int i2 = WorldGen.genRand.Next(i - 1, i + 2);
int j2 = WorldGen.genRand.Next(j - 10, j + 2);
WorldGen.GrowCactus(i2, j2);
}
}
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)
{
int num;
if (Main.tile[i, j].frameX == 0 || Main.tile[i, j].frameX == 36)
{
num = i;
}
else
{
num = i - 1;
}
int num2;
if (Main.tile[i, j].frameY == 0)
{
num2 = j;
}
else
{
num2 = j - 1;
}
if (Main.tile[num, num2] != null && Main.tile[num + 1, num2] != null && Main.tile[num, num2 + 1] != null && Main.tile[num + 1, num2 + 1] != null && (!Main.tile[num, num2].active() || (int)Main.tile[num, num2].type != type || !Main.tile[num + 1, num2].active() || (int)Main.tile[num + 1, num2].type != type || !Main.tile[num, num2 + 1].active() || (int)Main.tile[num, num2 + 1].type != type || !Main.tile[num + 1, num2 + 1].active() || (int)Main.tile[num + 1, num2 + 1].type != type))
{
WorldGen.destroyObject = true;
if ((int)Main.tile[num, num2].type == type)
{
WorldGen.KillTile(num, num2, false, false, false);
}
if ((int)Main.tile[num + 1, num2].type == type)
{
WorldGen.KillTile(num + 1, num2, false, false, false);
}
if ((int)Main.tile[num, num2 + 1].type == type)
{
WorldGen.KillTile(num, num2 + 1, false, false, false);
}
if ((int)Main.tile[num + 1, num2 + 1].type == type)
{
WorldGen.KillTile(num + 1, num2 + 1, false, false, false);
}
if (Main.netMode != 1 && !WorldGen.noTileActions)
{
if (type == 12)
{
Item.NewItem(num * 16, num2 * 16, 32, 32, 29, 1, false, 0, false);
}
else
{
if (type == 31)
{
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.spawnMeteor = true;
}
if (flag)
{
int num3 = Main.rand.Next(4);
if (!WorldGen.shadowOrbSmashed)
{
num3 = 0;
}
if (num3 == 0)
{
Item.NewItem(num * 16, num2 * 16, 32, 32, 800, 1, false, -1, false);
int stack = WorldGen.genRand.Next(25, 51);
Item.NewItem(num * 16, num2 * 16, 32, 32, 97, stack, false, 0, false);
}
else
{
if (num3 == 1)
{
Item.NewItem(num * 16, num2 * 16, 32, 32, 1256, 1, false, -1, false);
}
else
{
if (num3 == 2)
{
Item.NewItem(num * 16, num2 * 16, 32, 32, 802, 1, false, -1, false);
}
else
{
if (num3 == 3)
{
Item.NewItem(num * 16, num2 * 16, 32, 32, 1290, 1, false, -1, false);
}
}
}
}
}
else
{
int num4 = Main.rand.Next(5);
if (!WorldGen.shadowOrbSmashed)
{
num4 = 0;
}
if (num4 == 0)
{
Item.NewItem(num * 16, num2 * 16, 32, 32, 96, 1, false, -1, false);
int stack2 = WorldGen.genRand.Next(25, 51);
Item.NewItem(num * 16, num2 * 16, 32, 32, 97, stack2, false, 0, false);
}
else
{
if (num4 == 1)
{
Item.NewItem(num * 16, num2 * 16, 32, 32, 64, 1, false, -1, false);
}
else
{
if (num4 == 2)
{
Item.NewItem(num * 16, num2 * 16, 32, 32, 162, 1, false, -1, false);
}
else
{
if (num4 == 3)
{
Item.NewItem(num * 16, num2 * 16, 32, 32, 115, 1, false, -1, false);
}
else
{
if (num4 == 4)
{
Item.NewItem(num * 16, num2 * 16, 32, 32, 111, 1, false, -1, false);
}
}
}
}
}
}
WorldGen.shadowOrbSmashed = true;
WorldGen.shadowOrbCount++;
if (WorldGen.shadowOrbCount >= 3)
{
WorldGen.shadowOrbCount = 0;
float num5 = (float)(num * 16);
float num6 = (float)(num2 * 16);
float num7 = -1f;
int plr = 0;
for (int k = 0; k < 255; k++)
{
float num8 = Math.Abs(Main.player[k].position.X - num5) + Math.Abs(Main.player[k].position.Y - num6);
if (num8 < num7 || num7 == -1f)
{
plr = k;
num7 = num8;
}
}
if (flag)
{
NPC.SpawnOnPlayer(plr, 266);
}
else
{
NPC.SpawnOnPlayer(plr, 13);
}
}
else
{
string text = Lang.misc[10];
if (WorldGen.shadowOrbCount == 2)
{
text = Lang.misc[11];
}
if (Main.netMode == 0)
{
Main.NewText(text, 50, 255, 130, false);
}
else
{
if (Main.netMode == 2)
{
NetMessage.SendData(25, -1, -1, text, 255, 50f, 255f, 130f, 0);
}
}
}
}
}
}
if (frameX >= 36)
{
Main.PlaySound(4, i * 16, j * 16, 1);
}
else
{
Main.PlaySound(13, i * 16, j * 16, 1);
}
WorldGen.destroyObject = false;
}
}
}
public static void CheckTree(int i, int j)
{
int num = -1;
int num2 = -1;
int num3 = -1;
int num4 = -1;
int type = (int)Main.tile[i, j].type;
int frameX = (int)Main.tile[i, j].frameX;
int frameY = (int)Main.tile[i, j].frameY;
if (Main.tile[i - 1, j] != null && Main.tile[i - 1, j].active())
{
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())
{
num = (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())
{
byte arg_163_0 = Main.tile[i - 1, j - 1].type;
}
if (Main.tile[i + 1, j - 1] != null && Main.tile[i + 1, j - 1].active())
{
byte arg_1A2_0 = Main.tile[i + 1, j - 1].type;
}
if (Main.tile[i - 1, j + 1] != null && Main.tile[i - 1, j + 1].active())
{
byte arg_1E1_0 = Main.tile[i - 1, j + 1].type;
}
if (Main.tile[i + 1, j + 1] != null && Main.tile[i + 1, j + 1].active())
{
byte arg_220_0 = 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 != type && ((Main.tile[i, j].frameX == 0 && Main.tile[i, j].frameY <= 130) || (Main.tile[i, j].frameX == 22 && Main.tile[i, j].frameY <= 130) || (Main.tile[i, j].frameX == 44 && Main.tile[i, j].frameY <= 130)))
{
WorldGen.KillTile(i, j, false, false, false);
}
if (Main.tile[i, j].frameX >= 22 && Main.tile[i, j].frameX <= 44 && Main.tile[i, j].frameY >= 132 && Main.tile[i, j].frameY <= 176)
{
if (num4 != 2)
{
WorldGen.KillTile(i, j, false, false, false);
}
else
{
if ((Main.tile[i, j].frameX != 22 || num2 != type) && (Main.tile[i, j].frameX != 44 || num3 != type))
{
WorldGen.KillTile(i, j, false, false, false);
}
}
}
else
{
if ((Main.tile[i, j].frameX == 88 && Main.tile[i, j].frameY >= 0 && Main.tile[i, j].frameY <= 44) || (Main.tile[i, j].frameX == 66 && Main.tile[i, j].frameY >= 66 && Main.tile[i, j].frameY <= 130) || (Main.tile[i, j].frameX == 110 && Main.tile[i, j].frameY >= 66 && Main.tile[i, j].frameY <= 110) || (Main.tile[i, j].frameX == 132 && Main.tile[i, j].frameY >= 0 && Main.tile[i, j].frameY <= 176))
{
if (num2 == type && num3 == type)
{
if (Main.tile[i, j].frameNumber() == 0)
{
Main.tile[i, j].frameX = 110;
Main.tile[i, j].frameY = 66;
}
if (Main.tile[i, j].frameNumber() == 1)
{
Main.tile[i, j].frameX = 110;
Main.tile[i, j].frameY = 88;
}
if (Main.tile[i, j].frameNumber() == 2)
{
Main.tile[i, j].frameX = 110;
Main.tile[i, j].frameY = 110;
}
}
else
{
if (num2 == type)
{
if (Main.tile[i, j].frameNumber() == 0)
{
Main.tile[i, j].frameX = 88;
Main.tile[i, j].frameY = 0;
}
if (Main.tile[i, j].frameNumber() == 1)
{
Main.tile[i, j].frameX = 88;
Main.tile[i, j].frameY = 22;
}
if (Main.tile[i, j].frameNumber() == 2)
{
Main.tile[i, j].frameX = 88;
Main.tile[i, j].frameY = 44;
}
}
else
{
if (num3 == type)
{
if (Main.tile[i, j].frameNumber() == 0)
{
Main.tile[i, j].frameX = 66;
Main.tile[i, j].frameY = 66;
}
if (Main.tile[i, j].frameNumber() == 1)
{
Main.tile[i, j].frameX = 66;
Main.tile[i, j].frameY = 88;
}
if (Main.tile[i, j].frameNumber() == 2)
{
Main.tile[i, j].frameX = 66;
Main.tile[i, j].frameY = 110;
}
}
else
{
if (Main.tile[i, j].frameNumber() == 0)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 0;
}
if (Main.tile[i, j].frameNumber() == 1)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 22;
}
if (Main.tile[i, j].frameNumber() == 2)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 44;
}
}
}
}
}
}
if (Main.tile[i, j].frameY >= 132 && Main.tile[i, j].frameY <= 176 && (Main.tile[i, j].frameX == 0 || Main.tile[i, j].frameX == 66 || Main.tile[i, j].frameX == 88))
{
if (num4 != 2)
{
WorldGen.KillTile(i, j, false, false, false);
}
if (num2 != type && num3 != type)
{
if (Main.tile[i, j].frameNumber() == 0)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 0;
}
if (Main.tile[i, j].frameNumber() == 1)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 22;
}
if (Main.tile[i, j].frameNumber() == 2)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 44;
}
}
else
{
if (num2 != type)
{
if (Main.tile[i, j].frameNumber() == 0)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 132;
}
if (Main.tile[i, j].frameNumber() == 1)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 154;
}
if (Main.tile[i, j].frameNumber() == 2)
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 176;
}
}
else
{
if (num3 != type)
{
if (Main.tile[i, j].frameNumber() == 0)
{
Main.tile[i, j].frameX = 66;
Main.tile[i, j].frameY = 132;
}
if (Main.tile[i, j].frameNumber() == 1)
{
Main.tile[i, j].frameX = 66;
Main.tile[i, j].frameY = 154;
}
if (Main.tile[i, j].frameNumber() == 2)
{
Main.tile[i, j].frameX = 66;
Main.tile[i, j].frameY = 176;
}
}
else
{
if (Main.tile[i, j].frameNumber() == 0)
{
Main.tile[i, j].frameX = 88;
Main.tile[i, j].frameY = 132;
}
if (Main.tile[i, j].frameNumber() == 1)
{
Main.tile[i, j].frameX = 88;
Main.tile[i, j].frameY = 154;
}
if (Main.tile[i, j].frameNumber() == 2)
{
Main.tile[i, j].frameX = 88;
Main.tile[i, j].frameY = 176;
}
}
}
}
}
if ((Main.tile[i, j].frameX == 66 && (Main.tile[i, j].frameY == 0 || Main.tile[i, j].frameY == 22 || Main.tile[i, j].frameY == 44)) || (Main.tile[i, j].frameX == 44 && (Main.tile[i, j].frameY == 198 || Main.tile[i, j].frameY == 220 || Main.tile[i, j].frameY == 242)))
{
if (num3 != type)
{
WorldGen.KillTile(i, j, false, false, false);
}
}
else
{
if ((Main.tile[i, j].frameX == 88 && (Main.tile[i, j].frameY == 66 || Main.tile[i, j].frameY == 88 || Main.tile[i, j].frameY == 110)) || (Main.tile[i, j].frameX == 66 && (Main.tile[i, j].frameY == 198 || Main.tile[i, j].frameY == 220 || Main.tile[i, j].frameY == 242)))
{
if (num2 != type)
{
WorldGen.KillTile(i, j, false, false, false);
}
}
else
{
if (num4 == -1 || num4 == 23)
{
WorldGen.KillTile(i, j, false, false, false);
}
else
{
if (num != type && Main.tile[i, j].frameY < 198 && ((Main.tile[i, j].frameX != 22 && Main.tile[i, j].frameX != 44) || Main.tile[i, j].frameY < 132))
{
if (num2 == type || num3 == type)
{
if (num4 == type)
{
if (num2 == type && num3 == type)
{
if (Main.tile[i, j].frameNumber() == 0)
{
Main.tile[i, j].frameX = 132;
Main.tile[i, j].frameY = 132;
}
if (Main.tile[i, j].frameNumber() == 1)
{
Main.tile[i, j].frameX = 132;
Main.tile[i, j].frameY = 154;
}
if (Main.tile[i, j].frameNumber() == 2)
{
Main.tile[i, j].frameX = 132;
Main.tile[i, j].frameY = 176;
}
}
else
{
if (num2 == type)
{
if (Main.tile[i, j].frameNumber() == 0)
{
Main.tile[i, j].frameX = 132;
Main.tile[i, j].frameY = 0;
}
if (Main.tile[i, j].frameNumber() == 1)
{
Main.tile[i, j].frameX = 132;
Main.tile[i, j].frameY = 22;
}
if (Main.tile[i, j].frameNumber() == 2)
{
Main.tile[i, j].frameX = 132;
Main.tile[i, j].frameY = 44;
}
}
else
{
if (num3 == type)
{
if (Main.tile[i, j].frameNumber() == 0)
{
Main.tile[i, j].frameX = 132;
Main.tile[i, j].frameY = 66;
}
if (Main.tile[i, j].frameNumber() == 1)
{
Main.tile[i, j].frameX = 132;
Main.tile[i, j].frameY = 88;
}
if (Main.tile[i, j].frameNumber() == 2)
{
Main.tile[i, j].frameX = 132;
Main.tile[i, j].frameY = 110;
}
}
}
}
}
else
{
if (num2 == type && num3 == type)
{
if (Main.tile[i, j].frameNumber() == 0)
{
Main.tile[i, j].frameX = 154;
Main.tile[i, j].frameY = 132;
}
if (Main.tile[i, j].frameNumber() == 1)
{
Main.tile[i, j].frameX = 154;
Main.tile[i, j].frameY = 154;
}
if (Main.tile[i, j].frameNumber() == 2)
{
Main.tile[i, j].frameX = 154;
Main.tile[i, j].frameY = 176;
}
}
else
{
if (num2 == type)
{
if (Main.tile[i, j].frameNumber() == 0)
{
Main.tile[i, j].frameX = 154;
Main.tile[i, j].frameY = 0;
}
if (Main.tile[i, j].frameNumber() == 1)
{
Main.tile[i, j].frameX = 154;
Main.tile[i, j].frameY = 22;
}
if (Main.tile[i, j].frameNumber() == 2)
{
Main.tile[i, j].frameX = 154;
Main.tile[i, j].frameY = 44;
}
}
else
{
if (num3 == type)
{
if (Main.tile[i, j].frameNumber() == 0)
{
Main.tile[i, j].frameX = 154;
Main.tile[i, j].frameY = 66;
}
if (Main.tile[i, j].frameNumber() == 1)
{
Main.tile[i, j].frameX = 154;
Main.tile[i, j].frameY = 88;
}
if (Main.tile[i, j].frameNumber() == 2)
{
Main.tile[i, j].frameX = 154;
Main.tile[i, j].frameY = 110;
}
}
}
}
}
}
else
{
if (Main.tile[i, j].frameNumber() == 0)
{
Main.tile[i, j].frameX = 110;
Main.tile[i, j].frameY = 0;
}
if (Main.tile[i, j].frameNumber() == 1)
{
Main.tile[i, j].frameX = 110;
Main.tile[i, j].frameY = 22;
}
if (Main.tile[i, j].frameNumber() == 2)
{
Main.tile[i, j].frameX = 110;
Main.tile[i, j].frameY = 44;
}
}
}
}
}
}
if ((int)Main.tile[i, j].frameX != frameX && (int)Main.tile[i, j].frameY != frameY && frameX >= 0 && frameY >= 0)
{
WorldGen.TileFrame(i - 1, j, false, false);
WorldGen.TileFrame(i + 1, j, false, false);
WorldGen.TileFrame(i, j - 1, false, false);
WorldGen.TileFrame(i, j + 1, false, false);
}
}
public static void Convert(int i, int j, int type, int size = 4)
{
for (int k = i - size; k <= i + size; k++)
{
for (int l = j - size; l <= j + size; l++)
{
if (Math.Abs(k - i) + Math.Abs(l - j) < 6)
{
if (type == 4)
{
if (Main.tile[k, l].wall == 63 || Main.tile[k, l].wall == 64 || Main.tile[k, l].wall == 65 || Main.tile[k, l].wall == 66 || Main.tile[k, l].wall == 67 || Main.tile[k, l].wall == 68 || Main.tile[k, l].wall == 69 || Main.tile[k, l].wall == 70)
{
Main.tile[k, l].wall = 81;
WorldGen.SquareWallFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else
{
if (Main.tile[k, l].wall == 3 || Main.tile[k, l].wall == 1 || Main.tile[k, l].wall == 28)
{
Main.tile[k, l].wall = 83;
WorldGen.SquareWallFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
}
if (Main.tile[k, l].type == 59 && (Main.tile[k - 1, l].type == 199 || Main.tile[k + 1, l].type == 199 || Main.tile[k, l - 1].type == 199 || Main.tile[k, l + 1].type == 199))
{
Main.tile[k, l].type = 0;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
if (Main.tile[k, l].type == 2 || Main.tile[k, l].type == 60 || Main.tile[k, l].type == 109 || Main.tile[k, l].type == 23)
{
Main.tile[k, l].type = 199;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else
{
if (Main.tile[k, l].type == 1 || Main.tile[k, l].type == 25 || Main.tile[k, l].type == 117 || Main.tileMoss[(int)Main.tile[k, l].type])
{
Main.tile[k, l].type = 203;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else
{
if (Main.tile[k, l].type == 161 || Main.tile[k, l].type == 163 || Main.tile[k, l].type == 164)
{
Main.tile[k, l].type = 200;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else
{
if (Main.tile[k, l].type == 53 || Main.tile[k, l].type == 112 || Main.tile[k, l].type == 116)
{
Main.tile[k, l].type = 234;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else
{
if (Main.tile[k, l].type == 32 || Main.tile[k, l].type == 69)
{
WorldGen.KillTile(k, l, false, false, false);
if (Main.netMode == 1)
{
NetMessage.SendData(17, -1, -1, "", 0, (float)k, (float)l, 0f, 0);
}
}
}
}
}
}
}
else
{
if (type == 2)
{
if (Main.tile[k, l].wall == 63 || Main.tile[k, l].wall == 64 || Main.tile[k, l].wall == 65 || Main.tile[k, l].wall == 66 || Main.tile[k, l].wall == 67 || Main.tile[k, l].wall == 68 || Main.tile[k, l].wall == 69 || Main.tile[k, l].wall == 81)
{
Main.tile[k, l].wall = 70;
WorldGen.SquareWallFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else
{
if (Main.tile[k, l].wall == 3 || Main.tile[k, l].wall == 1 || Main.tile[k, l].wall == 83)
{
Main.tile[k, l].wall = 28;
WorldGen.SquareWallFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
}
if (Main.tile[k, l].type == 59)
{
if (Main.tile[k - 1, l].type == 109 || Main.tile[k + 1, l].type == 109 || Main.tile[k, l - 1].type == 109 || Main.tile[k, l + 1].type == 109)
{
Main.tile[k, l].type = 0;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
}
else
{
if (Main.tile[k, l].type == 2 || Main.tile[k, l].type == 60 || Main.tile[k, l].type == 199)
{
Main.tile[k, l].type = 109;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else
{
if (Main.tile[k, l].type == 1 || Main.tileMoss[(int)Main.tile[k, l].type] || Main.tile[k, l].type == 203)
{
Main.tile[k, l].type = 117;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else
{
if (Main.tile[k, l].type == 53 || Main.tile[k, l].type == 234)
{
Main.tile[k, l].type = 116;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else
{
if (Main.tile[k, l].type == 23)
{
Main.tile[k, l].type = 109;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else
{
if (Main.tile[k, l].type == 25)
{
Main.tile[k, l].type = 117;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else
{
if (Main.tile[k, l].type == 112)
{
Main.tile[k, l].type = 116;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else
{
if (Main.tile[k, l].type == 161 || Main.tile[k, l].type == 163 || Main.tile[k, l].type == 200)
{
Main.tile[k, l].type = 164;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else
{
if (Main.tile[k, l].type == 32 || Main.tile[k, l].type == 69)
{
WorldGen.KillTile(k, l, false, false, false);
if (Main.netMode == 1)
{
NetMessage.SendData(17, -1, -1, "", 0, (float)k, (float)l, 0f, 0);
}
}
}
}
}
}
}
}
}
}
}
else
{
if (type == 1)
{
if (Main.tile[k, l].wall == 63 || Main.tile[k, l].wall == 64 || Main.tile[k, l].wall == 65 || Main.tile[k, l].wall == 66 || Main.tile[k, l].wall == 67 || Main.tile[k, l].wall == 68 || Main.tile[k, l].wall == 70 || Main.tile[k, l].wall == 81)
{
Main.tile[k, l].wall = 69;
WorldGen.SquareWallFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else
{
if (Main.tile[k, l].wall == 28 || Main.tile[k, l].wall == 1 || Main.tile[k, l].wall == 83)
{
Main.tile[k, l].wall = 3;
WorldGen.SquareWallFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
}
if (Main.tile[k, l].type == 59)
{
if (Main.tile[k - 1, l].type == 23 || Main.tile[k + 1, l].type == 23 || Main.tile[k, l - 1].type == 23 || Main.tile[k, l + 1].type == 23)
{
Main.tile[k, l].type = 0;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
}
else
{
if (Main.tile[k, l].type == 2 || Main.tile[k, l].type == 60 || Main.tile[k, l].type == 199)
{
Main.tile[k, l].type = 23;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else
{
if (Main.tile[k, l].type == 1 || Main.tileMoss[(int)Main.tile[k, l].type] || Main.tile[k, l].type == 203)
{
Main.tile[k, l].type = 25;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else
{
if (Main.tile[k, l].type == 53 || Main.tile[k, l].type == 234)
{
Main.tile[k, l].type = 112;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else
{
if (Main.tile[k, l].type == 109)
{
Main.tile[k, l].type = 23;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else
{
if (Main.tile[k, l].type == 117)
{
Main.tile[k, l].type = 25;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else
{
if (Main.tile[k, l].type == 116)
{
Main.tile[k, l].type = 112;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else
{
if (Main.tile[k, l].type == 161 || Main.tile[k, l].type == 164 || Main.tile[k, l].type == 200)
{
Main.tile[k, l].type = 163;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else
{
if (Main.tile[k, l].type == 69)
{
WorldGen.KillTile(k, l, false, false, false);
if (Main.netMode == 1)
{
NetMessage.SendData(17, -1, -1, "", 0, (float)k, (float)l, 0f, 0);
}
}
}
}
}
}
}
}
}
}
}
else
{
if (type == 3)
{
if (Main.tile[k, l].wall == 64 || Main.tile[k, l].wall == 15)
{
Main.tile[k, l].wall = 80;
WorldGen.SquareWallFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 3);
}
if (Main.tile[k, l].type == 60)
{
Main.tile[k, l].type = 70;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 3);
}
else
{
if (Main.tile[k, l].type == 32 || Main.tile[k, l].type == 69)
{
WorldGen.KillTile(k, l, false, false, false);
if (Main.netMode == 1)
{
NetMessage.SendData(17, -1, -1, "", 0, (float)k, (float)l, 0f, 0);
}
}
}
}
else
{
if (Main.tile[k, l].wall == 69 || Main.tile[k, l].wall == 70 || Main.tile[k, l].wall == 81)
{
if ((double)l < Main.worldSurface)
{
if (Main.rand.Next(10) == 0)
{
Main.tile[k, l].wall = 65;
}
else
{
Main.tile[k, l].wall = 63;
}
}
else
{
Main.tile[k, l].wall = 64;
}
WorldGen.SquareWallFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else
{
if (Main.tile[k, l].wall == 3 || Main.tile[k, l].wall == 28 || Main.tile[k, l].wall == 83)
{
Main.tile[k, l].wall = 1;
WorldGen.SquareWallFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else
{
if (Main.tile[k, l].wall == 80)
{
if ((double)l < Main.worldSurface + 4.0 + (double)WorldGen.genRand.Next(3) || (double)l > ((double)Main.maxTilesY + Main.rockLayer) / 2.0 - 3.0 + (double)WorldGen.genRand.Next(3))
{
Main.tile[k, l].wall = 15;
WorldGen.SquareWallFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 3);
}
else
{
Main.tile[k, l].wall = 64;
WorldGen.SquareWallFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 3);
}
}
}
}
if (Main.tile[k, l].type == 23 || Main.tile[k, l].type == 109 || Main.tile[k, l].type == 199)
{
Main.tile[k, l].type = 2;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else
{
if (Main.tile[k, l].type == 117 || Main.tile[k, l].type == 25 || Main.tile[k, l].type == 203)
{
Main.tile[k, l].type = 1;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else
{
if (Main.tile[k, l].type == 112 || Main.tile[k, l].type == 116 || Main.tile[k, l].type == 234)
{
Main.tile[k, l].type = 53;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else
{
if (Main.tile[k, l].type == 164 || Main.tile[k, l].type == 163 || Main.tile[k, l].type == 200)
{
Main.tile[k, l].type = 161;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else
{
if (Main.tile[k, l].type == 70)
{
Main.tile[k, l].type = 60;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else
{
if (Main.tile[k, l].type == 32)
{
WorldGen.KillTile(k, l, false, false, false);
if (Main.netMode == 1)
{
NetMessage.SendData(17, -1, -1, "", 0, (float)k, (float)l, 0f, 0);
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
public static void CactusFrame(int i, int j)
{
try
{
int num = j;
int num2 = i;
if (!WorldGen.CheckCactus(i, j))
{
while (Main.tile[num2, num].active() && Main.tile[num2, num].type == 80)
{
num++;
if (!Main.tile[num2, num].active() || Main.tile[num2, num].type != 80)
{
if (Main.tile[num2 - 1, num].active() && Main.tile[num2 - 1, num].type == 80 && Main.tile[num2 - 1, num - 1].active() && Main.tile[num2 - 1, num - 1].type == 80 && num2 >= i)
{
num2--;
}
if (Main.tile[num2 + 1, num].active() && Main.tile[num2 + 1, num].type == 80 && Main.tile[num2 + 1, num - 1].active() && Main.tile[num2 + 1, num - 1].type == 80 && num2 <= i)
{
num2++;
}
}
}
num--;
int num3 = i - num2;
int type = (int)Main.tile[i - 2, j].type;
int num4 = (int)Main.tile[i - 1, j].type;
int num5 = (int)Main.tile[i + 1, j].type;
int num6 = (int)Main.tile[i, j - 1].type;
if (num6 == 227)
{
num6 = 80;
}
int num7 = (int)Main.tile[i, j + 1].type;
int num8 = (int)Main.tile[i - 1, j + 1].type;
int num9 = (int)Main.tile[i + 1, j + 1].type;
if (!Main.tile[i - 1, j].active())
{
num4 = -1;
}
if (!Main.tile[i + 1, j].active())
{
num5 = -1;
}
if (!Main.tile[i, j - 1].active())
{
num6 = -1;
}
if (!Main.tile[i, j + 1].active())
{
num7 = -1;
}
if (!Main.tile[i - 1, j + 1].active())
{
num8 = -1;
}
if (!Main.tile[i + 1, j + 1].active())
{
num9 = -1;
}
short num10 = Main.tile[i, j].frameX;
short num11 = Main.tile[i, j].frameY;
if (num3 == 0)
{
if (num6 != 80)
{
if (num4 == 80 && num5 == 80 && num8 != 80 && num9 != 80 && type != 80)
{
num10 = 90;
num11 = 0;
}
else
{
if (num4 == 80 && num8 != 80 && type != 80)
{
num10 = 72;
num11 = 0;
}
else
{
if (num5 == 80 && num9 != 80)
{
num10 = 18;
num11 = 0;
}
else
{
num10 = 0;
num11 = 0;
}
}
}
}
else
{
if (num4 == 80 && num5 == 80 && num8 != 80 && num9 != 80 && type != 80)
{
num10 = 90;
num11 = 36;
}
else
{
if (num4 == 80 && num8 != 80 && type != 80)
{
num10 = 72;
num11 = 36;
}
else
{
if (num5 == 80 && num9 != 80)
{
num10 = 18;
num11 = 36;
}
else
{
if (num7 >= 0 && Main.tileSolid[num7])
{
num10 = 0;
num11 = 36;
}
else
{
num10 = 0;
num11 = 18;
}
}
}
}
}
}
else
{
if (num3 == -1)
{
if (num5 == 80)
{
if (num6 != 80 && num7 != 80)
{
num10 = 108;
num11 = 36;
}
else
{
if (num7 != 80)
{
num10 = 54;
num11 = 36;
}
else
{
if (num6 != 80)
{
num10 = 54;
num11 = 0;
}
else
{
num10 = 54;
num11 = 18;
}
}
}
}
else
{
if (num6 != 80)
{
num10 = 54;
num11 = 0;
}
else
{
num10 = 54;
num11 = 18;
}
}
}
else
{
if (num3 == 1)
{
if (num4 == 80)
{
if (num6 != 80 && num7 != 80)
{
num10 = 108;
num11 = 18;
}
else
{
if (num7 != 80)
{
num10 = 36;
num11 = 36;
}
else
{
if (num6 != 80)
{
num10 = 36;
num11 = 0;
}
else
{
num10 = 36;
num11 = 18;
}
}
}
}
else
{
if (num6 != 80)
{
num10 = 36;
num11 = 0;
}
else
{
num10 = 36;
num11 = 18;
}
}
}
}
}
if (num10 != Main.tile[i, j].frameX || num11 != Main.tile[i, j].frameY)
{
Main.tile[i, j].frameX = num10;
Main.tile[i, j].frameY = num11;
WorldGen.DiamondTileFrame(i, j);
}
}
}
catch
{
Main.tile[i, j].frameX = 0;
Main.tile[i, j].frameY = 0;
}
}
public static void GrowCactus(int i, int j)
{
int num = j;
int num2 = i;
if (!Main.tile[i, j].nactive())
{
return;
}
if (Main.tile[i, j].halfBrick())
{
return;
}
if (Main.tile[i, j].slope() != 0)
{
return;
}
if (Main.tile[i, j - 1].liquid > 0)
{
return;
}
if (Main.tile[i, j].type != 53 && Main.tile[i, j].type != 80 && Main.tile[i, j].type != 234 && Main.tile[i, j].type != 112 && Main.tile[i, j].type != 116)
{
return;
}
if (Main.tile[i, j].type == 53 || Main.tile[i, j].type == 112 || Main.tile[i, j].type == 116 || Main.tile[i, j].type == 234)
{
if (Main.tile[i, j - 1].active() || Main.tile[i - 1, j - 1].active() || Main.tile[i + 1, j - 1].active())
{
return;
}
int num3 = 0;
int num4 = 0;
for (int k = i - 6; k <= i + 6; k++)
{
for (int l = j - 3; l <= j + 1; l++)
{
try
{
if (Main.tile[k, l].active())
{
if (Main.tile[k, l].type == 80)
{
num3++;
if (num3 >= 4)
{
return;
}
}
if (Main.tile[k, l].type == 53 || Main.tile[k, l].type == 112 || Main.tile[k, l].type == 116 || Main.tile[k, l].type == 234)
{
num4++;
}
}
}
catch
{
}
}
}
if (num4 > 10)
{
Main.tile[i, j - 1].active(true);
Main.tile[i, j - 1].type = 80;
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, i, j - 1, 1);
}
WorldGen.SquareTileFrame(num2, num - 1, true);
return;
}
return;
}
else
{
if (Main.tile[i, j].type != 80)
{
return;
}
while (Main.tile[num2, num].active() && Main.tile[num2, num].type == 80)
{
num++;
if (!Main.tile[num2, num].active() || Main.tile[num2, num].type != 80)
{
if (Main.tile[num2 - 1, num].active() && Main.tile[num2 - 1, num].type == 80 && Main.tile[num2 - 1, num - 1].active() && Main.tile[num2 - 1, num - 1].type == 80 && num2 >= i)
{
num2--;
}
if (Main.tile[num2 + 1, num].active() && Main.tile[num2 + 1, num].type == 80 && Main.tile[num2 + 1, num - 1].active() && Main.tile[num2 + 1, num - 1].type == 80 && num2 <= i)
{
num2++;
}
}
}
num--;
int num5 = num - j;
int num6 = i - num2;
num2 = i - num6;
num = j;
int num7 = 11 - num5;
int num8 = 0;
for (int m = num2 - 2; m <= num2 + 2; m++)
{
for (int n = num - num7; n <= num + num5; n++)
{
if (Main.tile[m, n].active() && Main.tile[m, n].type == 80)
{
num8++;
}
}
}
if (num8 < WorldGen.genRand.Next(11, 13))
{
num2 = i;
num = j;
if (num6 == 0)
{
if (num5 == 0)
{
if (Main.tile[num2, num - 1].active())
{
return;
}
Main.tile[num2, num - 1].active(true);
Main.tile[num2, num - 1].type = 80;
WorldGen.SquareTileFrame(num2, num - 1, true);
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num2, num - 1, 1);
return;
}
return;
}
else
{
bool flag = false;
bool flag2 = false;
if (Main.tile[num2, num - 1].active() && Main.tile[num2, num - 1].type == 80)
{
if (!Main.tile[num2 - 1, num].active() && !Main.tile[num2 - 2, num + 1].active() && !Main.tile[num2 - 1, num - 1].active() && !Main.tile[num2 - 1, num + 1].active() && !Main.tile[num2 - 2, num].active())
{
flag = true;
}
if (!Main.tile[num2 + 1, num].active() && !Main.tile[num2 + 2, num + 1].active() && !Main.tile[num2 + 1, num - 1].active() && !Main.tile[num2 + 1, num + 1].active() && !Main.tile[num2 + 2, num].active())
{
flag2 = true;
}
}
int num9 = WorldGen.genRand.Next(3);
if (num9 == 0 && flag)
{
Main.tile[num2 - 1, num].active(true);
Main.tile[num2 - 1, num].type = 80;
WorldGen.SquareTileFrame(num2 - 1, num, true);
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num2 - 1, num, 1);
return;
}
return;
}
else
{
if (num9 == 1 && flag2)
{
Main.tile[num2 + 1, num].active(true);
Main.tile[num2 + 1, num].type = 80;
WorldGen.SquareTileFrame(num2 + 1, num, true);
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num2 + 1, num, 1);
return;
}
return;
}
else
{
if (num5 >= WorldGen.genRand.Next(2, 8))
{
return;
}
if (Main.tile[num2 - 1, num - 1].active())
{
byte arg_6E3_0 = Main.tile[num2 - 1, num - 1].type;
}
if (Main.tile[num2 + 1, num - 1].active() && Main.tile[num2 + 1, num - 1].type == 80)
{
return;
}
if (Main.tile[num2, num - 1].active())
{
return;
}
Main.tile[num2, num - 1].active(true);
Main.tile[num2, num - 1].type = 80;
WorldGen.SquareTileFrame(num2, num - 1, true);
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num2, num - 1, 1);
return;
}
return;
}
}
}
}
else
{
if (Main.tile[num2, num - 1].active() || Main.tile[num2, num - 2].active() || Main.tile[num2 + num6, num - 1].active() || !Main.tile[num2 - num6, num - 1].active() || Main.tile[num2 - num6, num - 1].type != 80)
{
return;
}
Main.tile[num2, num - 1].active(true);
Main.tile[num2, num - 1].type = 80;
WorldGen.SquareTileFrame(num2, num - 1, true);
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num2, num - 1, 1);
return;
}
return;
}
}
}
}
public static void CheckPot(int i, int j, int type = 28)
{
if (WorldGen.destroyObject)
{
return;
}
bool flag = false;
int k = 0;
for (k += (int)(Main.tile[i, j].frameX / 18); k > 1; k -= 2)
{
}
k *= -1;
k += i;
int l = (int)(Main.tile[i, j].frameY / 18);
int num = 0;
while (l > 1)
{
l -= 2;
num++;
}
int num2 = j - l;
for (int m = k; m < k + 2; m++)
{
for (int n = num2; n < num2 + 2; n++)
{
if (Main.tile[m, n] == null)
{
Main.tile[m, n] = new Tile();
}
int num3;
for (num3 = (int)(Main.tile[m, n].frameX / 18); num3 > 1; num3 -= 2)
{
}
if (!Main.tile[m, n].active() || (int)Main.tile[m, n].type != type || num3 != m - k || (int)Main.tile[m, n].frameY != (n - num2) * 18 + num * 36)
{
flag = true;
}
}
if (Main.tile[m, num2 + 2] == null)
{
Main.tile[m, num2 + 2] = new Tile();
}
if (!WorldGen.SolidTile2(m, num2 + 2))
{
flag = true;
}
}
if (flag)
{
WorldGen.destroyObject = true;
if (num >= 7 && num <= 9)
{
Main.PlaySound(6, i * 16, j * 16, 1);
}
else
{
if (num >= 16 && num <= 24)
{
Main.PlaySound(4, i * 16, j * 16, 1);
}
else
{
Main.PlaySound(13, i * 16, j * 16, 1);
}
}
for (int num4 = k; num4 < k + 2; num4++)
{
for (int num5 = num2; num5 < num2 + 2; num5++)
{
if ((int)Main.tile[num4, num5].type == type && Main.tile[num4, num5].active())
{
WorldGen.KillTile(num4, num5, false, false, false);
}
}
}
if (num == 0)
{
Gore.NewGore(new Vector2((float)(i * 16), (float)(j * 16)), default(Vector2), 51, 1f);
Gore.NewGore(new Vector2((float)(i * 16), (float)(j * 16)), default(Vector2), 52, 1f);
Gore.NewGore(new Vector2((float)(i * 16), (float)(j * 16)), default(Vector2), 53, 1f);
}
else
{
if (num == 1)
{
Gore.NewGore(new Vector2((float)(i * 16), (float)(j * 16)), default(Vector2), 166, 1f);
Gore.NewGore(new Vector2((float)(i * 16), (float)(j * 16)), default(Vector2), 167, 1f);
Gore.NewGore(new Vector2((float)(i * 16), (float)(j * 16)), default(Vector2), 168, 1f);
}
else
{
if (num == 2)
{
Gore.NewGore(new Vector2((float)(i * 16), (float)(j * 16)), default(Vector2), 169, 1f);
Gore.NewGore(new Vector2((float)(i * 16), (float)(j * 16)), default(Vector2), 170, 1f);
Gore.NewGore(new Vector2((float)(i * 16), (float)(j * 16)), default(Vector2), 171, 1f);
}
else
{
if (num == 3)
{
Gore.NewGore(new Vector2((float)(i * 16), (float)(j * 16)), default(Vector2), 172, 1f);
Gore.NewGore(new Vector2((float)(i * 16), (float)(j * 16)), default(Vector2), 173, 1f);
Gore.NewGore(new Vector2((float)(i * 16), (float)(j * 16)), default(Vector2), 174, 1f);
}
else
{
if (num >= 4 && num <= 6)
{
Gore.NewGore(new Vector2((float)(i * 16), (float)(j * 16)), default(Vector2), 197, 1f);
Gore.NewGore(new Vector2((float)(i * 16), (float)(j * 16)), default(Vector2), 198, 1f);
}
else
{
if (num >= 7 && num <= 9)
{
Gore.NewGore(new Vector2((float)(i * 16), (float)(j * 16)), default(Vector2), 199, 1f);
Gore.NewGore(new Vector2((float)(i * 16), (float)(j * 16)), default(Vector2), 200, 1f);
}
else
{
if (num >= 10 && num <= 12)
{
Gore.NewGore(new Vector2((float)(i * 16), (float)(j * 16)), default(Vector2), 201, 1f);
Gore.NewGore(new Vector2((float)(i * 16), (float)(j * 16)), default(Vector2), 202, 1f);
}
else
{
if (num >= 13 && num <= 15)
{
Gore.NewGore(new Vector2((float)(i * 16), (float)(j * 16)), default(Vector2), 203, 1f);
Gore.NewGore(new Vector2((float)(i * 16), (float)(j * 16)), default(Vector2), 204, 1f);
}
else
{
if (num >= 25 && num <= 27)
{
Gore.NewGore(new Vector2((float)(i * 16), (float)(j * 16)), default(Vector2), WorldGen.genRand.Next(217, 220), 1f);
Gore.NewGore(new Vector2((float)(i * 16), (float)(j * 16)), default(Vector2), WorldGen.genRand.Next(217, 220), 1f);
}
else
{
if (num >= 28 && num <= 30)
{
Gore.NewGore(new Vector2((float)(i * 16), (float)(j * 16)), default(Vector2), WorldGen.genRand.Next(315, 317), 1f);
Gore.NewGore(new Vector2((float)(i * 16), (float)(j * 16)), default(Vector2), WorldGen.genRand.Next(315, 317), 1f);
}
}
}
}
}
}
}
}
}
}
if (WorldGen.genRand.Next(40) == 0 && Main.wallDungeon[(int)Main.tile[i, j].wall])
{
Item.NewItem(i * 16, j * 16, 16, 16, 327, 1, false, 0, false);
}
else
{
if (WorldGen.genRand.Next(45) == 0)
{
if ((double)j < Main.worldSurface)
{
int num6 = WorldGen.genRand.Next(4);
if (num6 == 0)
{
Item.NewItem(i * 16, j * 16, 16, 16, 292, 1, false, 0, false);
}
if (num6 == 1)
{
Item.NewItem(i * 16, j * 16, 16, 16, 298, 1, false, 0, false);
}
if (num6 == 2)
{
Item.NewItem(i * 16, j * 16, 16, 16, 299, 1, false, 0, false);
}
if (num6 == 3)
{
Item.NewItem(i * 16, j * 16, 16, 16, 290, 1, false, 0, false);
}
}
else
{
if ((double)j < Main.rockLayer)
{
int num7 = WorldGen.genRand.Next(7);
if (num7 == 0)
{
Item.NewItem(i * 16, j * 16, 16, 16, 289, 1, false, 0, false);
}
if (num7 == 1)
{
Item.NewItem(i * 16, j * 16, 16, 16, 298, 1, false, 0, false);
}
if (num7 == 2)
{
Item.NewItem(i * 16, j * 16, 16, 16, 299, 1, false, 0, false);
}
if (num7 == 3)
{
Item.NewItem(i * 16, j * 16, 16, 16, 290, 1, false, 0, false);
}
if (num7 == 4)
{
Item.NewItem(i * 16, j * 16, 16, 16, 303, 1, false, 0, false);
}
if (num7 == 5)
{
Item.NewItem(i * 16, j * 16, 16, 16, 291, 1, false, 0, false);
}
if (num7 == 6)
{
Item.NewItem(i * 16, j * 16, 16, 16, 304, 1, false, 0, false);
}
}
else
{
if (j < Main.maxTilesY - 200)
{
int num8 = WorldGen.genRand.Next(10);
if (num8 == 0)
{
Item.NewItem(i * 16, j * 16, 16, 16, 296, 1, false, 0, false);
}
if (num8 == 1)
{
Item.NewItem(i * 16, j * 16, 16, 16, 295, 1, false, 0, false);
}
if (num8 == 2)
{
Item.NewItem(i * 16, j * 16, 16, 16, 299, 1, false, 0, false);
}
if (num8 == 3)
{
Item.NewItem(i * 16, j * 16, 16, 16, 302, 1, false, 0, false);
}
if (num8 == 4)
{
Item.NewItem(i * 16, j * 16, 16, 16, 303, 1, false, 0, false);
}
if (num8 == 5)
{
Item.NewItem(i * 16, j * 16, 16, 16, 305, 1, false, 0, false);
}
if (num8 == 6)
{
Item.NewItem(i * 16, j * 16, 16, 16, 301, 1, false, 0, false);
}
if (num8 == 7)
{
Item.NewItem(i * 16, j * 16, 16, 16, 302, 1, false, 0, false);
}
if (num8 == 8)
{
Item.NewItem(i * 16, j * 16, 16, 16, 297, 1, false, 0, false);
}
if (num8 == 9)
{
Item.NewItem(i * 16, j * 16, 16, 16, 304, 1, false, 0, false);
}
}
else
{
int num9 = WorldGen.genRand.Next(12);
if (num9 == 0)
{
Item.NewItem(i * 16, j * 16, 16, 16, 296, 1, false, 0, false);
}
if (num9 == 1)
{
Item.NewItem(i * 16, j * 16, 16, 16, 295, 1, false, 0, false);
}
if (num9 == 2)
{
Item.NewItem(i * 16, j * 16, 16, 16, 293, 1, false, 0, false);
}
if (num9 == 3)
{
Item.NewItem(i * 16, j * 16, 16, 16, 288, 1, false, 0, false);
}
if (num9 == 4)
{
Item.NewItem(i * 16, j * 16, 16, 16, 294, 1, false, 0, false);
}
if (num9 == 5)
{
Item.NewItem(i * 16, j * 16, 16, 16, 297, 1, false, 0, false);
}
if (num9 == 6)
{
Item.NewItem(i * 16, j * 16, 16, 16, 304, 1, false, 0, false);
}
if (num9 == 7)
{
Item.NewItem(i * 16, j * 16, 16, 16, 305, 1, false, 0, false);
}
if (num9 == 8)
{
Item.NewItem(i * 16, j * 16, 16, 16, 301, 1, false, 0, false);
}
if (num9 == 9)
{
Item.NewItem(i * 16, j * 16, 16, 16, 302, 1, false, 0, false);
}
if (num9 == 10)
{
Item.NewItem(i * 16, j * 16, 16, 16, 288, 1, false, 0, false);
}
if (num9 == 11)
{
Item.NewItem(i * 16, j * 16, 16, 16, 300, 1, false, 0, false);
}
}
}
}
}
else
{
int num10 = Main.rand.Next(9);
if (num10 == 0 && Main.player[(int)Player.FindClosest(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16)].statLife < Main.player[(int)Player.FindClosest(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16)].statLifeMax)
{
Item.NewItem(i * 16, j * 16, 16, 16, 58, 1, false, 0, false);
}
else
{
if (num10 == 1 && Main.player[(int)Player.FindClosest(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16)].statMana < Main.player[(int)Player.FindClosest(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16)].statManaMax)
{
Item.NewItem(i * 16, j * 16, 16, 16, 184, 1, false, 0, false);
}
else
{
if (num10 == 2)
{
int stack = Main.rand.Next(1, 6);
if (Main.tile[i, j].liquid > 0)
{
Item.NewItem(i * 16, j * 16, 16, 16, 282, stack, false, 0, false);
}
else
{
Item.NewItem(i * 16, j * 16, 16, 16, 8, stack, false, 0, false);
}
}
else
{
if (num10 == 3)
{
int stack2 = Main.rand.Next(8) + 3;
int type2 = 40;
if ((double)j < Main.rockLayer && WorldGen.genRand.Next(2) == 0)
{
if (Main.hardMode)
{
type2 = 168;
}
else
{
type2 = 42;
}
}
if (j > Main.maxTilesY - 200)
{
type2 = 265;
}
else
{
if (Main.hardMode)
{
if (Main.rand.Next(2) == 0)
{
type2 = 278;
}
else
{
type2 = 47;
}
}
}
Item.NewItem(i * 16, j * 16, 16, 16, type2, stack2, false, 0, false);
}
else
{
if (num10 == 4)
{
int type3 = 28;
if (j > Main.maxTilesY - 200 || Main.hardMode)
{
type3 = 188;
}
Item.NewItem(i * 16, j * 16, 16, 16, type3, 1, false, 0, false);
}
else
{
if (num10 == 5 && (double)j > Main.rockLayer)
{
int stack3 = Main.rand.Next(4) + 1;
Item.NewItem(i * 16, j * 16, 16, 16, 166, stack3, false, 0, false);
}
else
{
if (num10 == 6 && j < Main.maxTilesY - 200 && !Main.hardMode)
{
int stack4 = Main.rand.Next(20, 41);
Item.NewItem(i * 16, j * 16, 16, 16, 965, stack4, false, 0, false);
}
else
{
float num11 = (float)(200 + WorldGen.genRand.Next(-100, 101));
if ((double)j < Main.worldSurface)
{
num11 *= 0.5f;
}
else
{
if ((double)j < Main.rockLayer)
{
num11 *= 0.75f;
}
else
{
if (j > Main.maxTilesY - 250)
{
num11 *= 1.25f;
}
}
}
num11 *= 1f + (float)Main.rand.Next(-20, 21) * 0.01f;
if (Main.rand.Next(5) == 0)
{
num11 *= 1f + (float)Main.rand.Next(5, 11) * 0.01f;
}
if (Main.rand.Next(10) == 0)
{
num11 *= 1f + (float)Main.rand.Next(10, 21) * 0.01f;
}
if (Main.rand.Next(15) == 0)
{
num11 *= 1f + (float)Main.rand.Next(20, 41) * 0.01f;
}
if (Main.rand.Next(20) == 0)
{
num11 *= 1f + (float)Main.rand.Next(40, 81) * 0.01f;
}
if (Main.rand.Next(25) == 0)
{
num11 *= 1f + (float)Main.rand.Next(50, 101) * 0.01f;
}
while ((int)num11 > 0)
{
if (num11 > 1000000f)
{
int num12 = (int)(num11 / 1000000f);
if (num12 > 50 && Main.rand.Next(2) == 0)
{
num12 /= Main.rand.Next(3) + 1;
}
if (Main.rand.Next(2) == 0)
{
num12 /= Main.rand.Next(3) + 1;
}
num11 -= (float)(1000000 * num12);
Item.NewItem(i * 16, j * 16, 16, 16, 74, num12, false, 0, false);
}
else
{
if (num11 > 10000f)
{
int num13 = (int)(num11 / 10000f);
if (num13 > 50 && Main.rand.Next(2) == 0)
{
num13 /= Main.rand.Next(3) + 1;
}
if (Main.rand.Next(2) == 0)
{
num13 /= Main.rand.Next(3) + 1;
}
num11 -= (float)(10000 * num13);
Item.NewItem(i * 16, j * 16, 16, 16, 73, num13, false, 0, false);
}
else
{
if (num11 > 100f)
{
int num14 = (int)(num11 / 100f);
if (num14 > 50 && Main.rand.Next(2) == 0)
{
num14 /= Main.rand.Next(3) + 1;
}
if (Main.rand.Next(2) == 0)
{
num14 /= Main.rand.Next(3) + 1;
}
num11 -= (float)(100 * num14);
Item.NewItem(i * 16, j * 16, 16, 16, 72, num14, false, 0, false);
}
else
{
int num15 = (int)num11;
if (num15 > 50 && Main.rand.Next(2) == 0)
{
num15 /= Main.rand.Next(3) + 1;
}
if (Main.rand.Next(2) == 0)
{
num15 /= Main.rand.Next(4) + 1;
}
if (num15 < 1)
{
num15 = 1;
}
num11 -= (float)num15;
Item.NewItem(i * 16, j * 16, 16, 16, 71, num15, false, 0, false);
}
}
}
}
}
}
}
}
}
}
}
}
}
WorldGen.destroyObject = false;
}
}
public static int PlaceChest(int x, int y, int type = 21, bool notNearOtherChests = false, int style = 0)
{
bool flag = true;
int num = -1;
for (int i = x; i < x + 2; i++)
{
for (int j = y - 1; j < y + 1; j++)
{
if (Main.tile[i, j] == null)
{
Main.tile[i, j] = new Tile();
}
if (Main.tile[i, j].active())
{
flag = false;
}
if (Main.tile[i, j].lava())
{
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 && notNearOtherChests)
{
for (int k = x - 25; k < x + 25; k++)
{
for (int l = y - 8; l < y + 8; l++)
{
try
{
if (Main.tile[k, l].active() && Main.tile[k, l].type == 21)
{
flag = false;
return -1;
}
}
catch
{
}
}
}
}
if (flag)
{
num = Chest.CreateChest(x, y - 1);
if (num == -1)
{
flag = false;
}
}
if (flag)
{
Main.tile[x, y - 1].active(true);
Main.tile[x, y - 1].frameY = 0;
Main.tile[x, y - 1].frameX = (short)(36 * style);
Main.tile[x, y - 1].type = (byte)type;
Main.tile[x, y - 1].halfBrick(false);
Main.tile[x + 1, y - 1].active(true);
Main.tile[x + 1, y - 1].frameY = 0;
Main.tile[x + 1, y - 1].frameX = (short)(18 + 36 * style);
Main.tile[x + 1, y - 1].type = (byte)type;
Main.tile[x + 1, y - 1].halfBrick(false);
Main.tile[x, y].active(true);
Main.tile[x, y].frameY = 18;
Main.tile[x, y].frameX = (short)(36 * style);
Main.tile[x, y].type = (byte)type;
Main.tile[x, y].halfBrick(false);
Main.tile[x + 1, y].active(true);
Main.tile[x + 1, y].frameY = 18;
Main.tile[x + 1, y].frameX = (short)(18 + 36 * style);
Main.tile[x + 1, y].type = (byte)type;
Main.tile[x + 1, y].halfBrick(false);
}
return num;
}
public static void CheckChest(int i, int j, int type)
{
if (WorldGen.destroyObject)
{
return;
}
bool flag = false;
int k = 0;
k += (int)(Main.tile[i, j].frameX / 18);
int num = j + (int)(Main.tile[i, j].frameY / 18 * -1);
while (k > 1)
{
k -= 2;
}
k *= -1;
k += i;
for (int l = k; l < k + 2; l++)
{
for (int m = num; m < num + 2; m++)
{
if (Main.tile[l, m] == null)
{
Main.tile[l, m] = new Tile();
}
int n;
for (n = (int)(Main.tile[l, m].frameX / 18); n > 1; n -= 2)
{
}
if (!Main.tile[l, m].active() || (int)Main.tile[l, m].type != type || n != l - k || (int)Main.tile[l, m].frameY != (m - num) * 18)
{
flag = true;
}
}
if (Main.tile[l, num + 2] == null)
{
Main.tile[l, num + 2] = new Tile();
}
if (!Main.tile[l, num + 2].active() || !Main.tileSolid[(int)Main.tile[l, num + 2].type])
{
flag = true;
}
}
if (flag)
{
int type2 = 48;
if (Main.tile[i, j].frameX >= 792)
{
type2 = 1532;
}
else
{
if (Main.tile[i, j].frameX >= 756)
{
type2 = 1531;
}
else
{
if (Main.tile[i, j].frameX >= 720)
{
type2 = 1530;
}
else
{
if (Main.tile[i, j].frameX >= 684)
{
type2 = 1529;
}
else
{
if (Main.tile[i, j].frameX >= 648)
{
type2 = 1528;
}
else
{
if (Main.tile[i, j].frameX >= 612)
{
type2 = 1298;
}
else
{
if (Main.tile[i, j].frameX >= 576)
{
type2 = 1142;
}
else
{
if (Main.tile[i, j].frameX >= 540)
{
type2 = 952;
}
else
{
if (Main.tile[i, j].frameX >= 504)
{
type2 = 914;
}
else
{
if (Main.tile[i, j].frameX >= 468)
{
type2 = 838;
}
else
{
if (Main.tile[i, j].frameX >= 432)
{
type2 = 831;
}
else
{
if (Main.tile[i, j].frameX >= 396)
{
type2 = 681;
}
else
{
if (Main.tile[i, j].frameX >= 360)
{
type2 = 680;
}
else
{
if (Main.tile[i, j].frameX >= 324)
{
type2 = 627;
}
else
{
if (Main.tile[i, j].frameX >= 288)
{
type2 = 626;
}
else
{
if (Main.tile[i, j].frameX >= 252)
{
type2 = 625;
}
else
{
if (Main.tile[i, j].frameX >= 216)
{
type2 = 348;
}
else
{
if (Main.tile[i, j].frameX >= 180)
{
type2 = 343;
}
else
{
if (Main.tile[i, j].frameX >= 108)
{
type2 = 328;
}
else
{
if (Main.tile[i, j].frameX >= 36)
{
type2 = 306;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
WorldGen.destroyObject = true;
for (int num2 = k; num2 < k + 2; num2++)
{
for (int num3 = num; num3 < num + 3; num3++)
{
if ((int)Main.tile[num2, num3].type == type && Main.tile[num2, num3].active())
{
Chest.DestroyChest(num2, num3);
WorldGen.KillTile(num2, num3, false, false, false);
}
}
}
Item.NewItem(i * 16, j * 16, 32, 32, type2, 1, false, 0, false);
WorldGen.destroyObject = false;
}
}
public static bool PlaceActuator(int i, int j)
{
if (!Main.tile[i, j].actuator())
{
Main.PlaySound(0, i * 16, j * 16, 1);
Main.tile[i, j].actuator(true);
return true;
}
return false;
}
public static bool KillActuator(int i, int j)
{
if (Main.tile[i, j].actuator())
{
Main.PlaySound(0, i * 16, j * 16, 1);
Main.tile[i, j].actuator(false);
if (Main.netMode != 1)
{
Item.NewItem(i * 16, j * 16, 16, 16, 849, 1, false, 0, false);
}
for (int k = 0; k < 5; k++)
{
Dust.NewDust(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16, 50, 0f, 0f, 0, default(Color), 1f);
}
return true;
}
return false;
}
public static bool PlaceWire(int i, int j)
{
if (!Main.tile[i, j].wire())
{
Main.PlaySound(0, i * 16, j * 16, 1);
Main.tile[i, j].wire(true);
return true;
}
return false;
}
public static bool KillWire(int i, int j)
{
if (Main.tile[i, j].wire())
{
Main.PlaySound(0, i * 16, j * 16, 1);
Main.tile[i, j].wire(false);
if (Main.netMode != 1)
{
Item.NewItem(i * 16, j * 16, 16, 16, 530, 1, false, 0, false);
}
for (int k = 0; k < 5; k++)
{
Dust.NewDust(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16, 50, 0f, 0f, 0, default(Color), 1f);
}
return true;
}
return false;
}
public static bool PlaceWire2(int i, int j)
{
if (!Main.tile[i, j].wire2())
{
Main.PlaySound(0, i * 16, j * 16, 1);
Main.tile[i, j].wire2(true);
return true;
}
return false;
}
public static bool KillWire2(int i, int j)
{
if (Main.tile[i, j].wire2())
{
Main.PlaySound(0, i * 16, j * 16, 1);
Main.tile[i, j].wire2(false);
if (Main.netMode != 1)
{
Item.NewItem(i * 16, j * 16, 16, 16, 530, 1, false, 0, false);
}
for (int k = 0; k < 5; k++)
{
Dust.NewDust(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16, 50, 0f, 0f, 0, default(Color), 1f);
}
return true;
}
return false;
}
public static bool PlaceWire3(int i, int j)
{
if (!Main.tile[i, j].wire3())
{
Main.PlaySound(0, i * 16, j * 16, 1);
Main.tile[i, j].wire3(true);
return true;
}
return false;
}
public static bool KillWire3(int i, int j)
{
if (Main.tile[i, j].wire3())
{
Main.PlaySound(0, i * 16, j * 16, 1);
Main.tile[i, j].wire3(false);
if (Main.netMode != 1)
{
Item.NewItem(i * 16, j * 16, 16, 16, 530, 1, false, 0, false);
}
for (int k = 0; k < 5; k++)
{
Dust.NewDust(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16, 50, 0f, 0f, 0, default(Color), 1f);
}
return true;
}
return false;
}
public static bool PlaceTile(int i, int j, int type, bool mute = false, bool forced = false, int plr = -1, int style = 0)
{
if (type >= 251)
{
return false;
}
bool result = false;
if (i >= 0 && j >= 0 && i < Main.maxTilesX && j < Main.maxTilesY)
{
if (Main.tile[i, j] == null)
{
Main.tile[i, j] = new Tile();
}
if (forced || Collision.EmptyTile(i, j, false) || !Main.tileSolid[type] || (type == 23 && Main.tile[i, j].type == 0 && Main.tile[i, j].active()) || (type == 2 && Main.tile[i, j].type == 0 && Main.tile[i, j].active()) || (type == 109 && Main.tile[i, j].type == 0 && Main.tile[i, j].active()) || (type == 60 && Main.tile[i, j].type == 59 && Main.tile[i, j].active()) || (type == 70 && Main.tile[i, j].type == 59 && Main.tile[i, j].active()))
{
if (type == 23 && (Main.tile[i, j].type != 0 || !Main.tile[i, j].active()))
{
return false;
}
if (type == 2 && (Main.tile[i, j].type != 0 || !Main.tile[i, j].active()))
{
return false;
}
if (type == 109 && (Main.tile[i, j].type != 0 || !Main.tile[i, j].active()))
{
return false;
}
if (type == 60 && (Main.tile[i, j].type != 59 || !Main.tile[i, j].active()))
{
return false;
}
if (type == 81)
{
if (Main.tile[i - 1, j] == null)
{
Main.tile[i - 1, j] = new Tile();
}
if (Main.tile[i + 1, j] == null)
{
Main.tile[i + 1, j] = new Tile();
}
if (Main.tile[i, j - 1] == null)
{
Main.tile[i, j - 1] = new Tile();
}
if (Main.tile[i, j + 1] == null)
{
Main.tile[i, j + 1] = new Tile();
}
if (Main.tile[i - 1, j].active() || Main.tile[i + 1, j].active() || Main.tile[i, j - 1].active())
{
return false;
}
if (!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() != 0)
{
return false;
}
}
if (Main.tile[i, j].liquid > 0)
{
if (type == 4)
{
if (style != 8 && style != 11)
{
return false;
}
}
else
{
if (type == 3 || type == 4 || type == 20 || type == 24 || type == 27 || type == 32 || type == 51 || type == 69 || type == 72 || type == 201)
{
return false;
}
}
}
Main.tile[i, j].halfBrick(false);
Main.tile[i, j].frameY = 0;
Main.tile[i, j].frameX = 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() == 0 && !Main.tile[i, j + 1].halfBrick() && ((Main.tile[i, j + 1].type == 2 && type == 3) || (Main.tile[i, j + 1].type == 23 && type == 24) || (Main.tile[i, j + 1].type == 199 && type == 201) || (Main.tile[i, j + 1].type == 78 && type == 3) || (Main.tile[i, j + 1].type == 109 && type == 110)))
{
if (type == 24 && WorldGen.genRand.Next(13) == 0)
{
Main.tile[i, j].active(true);
Main.tile[i, j].type = 32;
WorldGen.SquareTileFrame(i, j, true);
}
else
{
if (Main.tile[i, j + 1].type == 78)
{
Main.tile[i, j].active(true);
Main.tile[i, j].type = (byte)type;
Main.tile[i, j].frameX = (short)(WorldGen.genRand.Next(2) * 18 + 108);
}
else
{
if ((Main.tile[i, j].wall == 0 || Main.tile[i, j].wall == 106 || Main.tile[i, j].wall == 107 || (Main.tile[i, j].wall >= 63 && Main.tile[i, j].wall <= 70)) && (Main.tile[i, j + 1].wall == 0 || Main.tile[i, j + 1].wall == 106 || Main.tile[i, j + 1].wall == 107 || (Main.tile[i, j + 1].wall >= 63 && Main.tile[i, j + 1].wall <= 70)))
{
if (type == 3 && WorldGen.genRand.Next(35) == 0)
{
Main.tile[i, j].active(true);
Main.tile[i, j].type = (byte)type;
Main.tile[i, j].frameX = (short)(WorldGen.genRand.Next(2) * 18 + 162);
}
else
{
if (WorldGen.genRand.Next(50) == 0 || (type == 24 && WorldGen.genRand.Next(40) == 0))
{
Main.tile[i, j].active(true);
Main.tile[i, j].type = (byte)type;
Main.tile[i, j].frameX = 144;
}
else
{
if (WorldGen.genRand.Next(35) == 0)
{
Main.tile[i, j].active(true);
Main.tile[i, j].type = (byte)type;
Main.tile[i, j].frameX = (short)(WorldGen.genRand.Next(2) * 18 + 108);
}
else
{
Main.tile[i, j].active(true);
Main.tile[i, j].type = (byte)type;
Main.tile[i, j].frameX = (short)(WorldGen.genRand.Next(6) * 18);
}
}
}
}
}
}
}
}
else
{
if (type == 61)
{
if (j + 1 < Main.maxTilesY && Main.tile[i, j + 1].active() && Main.tile[i, j + 1].slope() == 0 && !Main.tile[i, j + 1].halfBrick() && Main.tile[i, j + 1].type == 60)
{
if (WorldGen.genRand.Next(16) == 0 && (double)j > Main.worldSurface)
{
Main.tile[i, j].active(true);
Main.tile[i, j].type = 69;
WorldGen.SquareTileFrame(i, j, true);
}
else
{
if (WorldGen.genRand.Next(60) == 0 && (double)j > Main.rockLayer)
{
Main.tile[i, j].active(true);
Main.tile[i, j].type = (byte)type;
Main.tile[i, j].frameX = 144;
}
else
{
if (WorldGen.genRand.Next(400) == 0 && (double)j > Main.rockLayer)
{
Main.tile[i, j].active(true);
Main.tile[i, j].type = (byte)type;
Main.tile[i, j].frameX = 162;
}
else
{
if (WorldGen.genRand.Next(15) == 0)
{
Main.tile[i, j].active(true);
Main.tile[i, j].type = (byte)type;
Main.tile[i, j].frameX = (short)(WorldGen.genRand.Next(2) * 18 + 108);
}
else
{
Main.tile[i, j].active(true);
Main.tile[i, j].type = (byte)type;
Main.tile[i, j].frameX = (short)(WorldGen.genRand.Next(6) * 18);
}
}
}
}
}
}
else
{
if (type == 71)
{
if (j + 1 < Main.maxTilesY && Main.tile[i, j + 1].active() && Main.tile[i, j + 1].slope() == 0 && !Main.tile[i, j + 1].halfBrick() && Main.tile[i, j + 1].type == 70)
{
Main.tile[i, j].active(true);
Main.tile[i, j].type = (byte)type;
Main.tile[i, j].frameX = (short)(WorldGen.genRand.Next(5) * 18);
}
}
else
{
if (type == 129)
{
if (WorldGen.SolidTile(i - 1, j) || WorldGen.SolidTile(i + 1, j) || WorldGen.SolidTile(i, j - 1) || WorldGen.SolidTile(i, j + 1))
{
Main.tile[i, j].active(true);
Main.tile[i, j].type = (byte)type;
Main.tile[i, j].frameX = (short)(WorldGen.genRand.Next(8) * 18);
WorldGen.SquareTileFrame(i, j, true);
}
}
else
{
if (type == 178)
{
if (WorldGen.SolidTile(i - 1, j) || WorldGen.SolidTile(i + 1, j) || WorldGen.SolidTile(i, j - 1) || WorldGen.SolidTile(i, j + 1))
{
Main.tile[i, j].active(true);
Main.tile[i, j].type = (byte)type;
Main.tile[i, j].frameX = (short)(style * 18);
Main.tile[i, j].frameY = (short)(WorldGen.genRand.Next(3) * 18);
WorldGen.SquareTileFrame(i, j, true);
}
}
else
{
if (type == 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)))
{
Main.tile[i, j].active(true);
Main.tile[i, j].type = (byte)type;
Main.tile[i, j].frameX = (short)(style * 18);
Main.tile[i, j].frameY = (short)(WorldGen.genRand.Next(3) * 18);
WorldGen.SquareTileFrame(i, j, true);
}
}
else
{
if (type == 132 || type == 138 || type == 142 || type == 143)
{
WorldGen.Place2x2(i, j, type);
}
else
{
if (type == 137)
{
Main.tile[i, j].active(true);
Main.tile[i, j].type = (byte)type;
Main.tile[i, j].frameY = (short)(18 * style);
}
else
{
if (type == 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() && Main.tile[i - 1, j].type != 10 && Main.tile[i - 1, j].slope() == 0 && (WorldGen.SolidTile(i - 1, j) || Main.tile[i - 1, j].type == 124 || (Main.tile[i - 1, j].type == 5 && Main.tile[i - 1, j - 1].type == 5 && Main.tile[i - 1, j + 1].type == 5))) || (Main.tile[i + 1, j].nactive() && !Main.tile[i + 1, j].halfBrick() && Main.tile[i + 1, j].type != 10 && Main.tile[i + 1, j].slope() == 0 && (WorldGen.SolidTile(i + 1, j) || Main.tile[i + 1, j].type == 124 || (Main.tile[i + 1, j].type == 5 && Main.tile[i + 1, j - 1].type == 5 && Main.tile[i + 1, j + 1].type == 5))) || (Main.tile[i, j + 1].nactive() && !Main.tile[i, j + 1].halfBrick() && WorldGen.SolidTile(i, j + 1) && Main.tile[i, j + 1].slope() == 0))
{
Main.tile[i, j].active(true);
Main.tile[i, j].type = (byte)type;
WorldGen.SquareTileFrame(i, j, true);
}
}
else
{
if (type == 4)
{
if (Main.tile[i - 1, j] == null)
{
Main.tile[i - 1, j] = new Tile();
}
if (Main.tile[i + 1, j] == null)
{
Main.tile[i + 1, j] = new Tile();
}
if (Main.tile[i, j + 1] == null)
{
Main.tile[i, j + 1] = new Tile();
}
if (Main.tile[i, j].wall > 0 || (Main.tile[i - 1, j].active() && Main.tile[i - 1, j].slope() == 0 && (Main.tileSolid[(int)Main.tile[i - 1, j].type] || Main.tile[i - 1, j].type == 124 || (Main.tile[i - 1, j].type == 5 && Main.tile[i - 1, j - 1].type == 5 && Main.tile[i - 1, j + 1].type == 5))) || (Main.tile[i + 1, j].active() && Main.tile[i + 1, j].slope() == 0 && (Main.tileSolid[(int)Main.tile[i + 1, j].type] || Main.tile[i + 1, j].type == 124 || (Main.tile[i + 1, j].type == 5 && Main.tile[i + 1, j - 1].type == 5 && Main.tile[i + 1, j + 1].type == 5))) || (Main.tile[i, j + 1].active() && Main.tileSolid[(int)Main.tile[i, j + 1].type] && !Main.tileSolidTop[(int)Main.tile[i, j + 1].type] && !Main.tile[i, j + 1].halfBrick() && Main.tile[i, j + 1].slope() == 0))
{
Main.tile[i, j].active(true);
Main.tile[i, j].type = (byte)type;
Main.tile[i, j].frameY = (short)(22 * style);
WorldGen.SquareTileFrame(i, j, true);
}
}
else
{
if (type == 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, true);
}
else
{
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, true);
}
}
else
{
if (type == 237 || type == 244)
{
WorldGen.Place3x2(i, j, type, 0);
}
else
{
if (type == 128)
{
WorldGen.PlaceMan(i, j, style);
WorldGen.SquareTileFrame(i, j, true);
}
else
{
if (type == 149)
{
if (WorldGen.SolidTile(i - 1, j) || WorldGen.SolidTile(i + 1, j) || WorldGen.SolidTile(i, j - 1) || WorldGen.SolidTile(i, j + 1))
{
Main.tile[i, j].frameX = (short)(18 * style);
Main.tile[i, j].active(true);
Main.tile[i, j].type = (byte)type;
WorldGen.SquareTileFrame(i, j, true);
}
}
else
{
if (type == 139)
{
WorldGen.PlaceMB(i, j, type, style);
WorldGen.SquareTileFrame(i, j, true);
}
else
{
if (type == 165)
{
WorldGen.PlaceTight(i, j, type, false);
WorldGen.SquareTileFrame(i, j, true);
}
else
{
if (type == 235)
{
WorldGen.Place3x1(i, j, type, 0);
WorldGen.SquareTileFrame(i, j, true);
}
else
{
if (type == 240)
{
WorldGen.Place3x3Wall(i, j, type, style);
}
else
{
if (type == 245)
{
WorldGen.Place2x3Wall(i, j, type, style);
}
else
{
if (type == 246)
{
WorldGen.Place3x2Wall(i, j, type, style);
}
else
{
if (type == 241)
{
WorldGen.Place4x3Wall(i, j, type, style);
}
else
{
if (type == 242)
{
WorldGen.Place6x4Wall(i, j, type, style);
}
else
{
if (type == 34 || type == 35 || type == 36 || type == 106 || type == 170 || type == 171 || type == 172 || type == 212 || type == 219 || type == 220 || type == 228 || type == 231 || type == 243 || type == 247)
{
WorldGen.Place3x3(i, j, type, style);
WorldGen.SquareTileFrame(i, j, true);
}
else
{
if (type == 13 || type == 33 || type == 49 || type == 50 || type == 78 || type == 174)
{
WorldGen.PlaceOnTable1x1(i, j, type, style);
WorldGen.SquareTileFrame(i, j, true);
}
else
{
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)
{
WorldGen.Place3x2(i, j, type, style);
WorldGen.SquareTileFrame(i, j, true);
}
else
{
if (type == 236)
{
WorldGen.PlaceJunglePlant(i, j, type, WorldGen.genRand.Next(3), 0);
WorldGen.SquareTileFrame(i, j, true);
}
else
{
if (type == 238)
{
WorldGen.PlaceJunglePlant(i, j, type, 0, 0);
WorldGen.SquareTileFrame(i, j, true);
}
else
{
if (type == 20)
{
if (Main.tile[i, j + 1] == null)
{
Main.tile[i, j + 1] = new Tile();
}
if (Main.tile[i, j + 1].active() && (Main.tile[i, j + 1].type == 2 || Main.tile[i, j + 1].type == 109 || Main.tile[i, j + 1].type == 147))
{
WorldGen.Place1x2(i, j, type, style);
WorldGen.SquareTileFrame(i, j, true);
}
}
else
{
if (type == 15 || type == 216)
{
if (Main.tile[i, j - 1] == null)
{
Main.tile[i, j - 1] = new Tile();
}
if (Main.tile[i, j] == null)
{
Main.tile[i, j] = new Tile();
}
WorldGen.Place1x2(i, j, type, style);
WorldGen.SquareTileFrame(i, j, true);
}
else
{
if (type == 227)
{
WorldGen.PlaceDye(i, j, style);
WorldGen.SquareTileFrame(i, j, true);
}
else
{
if (type == 16 || type == 18 || type == 29 || type == 103 || type == 134)
{
WorldGen.Place2x1(i, j, type, style);
WorldGen.SquareTileFrame(i, j, true);
}
else
{
if (type == 92 || type == 93)
{
WorldGen.Place1xX(i, j, type, 0);
WorldGen.SquareTileFrame(i, j, true);
}
else
{
if (type == 104 || type == 105)
{
WorldGen.Place2xX(i, j, type, style);
WorldGen.SquareTileFrame(i, j, true);
}
else
{
if (type == 17 || type == 77 || type == 133)
{
WorldGen.Place3x2(i, j, type, style);
WorldGen.SquareTileFrame(i, j, true);
}
else
{
if (type == 207)
{
WorldGen.Place2xX(i, j, type, style);
WorldGen.SquareTileFrame(i, j, true);
}
else
{
if (type == 21)
{
WorldGen.PlaceChest(i, j, type, false, style);
WorldGen.SquareTileFrame(i, j, true);
}
else
{
if (type == 91)
{
WorldGen.PlaceBanner(i, j, type, style);
WorldGen.SquareTileFrame(i, j, true);
}
else
{
if (type == 135 || type == 141 || type == 144 || type == 210 || type == 239)
{
WorldGen.Place1x1(i, j, type, style);
WorldGen.SquareTileFrame(i, j, true);
}
else
{
if (type == 101 || type == 102)
{
WorldGen.Place3x4(i, j, type, style);
WorldGen.SquareTileFrame(i, j, true);
}
else
{
if (type == 27)
{
WorldGen.PlaceSunflower(i, j, 27);
WorldGen.SquareTileFrame(i, j, true);
}
else
{
if (type == 28)
{
WorldGen.PlacePot(i, j, 28, Main.rand.Next(4));
WorldGen.SquareTileFrame(i, j, true);
}
else
{
if (type == 42)
{
WorldGen.Place1x2Top(i, j, type, style);
WorldGen.SquareTileFrame(i, j, true);
}
else
{
if (type == 55 || type == 85)
{
WorldGen.PlaceSign(i, j, type, style);
}
else
{
if (Main.tileAlch[type])
{
WorldGen.PlaceAlch(i, j, style);
}
else
{
if (type == 94 || type == 95 || type == 96 || type == 97 || type == 98 || type == 99 || type == 100 || type == 125 || type == 126 || type == 173)
{
WorldGen.Place2x2(i, j, type);
}
else
{
if (type == 79 || type == 90)
{
int direction = 1;
if (plr > -1)
{
direction = Main.player[plr].direction;
}
WorldGen.Place4x2(i, j, type, direction, style);
}
else
{
if (type == 209)
{
WorldGen.PlaceCannon(i, j, type, style);
}
else
{
if (type == 81)
{
Main.tile[i, j].frameX = (short)(26 * WorldGen.genRand.Next(6));
Main.tile[i, j].active(true);
Main.tile[i, j].type = (byte)type;
}
else
{
if (type == 19)
{
Main.tile[i, j].frameY = (short)(18 * style);
Main.tile[i, j].active(true);
Main.tile[i, j].type = (byte)type;
}
else
{
Main.tile[i, j].active(true);
Main.tile[i, j].type = (byte)type;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
if (Main.tile[i, j].active() && !mute)
{
WorldGen.SquareTileFrame(i, j, true);
result = true;
if (type == 127)
{
Main.PlaySound(2, i * 16, j * 16, 30);
}
else
{
Main.PlaySound(0, i * 16, j * 16, 1);
}
if (type == 22 || type == 140)
{
for (int k = 0; k < 3; k++)
{
Dust.NewDust(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16, 14, 0f, 0f, 0, default(Color), 1f);
}
}
}
}
}
return result;
}
public static void UpdateMech()
{
for (int i = WorldGen.numMechs - 1; i >= 0; i--)
{
WorldGen.mechTime[i]--;
if (Main.tile[WorldGen.mechX[i], WorldGen.mechY[i]].active() && Main.tile[WorldGen.mechX[i], WorldGen.mechY[i]].type == 144)
{
if (Main.tile[WorldGen.mechX[i], WorldGen.mechY[i]].frameY == 0)
{
WorldGen.mechTime[i] = 0;
}
else
{
int num = (int)(Main.tile[WorldGen.mechX[i], WorldGen.mechY[i]].frameX / 18);
if (num == 0)
{
num = 60;
}
else
{
if (num == 1)
{
num = 180;
}
else
{
if (num == 2)
{
num = 300;
}
}
}
if (Math.IEEERemainder((double)WorldGen.mechTime[i], (double)num) == 0.0)
{
WorldGen.mechTime[i] = 18000;
WorldGen.TripWire(WorldGen.mechX[i], WorldGen.mechY[i]);
}
}
}
if (WorldGen.mechTime[i] <= 0)
{
if (Main.tile[WorldGen.mechX[i], WorldGen.mechY[i]].active() && Main.tile[WorldGen.mechX[i], WorldGen.mechY[i]].type == 144)
{
Main.tile[WorldGen.mechX[i], WorldGen.mechY[i]].frameY = 0;
NetMessage.SendTileSquare(-1, WorldGen.mechX[i], WorldGen.mechY[i], 1);
}
for (int j = i; j < WorldGen.numMechs; j++)
{
WorldGen.mechX[j] = WorldGen.mechX[j + 1];
WorldGen.mechY[j] = WorldGen.mechY[j + 1];
WorldGen.mechTime[j] = WorldGen.mechTime[j + 1];
}
WorldGen.numMechs--;
}
}
}
public static bool checkMech(int i, int j, int time)
{
for (int k = 0; k < WorldGen.numMechs; k++)
{
if (WorldGen.mechX[k] == i && WorldGen.mechY[k] == j)
{
return false;
}
}
if (WorldGen.numMechs < WorldGen.maxMech - 1)
{
WorldGen.mechX[WorldGen.numMechs] = i;
WorldGen.mechY[WorldGen.numMechs] = j;
WorldGen.mechTime[WorldGen.numMechs] = time;
WorldGen.numMechs++;
return true;
}
return false;
}
public static void Teleport()
{
if (WorldGen.teleport[0].X < WorldGen.teleport[1].X + 3f && WorldGen.teleport[0].X > WorldGen.teleport[1].X - 3f && WorldGen.teleport[0].Y > WorldGen.teleport[1].Y - 3f && WorldGen.teleport[0].Y < WorldGen.teleport[1].Y)
{
return;
}
Rectangle[] array = new Rectangle[2];
array[0].X = (int)(WorldGen.teleport[0].X * 16f);
array[0].Width = 48;
array[0].Height = 48;
array[0].Y = (int)(WorldGen.teleport[0].Y * 16f - (float)array[0].Height);
array[1].X = (int)(WorldGen.teleport[1].X * 16f);
array[1].Width = 48;
array[1].Height = 48;
array[1].Y = (int)(WorldGen.teleport[1].Y * 16f - (float)array[1].Height);
for (int i = 0; i < 2; i++)
{
Vector2 value = new Vector2((float)(array[1].X - array[0].X), (float)(array[1].Y - array[0].Y));
if (i == 1)
{
value = new Vector2((float)(array[0].X - array[1].X), (float)(array[0].Y - array[1].Y));
}
for (int j = 0; j < 255; j++)
{
if (Main.player[j].active && !Main.player[j].dead && !Main.player[j].teleporting && array[i].Intersects(Main.player[j].getRect()))
{
Vector2 vector = Main.player[j].position + value;
Main.player[j].teleporting = true;
if (Main.netMode == 2)
{
ServerSock.CheckSection(j, vector);
}
Main.player[j].Teleport(vector, 0);
if (Main.netMode == 2)
{
NetMessage.SendData(65, -1, -1, "", 0, (float)j, vector.X, vector.Y, 0);
}
}
}
for (int k = 0; k < 200; k++)
{
if (Main.npc[k].active && !Main.npc[k].teleporting && Main.npc[k].lifeMax > 5 && !Main.npc[k].boss && !Main.npc[k].noTileCollide && array[i].Intersects(Main.npc[k].getRect()))
{
Main.npc[k].teleporting = true;
Main.npc[k].Teleport(Main.npc[k].position + value, 0);
}
}
}
for (int l = 0; l < 255; l++)
{
Main.player[l].teleporting = false;
}
for (int m = 0; m < 200; m++)
{
Main.npc[m].teleporting = false;
}
}
public static void hitSwitch(int i, int j)
{
if (Main.tile[i, j] == null)
{
return;
}
if (Main.tile[i, j].type == 135)
{
Main.PlaySound(28, i * 16, j * 16, 0);
WorldGen.TripWire(i, j);
return;
}
if (Main.tile[i, j].type == 136)
{
if (Main.tile[i, j].frameY == 0)
{
Main.tile[i, j].frameY = 18;
}
else
{
Main.tile[i, j].frameY = 0;
}
Main.PlaySound(28, i * 16, j * 16, 0);
WorldGen.TripWire(i, j);
return;
}
if (Main.tile[i, j].type == 144)
{
if (Main.tile[i, j].frameY == 0)
{
Main.tile[i, j].frameY = 18;
if (Main.netMode != 1)
{
WorldGen.checkMech(i, j, 18000);
}
}
else
{
Main.tile[i, j].frameY = 0;
}
Main.PlaySound(28, i * 16, j * 16, 0);
return;
}
if (Main.tile[i, j].type == 132)
{
short num = 36;
int num2 = (int)(Main.tile[i, j].frameX / 18 * -1);
int num3 = (int)(Main.tile[i, j].frameY / 18 * -1);
if (num2 < -1)
{
num2 += 2;
num = -36;
}
num2 += i;
num3 += j;
for (int k = num2; k < num2 + 2; k++)
{
for (int l = num3; l < num3 + 2; l++)
{
if (Main.tile[k, l].type == 132)
{
Tile expr_1B3 = Main.tile[k, l];
expr_1B3.frameX += num;
}
}
}
WorldGen.TileFrame(num2, num3, false, false);
Main.PlaySound(28, i * 16, j * 16, 0);
for (int m = num2; m < num2 + 2; m++)
{
for (int n = num3; n < num3 + 2; n++)
{
if (Main.tile[m, n].type == 132 && Main.tile[m, n].active() && (Main.tile[m, n].wire() || Main.tile[m, n].wire2() || Main.tile[m, n].wire3()))
{
WorldGen.TripWire(m, n);
return;
}
}
}
}
}
public static void TripWire(int i, int j)
{
if (Main.netMode == 1)
{
return;
}
WorldGen.teleport[0].X = -1f;
WorldGen.teleport[0].Y = -1f;
WorldGen.teleport[1].X = -1f;
WorldGen.teleport[1].Y = -1f;
WorldGen.numWire = 0;
WorldGen.numNoWire = 0;
WorldGen.numInPump = 0;
WorldGen.numOutPump = 0;
WorldGen.noWire(i, j);
WorldGen.hitWire(i, j, 1);
if (WorldGen.numInPump > 0 && WorldGen.numOutPump > 0)
{
WorldGen.xferWater();
}
WorldGen.numWire = 0;
WorldGen.numNoWire = 0;
WorldGen.numInPump = 0;
WorldGen.numOutPump = 0;
WorldGen.noWire(i, j);
WorldGen.hitWire(i, j, 2);
if (WorldGen.numInPump > 0 && WorldGen.numOutPump > 0)
{
WorldGen.xferWater();
}
WorldGen.numWire = 0;
WorldGen.numNoWire = 0;
WorldGen.numInPump = 0;
WorldGen.numOutPump = 0;
WorldGen.noWire(i, j);
WorldGen.hitWire(i, j, 3);
if (WorldGen.numInPump > 0 && WorldGen.numOutPump > 0)
{
WorldGen.xferWater();
}
if (WorldGen.teleport[0].X >= 0f && WorldGen.teleport[1].X >= 0f)
{
WorldGen.Teleport();
}
}
public static void xferWater()
{
for (int i = 0; i < WorldGen.numInPump; i++)
{
int num = WorldGen.inPumpX[i];
int num2 = WorldGen.inPumpY[i];
int liquid = (int)Main.tile[num, num2].liquid;
if (liquid > 0)
{
bool flag = Main.tile[num, num2].lava();
bool flag2 = Main.tile[num, num2].honey();
for (int j = 0; j < WorldGen.numOutPump; j++)
{
int num3 = WorldGen.outPumpX[j];
int num4 = WorldGen.outPumpY[j];
int liquid2 = (int)Main.tile[num3, num4].liquid;
if (liquid2 < 255)
{
bool flag3 = Main.tile[num3, num4].lava();
bool flag4 = Main.tile[num3, num4].honey();
if (liquid2 == 0)
{
flag3 = flag;
flag4 = flag2;
}
if (flag == flag3 && flag2 == flag4)
{
int num5 = liquid;
if (num5 + liquid2 > 255)
{
num5 = 255 - liquid2;
}
Tile expr_102 = Main.tile[num3, num4];
expr_102.liquid += (byte)num5;
Tile expr_11E = Main.tile[num, num2];
expr_11E.liquid -= (byte)num5;
liquid = (int)Main.tile[num, num2].liquid;
Main.tile[num3, num4].lava(flag);
Main.tile[num3, num4].honey(flag2);
WorldGen.SquareTileFrame(num3, num4, true);
if (Main.tile[num, num2].liquid == 0)
{
Main.tile[num, num2].lava(false);
WorldGen.SquareTileFrame(num, num2, true);
break;
}
}
}
}
WorldGen.SquareTileFrame(num, num2, true);
}
}
}
public static void noWire(int i, int j)
{
if (WorldGen.numNoWire >= WorldGen.maxWire - 1)
{
return;
}
WorldGen.noWireX[WorldGen.numNoWire] = i;
WorldGen.noWireY[WorldGen.numNoWire] = j;
WorldGen.numNoWire++;
}
public static bool DeActive(int i, int j)
{
if (!Main.tile[i, j].active() || !Main.tileSolid[(int)Main.tile[i, j].type])
{
return false;
}
if (Main.tile[i, j - 1].active() && (Main.tile[i, j - 1].type == 5 || Main.tile[i, j - 1].type == 21 || Main.tile[i, j - 1].type == 26 || Main.tile[i, j - 1].type == 77 || Main.tile[i, j - 1].type == 72))
{
return false;
}
Main.tile[i, j].inActive(true);
WorldGen.SquareTileFrame(i, j, false);
if (Main.netMode != 1)
{
NetMessage.SendTileSquare(-1, i, j, 1);
}
return true;
}
public static bool ReActive(int i, int j)
{
Main.tile[i, j].inActive(false);
WorldGen.SquareTileFrame(i, j, false);
if (Main.netMode != 1)
{
NetMessage.SendTileSquare(-1, i, j, 1);
}
return true;
}
public static void hitWire(int i, int j, int wireType)
{
if (i < 2 || i >= Main.maxTilesX - 2 || j < 2 || j >= Main.maxTilesY - 2)
{
return;
}
if (WorldGen.numWire >= WorldGen.maxWire - 1)
{
return;
}
if (wireType == 1 && !Main.tile[i, j].wire())
{
return;
}
if (wireType == 2 && !Main.tile[i, j].wire2())
{
return;
}
if (wireType == 3 && !Main.tile[i, j].wire3())
{
return;
}
for (int k = 0; k < WorldGen.numWire; k++)
{
if (WorldGen.wireX[k] == i && WorldGen.wireY[k] == j)
{
return;
}
}
WorldGen.wireX[WorldGen.numWire] = i;
WorldGen.wireY[WorldGen.numWire] = j;
WorldGen.numWire++;
int type = (int)Main.tile[i, j].type;
bool flag = true;
for (int l = 0; l < WorldGen.numNoWire; l++)
{
if (WorldGen.noWireX[l] == i && WorldGen.noWireY[l] == j)
{
flag = false;
}
}
if (flag && Main.tile[i, j].actuator() && (Main.tile[i, j].type != 226 || (double)j <= Main.worldSurface || NPC.downedPlantBoss))
{
if (Main.tile[i, j].inActive())
{
WorldGen.ReActive(i, j);
}
else
{
WorldGen.DeActive(i, j);
}
}
if (flag && Main.tile[i, j].active())
{
if (type == 144)
{
WorldGen.hitSwitch(i, j);
WorldGen.SquareTileFrame(i, j, true);
NetMessage.SendTileSquare(-1, i, j, 1);
}
else
{
if (type == 130)
{
if (Main.tile[i, j - 1] == null || !Main.tile[i, j - 1].active() || Main.tile[i, j - 1].type != 21)
{
Main.tile[i, j].type = 131;
WorldGen.SquareTileFrame(i, j, true);
NetMessage.SendTileSquare(-1, i, j, 1);
}
}
else
{
if (type == 131)
{
Main.tile[i, j].type = 130;
WorldGen.SquareTileFrame(i, j, true);
NetMessage.SendTileSquare(-1, i, j, 1);
}
else
{
if (type == 11)
{
if (WorldGen.CloseDoor(i, j, true))
{
NetMessage.SendData(19, -1, -1, "", 1, (float)i, (float)j, 0f, 0);
}
}
else
{
if (type == 10)
{
int num = 1;
if (Main.rand.Next(2) == 0)
{
num = -1;
}
if (!WorldGen.OpenDoor(i, j, num))
{
if (WorldGen.OpenDoor(i, j, -num))
{
NetMessage.SendData(19, -1, -1, "", 0, (float)i, (float)j, (float)(-(float)num), 0);
}
}
else
{
NetMessage.SendData(19, -1, -1, "", 0, (float)i, (float)j, (float)num, 0);
}
}
else
{
if (type == 216)
{
WorldGen.LaunchRocket(i, j);
WorldGen.noWire(i, j);
}
else
{
if (type == 235)
{
int num2 = i - (int)(Main.tile[i, j].frameX / 18);
if (WorldGen.teleport[0].X == -1f)
{
WorldGen.teleport[0].X = (float)num2;
WorldGen.teleport[0].Y = (float)j;
if (Main.tile[i, j].halfBrick())
{
Vector2[] expr_378_cp_0 = WorldGen.teleport;
int expr_378_cp_1 = 0;
expr_378_cp_0[expr_378_cp_1].Y = expr_378_cp_0[expr_378_cp_1].Y + 0.5f;
}
}
else
{
if (WorldGen.teleport[0].X != (float)num2 || WorldGen.teleport[0].Y != (float)j)
{
WorldGen.teleport[1].X = (float)num2;
WorldGen.teleport[1].Y = (float)j;
if (Main.tile[i, j].halfBrick())
{
Vector2[] expr_400_cp_0 = WorldGen.teleport;
int expr_400_cp_1 = 1;
expr_400_cp_0[expr_400_cp_1].Y = expr_400_cp_0[expr_400_cp_1].Y + 0.5f;
}
}
}
}
else
{
if (type == 4)
{
if (Main.tile[i, j].frameX < 66)
{
Tile expr_43B = Main.tile[i, j];
expr_43B.frameX += 66;
}
else
{
Tile expr_458 = Main.tile[i, j];
expr_458.frameX -= 66;
}
NetMessage.SendTileSquare(-1, i, j, 1);
}
else
{
if (type == 149)
{
if (Main.tile[i, j].frameX < 54)
{
Tile expr_49E = Main.tile[i, j];
expr_49E.frameX += 54;
}
else
{
Tile expr_4BB = Main.tile[i, j];
expr_4BB.frameX -= 54;
}
NetMessage.SendTileSquare(-1, i, j, 1);
}
else
{
if (type == 244)
{
int m;
for (m = (int)(Main.tile[i, j].frameX / 18); m >= 3; m -= 3)
{
}
int n;
for (n = (int)(Main.tile[i, j].frameY / 18); n >= 3; n -= 3)
{
}
int num3 = i - m;
int num4 = j - n;
int num5 = 54;
if (Main.tile[num3, num4].frameX >= 54)
{
num5 = -54;
}
for (int num6 = num3; num6 < num3 + 3; num6++)
{
for (int num7 = num4; num7 < num4 + 2; num7++)
{
WorldGen.noWire(num6, num7);
Main.tile[num6, num7].frameX = (short)((int)Main.tile[num6, num7].frameX + num5);
}
}
}
else
{
if (type == 42)
{
int num8;
for (num8 = (int)(Main.tile[i, j].frameY / 18); num8 >= 2; num8 -= 2)
{
}
int num9 = j - num8;
short num10 = 18;
if (Main.tile[i, j].frameX > 0)
{
num10 = -18;
}
Tile expr_60E = Main.tile[i, num9];
expr_60E.frameX += num10;
Tile expr_62C = Main.tile[i, num9 + 1];
expr_62C.frameX += num10;
WorldGen.noWire(i, num9);
WorldGen.noWire(i, num9 + 1);
NetMessage.SendTileSquare(-1, i, j, 2);
}
else
{
if (type == 93)
{
int num11 = j - (int)(Main.tile[i, j].frameY / 18);
short num12 = 18;
if (Main.tile[i, j].frameX > 0)
{
num12 = -18;
}
Tile expr_6A4 = Main.tile[i, num11];
expr_6A4.frameX += num12;
Tile expr_6C2 = Main.tile[i, num11 + 1];
expr_6C2.frameX += num12;
Tile expr_6E0 = Main.tile[i, num11 + 2];
expr_6E0.frameX += num12;
WorldGen.noWire(i, num11);
WorldGen.noWire(i, num11 + 1);
WorldGen.noWire(i, num11 + 2);
NetMessage.SendTileSquare(-1, i, num11 + 1, 3);
}
else
{
if (type == 126 || type == 100 || type == 95 || type == 173)
{
int num13 = j - (int)(Main.tile[i, j].frameY / 18);
int num14 = (int)(Main.tile[i, j].frameX / 18);
if (num14 > 1)
{
num14 -= 2;
}
num14 = i - num14;
short num15 = 36;
if (Main.tile[num14, num13].frameX > 0)
{
num15 = -36;
}
Tile expr_7A1 = Main.tile[num14, num13];
expr_7A1.frameX += num15;
Tile expr_7C0 = Main.tile[num14, num13 + 1];
expr_7C0.frameX += num15;
Tile expr_7DF = Main.tile[num14 + 1, num13];
expr_7DF.frameX += num15;
Tile expr_800 = Main.tile[num14 + 1, num13 + 1];
expr_800.frameX += num15;
WorldGen.noWire(num14, num13);
WorldGen.noWire(num14, num13 + 1);
WorldGen.noWire(num14 + 1, num13);
WorldGen.noWire(num14 + 1, num13 + 1);
NetMessage.SendTileSquare(-1, num14, num13, 3);
}
else
{
if (type == 34 || type == 35 || type == 36 || type == 170 || type == 171 || type == 172)
{
int num16 = j - (int)(Main.tile[i, j].frameY / 18);
int num17 = (int)(Main.tile[i, j].frameX / 18);
if (num17 > 2)
{
num17 -= 3;
}
num17 = i - num17;
short num18 = 54;
if (Main.tile[num17, num16].frameX > 0)
{
num18 = -54;
}
for (int num19 = num17; num19 < num17 + 3; num19++)
{
for (int num20 = num16; num20 < num16 + 3; num20++)
{
Tile expr_8EC = Main.tile[num19, num20];
expr_8EC.frameX += num18;
WorldGen.noWire(num19, num20);
}
}
NetMessage.SendTileSquare(-1, num17 + 1, num16 + 1, 3);
}
else
{
if (type == 33 || type == 174)
{
short num21 = 18;
if (Main.tile[i, j].frameX > 0)
{
num21 = -18;
}
Tile expr_969 = Main.tile[i, j];
expr_969.frameX += num21;
NetMessage.SendTileSquare(-1, i, j, 3);
}
else
{
if (type == 92)
{
int num22 = j - (int)(Main.tile[i, j].frameY / 18);
short num23 = 18;
if (Main.tile[i, j].frameX > 0)
{
num23 = -18;
}
Tile expr_9CF = Main.tile[i, num22];
expr_9CF.frameX += num23;
Tile expr_9ED = Main.tile[i, num22 + 1];
expr_9ED.frameX += num23;
Tile expr_A0B = Main.tile[i, num22 + 2];
expr_A0B.frameX += num23;
Tile expr_A29 = Main.tile[i, num22 + 3];
expr_A29.frameX += num23;
Tile expr_A47 = Main.tile[i, num22 + 4];
expr_A47.frameX += num23;
Tile expr_A65 = Main.tile[i, num22 + 5];
expr_A65.frameX += num23;
WorldGen.noWire(i, num22);
WorldGen.noWire(i, num22 + 1);
WorldGen.noWire(i, num22 + 2);
WorldGen.noWire(i, num22 + 3);
WorldGen.noWire(i, num22 + 4);
WorldGen.noWire(i, num22 + 5);
NetMessage.SendTileSquare(-1, i, num22 + 3, 7);
}
else
{
if (type == 137)
{
int num24 = (int)(Main.tile[i, j].frameY / 18);
if (num24 == 0 && WorldGen.checkMech(i, j, 180))
{
int num25 = -1;
if (Main.tile[i, j].frameX != 0)
{
num25 = 1;
}
float speedX = (float)(12 * num25);
int damage = 20;
int type2 = 98;
Vector2 vector = new Vector2((float)(i * 16 + 8), (float)(j * 16 + 7));
vector.X += (float)(10 * num25);
vector.Y += 2f;
Projectile.NewProjectile((float)((int)vector.X), (float)((int)vector.Y), speedX, 0f, type2, damage, 2f, Main.myPlayer, 0f, 0f);
}
if (num24 == 1 && WorldGen.checkMech(i, j, 180))
{
int num26 = -1;
if (Main.tile[i, j].frameX != 0)
{
num26 = 1;
}
float speedX2 = (float)(12 * num26);
int damage2 = 40;
int type3 = 184;
Vector2 vector2 = new Vector2((float)(i * 16 + 8), (float)(j * 16 + 7));
vector2.X += (float)(10 * num26);
vector2.Y += 2f;
Projectile.NewProjectile((float)((int)vector2.X), (float)((int)vector2.Y), speedX2, 0f, type3, damage2, 2f, Main.myPlayer, 0f, 0f);
}
if (num24 == 2 && WorldGen.checkMech(i, j, 180))
{
int num27 = -1;
if (Main.tile[i, j].frameX != 0)
{
num27 = 1;
}
float speedX3 = (float)(5 * num27);
int damage3 = 40;
int type4 = 187;
Vector2 vector3 = new Vector2((float)(i * 16 + 8), (float)(j * 16 + 7));
vector3.X += (float)(10 * num27);
vector3.Y += 2f;
Projectile.NewProjectile((float)((int)vector3.X), (float)((int)vector3.Y), speedX3, 0f, type4, damage3, 2f, Main.myPlayer, 0f, 0f);
}
if (num24 == 3 && WorldGen.checkMech(i, j, 240))
{
float speedX4 = (float)Main.rand.Next(-20, 21) * 0.05f;
float speedY = 4f + (float)Main.rand.Next(0, 21) * 0.05f;
int damage4 = 40;
int type5 = 185;
Vector2 vector4 = new Vector2((float)(i * 16 + 8), (float)(j * 16 + 16));
vector4.Y += 6f;
Projectile.NewProjectile((float)((int)vector4.X), (float)((int)vector4.Y), speedX4, speedY, type5, damage4, 2f, Main.myPlayer, 0f, 0f);
}
if (num24 == 4 && WorldGen.checkMech(i, j, 90))
{
float speedX5 = 0f;
float speedY2 = 8f;
int damage5 = 60;
int type6 = 186;
Vector2 vector5 = new Vector2((float)(i * 16 + 8), (float)(j * 16 + 16));
vector5.Y += 10f;
Projectile.NewProjectile((float)((int)vector5.X), (float)((int)vector5.Y), speedX5, speedY2, type6, damage5, 2f, Main.myPlayer, 0f, 0f);
}
}
else
{
if (type == 139)
{
WorldGen.SwitchMB(i, j);
}
else
{
if (type == 207)
{
WorldGen.SwitchFountain(i, j);
}
else
{
if (type == 141)
{
WorldGen.KillTile(i, j, false, false, true);
NetMessage.SendTileSquare(-1, i, j, 1);
Projectile.NewProjectile((float)(i * 16 + 8), (float)(j * 16 + 8), 0f, 0f, 108, 250, 10f, Main.myPlayer, 0f, 0f);
}
else
{
if (type == 210)
{
WorldGen.ExplodeMine(i, j);
}
else
{
if (type == 142 || type == 143)
{
int num28 = j - (int)(Main.tile[i, j].frameY / 18);
int num29 = (int)(Main.tile[i, j].frameX / 18);
if (num29 > 1)
{
num29 -= 2;
}
num29 = i - num29;
WorldGen.noWire(num29, num28);
WorldGen.noWire(num29, num28 + 1);
WorldGen.noWire(num29 + 1, num28);
WorldGen.noWire(num29 + 1, num28 + 1);
if (type == 142)
{
for (int num30 = 0; num30 < 4; num30++)
{
if (WorldGen.numInPump >= WorldGen.maxPump - 1)
{
break;
}
int num31;
int num32;
if (num30 == 0)
{
num31 = num29;
num32 = num28 + 1;
}
else
{
if (num30 == 1)
{
num31 = num29 + 1;
num32 = num28 + 1;
}
else
{
if (num30 == 2)
{
num31 = num29;
num32 = num28;
}
else
{
num31 = num29 + 1;
num32 = num28;
}
}
}
WorldGen.inPumpX[WorldGen.numInPump] = num31;
WorldGen.inPumpY[WorldGen.numInPump] = num32;
WorldGen.numInPump++;
}
}
else
{
for (int num33 = 0; num33 < 4; num33++)
{
if (WorldGen.numOutPump >= WorldGen.maxPump - 1)
{
break;
}
int num34;
int num35;
if (num33 == 0)
{
num34 = num29;
num35 = num28 + 1;
}
else
{
if (num33 == 1)
{
num34 = num29 + 1;
num35 = num28 + 1;
}
else
{
if (num33 == 2)
{
num34 = num29;
num35 = num28;
}
else
{
num34 = num29 + 1;
num35 = num28;
}
}
}
WorldGen.outPumpX[WorldGen.numOutPump] = num34;
WorldGen.outPumpY[WorldGen.numOutPump] = num35;
WorldGen.numOutPump++;
}
}
}
else
{
if (type == 105)
{
int num36 = j - (int)(Main.tile[i, j].frameY / 18);
int num37 = (int)(Main.tile[i, j].frameX / 18);
int num38 = 0;
while (num37 >= 2)
{
num37 -= 2;
num38++;
}
num37 = i - num37;
WorldGen.noWire(num37, num36);
WorldGen.noWire(num37, num36 + 1);
WorldGen.noWire(num37, num36 + 2);
WorldGen.noWire(num37 + 1, num36);
WorldGen.noWire(num37 + 1, num36 + 1);
WorldGen.noWire(num37 + 1, num36 + 2);
int num39 = num37 * 16 + 16;
int num40 = (num36 + 3) * 16;
int num41 = -1;
if (num38 == 4)
{
if (WorldGen.checkMech(i, j, 30) && NPC.MechSpawn((float)num39, (float)num40, 1))
{
num41 = NPC.NewNPC(num39, num40 - 12, 1, 0);
}
}
else
{
if (num38 == 7)
{
if (WorldGen.checkMech(i, j, 30) && NPC.MechSpawn((float)num39, (float)num40, 49))
{
num41 = NPC.NewNPC(num39 - 4, num40 - 6, 49, 0);
}
}
else
{
if (num38 == 8)
{
if (WorldGen.checkMech(i, j, 30) && NPC.MechSpawn((float)num39, (float)num40, 55))
{
num41 = NPC.NewNPC(num39, num40 - 12, 55, 0);
}
}
else
{
if (num38 == 9)
{
if (WorldGen.checkMech(i, j, 30) && NPC.MechSpawn((float)num39, (float)num40, 46))
{
num41 = NPC.NewNPC(num39, num40 - 12, 46, 0);
}
}
else
{
if (num38 == 10)
{
if (WorldGen.checkMech(i, j, 30) && NPC.MechSpawn((float)num39, (float)num40, 21))
{
num41 = NPC.NewNPC(num39, num40, 21, 0);
}
}
else
{
if (num38 == 18)
{
if (WorldGen.checkMech(i, j, 30) && NPC.MechSpawn((float)num39, (float)num40, 67))
{
num41 = NPC.NewNPC(num39, num40 - 12, 67, 0);
}
}
else
{
if (num38 == 23)
{
if (WorldGen.checkMech(i, j, 30) && NPC.MechSpawn((float)num39, (float)num40, 63))
{
num41 = NPC.NewNPC(num39, num40 - 12, 63, 0);
}
}
else
{
if (num38 == 27)
{
if (WorldGen.checkMech(i, j, 30) && NPC.MechSpawn((float)num39, (float)num40, 85))
{
num41 = NPC.NewNPC(num39 - 9, num40, 85, 0);
}
}
else
{
if (num38 == 28)
{
if (WorldGen.checkMech(i, j, 30) && NPC.MechSpawn((float)num39, (float)num40, 74))
{
num41 = NPC.NewNPC(num39, num40 - 12, 74, 0);
}
}
else
{
if (num38 == 42)
{
if (WorldGen.checkMech(i, j, 30) && NPC.MechSpawn((float)num39, (float)num40, 58))
{
num41 = NPC.NewNPC(num39, num40 - 12, 58, 0);
}
}
else
{
if (num38 == 37)
{
if (WorldGen.checkMech(i, j, 600) && Item.MechSpawn((float)num39, (float)num40, 58))
{
Item.NewItem(num39, num40 - 16, 0, 0, 58, 1, false, 0, false);
}
}
else
{
if (num38 == 2)
{
if (WorldGen.checkMech(i, j, 600) && Item.MechSpawn((float)num39, (float)num40, 184))
{
Item.NewItem(num39, num40 - 16, 0, 0, 184, 1, false, 0, false);
}
}
else
{
if (num38 == 17)
{
if (WorldGen.checkMech(i, j, 600) && Item.MechSpawn((float)num39, (float)num40, 166))
{
Item.NewItem(num39, num40 - 20, 0, 0, 166, 1, false, 0, false);
}
}
else
{
if (num38 == 40)
{
if (WorldGen.checkMech(i, j, 300))
{
int[] array = new int[10];
int num42 = 0;
for (int num43 = 0; num43 < 200; num43++)
{
if (Main.npc[num43].active && (Main.npc[num43].type == 17 || Main.npc[num43].type == 19 || Main.npc[num43].type == 22 || Main.npc[num43].type == 38 || Main.npc[num43].type == 54 || Main.npc[num43].type == 107 || Main.npc[num43].type == 108 || Main.npc[num43].type == 142 || Main.npc[num43].type == 160 || Main.npc[num43].type == 207 || Main.npc[num43].type == 209 || Main.npc[num43].type == 227 || Main.npc[num43].type == 228 || Main.npc[num43].type == 229))
{
array[num42] = num43;
num42++;
if (num42 >= 9)
{
break;
}
}
}
if (num42 > 0)
{
int num44 = array[Main.rand.Next(num42)];
Main.npc[num44].position.X = (float)(num39 - Main.npc[num44].width / 2);
Main.npc[num44].position.Y = (float)(num40 - Main.npc[num44].height - 1);
NetMessage.SendData(23, -1, -1, "", num44, 0f, 0f, 0f, 0);
}
}
}
else
{
if (num38 == 41 && WorldGen.checkMech(i, j, 300))
{
int[] array2 = new int[10];
int num45 = 0;
for (int num46 = 0; num46 < 200; num46++)
{
if (Main.npc[num46].active && (Main.npc[num46].type == 18 || Main.npc[num46].type == 20 || Main.npc[num46].type == 124 || Main.npc[num46].type == 178 || Main.npc[num46].type == 208))
{
array2[num45] = num46;
num45++;
if (num45 >= 9)
{
break;
}
}
}
if (num45 > 0)
{
int num47 = array2[Main.rand.Next(num45)];
Main.npc[num47].position.X = (float)(num39 - Main.npc[num47].width / 2);
Main.npc[num47].position.Y = (float)(num40 - Main.npc[num47].height - 1);
NetMessage.SendData(23, -1, -1, "", num47, 0f, 0f, 0f, 0);
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
if (num41 >= 0)
{
Main.npc[num41].value = 0f;
Main.npc[num41].npcSlots = 0f;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
WorldGen.hitWire(i - 1, j, wireType);
WorldGen.hitWire(i + 1, j, wireType);
WorldGen.hitWire(i, j - 1, wireType);
WorldGen.hitWire(i, j + 1, wireType);
}
public static void KillWall(int i, int j, bool fail = false)
{
if (i >= 0 && j >= 0 && i < Main.maxTilesX && j < Main.maxTilesY)
{
if (Main.tile[i, j] == null)
{
Main.tile[i, j] = new Tile();
}
if (Main.tile[i, j].wall > 0)
{
if (Main.tile[i, j].wall == 21)
{
Main.PlaySound(13, i * 16, j * 16, 1);
}
else
{
if (Main.tile[i, j].wall >= 63 && Main.tile[i, j].wall <= 70)
{
Main.PlaySound(6, i * 16, j * 16, 1);
}
else
{
Main.PlaySound(0, i * 16, j * 16, 1);
}
}
int num = 10;
if (fail)
{
num = 3;
}
for (int k = 0; k < num; k++)
{
int type = 0;
if (Main.tile[i, j].wall == 1 || Main.tile[i, j].wall == 5 || Main.tile[i, j].wall == 6 || Main.tile[i, j].wall == 7 || Main.tile[i, j].wall == 107 || Main.tile[i, j].wall == 8 || Main.tile[i, j].wall == 9 || (Main.tile[i, j].wall >= 48 && Main.tile[i, j].wall <= 53) || (Main.tile[i, j].wall >= 54 && Main.tile[i, j].wall <= 58))
{
type = 1;
}
if (Main.tile[i, j].wall >= 94 && Main.tile[i, j].wall <= 105)
{
type = 1;
}
if (Main.tile[i, j].wall == 3)
{
if (WorldGen.genRand.Next(2) == 0)
{
type = 14;
}
else
{
type = 1;
}
}
if (Main.tile[i, j].wall == 35)
{
type = 37;
}
if (Main.tile[i, j].wall == 4 || Main.tile[i, j].wall == 106)
{
type = 7;
}
if (Main.tile[i, j].wall == 12)
{
type = 9;
}
if (Main.tile[i, j].wall == 10)
{
type = 10;
}
if (Main.tile[i, j].wall == 11)
{
type = 11;
}
if (Main.tile[i, j].wall == 21)
{
type = 13;
}
if (Main.tile[i, j].wall == 34)
{
type = 32;
}
if (Main.tile[i, j].wall == 22 || Main.tile[i, j].wall == 28)
{
type = 51;
}
if (Main.tile[i, j].wall == 23)
{
type = 38;
}
if (Main.tile[i, j].wall == 24)
{
type = 36;
}
if (Main.tile[i, j].wall == 25)
{
type = 48;
}
if (Main.tile[i, j].wall == 26 || Main.tile[i, j].wall == 30)
{
type = 49;
}
if (Main.tile[i, j].wall == 29 || Main.tile[i, j].wall == 32)
{
type = 50;
}
if (Main.tile[i, j].wall == 31)
{
type = 51;
}
if (Main.tile[i, j].wall == 14 || Main.tile[i, j].wall == 20)
{
type = 109;
}
if (Main.tile[i, j].wall >= 88 && Main.tile[i, j].wall <= 93)
{
type = (int)(86 + Main.tile[i, j].wall - 88);
if (Main.tile[i, j].wall == 93)
{
type = WorldGen.genRand.Next(88, 94);
}
}
if (Main.tile[i, j].wall == 33)
{
type = 14;
}
if (Main.tile[i, j].wall == 41)
{
type = 77;
}
if (Main.tile[i, j].wall == 42)
{
type = 78;
}
if (Main.tile[i, j].wall == 43)
{
type = 78;
}
if (Main.tile[i, j].wall == 43)
{
type = 78;
}
if (Main.tile[i, j].wall == 36)
{
type = 26;
}
if (Main.tile[i, j].wall == 37)
{
type = 32;
}
if (Main.tile[i, j].wall == 38)
{
type = 2;
}
if (Main.tile[i, j].wall == 39)
{
type = 1;
}
if (Main.tile[i, j].wall == 40)
{
type = 51;
}
if (Main.tile[i, j].wall == 45)
{
type = 81;
}
if (Main.tile[i, j].wall == 46)
{
type = 83;
}
if (Main.tile[i, j].wall == 47)
{
type = 84;
}
if (Main.tile[i, j].wall == 85)
{
type = 126;
}
if (Main.tile[i, j].wall == 59)
{
type = 0;
}
if (Main.tile[i, j].wall == 60)
{
type = 1;
}
if (Main.tile[i, j].wall == 61)
{
type = 0;
}
if (Main.tile[i, j].wall == 62)
{
type = 0;
}
if (Main.tile[i, j].wall == 63)
{
type = 3;
}
if (Main.tile[i, j].wall == 65)
{
type = 3;
}
if (Main.tile[i, j].wall == 66)
{
type = 3;
}
if (Main.tile[i, j].wall == 68)
{
type = 3;
}
if (Main.tile[i, j].wall == 64)
{
type = 40;
}
if (Main.tile[i, j].wall == 67)
{
type = 40;
}
if (Main.tile[i, j].wall == 84)
{
type = 80;
}
if (Main.tile[i, j].wall == 71)
{
type = 80;
}
if (Main.tile[i, j].wall == 71)
{
type = 80;
}
if (Main.tile[i, j].wall == 109)
{
type = 144;
}
if (Main.tile[i, j].wall == 110)
{
type = 145;
}
if (Main.tile[i, j].wall == 111)
{
type = 146;
}
if (Main.tile[i, j].wall == 86 || Main.tile[i, j].wall == 108)
{
type = 147;
}
if (Main.tile[i, j].wall == 87)
{
type = 148;
}
if (Main.tile[i, j].wall == 83)
{
type = 117;
if (WorldGen.genRand.Next(2) == 0)
{
type = 1;
}
}
if (Main.tile[i, j].wall == 81)
{
type = 123;
}
if (Main.tile[i, j].wall == 72)
{
type = 40;
}
if (Main.tile[i, j].wall == 73)
{
type = 16;
}
if (Main.tile[i, j].wall == 74 || Main.tile[i, j].wall == 80)
{
type = 26;
}
if (Main.tile[i, j].wall == 75)
{
type = 26;
}
if (Main.tile[i, j].wall == 76)
{
type = 4;
}
if (Main.tile[i, j].wall == 77 || Main.tile[i, j].wall == 81)
{
type = 5;
}
if (Main.tile[i, j].wall == 78)
{
type = 7;
}
if (Main.tile[i, j].wall == 79)
{
type = 37;
}
if (Main.tile[i, j].wall == 82)
{
type = 36;
}
if (Main.tile[i, j].wall == 69)
{
if (WorldGen.genRand.Next(2) == 0)
{
type = 14;
}
else
{
type = 17;
}
}
if (Main.tile[i, j].wall == 70)
{
type = 47;
}
if (Main.tile[i, j].wall == 27)
{
if (WorldGen.genRand.Next(2) == 0)
{
type = 7;
}
else
{
type = 1;
}
}
if (Main.tile[i, j].wall == 44)
{
int num2 = Dust.NewDust(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16, 66, 0f, 0f, 100, new Color(Main.DiscoR, Main.DiscoG, Main.DiscoB), 0.75f);
Main.dust[num2].noGravity = true;
}
else
{
if (Main.tile[i, j].wall == 76)
{
Dust.NewDust(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16, type, 0f, 0f, 75, new Color(0, 80, 255, 100), 0.75f);
}
else
{
Dust.NewDust(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16, type, 0f, 0f, 0, default(Color), 1f);
}
}
}
if (fail)
{
WorldGen.SquareWallFrame(i, j, true);
return;
}
int num3 = 0;
if (Main.tile[i, j].wall == 1)
{
num3 = 26;
}
if (Main.tile[i, j].wall == 4)
{
num3 = 93;
}
if (Main.tile[i, j].wall == 5)
{
num3 = 130;
}
if (Main.tile[i, j].wall == 6)
{
num3 = 132;
}
if (Main.tile[i, j].wall == 7)
{
num3 = 135;
}
if (Main.tile[i, j].wall == 8)
{
num3 = 138;
}
if (Main.tile[i, j].wall == 9)
{
num3 = 140;
}
if (Main.tile[i, j].wall == 10)
{
num3 = 142;
}
if (Main.tile[i, j].wall == 11)
{
num3 = 144;
}
if (Main.tile[i, j].wall == 12)
{
num3 = 146;
}
if (Main.tile[i, j].wall == 14)
{
num3 = 330;
}
if (Main.tile[i, j].wall == 16)
{
num3 = 30;
}
if (Main.tile[i, j].wall == 17)
{
num3 = 135;
}
if (Main.tile[i, j].wall == 18)
{
num3 = 138;
}
if (Main.tile[i, j].wall == 19)
{
num3 = 140;
}
if (Main.tile[i, j].wall == 20)
{
num3 = 330;
}
if (Main.tile[i, j].wall == 21)
{
num3 = 392;
}
if (Main.tile[i, j].wall == 86 || Main.tile[i, j].wall == 108)
{
num3 = 1126;
}
if (Main.tile[i, j].wall == 22)
{
num3 = 417;
}
if (Main.tile[i, j].wall == 23)
{
num3 = 418;
}
if (Main.tile[i, j].wall == 24)
{
num3 = 419;
}
if (Main.tile[i, j].wall == 25)
{
num3 = 420;
}
if (Main.tile[i, j].wall == 26)
{
num3 = 421;
}
if (Main.tile[i, j].wall == 29)
{
num3 = 587;
}
if (Main.tile[i, j].wall == 30)
{
num3 = 592;
}
if (Main.tile[i, j].wall == 31)
{
num3 = 595;
}
if (Main.tile[i, j].wall == 32)
{
num3 = 605;
}
if (Main.tile[i, j].wall == 33)
{
num3 = 606;
}
if (Main.tile[i, j].wall == 34)
{
num3 = 608;
}
if (Main.tile[i, j].wall == 35)
{
num3 = 610;
}
if (Main.tile[i, j].wall == 36)
{
num3 = 615;
}
if (Main.tile[i, j].wall == 37)
{
num3 = 616;
}
if (Main.tile[i, j].wall == 38)
{
num3 = 617;
}
if (Main.tile[i, j].wall == 39)
{
num3 = 618;
}
if (Main.tile[i, j].wall == 41)
{
num3 = 622;
}
if (Main.tile[i, j].wall == 42)
{
num3 = 623;
}
if (Main.tile[i, j].wall == 43)
{
num3 = 624;
}
if (Main.tile[i, j].wall == 44)
{
num3 = 663;
}
if (Main.tile[i, j].wall == 45)
{
num3 = 720;
}
if (Main.tile[i, j].wall == 46)
{
num3 = 721;
}
if (Main.tile[i, j].wall == 47)
{
num3 = 722;
}
if (Main.tile[i, j].wall == 66)
{
num3 = 745;
}
if (Main.tile[i, j].wall == 67)
{
num3 = 746;
}
if (Main.tile[i, j].wall == 68)
{
num3 = 747;
}
if (Main.tile[i, j].wall == 84)
{
num3 = 884;
}
if (Main.tile[i, j].wall == 72)
{
num3 = 750;
}
if (Main.tile[i, j].wall == 73)
{
num3 = 752;
}
if (Main.tile[i, j].wall == 74)
{
num3 = 764;
}
if (Main.tile[i, j].wall == 85)
{
num3 = 927;
}
if (Main.tile[i, j].wall == 75)
{
num3 = 768;
}
if (Main.tile[i, j].wall == 76)
{
num3 = 769;
}
if (Main.tile[i, j].wall == 82)
{
num3 = 825;
}
if (Main.tile[i, j].wall == 27)
{
num3 = 479;
}
if (Main.tile[i, j].wall == 106)
{
num3 = 1447;
}
if (Main.tile[i, j].wall == 107)
{
num3 = 1448;
}
if (Main.tile[i, j].wall == 109)
{
num3 = 1590;
}
if (Main.tile[i, j].wall == 110)
{
num3 = 1592;
}
if (Main.tile[i, j].wall == 111)
{
num3 = 1594;
}
if (Main.tile[i, j].wall == 78)
{
num3 = 1723;
}
if (Main.tile[i, j].wall == 87 || Main.tile[i, j].wall == 112)
{
num3 = 1102;
}
if (Main.tile[i, j].wall == 94 || Main.tile[i, j].wall == 100)
{
num3 = 1378;
}
if (Main.tile[i, j].wall == 95 || Main.tile[i, j].wall == 101)
{
num3 = 1379;
}
if (Main.tile[i, j].wall == 96 || Main.tile[i, j].wall == 102)
{
num3 = 1380;
}
if (Main.tile[i, j].wall == 97 || Main.tile[i, j].wall == 103)
{
num3 = 1381;
}
if (Main.tile[i, j].wall == 98 || Main.tile[i, j].wall == 104)
{
num3 = 1382;
}
if (Main.tile[i, j].wall == 99 || Main.tile[i, j].wall == 105)
{
num3 = 1383;
}
if (Main.tile[i, j].wall >= 88 && Main.tile[i, j].wall <= 93)
{
num3 = 1267 + (int)Main.tile[i, j].wall - 88;
}
if (num3 > 0)
{
Item.NewItem(i * 16, j * 16, 16, 16, num3, 1, false, 0, false);
}
Main.tile[i, j].wall = 0;
Main.tile[i, j].wallColor(0);
WorldGen.SquareWallFrame(i, j, true);
if (Main.tile[i, j].type == 240 || Main.tile[i, j].type == 241 || Main.tile[i, j].type == 242 || Main.tile[i, j].type == 245 || Main.tile[i, j].type == 246 || Main.tile[i, j].type == 4)
{
WorldGen.TileFrame(i, j, false, false);
}
}
}
}
public static void LaunchRocket(int x, int y)
{
int i = (int)Main.tile[x, y].frameY;
int num = 0;
while (i >= 40)
{
i -= 40;
num++;
}
if (i == 18)
{
y--;
}
Vector2 vector = new Vector2((float)(x * 16 + 8), (float)(y * 16 + 4));
int type = 167 + num;
int damage = 150;
int num2 = 7;
Projectile.NewProjectile(vector.X, vector.Y + 2f, 0f, -8f, type, damage, (float)num2, Main.myPlayer, 0f, 0f);
Main.tile[x, y].active(false);
Main.tile[x, y + 1].active(false);
NetMessage.SendTileSquare(-1, x - 1, y, 3);
}
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)
{
if (Main.tile[i, j] == null)
{
Main.tile[i, j] = new Tile();
}
if (Main.tile[i, j].active())
{
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 == 5 && Main.tile[i, j].type != 5) || (Main.tile[i, j - 1].type == 21 && Main.tile[i, j].type != 21) || (Main.tile[i, j - 1].type == 26 && Main.tile[i, j].type != 26) || (Main.tile[i, j - 1].type == 72 && Main.tile[i, j].type != 72) || (Main.tile[i, j - 1].type == 12 && Main.tile[i, j].type != 12)) && (Main.tile[i, j - 1].type != 5 || ((Main.tile[i, j - 1].frameX != 66 || Main.tile[i, j - 1].frameY < 0 || Main.tile[i, j - 1].frameY > 44) && (Main.tile[i, j - 1].frameX != 88 || Main.tile[i, j - 1].frameY < 66 || Main.tile[i, j - 1].frameY > 110) && Main.tile[i, j - 1].frameY < 198)))
{
return;
}
if (Main.tile[i, j].type == 10 && Main.tile[i, j].frameY >= 594 && Main.tile[i, j].frameY <= 646)
{
fail = true;
}
if (!effectOnly && !WorldGen.stopDrops)
{
if (Main.tile[i, j].type == 127)
{
Main.PlaySound(2, i * 16, j * 16, 27);
}
else
{
if (Main.tile[i, j].type == 147 || Main.tile[i, j].type == 224)
{
Main.PlaySound(2, i * 16, j * 16, WorldGen.genRand.Next(48, 50));
}
else
{
if (Main.tile[i, j].type == 161 || Main.tile[i, j].type == 163 || Main.tile[i, j].type == 164 || Main.tile[i, j].type == 200)
{
Main.PlaySound(2, i * 16, j * 16, 50);
}
else
{
if (Main.tile[i, j].type == 3 || Main.tile[i, j].type == 110)
{
Main.PlaySound(6, i * 16, j * 16, 1);
if (Main.tile[i, j].frameX == 144)
{
Item.NewItem(i * 16, j * 16, 16, 16, 5, 1, false, 0, false);
}
}
else
{
if (Main.tile[i, j].type == 24)
{
Main.PlaySound(6, i * 16, j * 16, 1);
if (Main.tile[i, j].frameX == 144)
{
Item.NewItem(i * 16, j * 16, 16, 16, 60, 1, false, 0, false);
}
}
else
{
if (Main.tileAlch[(int)Main.tile[i, j].type] || Main.tile[i, j].type == 32 || Main.tile[i, j].type == 51 || Main.tile[i, j].type == 52 || Main.tile[i, j].type == 61 || Main.tile[i, j].type == 62 || Main.tile[i, j].type == 69 || Main.tile[i, j].type == 71 || Main.tile[i, j].type == 73 || Main.tile[i, j].type == 74 || Main.tile[i, j].type == 113 || Main.tile[i, j].type == 115 || Main.tile[i, j].type == 184 || Main.tile[i, j].type == 192 || Main.tile[i, j].type == 205 || Main.tile[i, j].type == 233)
{
Main.PlaySound(6, i * 16, j * 16, 1);
}
else
{
if (Main.tile[i, j].type == 201)
{
Main.PlaySound(6, i * 16, j * 16, 1);
}
else
{
if (Main.tile[i, j].type == 1 || Main.tile[i, j].type == 6 || Main.tile[i, j].type == 7 || Main.tile[i, j].type == 8 || Main.tile[i, j].type == 9 || Main.tile[i, j].type == 22 || Main.tile[i, j].type == 140 || Main.tile[i, j].type == 25 || Main.tile[i, j].type == 37 || Main.tile[i, j].type == 38 || Main.tile[i, j].type == 39 || Main.tile[i, j].type == 41 || Main.tile[i, j].type == 43 || Main.tile[i, j].type == 44 || Main.tile[i, j].type == 45 || Main.tile[i, j].type == 46 || Main.tile[i, j].type == 47 || Main.tile[i, j].type == 48 || Main.tile[i, j].type == 56 || Main.tile[i, j].type == 58 || Main.tile[i, j].type == 63 || Main.tile[i, j].type == 64 || Main.tile[i, j].type == 65 || Main.tile[i, j].type == 66 || Main.tile[i, j].type == 67 || Main.tile[i, j].type == 68 || Main.tile[i, j].type == 75 || Main.tile[i, j].type == 76 || Main.tile[i, j].type == 107 || Main.tile[i, j].type == 108 || Main.tile[i, j].type == 111 || Main.tile[i, j].type == 117 || Main.tile[i, j].type == 118 || Main.tile[i, j].type == 119 || Main.tile[i, j].type == 120 || Main.tile[i, j].type == 121 || Main.tile[i, j].type == 122 || Main.tile[i, j].type == 150 || Main.tile[i, j].type == 151 || Main.tile[i, j].type == 152 || Main.tile[i, j].type == 153 || Main.tile[i, j].type == 154 || Main.tile[i, j].type == 155 || Main.tile[i, j].type == 156 || Main.tile[i, j].type == 160 || Main.tile[i, j].type == 161 || Main.tile[i, j].type == 166 || Main.tile[i, j].type == 167 || Main.tile[i, j].type == 168 || Main.tile[i, j].type == 169 || Main.tile[i, j].type == 175 || Main.tile[i, j].type == 176 || Main.tile[i, j].type == 177 || Main.tile[i, j].type == 203 || Main.tile[i, j].type == 202 || Main.tile[i, j].type == 204 || Main.tile[i, j].type == 206 || Main.tile[i, j].type == 211 || Main.tile[i, j].type == 221 || Main.tile[i, j].type == 222 || Main.tile[i, j].type == 223 || Main.tile[i, j].type == 226 || Main.tile[i, j].type == 248 || Main.tile[i, j].type == 249 || Main.tile[i, j].type == 250)
{
Main.PlaySound(21, i * 16, j * 16, 1);
}
else
{
if (Main.tile[i, j].type == 231)
{
Main.PlaySound(4, i * 16, j * 16, 1);
}
else
{
if (Main.tile[i, j].type == 26 && Main.tile[i, j].frameX >= 54)
{
Main.PlaySound(4, i * 16, j * 16, 1);
}
else
{
if (Main.tile[i, j].type != 138)
{
Main.PlaySound(0, i * 16, j * 16, 1);
}
}
}
}
}
}
}
}
}
}
}
if ((Main.tile[i, j].type == 162 || Main.tile[i, j].type == 129 || (Main.tile[i, j].type == 165 && Main.tile[i, j].frameX < 54)) && !fail)
{
Main.PlaySound(2, i * 16, j * 16, 27);
}
}
int num = 10;
if (Main.tile[i, j].type == 231)
{
num = 6;
}
if (Main.tile[i, j].type == 128)
{
int num2 = i;
int k = (int)Main.tile[i, j].frameX;
int l;
for (l = (int)Main.tile[i, j].frameX; l >= 100; l -= 100)
{
}
while (l >= 36)
{
l -= 36;
}
if (l == 18)
{
k = (int)Main.tile[i - 1, j].frameX;
num2--;
}
if (k >= 100)
{
int num3 = 0;
while (k >= 100)
{
k -= 100;
num3++;
}
int num4 = (int)(Main.tile[num2, j].frameY / 18);
if (num4 == 0)
{
Item.NewItem(i * 16, j * 16, 16, 16, Item.headType[num3], 1, false, 0, false);
}
if (num4 == 1)
{
Item.NewItem(i * 16, j * 16, 16, 16, Item.bodyType[num3], 1, false, 0, false);
}
if (num4 == 2)
{
Item.NewItem(i * 16, j * 16, 16, 16, Item.legType[num3], 1, false, 0, false);
}
for (k = (int)Main.tile[num2, j].frameX; k >= 100; k -= 100)
{
}
Main.tile[num2, j].frameX = (short)k;
}
}
if (fail)
{
num = 3;
}
if (Main.tile[i, j].type == 138)
{
num = 0;
}
for (int m = 0; m < num; m++)
{
int num5 = 0;
if (Main.tile[i, j].type == 216)
{
num5 = -1;
}
if (Main.tile[i, j].type == 0)
{
num5 = 0;
}
if (Main.tile[i, j].type == 192)
{
num5 = 3;
}
if (Main.tile[i, j].type == 208)
{
num5 = 126;
}
if (Main.tile[i, j].type == 16)
{
num5 = 1;
if (Main.tile[i, j].frameX >= 36)
{
num5 = 82;
}
}
if (Main.tile[i, j].type == 1 || Main.tile[i, j].type == 17 || Main.tile[i, j].type == 38 || Main.tile[i, j].type == 39 || Main.tile[i, j].type == 41 || Main.tile[i, j].type == 43 || Main.tile[i, j].type == 44 || Main.tile[i, j].type == 48 || Main.tileStone[(int)Main.tile[i, j].type] || Main.tile[i, j].type == 85 || Main.tile[i, j].type == 90 || Main.tile[i, j].type == 92 || Main.tile[i, j].type == 96 || Main.tile[i, j].type == 97 || Main.tile[i, j].type == 99 || Main.tile[i, j].type == 117 || Main.tile[i, j].type == 130 || Main.tile[i, j].type == 131 || Main.tile[i, j].type == 132 || Main.tile[i, j].type == 135 || Main.tile[i, j].type == 135 || Main.tile[i, j].type == 142 || Main.tile[i, j].type == 143 || Main.tile[i, j].type == 144 || Main.tile[i, j].type == 210 || Main.tile[i, j].type == 207 || Main.tile[i, j].type == 235 || Main.tile[i, j].type == 247)
{
num5 = 1;
}
if (Main.tile[i, j].type == 95 || Main.tile[i, j].type == 98 || Main.tile[i, j].type == 100 || Main.tile[i, j].type == 174 || Main.tile[i, j].type == 173)
{
num5 = 6;
}
if (Main.tile[i, j].type == 30 || Main.tile[i, j].type == 86 || Main.tile[i, j].type == 89 || Main.tile[i, j].type == 93 || Main.tile[i, j].type == 94 || Main.tile[i, j].type == 104 || Main.tile[i, j].type == 106 || Main.tile[i, j].type == 114 || Main.tile[i, j].type == 124 || Main.tile[i, j].type == 128 || Main.tile[i, j].type == 139)
{
num5 = 7;
}
if (Main.tile[i, j].type == 10 || Main.tile[i, j].type == 11)
{
num5 = -1;
}
if (Main.tile[i, j].type == 240)
{
int num6 = (int)(Main.tile[i, j].frameX / 54);
num5 = 7;
if (num6 == 16 || num6 == 17)
{
num5 = 26;
}
}
if (Main.tile[i, j].type == 241)
{
num5 = 1;
}
if (Main.tile[i, j].type == 242)
{
num5 = 7;
}
if (Main.tile[i, j].type == 101)
{
int num7 = (int)(Main.tile[i, j].frameX / 54);
if (num7 == 0)
{
num5 = 7;
}
else
{
if (num7 == 4)
{
num5 = 109;
}
else
{
if (num7 == 5)
{
num5 = 126;
}
else
{
num5 = 1;
}
}
}
}
if (Main.tile[i, j].type == 19)
{
int num8 = (int)(Main.tile[i, j].frameY / 18);
if (num8 == 0 || num8 == 9 || num8 == 10 || num8 == 11 || num8 == 12)
{
num5 = 7;
}
else
{
if (num8 == 1)
{
num5 = 77;
}
else
{
if (num8 == 2)
{
num5 = 78;
}
else
{
if (num8 == 3)
{
num5 = 79;
}
else
{
if (num8 == 4)
{
num5 = 26;
}
else
{
if (num8 == 5)
{
num5 = 126;
}
else
{
if (num8 == 13)
{
num5 = 109;
}
else
{
if (num8 == 14)
{
num5 = 13;
}
else
{
num5 = 1;
}
}
}
}
}
}
}
}
}
if (Main.tile[i, j].type == 79)
{
int num9 = (int)(Main.tile[i, j].frameY / 36);
if (num9 == 0)
{
num5 = 7;
}
else
{
if (num9 == 1)
{
num5 = 77;
}
else
{
if (num9 == 2)
{
num5 = 78;
}
else
{
if (num9 == 3)
{
num5 = 79;
}
else
{
if (num9 == 4)
{
num5 = 126;
}
else
{
if (num9 == 8)
{
num5 = 109;
}
else
{
if (num9 >= 9)
{
num5 = -1;
}
else
{
num5 = 1;
}
}
}
}
}
}
}
}
if (Main.tile[i, j].type == 18)
{
int num10 = (int)(Main.tile[i, j].frameX / 36);
if (num10 == 0)
{
num5 = 7;
}
else
{
if (num10 == 1)
{
num5 = 77;
}
else
{
if (num10 == 2)
{
num5 = 78;
}
else
{
if (num10 == 3)
{
num5 = 79;
}
else
{
if (num10 == 4)
{
num5 = 26;
}
else
{
if (num10 == 5)
{
num5 = 40;
}
else
{
if (num10 == 6)
{
num5 = 5;
}
else
{
if (num10 == 7)
{
num5 = 26;
}
else
{
if (num10 == 8)
{
num5 = 4;
}
else
{
if (num10 == 9)
{
num5 = 126;
}
else
{
if (num10 == 10)
{
num5 = 148;
}
else
{
if (num10 == 11 || num10 == 12 || num10 == 13)
{
num5 = 1;
}
else
{
if (num10 == 14)
{
num5 = 109;
}
else
{
if (num10 == 15)
{
num5 = 126;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
if (Main.tile[i, j].type == 14 || Main.tile[i, j].type == 87 || Main.tile[i, j].type == 88)
{
int num11 = (int)(Main.tile[i, j].frameX / 54);
if (num11 == 0)
{
num5 = 7;
}
else
{
if (num11 == 1)
{
num5 = 77;
}
else
{
if (num11 == 2)
{
num5 = 78;
}
else
{
if (num11 == 3)
{
num5 = 79;
}
}
}
}
if (Main.tile[i, j].type == 14 && num11 >= 15)
{
num5 = -1;
}
if (Main.tile[i, j].type == 14 && num11 == 9)
{
num5 = 148;
}
if (Main.tile[i, j].type == 14 && num11 == 8)
{
num5 = 126;
}
if (Main.tile[i, j].type != 14 && num11 == 4)
{
num5 = 126;
}
if (Main.tile[i, j].type == 14 && num11 == 4)
{
num5 = 26;
}
if (Main.tile[i, j].type == 14 && num11 == 5)
{
num5 = 5;
}
if (Main.tile[i, j].type == 14 && num11 == 6)
{
num5 = 7;
}
if (Main.tile[i, j].type == 14 && num11 == 7)
{
num5 = 116;
}
if (Main.tile[i, j].type == 14 && (num11 == 10 || num11 == 11 || num11 == 12))
{
num5 = 1;
}
if (Main.tile[i, j].type == 14 && num11 == 13)
{
num5 = 109;
}
if (Main.tile[i, j].type == 14 && num11 == 14)
{
num5 = 126;
}
}
if (Main.tile[i, j].type == 178)
{
int num12 = (int)(Main.tile[i, j].frameX / 18);
num5 = 86 + num12;
if (num12 == 6)
{
num5 = 138;
}
}
if (Main.tile[i, j].type == 186)
{
if (Main.tile[i, j].frameX <= 360)
{
num5 = 26;
}
else
{
if (Main.tile[i, j].frameX <= 846)
{
num5 = 1;
}
else
{
if (Main.tile[i, j].frameX <= 954)
{
num5 = 9;
}
else
{
if (Main.tile[i, j].frameX <= 1062)
{
num5 = 11;
}
else
{
if (Main.tile[i, j].frameX <= 1170)
{
num5 = 10;
}
else
{
if (Main.tile[i, j].frameX <= 1332)
{
num5 = 0;
}
else
{
if (Main.tile[i, j].frameX <= 1386)
{
num5 = 10;
}
else
{
num5 = 80;
}
}
}
}
}
}
}
}
if (Main.tile[i, j].type == 187)
{
if (Main.tile[i, j].frameX <= 144)
{
num5 = 1;
}
else
{
if (Main.tile[i, j].frameX <= 306)
{
num5 = 38;
}
else
{
if (Main.tile[i, j].frameX <= 468)
{
num5 = 36;
}
else
{
if (Main.tile[i, j].frameX <= 738)
{
num5 = 30;
}
else
{
if (Main.tile[i, j].frameX <= 970)
{
num5 = 1;
}
else
{
if (Main.tile[i, j].frameX <= 1132)
{
num5 = 148;
}
else
{
if (Main.tile[i, j].frameX <= 1132)
{
num5 = 155;
}
else
{
if (Main.tile[i, j].frameX <= 1348)
{
num5 = 1;
}
else
{
if (Main.tile[i, j].frameX <= 1564)
{
num5 = 0;
}
}
}
}
}
}
}
}
}
}
if (Main.tile[i, j].type == 105)
{
num5 = 1;
if (Main.tile[i, j].frameX >= 1548 && Main.tile[i, j].frameX <= 1654)
{
num5 = 148;
}
}
if (Main.tile[i, j].type == 239)
{
int num13 = (int)(Main.tile[i, j].frameX / 18);
if (num13 == 0)
{
num5 = 9;
}
if (num13 == 1)
{
num5 = 81;
}
if (num13 == 2)
{
num5 = 8;
}
if (num13 == 3)
{
num5 = 82;
}
if (num13 == 4)
{
num5 = 11;
}
if (num13 == 5)
{
num5 = 83;
}
if (num13 == 6)
{
num5 = 10;
}
if (num13 == 7)
{
num5 = 84;
}
if (num13 == 8)
{
num5 = 14;
}
if (num13 == 9)
{
num5 = 23;
}
if (num13 == 10)
{
num5 = 25;
}
if (num13 == 11)
{
num5 = 48;
}
if (num13 == 12)
{
num5 = 144;
}
if (num13 == 13)
{
num5 = 49;
}
if (num13 == 14)
{
num5 = 145;
}
if (num13 == 15)
{
num5 = 50;
}
if (num13 == 16)
{
num5 = 146;
}
if (num13 == 17)
{
num5 = 128;
}
if (num13 == 18)
{
num5 = 84;
}
if (num13 == 19)
{
num5 = 117;
}
if (num13 == 20)
{
num5 = 26;
}
}
if (Main.tile[i, j].type == 185)
{
if (Main.tile[i, j].frameY == 18)
{
int num14 = (int)(Main.tile[i, j].frameX / 36);
if (num14 < 6)
{
num5 = 1;
}
else
{
if (num14 < 16)
{
num5 = 26;
}
else
{
if (num14 == 16)
{
num5 = 9;
}
else
{
if (num14 == 17)
{
num5 = 11;
}
else
{
if (num14 == 18)
{
num5 = 10;
}
else
{
if (num14 == 19)
{
num5 = 86;
}
else
{
if (num14 == 20)
{
num5 = 87;
}
else
{
if (num14 == 21)
{
num5 = 88;
}
else
{
if (num14 == 22)
{
num5 = 89;
}
else
{
if (num14 == 23)
{
num5 = 90;
}
else
{
if (num14 == 24)
{
num5 = 91;
}
else
{
if (num14 < 31)
{
num5 = 80;
}
else
{
if (num14 < 33)
{
num5 = 7;
}
else
{
if (num14 < 34)
{
num5 = 8;
}
else
{
if (num14 < 39)
{
num5 = 30;
}
else
{
if (num14 < 42)
{
num5 = 1;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
else
{
int num15 = (int)(Main.tile[i, j].frameX / 18);
if (num15 < 6)
{
num5 = 1;
}
else
{
if (num15 < 12)
{
num5 = 0;
}
else
{
if (num15 < 27)
{
num5 = 26;
}
else
{
if (num15 < 32)
{
num5 = 1;
}
else
{
if (num15 < 35)
{
num5 = 0;
}
else
{
if (num15 < 46)
{
num5 = 80;
}
else
{
if (num15 < 52)
{
num5 = 30;
}
}
}
}
}
}
}
}
}
if (Main.tile[i, j].type == 184)
{
int num16 = (int)(Main.tile[i, j].frameX / 22);
num5 = 93 + num16;
}
if (Main.tile[i, j].type == 237)
{
num5 = 148;
}
if (Main.tile[i, j].type == 157)
{
num5 = 77;
}
if (Main.tile[i, j].type == 158 || Main.tile[i, j].type == 232)
{
num5 = 78;
}
if (Main.tile[i, j].type == 159)
{
num5 = 78;
}
if (Main.tile[i, j].type == 15)
{
if (Main.tile[i, j].frameY >= 720)
{
num5 = -1;
}
else
{
if (Main.tile[i, j].frameY >= 680)
{
num5 = 126;
}
else
{
if (Main.tile[i, j].frameY >= 640)
{
num5 = 109;
}
else
{
if (Main.tile[i, j].frameY >= 520)
{
num5 = 1;
}
else
{
if (Main.tile[i, j].frameY >= 480)
{
num5 = 148;
}
else
{
if (Main.tile[i, j].frameY >= 440)
{
num5 = 126;
}
else
{
if (Main.tile[i, j].frameY >= 400)
{
num5 = 116;
}
else
{
if (Main.tile[i, j].frameY >= 360)
{
num5 = 26;
}
else
{
if (Main.tile[i, j].frameY >= 320)
{
num5 = 5;
}
else
{
if (Main.tile[i, j].frameY >= 280)
{
num5 = 26;
}
else
{
if (Main.tile[i, j].frameY >= 240)
{
num5 = 40;
}
else
{
if (Main.tile[i, j].frameY >= 200)
{
num5 = 7;
}
else
{
if (Main.tile[i, j].frameY >= 160)
{
num5 = 79;
}
else
{
if (Main.tile[i, j].frameY >= 120)
{
num5 = 78;
}
else
{
if (Main.tile[i, j].frameY >= 80)
{
num5 = 77;
}
else
{
if (Main.tile[i, j].frameY >= 40)
{
num5 = 1;
}
else
{
num5 = 7;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
if (Main.tile[i, j].type == 191)
{
num5 = 7;
}
if (Main.tile[i, j].type == 5)
{
num5 = 7;
if (i > 5 && i < Main.maxTilesX - 5)
{
int num17 = i;
int num18 = j;
if (Main.tile[i, j].frameX == 66 && Main.tile[i, j].frameY <= 45)
{
num17++;
}
if (Main.tile[i, j].frameX == 88 && Main.tile[i, j].frameY >= 66 && Main.tile[i, j].frameY <= 110)
{
num17--;
}
if (Main.tile[i, j].frameX == 22 && Main.tile[i, j].frameY >= 132 && Main.tile[i, j].frameY <= 176)
{
num17--;
}
if (Main.tile[i, j].frameX == 44 && Main.tile[i, j].frameY >= 132 && Main.tile[i, j].frameY <= 176)
{
num17++;
}
if (Main.tile[i, j].frameX == 44 && Main.tile[i, j].frameY >= 132 && Main.tile[i, j].frameY <= 176)
{
num17++;
}
if (Main.tile[i, j].frameX == 44 && Main.tile[i, j].frameY >= 198)
{
num17++;
}
if (Main.tile[i, j].frameX == 66 && Main.tile[i, j].frameY >= 198)
{
num17--;
}
while (Main.tile[num17, num18] != null && (!Main.tile[num17, num18].active() || !Main.tileSolid[(int)Main.tile[num17, num18].type]))
{
num18++;
}
if (Main.tile[num17, num18] != null)
{
if (Main.tile[num17, num18].active() && Main.tile[num17, num18].type == 23)
{
num5 = 77;
}
if (Main.tile[num17, num18].active() && Main.tile[num17, num18].type == 60)
{
num5 = 78;
}
if (Main.tile[num17, num18].active() && Main.tile[num17, num18].type == 70)
{
num5 = 26;
}
if (Main.tile[num17, num18].active() && Main.tile[num17, num18].type == 109)
{
num5 = 79;
}
if (Main.tile[num17, num18].active() && Main.tile[num17, num18].type == 199)
{
num5 = 121;
}
if (Main.tile[num17, num18].active() && Main.tile[num17, num18].type == 147)
{
num5 = 122;
}
}
}
}
if (Main.tile[i, j].type == 137)
{
num5 = 1;
int num19 = (int)(Main.tile[i, j].frameY / 18);
if (num19 > 0)
{
num5 = 148;
}
}
if (Main.tile[i, j].type == 212)
{
num5 = -1;
}
if (Main.tile[i, j].type == 213)
{
num5 = 129;
}
if (Main.tile[i, j].type == 214)
{
num5 = 1;
}
if (Main.tile[i, j].type == 215)
{
num5 = 6;
}
if (Main.tile[i, j].type == 21)
{
if (Main.tile[i, j].frameX >= 612)
{
num5 = 11;
}
else
{
if (Main.tile[i, j].frameX >= 576)
{
num5 = 148;
}
else
{
if (Main.tile[i, j].frameX >= 540)
{
num5 = 26;
}
else
{
if (Main.tile[i, j].frameX >= 504)
{
num5 = 126;
}
else
{
if (Main.tile[i, j].frameX >= 468)
{
num5 = 116;
}
else
{
if (Main.tile[i, j].frameX >= 432)
{
num5 = 7;
}
else
{
if (Main.tile[i, j].frameX >= 396)
{
num5 = 11;
}
else
{
if (Main.tile[i, j].frameX >= 360)
{
num5 = 10;
}
else
{
if (Main.tile[i, j].frameX >= 324)
{
num5 = 79;
}
else
{
if (Main.tile[i, j].frameX >= 288)
{
num5 = 78;
}
else
{
if (Main.tile[i, j].frameX >= 252)
{
num5 = 77;
}
else
{
if (Main.tile[i, j].frameX >= 216)
{
num5 = 1;
}
else
{
if (Main.tile[i, j].frameX >= 180)
{
num5 = 7;
}
else
{
if (Main.tile[i, j].frameX >= 108)
{
num5 = 37;
}
else
{
if (Main.tile[i, j].frameX >= 36)
{
num5 = 10;
}
else
{
num5 = 7;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
if (Main.tile[i, j].type == 2)
{
if (WorldGen.genRand.Next(2) == 0)
{
num5 = 0;
}
else
{
num5 = 2;
}
}
if (Main.tile[i, j].type == 2)
{
if (WorldGen.genRand.Next(2) == 0)
{
num5 = 0;
}
else
{
num5 = 5;
}
}
if (Main.tileMoss[(int)Main.tile[i, j].type])
{
num5 = (int)(Main.tile[i, j].type - 179 + 93);
}
if (Main.tile[i, j].type == 127)
{
num5 = 67;
}
if (Main.tile[i, j].type == 91)
{
num5 = -1;
}
if (Main.tile[i, j].type == 198)
{
num5 = 109;
}
if (Main.tile[i, j].type == 26)
{
if (Main.tile[i, j].frameX >= 54)
{
num5 = 5;
}
else
{
num5 = 8;
}
}
if (Main.tile[i, j].type == 6)
{
num5 = 8;
}
if (Main.tile[i, j].type == 7 || Main.tile[i, j].type == 34 || Main.tile[i, j].type == 47)
{
num5 = 9;
}
if (Main.tile[i, j].type == 8 || Main.tile[i, j].type == 36 || Main.tile[i, j].type == 45 || Main.tile[i, j].type == 102)
{
num5 = 10;
}
if (Main.tile[i, j].type == 9 || Main.tile[i, j].type == 35 || Main.tile[i, j].type == 42 || Main.tile[i, j].type == 46 || Main.tile[i, j].type == 126 || Main.tile[i, j].type == 136)
{
num5 = 11;
}
if (Main.tile[i, j].type == 166 || Main.tile[i, j].type == 170 || Main.tile[i, j].type == 175)
{
num5 = 81;
}
if (Main.tile[i, j].type == 167)
{
num5 = 82;
}
if (Main.tile[i, j].type == 168 || Main.tile[i, j].type == 171 || Main.tile[i, j].type == 176)
{
num5 = 83;
}
if (Main.tile[i, j].type == 169 || Main.tile[i, j].type == 172 || Main.tile[i, j].type == 177)
{
num5 = 84;
}
if (Main.tile[i, j].type == 199)
{
num5 = 117;
}
if (Main.tile[i, j].type == 205)
{
num5 = 125;
}
if (Main.tile[i, j].type == 201)
{
num5 = 125;
}
if (Main.tile[i, j].type == 211)
{
num5 = 128;
}
if (Main.tile[i, j].type == 227)
{
int num20 = (int)(Main.tile[i, j].frameX / 34);
if (num20 == 0 || num20 == 1)
{
num5 = 26;
}
else
{
if (num20 == 3)
{
num5 = 3;
}
else
{
if (num20 == 2 || num20 == 4 || num20 == 5 || num20 == 6)
{
num5 = 40;
}
else
{
if (num20 == 7)
{
num5 = 117;
}
}
}
}
}
if (Main.tile[i, j].type == 204)
{
num5 = 117;
if (WorldGen.genRand.Next(2) == 0)
{
num5 = 1;
}
}
if (Main.tile[i, j].type == 203)
{
num5 = 117;
}
if (Main.tile[i, j].type == 243)
{
if (Main.rand.Next(2) == 0)
{
num5 = 7;
}
else
{
num5 = 13;
}
}
if (Main.tile[i, j].type == 244)
{
if (Main.rand.Next(2) == 0)
{
num5 = 1;
}
else
{
num5 = 13;
}
}
if (Main.tile[i, j].type == 189)
{
num5 = 16;
}
if (Main.tile[i, j].type == 12)
{
num5 = 12;
}
if (Main.tile[i, j].type == 3 || Main.tile[i, j].type == 73)
{
num5 = 3;
}
if (Main.tile[i, j].type == 13 || Main.tile[i, j].type == 54)
{
num5 = 13;
}
if (Main.tile[i, j].type == 22 || Main.tile[i, j].type == 140)
{
num5 = 14;
}
if (Main.tile[i, j].type == 78)
{
num5 = 22;
}
if (Main.tile[i, j].type == 28)
{
num5 = 22;
if (Main.tile[i, j].frameY >= 72 && Main.tile[i, j].frameY <= 90)
{
num5 = 1;
}
if (Main.tile[i, j].frameY >= 144 && Main.tile[i, j].frameY <= 234)
{
num5 = 48;
}
if (Main.tile[i, j].frameY >= 252 && Main.tile[i, j].frameY <= 358)
{
num5 = 85;
}
if (Main.tile[i, j].frameY >= 360 && Main.tile[i, j].frameY <= 466)
{
num5 = 26;
}
if (Main.tile[i, j].frameY >= 468 && Main.tile[i, j].frameY <= 574)
{
num5 = 36;
}
if (Main.tile[i, j].frameY >= 576 && Main.tile[i, j].frameY <= 790)
{
num5 = 18;
}
if (Main.tile[i, j].frameY >= 792 && Main.tile[i, j].frameY <= 898)
{
num5 = 5;
}
if (Main.tile[i, j].frameY >= 900 && Main.tile[i, j].frameY <= 1006)
{
num5 = 0;
}
if (Main.tile[i, j].frameY >= 1008 && Main.tile[i, j].frameY <= 1114)
{
num5 = 148;
}
}
if (Main.tile[i, j].type == 163)
{
num5 = 118;
}
if (Main.tile[i, j].type == 164)
{
num5 = 119;
}
if (Main.tile[i, j].type == 200)
{
num5 = 120;
}
if (Main.tile[i, j].type == 221 || Main.tile[i, j].type == 248)
{
num5 = 144;
}
if (Main.tile[i, j].type == 222 || Main.tile[i, j].type == 249)
{
num5 = 145;
}
if (Main.tile[i, j].type == 223 || Main.tile[i, j].type == 250)
{
num5 = 146;
}
if (Main.tile[i, j].type == 224)
{
num5 = 149;
}
if (Main.tile[i, j].type == 225)
{
num5 = 147;
}
if (Main.tile[i, j].type == 229)
{
num5 = 153;
}
if (Main.tile[i, j].type == 231)
{
num5 = 153;
if (Main.rand.Next(3) == 0)
{
num5 = 26;
}
}
if (Main.tile[i, j].type == 226)
{
num5 = 148;
}
if (Main.tile[i, j].type == 29)
{
num5 = 23;
}
if (Main.tile[i, j].type == 40 || Main.tile[i, j].type == 103)
{
num5 = 28;
}
if (Main.tile[i, j].type == 49)
{
num5 = 29;
}
if (Main.tile[i, j].type == 50)
{
num5 = 22;
}
if (Main.tile[i, j].type == 51)
{
num5 = 30;
}
if (Main.tile[i, j].type == 52)
{
num5 = 3;
}
if (Main.tile[i, j].type == 53 || Main.tile[i, j].type == 81 || Main.tile[i, j].type == 151 || Main.tile[i, j].type == 202)
{
num5 = 32;
}
if (Main.tile[i, j].type == 56 || Main.tile[i, j].type == 152)
{
num5 = 37;
}
if (Main.tile[i, j].type == 75)
{
num5 = 109;
}
if (Main.tile[i, j].type == 57 || Main.tile[i, j].type == 119 || Main.tile[i, j].type == 141 || Main.tile[i, j].type == 234)
{
num5 = 36;
}
if (Main.tile[i, j].type == 59 || Main.tile[i, j].type == 120)
{
num5 = 38;
}
if (Main.tile[i, j].type == 61 || Main.tile[i, j].type == 62 || Main.tile[i, j].type == 74 || Main.tile[i, j].type == 80 || Main.tile[i, j].type == 188 || Main.tile[i, j].type == 233 || Main.tile[i, j].type == 236)
{
num5 = 40;
}
if (Main.tile[i, j].type == 238)
{
if (WorldGen.genRand.Next(3) == 0)
{
num5 = 167;
}
else
{
num5 = 166;
}
}
if (Main.tile[i, j].type == 69)
{
num5 = 7;
}
if (Main.tile[i, j].type == 71 || Main.tile[i, j].type == 72 || Main.tile[i, j].type == 190)
{
num5 = 26;
}
if (Main.tile[i, j].type == 70)
{
num5 = 17;
}
if (Main.tile[i, j].type == 112)
{
num5 = 14;
}
if (Main.tile[i, j].type == 123)
{
num5 = 53;
}
if (Main.tile[i, j].type == 161)
{
num5 = 80;
}
if (Main.tile[i, j].type == 206)
{
num5 = 80;
}
if (Main.tile[i, j].type == 162)
{
num5 = 80;
}
if (Main.tile[i, j].type == 165)
{
if (Main.tile[i, j].frameX < 54)
{
num5 = 80;
}
else
{
if (Main.tile[i, j].frameX >= 162)
{
num5 = 147;
}
else
{
if (Main.tile[i, j].frameX >= 108)
{
num5 = 30;
}
else
{
num5 = 1;
}
}
}
}
if (Main.tile[i, j].type == 193)
{
num5 = 4;
}
if (Main.tile[i, j].type == 194)
{
num5 = 26;
}
if (Main.tile[i, j].type == 195)
{
num5 = 5;
}
if (Main.tile[i, j].type == 196)
{
num5 = 108;
}
if (Main.tile[i, j].type == 197)
{
num5 = 4;
}
if (Main.tile[i, j].type == 153)
{
num5 = 26;
}
if (Main.tile[i, j].type == 154)
{
num5 = 32;
}
if (Main.tile[i, j].type == 155)
{
num5 = 2;
}
if (Main.tile[i, j].type == 156)
{
num5 = 1;
}
if (Main.tile[i, j].type == 116 || Main.tile[i, j].type == 118 || Main.tile[i, j].type == 147 || Main.tile[i, j].type == 148)
{
num5 = 51;
}
if (Main.tile[i, j].type == 109)
{
if (WorldGen.genRand.Next(2) == 0)
{
num5 = 0;
}
else
{
num5 = 47;
}
}
if (Main.tile[i, j].type == 110 || Main.tile[i, j].type == 113 || Main.tile[i, j].type == 115)
{
num5 = 47;
}
if (Main.tile[i, j].type == 107 || Main.tile[i, j].type == 121)
{
num5 = 48;
}
if (Main.tile[i, j].type == 108 || Main.tile[i, j].type == 122 || Main.tile[i, j].type == 146)
{
num5 = 49;
}
if (Main.tile[i, j].type == 111 || Main.tile[i, j].type == 145 || Main.tile[i, j].type == 150)
{
num5 = 50;
}
if (Main.tile[i, j].type == 133)
{
num5 = 50;
if (Main.tile[i, j].frameX >= 54)
{
num5 = 146;
}
}
if (Main.tile[i, j].type == 134)
{
num5 = 49;
if (Main.tile[i, j].frameX >= 36)
{
num5 = 145;
}
}
if (Main.tile[i, j].type == 149)
{
num5 = 49;
}
if (Main.tileAlch[(int)Main.tile[i, j].type])
{
int num21 = (int)(Main.tile[i, j].frameX / 18);
if (num21 == 0)
{
num5 = 3;
}
if (num21 == 1)
{
num5 = 3;
}
if (num21 == 2)
{
num5 = 7;
}
if (num21 == 3)
{
num5 = 17;
}
if (num21 == 4)
{
num5 = 3;
}
if (num21 == 5)
{
num5 = 6;
}
}
if (Main.tile[i, j].type == 61)
{
if (WorldGen.genRand.Next(2) == 0)
{
num5 = 38;
}
else
{
num5 = 39;
}
}
if (Main.tile[i, j].type == 58 || Main.tile[i, j].type == 76 || Main.tile[i, j].type == 77)
{
if (WorldGen.genRand.Next(2) == 0)
{
num5 = 6;
}
else
{
num5 = 25;
}
}
if (Main.tile[i, j].type == 37)
{
if (WorldGen.genRand.Next(2) == 0)
{
num5 = 6;
}
else
{
num5 = 23;
}
}
if (Main.tile[i, j].type == 32)
{
if (WorldGen.genRand.Next(2) == 0)
{
num5 = 14;
}
else
{
num5 = 24;
}
}
if (Main.tile[i, j].type == 23 || Main.tile[i, j].type == 24)
{
if (WorldGen.genRand.Next(2) == 0)
{
num5 = 14;
}
else
{
num5 = 17;
}
}
if (Main.tile[i, j].type == 25 || Main.tile[i, j].type == 31)
{
if (Main.tile[i, j].type == 31 && Main.tile[i, j].frameX >= 36)
{
num5 = 5;
}
else
{
if (WorldGen.genRand.Next(2) == 0)
{
num5 = 14;
}
else
{
num5 = 1;
}
}
}
if (Main.tile[i, j].type == 20)
{
if (WorldGen.genRand.Next(2) == 0)
{
num5 = 7;
}
else
{
num5 = 2;
}
}
if (Main.tile[i, j].type == 27)
{
if (WorldGen.genRand.Next(2) == 0)
{
num5 = 3;
}
else
{
num5 = 19;
}
}
if (Main.tile[i, j].type == 129)
{
if (Main.tile[i, j].frameX == 0 || Main.tile[i, j].frameX == 54 || Main.tile[i, j].frameX == 108)
{
num5 = 68;
}
else
{
if (Main.tile[i, j].frameX == 18 || Main.tile[i, j].frameX == 72 || Main.tile[i, j].frameX == 126)
{
num5 = 69;
}
else
{
num5 = 70;
}
}
}
if (Main.tile[i, j].type == 4)
{
int num22 = (int)(Main.tile[i, j].frameY / 22);
if (num22 == 0)
{
num5 = 6;
}
else
{
if (num22 == 8)
{
num5 = 75;
}
else
{
if (num22 == 9)
{
num5 = 135;
}
else
{
if (num22 == 10)
{
num5 = 158;
}
else
{
if (num22 == 11)
{
num5 = 169;
}
else
{
num5 = 58 + num22;
}
}
}
}
}
}
if ((Main.tile[i, j].type == 34 || Main.tile[i, j].type == 35 || Main.tile[i, j].type == 36 || Main.tile[i, j].type == 42) && Main.rand.Next(2) == 0)
{
num5 = 6;
}
if (num5 >= 0)
{
if (Main.tile[i, j].type == 160)
{
int num23 = Dust.NewDust(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16, 66, 0f, 0f, 100, new Color(Main.DiscoR, Main.DiscoG, Main.DiscoB), 0.75f);
Main.dust[num23].noGravity = true;
}
else
{
if (Main.tile[i, j].type == 178)
{
int num24 = Dust.NewDust(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16, num5, 0f, 0f, 75, default(Color), 0.75f);
Main.dust[num24].noLight = true;
}
else
{
if (Main.tile[i, j].type == 193 || (Main.tile[i, j].type == 18 && num5 == 4))
{
Dust.NewDust(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16, num5, 0f, 0f, 75, new Color(0, 80, 255, 100), 0.75f);
}
else
{
if (Main.tile[i, j].type == 197)
{
Dust.NewDust(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16, num5, 0f, 0f, 75, new Color(97, 200, 255, 100), 0.75f);
}
else
{
if (Main.tile[i, j].type == 185 && num5 >= 86 && num5 <= 91)
{
int num25 = Dust.NewDust(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16, num5, 0f, 0f, 75, default(Color), 0.75f);
Main.dust[num25].noLight = true;
}
else
{
Dust.NewDust(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16, num5, 0f, 0f, 0, default(Color), 1f);
}
}
}
}
}
}
}
if (effectOnly)
{
return;
}
if (fail)
{
if (Main.tile[i, j].type == 2 || Main.tile[i, j].type == 23 || Main.tile[i, j].type == 109 || Main.tile[i, j].type == 199)
{
Main.tile[i, j].type = 0;
}
if (Main.tile[i, j].type == 60 || Main.tile[i, j].type == 70)
{
Main.tile[i, j].type = 59;
}
if (Main.tileMoss[(int)Main.tile[i, j].type])
{
Main.tile[i, j].type = 1;
}
WorldGen.SquareTileFrame(i, j, true);
return;
}
if (Main.tile[i, j].type == 21 && Main.netMode != 1)
{
int n = (int)(Main.tile[i, j].frameX / 18);
int y = j - (int)(Main.tile[i, j].frameY / 18);
while (n > 1)
{
n -= 2;
}
n = i - n;
if (!Chest.DestroyChest(n, y))
{
return;
}
}
if (Main.tile[i, j].type == 51 && Main.tile[i, j].wall == 62 && WorldGen.genRand.Next(4) != 0)
{
noItem = true;
}
if (!noItem && !WorldGen.stopDrops && Main.netMode != 1)
{
int num26 = 0;
if (Main.tile[i, j].type == 0 || Main.tile[i, j].type == 2 || Main.tile[i, j].type == 109)
{
num26 = 2;
}
else
{
if (Main.tile[i, j].type == 1)
{
num26 = 3;
}
else
{
if (Main.tile[i, j].type == 3 || Main.tile[i, j].type == 73)
{
if (Main.rand.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)))
{
num26 = 283;
}
}
else
{
if (Main.tile[i, j].type == 227)
{
int num27 = (int)(Main.tile[i, j].frameX / 34);
num26 = 1107 + num27;
}
else
{
if (Main.tile[i, j].type == 4)
{
int num28 = (int)(Main.tile[i, j].frameY / 22);
if (num28 == 0)
{
num26 = 8;
}
else
{
if (num28 == 8)
{
num26 = 523;
}
else
{
if (num28 == 9)
{
num26 = 974;
}
else
{
if (num28 == 10)
{
num26 = 1245;
}
else
{
if (num28 == 11)
{
num26 = 1333;
}
else
{
num26 = 426 + num28;
}
}
}
}
}
}
else
{
if (Main.tile[i, j].type == 239)
{
int num29 = (int)(Main.tile[i, j].frameX / 18);
if (num29 == 0)
{
num26 = 20;
}
if (num29 == 1)
{
num26 = 703;
}
if (num29 == 2)
{
num26 = 22;
}
if (num29 == 3)
{
num26 = 704;
}
if (num29 == 4)
{
num26 = 21;
}
if (num29 == 5)
{
num26 = 705;
}
if (num29 == 6)
{
num26 = 19;
}
if (num29 == 7)
{
num26 = 706;
}
if (num29 == 8)
{
num26 = 57;
}
if (num29 == 9)
{
num26 = 117;
}
if (num29 == 10)
{
num26 = 175;
}
if (num29 == 11)
{
num26 = 381;
}
if (num29 == 12)
{
num26 = 1184;
}
if (num29 == 13)
{
num26 = 382;
}
if (num29 == 14)
{
num26 = 1191;
}
if (num29 == 15)
{
num26 = 391;
}
if (num29 == 16)
{
num26 = 1198;
}
if (num29 == 17)
{
num26 = 1006;
}
if (num29 == 18)
{
num26 = 1225;
}
if (num29 == 19)
{
num26 = 1257;
}
if (num29 == 20)
{
num26 = 1552;
}
}
else
{
if (Main.tile[i, j].type == 5)
{
if (Main.tile[i, j].frameX >= 22 && Main.tile[i, j].frameY >= 198)
{
if (Main.netMode != 1)
{
if (WorldGen.genRand.Next(2) == 0)
{
int num30 = j;
while (Main.tile[i, num30] != null && (!Main.tile[i, num30].active() || !Main.tileSolid[(int)Main.tile[i, num30].type] || Main.tileSolidTop[(int)Main.tile[i, num30].type]))
{
num30++;
}
if (Main.tile[i, num30] != null)
{
if (Main.tile[i, num30].type == 2 || Main.tile[i, num30].type == 109 || Main.tile[i, num30].type == 147)
{
num26 = 27;
}
else
{
num26 = 9;
}
}
}
else
{
num26 = 9;
}
}
}
else
{
num26 = 9;
}
if (num26 == 9)
{
int num31 = 3;
int num32 = i;
int num33 = j;
if (Main.tile[i, j].frameX == 66 && Main.tile[i, j].frameY <= 45)
{
num32++;
}
if (Main.tile[i, j].frameX == 88 && Main.tile[i, j].frameY >= 66 && Main.tile[i, j].frameY <= 110)
{
num32--;
}
if (Main.tile[i, j].frameX == 22 && Main.tile[i, j].frameY >= 132 && Main.tile[i, j].frameY <= 176)
{
num32--;
}
if (Main.tile[i, j].frameX == 44 && Main.tile[i, j].frameY >= 132 && Main.tile[i, j].frameY <= 176)
{
num32++;
}
if (Main.tile[i, j].frameX == 44 && Main.tile[i, j].frameY >= 198)
{
num32++;
}
if (Main.tile[i, j].frameX == 66 && Main.tile[i, j].frameY >= 198)
{
num32--;
}
while (!Main.tile[num32, num33].active() || !Main.tileSolid[(int)Main.tile[num32, num33].type])
{
num33++;
}
if (Main.tile[num32, num33].active() && Main.tile[num32, num33].type == 23)
{
num31 = 0;
}
if (Main.tile[num32, num33].active() && Main.tile[num32, num33].type == 60)
{
num31 = 1;
}
if (Main.tile[num32, num33].active() && Main.tile[num32, num33].type == 109)
{
num31 = 2;
}
if (Main.tile[num32, num33].active() && Main.tile[num32, num33].type == 199)
{
num26 = 911;
}
else
{
if (Main.tile[num32, num33].active() && Main.tile[num32, num33].type == 70)
{
num26 = 183;
}
else
{
if (num31 != 3)
{
num26 = num31 + 619;
}
}
}
}
}
else
{
if (Main.tile[i, j].type == 214)
{
num26 = 85;
}
else
{
if (Main.tile[i, j].type == 213)
{
num26 = 965;
}
else
{
if (Main.tile[i, j].type == 211)
{
num26 = 947;
}
else
{
if (Main.tile[i, j].type == 6)
{
num26 = 11;
}
else
{
if (Main.tile[i, j].type == 7)
{
num26 = 12;
}
else
{
if (Main.tile[i, j].type == 8)
{
num26 = 13;
}
else
{
if (Main.tile[i, j].type == 9)
{
num26 = 14;
}
else
{
if (Main.tile[i, j].type == 202)
{
num26 = 824;
}
else
{
if (Main.tile[i, j].type == 234)
{
num26 = 1246;
}
else
{
if (Main.tile[i, j].type == 226)
{
num26 = 1101;
}
else
{
if (Main.tile[i, j].type == 224)
{
num26 = 1103;
}
else
{
if (Main.tile[i, j].type == 229)
{
num26 = 1125;
}
else
{
if (Main.tile[i, j].type == 230)
{
num26 = 1127;
}
else
{
if (Main.tile[i, j].type == 225)
{
if (WorldGen.genRand.Next(3) == 0)
{
Main.tile[i, j].honey(true);
Main.tile[i, j].liquid = 255;
}
else
{
num26 = 1124;
if (Main.netMode != 1 && WorldGen.genRand.Next(2) == 0)
{
int num34 = 1;
if (WorldGen.genRand.Next(3) == 0)
{
num34 = 2;
}
for (int num35 = 0; num35 < num34; num35++)
{
int type = WorldGen.genRand.Next(210, 212);
int num36 = NPC.NewNPC(i * 16 + 8, j * 16 + 15, type, 1);
Main.npc[num36].velocity.X = (float)WorldGen.genRand.Next(-200, 201) * 0.002f;
Main.npc[num36].velocity.Y = (float)WorldGen.genRand.Next(-200, 201) * 0.002f;
Main.npc[num36].netUpdate = true;
}
}
}
}
else
{
if (Main.tile[i, j].type == 221)
{
num26 = 1104;
}
else
{
if (Main.tile[i, j].type == 222)
{
num26 = 1105;
}
else
{
if (Main.tile[i, j].type == 223)
{
num26 = 1106;
}
else
{
if (Main.tile[i, j].type == 248)
{
num26 = 1589;
}
else
{
if (Main.tile[i, j].type == 249)
{
num26 = 1591;
}
else
{
if (Main.tile[i, j].type == 250)
{
num26 = 1593;
}
else
{
if (Main.tile[i, j].type == 191)
{
num26 = 9;
}
else
{
if (Main.tile[i, j].type == 203)
{
num26 = 836;
}
else
{
if (Main.tile[i, j].type == 204)
{
num26 = 880;
}
else
{
if (Main.tile[i, j].type == 166)
{
num26 = 699;
}
else
{
if (Main.tile[i, j].type == 167)
{
num26 = 700;
}
else
{
if (Main.tile[i, j].type == 168)
{
num26 = 701;
}
else
{
if (Main.tile[i, j].type == 169)
{
num26 = 702;
}
else
{
if (Main.tile[i, j].type == 123)
{
num26 = 424;
}
else
{
if (Main.tile[i, j].type == 124)
{
num26 = 480;
}
else
{
if (Main.tile[i, j].type == 157)
{
num26 = 619;
}
else
{
if (Main.tile[i, j].type == 158)
{
num26 = 620;
}
else
{
if (Main.tile[i, j].type == 159)
{
num26 = 621;
}
else
{
if (Main.tile[i, j].type == 161)
{
num26 = 664;
}
else
{
if (Main.tile[i, j].type == 206)
{
num26 = 883;
}
else
{
if (Main.tile[i, j].type == 232)
{
num26 = 1150;
}
else
{
if (Main.tile[i, j].type == 198)
{
num26 = 775;
}
else
{
if (Main.tile[i, j].type == 189)
{
num26 = 751;
}
else
{
if (Main.tile[i, j].type == 195)
{
num26 = 763;
}
else
{
if (Main.tile[i, j].type == 194)
{
num26 = 766;
}
else
{
if (Main.tile[i, j].type == 193)
{
num26 = 762;
}
else
{
if (Main.tile[i, j].type == 196)
{
num26 = 765;
}
else
{
if (Main.tile[i, j].type == 197)
{
num26 = 767;
}
else
{
if (Main.tile[i, j].type == 178)
{
int num37 = (int)(Main.tile[i, j].frameX / 18);
if (num37 == 0)
{
num26 = 181;
}
else
{
if (num37 == 1)
{
num26 = 180;
}
else
{
if (num37 == 2)
{
num26 = 177;
}
else
{
if (num37 == 3)
{
num26 = 179;
}
else
{
if (num37 == 4)
{
num26 = 178;
}
else
{
if (num37 == 5)
{
num26 = 182;
}
else
{
if (num37 == 6)
{
num26 = 999;
}
}
}
}
}
}
}
}
else
{
if (Main.tile[i, j].type == 149)
{
if (Main.tile[i, j].frameX == 0 || Main.tile[i, j].frameX == 54)
{
num26 = 596;
}
else
{
if (Main.tile[i, j].frameX == 18 || Main.tile[i, j].frameX == 72)
{
num26 = 597;
}
else
{
if (Main.tile[i, j].frameX == 36 || Main.tile[i, j].frameX == 90)
{
num26 = 598;
}
}
}
}
else
{
if (Main.tile[i, j].type == 13)
{
Main.PlaySound(13, i * 16, j * 16, 1);
if (Main.tile[i, j].frameX == 18)
{
num26 = 28;
}
else
{
if (Main.tile[i, j].frameX == 36)
{
num26 = 110;
}
else
{
if (Main.tile[i, j].frameX == 54)
{
num26 = 350;
}
else
{
if (Main.tile[i, j].frameX == 72)
{
num26 = 351;
}
else
{
num26 = 31;
}
}
}
}
}
else
{
if (Main.tile[i, j].type == 19)
{
int num38 = (int)(Main.tile[i, j].frameY / 18);
if (num38 == 0)
{
num26 = 94;
}
else
{
if (num38 == 1)
{
num26 = 631;
}
else
{
if (num38 == 2)
{
num26 = 632;
}
else
{
if (num38 == 3)
{
num26 = 633;
}
else
{
if (num38 == 4)
{
num26 = 634;
}
else
{
if (num38 == 5)
{
num26 = 913;
}
else
{
if (num38 == 6)
{
num26 = 1384;
}
else
{
if (num38 == 7)
{
num26 = 1385;
}
else
{
if (num38 == 8)
{
num26 = 1386;
}
else
{
if (num38 == 9)
{
num26 = 1387;
}
else
{
if (num38 == 10)
{
num26 = 1388;
}
else
{
if (num38 == 11)
{
num26 = 1389;
}
else
{
if (num38 == 12)
{
num26 = 1418;
}
else
{
if (num38 == 13)
{
num26 = 1457;
}
else
{
if (num38 == 14)
{
num26 = 1702;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
else
{
if (Main.tile[i, j].type == 22)
{
num26 = 56;
}
else
{
if (Main.tile[i, j].type == 140)
{
num26 = 577;
}
else
{
if (Main.tile[i, j].type == 23)
{
num26 = 2;
}
else
{
if (Main.tile[i, j].type == 25)
{
num26 = 61;
}
else
{
if (Main.tile[i, j].type == 30)
{
num26 = 9;
}
else
{
if (Main.tile[i, j].type == 191)
{
num26 = 9;
}
else
{
if (Main.tile[i, j].type == 208)
{
num26 = 911;
}
else
{
if (Main.tile[i, j].type == 33)
{
int num39 = (int)(Main.tile[i, j].frameY / 22);
num26 = 105;
if (num39 == 1)
{
num26 = 1405;
}
else
{
if (num39 == 2)
{
num26 = 1406;
}
else
{
if (num39 == 3)
{
num26 = 1407;
}
}
}
}
else
{
if (Main.tile[i, j].type == 174)
{
num26 = 713;
}
else
{
if (Main.tile[i, j].type == 37)
{
num26 = 116;
}
else
{
if (Main.tile[i, j].type == 38)
{
num26 = 129;
}
else
{
if (Main.tile[i, j].type == 39)
{
num26 = 131;
}
else
{
if (Main.tile[i, j].type == 40)
{
num26 = 133;
}
else
{
if (Main.tile[i, j].type == 41)
{
num26 = 134;
}
else
{
if (Main.tile[i, j].type == 43)
{
num26 = 137;
}
else
{
if (Main.tile[i, j].type == 44)
{
num26 = 139;
}
else
{
if (Main.tile[i, j].type == 45)
{
num26 = 141;
}
else
{
if (Main.tile[i, j].type == 46)
{
num26 = 143;
}
else
{
if (Main.tile[i, j].type == 47)
{
num26 = 145;
}
else
{
if (Main.tile[i, j].type == 48)
{
num26 = 147;
}
else
{
if (Main.tile[i, j].type == 49)
{
num26 = 148;
}
else
{
if (Main.tile[i, j].type == 51)
{
num26 = 150;
}
else
{
if (Main.tile[i, j].type == 53)
{
num26 = 169;
}
else
{
if (Main.tile[i, j].type == 151)
{
num26 = 607;
}
else
{
if (Main.tile[i, j].type == 152)
{
num26 = 609;
}
else
{
if (Main.tile[i, j].type == 54)
{
num26 = 170;
Main.PlaySound(13, i * 16, j * 16, 1);
}
else
{
if (Main.tile[i, j].type == 56)
{
num26 = 173;
}
else
{
if (Main.tile[i, j].type == 57)
{
num26 = 172;
}
else
{
if (Main.tile[i, j].type == 58)
{
num26 = 174;
}
else
{
if (Main.tile[i, j].type == 60)
{
num26 = 176;
}
else
{
if (Main.tile[i, j].type == 70)
{
num26 = 176;
}
else
{
if (Main.tile[i, j].type == 75)
{
num26 = 192;
}
else
{
if (Main.tile[i, j].type == 76)
{
num26 = 214;
}
else
{
if (Main.tile[i, j].type == 78)
{
num26 = 222;
}
else
{
if (Main.tile[i, j].type == 81)
{
num26 = 275;
}
else
{
if (Main.tile[i, j].type == 80)
{
num26 = 276;
}
else
{
if (Main.tile[i, j].type == 188)
{
num26 = 276;
}
else
{
if (Main.tile[i, j].type == 107)
{
num26 = 364;
}
else
{
if (Main.tile[i, j].type == 108)
{
num26 = 365;
}
else
{
if (Main.tile[i, j].type == 111)
{
num26 = 366;
}
else
{
if (Main.tile[i, j].type == 150)
{
num26 = 604;
}
else
{
if (Main.tile[i, j].type == 112)
{
num26 = 370;
}
else
{
if (Main.tile[i, j].type == 116)
{
num26 = 408;
}
else
{
if (Main.tile[i, j].type == 117)
{
num26 = 409;
}
else
{
if (Main.tile[i, j].type == 129)
{
num26 = 502;
}
else
{
if (Main.tile[i, j].type == 118)
{
num26 = 412;
}
else
{
if (Main.tile[i, j].type == 119)
{
num26 = 413;
}
else
{
if (Main.tile[i, j].type == 120)
{
num26 = 414;
}
else
{
if (Main.tile[i, j].type == 121)
{
num26 = 415;
}
else
{
if (Main.tile[i, j].type == 122)
{
num26 = 416;
}
else
{
if (Main.tile[i, j].type == 136)
{
num26 = 538;
}
else
{
if (Main.tile[i, j].type == 137)
{
int num40 = (int)(Main.tile[i, j].frameY / 18);
if (num40 == 0)
{
num26 = 539;
}
if (num40 == 1)
{
num26 = 1146;
}
if (num40 == 2)
{
num26 = 1147;
}
if (num40 == 3)
{
num26 = 1148;
}
if (num40 == 4)
{
num26 = 1149;
}
}
else
{
if (Main.tile[i, j].type == 141)
{
num26 = 580;
}
else
{
if (Main.tile[i, j].type == 145)
{
num26 = 586;
}
else
{
if (Main.tile[i, j].type == 146)
{
num26 = 591;
}
else
{
if (Main.tile[i, j].type == 147)
{
num26 = 593;
}
else
{
if (Main.tile[i, j].type == 148)
{
num26 = 594;
}
else
{
if (Main.tile[i, j].type == 153)
{
num26 = 611;
}
else
{
if (Main.tile[i, j].type == 154)
{
num26 = 612;
}
else
{
if (Main.tile[i, j].type == 155)
{
num26 = 613;
}
else
{
if (Main.tile[i, j].type == 156)
{
num26 = 614;
}
else
{
if (Main.tile[i, j].type == 160)
{
num26 = 662;
}
else
{
if (Main.tile[i, j].type == 175)
{
num26 = 717;
}
else
{
if (Main.tile[i, j].type == 176)
{
num26 = 718;
}
else
{
if (Main.tile[i, j].type == 177)
{
num26 = 719;
}
else
{
if (Main.tile[i, j].type == 163)
{
num26 = 833;
}
else
{
if (Main.tile[i, j].type == 164)
{
num26 = 834;
}
else
{
if (Main.tile[i, j].type == 200)
{
num26 = 835;
}
else
{
if (Main.tile[i, j].type == 210)
{
num26 = 937;
}
else
{
if (Main.tile[i, j].type == 135)
{
int num41 = (int)(Main.tile[i, j].frameY / 18);
if (num41 == 0)
{
num26 = 529;
}
if (num41 == 1)
{
num26 = 541;
}
if (num41 == 2)
{
num26 = 542;
}
if (num41 == 3)
{
num26 = 543;
}
if (num41 == 4)
{
num26 = 852;
}
if (num41 == 5)
{
num26 = 853;
}
if (num41 == 6)
{
num26 = 1151;
}
}
else
{
if (Main.tile[i, j].type == 144)
{
if (Main.tile[i, j].frameX == 0)
{
num26 = 583;
}
if (Main.tile[i, j].frameX == 18)
{
num26 = 584;
}
if (Main.tile[i, j].frameX == 36)
{
num26 = 585;
}
}
else
{
if (Main.tile[i, j].type == 130)
{
num26 = 511;
}
else
{
if (Main.tile[i, j].type == 131)
{
num26 = 512;
}
else
{
if (Main.tile[i, j].type == 61 || Main.tile[i, j].type == 74)
{
if (Main.tile[i, j].frameX == 144 && Main.tile[i, j].type == 61)
{
Item.NewItem(i * 16, j * 16, 16, 16, 331, WorldGen.genRand.Next(2, 4), false, 0, false);
}
else
{
if (Main.tile[i, j].frameX == 162 && Main.tile[i, j].type == 61)
{
num26 = 223;
}
else
{
if (Main.tile[i, j].frameX >= 108 && Main.tile[i, j].frameX <= 126 && Main.tile[i, j].type == 61 && WorldGen.genRand.Next(20) == 0)
{
num26 = 208;
}
else
{
if (WorldGen.genRand.Next(100) == 0)
{
num26 = 195;
}
}
}
}
}
else
{
if (Main.tile[i, j].type == 59 || Main.tile[i, j].type == 60)
{
num26 = 176;
}
else
{
if (Main.tile[i, j].type == 190)
{
num26 = 183;
}
else
{
if (Main.tile[i, j].type == 71 || Main.tile[i, j].type == 72)
{
if (WorldGen.genRand.Next(50) == 0)
{
num26 = 194;
}
else
{
if (WorldGen.genRand.Next(2) == 0)
{
num26 = 183;
}
}
}
else
{
if (Main.tile[i, j].type >= 63 && Main.tile[i, j].type <= 68)
{
num26 = (int)(Main.tile[i, j].type - 63 + 177);
}
else
{
if (Main.tile[i, j].type == 50)
{
if (Main.tile[i, j].frameX == 90)
{
num26 = 165;
}
else
{
num26 = 149;
}
}
else
{
if (Main.tileAlch[(int)Main.tile[i, j].type] && Main.tile[i, j].type > 82)
{
int num42 = (int)(Main.tile[i, j].frameX / 18);
bool flag = false;
if (Main.tile[i, j].type == 84)
{
flag = true;
}
if (num42 == 0 && Main.dayTime)
{
flag = true;
}
if (num42 == 1 && !Main.dayTime)
{
flag = true;
}
if (num42 == 3 && Main.bloodMoon)
{
flag = true;
}
num26 = 313 + num42;
if (flag)
{
Item.NewItem(i * 16, j * 16, 16, 16, 307 + num42, WorldGen.genRand.Next(1, 4), false, 0, false);
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
if (num26 > 0)
{
Item.NewItem(i * 16, j * 16, 16, 16, num26, 1, false, -1, false);
}
}
Main.tile[i, j].active(false);
Main.tile[i, j].halfBrick(false);
Main.tile[i, j].frameX = -1;
Main.tile[i, j].frameY = -1;
Main.tile[i, j].color(0);
Main.tile[i, j].frameNumber(0);
if (Main.tile[i, j].type == 58 && j > Main.maxTilesY - 200)
{
Main.tile[i, j].lava(true);
Main.tile[i, j].liquid = 128;
}
Main.tile[i, j].type = 0;
Main.tile[i, j].inActive(false);
WorldGen.SquareTileFrame(i, j, true);
}
}
}
public static bool PlayerLOS(int x, int y)
{
Rectangle rectangle = new Rectangle(x * 16, y * 16, 16, 16);
for (int i = 0; i < 255; i++)
{
if (Main.player[i].active)
{
Rectangle value = new Rectangle((int)((double)Main.player[i].position.X + (double)Main.player[i].width * 0.5 - (double)NPC.sWidth * 0.6), (int)((double)Main.player[i].position.Y + (double)Main.player[i].height * 0.5 - (double)NPC.sHeight * 0.6), (int)((double)NPC.sWidth * 1.2), (int)((double)NPC.sHeight * 1.2));
if (rectangle.Intersects(value))
{
return true;
}
}
}
return false;
}
public static bool Chlorophyte(int i, int j)
{
int num = 25;
int num2 = 150;
int num3 = 30;
int num4 = 80;
int num5 = 0;
for (int k = i - num3; k < i + num3; k++)
{
for (int l = j - num3; l < j + num3; l++)
{
if (k < Main.maxTilesX - 10 && k > 10 && Main.tile[k, l].active() && Main.tile[k, l].type == 211)
{
num5++;
}
}
}
if (num5 > num)
{
return false;
}
num5 = 0;
for (int m = i - num4; m < i + num4; m++)
{
for (int n = j - num4; n < j + num4; n++)
{
if (m < Main.maxTilesX - 10 && m > 10 && Main.tile[m, n].active() && Main.tile[m, n].type == 211)
{
num5++;
}
}
}
return num5 <= num2;
}
public static void hardUpdateWorld(int i, int j)
{
if (Main.hardMode)
{
if (Main.tile[i, j].inActive())
{
return;
}
int type = (int)Main.tile[i, j].type;
if ((type == 117 || type == 164) && (double)j > Main.rockLayer && Main.rand.Next(110) == 0)
{
int num = WorldGen.genRand.Next(4);
int num2 = 0;
int num3 = 0;
if (num == 0)
{
num2 = -1;
}
else
{
if (num == 1)
{
num2 = 1;
}
else
{
if (num == 0)
{
num3 = -1;
}
else
{
num3 = 1;
}
}
}
if (!Main.tile[i + num2, j + num3].active())
{
int num4 = 0;
int num5 = 6;
for (int k = i - num5; k <= i + num5; k++)
{
for (int l = j - num5; l <= j + num5; l++)
{
if (Main.tile[k, l].active() && Main.tile[k, l].type == 129)
{
num4++;
}
}
}
if (num4 < 2)
{
WorldGen.PlaceTile(i + num2, j + num3, 129, true, false, -1, 0);
NetMessage.SendTileSquare(-1, i + num2, j + num3, 1);
}
}
}
if ((double)j > (Main.worldSurface + Main.rockLayer) / 2.0)
{
if (type == 60 && WorldGen.genRand.Next(300) == 0)
{
int num6 = i + WorldGen.genRand.Next(-10, 11);
int num7 = j + WorldGen.genRand.Next(-10, 11);
if (Main.tile[num6, num7].active() && Main.tile[num6, num7].type == 59 && (!Main.tile[num6, num7 - 1].active() || (Main.tile[num6, num7 - 1].type != 5 && Main.tile[num6, num7 - 1].type != 236 && Main.tile[num6, num7 - 1].type != 238)) && WorldGen.Chlorophyte(num6, num7))
{
Main.tile[num6, num7].type = 211;
WorldGen.SquareTileFrame(num6, num7, true);
}
}
if (type == 211)
{
int num8 = i;
int num9 = j;
int num10 = WorldGen.genRand.Next(4);
if (num10 == 0)
{
num8++;
}
if (num10 == 1)
{
num8--;
}
if (num10 == 2)
{
num9++;
}
if (num10 == 3)
{
num9--;
}
if (Main.tile[num8, num9].active() && (Main.tile[num8, num9].type == 59 || Main.tile[num8, num9].type == 60) && WorldGen.Chlorophyte(num8, num9))
{
Main.tile[num8, num9].type = 211;
WorldGen.SquareTileFrame(num8, num9, true);
}
}
}
if (NPC.downedPlantBoss && WorldGen.genRand.Next(3) != 0)
{
return;
}
if (type == 23 || type == 25 || type == 32 || type == 112 || type == 153 || type == 163)
{
bool flag = true;
while (flag)
{
flag = false;
int num11 = i + WorldGen.genRand.Next(-3, 4);
int num12 = j + WorldGen.genRand.Next(-3, 4);
if (Main.tile[num11, num12 - 1].type != 27)
{
if (Main.tile[num11, num12].type == 2)
{
if (WorldGen.genRand.Next(2) == 0)
{
flag = true;
}
Main.tile[num11, num12].type = 23;
WorldGen.SquareTileFrame(num11, num12, true);
NetMessage.SendTileSquare(-1, num11, num12, 1);
}
else
{
if (Main.tile[num11, num12].type == 1 || Main.tileMoss[(int)Main.tile[num11, num12].type])
{
if (WorldGen.genRand.Next(2) == 0)
{
flag = true;
}
Main.tile[num11, num12].type = 25;
WorldGen.SquareTileFrame(num11, num12, true);
NetMessage.SendTileSquare(-1, num11, num12, 1);
}
else
{
if (Main.tile[num11, num12].type == 53)
{
if (WorldGen.genRand.Next(2) == 0)
{
flag = true;
}
Main.tile[num11, num12].type = 112;
WorldGen.SquareTileFrame(num11, num12, true);
NetMessage.SendTileSquare(-1, num11, num12, 1);
}
else
{
if (Main.tile[num11, num12].type == 59)
{
if (WorldGen.genRand.Next(2) == 0)
{
flag = true;
}
Main.tile[num11, num12].type = 0;
WorldGen.SquareTileFrame(num11, num12, true);
NetMessage.SendTileSquare(-1, num11, num12, 1);
}
else
{
if (Main.tile[num11, num12].type == 60)
{
if (WorldGen.genRand.Next(2) == 0)
{
flag = true;
}
Main.tile[num11, num12].type = 23;
WorldGen.SquareTileFrame(num11, num12, true);
NetMessage.SendTileSquare(-1, num11, num12, 1);
}
else
{
if (Main.tile[num11, num12].type == 69)
{
if (WorldGen.genRand.Next(2) == 0)
{
flag = true;
}
Main.tile[num11, num12].type = 32;
WorldGen.SquareTileFrame(num11, num12, true);
NetMessage.SendTileSquare(-1, num11, num12, 1);
}
else
{
if (Main.tile[num11, num12].type == 161)
{
if (WorldGen.genRand.Next(2) == 0)
{
flag = true;
}
Main.tile[num11, num12].type = 163;
WorldGen.SquareTileFrame(num11, num12, true);
NetMessage.SendTileSquare(-1, num11, num12, 1);
}
}
}
}
}
}
}
}
}
}
if (type == 199 || type == 200 || type == 201 || type == 203 || type == 205 || type == 234)
{
bool flag2 = true;
while (flag2)
{
flag2 = false;
int num13 = i + WorldGen.genRand.Next(-3, 4);
int num14 = j + WorldGen.genRand.Next(-3, 4);
if (Main.tile[num13, num14 - 1].type != 27)
{
if (Main.tile[num13, num14].type == 2)
{
if (WorldGen.genRand.Next(2) == 0)
{
flag2 = true;
}
Main.tile[num13, num14].type = 199;
WorldGen.SquareTileFrame(num13, num14, true);
NetMessage.SendTileSquare(-1, num13, num14, 1);
}
else
{
if (Main.tile[num13, num14].type == 1 || Main.tileMoss[(int)Main.tile[num13, num14].type])
{
if (WorldGen.genRand.Next(2) == 0)
{
flag2 = true;
}
Main.tile[num13, num14].type = 203;
WorldGen.SquareTileFrame(num13, num14, true);
NetMessage.SendTileSquare(-1, num13, num14, 1);
}
else
{
if (Main.tile[num13, num14].type == 53)
{
if (WorldGen.genRand.Next(2) == 0)
{
flag2 = true;
}
Main.tile[num13, num14].type = 234;
WorldGen.SquareTileFrame(num13, num14, true);
NetMessage.SendTileSquare(-1, num13, num14, 1);
}
else
{
if (Main.tile[num13, num14].type == 59)
{
if (WorldGen.genRand.Next(2) == 0)
{
flag2 = true;
}
Main.tile[num13, num14].type = 0;
WorldGen.SquareTileFrame(num13, num14, true);
NetMessage.SendTileSquare(-1, num13, num14, 1);
}
else
{
if (Main.tile[num13, num14].type == 60)
{
if (WorldGen.genRand.Next(2) == 0)
{
flag2 = true;
}
Main.tile[num13, num14].type = 199;
WorldGen.SquareTileFrame(num13, num14, true);
NetMessage.SendTileSquare(-1, num13, num14, 1);
}
else
{
if (Main.tile[num13, num14].type == 69)
{
if (WorldGen.genRand.Next(2) == 0)
{
flag2 = true;
}
WorldGen.KillTile(num13, num14, false, false, false);
WorldGen.SquareTileFrame(num13, num14, true);
NetMessage.SendTileSquare(-1, num13, num14, 1);
}
else
{
if (Main.tile[num13, num14].type == 161)
{
if (WorldGen.genRand.Next(2) == 0)
{
flag2 = true;
}
Main.tile[num13, num14].type = 200;
WorldGen.SquareTileFrame(num13, num14, true);
NetMessage.SendTileSquare(-1, num13, num14, 1);
}
}
}
}
}
}
}
}
}
}
if (type == 109 || type == 110 || type == 113 || type == 115 || type == 116 || type == 117 || type == 164)
{
bool flag3 = true;
while (flag3)
{
flag3 = false;
int num15 = i + WorldGen.genRand.Next(-3, 4);
int num16 = j + WorldGen.genRand.Next(-3, 4);
if (Main.tile[num15, num16].type == 2)
{
if (WorldGen.genRand.Next(2) == 0)
{
flag3 = true;
}
Main.tile[num15, num16].type = 109;
WorldGen.SquareTileFrame(num15, num16, true);
NetMessage.SendTileSquare(-1, num15, num16, 1);
}
else
{
if (Main.tile[num15, num16].type == 1 || Main.tileMoss[(int)Main.tile[num15, num16].type])
{
if (WorldGen.genRand.Next(2) == 0)
{
flag3 = true;
}
Main.tile[num15, num16].type = 117;
WorldGen.SquareTileFrame(num15, num16, true);
NetMessage.SendTileSquare(-1, num15, num16, 1);
}
else
{
if (Main.tile[num15, num16].type == 53)
{
if (WorldGen.genRand.Next(2) == 0)
{
flag3 = true;
}
Main.tile[num15, num16].type = 116;
WorldGen.SquareTileFrame(num15, num16, true);
NetMessage.SendTileSquare(-1, num15, num16, 1);
}
else
{
if (Main.tile[num15, num16].type == 161)
{
if (WorldGen.genRand.Next(2) == 0)
{
flag3 = true;
}
Main.tile[num15, num16].type = 164;
WorldGen.SquareTileFrame(num15, num16, true);
NetMessage.SendTileSquare(-1, num15, num16, 1);
}
}
}
}
}
}
}
}
public static bool SolidTile(int i, int j)
{
try
{
if (Main.tile[i, j] == null)
{
bool result = true;
return result;
}
if (Main.tile[i, j].active() && Main.tileSolid[(int)Main.tile[i, j].type] && !Main.tileSolidTop[(int)Main.tile[i, j].type] && !Main.tile[i, j].halfBrick() && Main.tile[i, j].slope() == 0 && !Main.tile[i, j].inActive())
{
bool result = true;
return result;
}
}
catch
{
}
return false;
}
public static bool SolidTile2(int i, int j)
{
try
{
if (Main.tile[i, j] == null)
{
bool result = true;
return result;
}
if (Main.tile[i, j].active() && Main.tileSolid[(int)Main.tile[i, j].type] && Main.tile[i, j].slope() == 0 && !Main.tile[i, j].halfBrick() && !Main.tile[i, j].inActive())
{
bool result = true;
return result;
}
}
catch
{
}
return false;
}
public static bool SolidTileNotDoor(int i, int j)
{
try
{
if (Main.tile[i, j] == null)
{
bool result = true;
return result;
}
if (Main.tile[i, j].active() && Main.tileSolid[(int)Main.tile[i, j].type] && Main.tile[i, j].slope() == 0 && Main.tile[i, j].type != 10 && !Main.tile[i, j].halfBrick() && !Main.tile[i, j].inActive())
{
bool result = true;
return result;
}
}
catch
{
}
return false;
}
public static Vector2 Hive(int i, int j)
{
double num = (double)WorldGen.genRand.Next(12, 21);
double num2 = num;
float num3 = (float)WorldGen.genRand.Next(10, 21);
Vector2 value;
value.X = (float)i;
value.Y = (float)j;
Vector2 value2;
value2.X = (float)WorldGen.genRand.Next(-10, 11) * 0.2f;
value2.Y = (float)WorldGen.genRand.Next(-10, 11) * 0.2f;
while (num > 0.0 && num3 > 0f)
{
num = num2 * (double)(1f + (float)WorldGen.genRand.Next(-20, 20) * 0.01f);
num3 -= 1f;
int num4 = (int)((double)value.X - num);
int num5 = (int)((double)value.X + num);
int num6 = (int)((double)value.Y - num);
int num7 = (int)((double)value.Y + num);
if (num4 < 1)
{
num4 = 1;
}
if (num5 > Main.maxTilesX - 1)
{
num5 = Main.maxTilesX - 1;
}
if (num6 < 1)
{
num6 = 1;
}
if (num7 > Main.maxTilesY - 1)
{
num7 = Main.maxTilesY - 1;
}
for (int k = num4; k < num5; k++)
{
for (int l = num6; l < num7; l++)
{
float num8 = Math.Abs((float)k - value.X);
float num9 = Math.Abs((float)l - value.Y);
double num10 = Math.Sqrt((double)(num8 * num8 + num9 * num9));
if (num10 < num2 * 0.4 * (1.0 + (double)WorldGen.genRand.Next(-10, 11) * 0.005))
{
if (WorldGen.genRand.Next(3) == 0)
{
Main.tile[k, l].liquid = 255;
}
Main.tile[k, l].honey(true);
Main.tile[k, l].wall = 86;
Main.tile[k, l].active(false);
Main.tile[k, l].halfBrick(false);
Main.tile[k, l].slope(0);
WorldGen.SquareWallFrame(k, l, true);
}
else
{
if (num10 < num2 * 0.75 * (1.0 + (double)WorldGen.genRand.Next(-10, 11) * 0.005))
{
Main.tile[k, l].liquid = 0;
if (Main.tile[k, l].wall != 86)
{
Main.tile[k, l].active(true);
Main.tile[k, l].halfBrick(false);
Main.tile[k, l].slope(0);
Main.tile[k, l].type = 225;
}
}
}
if (num10 < num2 * 0.6 * (1.0 + (double)WorldGen.genRand.Next(-10, 11) * 0.005))
{
Main.tile[k, l].wall = 86;
}
WorldGen.SquareWallFrame(k, l, true);
WorldGen.SquareTileFrame(k, l, true);
}
}
value += value2;
num3 -= 1f;
value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
}
return new Vector2(value.X, value.Y);
}
public static void MineHouse(int i, int j)
{
if (i < 50 || i > Main.maxTilesX - 50 || j < 50 || j > Main.maxTilesY - 50)
{
return;
}
int num = 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))
{
return;
}
if (Main.tile[i, j].wall > 0)
{
return;
}
int num5 = j - num;
int num6 = j + num2;
for (int k = 0; k < 2; k++)
{
bool flag = true;
int num7 = i;
int num8 = j;
int num9 = -1;
int num10 = num3;
if (k == 1)
{
num9 = 1;
num10 = num4;
num7++;
}
while (flag)
{
if (num8 - num < num5)
{
num5 = num8 - num;
}
if (num8 + num2 > num6)
{
num6 = num8 + num2;
}
for (int l = 0; l < 2; l++)
{
int num11 = num8;
bool flag2 = true;
int num12 = num;
int num13 = -1;
if (l == 1)
{
num11++;
num12 = num2;
num13 = 1;
}
while (flag2)
{
if (num7 != i && Main.tile[num7 - num9, num11].wall != 27 && (WorldGen.SolidTile(num7 - num9, num11) || !Main.tile[num7 - num9, num11].active() || Main.tile[num7 - num9, num11].halfBrick() || Main.tile[num7 - num9, num11].slope() != 0))
{
Main.tile[num7 - num9, num11].active(true);
Main.tile[num7 - num9, num11].type = 30;
}
if (WorldGen.SolidTile(num7 - 1, num11) || Main.tile[num7 - 1, num11].halfBrick() || Main.tile[num7 - 1, num11].slope() != 0)
{
Main.tile[num7 - 1, num11].type = 30;
}
if (WorldGen.SolidTile(num7 + 1, num11) || Main.tile[num7 + 1, num11].halfBrick() || Main.tile[num7 + 1, num11].slope() != 0)
{
Main.tile[num7 + 1, num11].type = 30;
}
if (WorldGen.SolidTile(num7, num11) || Main.tile[num7, num11].halfBrick() || Main.tile[num7, num11].slope() != 0)
{
int num14 = 0;
if (WorldGen.SolidTile(num7 - 1, num11))
{
num14++;
}
if (WorldGen.SolidTile(num7 + 1, num11))
{
num14++;
}
if (WorldGen.SolidTile(num7, num11 - 1))
{
num14++;
}
if (WorldGen.SolidTile(num7, num11 + 1))
{
num14++;
}
if (num14 < 2)
{
Main.tile[num7, num11].active(false);
}
else
{
flag2 = false;
Main.tile[num7, num11].type = 30;
}
}
else
{
Main.tile[num7, num11].wall = 27;
Main.tile[num7, num11].liquid = 0;
Main.tile[num7, num11].lava(false);
}
num11 += num13;
num12--;
if (num12 <= 0)
{
if (!Main.tile[num7, num11].active())
{
Main.tile[num7, num11].active(true);
Main.tile[num7, num11].type = 30;
}
flag2 = false;
}
}
}
num10--;
num7 += num9;
if (WorldGen.SolidTile(num7, num8))
{
int num15 = 0;
int num16 = 0;
int num17 = num8;
bool flag3 = true;
while (flag3)
{
num17--;
num15++;
if (WorldGen.SolidTile(num7 - num9, num17))
{
num15 = 999;
flag3 = false;
}
else
{
if (!WorldGen.SolidTile(num7, num17))
{
flag3 = false;
}
}
}
num17 = num8;
flag3 = true;
while (flag3)
{
num17++;
num16++;
if (WorldGen.SolidTile(num7 - num9, num17))
{
num16 = 999;
flag3 = false;
}
else
{
if (!WorldGen.SolidTile(num7, num17))
{
flag3 = false;
}
}
}
if (num16 <= num15)
{
if (num16 > num2)
{
num10 = 0;
}
else
{
num8 += num16 + 1;
}
}
else
{
if (num15 > num)
{
num10 = 0;
}
else
{
num8 -= num15 + 1;
}
}
}
if (num10 <= 0)
{
flag = false;
}
}
}
int num18 = i - num3 - 1;
int num19 = i + num4 + 2;
int num20 = num5 - 1;
int num21 = num6 + 2;
for (int m = num18; m < num19; m++)
{
for (int n = num20; n < num21; n++)
{
if (Main.tile[m, n].wall == 27 && !Main.tile[m, n].active())
{
if (Main.tile[m - 1, n].wall != 27 && m < i && !WorldGen.SolidTile(m - 1, n))
{
WorldGen.PlaceTile(m, n, 30, true, false, -1, 0);
Main.tile[m, n].wall = 0;
}
if (Main.tile[m + 1, n].wall != 27 && m > i && !WorldGen.SolidTile(m + 1, n))
{
WorldGen.PlaceTile(m, n, 30, true, false, -1, 0);
Main.tile[m, n].wall = 0;
}
for (int num22 = m - 1; num22 <= m + 1; num22++)
{
for (int num23 = n - 1; num23 <= n + 1; num23++)
{
if (WorldGen.SolidTile(num22, num23))
{
Main.tile[num22, num23].type = 30;
}
}
}
}
if (Main.tile[m, n].type == 30 && Main.tile[m - 1, n].wall == 27 && Main.tile[m + 1, n].wall == 27 && (Main.tile[m, n - 1].wall == 27 || Main.tile[m, n - 1].active()) && (Main.tile[m, n + 1].wall == 27 || Main.tile[m, n + 1].active()))
{
Main.tile[m, n].active(false);
Main.tile[m, n].wall = 27;
}
}
}
for (int num24 = num18; num24 < num19; num24++)
{
for (int num25 = num20; num25 < num21; num25++)
{
if (Main.tile[num24, num25].type == 30)
{
if (Main.tile[num24 - 1, num25].wall == 27 && Main.tile[num24 + 1, num25].wall == 27 && !Main.tile[num24 - 1, num25].active() && !Main.tile[num24 + 1, num25].active())
{
Main.tile[num24, num25].active(false);
Main.tile[num24, num25].wall = 27;
}
if (Main.tile[num24, num25 - 1].type != 21 && Main.tile[num24 - 1, num25].wall == 27 && Main.tile[num24 + 1, num25].type == 30 && Main.tile[num24 + 2, num25].wall == 27 && !Main.tile[num24 - 1, num25].active() && !Main.tile[num24 + 2, num25].active())
{
Main.tile[num24, num25].active(false);
Main.tile[num24, num25].wall = 27;
Main.tile[num24 + 1, num25].active(false);
Main.tile[num24 + 1, num25].wall = 27;
}
if (Main.tile[num24, num25 - 1].wall == 27 && Main.tile[num24, num25 + 1].wall == 27 && !Main.tile[num24, num25 - 1].active() && !Main.tile[num24, num25 + 1].active())
{
Main.tile[num24, num25].active(false);
Main.tile[num24, num25].wall = 27;
}
}
}
}
for (int num26 = num18; num26 < num19; num26++)
{
for (int num27 = num21; num27 > num20; num27--)
{
bool flag4 = false;
if (Main.tile[num26, num27].active() && Main.tile[num26, num27].type == 30)
{
int num28 = -1;
for (int num29 = 0; num29 < 2; num29++)
{
if (!WorldGen.SolidTile(num26 + num28, num27) && Main.tile[num26 + num28, num27].wall == 0)
{
int num30 = 0;
int num31 = num27;
int num32 = num27;
while (Main.tile[num26, num31].active() && Main.tile[num26, num31].type == 30 && !WorldGen.SolidTile(num26 + num28, num31) && Main.tile[num26 + num28, num31].wall == 0)
{
num31--;
num30++;
}
num31++;
int num33 = num31 + 1;
if (num30 > 4)
{
if (WorldGen.genRand.Next(2) == 0)
{
num31 = num32 - 1;
bool flag5 = true;
for (int num34 = num26 - 2; num34 <= num26 + 2; num34++)
{
for (int num35 = num31 - 2; num35 <= num31; num35++)
{
if (num34 != num26 && Main.tile[num34, num35].active())
{
flag5 = false;
}
}
}
if (flag5)
{
Main.tile[num26, num31].active(false);
Main.tile[num26, num31 - 1].active(false);
Main.tile[num26, num31 - 2].active(false);
WorldGen.PlaceTile(num26, num31, 10, true, false, -1, 0);
flag4 = true;
}
}
if (!flag4)
{
for (int num36 = num33; num36 < num32; num36++)
{
Main.tile[num26, num36].type = 124;
}
}
}
}
num28 = 1;
}
}
if (flag4)
{
break;
}
}
}
int num37 = WorldGen.genRand.Next(1, 2);
if (WorldGen.genRand.Next(4) == 0)
{
num37 = 0;
}
if (WorldGen.genRand.Next(6) == 0)
{
num37++;
}
if (WorldGen.genRand.Next(10) == 0)
{
num37++;
}
for (int num38 = 0; num38 < num37; num38++)
{
int num39 = 0;
int num40 = WorldGen.genRand.Next(num18, num19);
int num41 = WorldGen.genRand.Next(num20, num21);
while (!Main.wallHouse[(int)Main.tile[num40, num41].wall] || Main.tile[num40, num41].active())
{
num39++;
if (num39 > 1000)
{
break;
}
num40 = WorldGen.genRand.Next(num18, num19);
num41 = WorldGen.genRand.Next(num20, num21);
}
if (num39 > 1000)
{
break;
}
int num43;
int num44;
int num45;
int num46;
for (int num42 = 0; num42 < 2; num42++)
{
num43 = num40;
num44 = num40;
while (!Main.tile[num43, num41].active() && Main.wallHouse[(int)Main.tile[num43, num41].wall])
{
num43--;
}
num43++;
while (!Main.tile[num44, num41].active() && Main.wallHouse[(int)Main.tile[num44, num41].wall])
{
num44++;
}
num44--;
i = (num43 + num44) / 2;
num45 = num41;
num46 = num41;
while (!Main.tile[num40, num45].active() && Main.wallHouse[(int)Main.tile[num40, num45].wall])
{
num45--;
}
num45++;
while (!Main.tile[num40, num46].active() && Main.wallHouse[(int)Main.tile[num40, num46].wall])
{
num46++;
}
num46--;
num41 = (num45 + num46) / 2;
}
num43 = num40;
num44 = num40;
while (!Main.tile[num43, num41].active() && !Main.tile[num43, num41 - 1].active() && !Main.tile[num43, num41 + 1].active())
{
num43--;
}
num43++;
while (!Main.tile[num44, num41].active() && !Main.tile[num44, num41 - 1].active() && !Main.tile[num44, num41 + 1].active())
{
num44++;
}
num44--;
num45 = num41;
num46 = num41;
while (!Main.tile[num40, num45].active() && !Main.tile[num40 - 1, num45].active() && !Main.tile[num40 + 1, num45].active())
{
num45--;
}
num45++;
while (!Main.tile[num40, num46].active() && !Main.tile[num40 - 1, num46].active() && !Main.tile[num40 + 1, num46].active())
{
num46++;
}
num46--;
num40 = (num43 + num44) / 2;
num41 = (num45 + num46) / 2;
int num47 = num44 - num43;
int num48 = num46 - num45;
if (num47 > 7 && num48 > 5)
{
int num49 = 0;
if (WorldGen.nearPicture2(i, num41))
{
num49 = -1;
}
if (num49 == 0)
{
Vector2 vector = WorldGen.randHousePicture();
int type = (int)vector.X;
int style = (int)vector.Y;
if (!WorldGen.nearPicture(num40, num41))
{
WorldGen.PlaceTile(num40, num41, type, true, false, -1, style);
}
}
}
}
for (int num50 = num18; num50 < num19; num50++)
{
bool flag6 = true;
for (int num51 = num20; num51 < num21; num51++)
{
for (int num52 = num50 - 3; num52 <= num50 + 3; num52++)
{
if (Main.tile[num52, num51].active() && (!WorldGen.SolidTile(num52, num51) || Main.tile[num52, num51].type == 10))
{
flag6 = false;
}
}
}
if (flag6)
{
for (int num53 = num20; num53 < num21; num53++)
{
if (Main.tile[num50, num53].wall == 27 && !Main.tile[num50, num53].active())
{
WorldGen.PlaceTile(num50, num53, 124, true, false, -1, 0);
}
}
}
num50 += WorldGen.genRand.Next(4);
}
for (int num54 = 0; num54 < 4; num54++)
{
int num55 = WorldGen.genRand.Next(num18 + 2, num19 - 1);
int num56 = WorldGen.genRand.Next(num20 + 2, num21 - 1);
while (Main.tile[num55, num56].wall != 27)
{
num55 = WorldGen.genRand.Next(num18 + 2, num19 - 1);
num56 = WorldGen.genRand.Next(num20 + 2, num21 - 1);
}
while (Main.tile[num55, num56].active())
{
num56--;
}
while (!Main.tile[num55, num56].active())
{
num56++;
}
num56--;
if (Main.tile[num55, num56].wall == 27)
{
if (WorldGen.genRand.Next(3) == 0)
{
int num57 = WorldGen.genRand.Next(9);
if (num57 == 0)
{
num57 = 14;
}
if (num57 == 1)
{
num57 = 16;
}
if (num57 == 2)
{
num57 = 18;
}
if (num57 == 3)
{
num57 = 86;
}
if (num57 == 4)
{
num57 = 87;
}
if (num57 == 5)
{
num57 = 94;
}
if (num57 == 6)
{
num57 = 101;
}
if (num57 == 7)
{
num57 = 104;
}
if (num57 == 8)
{
num57 = 106;
}
WorldGen.PlaceTile(num55, num56, num57, true, false, -1, 0);
}
else
{
int style2 = WorldGen.genRand.Next(2, 43);
WorldGen.PlaceTile(num55, num56, 105, true, true, -1, style2);
}
}
}
for (int num58 = 0; num58 < 40; num58++)
{
int num59 = WorldGen.genRand.Next(num18 + 2, num19 - 1);
int num60 = WorldGen.genRand.Next(num20 + 2, num21 - 1);
while (Main.tile[num59, num60].wall != 27)
{
num59 = WorldGen.genRand.Next(num18 + 2, num19 - 1);
num60 = WorldGen.genRand.Next(num20 + 2, num21 - 1);
}
while (Main.tile[num59, num60].active())
{
num60--;
}
while (!Main.tile[num59, num60].active())
{
num60++;
}
num60--;
if (Main.tile[num59, num60].wall == 27 && WorldGen.genRand.Next(2) == 0)
{
int style3 = WorldGen.genRand.Next(22, 26);
WorldGen.PlaceTile(num59, num60, 186, true, false, -1, style3);
}
}
for (int num61 = 0; num61 < 20; num61++)
{
int num62 = WorldGen.genRand.Next(num18 + 2, num19 - 1);
int num63 = WorldGen.genRand.Next(num20 + 2, num21 - 1);
while (Main.tile[num62, num63].wall != 27)
{
num62 = WorldGen.genRand.Next(num18 + 2, num19 - 1);
num63 = WorldGen.genRand.Next(num20 + 2, num21 - 1);
}
while (Main.tile[num62, num63].active())
{
num63--;
}
while (!Main.tile[num62, num63].active())
{
num63++;
}
num63--;
if (Main.tile[num62, num63].wall == 27 && WorldGen.genRand.Next(2) == 0)
{
int x = WorldGen.genRand.Next(31, 34);
WorldGen.PlaceSmallPile(num62, num63, x, 1, 185);
}
}
for (int num64 = 0; num64 < 15; num64++)
{
int num65 = WorldGen.genRand.Next(num18 + 2, num19 - 1);
int num66 = WorldGen.genRand.Next(num20 + 2, num21 - 1);
while (Main.tile[num65, num66].wall != 27)
{
num65 = WorldGen.genRand.Next(num18 + 2, num19 - 1);
num66 = WorldGen.genRand.Next(num20 + 2, num21 - 1);
}
while (Main.tile[num65, num66].active())
{
num66--;
}
while (num66 > 0 && !Main.tile[num65, num66 - 1].active())
{
num66--;
}
if (Main.tile[num65, num66].wall == 27)
{
int style4 = 0;
int num67 = WorldGen.genRand.Next(10);
int num68;
if (num67 < 9)
{
num68 = -1;
}
else
{
num67 = WorldGen.genRand.Next(6);
if (num67 == 0)
{
num68 = 34;
}
else
{
if (num67 == 1)
{
num68 = 35;
}
else
{
if (num67 == 2)
{
num68 = 36;
}
else
{
if (num67 == 3)
{
num68 = 170;
}
else
{
if (num67 == 4)
{
num68 = 171;
}
else
{
num68 = 172;
}
}
}
}
}
}
if (num68 > 0)
{
WorldGen.PlaceTile(num65, num66, num68, true, false, -1, style4);
if ((int)Main.tile[num65, num66].type == num68)
{
if (num68 == 4)
{
Tile expr_151D = Main.tile[num65, num66];
expr_151D.frameX += 54;
}
else
{
int num69 = num65;
int num70 = num66;
num66 = num70 - (int)(Main.tile[num69, num70].frameY / 18);
num65 = (int)(Main.tile[num69, num70].frameX / 18);
if (num65 > 2)
{
num65 -= 3;
}
num65 = num69 - num65;
short num71 = 54;
if (Main.tile[num65, num66].frameX > 0)
{
num71 = -54;
}
for (int num72 = num65; num72 < num65 + 3; num72++)
{
for (int num73 = num66; num73 < num66 + 3; num73++)
{
Tile expr_15B6 = Main.tile[num72, num73];
expr_15B6.frameX += num71;
}
}
}
}
}
}
}
}
public static void CountTiles(int X)
{
if (X == 0)
{
WorldGen.totalEvil = WorldGen.totalEvil2;
WorldGen.totalSolid = WorldGen.totalSolid2;
WorldGen.totalGood = WorldGen.totalGood2;
float num = (float)WorldGen.totalGood / (float)WorldGen.totalSolid;
num = (float)Math.Round((double)(num * 100f));
float num2 = (float)WorldGen.totalEvil / (float)WorldGen.totalSolid;
num2 = (float)Math.Round((double)(num2 * 100f));
WorldGen.tGood = (byte)num;
WorldGen.tEvil = (byte)num2;
if (Main.netMode == 2)
{
NetMessage.SendData(57, -1, -1, "", 0, 0f, 0f, 0f, 0);
}
WorldGen.totalEvil2 = 0;
WorldGen.totalSolid2 = 0;
WorldGen.totalGood2 = 0;
}
for (int i = 0; i < Main.maxTilesY; i++)
{
int num3 = 1;
if ((double)i <= Main.worldSurface)
{
num3 *= 5;
}
if (WorldGen.SolidTile(X, i))
{
if (Main.tile[X, i].type == 109 || Main.tile[X, i].type == 116 || Main.tile[X, i].type == 117 || Main.tile[X, i].type == 164)
{
WorldGen.totalGood2 += num3;
}
else
{
if (Main.tile[X, i].type == 23 || Main.tile[X, i].type == 25 || Main.tile[X, i].type == 112 || Main.tile[X, i].type == 163)
{
WorldGen.totalEvil2 += num3;
}
else
{
if (Main.tile[X, i].type == 199 || Main.tile[X, i].type == 200 || Main.tile[X, i].type == 203 || Main.tile[X, i].type == 234)
{
WorldGen.totalEvil2 += num3;
}
}
}
WorldGen.totalSolid2 += num3;
}
}
}
public static void plantDye(int i, int j)
{
if (Main.tile[i, j].active())
{
if (i < 80 || i > Main.maxTilesX - 80 || j < 80 || j > Main.maxTilesY - 80)
{
return;
}
int num = 75;
if ((double)j < Main.worldSurface)
{
if (Main.tile[i, j - 1].active() && Main.tile[i, j - 1].type != 3 && Main.tile[i, j - 1].type != 51 && Main.tile[i, j - 1].type != 61 && Main.tile[i, j - 1].type != 73 && Main.tile[i, j - 1].type != 74 && Main.tile[i, j - 1].type != 184)
{
return;
}
for (int k = i - num; k < i + num; k++)
{
for (int l = j - num; l < j + num; l++)
{
if (Main.tile[k, l].active() && Main.tile[k, l].type == 227)
{
return;
}
}
}
if (Main.tile[i, j].type == 2 || Main.tile[i, j].type == 109)
{
if (Main.rand.Next(4) == 0)
{
WorldGen.PlaceTile(i, j - 1, 227, true, false, -1, 4);
return;
}
WorldGen.PlaceTile(i, j - 1, 227, true, false, -1, 3);
return;
}
else
{
if (Main.tile[i, j].type == 60)
{
if (Main.rand.Next(2) == 0)
{
WorldGen.PlaceTile(i, j - 1, 227, true, false, -1, 2);
return;
}
WorldGen.PlaceTile(i, j - 1, 227, true, false, -1, 4);
return;
}
else
{
if (Main.tile[i, j].type == 53 && Main.tile[i, j - 1].liquid == 255 && Main.tile[i, j - 2].liquid == 255)
{
WorldGen.PlaceTile(i, j - 1, 227, true, false, -1, 2);
return;
}
if (Main.tile[i, j].type != 80 || Main.tile[i - 1, j - 1].active() || Main.tile[i + 1, j - 1].active())
{
return;
}
try
{
bool flag = true;
for (int m = i - 5; m <= i + 5; m++)
{
for (int n = j - 5; n <= j + 15; n++)
{
if (Main.tile[m, n].active() && (Main.tile[m, n].type == 112 || Main.tile[m, n].type == 234))
{
flag = false;
}
}
}
if (flag)
{
WorldGen.PlaceTile(i, j - 1, 227, true, false, -1, 6);
}
return;
}
catch
{
return;
}
}
}
}
if (j < Main.maxTilesY - 200)
{
if (!Main.tile[i, j - 1].active() || Main.tile[i, j - 1].type == 3 || Main.tile[i, j - 1].type == 51 || Main.tile[i, j - 1].type == 61 || Main.tile[i, j - 1].type == 73 || Main.tile[i, j - 1].type == 74 || Main.tile[i, j - 1].type == 184)
{
for (int num2 = i - num; num2 < i + num; num2++)
{
for (int num3 = j - num; num3 < j + num; num3++)
{
if (Main.tile[num2, num3].active() && Main.tile[num2, num3].type == 227)
{
return;
}
}
}
if (Main.tile[i, j].type == 60)
{
if (Main.rand.Next(2) == 0)
{
WorldGen.PlaceTile(i, j - 1, 227, true, false, -1, 2);
}
else
{
if (Main.rand.Next(2) == 0)
{
WorldGen.PlaceTile(i, j - 1, 227, true, false, -1, 0);
}
else
{
WorldGen.PlaceTile(i, j - 1, 227, true, false, -1, 1);
}
}
}
else
{
if (Main.tile[i, j].type == 0 || Main.tile[i, j].type == 1 || Main.tile[i, j].type == 59)
{
if (Main.rand.Next(2) == 0)
{
WorldGen.PlaceTile(i, j - 1, 227, true, false, -1, 0);
}
else
{
WorldGen.PlaceTile(i, j - 1, 227, true, false, -1, 1);
}
}
else
{
if (Main.tile[i, j - 1].liquid == 255 && Main.tile[i, j - 2].liquid == 255)
{
WorldGen.PlaceTile(i, j - 1, 227, true, false, -1, 5);
}
}
}
}
if (!Main.tile[i, j + 1].active())
{
for (int num4 = i - num; num4 < i + num; num4++)
{
for (int num5 = j - num; num5 < j + num; num5++)
{
if (Main.tile[num4, num5].active() && Main.tile[num4, num5].type == 227)
{
return;
}
}
}
if (Main.tile[i, j].type == 0)
{
WorldGen.PlaceTile(i, j + 1, 227, true, false, -1, 7);
}
}
}
}
}
public static void UpdateWorld()
{
WorldGen.UpdateMech();
WorldGen.totalD++;
if (WorldGen.totalD >= 10)
{
WorldGen.totalD = 0;
WorldGen.CountTiles(WorldGen.totalX);
WorldGen.totalX++;
if (WorldGen.totalX >= Main.maxTilesX)
{
WorldGen.totalX = 0;
}
}
Liquid.skipCount++;
if (Liquid.skipCount > 1)
{
Liquid.UpdateLiquid();
Liquid.skipCount = 0;
}
float num = 3E-05f * (float)Main.worldRate;
float num2 = 1.5E-05f * (float)Main.worldRate;
bool flag = false;
WorldGen.spawnDelay++;
if (Main.invasionType > 0 || Main.eclipse)
{
WorldGen.spawnDelay = 0;
}
if (WorldGen.spawnDelay >= 20)
{
flag = true;
WorldGen.spawnDelay = 0;
if (WorldGen.spawnNPC != 37)
{
for (int i = 0; i < 200; i++)
{
if (Main.npc[i].active && Main.npc[i].homeless && Main.npc[i].townNPC)
{
WorldGen.spawnNPC = Main.npc[i].type;
break;
}
}
}
}
int num3 = 0;
while ((float)num3 < (float)(Main.maxTilesX * Main.maxTilesY) * num)
{
int num4 = WorldGen.genRand.Next(10, Main.maxTilesX - 10);
int num5 = WorldGen.genRand.Next(10, (int)Main.worldSurface - 1);
int num6 = num4 - 1;
int num7 = num4 + 2;
int num8 = num5 - 1;
int num9 = num5 + 2;
if (num6 < 10)
{
num6 = 10;
}
if (num7 > Main.maxTilesX - 10)
{
num7 = Main.maxTilesX - 10;
}
if (num8 < 10)
{
num8 = 10;
}
if (num9 > Main.maxTilesY - 10)
{
num9 = Main.maxTilesY - 10;
}
if (Main.tile[num4, num5] != null)
{
if (Main.tileAlch[(int)Main.tile[num4, num5].type])
{
WorldGen.GrowAlch(num4, num5);
}
if (Main.tile[num4, num5].liquid > 32)
{
if (Main.tile[num4, num5].active() && (Main.tile[num4, num5].type == 3 || Main.tile[num4, num5].type == 20 || Main.tile[num4, num5].type == 24 || Main.tile[num4, num5].type == 27 || Main.tile[num4, num5].type == 73))
{
WorldGen.KillTile(num4, num5, false, false, false);
if (Main.netMode == 2)
{
NetMessage.SendData(17, -1, -1, "", 0, (float)num4, (float)num5, 0f, 0);
}
}
}
else
{
if (Main.tile[num4, num5].nactive())
{
WorldGen.hardUpdateWorld(num4, num5);
if (Main.rand.Next(2000) == 0)
{
WorldGen.plantDye(num4, num5);
}
if (Main.tile[num4, num5].type == 80)
{
if (WorldGen.genRand.Next(15) == 0)
{
WorldGen.GrowCactus(num4, num5);
}
}
else
{
if (Main.tile[num4, num5].type == 53)
{
if (!Main.tile[num4, num8].active())
{
if (num4 < 250 || num4 > Main.maxTilesX - 250)
{
if (WorldGen.genRand.Next(500) == 0 && Main.tile[num4, num8].liquid == 255 && Main.tile[num4, num8 - 1].liquid == 255 && Main.tile[num4, num8 - 2].liquid == 255 && Main.tile[num4, num8 - 3].liquid == 255 && Main.tile[num4, num8 - 4].liquid == 255)
{
WorldGen.PlaceTile(num4, num8, 81, true, false, -1, 0);
if (Main.netMode == 2 && Main.tile[num4, num8].active())
{
NetMessage.SendTileSquare(-1, num4, num8, 1);
}
}
}
else
{
if (num4 > 400 && num4 < Main.maxTilesX - 400 && WorldGen.genRand.Next(300) == 0)
{
WorldGen.GrowCactus(num4, num5);
}
}
}
}
else
{
if (Main.tile[num4, num5].type == 116 || Main.tile[num4, num5].type == 112 || Main.tile[num4, num5].type == 234)
{
if (!Main.tile[num4, num8].active() && num4 > 400 && num4 < Main.maxTilesX - 400 && WorldGen.genRand.Next(300) == 0)
{
WorldGen.GrowCactus(num4, num5);
}
}
else
{
if (Main.tile[num4, num5].type == 147 || Main.tile[num4, num5].type == 161 || Main.tile[num4, num5].type == 163 || Main.tile[num4, num5].type == 164 || Main.tile[num4, num5].type == 200)
{
if (Main.rand.Next(10) == 0 && !Main.tile[num4, num5 + 1].active() && !Main.tile[num4, num5 + 2].active())
{
int num10 = num4 - 3;
int num11 = num4 + 4;
int num12 = 0;
for (int j = num10; j < num11; j++)
{
if (Main.tile[j, num5].type == 165 && Main.tile[j, num5].active())
{
num12++;
}
if (Main.tile[j, num5 + 1].type == 165 && Main.tile[j, num5 + 1].active())
{
num12++;
}
if (Main.tile[j, num5 + 2].type == 165 && Main.tile[j, num5 + 2].active())
{
num12++;
}
if (Main.tile[j, num5 + 3].type == 165 && Main.tile[j, num5 + 3].active())
{
num12++;
}
}
if (num12 < 2)
{
WorldGen.PlaceTight(num4, num5 + 1, 165, false);
WorldGen.SquareTileFrame(num4, num5 + 1, true);
if (Main.netMode == 2 && Main.tile[num4, num5 + 1].active())
{
NetMessage.SendTileSquare(-1, num4, num5 + 1, 3);
}
}
}
}
else
{
if (Main.tile[num4, num5].type == 78)
{
if (!Main.tile[num4, num8].active())
{
WorldGen.PlaceTile(num4, num8, 3, true, false, -1, 0);
if (Main.netMode == 2 && Main.tile[num4, num8].active())
{
NetMessage.SendTileSquare(-1, num4, num8, 1);
}
}
}
else
{
if (Main.tile[num4, num5].type == 2 || Main.tile[num4, num5].type == 23 || Main.tile[num4, num5].type == 32 || Main.tile[num4, num5].type == 109 || Main.tile[num4, num5].type == 199)
{
int num13 = (int)Main.tile[num4, num5].type;
if (!Main.tile[num4, num8].active() && WorldGen.genRand.Next(12) == 0 && num13 == 2)
{
WorldGen.PlaceTile(num4, num8, 3, true, false, -1, 0);
if (Main.tile[num4, num8].active())
{
Main.tile[num4, num8].color(Main.tile[num4, num5].color());
}
if (Main.netMode == 2 && Main.tile[num4, num8].active())
{
NetMessage.SendTileSquare(-1, num4, num8, 1);
}
}
if (!Main.tile[num4, num8].active() && WorldGen.genRand.Next(10) == 0 && num13 == 23)
{
WorldGen.PlaceTile(num4, num8, 24, true, false, -1, 0);
if (Main.tile[num4, num8].active())
{
Main.tile[num4, num8].color(Main.tile[num4, num5].color());
}
if (Main.netMode == 2 && Main.tile[num4, num8].active())
{
NetMessage.SendTileSquare(-1, num4, num8, 1);
}
}
if (!Main.tile[num4, num8].active() && WorldGen.genRand.Next(10) == 0 && num13 == 109)
{
WorldGen.PlaceTile(num4, num8, 110, true, false, -1, 0);
if (Main.tile[num4, num8].active())
{
Main.tile[num4, num8].color(Main.tile[num4, num5].color());
}
if (Main.netMode == 2 && Main.tile[num4, num8].active())
{
NetMessage.SendTileSquare(-1, num4, num8, 1);
}
}
if (!Main.tile[num4, num8].active() && WorldGen.genRand.Next(10) == 0 && num13 == 199)
{
WorldGen.PlaceTile(num4, num8, 201, true, false, -1, 0);
if (Main.tile[num4, num8].active())
{
Main.tile[num4, num8].color(Main.tile[num4, num5].color());
}
if (Main.netMode == 2 && Main.tile[num4, num8].active())
{
NetMessage.SendTileSquare(-1, num4, num8, 1);
}
}
bool flag2 = false;
for (int k = num6; k < num7; k++)
{
for (int l = num8; l < num9; l++)
{
if ((num4 != k || num5 != l) && Main.tile[k, l].active())
{
if (num13 == 32)
{
num13 = 23;
}
if (Main.tile[k, l].type == 0 || (num13 == 23 && Main.tile[k, l].type == 2) || (num13 == 199 && Main.tile[k, l].type == 2) || (num13 == 23 && Main.tile[k, l].type == 109))
{
WorldGen.SpreadGrass(k, l, 0, num13, false, Main.tile[num4, num5].color());
if (num13 == 23)
{
WorldGen.SpreadGrass(k, l, 2, num13, false, Main.tile[num4, num5].color());
}
if (num13 == 23)
{
WorldGen.SpreadGrass(k, l, 109, num13, false, Main.tile[num4, num5].color());
}
if (num13 == 199)
{
WorldGen.SpreadGrass(k, l, 2, num13, false, Main.tile[num4, num5].color());
}
if (num13 == 199)
{
WorldGen.SpreadGrass(k, l, 109, num13, false, Main.tile[num4, num5].color());
}
if ((int)Main.tile[k, l].type == num13)
{
WorldGen.SquareTileFrame(k, l, true);
flag2 = true;
}
}
if (Main.tile[k, l].type == 0 || (num13 == 109 && Main.tile[k, l].type == 2) || (num13 == 109 && Main.tile[k, l].type == 23) || (num13 == 109 && Main.tile[k, l].type == 199))
{
WorldGen.SpreadGrass(k, l, 0, num13, false, Main.tile[num4, num5].color());
if (num13 == 109)
{
WorldGen.SpreadGrass(k, l, 2, num13, false, Main.tile[num4, num5].color());
}
if (num13 == 109)
{
WorldGen.SpreadGrass(k, l, 23, num13, false, Main.tile[num4, num5].color());
}
if (num13 == 109)
{
WorldGen.SpreadGrass(k, l, 199, num13, false, Main.tile[num4, num5].color());
}
if ((int)Main.tile[k, l].type == num13)
{
WorldGen.SquareTileFrame(k, l, true);
flag2 = true;
}
}
}
}
}
if (Main.netMode == 2 && flag2)
{
NetMessage.SendTileSquare(-1, num4, num5, 3);
}
}
else
{
if (Main.tile[num4, num5].type == 20 && WorldGen.genRand.Next(20) == 0 && !WorldGen.PlayerLOS(num4, num5))
{
WorldGen.GrowTree(num4, num5);
}
}
}
}
}
}
}
if (Main.tile[num4, num5].type == 3 && WorldGen.genRand.Next(20) == 0 && Main.tile[num4, num5].frameX != 144)
{
if ((Main.tile[num4, num5].frameX < 144 && Main.rand.Next(10) == 0) || (Main.tile[num4, num5 + 1].type == 78 && Main.rand.Next(2) == 0))
{
Main.tile[num4, num5].frameX = (short)(198 + WorldGen.genRand.Next(10) * 18);
}
Main.tile[num4, num5].type = 73;
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num4, num5, 3);
}
}
if (Main.tile[num4, num5].type == 110 && WorldGen.genRand.Next(20) == 0 && Main.tile[num4, num5].frameX < 144)
{
Main.tile[num4, num5].type = 113;
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num4, num5, 3);
}
}
if (Main.tile[num4, num5].type == 32 && WorldGen.genRand.Next(3) == 0)
{
int num14 = num4;
int num15 = num5;
int num16 = 0;
if (Main.tile[num14 + 1, num15].active() && Main.tile[num14 + 1, num15].type == 32)
{
num16++;
}
if (Main.tile[num14 - 1, num15].active() && Main.tile[num14 - 1, num15].type == 32)
{
num16++;
}
if (Main.tile[num14, num15 + 1].active() && Main.tile[num14, num15 + 1].type == 32)
{
num16++;
}
if (Main.tile[num14, num15 - 1].active() && Main.tile[num14, num15 - 1].type == 32)
{
num16++;
}
if (num16 < 3 || Main.tile[num4, num5].type == 23)
{
int num17 = WorldGen.genRand.Next(4);
if (num17 == 0)
{
num15--;
}
else
{
if (num17 == 1)
{
num15++;
}
else
{
if (num17 == 2)
{
num14--;
}
else
{
if (num17 == 3)
{
num14++;
}
}
}
}
if (!Main.tile[num14, num15].active())
{
num16 = 0;
if (Main.tile[num14 + 1, num15].active() && Main.tile[num14 + 1, num15].type == 32)
{
num16++;
}
if (Main.tile[num14 - 1, num15].active() && Main.tile[num14 - 1, num15].type == 32)
{
num16++;
}
if (Main.tile[num14, num15 + 1].active() && Main.tile[num14, num15 + 1].type == 32)
{
num16++;
}
if (Main.tile[num14, num15 - 1].active() && Main.tile[num14, num15 - 1].type == 32)
{
num16++;
}
if (num16 < 2)
{
int num18 = 7;
int num19 = num14 - num18;
int num20 = num14 + num18;
int num21 = num15 - num18;
int num22 = num15 + num18;
bool flag3 = false;
for (int m = num19; m < num20; m++)
{
for (int n = num21; n < num22; n++)
{
if (Math.Abs(m - num14) * 2 + Math.Abs(n - num15) < 9 && Main.tile[m, n].active() && Main.tile[m, n].type == 23 && Main.tile[m, n - 1].active() && Main.tile[m, n - 1].type == 32 && Main.tile[m, n - 1].liquid == 0)
{
flag3 = true;
break;
}
}
}
if (flag3)
{
Main.tile[num14, num15].type = 32;
Main.tile[num14, num15].active(true);
WorldGen.SquareTileFrame(num14, num15, true);
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num14, num15, 3);
}
}
}
}
}
}
}
else
{
if (flag && WorldGen.spawnNPC > 0)
{
if (Main.tile[num4, num5].wall == 34)
{
if (Main.rand.Next(4) == 0)
{
WorldGen.SpawnNPC(num4, num5);
}
}
else
{
WorldGen.SpawnNPC(num4, num5);
}
}
}
}
int num23 = 10;
if (Main.tile[num4, num5].wall == 81 || Main.tile[num4, num5].wall == 83 || (Main.tile[num4, num5].type == 199 && Main.tile[num4, num5].active()))
{
int num24 = num4 + WorldGen.genRand.Next(-2, 3);
int num25 = num5 + WorldGen.genRand.Next(-2, 3);
if (Main.tile[num24, num25].wall >= 63 && Main.tile[num24, num25].wall <= 68)
{
bool flag4 = false;
for (int num26 = num4 - num23; num26 < num4 + num23; num26++)
{
for (int num27 = num5 - num23; num27 < num5 + num23; num27++)
{
if (Main.tile[num4, num5].active())
{
int type = (int)Main.tile[num4, num5].type;
if (type == 199 || type == 200 || type == 201 || type == 203 || type == 205 || type == 234)
{
flag4 = true;
break;
}
}
}
}
if (flag4)
{
Main.tile[num24, num25].wall = 81;
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num24, num25, 3);
}
}
}
}
if (Main.tile[num4, num5].wall == 69 || Main.tile[num4, num5].wall == 3 || (Main.tile[num4, num5].type == 23 && Main.tile[num4, num5].active()))
{
int num28 = num4 + WorldGen.genRand.Next(-2, 3);
int num29 = num5 + WorldGen.genRand.Next(-2, 3);
if (Main.tile[num28, num29].wall >= 63 && Main.tile[num28, num29].wall <= 68)
{
bool flag5 = false;
for (int num30 = num4 - num23; num30 < num4 + num23; num30++)
{
for (int num31 = num5 - num23; num31 < num5 + num23; num31++)
{
if (Main.tile[num4, num5].active())
{
int type2 = (int)Main.tile[num4, num5].type;
if (type2 == 22 || type2 == 23 || type2 == 24 || type2 == 25 || type2 == 32 || type2 == 112 || type2 == 163)
{
flag5 = true;
break;
}
}
}
}
if (flag5)
{
Main.tile[num28, num29].wall = 69;
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num28, num29, 3);
}
}
}
}
if (Main.tile[num4, num5].wall == 70 || (Main.tile[num4, num5].type == 109 && Main.tile[num4, num5].active()))
{
int num32 = num4 + WorldGen.genRand.Next(-2, 3);
int num33 = num5 + WorldGen.genRand.Next(-2, 3);
if (Main.tile[num32, num33].wall == 63 || Main.tile[num32, num33].wall == 65 || Main.tile[num32, num33].wall == 66 || Main.tile[num32, num33].wall == 68)
{
bool flag6 = false;
for (int num34 = num4 - num23; num34 < num4 + num23; num34++)
{
for (int num35 = num5 - num23; num35 < num5 + num23; num35++)
{
if (Main.tile[num4, num5].active())
{
int type3 = (int)Main.tile[num4, num5].type;
if (type3 == 109 || type3 == 110 || type3 == 113 || type3 == 115 || type3 == 116 || type3 == 117 || type3 == 164)
{
flag6 = true;
break;
}
}
}
}
if (flag6)
{
Main.tile[num32, num33].wall = 70;
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num32, num33, 3);
}
}
}
}
if (Main.tile[num4, num5].active())
{
if ((Main.tile[num4, num5].type == 2 || Main.tile[num4, num5].type == 52 || (Main.tile[num4, num5].type == 192 && WorldGen.genRand.Next(10) == 0)) && WorldGen.genRand.Next(40) == 0 && !Main.tile[num4, num5 + 1].active() && !Main.tile[num4, num5 + 1].lava())
{
bool flag7 = false;
for (int num36 = num5; num36 > num5 - 10; num36--)
{
if (Main.tile[num4, num36].active() && Main.tile[num4, num36].type == 2)
{
flag7 = true;
break;
}
}
if (flag7)
{
int num37 = num4;
int num38 = num5 + 1;
Main.tile[num37, num38].type = 52;
Main.tile[num37, num38].active(true);
Main.tile[num37, num38].color(Main.tile[num4, num5].color());
WorldGen.SquareTileFrame(num37, num38, true);
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num37, num38, 3);
}
}
}
if (Main.tile[num4, num5].type == 70)
{
int type4 = (int)Main.tile[num4, num5].type;
if (!Main.tile[num4, num8].active() && WorldGen.genRand.Next(10) == 0)
{
WorldGen.PlaceTile(num4, num8, 71, true, false, -1, 0);
if (Main.tile[num4, num8].active())
{
Main.tile[num4, num8].color(Main.tile[num4, num5].color());
}
if (Main.netMode == 2 && Main.tile[num4, num8].active())
{
NetMessage.SendTileSquare(-1, num4, num8, 1);
}
}
if (WorldGen.genRand.Next(100) == 0 && !WorldGen.PlayerLOS(num4, num5))
{
WorldGen.GrowTree(num4, num5);
}
bool flag8 = false;
for (int num39 = num6; num39 < num7; num39++)
{
for (int num40 = num8; num40 < num9; num40++)
{
if ((num4 != num39 || num5 != num40) && Main.tile[num39, num40].active() && Main.tile[num39, num40].type == 59)
{
WorldGen.SpreadGrass(num39, num40, 59, type4, false, Main.tile[num4, num5].color());
if ((int)Main.tile[num39, num40].type == type4)
{
WorldGen.SquareTileFrame(num39, num40, true);
flag8 = true;
}
}
}
}
if (Main.netMode == 2 && flag8)
{
NetMessage.SendTileSquare(-1, num4, num5, 3);
}
}
if (Main.tile[num4, num5].type == 60)
{
int type5 = (int)Main.tile[num4, num5].type;
if (!Main.tile[num4, num8].active() && WorldGen.genRand.Next(7) == 0)
{
WorldGen.PlaceTile(num4, num8, 61, true, false, -1, 0);
if (Main.tile[num4, num8].active())
{
Main.tile[num4, num8].color(Main.tile[num4, num5].color());
}
if (Main.netMode == 2 && Main.tile[num4, num8].active())
{
NetMessage.SendTileSquare(-1, num4, num8, 1);
}
}
else
{
if (WorldGen.genRand.Next(500) == 0 && (!Main.tile[num4, num8].active() || Main.tile[num4, num8].type == 61 || Main.tile[num4, num8].type == 74 || Main.tile[num4, num8].type == 69))
{
if (!WorldGen.PlayerLOS(num4, num5))
{
WorldGen.GrowTree(num4, num5);
}
}
else
{
if (WorldGen.genRand.Next(25) == 0 && Main.tile[num4, num8].liquid == 0)
{
WorldGen.PlaceJunglePlant(num4, num8, 233, WorldGen.genRand.Next(8), 0);
if (Main.tile[num4, num8].type == 233)
{
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num4, num8, 4);
}
else
{
WorldGen.PlaceJunglePlant(num4, num8, 233, WorldGen.genRand.Next(12), 1);
if (Main.tile[num4, num8].type == 233 && Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num4, num8, 3);
}
}
}
}
}
}
bool flag9 = false;
for (int num41 = num6; num41 < num7; num41++)
{
for (int num42 = num8; num42 < num9; num42++)
{
if ((num4 != num41 || num5 != num42) && Main.tile[num41, num42].active() && Main.tile[num41, num42].type == 59)
{
WorldGen.SpreadGrass(num41, num42, 59, type5, false, Main.tile[num4, num5].color());
if ((int)Main.tile[num41, num42].type == type5)
{
WorldGen.SquareTileFrame(num41, num42, true);
flag9 = true;
}
}
}
}
if (Main.netMode == 2 && flag9)
{
NetMessage.SendTileSquare(-1, num4, num5, 3);
}
}
if (Main.tile[num4, num5].type == 61 && WorldGen.genRand.Next(3) == 0 && Main.tile[num4, num5].frameX < 144)
{
if (Main.rand.Next(4) == 0)
{
Main.tile[num4, num5].frameX = (short)(162 + WorldGen.genRand.Next(8) * 18);
}
Main.tile[num4, num5].type = 74;
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num4, num5, 3);
}
}
if ((Main.tile[num4, num5].type == 60 || Main.tile[num4, num5].type == 62) && WorldGen.genRand.Next(15) == 0 && !Main.tile[num4, num5 + 1].active() && !Main.tile[num4, num5 + 1].lava())
{
bool flag10 = false;
for (int num43 = num5; num43 > num5 - 10; num43--)
{
if (Main.tile[num4, num43].active() && Main.tile[num4, num43].type == 60)
{
flag10 = true;
break;
}
}
if (flag10)
{
int num44 = num4;
int num45 = num5 + 1;
Main.tile[num44, num45].type = 62;
Main.tile[num44, num45].active(true);
WorldGen.SquareTileFrame(num44, num45, true);
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num44, num45, 3);
}
}
}
if ((Main.tile[num4, num5].type == 109 || Main.tile[num4, num5].type == 115) && WorldGen.genRand.Next(15) == 0 && !Main.tile[num4, num5 + 1].active() && !Main.tile[num4, num5 + 1].lava())
{
bool flag11 = false;
for (int num46 = num5; num46 > num5 - 10; num46--)
{
if (Main.tile[num4, num46].active() && Main.tile[num4, num46].type == 109)
{
flag11 = true;
break;
}
}
if (flag11)
{
int num47 = num4;
int num48 = num5 + 1;
Main.tile[num47, num48].type = 115;
Main.tile[num47, num48].active(true);
WorldGen.SquareTileFrame(num47, num48, true);
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num47, num48, 3);
}
}
}
if ((Main.tile[num4, num5].type == 199 || Main.tile[num4, num5].type == 205) && WorldGen.genRand.Next(15) == 0 && !Main.tile[num4, num5 + 1].active() && !Main.tile[num4, num5 + 1].lava())
{
bool flag12 = false;
for (int num49 = num5; num49 > num5 - 10; num49--)
{
if (Main.tile[num4, num49].active() && Main.tile[num4, num49].type == 199)
{
flag12 = true;
break;
}
}
if (flag12)
{
int num50 = num4;
int num51 = num5 + 1;
Main.tile[num50, num51].type = 205;
Main.tile[num50, num51].active(true);
WorldGen.SquareTileFrame(num50, num51, true);
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num50, num51, 3);
}
}
}
}
}
num3++;
}
int num52 = 0;
while ((float)num52 < (float)(Main.maxTilesX * Main.maxTilesY) * num2)
{
int num53 = WorldGen.genRand.Next(10, Main.maxTilesX - 10);
int num54 = WorldGen.genRand.Next((int)Main.worldSurface - 1, Main.maxTilesY - 20);
int num55 = num53 - 1;
int num56 = num53 + 2;
int num57 = num54 - 1;
int num58 = num54 + 2;
if (num55 < 10)
{
num55 = 10;
}
if (num56 > Main.maxTilesX - 10)
{
num56 = Main.maxTilesX - 10;
}
if (num57 < 10)
{
num57 = 10;
}
if (num58 > Main.maxTilesY - 10)
{
num58 = Main.maxTilesY - 10;
}
if (Main.tile[num53, num54] != null)
{
if (Main.tileAlch[(int)Main.tile[num53, num54].type])
{
WorldGen.GrowAlch(num53, num54);
}
if (Main.tile[num53, num54].liquid <= 32)
{
if (Main.tile[num53, num54].nactive())
{
WorldGen.hardUpdateWorld(num53, num54);
if (Main.rand.Next(2000) == 0)
{
WorldGen.plantDye(num53, num54);
}
if (Main.tile[num53, num54].type == 23 && !Main.tile[num53, num57].active() && WorldGen.genRand.Next(1) == 0)
{
WorldGen.PlaceTile(num53, num57, 24, true, false, -1, 0);
if (Main.netMode == 2 && Main.tile[num53, num57].active())
{
NetMessage.SendTileSquare(-1, num53, num57, 1);
}
}
if (Main.tile[num53, num54].type == 32 && WorldGen.genRand.Next(3) == 0)
{
int num59 = num53;
int num60 = num54;
int num61 = 0;
if (Main.tile[num59 + 1, num60].active() && Main.tile[num59 + 1, num60].type == 32)
{
num61++;
}
if (Main.tile[num59 - 1, num60].active() && Main.tile[num59 - 1, num60].type == 32)
{
num61++;
}
if (Main.tile[num59, num60 + 1].active() && Main.tile[num59, num60 + 1].type == 32)
{
num61++;
}
if (Main.tile[num59, num60 - 1].active() && Main.tile[num59, num60 - 1].type == 32)
{
num61++;
}
if (num61 < 3 || Main.tile[num53, num54].type == 23)
{
int num62 = WorldGen.genRand.Next(4);
if (num62 == 0)
{
num60--;
}
else
{
if (num62 == 1)
{
num60++;
}
else
{
if (num62 == 2)
{
num59--;
}
else
{
if (num62 == 3)
{
num59++;
}
}
}
}
if (!Main.tile[num59, num60].active())
{
num61 = 0;
if (Main.tile[num59 + 1, num60].active() && Main.tile[num59 + 1, num60].type == 32)
{
num61++;
}
if (Main.tile[num59 - 1, num60].active() && Main.tile[num59 - 1, num60].type == 32)
{
num61++;
}
if (Main.tile[num59, num60 + 1].active() && Main.tile[num59, num60 + 1].type == 32)
{
num61++;
}
if (Main.tile[num59, num60 - 1].active() && Main.tile[num59, num60 - 1].type == 32)
{
num61++;
}
if (num61 < 2)
{
int num63 = 7;
int num64 = num59 - num63;
int num65 = num59 + num63;
int num66 = num60 - num63;
int num67 = num60 + num63;
bool flag13 = false;
for (int num68 = num64; num68 < num65; num68++)
{
for (int num69 = num66; num69 < num67; num69++)
{
if (Math.Abs(num68 - num59) * 2 + Math.Abs(num69 - num60) < 9 && Main.tile[num68, num69].active() && Main.tile[num68, num69].type == 23 && Main.tile[num68, num69 - 1].active() && Main.tile[num68, num69 - 1].type == 32 && Main.tile[num68, num69 - 1].liquid == 0)
{
flag13 = true;
break;
}
}
}
if (flag13)
{
Main.tile[num59, num60].type = 32;
Main.tile[num59, num60].active(true);
WorldGen.SquareTileFrame(num59, num60, true);
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num59, num60, 3);
}
}
}
}
}
}
if (Main.tile[num53, num54].type == 199)
{
int type6 = (int)Main.tile[num53, num54].type;
bool flag14 = false;
for (int num70 = num55; num70 < num56; num70++)
{
for (int num71 = num57; num71 < num58; num71++)
{
if ((num53 != num70 || num54 != num71) && Main.tile[num70, num71].active() && Main.tile[num70, num71].type == 0)
{
WorldGen.SpreadGrass(num70, num71, 0, type6, false, Main.tile[num53, num54].color());
if ((int)Main.tile[num70, num71].type == type6)
{
WorldGen.SquareTileFrame(num70, num71, true);
flag14 = true;
}
}
}
}
if (Main.netMode == 2 && flag14)
{
NetMessage.SendTileSquare(-1, num53, num54, 3);
}
}
if (Main.tile[num53, num54].type == 60)
{
int type7 = (int)Main.tile[num53, num54].type;
if (!Main.tile[num53, num57].active() && WorldGen.genRand.Next(10) == 0)
{
WorldGen.PlaceTile(num53, num57, 61, true, false, -1, 0);
if (Main.netMode == 2 && Main.tile[num53, num57].active())
{
NetMessage.SendTileSquare(-1, num53, num57, 1);
}
}
else
{
if (WorldGen.genRand.Next(25) == 0 && Main.tile[num53, num57].liquid == 0)
{
if (Main.hardMode && NPC.downedMechBossAny && WorldGen.genRand.Next(60) == 0)
{
bool flag15 = true;
int num72 = 150;
for (int num73 = num53 - num72; num73 < num53 + num72; num73 += 2)
{
for (int num74 = num54 - num72; num74 < num54 + num72; num74 += 2)
{
if (num73 > 1 && num73 < Main.maxTilesX - 2 && num74 > 1 && num74 < Main.maxTilesY - 2 && Main.tile[num73, num74].active() && Main.tile[num73, num74].type == 238)
{
flag15 = false;
break;
}
}
}
if (flag15)
{
WorldGen.PlaceJunglePlant(num53, num57, 238, 0, 0);
WorldGen.SquareTileFrame(num53, num57, true);
WorldGen.SquareTileFrame(num53 + 1, num57 + 1, true);
if (Main.tile[num53, num57].type == 238 && Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num53, num57, 4);
}
}
}
if (Main.hardMode && WorldGen.genRand.Next(40) == 0)
{
bool flag16 = true;
int num75 = 80;
for (int num76 = num53 - num75; num76 < num53 + num75; num76 += 2)
{
for (int num77 = num54 - num75; num77 < num54 + num75; num77 += 2)
{
if (num76 > 1 && num76 < Main.maxTilesX - 2 && num77 > 1 && num77 < Main.maxTilesY - 2 && Main.tile[num76, num77].active() && Main.tile[num76, num77].type == 236)
{
flag16 = false;
break;
}
}
}
if (flag16)
{
WorldGen.PlaceJunglePlant(num53, num57, 236, WorldGen.genRand.Next(3), 0);
WorldGen.SquareTileFrame(num53, num57, true);
WorldGen.SquareTileFrame(num53 + 1, num57 + 1, true);
if (Main.tile[num53, num57].type == 236 && Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num53, num57, 4);
}
}
}
else
{
WorldGen.PlaceJunglePlant(num53, num57, 233, WorldGen.genRand.Next(8), 0);
if (Main.tile[num53, num57].type == 233)
{
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num53, num57, 4);
}
else
{
WorldGen.PlaceJunglePlant(num53, num57, 233, WorldGen.genRand.Next(12), 1);
if (Main.tile[num53, num57].type == 233 && Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num53, num57, 3);
}
}
}
}
}
}
bool flag17 = false;
for (int num78 = num55; num78 < num56; num78++)
{
for (int num79 = num57; num79 < num58; num79++)
{
if ((num53 != num78 || num54 != num79) && Main.tile[num78, num79].active() && Main.tile[num78, num79].type == 59)
{
WorldGen.SpreadGrass(num78, num79, 59, type7, false, Main.tile[num53, num54].color());
if ((int)Main.tile[num78, num79].type == type7)
{
WorldGen.SquareTileFrame(num78, num79, true);
flag17 = true;
}
}
}
}
if (Main.netMode == 2 && flag17)
{
NetMessage.SendTileSquare(-1, num53, num54, 3);
}
}
if (Main.tile[num53, num54].type == 61 && WorldGen.genRand.Next(3) == 0 && Main.tile[num53, num54].frameX < 144)
{
if (Main.rand.Next(4) == 0)
{
Main.tile[num53, num54].frameX = (short)(162 + WorldGen.genRand.Next(8) * 18);
}
Main.tile[num53, num54].type = 74;
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num53, num54, 3);
}
}
if ((Main.tile[num53, num54].type == 60 || Main.tile[num53, num54].type == 62) && WorldGen.genRand.Next(5) == 0 && !Main.tile[num53, num54 + 1].active() && !Main.tile[num53, num54 + 1].lava())
{
bool flag18 = false;
for (int num80 = num54; num80 > num54 - 10; num80--)
{
if (Main.tile[num53, num80].active() && Main.tile[num53, num80].type == 60)
{
flag18 = true;
break;
}
}
if (flag18)
{
int num81 = num53;
int num82 = num54 + 1;
Main.tile[num81, num82].type = 62;
Main.tile[num81, num82].active(true);
WorldGen.SquareTileFrame(num81, num82, true);
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num81, num82, 3);
}
}
}
if (Main.tile[num53, num54].type == 69 && WorldGen.genRand.Next(3) == 0)
{
int num83 = num53;
int num84 = num54;
int num85 = 0;
if (Main.tile[num83 + 1, num84].active() && Main.tile[num83 + 1, num84].type == 69)
{
num85++;
}
if (Main.tile[num83 - 1, num84].active() && Main.tile[num83 - 1, num84].type == 69)
{
num85++;
}
if (Main.tile[num83, num84 + 1].active() && Main.tile[num83, num84 + 1].type == 69)
{
num85++;
}
if (Main.tile[num83, num84 - 1].active() && Main.tile[num83, num84 - 1].type == 69)
{
num85++;
}
if (num85 < 3 || Main.tile[num53, num54].type == 60)
{
int num86 = WorldGen.genRand.Next(4);
if (num86 == 0)
{
num84--;
}
else
{
if (num86 == 1)
{
num84++;
}
else
{
if (num86 == 2)
{
num83--;
}
else
{
if (num86 == 3)
{
num83++;
}
}
}
}
if (!Main.tile[num83, num84].active())
{
num85 = 0;
if (Main.tile[num83 + 1, num84].active() && Main.tile[num83 + 1, num84].type == 69)
{
num85++;
}
if (Main.tile[num83 - 1, num84].active() && Main.tile[num83 - 1, num84].type == 69)
{
num85++;
}
if (Main.tile[num83, num84 + 1].active() && Main.tile[num83, num84 + 1].type == 69)
{
num85++;
}
if (Main.tile[num83, num84 - 1].active() && Main.tile[num83, num84 - 1].type == 69)
{
num85++;
}
if (num85 < 2)
{
int num87 = 7;
int num88 = num83 - num87;
int num89 = num83 + num87;
int num90 = num84 - num87;
int num91 = num84 + num87;
bool flag19 = false;
for (int num92 = num88; num92 < num89; num92++)
{
for (int num93 = num90; num93 < num91; num93++)
{
if (Math.Abs(num92 - num83) * 2 + Math.Abs(num93 - num84) < 9 && Main.tile[num92, num93].active() && Main.tile[num92, num93].type == 60 && Main.tile[num92, num93 - 1].active() && Main.tile[num92, num93 - 1].type == 69 && Main.tile[num92, num93 - 1].liquid == 0)
{
flag19 = true;
break;
}
}
}
if (flag19)
{
Main.tile[num83, num84].type = 69;
Main.tile[num83, num84].active(true);
WorldGen.SquareTileFrame(num83, num84, true);
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num83, num84, 3);
}
}
}
}
}
}
else
{
if (Main.tile[num53, num54].type == 147 || Main.tile[num53, num54].type == 161 || Main.tile[num53, num54].type == 163 || Main.tile[num53, num54].type == 164 || Main.tile[num53, num54].type == 200)
{
if (Main.rand.Next(10) == 0 && !Main.tile[num53, num54 + 1].active() && !Main.tile[num53, num54 + 2].active())
{
int num94 = num53 - 3;
int num95 = num53 + 4;
int num96 = 0;
for (int num97 = num94; num97 < num95; num97++)
{
if (Main.tile[num97, num54].type == 165 && Main.tile[num97, num54].active())
{
num96++;
}
if (Main.tile[num97, num54 + 1].type == 165 && Main.tile[num97, num54 + 1].active())
{
num96++;
}
if (Main.tile[num97, num54 + 2].type == 165 && Main.tile[num97, num54 + 2].active())
{
num96++;
}
if (Main.tile[num97, num54 + 3].type == 165 && Main.tile[num97, num54 + 3].active())
{
num96++;
}
}
if (num96 < 2)
{
WorldGen.PlaceTight(num53, num54 + 1, 165, false);
WorldGen.SquareTileFrame(num53, num54 + 1, true);
if (Main.netMode == 2 && Main.tile[num53, num54 + 1].active())
{
NetMessage.SendTileSquare(-1, num53, num54 + 1, 3);
}
}
}
}
else
{
if (Main.tileMoss[(int)Main.tile[num53, num54].type])
{
int type8 = (int)Main.tile[num53, num54].type;
bool flag20 = false;
for (int num98 = num55; num98 < num56; num98++)
{
for (int num99 = num57; num99 < num58; num99++)
{
if ((num53 != num98 || num54 != num99) && Main.tile[num98, num99].active() && Main.tile[num98, num99].type == 1)
{
WorldGen.SpreadGrass(num98, num99, 1, type8, false, Main.tile[num53, num54].color());
if ((int)Main.tile[num98, num99].type == type8)
{
WorldGen.SquareTileFrame(num98, num99, true);
flag20 = true;
}
}
}
}
if (Main.netMode == 2 && flag20)
{
NetMessage.SendTileSquare(-1, num53, num54, 3);
}
if (WorldGen.genRand.Next(6) == 0)
{
int num100 = num53;
int num101 = num54;
int num102 = WorldGen.genRand.Next(4);
if (num102 == 0)
{
num100--;
}
else
{
if (num102 == 1)
{
num100++;
}
else
{
if (num102 == 2)
{
num101--;
}
else
{
num101++;
}
}
}
if (!Main.tile[num100, num101].active())
{
WorldGen.PlaceTile(num100, num101, 184, true, false, -1, 0);
if (Main.netMode == 2 && Main.tile[num100, num101].active())
{
NetMessage.SendTileSquare(-1, num100, num101, 1);
}
}
}
}
}
}
if (Main.tile[num53, num54].type == 70)
{
int type9 = (int)Main.tile[num53, num54].type;
if (!Main.tile[num53, num57].active() && WorldGen.genRand.Next(10) == 0)
{
WorldGen.PlaceTile(num53, num57, 71, true, false, -1, 0);
if (Main.netMode == 2 && Main.tile[num53, num57].active())
{
NetMessage.SendTileSquare(-1, num53, num57, 1);
}
}
if (WorldGen.genRand.Next(200) == 0 && !WorldGen.PlayerLOS(num53, num54))
{
WorldGen.GrowShroom(num53, num54);
}
bool flag21 = false;
for (int num103 = num55; num103 < num56; num103++)
{
for (int num104 = num57; num104 < num58; num104++)
{
if ((num53 != num103 || num54 != num104) && Main.tile[num103, num104].active() && Main.tile[num103, num104].type == 59)
{
WorldGen.SpreadGrass(num103, num104, 59, type9, false, Main.tile[num53, num54].color());
if ((int)Main.tile[num103, num104].type == type9)
{
WorldGen.SquareTileFrame(num103, num104, true);
flag21 = true;
}
}
}
}
if (Main.netMode == 2 && flag21)
{
NetMessage.SendTileSquare(-1, num53, num54, 3);
}
}
}
else
{
if (Main.tile[num53, num54].wall == 62 && Main.tile[num53, num54].liquid == 0 && WorldGen.genRand.Next(10) == 0)
{
int num105 = WorldGen.genRand.Next(2, 4);
int num106 = num53 - num105;
int num107 = num53 + num105;
int num108 = num54 - num105;
int num109 = num54 + num105;
bool flag22 = false;
for (int num110 = num106; num110 <= num107; num110++)
{
for (int num111 = num108; num111 <= num109; num111++)
{
if (WorldGen.SolidTile(num110, num111))
{
flag22 = true;
break;
}
}
}
if (flag22 && !Main.tile[num53, num54].active())
{
WorldGen.PlaceTile(num53, num54, 51, true, false, -1, 0);
WorldGen.TileFrame(num53, num54, true, false);
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num53, num54, 3);
}
}
}
if (flag && WorldGen.spawnNPC > 0)
{
if (Main.tile[num53, num54].wall == 34)
{
if (Main.rand.Next(4) == 0)
{
WorldGen.SpawnNPC(num53, num54);
}
}
else
{
WorldGen.SpawnNPC(num53, num54);
}
}
}
}
int num112 = 10;
if (Main.tile[num53, num54].wall == 81 || Main.tile[num53, num54].wall == 83 || (Main.tile[num53, num54].type == 199 && Main.tile[num53, num54].active()))
{
int num113 = num53 + WorldGen.genRand.Next(-2, 3);
int num114 = num54 + WorldGen.genRand.Next(-2, 3);
if (Main.tile[num113, num114].wall >= 63 && Main.tile[num113, num114].wall <= 68)
{
bool flag23 = false;
for (int num115 = num53 - num112; num115 < num53 + num112; num115++)
{
for (int num116 = num54 - num112; num116 < num54 + num112; num116++)
{
if (Main.tile[num53, num54].active())
{
int type10 = (int)Main.tile[num53, num54].type;
if (type10 == 199 || type10 == 200 || type10 == 201 || type10 == 203 || type10 == 205 || type10 == 234)
{
flag23 = true;
break;
}
}
}
}
if (flag23)
{
Main.tile[num113, num114].wall = 81;
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num113, num114, 3);
}
}
}
}
if (Main.tile[num53, num54].wall == 69 || Main.tile[num53, num54].wall == 3 || (Main.tile[num53, num54].type == 23 && Main.tile[num53, num54].active()))
{
int num117 = num53 + WorldGen.genRand.Next(-2, 3);
int num118 = num54 + WorldGen.genRand.Next(-2, 3);
if (Main.tile[num117, num118].wall >= 63 && Main.tile[num117, num118].wall <= 68)
{
bool flag24 = false;
for (int num119 = num53 - num112; num119 < num53 + num112; num119++)
{
for (int num120 = num54 - num112; num120 < num54 + num112; num120++)
{
if (Main.tile[num53, num54].active())
{
int type11 = (int)Main.tile[num53, num54].type;
if (type11 == 22 || type11 == 23 || type11 == 24 || type11 == 25 || type11 == 32 || type11 == 112 || type11 == 163)
{
flag24 = true;
break;
}
}
}
}
if (flag24)
{
Main.tile[num117, num118].wall = 69;
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num117, num118, 3);
}
}
}
}
if (Main.tile[num53, num54].wall == 70 || (Main.tile[num53, num54].type == 109 && Main.tile[num53, num54].active()))
{
int num121 = num53 + WorldGen.genRand.Next(-2, 3);
int num122 = num54 + WorldGen.genRand.Next(-2, 3);
if (Main.tile[num121, num122].wall == 63 || Main.tile[num121, num122].wall == 65 || Main.tile[num121, num122].wall == 66 || Main.tile[num121, num122].wall == 68)
{
bool flag25 = false;
for (int num123 = num53 - num112; num123 < num53 + num112; num123++)
{
for (int num124 = num54 - num112; num124 < num54 + num112; num124++)
{
if (Main.tile[num53, num54].active())
{
int type12 = (int)Main.tile[num53, num54].type;
if (type12 == 109 || type12 == 110 || type12 == 113 || type12 == 115 || type12 == 116 || type12 == 117 || type12 == 164)
{
flag25 = true;
break;
}
}
}
}
if (flag25)
{
Main.tile[num121, num122].wall = 70;
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num121, num122, 3);
}
}
}
}
}
num52++;
}
if (Main.rand.Next(100) == 0)
{
WorldGen.PlantAlch();
}
if (!Main.dayTime)
{
float num125 = (float)(Main.maxTilesX / 4200);
if ((float)Main.rand.Next(8000) < 10f * num125)
{
int num126 = 12;
int num127 = Main.rand.Next(Main.maxTilesX - 50) + 100;
num127 *= 16;
int num128 = Main.rand.Next((int)((double)Main.maxTilesY * 0.05));
num128 *= 16;
Vector2 vector = new Vector2((float)num127, (float)num128);
float num129 = (float)Main.rand.Next(-100, 101);
float num130 = (float)(Main.rand.Next(200) + 100);
float num131 = (float)Math.Sqrt((double)(num129 * num129 + num130 * num130));
num131 = (float)num126 / num131;
num129 *= num131;
num130 *= num131;
Projectile.NewProjectile(vector.X, vector.Y, num129, num130, 12, 1000, 10f, Main.myPlayer, 0f, 0f);
}
}
}
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 == 0)
{
Main.tile[i, j].wall = (byte)type;
WorldGen.SquareWallFrame(i, j, true);
if (!mute)
{
Main.PlaySound(0, i * 16, j * 16, 1);
}
}
}
public static void AddPlants()
{
for (int i = 0; i < Main.maxTilesX; i++)
{
for (int j = 1; j < Main.maxTilesY; j++)
{
if (Main.tile[i, j].type == 2 && Main.tile[i, j].nactive())
{
if (!Main.tile[i, j - 1].active())
{
WorldGen.PlaceTile(i, j - 1, 3, true, false, -1, 0);
}
}
else
{
if (Main.tile[i, j].type == 23 && Main.tile[i, j].nactive())
{
if (!Main.tile[i, j - 1].active())
{
WorldGen.PlaceTile(i, j - 1, 24, true, false, -1, 0);
}
}
else
{
if (Main.tile[i, j].type == 199 && Main.tile[i, j].nactive() && !Main.tile[i, j - 1].active())
{
WorldGen.PlaceTile(i, j - 1, 201, true, false, -1, 0);
}
}
}
}
}
}
public static void SpreadGrass(int i, int j, int dirt = 0, int grass = 2, bool repeat = true, byte color = 0)
{
try
{
if ((int)Main.tile[i, j].type == dirt && Main.tile[i, j].active() && ((double)j < Main.worldSurface || dirt != 0))
{
int num = i - 1;
int num2 = i + 2;
int num3 = j - 1;
int num4 = j + 2;
if (num < 0)
{
num = 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 k = num; k < num2; k++)
{
for (int l = num3; l < num4; l++)
{
if (!Main.tile[k, l].active() || !Main.tileSolid[(int)Main.tile[k, l].type])
{
flag = false;
}
if (Main.tile[k, l].lava() && Main.tile[k, l].liquid > 0)
{
flag = true;
break;
}
}
}
if (!flag)
{
if (grass != 23 || Main.tile[i, j - 1].type != 27)
{
Main.tile[i, j].type = (byte)grass;
Main.tile[i, j].color(color);
for (int m = num; m < num2; m++)
{
for (int n = num3; n < num4; n++)
{
if (Main.tile[m, n].active() && (int)Main.tile[m, n].type == dirt)
{
try
{
if (repeat && WorldGen.grassSpread < 1000)
{
WorldGen.grassSpread++;
WorldGen.SpreadGrass(m, n, dirt, grass, true, 0);
WorldGen.grassSpread--;
}
}
catch
{
}
}
}
}
}
}
}
}
catch
{
}
}
public static void ChasmRunnerSideways(int i, int j, int direction, int steps)
{
float num = (float)steps;
Vector2 value;
value.X = (float)i;
value.Y = (float)j;
Vector2 value2;
value2.X = (float)WorldGen.genRand.Next(10, 21) * 0.1f * (float)direction;
value2.Y = (float)WorldGen.genRand.Next(-10, 10) * 0.01f;
double num2 = (double)(WorldGen.genRand.Next(5) + 7);
while (num2 > 0.0)
{
if (num > 0f)
{
num2 += (double)WorldGen.genRand.Next(3);
num2 -= (double)WorldGen.genRand.Next(3);
if (num2 < 7.0)
{
num2 = 7.0;
}
if (num2 > 20.0)
{
num2 = 20.0;
}
if (num == 1f && num2 < 10.0)
{
num2 = 10.0;
}
}
else
{
num2 -= (double)WorldGen.genRand.Next(4);
}
if ((double)value.Y > Main.rockLayer && num > 0f)
{
num = 0f;
}
num -= 1f;
int num3 = (int)((double)value.X - num2 * 0.5);
int num4 = (int)((double)value.X + num2 * 0.5);
int num5 = (int)((double)value.Y - num2 * 0.5);
int num6 = (int)((double)value.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 k = num3; k < num4; k++)
{
for (int l = num5; l < num6; l++)
{
if ((double)(Math.Abs((float)k - value.X) + Math.Abs((float)l - value.Y)) < num2 * 0.5 * (1.0 + (double)WorldGen.genRand.Next(-10, 11) * 0.015) && Main.tile[k, l].type != 31 && Main.tile[k, l].type != 22)
{
Main.tile[k, l].active(false);
}
}
}
value += value2;
value2.Y += (float)WorldGen.genRand.Next(-10, 10) * 0.1f;
if (value.Y < (float)(j - 20))
{
value2.Y += (float)WorldGen.genRand.Next(20) * 0.01f;
}
if (value.Y > (float)(j + 20))
{
value2.Y -= (float)WorldGen.genRand.Next(20) * 0.01f;
}
if ((double)value2.Y < -0.5)
{
value2.Y = -0.5f;
}
if ((double)value2.Y > 0.5)
{
value2.Y = 0.5f;
}
value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.01f;
if (direction == -1)
{
if ((double)value2.X > -0.5)
{
value2.X = -0.5f;
}
if (value2.X < -2f)
{
value2.X = -2f;
}
}
else
{
if (direction == 1)
{
if ((double)value2.X < 0.5)
{
value2.X = 0.5f;
}
if (value2.X > 2f)
{
value2.X = 2f;
}
}
}
num3 = (int)((double)value.X - num2 * 1.1);
num4 = (int)((double)value.X + num2 * 1.1);
num5 = (int)((double)value.Y - num2 * 1.1);
num6 = (int)((double)value.Y + num2 * 1.1);
if (num3 < 1)
{
num3 = 1;
}
if (num4 > Main.maxTilesX - 1)
{
num4 = Main.maxTilesX - 1;
}
if (num5 < 0)
{
num5 = 0;
}
if (num6 > Main.maxTilesY)
{
num6 = Main.maxTilesY;
}
for (int m = num3; m < num4; m++)
{
for (int n = num5; n < num6; n++)
{
if ((double)(Math.Abs((float)m - value.X) + Math.Abs((float)n - value.Y)) < num2 * 1.1 * (1.0 + (double)WorldGen.genRand.Next(-10, 11) * 0.015) && Main.tile[m, n].wall != 3)
{
if (Main.tile[m, n].type != 25 && n > j + WorldGen.genRand.Next(3, 20))
{
Main.tile[m, n].active(true);
}
Main.tile[m, n].active(true);
if (Main.tile[m, n].type != 31 && Main.tile[m, n].type != 22)
{
Main.tile[m, n].type = 25;
}
if (Main.tile[m, n].wall == 2)
{
Main.tile[m, n].wall = 0;
}
}
}
}
for (int num7 = num3; num7 < num4; num7++)
{
for (int num8 = num5; num8 < num6; num8++)
{
if ((double)(Math.Abs((float)num7 - value.X) + Math.Abs((float)num8 - value.Y)) < num2 * 1.1 * (1.0 + (double)WorldGen.genRand.Next(-10, 11) * 0.015) && Main.tile[num7, num8].wall != 3)
{
if (Main.tile[num7, num8].type != 31 && Main.tile[num7, num8].type != 22)
{
Main.tile[num7, num8].type = 25;
}
Main.tile[num7, num8].active(true);
WorldGen.PlaceWall(num7, num8, 3, true);
}
}
}
}
if (WorldGen.genRand.Next(3) == 0)
{
int num9 = (int)value.X;
int num10 = (int)value.Y;
while (!Main.tile[num9, num10].active())
{
num10++;
}
WorldGen.TileRunner(num9, num10, (double)WorldGen.genRand.Next(2, 6), WorldGen.genRand.Next(3, 7), 22, false, 0f, 0f, false, true);
}
}
public static void CrimStart(int i, int j)
{
int crimDir = 1;
WorldGen.heartCount = 0;
WorldGen.crimson = true;
int num = j;
if ((double)num > Main.worldSurface)
{
num = (int)Main.worldSurface;
}
while (!WorldGen.SolidTile(i, num))
{
num++;
}
int num2 = num;
Vector2 vector = new Vector2((float)i, (float)num);
Vector2 value = new Vector2((float)WorldGen.genRand.Next(-20, 21) * 0.1f, (float)WorldGen.genRand.Next(20, 201) * 0.01f);
if (value.X < 0f)
{
crimDir = -1;
}
float num3 = (float)WorldGen.genRand.Next(15, 26);
bool flag = true;
int num4 = 0;
while (flag)
{
num3 += (float)Main.rand.Next(-50, 51) * 0.01f;
if (num3 < 15f)
{
num3 = 15f;
}
if (num3 > 25f)
{
num3 = 25f;
}
int num5 = (int)(vector.X - num3 / 2f);
while ((float)num5 < vector.X + num3 / 2f)
{
int num6 = (int)(vector.Y - num3 / 2f);
while ((float)num6 < vector.Y + num3 / 2f)
{
if (num6 > num2)
{
if ((double)(Math.Abs((float)num5 - vector.X) + Math.Abs((float)num6 - vector.Y)) < (double)num3 * 0.3)
{
Main.tile[num5, num6].active(false);
Main.tile[num5, num6].wall = 83;
}
else
{
if ((double)(Math.Abs((float)num5 - vector.X) + Math.Abs((float)num6 - vector.Y)) < (double)num3 * 0.8 && Main.tile[num5, num6].wall != 83)
{
Main.tile[num5, num6].active(true);
Main.tile[num5, num6].type = 203;
if ((double)(Math.Abs((float)num5 - vector.X) + Math.Abs((float)num6 - vector.Y)) < (double)num3 * 0.6)
{
Main.tile[num5, num6].wall = 83;
}
}
}
}
else
{
if ((double)(Math.Abs((float)num5 - vector.X) + Math.Abs((float)num6 - vector.Y)) < (double)num3 * 0.3 && Main.tile[num5, num6].active())
{
Main.tile[num5, num6].active(false);
Main.tile[num5, num6].wall = 83;
}
}
num6++;
}
num5++;
}
if (vector.X > (float)(i + 50))
{
num4 = -100;
}
if (vector.X < (float)(i - 50))
{
num4 = 100;
}
if (num4 < 0)
{
value.X -= (float)WorldGen.genRand.Next(20, 51) * 0.01f;
}
else
{
if (num4 > 0)
{
value.X += (float)WorldGen.genRand.Next(20, 51) * 0.01f;
}
else
{
value.X += (float)WorldGen.genRand.Next(-50, 51) * 0.01f;
}
}
value.Y += (float)WorldGen.genRand.Next(-50, 51) * 0.01f;
if ((double)value.Y < 0.25)
{
value.Y = 0.25f;
}
if (value.Y > 2f)
{
value.Y = 2f;
}
if (value.X < -2f)
{
value.X = -2f;
}
if (value.X > 2f)
{
value.X = 2f;
}
vector += value;
if ((double)vector.Y > Main.worldSurface + 100.0)
{
flag = false;
}
}
num3 = (float)WorldGen.genRand.Next(40, 55);
for (int k = 0; k < 50; k++)
{
int num7 = (int)vector.X + WorldGen.genRand.Next(-20, 21);
int num8 = (int)vector.Y + WorldGen.genRand.Next(-20, 21);
int num9 = (int)((float)num7 - num3 / 2f);
while ((float)num9 < (float)num7 + num3 / 2f)
{
int num10 = (int)((float)num8 - num3 / 2f);
while ((float)num10 < (float)num8 + num3 / 2f)
{
float num11 = (float)Math.Abs(num9 - num7);
float num12 = (float)Math.Abs(num10 - num8);
float num13 = 1f + (float)WorldGen.genRand.Next(-20, 21) * 0.01f;
float num14 = 1f + (float)WorldGen.genRand.Next(-20, 21) * 0.01f;
num11 *= num13;
num12 *= num14;
double num15 = Math.Sqrt((double)(num11 * num11 + num12 * num12));
if (num15 < (double)num3 * 0.25)
{
Main.tile[num9, num10].active(false);
Main.tile[num9, num10].wall = 83;
}
else
{
if (num15 < (double)num3 * 0.4 && Main.tile[num9, num10].wall != 83)
{
Main.tile[num9, num10].active(true);
Main.tile[num9, num10].type = 203;
if (num15 < (double)num3 * 0.35)
{
Main.tile[num9, num10].wall = 83;
}
}
}
num10++;
}
num9++;
}
}
int num16 = WorldGen.genRand.Next(5, 9);
Vector2[] array = new Vector2[num16];
for (int l = 0; l < num16; l++)
{
int num17 = (int)vector.X;
int num18 = (int)vector.Y;
int num19 = 0;
bool flag2 = true;
Vector2 vector2 = new Vector2((float)WorldGen.genRand.Next(-20, 21) * 0.15f, (float)WorldGen.genRand.Next(0, 21) * 0.15f);
while (flag2)
{
vector2 = new Vector2((float)WorldGen.genRand.Next(-20, 21) * 0.15f, (float)WorldGen.genRand.Next(0, 21) * 0.15f);
while ((double)(Math.Abs(vector2.X) + Math.Abs(vector2.Y)) < 1.5)
{
vector2 = new Vector2((float)WorldGen.genRand.Next(-20, 21) * 0.15f, (float)WorldGen.genRand.Next(0, 21) * 0.15f);
}
flag2 = false;
for (int m = 0; m < l; m++)
{
if ((double)value.X > (double)array[m].X - 0.75 && (double)value.X < (double)array[m].X + 0.75 && (double)value.Y > (double)array[m].Y - 0.75 && (double)value.Y < (double)array[m].Y + 0.75)
{
flag2 = true;
num19++;
break;
}
}
if (num19 > 10000)
{
break;
}
}
array[l] = vector2;
WorldGen.CrimVein(new Vector2((float)num17, (float)num18), vector2);
}
for (int n = 0; n < WorldGen.heartCount; n++)
{
num3 = (float)WorldGen.genRand.Next(16, 21);
int num20 = (int)WorldGen.heartPos[n].X;
int num21 = (int)WorldGen.heartPos[n].Y;
int num22 = (int)((float)num20 - num3 / 2f);
while ((float)num22 < (float)num20 + num3 / 2f)
{
int num23 = (int)((float)num21 - num3 / 2f);
while ((float)num23 < (float)num21 + num3 / 2f)
{
float num24 = (float)Math.Abs(num22 - num20);
float num25 = (float)Math.Abs(num23 - num21);
double num26 = Math.Sqrt((double)(num24 * num24 + num25 * num25));
if (num26 < (double)num3 * 0.4)
{
Main.tile[num22, num23].active(true);
Main.tile[num22, num23].type = 203;
Main.tile[num22, num23].wall = 83;
}
num23++;
}
num22++;
}
}
for (int num27 = 0; num27 < WorldGen.heartCount; num27++)
{
num3 = (float)WorldGen.genRand.Next(10, 14);
int num28 = (int)WorldGen.heartPos[num27].X;
int num29 = (int)WorldGen.heartPos[num27].Y;
int num30 = (int)((float)num28 - num3 / 2f);
while ((float)num30 < (float)num28 + num3 / 2f)
{
int num31 = (int)((float)num29 - num3 / 2f);
while ((float)num31 < (float)num29 + num3 / 2f)
{
float num32 = (float)Math.Abs(num30 - num28);
float num33 = (float)Math.Abs(num31 - num29);
double num34 = Math.Sqrt((double)(num32 * num32 + num33 * num33));
if (num34 < (double)num3 * 0.3)
{
Main.tile[num30, num31].active(false);
Main.tile[num30, num31].wall = 83;
}
num31++;
}
num30++;
}
}
for (int num35 = 0; num35 < WorldGen.heartCount; num35++)
{
WorldGen.AddShadowOrb((int)WorldGen.heartPos[num35].X, (int)WorldGen.heartPos[num35].Y);
}
int num36 = Main.maxTilesX;
int num37 = 0;
vector.X = (float)i;
vector.Y = (float)num2;
num3 = (float)WorldGen.genRand.Next(25, 35);
float num38 = (float)WorldGen.genRand.Next(0, 6);
for (int num39 = 0; num39 < 50; num39++)
{
if (num38 > 0f)
{
float num40 = (float)WorldGen.genRand.Next(10, 30) * 0.01f;
num38 -= num40;
vector.Y -= num40;
}
int num41 = (int)vector.X + WorldGen.genRand.Next(-2, 3);
int num42 = (int)vector.Y + WorldGen.genRand.Next(-2, 3);
int num43 = (int)((float)num41 - num3 / 2f);
while ((float)num43 < (float)num41 + num3 / 2f)
{
int num44 = (int)((float)num42 - num3 / 2f);
while ((float)num44 < (float)num42 + num3 / 2f)
{
float num45 = (float)Math.Abs(num43 - num41);
float num46 = (float)Math.Abs(num44 - num42);
float num47 = 1f + (float)WorldGen.genRand.Next(-20, 21) * 0.005f;
float num48 = 1f + (float)WorldGen.genRand.Next(-20, 21) * 0.005f;
num45 *= num47;
num46 *= num48;
double num49 = Math.Sqrt((double)(num45 * num45 + num46 * num46));
if (num49 < (double)num3 * 0.2 * ((double)WorldGen.genRand.Next(90, 111) * 0.01))
{
Main.tile[num43, num44].active(false);
Main.tile[num43, num44].wall = 83;
}
else
{
if (num49 < (double)num3 * 0.45)
{
if (num43 < num36)
{
num36 = num43;
}
if (num43 > num37)
{
num37 = num43;
}
if (Main.tile[num43, num44].wall != 83)
{
Main.tile[num43, num44].active(true);
Main.tile[num43, num44].type = 203;
if (num49 < (double)num3 * 0.35)
{
Main.tile[num43, num44].wall = 83;
}
}
}
}
num44++;
}
num43++;
}
}
for (int num50 = num36; num50 <= num37; num50++)
{
int num51 = num2;
while ((Main.tile[num50, num51].type == 203 && Main.tile[num50, num51].active()) || Main.tile[num50, num51].wall == 83)
{
num51++;
}
int num52 = WorldGen.genRand.Next(15, 20);
while (!Main.tile[num50, num51].active() && num52 > 0 && Main.tile[num50, num51].wall != 83)
{
num52--;
Main.tile[num50, num51].type = 203;
Main.tile[num50, num51].active(true);
num51++;
}
}
WorldGen.CrimEnt(vector, crimDir);
}
public static void CrimEnt(Vector2 position, int crimDir)
{
float num = 0f;
float num2 = (float)WorldGen.genRand.Next(6, 11);
bool flag = true;
Vector2 value = new Vector2(2f, (float)WorldGen.genRand.Next(-20, 0) * 0.01f);
value.X *= (float)(-(float)crimDir);
while (flag)
{
num += 1f;
if (num >= 20f)
{
flag = false;
}
num2 += (float)Main.rand.Next(-10, 11) * 0.02f;
if (num2 < 6f)
{
num2 = 6f;
}
if (num2 > 10f)
{
num2 = 10f;
}
int num3 = (int)(position.X - num2 / 2f);
while ((float)num3 < position.X + num2 / 2f)
{
int num4 = (int)(position.Y - num2 / 2f);
while ((float)num4 < position.Y + num2 / 2f)
{
float num5 = Math.Abs((float)num3 - position.X);
float num6 = Math.Abs((float)num4 - position.Y);
double num7 = Math.Sqrt((double)(num5 * num5 + num6 * num6));
if (num7 < (double)num2 * 0.5 && Main.tile[num3, num4].active() && Main.tile[num3, num4].type == 203)
{
Main.tile[num3, num4].active(false);
flag = true;
num = 0f;
}
num4++;
}
num3++;
}
position += value;
}
}
public static void CrimVein(Vector2 position, Vector2 velocity)
{
float num = (float)WorldGen.genRand.Next(15, 26);
bool flag = true;
Vector2 vector = velocity;
Vector2 vector2 = position;
int num2 = WorldGen.genRand.Next(100, 150);
if (velocity.Y < 0f)
{
num2 -= 25;
}
while (flag)
{
num += (float)Main.rand.Next(-50, 51) * 0.02f;
if (num < 15f)
{
num = 15f;
}
if (num > 25f)
{
num = 25f;
}
int num3 = (int)(position.X - num / 2f);
while ((float)num3 < position.X + num / 2f)
{
int num4 = (int)(position.Y - num / 2f);
while ((float)num4 < position.Y + num / 2f)
{
float num5 = Math.Abs((float)num3 - position.X);
float num6 = Math.Abs((float)num4 - position.Y);
double num7 = Math.Sqrt((double)(num5 * num5 + num6 * num6));
if (num7 < (double)num * 0.2)
{
Main.tile[num3, num4].active(false);
Main.tile[num3, num4].wall = 83;
}
else
{
if (num7 < (double)num * 0.5 && Main.tile[num3, num4].wall != 83)
{
Main.tile[num3, num4].active(true);
Main.tile[num3, num4].type = 203;
if (num7 < (double)num * 0.4)
{
Main.tile[num3, num4].wall = 83;
}
}
}
num4++;
}
num3++;
}
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)vector.Y - 0.75)
{
velocity.Y = vector.Y - 0.75f;
}
if ((double)velocity.Y > (double)vector.Y + 0.75)
{
velocity.Y = vector.Y + 0.75f;
}
if ((double)velocity.X < (double)vector.X - 0.75)
{
velocity.X = vector.X - 0.75f;
}
if ((double)velocity.X > (double)vector.X + 0.75)
{
velocity.X = vector.X + 0.75f;
}
position += velocity;
if (Math.Abs(position.X - vector2.X) + Math.Abs(position.Y - vector2.Y) > (float)num2)
{
flag = false;
}
}
WorldGen.heartPos[WorldGen.heartCount] = position;
WorldGen.heartCount++;
}
public static void ChasmRunner(int i, int j, int steps, bool makeOrb = false)
{
bool flag = false;
bool flag2 = false;
bool flag3 = false;
if (!makeOrb)
{
flag2 = true;
}
float num = (float)steps;
Vector2 value;
value.X = (float)i;
value.Y = (float)j;
Vector2 value2;
value2.X = (float)WorldGen.genRand.Next(-10, 11) * 0.1f;
value2.Y = (float)WorldGen.genRand.Next(11) * 0.2f + 0.5f;
int num2 = 5;
double num3 = (double)(WorldGen.genRand.Next(5) + 7);
while (num3 > 0.0)
{
if (num > 0f)
{
num3 += (double)WorldGen.genRand.Next(3);
num3 -= (double)WorldGen.genRand.Next(3);
if (num3 < 7.0)
{
num3 = 7.0;
}
if (num3 > 20.0)
{
num3 = 20.0;
}
if (num == 1f && num3 < 10.0)
{
num3 = 10.0;
}
}
else
{
if ((double)value.Y > Main.worldSurface + 45.0)
{
num3 -= (double)WorldGen.genRand.Next(4);
}
}
if ((double)value.Y > Main.rockLayer && num > 0f)
{
num = 0f;
}
num -= 1f;
if (!flag && (double)value.Y > Main.worldSurface + 20.0)
{
flag = true;
WorldGen.ChasmRunnerSideways((int)value.X, (int)value.Y, -1, WorldGen.genRand.Next(20, 40));
WorldGen.ChasmRunnerSideways((int)value.X, (int)value.Y, 1, WorldGen.genRand.Next(20, 40));
}
int num4;
int num5;
int num6;
int num7;
if (num > (float)num2)
{
num4 = (int)((double)value.X - num3 * 0.5);
num5 = (int)((double)value.X + num3 * 0.5);
num6 = (int)((double)value.Y - num3 * 0.5);
num7 = (int)((double)value.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 k = num4; k < num5; k++)
{
for (int l = num6; l < num7; l++)
{
if ((double)(Math.Abs((float)k - value.X) + Math.Abs((float)l - value.Y)) < num3 * 0.5 * (1.0 + (double)WorldGen.genRand.Next(-10, 11) * 0.015) && Main.tile[k, l].type != 31 && Main.tile[k, l].type != 22)
{
Main.tile[k, l].active(false);
}
}
}
}
if (num <= 2f && (double)value.Y < Main.worldSurface + 45.0)
{
num = 2f;
}
if (num <= 0f)
{
if (!flag2)
{
flag2 = true;
WorldGen.AddShadowOrb((int)value.X, (int)value.Y);
}
else
{
if (!flag3)
{
flag3 = false;
bool flag4 = false;
int num8 = 0;
while (!flag4)
{
int num9 = WorldGen.genRand.Next((int)value.X - 25, (int)value.X + 25);
int num10 = WorldGen.genRand.Next((int)value.Y - 50, (int)value.Y);
if (num9 < 5)
{
num9 = 5;
}
if (num9 > Main.maxTilesX - 5)
{
num9 = Main.maxTilesX - 5;
}
if (num10 < 5)
{
num10 = 5;
}
if (num10 > Main.maxTilesY - 5)
{
num10 = Main.maxTilesY - 5;
}
if ((double)num10 > Main.worldSurface)
{
WorldGen.Place3x2(num9, num10, 26, 0);
if (Main.tile[num9, num10].type == 26)
{
flag4 = true;
}
else
{
num8++;
if (num8 >= 10000)
{
flag4 = true;
}
}
}
else
{
flag4 = true;
}
}
}
}
}
value += value2;
value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.01f;
if ((double)value2.X > 0.3)
{
value2.X = 0.3f;
}
if ((double)value2.X < -0.3)
{
value2.X = -0.3f;
}
num4 = (int)((double)value.X - num3 * 1.1);
num5 = (int)((double)value.X + num3 * 1.1);
num6 = (int)((double)value.Y - num3 * 1.1);
num7 = (int)((double)value.Y + num3 * 1.1);
if (num4 < 1)
{
num4 = 1;
}
if (num5 > Main.maxTilesX - 1)
{
num5 = Main.maxTilesX - 1;
}
if (num6 < 0)
{
num6 = 0;
}
if (num7 > Main.maxTilesY)
{
num7 = Main.maxTilesY;
}
for (int m = num4; m < num5; m++)
{
for (int n = num6; n < num7; n++)
{
if ((double)(Math.Abs((float)m - value.X) + Math.Abs((float)n - value.Y)) < num3 * 1.1 * (1.0 + (double)WorldGen.genRand.Next(-10, 11) * 0.015))
{
if (Main.tile[m, n].type != 25 && n > j + WorldGen.genRand.Next(3, 20))
{
Main.tile[m, n].active(true);
}
if (steps <= num2)
{
Main.tile[m, n].active(true);
}
if (Main.tile[m, n].type != 31)
{
Main.tile[m, n].type = 25;
}
}
}
}
for (int num11 = num4; num11 < num5; num11++)
{
for (int num12 = num6; num12 < num7; num12++)
{
if ((double)(Math.Abs((float)num11 - value.X) + Math.Abs((float)num12 - value.Y)) < num3 * 1.1 * (1.0 + (double)WorldGen.genRand.Next(-10, 11) * 0.015))
{
if (Main.tile[num11, num12].type != 31)
{
Main.tile[num11, num12].type = 25;
}
if (steps <= num2)
{
Main.tile[num11, num12].active(true);
}
if (num12 > j + WorldGen.genRand.Next(3, 20))
{
Main.tile[num11, num12].wall = 3;
}
}
}
}
}
}
public static void JungleRunner(int i, int j)
{
double num = (double)WorldGen.genRand.Next(5, 11);
Vector2 value;
value.X = (float)i;
value.Y = (float)j;
Vector2 value2;
value2.X = (float)WorldGen.genRand.Next(-10, 11) * 0.1f;
value2.Y = (float)WorldGen.genRand.Next(10, 20) * 0.1f;
int num2 = 0;
bool flag = true;
while (flag)
{
if ((double)value.Y < Main.worldSurface)
{
int num3 = (int)value.X;
int num4 = (int)value.Y;
if (num4 < 5)
{
num4 = 5;
}
if (Main.tile[num3, num4].wall == 0 && !Main.tile[num3, num4].active() && Main.tile[num3, num4 - 3].wall == 0 && !Main.tile[num3, num4 - 3].active() && Main.tile[num3, num4 - 1].wall == 0 && !Main.tile[num3, num4 - 1].active() && Main.tile[num3, num4 - 4].wall == 0 && !Main.tile[num3, num4 - 4].active() && Main.tile[num3, num4 - 2].wall == 0 && !Main.tile[num3, num4 - 2].active() && Main.tile[num3, num4 - 5].wall == 0 && !Main.tile[num3, num4 - 5].active())
{
flag = false;
}
}
WorldGen.JungleX = (int)value.X;
num += (double)((float)WorldGen.genRand.Next(-20, 21) * 0.1f);
if (num < 5.0)
{
num = 5.0;
}
if (num > 10.0)
{
num = 10.0;
}
int num5 = (int)((double)value.X - num * 0.5);
int num6 = (int)((double)value.X + num * 0.5);
int num7 = (int)((double)value.Y - num * 0.5);
int num8 = (int)((double)value.Y + num * 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 k = num5; k < num6; k++)
{
for (int l = num7; l < num8; l++)
{
if ((double)(Math.Abs((float)k - value.X) + Math.Abs((float)l - value.Y)) < num * 0.5 * (1.0 + (double)WorldGen.genRand.Next(-10, 11) * 0.015))
{
WorldGen.KillTile(k, l, false, false, false);
}
}
}
num2++;
if (num2 > 10 && WorldGen.genRand.Next(50) < num2)
{
num2 = 0;
int num9 = -2;
if (WorldGen.genRand.Next(2) == 0)
{
num9 = 2;
}
WorldGen.TileRunner((int)value.X, (int)value.Y, (double)WorldGen.genRand.Next(3, 20), WorldGen.genRand.Next(10, 100), -1, false, (float)num9, 0f, false, true);
}
value += value2;
value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.01f;
if (value2.Y > 0f)
{
value2.Y = 0f;
}
if (value2.Y < -2f)
{
value2.Y = -2f;
}
value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.1f;
if (value.X < (float)(i - 200))
{
value2.X += (float)WorldGen.genRand.Next(5, 21) * 0.1f;
}
if (value.X > (float)(i + 200))
{
value2.X -= (float)WorldGen.genRand.Next(5, 21) * 0.1f;
}
if ((double)value2.X > 1.5)
{
value2.X = 1.5f;
}
if ((double)value2.X < -1.5)
{
value2.X = -1.5f;
}
}
}
public static void GERunner(int i, int j, float speedX = 0f, float speedY = 0f, bool good = true)
{
int num = WorldGen.genRand.Next(200, 250);
float num2 = (float)(Main.maxTilesX / 4200);
num = (int)((float)num * num2);
double num3 = (double)num;
Vector2 value;
value.X = (float)i;
value.Y = (float)j;
Vector2 value2;
value2.X = (float)WorldGen.genRand.Next(-10, 11) * 0.1f;
value2.Y = (float)WorldGen.genRand.Next(-10, 11) * 0.1f;
if (speedX != 0f || speedY != 0f)
{
value2.X = speedX;
value2.Y = speedY;
}
bool flag = true;
while (flag)
{
int num4 = (int)((double)value.X - num3 * 0.5);
int num5 = (int)((double)value.X + num3 * 0.5);
int num6 = (int)((double)value.Y - num3 * 0.5);
int num7 = (int)((double)value.Y + num3 * 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;
}
for (int k = num4; k < num5; k++)
{
for (int l = num6; l < num7; l++)
{
if ((double)(Math.Abs((float)k - value.X) + Math.Abs((float)l - value.Y)) < (double)num * 0.5 * (1.0 + (double)WorldGen.genRand.Next(-10, 11) * 0.015))
{
if (good)
{
if (Main.tile[k, l].wall == 63 || Main.tile[k, l].wall == 65 || Main.tile[k, l].wall == 66 || Main.tile[k, l].wall == 68 || Main.tile[k, l].wall == 69 || Main.tile[k, l].wall == 81)
{
Main.tile[k, l].wall = 70;
}
if (Main.tile[k, l].wall == 3 || Main.tile[k, l].wall == 83)
{
Main.tile[k, l].wall = 28;
}
if (Main.tile[k, l].type == 2)
{
Main.tile[k, l].type = 109;
WorldGen.SquareTileFrame(k, l, true);
}
else
{
if (Main.tile[k, l].type == 1)
{
Main.tile[k, l].type = 117;
WorldGen.SquareTileFrame(k, l, true);
}
else
{
if (Main.tile[k, l].type == 53 || Main.tile[k, l].type == 123)
{
Main.tile[k, l].type = 116;
WorldGen.SquareTileFrame(k, l, true);
}
else
{
if (Main.tile[k, l].type == 23 || Main.tile[k, l].type == 199)
{
Main.tile[k, l].type = 109;
WorldGen.SquareTileFrame(k, l, true);
}
else
{
if (Main.tile[k, l].type == 25 || Main.tile[k, l].type == 203)
{
Main.tile[k, l].type = 117;
WorldGen.SquareTileFrame(k, l, true);
}
else
{
if (Main.tile[k, l].type == 112 || Main.tile[k, l].type == 234)
{
Main.tile[k, l].type = 116;
WorldGen.SquareTileFrame(k, l, true);
}
else
{
if (Main.tile[k, l].type == 161 || Main.tile[k, l].type == 163 || Main.tile[k, l].type == 200)
{
Main.tile[k, l].type = 164;
WorldGen.SquareTileFrame(k, l, true);
}
}
}
}
}
}
}
}
else
{
if (WorldGen.crimson)
{
if (Main.tile[k, l].wall == 63 || Main.tile[k, l].wall == 65 || Main.tile[k, l].wall == 66 || Main.tile[k, l].wall == 68)
{
Main.tile[k, l].wall = 81;
}
if (Main.tile[k, l].type == 2)
{
Main.tile[k, l].type = 199;
WorldGen.SquareTileFrame(k, l, true);
}
else
{
if (Main.tile[k, l].type == 1)
{
Main.tile[k, l].type = 203;
WorldGen.SquareTileFrame(k, l, true);
}
else
{
if (Main.tile[k, l].type == 53 || Main.tile[k, l].type == 123)
{
Main.tile[k, l].type = 234;
WorldGen.SquareTileFrame(k, l, true);
}
else
{
if (Main.tile[k, l].type == 109)
{
Main.tile[k, l].type = 199;
WorldGen.SquareTileFrame(k, l, true);
}
else
{
if (Main.tile[k, l].type == 117)
{
Main.tile[k, l].type = 203;
WorldGen.SquareTileFrame(k, l, true);
}
else
{
if (Main.tile[k, l].type == 116)
{
Main.tile[k, l].type = 234;
WorldGen.SquareTileFrame(k, l, true);
}
else
{
if (Main.tile[k, l].type == 161 || Main.tile[k, l].type == 164)
{
Main.tile[k, l].type = 200;
WorldGen.SquareTileFrame(k, l, true);
}
}
}
}
}
}
}
}
else
{
if (Main.tile[k, l].wall == 63 || Main.tile[k, l].wall == 65 || Main.tile[k, l].wall == 66 || Main.tile[k, l].wall == 68)
{
Main.tile[k, l].wall = 69;
}
if (Main.tile[k, l].type == 2)
{
Main.tile[k, l].type = 23;
WorldGen.SquareTileFrame(k, l, true);
}
else
{
if (Main.tile[k, l].type == 1)
{
Main.tile[k, l].type = 25;
WorldGen.SquareTileFrame(k, l, true);
}
else
{
if (Main.tile[k, l].type == 53 || Main.tile[k, l].type == 123)
{
Main.tile[k, l].type = 112;
WorldGen.SquareTileFrame(k, l, true);
}
else
{
if (Main.tile[k, l].type == 109)
{
Main.tile[k, l].type = 23;
WorldGen.SquareTileFrame(k, l, true);
}
else
{
if (Main.tile[k, l].type == 117)
{
Main.tile[k, l].type = 25;
WorldGen.SquareTileFrame(k, l, true);
}
else
{
if (Main.tile[k, l].type == 116)
{
Main.tile[k, l].type = 112;
WorldGen.SquareTileFrame(k, l, true);
}
else
{
if (Main.tile[k, l].type == 161 || Main.tile[k, l].type == 164)
{
Main.tile[k, l].type = 163;
WorldGen.SquareTileFrame(k, l, true);
}
}
}
}
}
}
}
}
}
}
}
}
value += value2;
value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
if (value2.X > speedX + 1f)
{
value2.X = speedX + 1f;
}
if (value2.X < speedX - 1f)
{
value2.X = speedX - 1f;
}
if (value.X < (float)(-(float)num) || value.Y < (float)(-(float)num) || value.X > (float)(Main.maxTilesX + num) || value.Y > (float)(Main.maxTilesX + num))
{
flag = false;
}
}
}
public static void TileRunner(int i, int j, double strength, int steps, int type, bool addTile = false, float speedX = 0f, float speedY = 0f, bool noYChange = false, bool overRide = true)
{
double num = strength;
float num2 = (float)steps;
Vector2 value;
value.X = (float)i;
value.Y = (float)j;
Vector2 value2;
value2.X = (float)WorldGen.genRand.Next(-10, 11) * 0.1f;
value2.Y = (float)WorldGen.genRand.Next(-10, 11) * 0.1f;
if (speedX != 0f || speedY != 0f)
{
value2.X = speedX;
value2.Y = speedY;
}
while (num > 0.0 && num2 > 0f)
{
if (value.Y < 0f && num2 > 0f && type == 59)
{
num2 = 0f;
}
num = strength * (double)(num2 / (float)steps);
num2 -= 1f;
int num3 = (int)((double)value.X - num * 0.5);
int num4 = (int)((double)value.X + num * 0.5);
int num5 = (int)((double)value.Y - num * 0.5);
int num6 = (int)((double)value.Y + num * 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 k = num3; k < num4; k++)
{
for (int l = num5; l < num6; l++)
{
if ((double)(Math.Abs((float)k - value.X) + Math.Abs((float)l - value.Y)) < strength * 0.5 * (1.0 + (double)WorldGen.genRand.Next(-10, 11) * 0.015))
{
if (WorldGen.mudWall && (double)l > Main.worldSurface && Main.tile[k, l - 1].wall != 2 && l < Main.maxTilesY - 210 - WorldGen.genRand.Next(3))
{
if (l > WorldGen.lavaLine - WorldGen.genRand.Next(0, 4) - 50)
{
if (Main.tile[k, l - 1].wall != 64 && Main.tile[k, l + 1].wall != 64 && Main.tile[k - 1, l].wall != 64 && Main.tile[k, l + 1].wall != 64)
{
WorldGen.PlaceWall(k, l, 15, true);
}
}
else
{
if (Main.tile[k, l - 1].wall != 15 && Main.tile[k, l + 1].wall != 15 && Main.tile[k - 1, l].wall != 15 && Main.tile[k, l + 1].wall != 15)
{
WorldGen.PlaceWall(k, l, 64, true);
}
}
}
if (type < 0)
{
if (type == -2 && Main.tile[k, l].active() && (l < WorldGen.waterLine || l > WorldGen.lavaLine))
{
Main.tile[k, l].liquid = 255;
if (l > WorldGen.lavaLine)
{
Main.tile[k, l].lava(true);
}
}
Main.tile[k, l].active(false);
}
else
{
if ((overRide || !Main.tile[k, l].active()) && (type != 40 || Main.tile[k, l].type != 53) && (!Main.tileStone[type] || Main.tile[k, l].type == 1) && Main.tile[k, l].type != 189 && Main.tile[k, l].type != 196 && Main.tile[k, l].type != 45 && Main.tile[k, l].type != 147 && Main.tile[k, l].type != 190 && (Main.tile[k, l].type != 1 || type != 59 || (double)l >= Main.worldSurface + (double)WorldGen.genRand.Next(-50, 50)))
{
if (Main.tile[k, l].type != 53 || (double)l >= Main.worldSurface)
{
Main.tile[k, l].type = (byte)type;
}
else
{
if (type == 59)
{
Main.tile[k, l].type = (byte)type;
}
}
}
if (addTile)
{
Main.tile[k, l].active(true);
Main.tile[k, l].liquid = 0;
Main.tile[k, l].lava(false);
}
if (noYChange && (double)l < Main.worldSurface && type != 59)
{
Main.tile[k, l].wall = 2;
}
if (type == 59 && l > WorldGen.waterLine && Main.tile[k, l].liquid > 0)
{
Main.tile[k, l].lava(false);
Main.tile[k, l].liquid = 0;
}
}
}
}
}
value += value2;
if (num > 50.0)
{
value += value2;
num2 -= 1f;
value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
if (num > 100.0)
{
value += value2;
num2 -= 1f;
value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
if (num > 150.0)
{
value += value2;
num2 -= 1f;
value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
if (num > 200.0)
{
value += value2;
num2 -= 1f;
value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
if (num > 250.0)
{
value += value2;
num2 -= 1f;
value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
if (num > 300.0)
{
value += value2;
num2 -= 1f;
value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
if (num > 400.0)
{
value += value2;
num2 -= 1f;
value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
if (num > 500.0)
{
value += value2;
num2 -= 1f;
value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
if (num > 600.0)
{
value += value2;
num2 -= 1f;
value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
if (num > 700.0)
{
value += value2;
num2 -= 1f;
value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
if (num > 800.0)
{
value += value2;
num2 -= 1f;
value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
if (num > 900.0)
{
value += value2;
num2 -= 1f;
value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
}
}
}
}
}
}
}
}
}
}
}
}
value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
if (value2.X > 1f)
{
value2.X = 1f;
}
if (value2.X < -1f)
{
value2.X = -1f;
}
if (!noYChange)
{
value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
if (value2.Y > 1f)
{
value2.Y = 1f;
}
if (value2.Y < -1f)
{
value2.Y = -1f;
}
}
else
{
if (type != 59 && num < 3.0)
{
if (value2.Y > 1f)
{
value2.Y = 1f;
}
if (value2.Y < -1f)
{
value2.Y = -1f;
}
}
}
if (type == 59 && !noYChange)
{
if ((double)value2.Y > 0.5)
{
value2.Y = 0.5f;
}
if ((double)value2.Y < -0.5)
{
value2.Y = -0.5f;
}
if ((double)value.Y < Main.rockLayer + 100.0)
{
value2.Y = 1f;
}
if (value.Y > (float)(Main.maxTilesY - 300))
{
value2.Y = -1f;
}
}
}
}
public static void DirtyRockRunner(int i, int j)
{
double num = (double)WorldGen.genRand.Next(2, 6);
float num2 = (float)WorldGen.genRand.Next(5, 50);
float num3 = num2;
Vector2 value;
value.X = (float)i;
value.Y = (float)j;
Vector2 value2;
value2.X = (float)WorldGen.genRand.Next(-10, 11) * 0.1f;
value2.Y = (float)WorldGen.genRand.Next(-10, 11) * 0.1f;
while (num > 0.0 && num3 > 0f)
{
double num4 = num * (double)(num3 / num2);
num3 -= 1f;
int num5 = (int)((double)value.X - num4 * 0.5);
int num6 = (int)((double)value.X + num4 * 0.5);
int num7 = (int)((double)value.Y - num4 * 0.5);
int num8 = (int)((double)value.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 k = num5; k < num6; k++)
{
for (int l = num7; l < num8; l++)
{
if ((double)(Math.Abs((float)k - value.X) + Math.Abs((float)l - value.Y)) < num * 0.5 * (1.0 + (double)WorldGen.genRand.Next(-10, 11) * 0.015) && Main.tile[k, l].wall == 2)
{
Main.tile[k, l].wall = 59;
}
}
}
value += value2;
value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
if (value2.X > 1f)
{
value2.X = 1f;
}
if (value2.X < -1f)
{
value2.X = -1f;
}
value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
if (value2.Y > 1f)
{
value2.Y = 1f;
}
if (value2.Y < -1f)
{
value2.Y = -1f;
}
}
}
public static void MudWallRunner(int i, int j)
{
double num = (double)WorldGen.genRand.Next(8, 21);
float num2 = (float)WorldGen.genRand.Next(8, 33);
float num3 = num2;
Vector2 value;
value.X = (float)i;
value.Y = (float)j;
Vector2 value2;
value2.X = (float)WorldGen.genRand.Next(-10, 11) * 0.1f;
value2.Y = (float)WorldGen.genRand.Next(-10, 11) * 0.1f;
while (num > 0.0 && num3 > 0f)
{
double num4 = num * (double)(num3 / num2);
num3 -= 1f;
int num5 = (int)((double)value.X - num4 * 0.5);
int num6 = (int)((double)value.X + num4 * 0.5);
int num7 = (int)((double)value.Y - num4 * 0.5);
int num8 = (int)((double)value.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 k = num5; k < num6; k++)
{
for (int l = num7; l < num8; l++)
{
if ((double)(Math.Abs((float)k - value.X) + Math.Abs((float)l - value.Y)) < num * 0.5 * (1.0 + (double)WorldGen.genRand.Next(-10, 11) * 0.015) && (double)l > Main.worldSurface)
{
Main.tile[k, l].wall = 0;
}
}
}
value += value2;
value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
if (value2.X > 1f)
{
value2.X = 1f;
}
if (value2.X < -1f)
{
value2.X = -1f;
}
value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
if (value2.Y > 1f)
{
value2.Y = 1f;
}
if (value2.Y < -1f)
{
value2.Y = -1f;
}
}
}
public static void CloudIsland(int i, int j)
{
double num = (double)WorldGen.genRand.Next(100, 150);
float num2 = (float)WorldGen.genRand.Next(20, 30);
int num3 = i;
int num4 = i;
int num5 = i;
int num6 = j;
Vector2 value;
value.X = (float)i;
value.Y = (float)j;
Vector2 value2;
value2.X = (float)WorldGen.genRand.Next(-20, 21) * 0.2f;
while (value2.X > -2f && value2.X < 2f)
{
value2.X = (float)WorldGen.genRand.Next(-20, 21) * 0.2f;
}
value2.Y = (float)WorldGen.genRand.Next(-20, -10) * 0.02f;
while (num > 0.0 && num2 > 0f)
{
num -= (double)WorldGen.genRand.Next(4);
num2 -= 1f;
int num7 = (int)((double)value.X - num * 0.5);
int num8 = (int)((double)value.X + num * 0.5);
int num9 = (int)((double)value.Y - num * 0.5);
int num10 = (int)((double)value.Y + num * 0.5);
if (num7 < 0)
{
num7 = 0;
}
if (num8 > Main.maxTilesX)
{
num8 = Main.maxTilesX;
}
if (num9 < 0)
{
num9 = 0;
}
if (num10 > Main.maxTilesY)
{
num10 = Main.maxTilesY;
}
double num11 = num * (double)WorldGen.genRand.Next(80, 120) * 0.01;
float num12 = value.Y + 1f;
for (int k = num7; k < num8; k++)
{
if (WorldGen.genRand.Next(2) == 0)
{
num12 += (float)WorldGen.genRand.Next(-1, 2);
}
if (num12 < value.Y)
{
num12 = value.Y;
}
if (num12 > value.Y + 2f)
{
num12 = value.Y + 2f;
}
for (int l = num9; l < num10; l++)
{
if ((float)l > num12)
{
float num13 = Math.Abs((float)k - value.X);
float num14 = Math.Abs((float)l - value.Y) * 3f;
double num15 = Math.Sqrt((double)(num13 * num13 + num14 * num14));
if (num15 < num11 * 0.4)
{
if (k < num3)
{
num3 = k;
}
if (k > num4)
{
num4 = k;
}
if (l < num5)
{
num5 = l;
}
if (l > num6)
{
num6 = l;
}
Main.tile[k, l].active(true);
Main.tile[k, l].type = 189;
WorldGen.SquareTileFrame(k, l, true);
}
}
}
}
value += value2;
value2.X += (float)WorldGen.genRand.Next(-20, 21) * 0.05f;
if (value2.X > 1f)
{
value2.X = 1f;
}
if (value2.X < -1f)
{
value2.X = -1f;
}
if ((double)value2.Y > 0.2)
{
value2.Y = -0.2f;
}
if ((double)value2.Y < -0.2)
{
value2.Y = -0.2f;
}
}
int m = num3;
int num17;
for (m += WorldGen.genRand.Next(5); m < num4; m += WorldGen.genRand.Next(num17, (int)((double)num17 * 1.5)))
{
int num16 = num6;
while (!Main.tile[m, num16].active())
{
num16--;
}
num16 += WorldGen.genRand.Next(-3, 4);
num17 = WorldGen.genRand.Next(4, 8);
int num18 = 189;
if (WorldGen.genRand.Next(4) == 0)
{
num18 = 196;
}
for (int n = m - num17; n <= m + num17; n++)
{
for (int num19 = num16 - num17; num19 <= num16 + num17; num19++)
{
if (num19 > num5)
{
float num20 = (float)Math.Abs(n - m);
float num21 = (float)(Math.Abs(num19 - num16) * 2);
double num22 = Math.Sqrt((double)(num20 * num20 + num21 * num21));
if (num22 < (double)(num17 + WorldGen.genRand.Next(2)))
{
Main.tile[n, num19].active(true);
Main.tile[n, num19].type = (byte)num18;
WorldGen.SquareTileFrame(n, num19, true);
}
}
}
}
}
num = (double)WorldGen.genRand.Next(80, 95);
num2 = (float)WorldGen.genRand.Next(10, 15);
value.X = (float)i;
value.Y = (float)num5;
value2.X = (float)WorldGen.genRand.Next(-20, 21) * 0.2f;
while (value2.X > -2f && value2.X < 2f)
{
value2.X = (float)WorldGen.genRand.Next(-20, 21) * 0.2f;
}
value2.Y = (float)WorldGen.genRand.Next(-20, -10) * 0.02f;
while (num > 0.0 && num2 > 0f)
{
num -= (double)WorldGen.genRand.Next(4);
num2 -= 1f;
int num7 = (int)((double)value.X - num * 0.5);
int num8 = (int)((double)value.X + num * 0.5);
int num9 = num5 - 1;
int num10 = (int)((double)value.Y + num * 0.5);
if (num7 < 0)
{
num7 = 0;
}
if (num8 > Main.maxTilesX)
{
num8 = Main.maxTilesX;
}
if (num9 < 0)
{
num9 = 0;
}
if (num10 > Main.maxTilesY)
{
num10 = Main.maxTilesY;
}
double num11 = num * (double)WorldGen.genRand.Next(80, 120) * 0.01;
float num23 = value.Y + 1f;
for (int num24 = num7; num24 < num8; num24++)
{
if (WorldGen.genRand.Next(2) == 0)
{
num23 += (float)WorldGen.genRand.Next(-1, 2);
}
if (num23 < value.Y)
{
num23 = value.Y;
}
if (num23 > value.Y + 2f)
{
num23 = value.Y + 2f;
}
for (int num25 = num9; num25 < num10; num25++)
{
if ((float)num25 > num23)
{
float num26 = Math.Abs((float)num24 - value.X);
float num27 = Math.Abs((float)num25 - value.Y) * 3f;
double num28 = Math.Sqrt((double)(num26 * num26 + num27 * num27));
if (num28 < num11 * 0.4 && Main.tile[num24, num25].type == 189)
{
Main.tile[num24, num25].type = 0;
WorldGen.SquareTileFrame(num24, num25, true);
}
}
}
}
value += value2;
value2.X += (float)WorldGen.genRand.Next(-20, 21) * 0.05f;
if (value2.X > 1f)
{
value2.X = 1f;
}
if (value2.X < -1f)
{
value2.X = -1f;
}
if ((double)value2.Y > 0.2)
{
value2.Y = -0.2f;
}
if ((double)value2.Y < -0.2)
{
value2.Y = -0.2f;
}
}
int num29 = num3;
num29 += WorldGen.genRand.Next(5);
while (num29 < num4)
{
int num30 = num6;
while ((!Main.tile[num29, num30].active() || Main.tile[num29, num30].type != 0) && num29 < num4)
{
num30--;
if (num30 < num5)
{
num30 = num6;
num29 += WorldGen.genRand.Next(1, 4);
}
}
if (num29 < num4)
{
num30 += WorldGen.genRand.Next(0, 4);
int num31 = WorldGen.genRand.Next(2, 5);
int num32 = 189;
for (int num33 = num29 - num31; num33 <= num29 + num31; num33++)
{
for (int num34 = num30 - num31; num34 <= num30 + num31; num34++)
{
if (num34 > num5)
{
float num35 = (float)Math.Abs(num33 - num29);
float num36 = (float)(Math.Abs(num34 - num30) * 2);
double num37 = Math.Sqrt((double)(num35 * num35 + num36 * num36));
if (num37 < (double)num31)
{
Main.tile[num33, num34].type = (byte)num32;
WorldGen.SquareTileFrame(num33, num34, true);
}
}
}
}
num29 += WorldGen.genRand.Next(num31, (int)((double)num31 * 1.5));
}
}
for (int num38 = num3 - 20; num38 <= num4 + 20; num38++)
{
for (int num39 = num5 - 20; num39 <= num6 + 20; num39++)
{
bool flag = true;
for (int num40 = num38 - 1; num40 <= num38 + 1; num40++)
{
for (int num41 = num39 - 1; num41 <= num39 + 1; num41++)
{
if (!Main.tile[num40, num41].active())
{
flag = false;
}
}
}
if (flag)
{
Main.tile[num38, num39].wall = 73;
WorldGen.SquareWallFrame(num38, num39, true);
}
}
}
for (int num42 = num3; num42 <= num4; num42++)
{
int num43 = num5 - 10;
while (!Main.tile[num42, num43 + 1].active())
{
num43++;
}
if (num43 < num6 && Main.tile[num42, num43 + 1].type == 189)
{
if (WorldGen.genRand.Next(10) == 0)
{
int num44 = WorldGen.genRand.Next(1, 3);
for (int num45 = num42 - num44; num45 <= num42 + num44; num45++)
{
if (Main.tile[num45, num43].type == 189)
{
Main.tile[num45, num43].active(false);
Main.tile[num45, num43].liquid = 255;
Main.tile[num45, num43].lava(false);
WorldGen.SquareTileFrame(num42, num43, true);
}
if (Main.tile[num45, num43 + 1].type == 189)
{
Main.tile[num45, num43 + 1].active(false);
Main.tile[num45, num43 + 1].liquid = 255;
Main.tile[num45, num43 + 1].lava(false);
WorldGen.SquareTileFrame(num42, num43 + 1, true);
}
if (num45 > num42 - num44 && num45 < num42 + 2 && Main.tile[num45, num43 + 2].type == 189)
{
Main.tile[num45, num43 + 2].active(false);
Main.tile[num45, num43 + 2].liquid = 255;
Main.tile[num45, num43 + 2].lava(false);
WorldGen.SquareTileFrame(num42, num43 + 2, true);
}
}
}
if (WorldGen.genRand.Next(5) == 0)
{
Main.tile[num42, num43].liquid = 255;
}
Main.tile[num42, num43].lava(false);
WorldGen.SquareTileFrame(num42, num43, true);
}
}
int num46 = WorldGen.genRand.Next(4);
for (int num47 = 0; num47 <= num46; num47++)
{
int num48 = WorldGen.genRand.Next(num3 - 5, num4 + 5);
int num49 = num5 - WorldGen.genRand.Next(20, 40);
int num50 = WorldGen.genRand.Next(4, 8);
int num51 = 189;
if (WorldGen.genRand.Next(2) == 0)
{
num51 = 196;
}
for (int num52 = num48 - num50; num52 <= num48 + num50; num52++)
{
for (int num53 = num49 - num50; num53 <= num49 + num50; num53++)
{
float num54 = (float)Math.Abs(num52 - num48);
float num55 = (float)(Math.Abs(num53 - num49) * 2);
double num56 = Math.Sqrt((double)(num54 * num54 + num55 * num55));
if (num56 < (double)(num50 + WorldGen.genRand.Next(-1, 2)))
{
Main.tile[num52, num53].active(true);
Main.tile[num52, num53].type = (byte)num51;
WorldGen.SquareTileFrame(num52, num53, true);
}
}
}
for (int num57 = num48 - num50 + 2; num57 <= num48 + num50 - 2; num57++)
{
int num58 = num49 - num50;
while (!Main.tile[num57, num58].active())
{
num58++;
}
Main.tile[num57, num58].active(false);
Main.tile[num57, num58].liquid = 255;
WorldGen.SquareTileFrame(num57, num58, true);
}
}
}
public static void FloatingIsland(int i, int j)
{
double num = (double)WorldGen.genRand.Next(80, 120);
float num2 = (float)WorldGen.genRand.Next(20, 25);
Vector2 value;
value.X = (float)i;
value.Y = (float)j;
Vector2 value2;
value2.X = (float)WorldGen.genRand.Next(-20, 21) * 0.2f;
while (value2.X > -2f && value2.X < 2f)
{
value2.X = (float)WorldGen.genRand.Next(-20, 21) * 0.2f;
}
value2.Y = (float)WorldGen.genRand.Next(-20, -10) * 0.02f;
while (num > 0.0 && num2 > 0f)
{
num -= (double)WorldGen.genRand.Next(4);
num2 -= 1f;
int num3 = (int)((double)value.X - num * 0.5);
int num4 = (int)((double)value.X + num * 0.5);
int num5 = (int)((double)value.Y - num * 0.5);
int num6 = (int)((double)value.Y + num * 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 = num * (double)WorldGen.genRand.Next(80, 120) * 0.01;
float num8 = value.Y + 1f;
for (int k = num3; k < num4; k++)
{
if (WorldGen.genRand.Next(2) == 0)
{
num8 += (float)WorldGen.genRand.Next(-1, 2);
}
if (num8 < value.Y)
{
num8 = value.Y;
}
if (num8 > value.Y + 2f)
{
num8 = value.Y + 2f;
}
for (int l = num5; l < num6; l++)
{
if ((float)l > num8)
{
float num9 = Math.Abs((float)k - value.X);
float num10 = Math.Abs((float)l - value.Y) * 2f;
double num11 = Math.Sqrt((double)(num9 * num9 + num10 * num10));
if (num11 < num7 * 0.4)
{
Main.tile[k, l].active(true);
if (Main.tile[k, l].type == 59)
{
Main.tile[k, l].type = 0;
}
}
}
}
}
num3 = (int)((double)value.X - num * 0.4);
num4 = (int)((double)value.X + num * 0.4);
num5 = (int)((double)value.Y - num * 0.4);
num6 = (int)((double)value.Y + num * 0.4);
if (num3 < 0)
{
num3 = 0;
}
if (num4 > Main.maxTilesX)
{
num4 = Main.maxTilesX;
}
if (num5 < 0)
{
num5 = 0;
}
if (num6 > Main.maxTilesY)
{
num6 = Main.maxTilesY;
}
num7 = num * (double)WorldGen.genRand.Next(80, 120) * 0.01;
for (int m = num3; m < num4; m++)
{
for (int n = num5; n < num6; n++)
{
if ((float)n > value.Y + 2f)
{
float num12 = Math.Abs((float)m - value.X);
float num13 = Math.Abs((float)n - value.Y) * 2f;
double num14 = Math.Sqrt((double)(num12 * num12 + num13 * num13));
if (num14 < num7 * 0.4)
{
Main.tile[m, n].wall = 2;
}
}
}
}
value += value2;
value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
if (value2.X > 1f)
{
value2.X = 1f;
}
if (value2.X < -1f)
{
value2.X = -1f;
}
if ((double)value2.Y > 0.2)
{
value2.Y = -0.2f;
}
if ((double)value2.Y < -0.2)
{
value2.Y = -0.2f;
}
}
}
public static void Caverer(int X, int Y)
{
int num = WorldGen.genRand.Next(2);
if (num == 0)
{
int num2 = WorldGen.genRand.Next(7, 9);
float num3 = (float)WorldGen.genRand.Next(100) * 0.01f;
float num4 = 1f - num3;
if (WorldGen.genRand.Next(2) == 0)
{
num3 = -num3;
}
if (WorldGen.genRand.Next(2) == 0)
{
num4 = -num4;
}
Vector2 vector = new Vector2((float)X, (float)Y);
for (int i = 0; i < num2; i++)
{
vector = WorldGen.digTunnel(vector.X, vector.Y, num3, num4, WorldGen.genRand.Next(6, 20), WorldGen.genRand.Next(4, 9), false);
num3 += (float)WorldGen.genRand.Next(-20, 21) * 0.1f;
num4 += (float)WorldGen.genRand.Next(-20, 21) * 0.1f;
if ((double)num3 < -1.5)
{
num3 = -1.5f;
}
if ((double)num3 > 1.5)
{
num3 = 1.5f;
}
if ((double)num4 < -1.5)
{
num4 = -1.5f;
}
if ((double)num4 > 1.5)
{
num4 = 1.5f;
}
float num5 = (float)WorldGen.genRand.Next(100) * 0.01f;
float num6 = 1f - num5;
if (WorldGen.genRand.Next(2) == 0)
{
num5 = -num5;
}
if (WorldGen.genRand.Next(2) == 0)
{
num6 = -num6;
}
Vector2 vector2 = WorldGen.digTunnel(vector.X, vector.Y, num5, num6, WorldGen.genRand.Next(30, 50), WorldGen.genRand.Next(3, 6), false);
WorldGen.TileRunner((int)vector2.X, (int)vector2.Y, (double)WorldGen.genRand.Next(10, 20), WorldGen.genRand.Next(5, 10), -1, false, 0f, 0f, false, true);
}
return;
}
if (num == 1)
{
int num7 = WorldGen.genRand.Next(15, 30);
float num8 = (float)WorldGen.genRand.Next(100) * 0.01f;
float num9 = 1f - num8;
if (WorldGen.genRand.Next(2) == 0)
{
num8 = -num8;
}
if (WorldGen.genRand.Next(2) == 0)
{
num9 = -num9;
}
Vector2 vector3 = new Vector2((float)X, (float)Y);
for (int j = 0; j < num7; j++)
{
vector3 = WorldGen.digTunnel(vector3.X, vector3.Y, num8, num9, WorldGen.genRand.Next(5, 15), WorldGen.genRand.Next(2, 6), true);
num8 += (float)WorldGen.genRand.Next(-20, 21) * 0.1f;
num9 += (float)WorldGen.genRand.Next(-20, 21) * 0.1f;
if ((double)num8 < -1.5)
{
num8 = -1.5f;
}
if ((double)num8 > 1.5)
{
num8 = 1.5f;
}
if ((double)num9 < -1.5)
{
num9 = -1.5f;
}
if ((double)num9 > 1.5)
{
num9 = 1.5f;
}
}
}
}
public static Vector2 digTunnel(float X, float Y, float xDir, float yDir, int Steps, int Size, bool Wet = false)
{
float num = X;
float num2 = Y;
try
{
float num3 = 0f;
float num4 = 0f;
float num5 = (float)Size;
for (int i = 0; i < Steps; i++)
{
int num6 = (int)(num - num5);
while ((float)num6 <= num + num5)
{
int num7 = (int)(num2 - num5);
while ((float)num7 <= num2 + num5)
{
if ((double)(Math.Abs((float)num6 - num) + Math.Abs((float)num7 - num2)) < (double)num5 * (1.0 + (double)WorldGen.genRand.Next(-10, 11) * 0.005))
{
Main.tile[num6, num7].active(false);
if (Wet)
{
Main.tile[num6, num7].liquid = 255;
}
}
num7++;
}
num6++;
}
num5 += (float)WorldGen.genRand.Next(-50, 51) * 0.03f;
if ((double)num5 < (double)Size * 0.6)
{
num5 = (float)Size * 0.6f;
}
if (num5 > (float)(Size * 2))
{
num5 = (float)Size * 2f;
}
num3 += (float)WorldGen.genRand.Next(-20, 21) * 0.01f;
num4 += (float)WorldGen.genRand.Next(-20, 21) * 0.01f;
if (num3 < -1f)
{
num3 = -1f;
}
if (num3 > 1f)
{
num3 = 1f;
}
if (num4 < -1f)
{
num4 = -1f;
}
if (num4 > 1f)
{
num4 = 1f;
}
num += (xDir + num3) * 0.6f;
num2 += (yDir + num4) * 0.6f;
}
}
catch
{
}
return new Vector2(num, num2);
}
public static void IslandHouse(int i, int j)
{
byte type = 202;
byte wall = 82;
Vector2 vector = new Vector2((float)i, (float)j);
int num = 1;
if (WorldGen.genRand.Next(2) == 0)
{
num = -1;
}
int num2 = WorldGen.genRand.Next(7, 12);
int num3 = WorldGen.genRand.Next(5, 7);
vector.X = (float)(i + (num2 + 2) * num);
for (int k = j - 15; k < j + 30; k++)
{
if (Main.tile[(int)vector.X, k].active())
{
vector.Y = (float)(k - 1);
break;
}
}
vector.X = (float)i;
int num4 = (int)(vector.X - (float)num2 - 1f);
int num5 = (int)(vector.X + (float)num2 + 1f);
int num6 = (int)(vector.Y - (float)num3 - 1f);
int num7 = (int)(vector.Y + 2f);
if (num4 < 0)
{
num4 = 0;
}
if (num5 > Main.maxTilesX)
{
num5 = Main.maxTilesX;
}
if (num6 < 0)
{
num6 = 0;
}
if (num7 > Main.maxTilesY)
{
num7 = Main.maxTilesY;
}
for (int l = num4; l <= num5; l++)
{
for (int m = num6 - 1; m < num7 + 1; m++)
{
if (m != num6 - 1 || (l != num4 && l != num5))
{
Main.tile[l, m].active(true);
Main.tile[l, m].liquid = 0;
Main.tile[l, m].type = type;
Main.tile[l, m].wall = 0;
Main.tile[l, m].halfBrick(false);
Main.tile[l, m].slope(0);
}
}
}
num4 = (int)(vector.X - (float)num2);
num5 = (int)(vector.X + (float)num2);
num6 = (int)(vector.Y - (float)num3);
num7 = (int)(vector.Y + 1f);
if (num4 < 0)
{
num4 = 0;
}
if (num5 > Main.maxTilesX)
{
num5 = Main.maxTilesX;
}
if (num6 < 0)
{
num6 = 0;
}
if (num7 > Main.maxTilesY)
{
num7 = Main.maxTilesY;
}
for (int n = num4; n <= num5; n++)
{
for (int num8 = num6; num8 < num7; num8++)
{
if ((num8 != num6 || (n != num4 && n != num5)) && Main.tile[n, num8].wall == 0)
{
Main.tile[n, num8].active(false);
Main.tile[n, num8].wall = wall;
}
}
}
int num9 = i + (num2 + 1) * num;
int num10 = (int)vector.Y;
for (int num11 = num9 - 2; num11 <= num9 + 2; num11++)
{
Main.tile[num11, num10].active(false);
Main.tile[num11, num10 - 1].active(false);
Main.tile[num11, num10 - 2].active(false);
}
WorldGen.PlaceTile(num9, num10, 10, true, false, -1, 9);
num9 = i + (num2 + 1) * -num - num;
for (int num12 = num6; num12 <= num7 + 1; num12++)
{
Main.tile[num9, num12].active(true);
Main.tile[num9, num12].liquid = 0;
Main.tile[num9, num12].type = type;
Main.tile[num9, num12].wall = 0;
Main.tile[num9, num12].halfBrick(false);
Main.tile[num9, num12].slope(0);
}
int contain = 0;
int num13 = WorldGen.houseCount;
if (num13 > 2)
{
num13 = WorldGen.genRand.Next(3);
}
if (num13 == 0)
{
contain = 159;
}
else
{
if (num13 == 1)
{
contain = 65;
}
else
{
if (num13 == 2)
{
contain = 158;
}
}
}
WorldGen.AddBuriedChest(i, num10 - 3, contain, false, 13);
WorldGen.houseCount++;
int num14 = i - num2 / 2 + 1;
int num15 = i + num2 / 2 - 1;
int num16 = 1;
if (num2 > 10)
{
num16 = 2;
}
int num17 = (num6 + num7) / 2 - 1;
for (int num18 = num14 - num16; num18 <= num14 + num16; num18++)
{
for (int num19 = num17 - 1; num19 <= num17 + 1; num19++)
{
Main.tile[num18, num19].wall = 21;
}
}
for (int num20 = num15 - num16; num20 <= num15 + num16; num20++)
{
for (int num21 = num17 - 1; num21 <= num17 + 1; num21++)
{
Main.tile[num20, num21].wall = 21;
}
}
int num22 = i + (num2 / 2 + 1) * -num;
WorldGen.PlaceTile(num22, num7 - 1, 14, true, false, -1, 7);
WorldGen.PlaceTile(num22 - 2, num7 - 1, 15, true, false, 0, 10);
Tile expr_51A = Main.tile[num22 - 2, num7 - 1];
expr_51A.frameX += 18;
Tile expr_53B = Main.tile[num22 - 2, num7 - 2];
expr_53B.frameX += 18;
WorldGen.PlaceTile(num22 + 2, num7 - 1, 15, true, false, 0, 10);
int i2 = num4 + 1;
int j2 = num6;
WorldGen.PlaceTile(i2, j2, 91, true, false, -1, WorldGen.genRand.Next(7, 10));
i2 = num5 - 1;
j2 = num6;
WorldGen.PlaceTile(i2, j2, 91, true, false, -1, WorldGen.genRand.Next(7, 10));
if (num > 0)
{
i2 = num4;
j2 = num6 + 1;
}
else
{
i2 = num5;
j2 = num6 + 1;
}
WorldGen.PlaceTile(i2, j2, 91, true, false, -1, WorldGen.genRand.Next(7, 10));
}
public static void Mountinater(int i, int j)
{
double num = (double)WorldGen.genRand.Next(80, 120);
float num2 = (float)WorldGen.genRand.Next(40, 55);
Vector2 value;
value.X = (float)i;
value.Y = (float)j + num2 / 2f;
Vector2 value2;
value2.X = (float)WorldGen.genRand.Next(-10, 11) * 0.1f;
value2.Y = (float)WorldGen.genRand.Next(-20, -10) * 0.1f;
while (num > 0.0 && num2 > 0f)
{
num -= (double)WorldGen.genRand.Next(4);
num2 -= 1f;
int num3 = (int)((double)value.X - num * 0.5);
int num4 = (int)((double)value.X + num * 0.5);
int num5 = (int)((double)value.Y - num * 0.5);
int num6 = (int)((double)value.Y + num * 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 = num * (double)WorldGen.genRand.Next(80, 120) * 0.01;
for (int k = num3; k < num4; k++)
{
for (int l = num5; l < num6; l++)
{
float num8 = Math.Abs((float)k - value.X);
float num9 = Math.Abs((float)l - value.Y);
double num10 = Math.Sqrt((double)(num8 * num8 + num9 * num9));
if (num10 < num7 * 0.4 && !Main.tile[k, l].active())
{
Main.tile[k, l].active(true);
Main.tile[k, l].type = 0;
}
}
}
value += value2;
value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
if ((double)value2.X > 0.5)
{
value2.X = 0.5f;
}
if ((double)value2.X < -0.5)
{
value2.X = -0.5f;
}
if ((double)value2.Y > -0.5)
{
value2.Y = -0.5f;
}
if ((double)value2.Y < -1.5)
{
value2.Y = -1.5f;
}
}
}
public static void MakeWateryIceThing(int i, int j)
{
if (Main.tile[i, j].liquid > 0 && !Main.tile[i, j].active() && !Main.tile[i, j].lava())
{
int num = j;
while (!Main.tile[i, num].active() && Main.tile[i, num].liquid > 0)
{
num++;
if (num > Main.maxTilesY - 50)
{
return;
}
}
if (Main.tile[i, num].type == 147 || Main.tile[i, num].type == 161)
{
num--;
while (Main.tile[i, num].liquid > 0)
{
num--;
if (num < 10)
{
return;
}
}
if (Main.tile[i, num].active())
{
return;
}
num++;
if (Main.tile[i, num].active())
{
return;
}
int num2 = i;
while (!Main.tile[num2, num].active() && Main.tile[num2, num].liquid > 0 && Main.tile[num2, num - 1].liquid == 0 && !Main.tile[num2, num - 1].active() && !Main.tile[num2 - 1, num].halfBrick())
{
WorldGen.PlaceTile(num2, num, 162, true, false, -1, 0);
num2--;
}
num2 = i + 1;
while (!Main.tile[num2, num].active() && Main.tile[num2, num].liquid > 0 && Main.tile[num2, num - 1].liquid == 0 && !Main.tile[num2, num - 1].active() && !Main.tile[num2 + 1, num].halfBrick())
{
WorldGen.PlaceTile(num2, num, 162, true, false, -1, 0);
num2++;
}
}
}
}
public static void Lakinater(int i, int j)
{
double num = (double)WorldGen.genRand.Next(25, 50);
double num2 = num;
float num3 = (float)WorldGen.genRand.Next(30, 80);
if (WorldGen.genRand.Next(5) == 0)
{
num *= 1.5;
num2 *= 1.5;
num3 *= 1.2f;
}
Vector2 value;
value.X = (float)i;
value.Y = (float)j - num3 * 0.3f;
Vector2 value2;
value2.X = (float)WorldGen.genRand.Next(-10, 11) * 0.1f;
value2.Y = (float)WorldGen.genRand.Next(-20, -10) * 0.1f;
while (num > 0.0 && num3 > 0f)
{
if ((double)value.Y + num2 * 0.5 > Main.worldSurface)
{
num3 = 0f;
}
num -= (double)WorldGen.genRand.Next(3);
num3 -= 1f;
int num4 = (int)((double)value.X - num * 0.5);
int num5 = (int)((double)value.X + num * 0.5);
int num6 = (int)((double)value.Y - num * 0.5);
int num7 = (int)((double)value.Y + num * 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 = num * (double)WorldGen.genRand.Next(80, 120) * 0.01;
for (int k = num4; k < num5; k++)
{
for (int l = num6; l < num7; l++)
{
float num8 = Math.Abs((float)k - value.X);
float num9 = Math.Abs((float)l - value.Y);
double num10 = Math.Sqrt((double)(num8 * num8 + num9 * num9));
if (num10 < num2 * 0.4)
{
if (Main.tile[k, l].active())
{
Main.tile[k, l].liquid = 255;
}
Main.tile[k, l].active(false);
}
}
}
value += value2;
value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
if ((double)value2.X > 0.5)
{
value2.X = 0.5f;
}
if ((double)value2.X < -0.5)
{
value2.X = -0.5f;
}
if ((double)value2.Y > 1.5)
{
value2.Y = 1.5f;
}
if ((double)value2.Y < 0.5)
{
value2.Y = 0.5f;
}
}
}
public static void ShroomPatch(int i, int j)
{
double num = (double)WorldGen.genRand.Next(40, 70);
double num2 = num;
float num3 = (float)WorldGen.genRand.Next(20, 30);
if (WorldGen.genRand.Next(5) == 0)
{
num *= 1.5;
num2 *= 1.5;
num3 *= 1.2f;
}
Vector2 value;
value.X = (float)i;
value.Y = (float)j - num3 * 0.3f;
Vector2 value2;
value2.X = (float)WorldGen.genRand.Next(-10, 11) * 0.1f;
value2.Y = (float)WorldGen.genRand.Next(-20, -10) * 0.1f;
while (num > 0.0 && num3 > 0f)
{
num -= (double)WorldGen.genRand.Next(3);
num3 -= 1f;
int num4 = (int)((double)value.X - num * 0.5);
int num5 = (int)((double)value.X + num * 0.5);
int num6 = (int)((double)value.Y - num * 0.5);
int num7 = (int)((double)value.Y + num * 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 = num * (double)WorldGen.genRand.Next(80, 120) * 0.01;
for (int k = num4; k < num5; k++)
{
for (int l = num6; l < num7; l++)
{
float num8 = Math.Abs((float)k - value.X);
float num9 = Math.Abs(((float)l - value.Y) * 2.3f);
double num10 = Math.Sqrt((double)(num8 * num8 + num9 * num9));
if (num10 < num2 * 0.4)
{
if ((double)l < (double)value.Y + num2 * 0.02)
{
if (Main.tile[k, l].type != 59)
{
Main.tile[k, l].active(false);
}
}
else
{
Main.tile[k, l].type = 59;
}
Main.tile[k, l].liquid = 0;
Main.tile[k, l].lava(false);
}
}
}
value += value2;
value.X += value2.X;
value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
value2.Y -= (float)WorldGen.genRand.Next(11) * 0.05f;
if ((double)value2.X > -0.5 && (double)value2.X < 0.5)
{
if (value2.X < 0f)
{
value2.X = -0.5f;
}
else
{
value2.X = 0.5f;
}
}
if (value2.X > 2f)
{
value2.X = 1f;
}
if (value2.X < -2f)
{
value2.X = -1f;
}
if (value2.Y > 1f)
{
value2.Y = 1f;
}
if (value2.Y < -1f)
{
value2.Y = -1f;
}
for (int m = 0; m < 2; m++)
{
int num11 = (int)value.X + WorldGen.genRand.Next(-20, 20);
int num12 = (int)value.Y + WorldGen.genRand.Next(0, 20);
while (!Main.tile[num11, num12].active() && Main.tile[num11, num12].type != 59)
{
num11 = (int)value.X + WorldGen.genRand.Next(-20, 20);
num12 = (int)value.Y + WorldGen.genRand.Next(0, 20);
}
int num13 = WorldGen.genRand.Next(7, 10);
int num14 = WorldGen.genRand.Next(7, 10);
WorldGen.TileRunner(num11, num12, (double)num13, num14, 59, false, 0f, 2f, true, true);
if (WorldGen.genRand.Next(3) == 0)
{
WorldGen.TileRunner(num11, num12, (double)(num13 - 3), num14 - 3, -1, false, 0f, 2f, true, true);
}
}
}
}
public static void Cavinator(int i, int j, int steps)
{
double num = (double)WorldGen.genRand.Next(7, 15);
int num2 = 1;
if (WorldGen.genRand.Next(2) == 0)
{
num2 = -1;
}
Vector2 value;
value.X = (float)i;
value.Y = (float)j;
int k = WorldGen.genRand.Next(20, 40);
Vector2 value2;
value2.Y = (float)WorldGen.genRand.Next(10, 20) * 0.01f;
value2.X = (float)num2;
while (k > 0)
{
k--;
int num3 = (int)((double)value.X - num * 0.5);
int num4 = (int)((double)value.X + num * 0.5);
int num5 = (int)((double)value.Y - num * 0.5);
int num6 = (int)((double)value.Y + num * 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 = num * (double)WorldGen.genRand.Next(80, 120) * 0.01;
for (int l = num3; l < num4; l++)
{
for (int m = num5; m < num6; m++)
{
float num8 = Math.Abs((float)l - value.X);
float num9 = Math.Abs((float)m - value.Y);
double num10 = Math.Sqrt((double)(num8 * num8 + num9 * num9));
if (num10 < num7 * 0.4)
{
Main.tile[l, m].active(false);
}
}
}
value += value2;
value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
if (value2.X > (float)num2 + 0.5f)
{
value2.X = (float)num2 + 0.5f;
}
if (value2.X < (float)num2 - 0.5f)
{
value2.X = (float)num2 - 0.5f;
}
if (value2.Y > 2f)
{
value2.Y = 2f;
}
if (value2.Y < 0f)
{
value2.Y = 0f;
}
}
if (steps > 0 && (double)((int)value.Y) < Main.rockLayer + 50.0)
{
WorldGen.Cavinator((int)value.X, (int)value.Y, steps - 1);
}
}
public static void CaveOpenater(int i, int j)
{
double num = (double)WorldGen.genRand.Next(7, 12);
int num2 = 1;
if (WorldGen.genRand.Next(2) == 0)
{
num2 = -1;
}
Vector2 value;
value.X = (float)i;
value.Y = (float)j;
int k = 100;
Vector2 value2;
value2.Y = 0f;
value2.X = (float)num2;
while (k > 0)
{
if (Main.tile[(int)value.X, (int)value.Y].wall == 0)
{
k = 0;
}
k--;
int num3 = (int)((double)value.X - num * 0.5);
int num4 = (int)((double)value.X + num * 0.5);
int num5 = (int)((double)value.Y - num * 0.5);
int num6 = (int)((double)value.Y + num * 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 = num * (double)WorldGen.genRand.Next(80, 120) * 0.01;
for (int l = num3; l < num4; l++)
{
for (int m = num5; m < num6; m++)
{
float num8 = Math.Abs((float)l - value.X);
float num9 = Math.Abs((float)m - value.Y);
double num10 = Math.Sqrt((double)(num8 * num8 + num9 * num9));
if (num10 < num7 * 0.4)
{
Main.tile[l, m].active(false);
}
}
}
value += value2;
value2.X += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
value2.Y += (float)WorldGen.genRand.Next(-10, 11) * 0.05f;
if (value2.X > (float)num2 + 0.5f)
{
value2.X = (float)num2 + 0.5f;
}
if (value2.X < (float)num2 - 0.5f)
{
value2.X = (float)num2 - 0.5f;
}
if (value2.Y > 0f)
{
value2.Y = 0f;
}
if ((double)value2.Y < -0.5)
{
value2.Y = -0.5f;
}
}
}
public static void DiamondTileFrame(int i, int j)
{
WorldGen.TileFrame(i - 1, j, false, false);
WorldGen.TileFrame(i, j - 1, false, false);
WorldGen.TileFrame(i, j + 1, false, false);
WorldGen.TileFrame(i + 1, j, false, false);
}
public static void SquareTileFrame(int i, int j, bool resetFrame = true)
{
WorldGen.TileFrame(i - 1, j - 1, false, false);
WorldGen.TileFrame(i - 1, j, false, false);
WorldGen.TileFrame(i - 1, j + 1, false, false);
WorldGen.TileFrame(i, j - 1, false, false);
WorldGen.TileFrame(i, j, resetFrame, false);
WorldGen.TileFrame(i, j + 1, false, false);
WorldGen.TileFrame(i + 1, j - 1, false, false);
WorldGen.TileFrame(i + 1, j, false, false);
WorldGen.TileFrame(i + 1, j + 1, false, false);
}
public static void SquareWallFrame(int i, int j, bool resetFrame = true)
{
WorldGen.WallFrame(i - 1, j - 1, false);
WorldGen.WallFrame(i - 1, j, false);
WorldGen.WallFrame(i - 1, j + 1, false);
WorldGen.WallFrame(i, j - 1, false);
WorldGen.WallFrame(i, j, resetFrame);
WorldGen.WallFrame(i, j + 1, false);
WorldGen.WallFrame(i + 1, j - 1, false);
WorldGen.WallFrame(i + 1, j, false);
WorldGen.WallFrame(i + 1, j + 1, false);
}
public static void SectionTileFrame(int startX, int startY, int endX, int endY)
{
Main.mapTime = Main.mapTimeMax + 10;
WorldGen.noMapUpdate = true;
int num = startX * 200;
int num2 = (endX + 1) * 200;
int num3 = startY * 150;
int num4 = (endY + 1) * 150;
if (num < 1)
{
num = 1;
}
if (num3 < 1)
{
num3 = 1;
}
if (num > Main.maxTilesX - 2)
{
num = Main.maxTilesX - 2;
}
if (num3 > Main.maxTilesY - 2)
{
num3 = Main.maxTilesY - 2;
}
for (int i = num - 1; i < num2 + 1; i++)
{
for (int j = num3 - 1; j < num4 + 1; j++)
{
if (Main.tile[i, j] == null)
{
Main.tile[i, j] = new Tile();
}
WorldGen.TileFrame(i, j, true, true);
WorldGen.WallFrame(i, j, true);
}
}
WorldGen.noMapUpdate = false;
}
public static void RangeFrame(int startX, int startY, int endX, int endY)
{
int num = endX + 1;
int num2 = endY + 1;
for (int i = startX - 1; i < num + 1; i++)
{
for (int j = startY - 1; j < num2 + 1; j++)
{
WorldGen.TileFrame(i, j, false, false);
WorldGen.WallFrame(i, j, false);
}
}
}
public static void WaterCheck()
{
Liquid.numLiquid = 0;
LiquidBuffer.numLiquidBuffer = 0;
for (int i = 1; i < Main.maxTilesX - 1; i++)
{
for (int j = Main.maxTilesY - 2; j > 0; j--)
{
Main.tile[i, j].checkingLiquid(false);
if (Main.tile[i, j].liquid > 0 && Main.tile[i, j].active() && Main.tileSolid[(int)Main.tile[i, j].type] && !Main.tileSolidTop[(int)Main.tile[i, j].type])
{
Main.tile[i, j].liquid = 0;
}
else
{
if (Main.tile[i, j].liquid > 0)
{
if (Main.tile[i, j].active())
{
if (Main.tileWaterDeath[(int)Main.tile[i, j].type] && (Main.tile[i, j].type != 4 || (Main.tile[i, j].frameY != 176 && Main.tile[i, j].frameY != 242)))
{
WorldGen.KillTile(i, j, false, false, false);
}
if (Main.tile[i, j].lava() && Main.tileLavaDeath[(int)Main.tile[i, j].type] && (Main.tile[i, j].type != 19 || Main.tile[i, j].frameY != 234) && (Main.tile[i, j].type != 11 || Main.tile[i, j].frameY < 1026 || Main.tile[i, j].frameY > 1078) && (Main.tile[i, j].type != 15 || Main.tile[i, j].frameY < 640 || Main.tile[i, j].frameY > 678) && (Main.tile[i, j].type != 14 || Main.tile[i, j].frameX < 702 || Main.tile[i, j].frameX > 754) && (Main.tile[i, j].type != 18 || Main.tile[i, j].frameX < 504 || Main.tile[i, j].frameX > 538) && (Main.tile[i, j].type != 105 || Main.tile[i, j].frameX < 1764 || Main.tile[i, j].frameX > 1798) && (Main.tile[i, j].type != 101 || Main.tile[i, j].frameX < 216 || Main.tile[i, j].frameX > 268))
{
WorldGen.KillTile(i, j, false, false, false);
}
}
if ((!Main.tile[i, j + 1].nactive() || !Main.tileSolid[(int)Main.tile[i, j + 1].type] || Main.tileSolidTop[(int)Main.tile[i, j + 1].type]) && Main.tile[i, j + 1].liquid < 255)
{
if (Main.tile[i, j + 1].liquid > 250)
{
Main.tile[i, j + 1].liquid = 255;
}
else
{
Liquid.AddWater(i, j);
}
}
if ((!Main.tile[i - 1, j].nactive() || !Main.tileSolid[(int)Main.tile[i - 1, j].type] || Main.tileSolidTop[(int)Main.tile[i - 1, j].type]) && Main.tile[i - 1, j].liquid != Main.tile[i, j].liquid)
{
Liquid.AddWater(i, j);
}
else
{
if ((!Main.tile[i + 1, j].nactive() || !Main.tileSolid[(int)Main.tile[i + 1, j].type] || Main.tileSolidTop[(int)Main.tile[i + 1, j].type]) && Main.tile[i + 1, j].liquid != Main.tile[i, j].liquid)
{
Liquid.AddWater(i, j);
}
}
if (Main.tile[i, j].lava())
{
if (Main.tile[i - 1, j].liquid > 0 && !Main.tile[i - 1, j].lava())
{
Liquid.AddWater(i, j);
}
else
{
if (Main.tile[i + 1, j].liquid > 0 && !Main.tile[i + 1, j].lava())
{
Liquid.AddWater(i, j);
}
else
{
if (Main.tile[i, j - 1].liquid > 0 && !Main.tile[i, j - 1].lava())
{
Liquid.AddWater(i, j);
}
else
{
if (Main.tile[i, j + 1].liquid > 0 && !Main.tile[i, j + 1].lava())
{
Liquid.AddWater(i, j);
}
}
}
}
}
}
}
}
}
}
public static void EveryTileFrame()
{
WorldGen.noLiquidCheck = true;
WorldGen.noTileActions = true;
for (int i = 0; i < Main.maxTilesX; i++)
{
float num = (float)i / (float)Main.maxTilesX;
Main.statusText = string.Concat(new object[]
{
Lang.gen[55],
" ",
(int)(num * 100f + 1f),
"%"
});
for (int j = 0; j < Main.maxTilesY; j++)
{
if (Main.tile[i, j].active())
{
WorldGen.TileFrame(i, j, true, false);
}
if (Main.tile[i, j].wall > 0)
{
WorldGen.WallFrame(i, j, true);
}
}
}
WorldGen.noLiquidCheck = false;
WorldGen.noTileActions = false;
}
public static void PlantCheck(int i, int j)
{
int num = -1;
int num2 = (int)Main.tile[i, j].type;
int arg_19_0 = i - 1;
int arg_23_0 = i + 1;
int arg_22_0 = Main.maxTilesX;
int arg_29_0 = j - 1;
if (j + 1 >= Main.maxTilesY)
{
num = num2;
}
if (i - 1 >= 0 && Main.tile[i - 1, j] != null && Main.tile[i - 1, j].nactive())
{
byte arg_74_0 = Main.tile[i - 1, j].type;
}
if (i + 1 < Main.maxTilesX && Main.tile[i + 1, j] != null && Main.tile[i + 1, j].nactive())
{
byte arg_B7_0 = Main.tile[i + 1, j].type;
}
if (j - 1 >= 0 && Main.tile[i, j - 1] != null && Main.tile[i, j - 1].nactive())
{
byte arg_F6_0 = 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() == 0)
{
num = (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())
{
byte arg_1AE_0 = 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())
{
byte arg_1FD_0 = 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())
{
byte arg_24C_0 = 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())
{
byte arg_29F_0 = Main.tile[i + 1, j + 1].type;
}
if ((num2 == 3 && num != 2 && num != 78) || (num2 == 24 && num != 23) || (num2 == 61 && num != 60) || (num2 == 71 && num != 70) || (num2 == 73 && num != 2 && num != 78) || (num2 == 74 && num != 60) || (num2 == 110 && num != 109) || (num2 == 113 && num != 109) || (num2 == 201 && num != 199))
{
if ((num2 == 3 || num2 == 73) && num != 2 && Main.tile[i, j].frameX >= 162)
{
Main.tile[i, j].frameX = 126;
}
if (num2 == 74 && num != 60 && Main.tile[i, j].frameX >= 162)
{
Main.tile[i, j].frameX = 126;
}
if (num == 23)
{
num2 = 24;
if (Main.tile[i, j].frameX >= 162)
{
Main.tile[i, j].frameX = 126;
}
}
else
{
if (num == 2)
{
if (num2 == 113)
{
num2 = 73;
}
else
{
num2 = 3;
}
}
else
{
if (num == 109)
{
if (num2 == 73)
{
num2 = 113;
}
else
{
num2 = 110;
}
}
else
{
if (num == 199)
{
num2 = 201;
}
else
{
if (num == 70)
{
num2 = 71;
while (Main.tile[i, j].frameX > 72)
{
Tile expr_3FE = Main.tile[i, j];
expr_3FE.frameX -= 72;
}
}
}
}
}
}
if (num2 != (int)Main.tile[i, j].type)
{
Main.tile[i, j].type = (byte)num2;
return;
}
WorldGen.KillTile(i, j, false, false, false);
}
}
public static void WallFrame(int i, int j, bool resetFrame = false)
{
if (i < 0 || j < 0 || i >= Main.maxTilesX || j >= Main.maxTilesY || Main.tile[i, j] == null)
{
return;
}
if (Main.netMode != 2 && Main.mapEnabled && !WorldGen.noMapUpdate && !WorldGen.gen && Main.map[i, j] != null && Main.map[i, j].light > 0)
{
Main.map[i, j].setTile(i, j, Main.map[i, j].light);
if (Main.map[i, j].changed())
{
if (Map.numUpdateTile < Map.maxUpdateTile - 1)
{
Map.updateTileX[Map.numUpdateTile] = (short)i;
Map.updateTileY[Map.numUpdateTile] = (short)j;
Map.numUpdateTile++;
}
else
{
Main.mapUnfinished = true;
}
}
}
if (Main.tile[i, j].wall == 0)
{
Main.tile[i, j].wallColor(0);
return;
}
int num = -1;
int num2 = -1;
int num3 = -1;
int num4 = -1;
int num5 = -1;
int num6 = -1;
int num7 = -1;
int num8 = -1;
int wall = (int)Main.tile[i, j].wall;
if (wall == 0)
{
return;
}
Main.tile[i, j].wallFrameX();
Main.tile[i, j].wallFrameY();
Rectangle rectangle;
rectangle.X = -1;
rectangle.Y = -1;
if (i - 1 < 0)
{
num = wall;
num4 = wall;
num6 = wall;
}
if (i + 1 >= Main.maxTilesX)
{
num3 = wall;
num5 = wall;
num8 = wall;
}
if (j - 1 < 0)
{
num = wall;
num2 = wall;
num3 = wall;
}
if (j + 1 >= Main.maxTilesY)
{
num6 = wall;
num7 = wall;
num8 = wall;
}
if (i - 1 >= 0 && Main.tile[i - 1, j] != null)
{
num4 = (int)Main.tile[i - 1, j].wall;
}
if (i + 1 < Main.maxTilesX && Main.tile[i + 1, j] != null)
{
num5 = (int)Main.tile[i + 1, j].wall;
}
if (j - 1 >= 0 && Main.tile[i, j - 1] != null)
{
num2 = (int)Main.tile[i, j - 1].wall;
}
if (j + 1 < Main.maxTilesY && Main.tile[i, j + 1] != null)
{
num7 = (int)Main.tile[i, j + 1].wall;
}
if (i - 1 >= 0 && j - 1 >= 0 && Main.tile[i - 1, j - 1] != null)
{
num = (int)Main.tile[i - 1, j - 1].wall;
}
if (i + 1 < Main.maxTilesX && j - 1 >= 0 && Main.tile[i + 1, j - 1] != null)
{
num3 = (int)Main.tile[i + 1, j - 1].wall;
}
if (i - 1 >= 0 && j + 1 < Main.maxTilesY && Main.tile[i - 1, j + 1] != null)
{
num6 = (int)Main.tile[i - 1, j + 1].wall;
}
if (i + 1 < Main.maxTilesX && j + 1 < Main.maxTilesY && Main.tile[i + 1, j + 1] != null)
{
num8 = (int)Main.tile[i + 1, j + 1].wall;
}
if (num7 > 0)
{
num7 = wall;
}
if (num6 > 0)
{
}
if (num8 > 0)
{
}
if (num2 > 0)
{
num2 = wall;
}
if (num > 0)
{
}
if (num3 > 0)
{
}
if (num4 > 0)
{
num4 = wall;
}
if (num5 > 0)
{
num5 = wall;
}
int num9;
if (resetFrame)
{
num9 = WorldGen.genRand.Next(0, 3);
Main.tile[i, j].wallFrameNumber((byte)num9);
}
else
{
num9 = (int)Main.tile[i, j].wallFrameNumber();
}
if (rectangle.X < 0 || rectangle.Y < 0)
{
if (num2 == wall && num7 == wall && (num4 == wall & num5 == wall))
{
if (i % 3 == 1 && j % 3 == 1)
{
if (num9 == 0)
{
rectangle.X = 108;
rectangle.Y = 18;
}
if (num9 == 1)
{
rectangle.X = 126;
rectangle.Y = 18;
}
if (num9 == 2)
{
rectangle.X = 144;
rectangle.Y = 18;
}
}
else
{
if (i % 3 == 0 && j % 3 == 0)
{
if (num9 == 0)
{
rectangle.X = 108;
rectangle.Y = 36;
}
if (num9 == 1)
{
rectangle.X = 126;
rectangle.Y = 36;
}
if (num9 == 2)
{
rectangle.X = 144;
rectangle.Y = 36;
}
}
else
{
if (i % 3 == 2 && j % 3 == 1)
{
if (num9 == 0)
{
rectangle.X = 180;
rectangle.Y = 0;
}
if (num9 == 1)
{
rectangle.X = 180;
rectangle.Y = 18;
}
if (num9 == 2)
{
rectangle.X = 180;
rectangle.Y = 36;
}
}
else
{
if (i % 3 == 1 && j % 3 == 2)
{
if (num9 == 0)
{
rectangle.X = 198;
rectangle.Y = 0;
}
if (num9 == 1)
{
rectangle.X = 198;
rectangle.Y = 18;
}
if (num9 == 2)
{
rectangle.X = 198;
rectangle.Y = 36;
}
}
else
{
if (num9 == 0)
{
rectangle.X = 18;
rectangle.Y = 18;
}
if (num9 == 1)
{
rectangle.X = 36;
rectangle.Y = 18;
}
if (num9 == 2)
{
rectangle.X = 54;
rectangle.Y = 18;
}
}
}
}
}
}
else
{
if (num2 != wall && num7 == wall && (num4 == wall & num5 == wall))
{
if (num9 == 0)
{
rectangle.X = 18;
rectangle.Y = 0;
}
if (num9 == 1)
{
rectangle.X = 36;
rectangle.Y = 0;
}
if (num9 == 2)
{
rectangle.X = 54;
rectangle.Y = 0;
}
}
else
{
if (num2 == wall && num7 != wall && (num4 == wall & num5 == wall))
{
if (num9 == 0)
{
rectangle.X = 18;
rectangle.Y = 36;
}
if (num9 == 1)
{
rectangle.X = 36;
rectangle.Y = 36;
}
if (num9 == 2)
{
rectangle.X = 54;
rectangle.Y = 36;
}
}
else
{
if (num2 == wall && num7 == wall && (num4 != wall & num5 == wall))
{
if (num9 == 0)
{
rectangle.X = 0;
rectangle.Y = 0;
}
if (num9 == 1)
{
rectangle.X = 0;
rectangle.Y = 18;
}
if (num9 == 2)
{
rectangle.X = 0;
rectangle.Y = 36;
}
}
else
{
if (num2 == wall && num7 == wall && (num4 == wall & num5 != wall))
{
if (num9 == 0)
{
rectangle.X = 72;
rectangle.Y = 0;
}
if (num9 == 1)
{
rectangle.X = 72;
rectangle.Y = 18;
}
if (num9 == 2)
{
rectangle.X = 72;
rectangle.Y = 36;
}
}
else
{
if (num2 != wall && num7 == wall && (num4 != wall & num5 == wall))
{
if (num9 == 0)
{
rectangle.X = 0;
rectangle.Y = 54;
}
if (num9 == 1)
{
rectangle.X = 36;
rectangle.Y = 54;
}
if (num9 == 2)
{
rectangle.X = 72;
rectangle.Y = 54;
}
}
else
{
if (num2 != wall && num7 == wall && (num4 == wall & num5 != wall))
{
if (num9 == 0)
{
rectangle.X = 18;
rectangle.Y = 54;
}
if (num9 == 1)
{
rectangle.X = 54;
rectangle.Y = 54;
}
if (num9 == 2)
{
rectangle.X = 90;
rectangle.Y = 54;
}
}
else
{
if (num2 == wall && num7 != wall && (num4 != wall & num5 == wall))
{
if (num9 == 0)
{
rectangle.X = 0;
rectangle.Y = 72;
}
if (num9 == 1)
{
rectangle.X = 36;
rectangle.Y = 72;
}
if (num9 == 2)
{
rectangle.X = 72;
rectangle.Y = 72;
}
}
else
{
if (num2 == wall && num7 != wall && (num4 == wall & num5 != wall))
{
if (num9 == 0)
{
rectangle.X = 18;
rectangle.Y = 72;
}
if (num9 == 1)
{
rectangle.X = 54;
rectangle.Y = 72;
}
if (num9 == 2)
{
rectangle.X = 90;
rectangle.Y = 72;
}
}
else
{
if (num2 == wall && num7 == wall && (num4 != wall & num5 != wall))
{
if (num9 == 0)
{
rectangle.X = 90;
rectangle.Y = 0;
}
if (num9 == 1)
{
rectangle.X = 90;
rectangle.Y = 18;
}
if (num9 == 2)
{
rectangle.X = 90;
rectangle.Y = 36;
}
}
else
{
if (num2 != wall && num7 != wall && (num4 == wall & num5 == wall))
{
if (num9 == 0)
{
rectangle.X = 108;
rectangle.Y = 72;
}
if (num9 == 1)
{
rectangle.X = 126;
rectangle.Y = 72;
}
if (num9 == 2)
{
rectangle.X = 144;
rectangle.Y = 72;
}
}
else
{
if (num2 != wall && num7 == wall && (num4 != wall & num5 != wall))
{
if (num9 == 0)
{
rectangle.X = 108;
rectangle.Y = 0;
}
if (num9 == 1)
{
rectangle.X = 126;
rectangle.Y = 0;
}
if (num9 == 2)
{
rectangle.X = 144;
rectangle.Y = 0;
}
}
else
{
if (num2 == wall && num7 != wall && (num4 != wall & num5 != wall))
{
if (num9 == 0)
{
rectangle.X = 108;
rectangle.Y = 54;
}
if (num9 == 1)
{
rectangle.X = 126;
rectangle.Y = 54;
}
if (num9 == 2)
{
rectangle.X = 144;
rectangle.Y = 54;
}
}
else
{
if (num2 != wall && num7 != wall && (num4 != wall & num5 == wall))
{
if (num9 == 0)
{
rectangle.X = 162;
rectangle.Y = 0;
}
if (num9 == 1)
{
rectangle.X = 162;
rectangle.Y = 18;
}
if (num9 == 2)
{
rectangle.X = 162;
rectangle.Y = 36;
}
}
else
{
if (num2 != wall && num7 != wall && (num4 == wall & num5 != wall))
{
if (num9 == 0)
{
rectangle.X = 216;
rectangle.Y = 0;
}
if (num9 == 1)
{
rectangle.X = 216;
rectangle.Y = 18;
}
if (num9 == 2)
{
rectangle.X = 216;
rectangle.Y = 36;
}
}
else
{
if (num2 != wall && num7 != wall && (num4 != wall & num5 != wall))
{
if (num9 == 0)
{
rectangle.X = 162;
rectangle.Y = 54;
}
if (num9 == 1)
{
rectangle.X = 180;
rectangle.Y = 54;
}
if (num9 == 2)
{
rectangle.X = 198;
rectangle.Y = 54;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
if (rectangle.X <= -1 || rectangle.Y <= -1)
{
if (num9 <= 0)
{
rectangle.X = 18;
rectangle.Y = 18;
}
if (num9 == 1)
{
rectangle.X = 36;
rectangle.Y = 18;
}
if (num9 >= 2)
{
rectangle.X = 54;
rectangle.Y = 18;
}
}
Main.tile[i, j].wallFrameX((int)((byte)rectangle.X));
Main.tile[i, j].wallFrameY((int)((byte)rectangle.Y));
}
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();
}
if (Main.tile[i, j].type == 48)
{
return false;
}
if (Main.tile[i, j].type == 137)
{
return false;
}
if (Main.tile[i, j].type == 138)
{
return false;
}
if (Main.tile[i, j].type == 232)
{
return false;
}
if (WorldGen.gen)
{
if (Main.tile[i, j].type == 190)
{
return false;
}
if (Main.tile[i, j].type == 30)
{
return false;
}
}
return (!Main.tile[i, j - 1].active() || (Main.tile[i, j - 1].type != 5 && Main.tile[i, j - 1].type != 26 && Main.tile[i, j - 1].type != 21 && Main.tile[i, j - 1].type != 77 && Main.tile[i, j - 1].type != 237)) && Main.tile[i, j].type != 10;
}
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, false);
Main.PlaySound(0, i * 16, j * 16, 1);
WorldGen.SquareTileFrame(i, j, true);
if (Main.tile[i, j].slope() == 0)
{
Rectangle rectangle = new Rectangle(i * 16, j * 16, 16, 16);
for (int k = 0; k < 255; k++)
{
if (Main.player[k].active && !Main.player[k].dead && rectangle.Intersects(new Rectangle((int)Main.player[k].position.X, (int)Main.player[k].position.Y, Main.player[k].width, Main.player[k].height)))
{
Main.player[k].gfxOffY += Main.player[k].position.Y + (float)Main.player[k].height - (float)rectangle.Y;
Main.player[k].position.Y = (float)(rectangle.Y - Main.player[k].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, false);
Main.PlaySound(0, i * 16, j * 16, 1);
WorldGen.SquareTileFrame(i, j, true);
if (!Main.tile[i, j].halfBrick())
{
Rectangle rectangle = new Rectangle(i * 16, j * 16, 16, 16);
for (int k = 0; k < 255; k++)
{
if (Main.player[k].active && !Main.player[k].dead && rectangle.Intersects(new Rectangle((int)Main.player[k].position.X, (int)Main.player[k].position.Y, Main.player[k].width, Main.player[k].height)))
{
Main.player[k].gfxOffY += Main.player[k].position.Y + (float)Main.player[k].height - (float)rectangle.Y;
Main.player[k].position.Y = (float)(rectangle.Y - Main.player[k].height);
}
}
}
}
return true;
}
public static void TileFrame(int i, int j, bool resetFrame = false, bool noBreak = false)
{
bool flag = false;
try
{
if (i > 5 && j > 5 && i < Main.maxTilesX - 5 && j < Main.maxTilesY - 5 && Main.tile[i, j] != null)
{
if (Main.netMode != 2 && Main.mapEnabled && !WorldGen.noMapUpdate && !WorldGen.gen && Main.map[i, j] != null && Main.map[i, j].light > 0)
{
Main.map[i, j].setTile(i, j, Main.map[i, j].light);
if (Main.map[i, j].changed())
{
flag = true;
if (Map.numUpdateTile < Map.maxUpdateTile - 1)
{
Map.updateTileX[Map.numUpdateTile] = (short)i;
Map.updateTileY[Map.numUpdateTile] = (short)j;
Map.numUpdateTile++;
}
else
{
Main.mapUnfinished = true;
}
}
}
if (!Main.tile[i, j].active())
{
Main.tile[i, j].halfBrick(false);
Main.tile[i, j].color(0);
Main.tile[i, j].slope(0);
}
if (Main.tile[i, j].liquid > 0 && Main.netMode != 1 && !WorldGen.noLiquidCheck)
{
Liquid.AddWater(i, j);
}
if (Main.tile[i, j].active())
{
if (noBreak && Main.tileFrameImportant[(int)Main.tile[i, j].type] && Main.tile[i, j].type != 4)
{
return;
}
int num = (int)Main.tile[i, j].type;
if (Main.tileStone[num])
{
num = 1;
}
int frameX = (int)Main.tile[i, j].frameX;
int frameY = (int)Main.tile[i, j].frameY;
Rectangle rectangle = new Rectangle(-1, -1, 0, 0);
if (Main.tileFrameImportant[(int)Main.tile[i, j].type])
{
if (num == 4)
{
short num2 = 0;
if (Main.tile[i, j].frameX >= 66)
{
num2 = 66;
}
int num3 = -1;
int num4 = -1;
int num5 = -1;
int num6 = -1;
int num7 = -1;
int num8 = -1;
int num9 = -1;
if (Main.tile[i, j - 1] != null && Main.tile[i, j - 1].nactive())
{
byte arg_294_0 = Main.tile[i, j - 1].type;
}
if (Main.tile[i, j + 1] != null && Main.tile[i, j + 1].nactive() && !Main.tile[i, j + 1].halfBrick() && Main.tile[i, j + 1].slope() == 0)
{
num3 = (int)Main.tile[i, j + 1].type;
}
if (Main.tile[i - 1, j] != null && Main.tile[i - 1, j].nactive())
{
num4 = (int)Main.tile[i - 1, j].type;
}
if (Main.tile[i + 1, j] != null && Main.tile[i + 1, j].nactive())
{
num5 = (int)Main.tile[i + 1, j].type;
}
if (Main.tile[i - 1, j + 1] != null && Main.tile[i - 1, j + 1].nactive())
{
num6 = (int)Main.tile[i - 1, j + 1].type;
}
if (Main.tile[i + 1, j + 1] != null && Main.tile[i + 1, j + 1].nactive())
{
num7 = (int)Main.tile[i + 1, j + 1].type;
}
if (Main.tile[i - 1, j - 1] != null && Main.tile[i - 1, j - 1].nactive())
{
num8 = (int)Main.tile[i - 1, j - 1].type;
}
if (Main.tile[i + 1, j - 1] != null && Main.tile[i + 1, j - 1].nactive())
{
num9 = (int)Main.tile[i + 1, j - 1].type;
}
if (num3 >= 0 && Main.tileSolid[num3] && !Main.tileNoAttach[num3])
{
Main.tile[i, j].frameX = num2;
}
else
{
if ((num4 >= 0 && Main.tileSolid[num4] && !Main.tileNoAttach[num4]) || num4 == 124 || (num4 == 5 && num8 == 5 && num6 == 5))
{
Main.tile[i, j].frameX = (short)(22 + num2);
}
else
{
if ((num5 >= 0 && Main.tileSolid[num5] && !Main.tileNoAttach[num5]) || num5 == 124 || (num5 == 5 && num9 == 5 && num7 == 5))
{
Main.tile[i, j].frameX = (short)(44 + num2);
}
else
{
if (Main.tile[i, j].wall > 0)
{
Main.tile[i, j].frameX = num2;
}
else
{
WorldGen.KillTile(i, j, false, false, false);
}
}
}
}
return;
}
if (num == 136)
{
int num10 = -1;
int num11 = -1;
int num12 = -1;
if (Main.tile[i, j - 1] != null && Main.tile[i, j - 1].nactive())
{
byte arg_5B2_0 = Main.tile[i, j - 1].type;
}
if (Main.tile[i, j + 1] != null && Main.tile[i, j + 1].nactive() && !Main.tile[i, j + 1].halfBrick() && Main.tile[i, j + 1].slope() == 0)
{
num10 = (int)Main.tile[i, j + 1].type;
}
if (Main.tile[i - 1, j] != null && Main.tile[i - 1, j].nactive())
{
num11 = (int)Main.tile[i - 1, j].type;
}
if (Main.tile[i + 1, j] != null && Main.tile[i + 1, j].nactive())
{
num12 = (int)Main.tile[i + 1, j].type;
}
if (num10 >= 0 && Main.tileSolid[num10] && !Main.tileNoAttach[num10])
{
Main.tile[i, j].frameX = 0;
}
else
{
if ((num11 >= 0 && Main.tileSolid[num11] && !Main.tileNoAttach[num11]) || num11 == 124 || num11 == 5)
{
Main.tile[i, j].frameX = 18;
}
else
{
if ((num12 >= 0 && Main.tileSolid[num12] && !Main.tileNoAttach[num12]) || num12 == 124 || num12 == 5)
{
Main.tile[i, j].frameX = 36;
}
else
{
WorldGen.KillTile(i, j, false, false, false);
}
}
}
return;
}
if (num == 129 || num == 149)
{
int num13 = -1;
int num14 = -1;
int num15 = -1;
int num16 = -1;
if (Main.tile[i, j - 1] != null && Main.tile[i, j - 1].nactive())
{
num14 = (int)Main.tile[i, j - 1].type;
}
if (Main.tile[i, j + 1] != null && Main.tile[i, j + 1].nactive() && !Main.tile[i, j + 1].halfBrick() && Main.tile[i, j + 1].slope() == 0)
{
num13 = (int)Main.tile[i, j + 1].type;
}
if (Main.tile[i - 1, j] != null && Main.tile[i - 1, j].nactive())
{
num15 = (int)Main.tile[i - 1, j].type;
}
if (Main.tile[i + 1, j] != null && Main.tile[i + 1, j].nactive())
{
num16 = (int)Main.tile[i + 1, j].type;
}
if (num13 >= 0 && Main.tileSolid[num13] && !Main.tileSolidTop[num13])
{
Main.tile[i, j].frameY = 0;
}
else
{
if (num15 >= 0 && Main.tileSolid[num15] && !Main.tileSolidTop[num15])
{
Main.tile[i, j].frameY = 54;
}
else
{
if (num16 >= 0 && Main.tileSolid[num16] && !Main.tileSolidTop[num16])
{
Main.tile[i, j].frameY = 36;
}
else
{
if (num14 >= 0 && Main.tileSolid[num14] && !Main.tileSolidTop[num14])
{
Main.tile[i, j].frameY = 18;
}
else
{
WorldGen.KillTile(i, j, false, false, false);
}
}
}
}
}
else
{
if (num == 178)
{
int num17 = -1;
int num18 = -1;
int num19 = -1;
int num20 = -1;
if (Main.tile[i, j - 1] != null && Main.tile[i, j - 1].active())
{
num18 = (int)Main.tile[i, j - 1].type;
}
if (Main.tile[i, j + 1] != null && Main.tile[i, j + 1].active() && !Main.tile[i, j + 1].halfBrick() && Main.tile[i, j + 1].slope() == 0)
{
num17 = (int)Main.tile[i, j + 1].type;
}
if (Main.tile[i - 1, j] != null && Main.tile[i - 1, j].active())
{
num19 = (int)Main.tile[i - 1, j].type;
}
if (Main.tile[i + 1, j] != null && Main.tile[i + 1, j].active())
{
num20 = (int)Main.tile[i + 1, j].type;
}
short num21 = (short)(WorldGen.genRand.Next(3) * 18);
if (num17 >= 0 && Main.tileSolid[num17] && !Main.tileSolidTop[num17])
{
if (Main.tile[i, j].frameY < 0 || Main.tile[i, j].frameY > 36)
{
Main.tile[i, j].frameY = num21;
}
}
else
{
if (num19 >= 0 && Main.tileSolid[num19] && !Main.tileSolidTop[num19])
{
if (Main.tile[i, j].frameY < 108 || Main.tile[i, j].frameY > 54)
{
Main.tile[i, j].frameY = (short)(108 + num21);
}
}
else
{
if (num20 >= 0 && Main.tileSolid[num20] && !Main.tileSolidTop[num20])
{
if (Main.tile[i, j].frameY < 162 || Main.tile[i, j].frameY > 198)
{
Main.tile[i, j].frameY = (short)(162 + num21);
}
}
else
{
if (num18 >= 0 && Main.tileSolid[num18] && !Main.tileSolidTop[num18])
{
if (Main.tile[i, j].frameY < 54 || Main.tile[i, j].frameY > 90)
{
Main.tile[i, j].frameY = (short)(54 + num21);
}
}
else
{
WorldGen.KillTile(i, j, false, false, false);
}
}
}
}
}
else
{
if (num == 184)
{
int num22 = -1;
int num23 = -1;
int num24 = -1;
int num25 = -1;
if (Main.tile[i, j - 1] != null && Main.tile[i, j - 1].active())
{
num23 = (int)Main.tile[i, j - 1].type;
}
if (Main.tile[i, j + 1] != null && Main.tile[i, j + 1].active() && !Main.tile[i, j + 1].halfBrick() && Main.tile[i, j + 1].slope() == 0)
{
num22 = (int)Main.tile[i, j + 1].type;
}
if (Main.tile[i - 1, j] != null && Main.tile[i - 1, j].active())
{
num24 = (int)Main.tile[i - 1, j].type;
}
if (Main.tile[i + 1, j] != null && Main.tile[i + 1, j].active())
{
num25 = (int)Main.tile[i + 1, j].type;
}
short num26 = (short)(WorldGen.genRand.Next(3) * 18);
if (num22 >= 0 && Main.tileMoss[num22])
{
Main.tile[i, j].frameX = (short)(22 * (num22 - 179));
if (Main.tile[i, j].frameY < 0 || Main.tile[i, j].frameY > 36)
{
Main.tile[i, j].frameY = num26;
}
}
else
{
if (num23 >= 0 && Main.tileMoss[num23])
{
Main.tile[i, j].frameX = (short)(22 * (num23 - 179));
if (Main.tile[i, j].frameY < 54 || Main.tile[i, j].frameY > 90)
{
Main.tile[i, j].frameY = (short)(54 + num26);
}
}
else
{
if (num24 >= 0 && Main.tileMoss[num24])
{
Main.tile[i, j].frameX = (short)(22 * (num24 - 179));
if (Main.tile[i, j].frameY < 108 || Main.tile[i, j].frameY > 54)
{
Main.tile[i, j].frameY = (short)(108 + num26);
}
}
else
{
if (num25 >= 0 && Main.tileMoss[num25])
{
Main.tile[i, j].frameX = (short)(22 * (num25 - 179));
if (Main.tile[i, j].frameY < 162 || Main.tile[i, j].frameY > 198)
{
Main.tile[i, j].frameY = (short)(162 + num26);
}
}
else
{
WorldGen.KillTile(i, j, false, false, false);
}
}
}
}
}
else
{
if (num == 3 || num == 24 || num == 61 || num == 71 || num == 73 || num == 74 || num == 110 || num == 113 || num == 201)
{
WorldGen.PlantCheck(i, j);
}
else
{
if (num == 227)
{
WorldGen.CheckDye(i, j);
}
else
{
if (num == 12 || num == 31)
{
WorldGen.CheckOrb(i, j, num);
}
else
{
if (num == 165)
{
WorldGen.CheckTight(i, j);
}
else
{
if (num == 235)
{
WorldGen.Check3x1(i, j, num);
}
else
{
if (num == 185)
{
WorldGen.CheckPile(i, j);
}
else
{
if (num == 10)
{
if (!WorldGen.destroyObject)
{
bool flag2 = false;
int k = (int)Main.tile[i, j].frameY;
int num27 = 0;
while (k >= 54)
{
k -= 54;
num27++;
}
int num28 = j - k / 18;
if (Main.tile[i, num28 - 1] == null)
{
Main.tile[i, num28 - 1] = new Tile();
}
if (Main.tile[i, num28 + 3] == null)
{
Main.tile[i, num28 + 3] = new Tile();
}
if (Main.tile[i, num28 + 2] == null)
{
Main.tile[i, num28 + 2] = new Tile();
}
if (Main.tile[i, num28 + 1] == null)
{
Main.tile[i, num28 + 1] = new Tile();
}
if (Main.tile[i, num28] == null)
{
Main.tile[i, num28] = new Tile();
}
if (!Main.tile[i, num28 - 1].active() || !Main.tileSolid[(int)Main.tile[i, num28 - 1].type])
{
flag2 = true;
}
if (!WorldGen.SolidTile(i, num28 + 3))
{
flag2 = true;
}
if (!Main.tile[i, num28].active() || (int)Main.tile[i, num28].type != num)
{
flag2 = true;
}
if (!Main.tile[i, num28 + 1].active() || (int)Main.tile[i, num28 + 1].type != num)
{
flag2 = true;
}
if (!Main.tile[i, num28 + 2].active() || (int)Main.tile[i, num28 + 2].type != num)
{
flag2 = true;
}
if (flag2)
{
WorldGen.destroyObject = true;
WorldGen.KillTile(i, num28, false, false, false);
WorldGen.KillTile(i, num28 + 1, false, false, false);
WorldGen.KillTile(i, num28 + 2, false, false, false);
if (num27 == 0)
{
Item.NewItem(i * 16, j * 16, 16, 16, 25, 1, false, 0, false);
}
else
{
if (num27 == 9)
{
Item.NewItem(i * 16, j * 16, 16, 16, 837, 1, false, 0, false);
}
else
{
if (num27 == 10)
{
Item.NewItem(i * 16, j * 16, 16, 16, 912, 1, false, 0, false);
}
else
{
if (num27 == 12)
{
Item.NewItem(i * 16, j * 16, 16, 16, 1137, 1, false, 0, false);
}
else
{
if (num27 == 13)
{
Item.NewItem(i * 16, j * 16, 16, 16, 1138, 1, false, 0, false);
}
else
{
if (num27 == 14)
{
Item.NewItem(i * 16, j * 16, 16, 16, 1139, 1, false, 0, false);
}
else
{
if (num27 == 15)
{
Item.NewItem(i * 16, j * 16, 16, 16, 1140, 1, false, 0, false);
}
else
{
if (num27 == 16)
{
Item.NewItem(i * 16, j * 16, 16, 16, 1411, 1, false, 0, false);
}
else
{
if (num27 == 17)
{
Item.NewItem(i * 16, j * 16, 16, 16, 1412, 1, false, 0, false);
}
else
{
if (num27 == 18)
{
Item.NewItem(i * 16, j * 16, 16, 16, 1413, 1, false, 0, false);
}
else
{
if (num27 == 19)
{
Item.NewItem(i * 16, j * 16, 16, 16, 1458, 1, false, 0, false);
}
else
{
if (num27 >= 20 && num27 <= 23)
{
Item.NewItem(i * 16, j * 16, 16, 16, 1709 + num27 - 20, 1, false, 0, false);
}
else
{
if (num27 >= 4 && num27 <= 8)
{
Item.NewItem(i * 16, j * 16, 16, 16, 812 + num27, 1, false, 0, false);
}
else
{
if (num27 != 11)
{
Item.NewItem(i * 16, j * 16, 16, 16, 649 + num27, 1, false, 0, false);
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
WorldGen.destroyObject = false;
}
}
else
{
if (num == 11)
{
if (!WorldGen.destroyObject)
{
int num29 = 0;
int num30 = i;
int frameX2 = (int)Main.tile[i, j].frameX;
int l = (int)Main.tile[i, j].frameY;
int num31 = 0;
while (l >= 54)
{
l -= 54;
num31++;
}
int num32 = j - l / 18;
bool flag3 = false;
if (frameX2 == 0)
{
num30 = i;
num29 = 1;
}
else
{
if (frameX2 == 18)
{
num30 = i - 1;
num29 = 1;
}
else
{
if (frameX2 == 36)
{
num30 = i + 1;
num29 = -1;
}
else
{
if (frameX2 == 54)
{
num30 = i;
num29 = -1;
}
}
}
}
if (Main.tile[num30, num32 + 3] == null)
{
Main.tile[num30, num32 + 3] = new Tile();
}
if (Main.tile[num30, num32 - 1] == null)
{
Main.tile[num30, num32 - 1] = new Tile();
}
if (!Main.tile[num30, num32 - 1].active() || !Main.tileSolid[(int)Main.tile[num30, num32 - 1].type] || !WorldGen.SolidTile(num30, num32 + 3))
{
flag3 = true;
WorldGen.destroyObject = true;
if (num31 == 0)
{
Item.NewItem(i * 16, j * 16, 16, 16, 25, 1, false, 0, false);
}
else
{
if (num31 == 9)
{
Item.NewItem(i * 16, j * 16, 16, 16, 837, 1, false, 0, false);
}
else
{
if (num31 == 10)
{
Item.NewItem(i * 16, j * 16, 16, 16, 912, 1, false, 0, false);
}
else
{
if (num31 == 11 || num31 == 12)
{
Item.NewItem(i * 16, j * 16, 16, 16, 1137, 1, false, 0, false);
}
else
{
if (num31 == 13)
{
Item.NewItem(i * 16, j * 16, 16, 16, 1138, 1, false, 0, false);
}
else
{
if (num31 == 14)
{
Item.NewItem(i * 16, j * 16, 16, 16, 1139, 1, false, 0, false);
}
else
{
if (num31 == 15)
{
Item.NewItem(i * 16, j * 16, 16, 16, 1140, 1, false, 0, false);
}
else
{
if (num31 == 16)
{
Item.NewItem(i * 16, j * 16, 16, 16, 1411, 1, false, 0, false);
}
else
{
if (num31 == 17)
{
Item.NewItem(i * 16, j * 16, 16, 16, 1412, 1, false, 0, false);
}
else
{
if (num31 == 18)
{
Item.NewItem(i * 16, j * 16, 16, 16, 1413, 1, false, 0, false);
}
else
{
if (num31 == 19)
{
Item.NewItem(i * 16, j * 16, 16, 16, 1458, 1, false, 0, false);
}
else
{
if (num31 >= 20 && num31 <= 23)
{
Item.NewItem(i * 16, j * 16, 16, 16, 1709 + num31 - 20, 1, false, 0, false);
}
else
{
if (num31 >= 4 && num31 <= 8)
{
Item.NewItem(i * 16, j * 16, 16, 16, 812 + num31, 1, false, 0, false);
}
else
{
Item.NewItem(i * 16, j * 16, 16, 16, 649 + num31, 1, false, 0, false);
}
}
}
}
}
}
}
}
}
}
}
}
}
}
int num33 = num30;
if (num29 == -1)
{
num33 = num30 - 1;
}
for (int m = num33; m < num33 + 2; m++)
{
for (int n = num32; n < num32 + 3; n++)
{
if (!flag3 && (Main.tile[m, n].type != 11 || !Main.tile[m, n].active()))
{
WorldGen.destroyObject = true;
if (num31 == 0)
{
Item.NewItem(i * 16, j * 16, 16, 16, 25, 1, false, 0, false);
}
else
{
if (num31 == 9)
{
Item.NewItem(i * 16, j * 16, 16, 16, 837, 1, false, 0, false);
}
else
{
if (num31 == 10)
{
Item.NewItem(i * 16, j * 16, 16, 16, 912, 1, false, 0, false);
}
else
{
if (num31 == 11 || num31 == 12)
{
Item.NewItem(i * 16, j * 16, 16, 16, 1137, 1, false, 0, false);
}
else
{
if (num31 == 13)
{
Item.NewItem(i * 16, j * 16, 16, 16, 1138, 1, false, 0, false);
}
else
{
if (num31 == 14)
{
Item.NewItem(i * 16, j * 16, 16, 16, 1139, 1, false, 0, false);
}
else
{
if (num31 == 15)
{
Item.NewItem(i * 16, j * 16, 16, 16, 1140, 1, false, 0, false);
}
else
{
if (num31 == 16)
{
Item.NewItem(i * 16, j * 16, 16, 16, 1411, 1, false, 0, false);
}
else
{
if (num31 == 17)
{
Item.NewItem(i * 16, j * 16, 16, 16, 1412, 1, false, 0, false);
}
else
{
if (num31 == 18)
{
Item.NewItem(i * 16, j * 16, 16, 16, 1413, 1, false, 0, false);
}
else
{
if (num31 == 19)
{
Item.NewItem(i * 16, j * 16, 16, 16, 1458, 1, false, 0, false);
}
else
{
if (num31 >= 20 && num31 <= 23)
{
Item.NewItem(i * 16, j * 16, 16, 16, 1709 + num31 - 20, 1, false, 0, false);
}
else
{
if (num31 >= 4 && num31 <= 8)
{
Item.NewItem(i * 16, j * 16, 16, 16, 812 + num31, 1, false, 0, false);
}
else
{
Item.NewItem(i * 16, j * 16, 16, 16, 649 + num31, 1, false, 0, false);
}
}
}
}
}
}
}
}
}
}
}
}
}
flag3 = true;
m = num33;
n = num32;
}
if (flag3)
{
WorldGen.KillTile(m, n, false, false, false);
}
}
}
WorldGen.destroyObject = false;
}
}
else
{
if (num == 19)
{
int num34 = -1;
int num35 = -1;
if (Main.tile[i - 1, j] != null && Main.tile[i - 1, j].active())
{
if (Main.tileStone[(int)Main.tile[i - 1, j].type])
{
num35 = 1;
}
else
{
num35 = (int)Main.tile[i - 1, j].type;
}
}
if (Main.tile[i + 1, j] != null && Main.tile[i + 1, j].active())
{
if (Main.tileStone[(int)Main.tile[i + 1, j].type])
{
num34 = 1;
}
else
{
num34 = (int)Main.tile[i + 1, j].type;
}
}
if (num34 >= 0 && !Main.tileSolid[num34])
{
num34 = -1;
}
if (num35 >= 0 && !Main.tileSolid[num35])
{
num35 = -1;
}
if (num35 == num && Main.tile[i - 1, j].halfBrick() != Main.tile[i, j].halfBrick())
{
num35 = -1;
}
if (num34 == num && Main.tile[i + 1, j].halfBrick() != Main.tile[i, j].halfBrick())
{
num34 = -1;
}
if (num35 != -1 && num35 != num && Main.tile[i, j].halfBrick())
{
num35 = -1;
}
if (num34 != -1 && num34 != num && Main.tile[i, j].halfBrick())
{
num34 = -1;
}
if (num35 == num && num34 == num)
{
rectangle.X = 0;
}
else
{
if (num35 == num && num34 == -1)
{
rectangle.X = 18;
}
else
{
if (num35 == -1 && num34 == num)
{
rectangle.X = 36;
}
else
{
if (num35 != num && num34 == num)
{
rectangle.X = 54;
}
else
{
if (num35 == num && num34 != num)
{
rectangle.X = 72;
}
else
{
if (num35 != num && num35 != -1 && num34 == -1)
{
rectangle.X = 108;
}
else
{
if (num35 == -1 && num34 != num && num34 != -1)
{
rectangle.X = 126;
}
else
{
rectangle.X = 90;
}
}
}
}
}
}
}
Main.tile[i, j].frameX = (short)rectangle.X;
}
else
{
if (num == 233 || num == 236 || num == 238)
{
WorldGen.CheckJunglePlant(i, j, num);
}
else
{
if (num == 240)
{
WorldGen.Check3x3Wall(i, j);
}
else
{
if (num == 245)
{
WorldGen.Check2x3Wall(i, j);
}
else
{
if (num == 246)
{
WorldGen.Check3x2Wall(i, j);
}
else
{
if (num == 241)
{
WorldGen.Check4x3Wall(i, j);
}
else
{
if (num == 242)
{
WorldGen.Check6x4Wall(i, j);
}
else
{
if (num == 34 || num == 35 || num == 36 || num == 106 || num == 170 || num == 171 || num == 172 || num == 212 || num == 219 || num == 220 || num == 228 || num == 231 || num == 243 || num == 247)
{
WorldGen.Check3x3(i, j, (int)((byte)num));
}
else
{
if (num == 15 || num == 20 || num == 216)
{
WorldGen.Check1x2(i, j, (byte)num);
}
else
{
if (num == 14 || num == 17 || num == 26 || num == 77 || num == 86 || num == 87 || num == 88 || num == 89 || num == 114 || num == 133 || num == 186 || num == 187 || num == 215 || num == 217 || num == 218 || num == 237 || num == 244)
{
WorldGen.Check3x2(i, j, (int)((byte)num));
}
else
{
if (num == 135 || num == 144 || num == 141 || num == 210 || num == 239)
{
WorldGen.Check1x1(i, j, num);
}
else
{
if (num == 16 || num == 18 || num == 29 || num == 103 || num == 134)
{
WorldGen.Check2x1(i, j, (byte)num);
}
else
{
if (num == 13 || num == 33 || num == 50 || num == 78 || num == 174)
{
WorldGen.CheckOnTable1x1(i, j, (int)((byte)num));
}
else
{
if (num == 21)
{
WorldGen.CheckChest(i, j, (int)((byte)num));
}
else
{
if (num == 128)
{
WorldGen.CheckMan(i, j);
}
else
{
if (num == 27)
{
WorldGen.CheckSunflower(i, j, 27);
}
else
{
if (num == 28)
{
WorldGen.CheckPot(i, j, 28);
}
else
{
if (num == 132 || num == 138 || num == 142 || num == 143)
{
WorldGen.Check2x2(i, j, num);
}
else
{
if (num == 91)
{
WorldGen.CheckBanner(i, j, (byte)num);
}
else
{
if (num == 139)
{
WorldGen.CheckMB(i, j, (int)((byte)num));
}
else
{
if (num == 92 || num == 93)
{
WorldGen.Check1xX(i, j, (byte)num);
}
else
{
if (num == 104 || num == 105 || num == 207)
{
WorldGen.Check2xX(i, j, (byte)num);
}
else
{
if (num == 101 || num == 102)
{
WorldGen.Check3x4(i, j, (int)((byte)num));
}
else
{
if (num == 42)
{
WorldGen.Check1x2Top(i, j, (byte)num);
}
else
{
if (num == 55 || num == 85)
{
WorldGen.CheckSign(i, j, num);
}
else
{
if (num == 209)
{
WorldGen.CheckCannon(i, j, num);
}
else
{
if (num == 79 || num == 90)
{
WorldGen.Check4x2(i, j, num);
}
else
{
if (num == 85 || num == 94 || num == 95 || num == 96 || num == 97 || num == 98 || num == 99 || num == 100 || num == 125 || num == 126 || num == 173)
{
WorldGen.Check2x2(i, j, num);
}
else
{
if (num == 81)
{
int num36 = -1;
int num37 = -1;
int num38 = -1;
int num39 = -1;
if (Main.tile[i, j - 1] != null && Main.tile[i, j - 1].active())
{
num37 = (int)Main.tile[i, j - 1].type;
}
if (Main.tile[i, j + 1] != null && Main.tile[i, j + 1].active())
{
num36 = (int)Main.tile[i, j + 1].type;
}
if (Main.tile[i - 1, j] != null && Main.tile[i - 1, j].active())
{
num38 = (int)Main.tile[i - 1, j].type;
}
if (Main.tile[i + 1, j] != null && Main.tile[i + 1, j].active())
{
num39 = (int)Main.tile[i + 1, j].type;
}
if (num38 != -1 || num37 != -1 || num39 != -1)
{
WorldGen.KillTile(i, j, false, false, false);
}
else
{
if (num36 < 0 || !Main.tileSolid[num36] || Main.tile[i, j + 1].halfBrick() || Main.tile[i, j + 1].slope() != 0)
{
WorldGen.KillTile(i, j, false, false, false);
}
}
}
else
{
if (Main.tileAlch[num])
{
WorldGen.CheckAlch(i, j);
}
else
{
if (num == 72)
{
int num40 = -1;
int num41 = -1;
if (Main.tile[i, j - 1] != null && Main.tile[i, j - 1].active())
{
num41 = (int)Main.tile[i, j - 1].type;
}
if (Main.tile[i, j + 1] != null && Main.tile[i, j + 1].active())
{
num40 = (int)Main.tile[i, j + 1].type;
}
if (num40 != num && num40 != 70)
{
WorldGen.KillTile(i, j, false, false, false);
}
else
{
if (num41 != num && Main.tile[i, j].frameX == 0)
{
Main.tile[i, j].frameNumber((byte)WorldGen.genRand.Next(3));
if (Main.tile[i, j].frameNumber() == 0)
{
Main.tile[i, j].frameX = 18;
Main.tile[i, j].frameY = 0;
}
if (Main.tile[i, j].frameNumber() == 1)
{
Main.tile[i, j].frameX = 18;
Main.tile[i, j].frameY = 18;
}
if (Main.tile[i, j].frameNumber() == 2)
{
Main.tile[i, j].frameX = 18;
Main.tile[i, j].frameY = 36;
}
}
}
}
else
{
if (num == 5)
{
WorldGen.CheckTree(i, j);
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
return;
}
else
{
int num42 = -1;
int num43 = -1;
int num44 = -1;
int num45 = -1;
int num46 = -1;
int num47 = -1;
int num48 = -1;
int num49 = -1;
if (Main.tile[i - 1, j] != null && Main.tile[i - 1, j].active())
{
if (Main.tileStone[(int)Main.tile[i - 1, j].type])
{
num45 = 1;
}
else
{
num45 = (int)Main.tile[i - 1, j].type;
}
if (Main.tile[i - 1, j].slope() == 1)
{
num45 = -1;
}
}
if (Main.tile[i + 1, j] != null && Main.tile[i + 1, j].active())
{
if (Main.tileStone[(int)Main.tile[i + 1, j].type])
{
num46 = 1;
}
else
{
num46 = (int)Main.tile[i + 1, j].type;
}
if (Main.tile[i + 1, j].slope() == 2)
{
num46 = -1;
}
}
if (Main.tile[i, j - 1] != null && Main.tile[i, j - 1].active())
{
if (Main.tileStone[(int)Main.tile[i, j - 1].type])
{
num43 = 1;
}
else
{
num43 = (int)Main.tile[i, j - 1].type;
}
}
if (Main.tile[i, j + 1] != null && Main.tile[i, j + 1].active())
{
if (Main.tileStone[(int)Main.tile[i, j + 1].type])
{
num48 = 1;
}
else
{
num48 = (int)Main.tile[i, j + 1].type;
}
if (Main.tile[i, j + 1].slope() == 1 || Main.tile[i, j + 1].slope() == 2)
{
num48 = -1;
}
}
if (Main.tile[i - 1, j - 1] != null && Main.tile[i - 1, j - 1].active())
{
if (Main.tileStone[(int)Main.tile[i - 1, j - 1].type])
{
num42 = 1;
}
else
{
num42 = (int)Main.tile[i - 1, j - 1].type;
}
}
if (Main.tile[i + 1, j - 1] != null && Main.tile[i + 1, j - 1].active())
{
if (Main.tileStone[(int)Main.tile[i + 1, j - 1].type])
{
num44 = 1;
}
else
{
num44 = (int)Main.tile[i + 1, j - 1].type;
}
}
if (Main.tile[i - 1, j + 1] != null && Main.tile[i - 1, j + 1].active())
{
if (Main.tileStone[(int)Main.tile[i - 1, j + 1].type])
{
num47 = 1;
}
else
{
num47 = (int)Main.tile[i - 1, j + 1].type;
}
}
if (Main.tile[i + 1, j + 1] != null && Main.tile[i + 1, j + 1].active())
{
if (Main.tileStone[(int)Main.tile[i + 1, j + 1].type])
{
num49 = 1;
}
else
{
num49 = (int)Main.tile[i + 1, j + 1].type;
}
}
if (Main.tile[i, j].slope() == 2)
{
num43 = -1;
num45 = -1;
}
if (Main.tile[i, j].slope() == 1)
{
num43 = -1;
num46 = -1;
}
if (num == 147)
{
if (num43 > -1 && Main.tileBrick[num43] && num43 != 161 && num43 != 163 && num43 != 164 && num43 != 200 && num43 != 200 && num43 != 224)
{
num43 = num;
}
if (num48 > -1 && Main.tileBrick[num48] && num48 != 161 && num48 != 163 && num48 != 164 && num48 != 200 && num48 != 224)
{
num48 = num;
}
if (num45 > -1 && Main.tileBrick[num45] && num45 != 161 && num45 != 163 && num45 != 164 && num45 != 200 && num45 != 224)
{
num45 = num;
}
if (num46 > -1 && Main.tileBrick[num46] && num46 != 161 && num46 != 163 && num46 != 164 && num46 != 200 && num46 != 224)
{
num46 = num;
}
if (num42 > -1 && Main.tileBrick[num42] && num42 != 161 && num42 != 163 && num42 != 164 && num42 != 200 && num42 != 224)
{
num42 = num;
}
if (num44 > -1 && Main.tileBrick[num44] && num44 != 161 && num44 != 163 && num44 != 164 && num44 != 200 && num44 != 224)
{
num44 = num;
}
if (num47 > -1 && Main.tileBrick[num47] && num47 != 161 && num47 != 163 && num47 != 164 && num47 != 200 && num47 != 224)
{
num47 = num;
}
if (num49 > -1 && Main.tileBrick[num49] && num49 != 161 && num49 != 163 && num49 != 164 && num49 != 200 && num49 != 224)
{
num49 = num;
}
}
else
{
if (num == 161 || num == 163 || num == 164 || num == 200)
{
if (num43 > -1 && Main.tileBrick[num43] && num43 != 147)
{
num43 = num;
}
if (num48 > -1 && Main.tileBrick[num48] && num48 != 147)
{
num48 = num;
}
if (num45 > -1 && Main.tileBrick[num45] && num45 != 147)
{
num45 = num;
}
if (num46 > -1 && Main.tileBrick[num46] && num46 != 147)
{
num46 = num;
}
if (num42 > -1 && Main.tileBrick[num42] && num42 != 147)
{
num42 = num;
}
if (num44 > -1 && Main.tileBrick[num44] && num44 != 147)
{
num44 = num;
}
if (num47 > -1 && Main.tileBrick[num47] && num47 != 147)
{
num47 = num;
}
if (num49 > -1 && Main.tileBrick[num49] && num49 != 147)
{
num49 = num;
}
}
else
{
if (Main.tileBrick[num])
{
if (num == 60 || num == 70)
{
if (num43 > -1 && num43 != 59 && Main.tileBrick[num43])
{
num43 = num;
}
if (num48 > -1 && num48 != 59 && Main.tileBrick[num48])
{
num48 = num;
}
if (num45 > -1 && num45 != 59 && Main.tileBrick[num45])
{
num45 = num;
}
if (num46 > -1 && num46 != 59 && Main.tileBrick[num46])
{
num46 = num;
}
if (num42 > -1 && num42 != 59 && Main.tileBrick[num42])
{
num42 = num;
}
if (num44 > -1 && num44 != 59 && Main.tileBrick[num44])
{
num44 = num;
}
if (num47 > -1 && num47 != 59 && Main.tileBrick[num47])
{
num47 = num;
}
if (num49 > -1 && num49 != 59 && Main.tileBrick[num49])
{
num49 = num;
}
}
else
{
if (num43 > -1 && Main.tileBrick[num43])
{
num43 = num;
}
if (num48 > -1 && Main.tileBrick[num48])
{
num48 = num;
}
if (num45 > -1 && Main.tileBrick[num45])
{
num45 = num;
}
if (num46 > -1 && Main.tileBrick[num46])
{
num46 = num;
}
if (num42 > -1 && Main.tileBrick[num42])
{
num42 = num;
}
if (num44 > -1 && Main.tileBrick[num44])
{
num44 = num;
}
if (num47 > -1 && Main.tileBrick[num47])
{
num47 = num;
}
if (num49 > -1 && Main.tileBrick[num49])
{
num49 = num;
}
}
}
}
}
if ((num == 1 || Main.tileMoss[num]) && num48 == 165)
{
if (Main.tile[i, j + 1].frameY == 72)
{
num48 = 1;
}
else
{
if (Main.tile[i, j + 1].frameY == 0)
{
num48 = 1;
}
}
}
if ((num == 1 || Main.tileMoss[num]) && num43 == 165)
{
if (Main.tile[i, j - 1].frameY == 90)
{
num43 = 1;
}
else
{
if (Main.tile[i, j - 1].frameY == 54)
{
num43 = 1;
}
}
}
if (num == 225)
{
if (num48 == 165)
{
num48 = num;
}
if (num43 == 165)
{
num43 = num;
}
}
if (num == 25 && num48 == 165 && Main.tile[i, j + 1].frameY < 36)
{
num48 = 25;
}
if (num == 25 && num43 == 165 && Main.tile[i, j - 1].frameY >= 36)
{
num43 = 25;
}
if (num == 117 && num48 == 165 && Main.tile[i, j + 1].frameY < 36)
{
num48 = 117;
}
if (num == 117 && num43 == 165 && Main.tile[i, j - 1].frameY >= 36)
{
num43 = 117;
}
if (num == 200 && num48 == 165)
{
num48 = 200;
}
if (num == 161 && num48 == 165)
{
num48 = 161;
}
if (num == 163 && num48 == 165)
{
num48 = 163;
}
if (num == 164 && num48 == 165)
{
num48 = 164;
}
if (Main.tile[i, j].slope() != 0 && num48 > -1)
{
num48 = num;
}
if (num43 > -1 && Main.tile[i, j - 1].slope() != 0)
{
num43 = num;
}
if (num == 124)
{
if (num43 > -1 && Main.tileSolid[num43])
{
num43 = num;
}
if (num48 > -1 && Main.tileSolid[num48])
{
num48 = num;
}
}
if (num43 > -1 && Main.tile[i, j - 1].halfBrick())
{
num43 = num;
}
if (num45 > -1 && Main.tile[i - 1, j].halfBrick())
{
if (Main.tile[i, j].halfBrick())
{
num45 = num;
}
else
{
if ((int)Main.tile[i - 1, j].type != num)
{
num45 = -1;
}
}
}
if (num46 > -1 && Main.tile[i + 1, j].halfBrick())
{
if (Main.tile[i, j].halfBrick())
{
num46 = num;
}
else
{
if ((int)Main.tile[i + 1, j].type != num)
{
num46 = -1;
}
}
}
if (Main.tile[i, j].halfBrick())
{
if (num45 != num)
{
num45 = -1;
}
if (num46 != num)
{
num46 = -1;
}
num43 = -1;
}
if (Main.tile[i, j + 1] != null && Main.tile[i, j + 1].halfBrick())
{
num48 = -1;
}
if (!Main.tileSolid[num])
{
if (num == 49)
{
WorldGen.CheckOnTable1x1(i, j, (int)((byte)num));
return;
}
if (num == 80)
{
WorldGen.CactusFrame(i, j);
return;
}
}
WorldGen.mergeUp = false;
WorldGen.mergeDown = false;
WorldGen.mergeLeft = false;
WorldGen.mergeRight = false;
int num50;
if (resetFrame)
{
num50 = WorldGen.genRand.Next(0, 3);
Main.tile[i, j].frameNumber((byte)num50);
}
else
{
num50 = (int)Main.tile[i, j].frameNumber();
}
if (num == 0)
{
if (num43 >= 0 && Main.tileMergeDirt[num43])
{
WorldGen.TileFrame(i, j - 1, false, false);
if (WorldGen.mergeDown)
{
num43 = num;
}
}
else
{
if (num43 == 147)
{
WorldGen.TileFrame(i, j - 1, false, false);
if (WorldGen.mergeDown)
{
num43 = num;
}
}
}
if (num48 >= 0 && Main.tileMergeDirt[num48])
{
WorldGen.TileFrame(i, j + 1, false, false);
if (WorldGen.mergeUp)
{
num48 = num;
}
}
else
{
if (num48 == 147)
{
WorldGen.TileFrame(i, j + 1, false, false);
if (WorldGen.mergeUp)
{
num48 = num;
}
}
}
if (num45 >= 0 && Main.tileMergeDirt[num45])
{
WorldGen.TileFrame(i - 1, j, false, false);
if (WorldGen.mergeRight)
{
num45 = num;
}
}
else
{
if (num45 == 147)
{
WorldGen.TileFrame(i - 1, j, false, false);
if (WorldGen.mergeRight)
{
num45 = num;
}
}
}
if (num46 >= 0 && Main.tileMergeDirt[num46])
{
WorldGen.TileFrame(i + 1, j, false, false);
if (WorldGen.mergeLeft)
{
num46 = num;
}
}
else
{
if (num46 == 147)
{
WorldGen.TileFrame(i + 1, j, false, false);
if (WorldGen.mergeLeft)
{
num46 = num;
}
}
}
if (num43 == 2 || num43 == 23 || num43 == 109 || num43 == 199)
{
num43 = num;
}
if (num48 == 2 || num48 == 23 || num48 == 109 || num48 == 199)
{
num48 = num;
}
if (num45 == 2 || num45 == 23 || num45 == 109 || num45 == 199)
{
num45 = num;
}
if (num46 == 2 || num46 == 23 || num46 == 109 || num46 == 199)
{
num46 = num;
}
if (num42 >= 0 && Main.tileMergeDirt[num42])
{
num42 = num;
}
else
{
if (num42 == 2 || num42 == 23 || num42 == 109 || num42 == 199)
{
num42 = num;
}
}
if (num44 >= 0 && Main.tileMergeDirt[num44])
{
num44 = num;
}
else
{
if (num44 == 2 || num44 == 23 || num44 == 109 || num44 == 199)
{
num44 = num;
}
}
if (num47 >= 0 && Main.tileMergeDirt[num47])
{
num47 = num;
}
else
{
if (num47 == 2 || num47 == 23 || num47 == 109 || num47 == 199)
{
num47 = num;
}
}
if (num49 >= 0 && Main.tileMergeDirt[num49])
{
num49 = num;
}
else
{
if (num49 == 2 || num49 == 23 || num49 == 109 || num49 == 199)
{
num49 = num;
}
}
double arg_313B_0 = Main.rockLayer;
if (num43 == 59)
{
num43 = -2;
}
if (num48 == 59)
{
num48 = -2;
}
if (num45 == 59)
{
num45 = -2;
}
if (num46 == 59)
{
num46 = -2;
}
if (num42 == 59)
{
num42 = -2;
}
if (num44 == 59)
{
num44 = -2;
}
if (num47 == 59)
{
num47 = -2;
}
if (num49 == 59)
{
num49 = -2;
}
if (num43 == 191)
{
num43 = num;
}
if (num48 == 191)
{
num48 = num;
}
if (num45 == 191)
{
num45 = num;
}
if (num46 == 191)
{
num46 = num;
}
if (num42 == 191)
{
num42 = num;
}
if (num44 == 191)
{
num44 = num;
}
if (num47 == 191)
{
num47 = num;
}
if (num49 == 191)
{
num49 = num;
}
}
else
{
if (num == 213)
{
if (num43 >= 0 && Main.tileSolid[num43] && !Main.tileSolidTop[num43])
{
num43 = num;
}
if (num48 >= 0 && Main.tileSolid[num48])
{
num48 = num;
}
if (num43 != num)
{
if (num45 >= 0 && Main.tileSolid[num45])
{
num45 = num;
}
if (num46 >= 0 && Main.tileSolid[num46])
{
num46 = num;
}
}
}
if (Main.tileMergeDirt[num])
{
if (num43 == 0)
{
num43 = -2;
}
if (num48 == 0)
{
num48 = -2;
}
if (num45 == 0)
{
num45 = -2;
}
if (num46 == 0)
{
num46 = -2;
}
if (num42 == 0)
{
num42 = -2;
}
if (num44 == 0)
{
num44 = -2;
}
if (num47 == 0)
{
num47 = -2;
}
if (num49 == 0)
{
num49 = -2;
}
if (num == 1)
{
if ((double)j > Main.rockLayer)
{
if (num43 == 59)
{
WorldGen.TileFrame(i, j - 1, false, false);
if (WorldGen.mergeDown)
{
num43 = num;
}
}
if (num48 == 59)
{
WorldGen.TileFrame(i, j + 1, false, false);
if (WorldGen.mergeUp)
{
num48 = num;
}
}
if (num45 == 59)
{
WorldGen.TileFrame(i - 1, j, false, false);
if (WorldGen.mergeRight)
{
num45 = num;
}
}
if (num46 == 59)
{
WorldGen.TileFrame(i + 1, j, false, false);
if (WorldGen.mergeLeft)
{
num46 = num;
}
}
if (num42 == 59)
{
num42 = num;
}
if (num44 == 59)
{
num44 = num;
}
if (num47 == 59)
{
num47 = num;
}
if (num49 == 59)
{
num49 = num;
}
}
if (num43 == 57)
{
WorldGen.TileFrame(i, j - 1, false, false);
if (WorldGen.mergeDown)
{
num43 = num;
}
}
if (num48 == 57)
{
WorldGen.TileFrame(i, j + 1, false, false);
if (WorldGen.mergeUp)
{
num48 = num;
}
}
if (num45 == 57)
{
WorldGen.TileFrame(i - 1, j, false, false);
if (WorldGen.mergeRight)
{
num45 = num;
}
}
if (num46 == 57)
{
WorldGen.TileFrame(i + 1, j, false, false);
if (WorldGen.mergeLeft)
{
num46 = num;
}
}
if (num42 == 57)
{
num42 = num;
}
if (num44 == 57)
{
num44 = num;
}
if (num47 == 57)
{
num47 = num;
}
if (num49 == 57)
{
num49 = num;
}
}
}
else
{
if (num == 58 || num == 76 || num == 75)
{
if (num43 == 57)
{
num43 = -2;
}
if (num48 == 57)
{
num48 = -2;
}
if (num45 == 57)
{
num45 = -2;
}
if (num46 == 57)
{
num46 = -2;
}
if (num42 == 57)
{
num42 = -2;
}
if (num44 == 57)
{
num44 = -2;
}
if (num47 == 57)
{
num47 = -2;
}
if (num49 == 57)
{
num49 = -2;
}
}
else
{
if (num == 211)
{
if (num43 == 60)
{
num43 = 59;
}
if (num48 == 60)
{
num48 = 59;
}
if (num45 == 60)
{
num45 = 59;
}
if (num46 == 60)
{
num46 = 59;
}
if (num43 == 59)
{
num43 = -2;
}
if (num48 == 59)
{
num48 = -2;
}
if (num45 == 59)
{
num45 = -2;
}
if (num46 == 59)
{
num46 = -2;
}
if (num42 == 59)
{
num42 = -2;
}
if (num44 == 59)
{
num44 = -2;
}
if (num47 == 59)
{
num47 = -2;
}
if (num49 == 59)
{
num49 = -2;
}
}
else
{
if (num == 225 || num == 226)
{
if (num43 == 59)
{
num43 = -2;
}
if (num48 == 59)
{
num48 = -2;
}
if (num45 == 59)
{
num45 = -2;
}
if (num46 == 59)
{
num46 = -2;
}
if (num42 == 59)
{
num42 = -2;
}
if (num44 == 59)
{
num44 = -2;
}
if (num47 == 59)
{
num47 = -2;
}
if (num49 == 59)
{
num49 = -2;
}
}
else
{
if (num == 59)
{
if ((double)j > Main.rockLayer)
{
if (num43 == 1)
{
num43 = -2;
}
if (num48 == 1)
{
num48 = -2;
}
if (num45 == 1)
{
num45 = -2;
}
if (num46 == 1)
{
num46 = -2;
}
if (num42 == 1)
{
num42 = -2;
}
if (num44 == 1)
{
num44 = -2;
}
if (num47 == 1)
{
num47 = -2;
}
if (num49 == 1)
{
num49 = -2;
}
}
if (num43 == 60)
{
num43 = num;
}
if (num48 == 60)
{
num48 = num;
}
if (num45 == 60)
{
num45 = num;
}
if (num46 == 60)
{
num46 = num;
}
if (num42 == 60)
{
num42 = num;
}
if (num44 == 60)
{
num44 = num;
}
if (num47 == 60)
{
num47 = num;
}
if (num49 == 60)
{
num49 = num;
}
if (num43 == 70)
{
num43 = num;
}
if (num48 == 70)
{
num48 = num;
}
if (num45 == 70)
{
num45 = num;
}
if (num46 == 70)
{
num46 = num;
}
if (num42 == 70)
{
num42 = num;
}
if (num44 == 70)
{
num44 = num;
}
if (num47 == 70)
{
num47 = num;
}
if (num49 == 70)
{
num49 = num;
}
if (num43 == 211 || num43 == 226 || num43 == 225)
{
WorldGen.TileFrame(i, j - 1, false, false);
if (WorldGen.mergeDown)
{
num43 = num;
}
}
if (num48 == 211 || num48 == 226 || num48 == 225)
{
WorldGen.TileFrame(i, j + 1, false, false);
if (WorldGen.mergeUp)
{
num48 = num;
}
}
if (num45 == 211 || num45 == 226 || num45 == 225)
{
WorldGen.TileFrame(i - 1, j, false, false);
if (WorldGen.mergeRight)
{
num45 = num;
}
}
if (num46 == 211 || num46 == 226 || num46 == 225)
{
WorldGen.TileFrame(i + 1, j, false, false);
if (WorldGen.mergeLeft)
{
num46 = num;
}
}
if (num42 == 211 || num42 == 225 || num42 == 226)
{
num42 = num;
}
if (num44 == 211 || num44 == 225 || num44 == 226)
{
num44 = num;
}
if (num47 == 211 || num47 == 225 || num47 == 226)
{
num47 = num;
}
if (num49 == 211 || num49 == 225 || num49 == 226)
{
num49 = num;
}
if ((double)j < Main.rockLayer)
{
if (num43 == 0)
{
WorldGen.TileFrame(i, j - 1, false, false);
if (WorldGen.mergeDown)
{
num43 = num;
}
}
if (num48 == 0)
{
WorldGen.TileFrame(i, j + 1, false, false);
if (WorldGen.mergeUp)
{
num48 = num;
}
}
if (num45 == 0)
{
WorldGen.TileFrame(i - 1, j, false, false);
if (WorldGen.mergeRight)
{
num45 = num;
}
}
if (num46 == 0)
{
WorldGen.TileFrame(i + 1, j, false, false);
if (WorldGen.mergeLeft)
{
num46 = num;
}
}
if (num42 == 0)
{
num42 = num;
}
if (num44 == 0)
{
num44 = num;
}
if (num47 == 0)
{
num47 = num;
}
if (num49 == 0)
{
num49 = num;
}
}
else
{
if (num43 == 0)
{
num43 = num;
}
if (num45 == 0)
{
num45 = num;
}
if (num46 == 0)
{
num46 = num;
}
if (num48 == 0)
{
num48 = num;
}
}
}
else
{
if (num == 57)
{
if (num43 == 1)
{
num43 = -2;
}
if (num48 == 1)
{
num48 = -2;
}
if (num45 == 1)
{
num45 = -2;
}
if (num46 == 1)
{
num46 = -2;
}
if (num42 == 1)
{
num42 = -2;
}
if (num44 == 1)
{
num44 = -2;
}
if (num47 == 1)
{
num47 = -2;
}
if (num49 == 1)
{
num49 = -2;
}
if (num43 == 58 || num43 == 76 || num43 == 75)
{
WorldGen.TileFrame(i, j - 1, false, false);
if (WorldGen.mergeDown)
{
num43 = num;
}
}
if (num48 == 58 || num48 == 76 || num48 == 75)
{
WorldGen.TileFrame(i, j + 1, false, false);
if (WorldGen.mergeUp)
{
num48 = num;
}
}
if (num45 == 58 || num45 == 76 || num45 == 75)
{
WorldGen.TileFrame(i - 1, j, false, false);
if (WorldGen.mergeRight)
{
num45 = num;
}
}
if (num46 == 58 || num46 == 76 || num46 == 75)
{
WorldGen.TileFrame(i + 1, j, false, false);
if (WorldGen.mergeLeft)
{
num46 = num;
}
}
if (num42 == 58 || num42 == 76 || num42 == 75)
{
num42 = num;
}
if (num44 == 58 || num44 == 76 || num44 == 75)
{
num44 = num;
}
if (num47 == 58 || num47 == 76 || num47 == 75)
{
num47 = num;
}
if (num49 == 58 || num49 == 76 || num49 == 75)
{
num49 = num;
}
}
else
{
if (num == 189)
{
if (num43 == 196)
{
WorldGen.TileFrame(i, j - 1, false, false);
if (WorldGen.mergeDown)
{
num43 = num;
}
}
if (num48 == 196)
{
WorldGen.TileFrame(i, j + 1, false, false);
if (WorldGen.mergeUp)
{
num48 = num;
}
}
if (num45 == 196)
{
WorldGen.TileFrame(i - 1, j, false, false);
if (WorldGen.mergeRight)
{
num45 = num;
}
}
if (num46 == 196)
{
WorldGen.TileFrame(i + 1, j, false, false);
if (WorldGen.mergeLeft)
{
num46 = num;
}
}
if (num42 == 196)
{
num42 = num;
}
if (num44 == 196)
{
num44 = num;
}
if (num47 == 196)
{
num47 = num;
}
if (num49 == 196)
{
num49 = num;
}
}
else
{
if (num == 196)
{
if (num43 == 189)
{
num43 = -2;
}
if (num48 == 189)
{
num48 = -2;
}
if (num45 == 189)
{
num45 = -2;
}
if (num46 == 189)
{
num46 = -2;
}
if (num42 == 189)
{
num42 = -2;
}
if (num44 == 189)
{
num44 = -2;
}
if (num47 == 189)
{
num47 = -2;
}
if (num49 == 189)
{
num49 = -2;
}
}
else
{
if (num == 147)
{
if (num43 == 0)
{
num43 = -2;
}
if (num48 == 0)
{
num48 = -2;
}
if (num45 == 0)
{
num45 = -2;
}
if (num46 == 0)
{
num46 = -2;
}
if (num42 == 0)
{
num42 = -2;
}
if (num44 == 0)
{
num44 = -2;
}
if (num47 == 0)
{
num47 = -2;
}
if (num49 == 0)
{
num49 = -2;
}
if (num43 == 161 || num43 == 163 || num43 == 164 || num43 == 200 || num43 == 224)
{
WorldGen.TileFrame(i, j - 1, false, false);
if (WorldGen.mergeDown)
{
num43 = num;
}
}
if (num48 == 161 || num48 == 163 || num48 == 164 || num48 == 200 || num48 == 224)
{
WorldGen.TileFrame(i, j + 1, false, false);
if (WorldGen.mergeUp)
{
num48 = num;
}
}
if (num45 == 161 || num45 == 163 || num45 == 164 || num45 == 200 || num45 == 224)
{
WorldGen.TileFrame(i - 1, j, false, false);
if (WorldGen.mergeRight)
{
num45 = num;
}
}
if (num46 == 161 || num46 == 163 || num46 == 164 || num46 == 200 || num46 == 224)
{
WorldGen.TileFrame(i + 1, j, false, false);
if (WorldGen.mergeLeft)
{
num46 = num;
}
}
if (num42 == 161 || num42 == 163 || num42 == 164 || num42 == 200 || num42 == 224)
{
num42 = num;
}
if (num44 == 161 || num44 == 163 || num44 == 164 || num44 == 200 || num44 == 224)
{
num44 = num;
}
if (num47 == 161 || num47 == 163 || num47 == 164 || num47 == 200 || num47 == 224)
{
num47 = num;
}
if (num49 == 161 || num49 == 163 || num49 == 164 || num49 == 200 || num49 == 224)
{
num49 = num;
}
}
else
{
if (num == 161 || num == 163 || num == 164 || num == 200 || num == 224)
{
if (num43 == 147)
{
num43 = -2;
}
if (num48 == 147)
{
num48 = -2;
}
if (num45 == 147)
{
num45 = -2;
}
if (num46 == 147)
{
num46 = -2;
}
if (num42 == 147)
{
num42 = -2;
}
if (num44 == 147)
{
num44 = -2;
}
if (num47 == 147)
{
num47 = -2;
}
if (num49 == 147)
{
num49 = -2;
}
}
else
{
if (num == 32)
{
if (num48 == 23)
{
num48 = num;
}
}
else
{
if (num == 69)
{
if (num48 == 60)
{
num48 = num;
}
}
else
{
if (num == 51)
{
if (num43 > -1 && !Main.tileNoAttach[num43])
{
num43 = num;
}
if (num48 > -1 && !Main.tileNoAttach[num48])
{
num48 = num;
}
if (num45 > -1 && !Main.tileNoAttach[num45])
{
num45 = num;
}
if (num46 > -1 && !Main.tileNoAttach[num46])
{
num46 = num;
}
if (num42 > -1 && !Main.tileNoAttach[num42])
{
num42 = num;
}
if (num44 > -1 && !Main.tileNoAttach[num44])
{
num44 = num;
}
if (num47 > -1 && !Main.tileNoAttach[num47])
{
num47 = num;
}
if (num49 > -1 && !Main.tileNoAttach[num49])
{
num49 = num;
}
}
else
{
if (num == 192)
{
if (num43 == 191)
{
WorldGen.TileFrame(i, j - 1, false, false);
if (WorldGen.mergeDown)
{
num43 = num;
}
}
if (num48 == 191)
{
WorldGen.TileFrame(i, j + 1, false, false);
if (WorldGen.mergeUp)
{
num48 = num;
}
}
if (num45 == 191)
{
WorldGen.TileFrame(i - 1, j, false, false);
if (WorldGen.mergeRight)
{
num45 = num;
}
}
if (num46 == 191)
{
WorldGen.TileFrame(i + 1, j, false, false);
if (WorldGen.mergeLeft)
{
num46 = num;
}
}
if (num42 == 191)
{
num42 = num;
}
if (num44 == 191)
{
num44 = num;
}
if (num47 == 191)
{
num47 = num;
}
if (num49 == 191)
{
num49 = num;
}
}
else
{
if (num == 191)
{
if (num43 == 192)
{
num43 = -2;
}
if (num48 == 192)
{
num48 = -2;
}
if (num45 == 192)
{
num45 = -2;
}
if (num46 == 192)
{
num46 = -2;
}
if (num42 == 192)
{
num42 = -2;
}
if (num44 == 192)
{
num44 = -2;
}
if (num47 == 192)
{
num47 = -2;
}
if (num49 == 192)
{
num49 = -2;
}
if (num43 == 0)
{
num43 = num;
}
if (num48 == 0)
{
num48 = num;
}
if (num45 == 0)
{
num45 = num;
}
if (num46 == 0)
{
num46 = num;
}
if (num42 == 0)
{
num42 = num;
}
if (num44 == 0)
{
num44 = num;
}
if (num47 == 0)
{
num47 = num;
}
if (num49 == 0)
{
num49 = num;
}
}
else
{
if (num == 60)
{
if (num43 == 211)
{
num43 = 59;
}
if (num48 == 211)
{
num48 = 59;
}
if (num45 == 211)
{
num45 = 59;
}
if (num46 == 211)
{
num46 = 59;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
if (Main.tileStone[num] || num == 1)
{
if (num43 > -1 && Main.tileMoss[num43])
{
num43 = num;
}
if (num48 > -1 && Main.tileMoss[num48])
{
num48 = num;
}
if (num45 > -1 && Main.tileMoss[num45])
{
num45 = num;
}
if (num46 > -1 && Main.tileMoss[num46])
{
num46 = num;
}
if (num42 > -1 && Main.tileMoss[num42])
{
num42 = num;
}
if (num44 > -1 && Main.tileMoss[num44])
{
num44 = num;
}
if (num47 > -1 && Main.tileMoss[num47])
{
num47 = num;
}
if (num49 > -1 && Main.tileMoss[num49])
{
num49 = num;
}
}
bool flag4 = false;
if (num43 == -2 && Main.tile[i, j].color() != Main.tile[i, j - 1].color())
{
num43 = num;
WorldGen.mergeUp = true;
}
if (num48 == -2 && Main.tile[i, j].color() != Main.tile[i, j + 1].color())
{
num48 = num;
WorldGen.mergeDown = true;
}
if (num45 == -2 && Main.tile[i, j].color() != Main.tile[i - 1, j].color())
{
num45 = num;
WorldGen.mergeLeft = true;
}
if (num46 == -2 && Main.tile[i, j].color() != Main.tile[i + 1, j].color())
{
num46 = num;
WorldGen.mergeRight = true;
}
if (num == 2 || num == 23 || num == 60 || num == 70 || num == 109 || num == 199 || Main.tileMoss[num])
{
flag4 = true;
if (num43 > -1 && !Main.tileSolid[num43] && num43 != num)
{
num43 = -1;
}
if (num48 > -1 && !Main.tileSolid[num48] && num48 != num)
{
num48 = -1;
}
if (num45 > -1 && !Main.tileSolid[num45] && num45 != num)
{
num45 = -1;
}
if (num46 > -1 && !Main.tileSolid[num46] && num46 != num)
{
num46 = -1;
}
if (num42 > -1 && !Main.tileSolid[num42] && num42 != num)
{
num42 = -1;
}
if (num44 > -1 && !Main.tileSolid[num44] && num44 != num)
{
num44 = -1;
}
if (num47 > -1 && !Main.tileSolid[num47] && num47 != num)
{
num47 = -1;
}
if (num49 > -1 && !Main.tileSolid[num49] && num49 != num)
{
num49 = -1;
}
int num51 = 0;
if (num == 60 || num == 70)
{
num51 = 59;
}
else
{
if (Main.tileMoss[num])
{
num51 = 1;
}
else
{
if (num == 2)
{
if (num43 == 23)
{
num43 = num51;
}
if (num48 == 23)
{
num48 = num51;
}
if (num45 == 23)
{
num45 = num51;
}
if (num46 == 23)
{
num46 = num51;
}
if (num42 == 23)
{
num42 = num51;
}
if (num44 == 23)
{
num44 = num51;
}
if (num47 == 23)
{
num47 = num51;
}
if (num49 == 23)
{
num49 = num51;
}
}
else
{
if (num == 23)
{
if (num43 == 2)
{
num43 = num51;
}
if (num48 == 2)
{
num48 = num51;
}
if (num45 == 2)
{
num45 = num51;
}
if (num46 == 2)
{
num46 = num51;
}
if (num42 == 2)
{
num42 = num51;
}
if (num44 == 2)
{
num44 = num51;
}
if (num47 == 2)
{
num47 = num51;
}
if (num49 == 2)
{
num49 = num51;
}
}
}
}
}
if (num43 != num && num43 != num51 && (num48 == num || num48 == num51))
{
if (num45 == num51 && num46 == num)
{
if (num50 == 0)
{
rectangle.X = 0;
rectangle.Y = 198;
}
else
{
if (num50 == 1)
{
rectangle.X = 18;
rectangle.Y = 198;
}
else
{
rectangle.X = 36;
rectangle.Y = 198;
}
}
}
else
{
if (num45 == num && num46 == num51)
{
if (num50 == 0)
{
rectangle.X = 54;
rectangle.Y = 198;
}
else
{
if (num50 == 1)
{
rectangle.X = 72;
rectangle.Y = 198;
}
else
{
rectangle.X = 90;
rectangle.Y = 198;
}
}
}
}
}
else
{
if (num48 != num && num48 != num51 && (num43 == num || num43 == num51))
{
if (num45 == num51 && num46 == num)
{
if (num50 == 0)
{
rectangle.X = 0;
rectangle.Y = 216;
}
else
{
if (num50 == 1)
{
rectangle.X = 18;
rectangle.Y = 216;
}
else
{
rectangle.X = 36;
rectangle.Y = 216;
}
}
}
else
{
if (num45 == num && num46 == num51)
{
if (num50 == 0)
{
rectangle.X = 54;
rectangle.Y = 216;
}
else
{
if (num50 == 1)
{
rectangle.X = 72;
rectangle.Y = 216;
}
else
{
rectangle.X = 90;
rectangle.Y = 216;
}
}
}
}
}
else
{
if (num45 != num && num45 != num51 && (num46 == num || num46 == num51))
{
if (num43 == num51 && num48 == num)
{
if (num50 == 0)
{
rectangle.X = 72;
rectangle.Y = 144;
}
else
{
if (num50 == 1)
{
rectangle.X = 72;
rectangle.Y = 162;
}
else
{
rectangle.X = 72;
rectangle.Y = 180;
}
}
}
else
{
if (num48 == num && num46 == num43)
{
if (num50 == 0)
{
rectangle.X = 72;
rectangle.Y = 90;
}
else
{
if (num50 == 1)
{
rectangle.X = 72;
rectangle.Y = 108;
}
else
{
rectangle.X = 72;
rectangle.Y = 126;
}
}
}
}
}
else
{
if (num46 != num && num46 != num51 && (num45 == num || num45 == num51))
{
if (num43 == num51 && num48 == num)
{
if (num50 == 0)
{
rectangle.X = 90;
rectangle.Y = 144;
}
else
{
if (num50 == 1)
{
rectangle.X = 90;
rectangle.Y = 162;
}
else
{
rectangle.X = 90;
rectangle.Y = 180;
}
}
}
else
{
if (num48 == num && num46 == num43)
{
if (num50 == 0)
{
rectangle.X = 90;
rectangle.Y = 90;
}
else
{
if (num50 == 1)
{
rectangle.X = 90;
rectangle.Y = 108;
}
else
{
rectangle.X = 90;
rectangle.Y = 126;
}
}
}
}
}
else
{
if (num43 == num && num48 == num && num45 == num && num46 == num)
{
if (num42 != num && num44 != num && num47 != num && num49 != num)
{
if (num49 == num51)
{
if (num50 == 0)
{
rectangle.X = 108;
rectangle.Y = 324;
}
else
{
if (num50 == 1)
{
rectangle.X = 126;
rectangle.Y = 324;
}
else
{
rectangle.X = 144;
rectangle.Y = 324;
}
}
}
else
{
if (num44 == num51)
{
if (num50 == 0)
{
rectangle.X = 108;
rectangle.Y = 342;
}
else
{
if (num50 == 1)
{
rectangle.X = 126;
rectangle.Y = 342;
}
else
{
rectangle.X = 144;
rectangle.Y = 342;
}
}
}
else
{
if (num47 == num51)
{
if (num50 == 0)
{
rectangle.X = 108;
rectangle.Y = 360;
}
else
{
if (num50 == 1)
{
rectangle.X = 126;
rectangle.Y = 360;
}
else
{
rectangle.X = 144;
rectangle.Y = 360;
}
}
}
else
{
if (num42 == num51)
{
if (num50 == 0)
{
rectangle.X = 108;
rectangle.Y = 378;
}
else
{
if (num50 == 1)
{
rectangle.X = 126;
rectangle.Y = 378;
}
else
{
rectangle.X = 144;
rectangle.Y = 378;
}
}
}
else
{
if (num50 == 0)
{
rectangle.X = 144;
rectangle.Y = 234;
}
else
{
if (num50 == 1)
{
rectangle.X = 198;
rectangle.Y = 234;
}
else
{
rectangle.X = 252;
rectangle.Y = 234;
}
}
}
}
}
}
}
else
{
if (num42 != num && num49 != num)
{
if (num50 == 0)
{
rectangle.X = 36;
rectangle.Y = 306;
}
else
{
if (num50 == 1)
{
rectangle.X = 54;
rectangle.Y = 306;
}
else
{
rectangle.X = 72;
rectangle.Y = 306;
}
}
}
else
{
if (num44 != num && num47 != num)
{
if (num50 == 0)
{
rectangle.X = 90;
rectangle.Y = 306;
}
else
{
if (num50 == 1)
{
rectangle.X = 108;
rectangle.Y = 306;
}
else
{
rectangle.X = 126;
rectangle.Y = 306;
}
}
}
else
{
if (num42 != num && num44 == num && num47 == num && num49 == num)
{
if (num50 == 0)
{
rectangle.X = 54;
rectangle.Y = 108;
}
else
{
if (num50 == 1)
{
rectangle.X = 54;
rectangle.Y = 144;
}
else
{
rectangle.X = 54;
rectangle.Y = 180;
}
}
}
else
{
if (num42 == num && num44 != num && num47 == num && num49 == num)
{
if (num50 == 0)
{
rectangle.X = 36;
rectangle.Y = 108;
}
else
{
if (num50 == 1)
{
rectangle.X = 36;
rectangle.Y = 144;
}
else
{
rectangle.X = 36;
rectangle.Y = 180;
}
}
}
else
{
if (num42 == num && num44 == num && num47 != num && num49 == num)
{
if (num50 == 0)
{
rectangle.X = 54;
rectangle.Y = 90;
}
else
{
if (num50 == 1)
{
rectangle.X = 54;
rectangle.Y = 126;
}
else
{
rectangle.X = 54;
rectangle.Y = 162;
}
}
}
else
{
if (num42 == num && num44 == num && num47 == num && num49 != num)
{
if (num50 == 0)
{
rectangle.X = 36;
rectangle.Y = 90;
}
else
{
if (num50 == 1)
{
rectangle.X = 36;
rectangle.Y = 126;
}
else
{
rectangle.X = 36;
rectangle.Y = 162;
}
}
}
}
}
}
}
}
}
}
else
{
if (num43 == num && num48 == num51 && num45 == num && num46 == num && num42 == -1 && num44 == -1)
{
if (num50 == 0)
{
rectangle.X = 108;
rectangle.Y = 18;
}
else
{
if (num50 == 1)
{
rectangle.X = 126;
rectangle.Y = 18;
}
else
{
rectangle.X = 144;
rectangle.Y = 18;
}
}
}
else
{
if (num43 == num51 && num48 == num && num45 == num && num46 == num && num47 == -1 && num49 == -1)
{
if (num50 == 0)
{
rectangle.X = 108;
rectangle.Y = 36;
}
else
{
if (num50 == 1)
{
rectangle.X = 126;
rectangle.Y = 36;
}
else
{
rectangle.X = 144;
rectangle.Y = 36;
}
}
}
else
{
if (num43 == num && num48 == num && num45 == num51 && num46 == num && num44 == -1 && num49 == -1)
{
if (num50 == 0)
{
rectangle.X = 198;
rectangle.Y = 0;
}
else
{
if (num50 == 1)
{
rectangle.X = 198;
rectangle.Y = 18;
}
else
{
rectangle.X = 198;
rectangle.Y = 36;
}
}
}
else
{
if (num43 == num && num48 == num && num45 == num && num46 == num51 && num42 == -1 && num47 == -1)
{
if (num50 == 0)
{
rectangle.X = 180;
rectangle.Y = 0;
}
else
{
if (num50 == 1)
{
rectangle.X = 180;
rectangle.Y = 18;
}
else
{
rectangle.X = 180;
rectangle.Y = 36;
}
}
}
else
{
if (num43 == num && num48 == num51 && num45 == num && num46 == num)
{
if (num44 != -1)
{
if (num50 == 0)
{
rectangle.X = 54;
rectangle.Y = 108;
}
else
{
if (num50 == 1)
{
rectangle.X = 54;
rectangle.Y = 144;
}
else
{
rectangle.X = 54;
rectangle.Y = 180;
}
}
}
else
{
if (num42 != -1)
{
if (num50 == 0)
{
rectangle.X = 36;
rectangle.Y = 108;
}
else
{
if (num50 == 1)
{
rectangle.X = 36;
rectangle.Y = 144;
}
else
{
rectangle.X = 36;
rectangle.Y = 180;
}
}
}
}
}
else
{
if (num43 == num51 && num48 == num && num45 == num && num46 == num)
{
if (num49 != -1)
{
if (num50 == 0)
{
rectangle.X = 54;
rectangle.Y = 90;
}
else
{
if (num50 == 1)
{
rectangle.X = 54;
rectangle.Y = 126;
}
else
{
rectangle.X = 54;
rectangle.Y = 162;
}
}
}
else
{
if (num47 != -1)
{
if (num50 == 0)
{
rectangle.X = 36;
rectangle.Y = 90;
}
else
{
if (num50 == 1)
{
rectangle.X = 36;
rectangle.Y = 126;
}
else
{
rectangle.X = 36;
rectangle.Y = 162;
}
}
}
}
}
else
{
if (num43 == num && num48 == num && num45 == num && num46 == num51)
{
if (num42 != -1)
{
if (num50 == 0)
{
rectangle.X = 54;
rectangle.Y = 90;
}
else
{
if (num50 == 1)
{
rectangle.X = 54;
rectangle.Y = 126;
}
else
{
rectangle.X = 54;
rectangle.Y = 162;
}
}
}
else
{
if (num47 != -1)
{
if (num50 == 0)
{
rectangle.X = 54;
rectangle.Y = 108;
}
else
{
if (num50 == 1)
{
rectangle.X = 54;
rectangle.Y = 144;
}
else
{
rectangle.X = 54;
rectangle.Y = 180;
}
}
}
}
}
else
{
if (num43 == num && num48 == num && num45 == num51 && num46 == num)
{
if (num44 != -1)
{
if (num50 == 0)
{
rectangle.X = 36;
rectangle.Y = 90;
}
else
{
if (num50 == 1)
{
rectangle.X = 36;
rectangle.Y = 126;
}
else
{
rectangle.X = 36;
rectangle.Y = 162;
}
}
}
else
{
if (num49 != -1)
{
if (num50 == 0)
{
rectangle.X = 36;
rectangle.Y = 108;
}
else
{
if (num50 == 1)
{
rectangle.X = 36;
rectangle.Y = 144;
}
else
{
rectangle.X = 36;
rectangle.Y = 180;
}
}
}
}
}
else
{
if ((num43 == num51 && num48 == num && num45 == num && num46 == num) || (num43 == num && num48 == num51 && num45 == num && num46 == num) || (num43 == num && num48 == num && num45 == num51 && num46 == num) || (num43 == num && num48 == num && num45 == num && num46 == num51))
{
if (num50 == 0)
{
rectangle.X = 18;
rectangle.Y = 18;
}
else
{
if (num50 == 1)
{
rectangle.X = 36;
rectangle.Y = 18;
}
else
{
rectangle.X = 54;
rectangle.Y = 18;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
if ((num43 == num || num43 == num51) && (num48 == num || num48 == num51) && (num45 == num || num45 == num51) && (num46 == num || num46 == num51))
{
if (num42 != num && num42 != num51 && (num44 == num || num44 == num51) && (num47 == num || num47 == num51) && (num49 == num || num49 == num51))
{
if (num50 == 0)
{
rectangle.X = 54;
rectangle.Y = 108;
}
else
{
if (num50 == 1)
{
rectangle.X = 54;
rectangle.Y = 144;
}
else
{
rectangle.X = 54;
rectangle.Y = 180;
}
}
}
else
{
if (num44 != num && num44 != num51 && (num42 == num || num42 == num51) && (num47 == num || num47 == num51) && (num49 == num || num49 == num51))
{
if (num50 == 0)
{
rectangle.X = 36;
rectangle.Y = 108;
}
else
{
if (num50 == 1)
{
rectangle.X = 36;
rectangle.Y = 144;
}
else
{
rectangle.X = 36;
rectangle.Y = 180;
}
}
}
else
{
if (num47 != num && num47 != num51 && (num42 == num || num42 == num51) && (num44 == num || num44 == num51) && (num49 == num || num49 == num51))
{
if (num50 == 0)
{
rectangle.X = 54;
rectangle.Y = 90;
}
else
{
if (num50 == 1)
{
rectangle.X = 54;
rectangle.Y = 126;
}
else
{
rectangle.X = 54;
rectangle.Y = 162;
}
}
}
else
{
if (num49 != num && num49 != num51 && (num42 == num || num42 == num51) && (num47 == num || num47 == num51) && (num44 == num || num44 == num51))
{
if (num50 == 0)
{
rectangle.X = 36;
rectangle.Y = 90;
}
else
{
if (num50 == 1)
{
rectangle.X = 36;
rectangle.Y = 126;
}
else
{
rectangle.X = 36;
rectangle.Y = 162;
}
}
}
}
}
}
}
if (num43 != num51 && num43 != num && num48 == num && num45 != num51 && num45 != num && num46 == num && num49 != num51 && num49 != num)
{
if (num50 == 0)
{
rectangle.X = 90;
rectangle.Y = 270;
}
else
{
if (num50 == 1)
{
rectangle.X = 108;
rectangle.Y = 270;
}
else
{
rectangle.X = 126;
rectangle.Y = 270;
}
}
}
else
{
if (num43 != num51 && num43 != num && num48 == num && num45 == num && num46 != num51 && num46 != num && num47 != num51 && num47 != num)
{
if (num50 == 0)
{
rectangle.X = 144;
rectangle.Y = 270;
}
else
{
if (num50 == 1)
{
rectangle.X = 162;
rectangle.Y = 270;
}
else
{
rectangle.X = 180;
rectangle.Y = 270;
}
}
}
else
{
if (num48 != num51 && num48 != num && num43 == num && num45 != num51 && num45 != num && num46 == num && num44 != num51 && num44 != num)
{
if (num50 == 0)
{
rectangle.X = 90;
rectangle.Y = 288;
}
else
{
if (num50 == 1)
{
rectangle.X = 108;
rectangle.Y = 288;
}
else
{
rectangle.X = 126;
rectangle.Y = 288;
}
}
}
else
{
if (num48 != num51 && num48 != num && num43 == num && num45 == num && num46 != num51 && num46 != num && num42 != num51 && num42 != num)
{
if (num50 == 0)
{
rectangle.X = 144;
rectangle.Y = 288;
}
else
{
if (num50 == 1)
{
rectangle.X = 162;
rectangle.Y = 288;
}
else
{
rectangle.X = 180;
rectangle.Y = 288;
}
}
}
else
{
if (num43 != num && num43 != num51 && num48 == num && num45 == num && num46 == num && num47 != num && num47 != num51 && num49 != num && num49 != num51)
{
if (num50 == 0)
{
rectangle.X = 144;
rectangle.Y = 216;
}
else
{
if (num50 == 1)
{
rectangle.X = 198;
rectangle.Y = 216;
}
else
{
rectangle.X = 252;
rectangle.Y = 216;
}
}
}
else
{
if (num48 != num && num48 != num51 && num43 == num && num45 == num && num46 == num && num42 != num && num42 != num51 && num44 != num && num44 != num51)
{
if (num50 == 0)
{
rectangle.X = 144;
rectangle.Y = 252;
}
else
{
if (num50 == 1)
{
rectangle.X = 198;
rectangle.Y = 252;
}
else
{
rectangle.X = 252;
rectangle.Y = 252;
}
}
}
else
{
if (num45 != num && num45 != num51 && num48 == num && num43 == num && num46 == num && num44 != num && num44 != num51 && num49 != num && num49 != num51)
{
if (num50 == 0)
{
rectangle.X = 126;
rectangle.Y = 234;
}
else
{
if (num50 == 1)
{
rectangle.X = 180;
rectangle.Y = 234;
}
else
{
rectangle.X = 234;
rectangle.Y = 234;
}
}
}
else
{
if (num46 != num && num46 != num51 && num48 == num && num43 == num && num45 == num && num42 != num && num42 != num51 && num47 != num && num47 != num51)
{
if (num50 == 0)
{
rectangle.X = 162;
rectangle.Y = 234;
}
else
{
if (num50 == 1)
{
rectangle.X = 216;
rectangle.Y = 234;
}
else
{
rectangle.X = 270;
rectangle.Y = 234;
}
}
}
else
{
if (num43 != num51 && num43 != num && (num48 == num51 || num48 == num) && num45 == num51 && num46 == num51)
{
if (num50 == 0)
{
rectangle.X = 36;
rectangle.Y = 270;
}
else
{
if (num50 == 1)
{
rectangle.X = 54;
rectangle.Y = 270;
}
else
{
rectangle.X = 72;
rectangle.Y = 270;
}
}
}
else
{
if (num48 != num51 && num48 != num && (num43 == num51 || num43 == num) && num45 == num51 && num46 == num51)
{
if (num50 == 0)
{
rectangle.X = 36;
rectangle.Y = 288;
}
else
{
if (num50 == 1)
{
rectangle.X = 54;
rectangle.Y = 288;
}
else
{
rectangle.X = 72;
rectangle.Y = 288;
}
}
}
else
{
if (num45 != num51 && num45 != num && (num46 == num51 || num46 == num) && num43 == num51 && num48 == num51)
{
if (num50 == 0)
{
rectangle.X = 0;
rectangle.Y = 270;
}
else
{
if (num50 == 1)
{
rectangle.X = 0;
rectangle.Y = 288;
}
else
{
rectangle.X = 0;
rectangle.Y = 306;
}
}
}
else
{
if (num46 != num51 && num46 != num && (num45 == num51 || num45 == num) && num43 == num51 && num48 == num51)
{
if (num50 == 0)
{
rectangle.X = 18;
rectangle.Y = 270;
}
else
{
if (num50 == 1)
{
rectangle.X = 18;
rectangle.Y = 288;
}
else
{
rectangle.X = 18;
rectangle.Y = 306;
}
}
}
else
{
if (num43 == num && num48 == num51 && num45 == num51 && num46 == num51)
{
if (num50 == 0)
{
rectangle.X = 198;
rectangle.Y = 288;
}
else
{
if (num50 == 1)
{
rectangle.X = 216;
rectangle.Y = 288;
}
else
{
rectangle.X = 234;
rectangle.Y = 288;
}
}
}
else
{
if (num43 == num51 && num48 == num && num45 == num51 && num46 == num51)
{
if (num50 == 0)
{
rectangle.X = 198;
rectangle.Y = 270;
}
else
{
if (num50 == 1)
{
rectangle.X = 216;
rectangle.Y = 270;
}
else
{
rectangle.X = 234;
rectangle.Y = 270;
}
}
}
else
{
if (num43 == num51 && num48 == num51 && num45 == num && num46 == num51)
{
if (num50 == 0)
{
rectangle.X = 198;
rectangle.Y = 306;
}
else
{
if (num50 == 1)
{
rectangle.X = 216;
rectangle.Y = 306;
}
else
{
rectangle.X = 234;
rectangle.Y = 306;
}
}
}
else
{
if (num43 == num51 && num48 == num51 && num45 == num51 && num46 == num)
{
if (num50 == 0)
{
rectangle.X = 144;
rectangle.Y = 306;
}
else
{
if (num50 == 1)
{
rectangle.X = 162;
rectangle.Y = 306;
}
else
{
rectangle.X = 180;
rectangle.Y = 306;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
if (num43 != num && num43 != num51 && num48 == num && num45 == num && num46 == num)
{
if ((num47 == num51 || num47 == num) && num49 != num51 && num49 != num)
{
if (num50 == 0)
{
rectangle.X = 0;
rectangle.Y = 324;
}
else
{
if (num50 == 1)
{
rectangle.X = 18;
rectangle.Y = 324;
}
else
{
rectangle.X = 36;
rectangle.Y = 324;
}
}
}
else
{
if ((num49 == num51 || num49 == num) && num47 != num51 && num47 != num)
{
if (num50 == 0)
{
rectangle.X = 54;
rectangle.Y = 324;
}
else
{
if (num50 == 1)
{
rectangle.X = 72;
rectangle.Y = 324;
}
else
{
rectangle.X = 90;
rectangle.Y = 324;
}
}
}
}
}
else
{
if (num48 != num && num48 != num51 && num43 == num && num45 == num && num46 == num)
{
if ((num42 == num51 || num42 == num) && num44 != num51 && num44 != num)
{
if (num50 == 0)
{
rectangle.X = 0;
rectangle.Y = 342;
}
else
{
if (num50 == 1)
{
rectangle.X = 18;
rectangle.Y = 342;
}
else
{
rectangle.X = 36;
rectangle.Y = 342;
}
}
}
else
{
if ((num44 == num51 || num44 == num) && num42 != num51 && num42 != num)
{
if (num50 == 0)
{
rectangle.X = 54;
rectangle.Y = 342;
}
else
{
if (num50 == 1)
{
rectangle.X = 72;
rectangle.Y = 342;
}
else
{
rectangle.X = 90;
rectangle.Y = 342;
}
}
}
}
}
else
{
if (num45 != num && num45 != num51 && num43 == num && num48 == num && num46 == num)
{
if ((num44 == num51 || num44 == num) && num49 != num51 && num49 != num)
{
if (num50 == 0)
{
rectangle.X = 54;
rectangle.Y = 360;
}
else
{
if (num50 == 1)
{
rectangle.X = 72;
rectangle.Y = 360;
}
else
{
rectangle.X = 90;
rectangle.Y = 360;
}
}
}
else
{
if ((num49 == num51 || num49 == num) && num44 != num51 && num44 != num)
{
if (num50 == 0)
{
rectangle.X = 0;
rectangle.Y = 360;
}
else
{
if (num50 == 1)
{
rectangle.X = 18;
rectangle.Y = 360;
}
else
{
rectangle.X = 36;
rectangle.Y = 360;
}
}
}
}
}
else
{
if (num46 != num && num46 != num51 && num43 == num && num48 == num && num45 == num)
{
if ((num42 == num51 || num42 == num) && num47 != num51 && num47 != num)
{
if (num50 == 0)
{
rectangle.X = 0;
rectangle.Y = 378;
}
else
{
if (num50 == 1)
{
rectangle.X = 18;
rectangle.Y = 378;
}
else
{
rectangle.X = 36;
rectangle.Y = 378;
}
}
}
else
{
if ((num47 == num51 || num47 == num) && num42 != num51 && num42 != num)
{
if (num50 == 0)
{
rectangle.X = 54;
rectangle.Y = 378;
}
else
{
if (num50 == 1)
{
rectangle.X = 72;
rectangle.Y = 378;
}
else
{
rectangle.X = 90;
rectangle.Y = 378;
}
}
}
}
}
}
}
}
if ((num43 == num || num43 == num51) && (num48 == num || num48 == num51) && (num45 == num || num45 == num51) && (num46 == num || num46 == num51) && num42 != -1 && num44 != -1 && num47 != -1 && num49 != -1)
{
if (num50 == 0)
{
rectangle.X = 18;
rectangle.Y = 18;
}
else
{
if (num50 == 1)
{
rectangle.X = 36;
rectangle.Y = 18;
}
else
{
rectangle.X = 54;
rectangle.Y = 18;
}
}
}
if (num43 == num51)
{
num43 = -2;
}
if (num48 == num51)
{
num48 = -2;
}
if (num45 == num51)
{
num45 = -2;
}
if (num46 == num51)
{
num46 = -2;
}
if (num42 == num51)
{
num42 = -2;
}
if (num44 == num51)
{
num44 = -2;
}
if (num47 == num51)
{
num47 = -2;
}
if (num49 == num51)
{
num49 = -2;
}
}
if (rectangle.X == -1 && rectangle.Y == -1 && (Main.tileMergeDirt[num] || num == 0 || num == 2 || num == 57 || num == 58 || num == 59 || num == 60 || num == 70 || num == 109 || num == 76 || num == 75 || num == 147 || num == 161 || num == 163 || num == 164 || num == 189 || num == 196 || num == 191 || num == 199 || num == 200 || num == 211 || num == 224 || num == 226 || num == 225))
{
if (!flag4)
{
flag4 = true;
if (num43 > -1 && !Main.tileSolid[num43] && num43 != num)
{
num43 = -1;
}
if (num48 > -1 && !Main.tileSolid[num48] && num48 != num)
{
num48 = -1;
}
if (num45 > -1 && !Main.tileSolid[num45] && num45 != num)
{
num45 = -1;
}
if (num46 > -1 && !Main.tileSolid[num46] && num46 != num)
{
num46 = -1;
}
if (num42 > -1 && !Main.tileSolid[num42] && num42 != num)
{
num42 = -1;
}
if (num44 > -1 && !Main.tileSolid[num44] && num44 != num)
{
num44 = -1;
}
if (num47 > -1 && !Main.tileSolid[num47] && num47 != num)
{
num47 = -1;
}
if (num49 > -1 && !Main.tileSolid[num49] && num49 != num)
{
num49 = -1;
}
}
if (num43 >= 0 && num43 != num)
{
num43 = -1;
}
if (num48 >= 0 && num48 != num)
{
num48 = -1;
}
if (num45 >= 0 && num45 != num)
{
num45 = -1;
}
if (num46 >= 0 && num46 != num)
{
num46 = -1;
}
if (num43 != -1 && num48 != -1 && num45 != -1 && num46 != -1)
{
if (num43 == -2 && num48 == num && num45 == num && num46 == num)
{
if (num50 == 0)
{
rectangle.X = 144;
rectangle.Y = 108;
}
else
{
if (num50 == 1)
{
rectangle.X = 162;
rectangle.Y = 108;
}
else
{
rectangle.X = 180;
rectangle.Y = 108;
}
}
WorldGen.mergeUp = true;
}
else
{
if (num43 == num && num48 == -2 && num45 == num && num46 == num)
{
if (num50 == 0)
{
rectangle.X = 144;
rectangle.Y = 90;
}
else
{
if (num50 == 1)
{
rectangle.X = 162;
rectangle.Y = 90;
}
else
{
rectangle.X = 180;
rectangle.Y = 90;
}
}
WorldGen.mergeDown = true;
}
else
{
if (num43 == num && num48 == num && num45 == -2 && num46 == num)
{
if (num50 == 0)
{
rectangle.X = 162;
rectangle.Y = 126;
}
else
{
if (num50 == 1)
{
rectangle.X = 162;
rectangle.Y = 144;
}
else
{
rectangle.X = 162;
rectangle.Y = 162;
}
}
WorldGen.mergeLeft = true;
}
else
{
if (num43 == num && num48 == num && num45 == num && num46 == -2)
{
if (num50 == 0)
{
rectangle.X = 144;
rectangle.Y = 126;
}
else
{
if (num50 == 1)
{
rectangle.X = 144;
rectangle.Y = 144;
}
else
{
rectangle.X = 144;
rectangle.Y = 162;
}
}
WorldGen.mergeRight = true;
}
else
{
if (num43 == -2 && num48 == num && num45 == -2 && num46 == num)
{
if (num50 == 0)
{
rectangle.X = 36;
rectangle.Y = 90;
}
else
{
if (num50 == 1)
{
rectangle.X = 36;
rectangle.Y = 126;
}
else
{
rectangle.X = 36;
rectangle.Y = 162;
}
}
WorldGen.mergeUp = true;
WorldGen.mergeLeft = true;
}
else
{
if (num43 == -2 && num48 == num && num45 == num && num46 == -2)
{
if (num50 == 0)
{
rectangle.X = 54;
rectangle.Y = 90;
}
else
{
if (num50 == 1)
{
rectangle.X = 54;
rectangle.Y = 126;
}
else
{
rectangle.X = 54;
rectangle.Y = 162;
}
}
WorldGen.mergeUp = true;
WorldGen.mergeRight = true;
}
else
{
if (num43 == num && num48 == -2 && num45 == -2 && num46 == num)
{
if (num50 == 0)
{
rectangle.X = 36;
rectangle.Y = 108;
}
else
{
if (num50 == 1)
{
rectangle.X = 36;
rectangle.Y = 144;
}
else
{
rectangle.X = 36;
rectangle.Y = 180;
}
}
WorldGen.mergeDown = true;
WorldGen.mergeLeft = true;
}
else
{
if (num43 == num && num48 == -2 && num45 == num && num46 == -2)
{
if (num50 == 0)
{
rectangle.X = 54;
rectangle.Y = 108;
}
else
{
if (num50 == 1)
{
rectangle.X = 54;
rectangle.Y = 144;
}
else
{
rectangle.X = 54;
rectangle.Y = 180;
}
}
WorldGen.mergeDown = true;
WorldGen.mergeRight = true;
}
else
{
if (num43 == num && num48 == num && num45 == -2 && num46 == -2)
{
if (num50 == 0)
{
rectangle.X = 180;
rectangle.Y = 126;
}
else
{
if (num50 == 1)
{
rectangle.X = 180;
rectangle.Y = 144;
}
else
{
rectangle.X = 180;
rectangle.Y = 162;
}
}
WorldGen.mergeLeft = true;
WorldGen.mergeRight = true;
}
else
{
if (num43 == -2 && num48 == -2 && num45 == num && num46 == num)
{
if (num50 == 0)
{
rectangle.X = 144;
rectangle.Y = 180;
}
else
{
if (num50 == 1)
{
rectangle.X = 162;
rectangle.Y = 180;
}
else
{
rectangle.X = 180;
rectangle.Y = 180;
}
}
WorldGen.mergeUp = true;
WorldGen.mergeDown = true;
}
else
{
if (num43 == -2 && num48 == num && num45 == -2 && num46 == -2)
{
if (num50 == 0)
{
rectangle.X = 198;
rectangle.Y = 90;
}
else
{
if (num50 == 1)
{
rectangle.X = 198;
rectangle.Y = 108;
}
else
{
rectangle.X = 198;
rectangle.Y = 126;
}
}
WorldGen.mergeUp = true;
WorldGen.mergeLeft = true;
WorldGen.mergeRight = true;
}
else
{
if (num43 == num && num48 == -2 && num45 == -2 && num46 == -2)
{
if (num50 == 0)
{
rectangle.X = 198;
rectangle.Y = 144;
}
else
{
if (num50 == 1)
{
rectangle.X = 198;
rectangle.Y = 162;
}
else
{
rectangle.X = 198;
rectangle.Y = 180;
}
}
WorldGen.mergeDown = true;
WorldGen.mergeLeft = true;
WorldGen.mergeRight = true;
}
else
{
if (num43 == -2 && num48 == -2 && num45 == num && num46 == -2)
{
if (num50 == 0)
{
rectangle.X = 216;
rectangle.Y = 144;
}
else
{
if (num50 == 1)
{
rectangle.X = 216;
rectangle.Y = 162;
}
else
{
rectangle.X = 216;
rectangle.Y = 180;
}
}
WorldGen.mergeUp = true;
WorldGen.mergeDown = true;
WorldGen.mergeRight = true;
}
else
{
if (num43 == -2 && num48 == -2 && num45 == -2 && num46 == num)
{
if (num50 == 0)
{
rectangle.X = 216;
rectangle.Y = 90;
}
else
{
if (num50 == 1)
{
rectangle.X = 216;
rectangle.Y = 108;
}
else
{
rectangle.X = 216;
rectangle.Y = 126;
}
}
WorldGen.mergeUp = true;
WorldGen.mergeDown = true;
WorldGen.mergeLeft = true;
}
else
{
if (num43 == -2 && num48 == -2 && num45 == -2 && num46 == -2)
{
if (num50 == 0)
{
rectangle.X = 108;
rectangle.Y = 198;
}
else
{
if (num50 == 1)
{
rectangle.X = 126;
rectangle.Y = 198;
}
else
{
rectangle.X = 144;
rectangle.Y = 198;
}
}
WorldGen.mergeUp = true;
WorldGen.mergeDown = true;
WorldGen.mergeLeft = true;
WorldGen.mergeRight = true;
}
else
{
if (num43 == num && num48 == num && num45 == num && num46 == num)
{
if (num42 == -2)
{
if (num50 == 0)
{
rectangle.X = 18;
rectangle.Y = 108;
}
else
{
if (num50 == 1)
{
rectangle.X = 18;
rectangle.Y = 144;
}
else
{
rectangle.X = 18;
rectangle.Y = 180;
}
}
}
if (num44 == -2)
{
if (num50 == 0)
{
rectangle.X = 0;
rectangle.Y = 108;
}
else
{
if (num50 == 1)
{
rectangle.X = 0;
rectangle.Y = 144;
}
else
{
rectangle.X = 0;
rectangle.Y = 180;
}
}
}
if (num47 == -2)
{
if (num50 == 0)
{
rectangle.X = 18;
rectangle.Y = 90;
}
else
{
if (num50 == 1)
{
rectangle.X = 18;
rectangle.Y = 126;
}
else
{
rectangle.X = 18;
rectangle.Y = 162;
}
}
}
if (num49 == -2)
{
if (num50 == 0)
{
rectangle.X = 0;
rectangle.Y = 90;
}
else
{
if (num50 == 1)
{
rectangle.X = 0;
rectangle.Y = 126;
}
else
{
rectangle.X = 0;
rectangle.Y = 162;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
else
{
if (num != 2 && num != 23 && num != 60 && num != 70 && num != 109 && num != 199)
{
if (num43 == -1 && num48 == -2 && num45 == num && num46 == num)
{
if (num50 == 0)
{
rectangle.X = 234;
rectangle.Y = 0;
}
else
{
if (num50 == 1)
{
rectangle.X = 252;
rectangle.Y = 0;
}
else
{
rectangle.X = 270;
rectangle.Y = 0;
}
}
WorldGen.mergeDown = true;
}
else
{
if (num43 == -2 && num48 == -1 && num45 == num && num46 == num)
{
if (num50 == 0)
{
rectangle.X = 234;
rectangle.Y = 18;
}
else
{
if (num50 == 1)
{
rectangle.X = 252;
rectangle.Y = 18;
}
else
{
rectangle.X = 270;
rectangle.Y = 18;
}
}
WorldGen.mergeUp = true;
}
else
{
if (num43 == num && num48 == num && num45 == -1 && num46 == -2)
{
if (num50 == 0)
{
rectangle.X = 234;
rectangle.Y = 36;
}
else
{
if (num50 == 1)
{
rectangle.X = 252;
rectangle.Y = 36;
}
else
{
rectangle.X = 270;
rectangle.Y = 36;
}
}
WorldGen.mergeRight = true;
}
else
{
if (num43 == num && num48 == num && num45 == -2 && num46 == -1)
{
if (num50 == 0)
{
rectangle.X = 234;
rectangle.Y = 54;
}
else
{
if (num50 == 1)
{
rectangle.X = 252;
rectangle.Y = 54;
}
else
{
rectangle.X = 270;
rectangle.Y = 54;
}
}
WorldGen.mergeLeft = true;
}
}
}
}
}
if (num43 != -1 && num48 != -1 && num45 == -1 && num46 == num)
{
if (num43 == -2 && num48 == num)
{
if (num50 == 0)
{
rectangle.X = 72;
rectangle.Y = 144;
}
else
{
if (num50 == 1)
{
rectangle.X = 72;
rectangle.Y = 162;
}
else
{
rectangle.X = 72;
rectangle.Y = 180;
}
}
WorldGen.mergeUp = true;
}
else
{
if (num48 == -2 && num43 == num)
{
if (num50 == 0)
{
rectangle.X = 72;
rectangle.Y = 90;
}
else
{
if (num50 == 1)
{
rectangle.X = 72;
rectangle.Y = 108;
}
else
{
rectangle.X = 72;
rectangle.Y = 126;
}
}
WorldGen.mergeDown = true;
}
}
}
else
{
if (num43 != -1 && num48 != -1 && num45 == num && num46 == -1)
{
if (num43 == -2 && num48 == num)
{
if (num50 == 0)
{
rectangle.X = 90;
rectangle.Y = 144;
}
else
{
if (num50 == 1)
{
rectangle.X = 90;
rectangle.Y = 162;
}
else
{
rectangle.X = 90;
rectangle.Y = 180;
}
}
WorldGen.mergeUp = true;
}
else
{
if (num48 == -2 && num43 == num)
{
if (num50 == 0)
{
rectangle.X = 90;
rectangle.Y = 90;
}
else
{
if (num50 == 1)
{
rectangle.X = 90;
rectangle.Y = 108;
}
else
{
rectangle.X = 90;
rectangle.Y = 126;
}
}
WorldGen.mergeDown = true;
}
}
}
else
{
if (num43 == -1 && num48 == num && num45 != -1 && num46 != -1)
{
if (num45 == -2 && num46 == num)
{
if (num50 == 0)
{
rectangle.X = 0;
rectangle.Y = 198;
}
else
{
if (num50 == 1)
{
rectangle.X = 18;
rectangle.Y = 198;
}
else
{
rectangle.X = 36;
rectangle.Y = 198;
}
}
WorldGen.mergeLeft = true;
}
else
{
if (num46 == -2 && num45 == num)
{
if (num50 == 0)
{
rectangle.X = 54;
rectangle.Y = 198;
}
else
{
if (num50 == 1)
{
rectangle.X = 72;
rectangle.Y = 198;
}
else
{
rectangle.X = 90;
rectangle.Y = 198;
}
}
WorldGen.mergeRight = true;
}
}
}
else
{
if (num43 == num && num48 == -1 && num45 != -1 && num46 != -1)
{
if (num45 == -2 && num46 == num)
{
if (num50 == 0)
{
rectangle.X = 0;
rectangle.Y = 216;
}
else
{
if (num50 == 1)
{
rectangle.X = 18;
rectangle.Y = 216;
}
else
{
rectangle.X = 36;
rectangle.Y = 216;
}
}
WorldGen.mergeLeft = true;
}
else
{
if (num46 == -2 && num45 == num)
{
if (num50 == 0)
{
rectangle.X = 54;
rectangle.Y = 216;
}
else
{
if (num50 == 1)
{
rectangle.X = 72;
rectangle.Y = 216;
}
else
{
rectangle.X = 90;
rectangle.Y = 216;
}
}
WorldGen.mergeRight = true;
}
}
}
else
{
if (num43 != -1 && num48 != -1 && num45 == -1 && num46 == -1)
{
if (num43 == -2 && num48 == -2)
{
if (num50 == 0)
{
rectangle.X = 108;
rectangle.Y = 216;
}
else
{
if (num50 == 1)
{
rectangle.X = 108;
rectangle.Y = 234;
}
else
{
rectangle.X = 108;
rectangle.Y = 252;
}
}
WorldGen.mergeUp = true;
WorldGen.mergeDown = true;
}
else
{
if (num43 == -2)
{
if (num50 == 0)
{
rectangle.X = 126;
rectangle.Y = 144;
}
else
{
if (num50 == 1)
{
rectangle.X = 126;
rectangle.Y = 162;
}
else
{
rectangle.X = 126;
rectangle.Y = 180;
}
}
WorldGen.mergeUp = true;
}
else
{
if (num48 == -2)
{
if (num50 == 0)
{
rectangle.X = 126;
rectangle.Y = 90;
}
else
{
if (num50 == 1)
{
rectangle.X = 126;
rectangle.Y = 108;
}
else
{
rectangle.X = 126;
rectangle.Y = 126;
}
}
WorldGen.mergeDown = true;
}
}
}
}
else
{
if (num43 == -1 && num48 == -1 && num45 != -1 && num46 != -1)
{
if (num45 == -2 && num46 == -2)
{
if (num50 == 0)
{
rectangle.X = 162;
rectangle.Y = 198;
}
else
{
if (num50 == 1)
{
rectangle.X = 180;
rectangle.Y = 198;
}
else
{
rectangle.X = 198;
rectangle.Y = 198;
}
}
WorldGen.mergeLeft = true;
WorldGen.mergeRight = true;
}
else
{
if (num45 == -2)
{
if (num50 == 0)
{
rectangle.X = 0;
rectangle.Y = 252;
}
else
{
if (num50 == 1)
{
rectangle.X = 18;
rectangle.Y = 252;
}
else
{
rectangle.X = 36;
rectangle.Y = 252;
}
}
WorldGen.mergeLeft = true;
}
else
{
if (num46 == -2)
{
if (num50 == 0)
{
rectangle.X = 54;
rectangle.Y = 252;
}
else
{
if (num50 == 1)
{
rectangle.X = 72;
rectangle.Y = 252;
}
else
{
rectangle.X = 90;
rectangle.Y = 252;
}
}
WorldGen.mergeRight = true;
}
}
}
}
else
{
if (num43 == -2 && num48 == -1 && num45 == -1 && num46 == -1)
{
if (num50 == 0)
{
rectangle.X = 108;
rectangle.Y = 144;
}
else
{
if (num50 == 1)
{
rectangle.X = 108;
rectangle.Y = 162;
}
else
{
rectangle.X = 108;
rectangle.Y = 180;
}
}
WorldGen.mergeUp = true;
}
else
{
if (num43 == -1 && num48 == -2 && num45 == -1 && num46 == -1)
{
if (num50 == 0)
{
rectangle.X = 108;
rectangle.Y = 90;
}
else
{
if (num50 == 1)
{
rectangle.X = 108;
rectangle.Y = 108;
}
else
{
rectangle.X = 108;
rectangle.Y = 126;
}
}
WorldGen.mergeDown = true;
}
else
{
if (num43 == -1 && num48 == -1 && num45 == -2 && num46 == -1)
{
if (num50 == 0)
{
rectangle.X = 0;
rectangle.Y = 234;
}
else
{
if (num50 == 1)
{
rectangle.X = 18;
rectangle.Y = 234;
}
else
{
rectangle.X = 36;
rectangle.Y = 234;
}
}
WorldGen.mergeLeft = true;
}
else
{
if (num43 == -1 && num48 == -1 && num45 == -1 && num46 == -2)
{
if (num50 == 0)
{
rectangle.X = 54;
rectangle.Y = 234;
}
else
{
if (num50 == 1)
{
rectangle.X = 72;
rectangle.Y = 234;
}
else
{
rectangle.X = 90;
rectangle.Y = 234;
}
}
WorldGen.mergeRight = true;
}
}
}
}
}
}
}
}
}
}
}
}
if (rectangle.X < 0 || rectangle.Y < 0)
{
if (!flag4)
{
if (num43 > -1 && !Main.tileSolid[num43] && num43 != num)
{
num43 = -1;
}
if (num48 > -1 && !Main.tileSolid[num48] && num48 != num)
{
num48 = -1;
}
if (num45 > -1 && !Main.tileSolid[num45] && num45 != num)
{
num45 = -1;
}
if (num46 > -1 && !Main.tileSolid[num46] && num46 != num)
{
num46 = -1;
}
if (num42 > -1 && !Main.tileSolid[num42] && num42 != num)
{
num42 = -1;
}
if (num44 > -1 && !Main.tileSolid[num44] && num44 != num)
{
num44 = -1;
}
if (num47 > -1 && !Main.tileSolid[num47] && num47 != num)
{
num47 = -1;
}
if (num49 > -1 && !Main.tileSolid[num49] && num49 != num)
{
num49 = -1;
}
}
if (num == 2 || num == 23 || num == 60 || num == 70 || num == 109 || num == 199 || Main.tileMoss[num])
{
if (num43 == -2)
{
num43 = num;
}
if (num48 == -2)
{
num48 = num;
}
if (num45 == -2)
{
num45 = num;
}
if (num46 == -2)
{
num46 = num;
}
if (num42 == -2)
{
num42 = num;
}
if (num44 == -2)
{
num44 = num;
}
if (num47 == -2)
{
num47 = num;
}
if (num49 == -2)
{
num49 = num;
}
}
if (num43 == num && num48 == num && (num45 == num & num46 == num))
{
if (num42 != num && num44 != num)
{
if (num50 == 0)
{
rectangle.X = 108;
rectangle.Y = 18;
}
else
{
if (num50 == 1)
{
rectangle.X = 126;
rectangle.Y = 18;
}
else
{
rectangle.X = 144;
rectangle.Y = 18;
}
}
}
else
{
if (num47 != num && num49 != num)
{
if (num50 == 0)
{
rectangle.X = 108;
rectangle.Y = 36;
}
else
{
if (num50 == 1)
{
rectangle.X = 126;
rectangle.Y = 36;
}
else
{
rectangle.X = 144;
rectangle.Y = 36;
}
}
}
else
{
if (num42 != num && num47 != num)
{
if (num50 == 0)
{
rectangle.X = 180;
rectangle.Y = 0;
}
else
{
if (num50 == 1)
{
rectangle.X = 180;
rectangle.Y = 18;
}
else
{
rectangle.X = 180;
rectangle.Y = 36;
}
}
}
else
{
if (num44 != num && num49 != num)
{
if (num50 == 0)
{
rectangle.X = 198;
rectangle.Y = 0;
}
else
{
if (num50 == 1)
{
rectangle.X = 198;
rectangle.Y = 18;
}
else
{
rectangle.X = 198;
rectangle.Y = 36;
}
}
}
else
{
if (num50 == 0)
{
rectangle.X = 18;
rectangle.Y = 18;
}
else
{
if (num50 == 1)
{
rectangle.X = 36;
rectangle.Y = 18;
}
else
{
rectangle.X = 54;
rectangle.Y = 18;
}
}
}
}
}
}
}
else
{
if (num43 != num && num48 == num && (num45 == num & num46 == num))
{
if (num50 == 0)
{
rectangle.X = 18;
rectangle.Y = 0;
}
else
{
if (num50 == 1)
{
rectangle.X = 36;
rectangle.Y = 0;
}
else
{
rectangle.X = 54;
rectangle.Y = 0;
}
}
}
else
{
if (num43 == num && num48 != num && (num45 == num & num46 == num))
{
if (num50 == 0)
{
rectangle.X = 18;
rectangle.Y = 36;
}
else
{
if (num50 == 1)
{
rectangle.X = 36;
rectangle.Y = 36;
}
else
{
rectangle.X = 54;
rectangle.Y = 36;
}
}
}
else
{
if (num43 == num && num48 == num && (num45 != num & num46 == num))
{
if (num50 == 0)
{
rectangle.X = 0;
rectangle.Y = 0;
}
else
{
if (num50 == 1)
{
rectangle.X = 0;
rectangle.Y = 18;
}
else
{
rectangle.X = 0;
rectangle.Y = 36;
}
}
}
else
{
if (num43 == num && num48 == num && (num45 == num & num46 != num))
{
if (num50 == 0)
{
rectangle.X = 72;
rectangle.Y = 0;
}
else
{
if (num50 == 1)
{
rectangle.X = 72;
rectangle.Y = 18;
}
else
{
rectangle.X = 72;
rectangle.Y = 36;
}
}
}
else
{
if (num43 != num && num48 == num && (num45 != num & num46 == num))
{
if (num50 == 0)
{
rectangle.X = 0;
rectangle.Y = 54;
}
else
{
if (num50 == 1)
{
rectangle.X = 36;
rectangle.Y = 54;
}
else
{
rectangle.X = 72;
rectangle.Y = 54;
}
}
}
else
{
if (num43 != num && num48 == num && (num45 == num & num46 != num))
{
if (num50 == 0)
{
rectangle.X = 18;
rectangle.Y = 54;
}
else
{
if (num50 == 1)
{
rectangle.X = 54;
rectangle.Y = 54;
}
else
{
rectangle.X = 90;
rectangle.Y = 54;
}
}
}
else
{
if (num43 == num && num48 != num && (num45 != num & num46 == num))
{
if (num50 == 0)
{
rectangle.X = 0;
rectangle.Y = 72;
}
else
{
if (num50 == 1)
{
rectangle.X = 36;
rectangle.Y = 72;
}
else
{
rectangle.X = 72;
rectangle.Y = 72;
}
}
}
else
{
if (num43 == num && num48 != num && (num45 == num & num46 != num))
{
if (num50 == 0)
{
rectangle.X = 18;
rectangle.Y = 72;
}
else
{
if (num50 == 1)
{
rectangle.X = 54;
rectangle.Y = 72;
}
else
{
rectangle.X = 90;
rectangle.Y = 72;
}
}
}
else
{
if (num43 == num && num48 == num && (num45 != num & num46 != num))
{
if (num50 == 0)
{
rectangle.X = 90;
rectangle.Y = 0;
}
else
{
if (num50 == 1)
{
rectangle.X = 90;
rectangle.Y = 18;
}
else
{
rectangle.X = 90;
rectangle.Y = 36;
}
}
}
else
{
if (num43 != num && num48 != num && (num45 == num & num46 == num))
{
if (num50 == 0)
{
rectangle.X = 108;
rectangle.Y = 72;
}
else
{
if (num50 == 1)
{
rectangle.X = 126;
rectangle.Y = 72;
}
else
{
rectangle.X = 144;
rectangle.Y = 72;
}
}
}
else
{
if (num43 != num && num48 == num && (num45 != num & num46 != num))
{
if (num50 == 0)
{
rectangle.X = 108;
rectangle.Y = 0;
}
else
{
if (num50 == 1)
{
rectangle.X = 126;
rectangle.Y = 0;
}
else
{
rectangle.X = 144;
rectangle.Y = 0;
}
}
}
else
{
if (num43 == num && num48 != num && (num45 != num & num46 != num))
{
if (num50 == 0)
{
rectangle.X = 108;
rectangle.Y = 54;
}
else
{
if (num50 == 1)
{
rectangle.X = 126;
rectangle.Y = 54;
}
else
{
rectangle.X = 144;
rectangle.Y = 54;
}
}
}
else
{
if (num43 != num && num48 != num && (num45 != num & num46 == num))
{
if (num50 == 0)
{
rectangle.X = 162;
rectangle.Y = 0;
}
else
{
if (num50 == 1)
{
rectangle.X = 162;
rectangle.Y = 18;
}
else
{
rectangle.X = 162;
rectangle.Y = 36;
}
}
}
else
{
if (num43 != num && num48 != num && (num45 == num & num46 != num))
{
if (num50 == 0)
{
rectangle.X = 216;
rectangle.Y = 0;
}
else
{
if (num50 == 1)
{
rectangle.X = 216;
rectangle.Y = 18;
}
else
{
rectangle.X = 216;
rectangle.Y = 36;
}
}
}
else
{
if (num43 != num && num48 != num && (num45 != num & num46 != num))
{
if (num50 == 0)
{
rectangle.X = 162;
rectangle.Y = 54;
}
else
{
if (num50 == 1)
{
rectangle.X = 180;
rectangle.Y = 54;
}
else
{
rectangle.X = 198;
rectangle.Y = 54;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
if (rectangle.X <= -1 || rectangle.Y <= -1)
{
if (num50 <= 0)
{
rectangle.X = 18;
rectangle.Y = 18;
}
else
{
if (num50 == 1)
{
rectangle.X = 36;
rectangle.Y = 18;
}
}
if (num50 >= 2)
{
rectangle.X = 54;
rectangle.Y = 18;
}
}
Main.tile[i, j].frameX = (short)rectangle.X;
Main.tile[i, j].frameY = (short)rectangle.Y;
if (num == 52 || num == 62 || num == 115 || num == 205)
{
if (Main.tile[i, j - 1] != null)
{
if (!Main.tile[i, j - 1].active())
{
num43 = -1;
}
else
{
num43 = (int)Main.tile[i, j - 1].type;
}
}
else
{
num43 = num;
}
if ((num == 52 || num == 205) && (num43 == 109 || num43 == 115))
{
Main.tile[i, j].type = 115;
WorldGen.SquareTileFrame(i, j, true);
return;
}
if ((num == 115 || num == 205) && (num43 == 2 || num43 == 52))
{
Main.tile[i, j].type = 52;
WorldGen.SquareTileFrame(i, j, true);
return;
}
if ((num == 52 || num == 115) && (num43 == 199 || num43 == 205))
{
Main.tile[i, j].type = 205;
WorldGen.SquareTileFrame(i, j, true);
return;
}
if (num43 != num)
{
bool flag5 = false;
if (num43 == -1)
{
flag5 = true;
}
if (num == 52 && num43 != 2 && num43 != 192)
{
flag5 = true;
}
if (num == 62 && num43 != 60)
{
flag5 = true;
}
if (num == 115 && num43 != 109)
{
flag5 = true;
}
if (num == 205 && num43 != 199)
{
flag5 = true;
}
if (flag5)
{
WorldGen.KillTile(i, j, false, false, false);
}
}
}
if (!WorldGen.noTileActions && (num == 53 || num == 112 || num == 116 || num == 123 || num == 224 || num == 234))
{
if (Main.netMode == 0)
{
if (Main.tile[i, j + 1] != null && !Main.tile[i, j + 1].active())
{
bool flag6 = true;
if (Main.tile[i, j - 1].active() && Main.tile[i, j - 1].type == 21)
{
flag6 = false;
}
if (flag6)
{
int type = 31;
if (num == 59)
{
type = 39;
}
if (num == 57)
{
type = 40;
}
if (num == 112)
{
type = 56;
}
if (num == 116)
{
type = 67;
}
if (num == 123)
{
type = 71;
}
if (num == 224)
{
type = 179;
}
if (num == 234)
{
type = 241;
}
Main.tile[i, j].active(false);
int num52 = Projectile.NewProjectile((float)(i * 16 + 8), (float)(j * 16 + 8), 0f, 0.41f, type, 10, 0f, Main.myPlayer, 0f, 0f);
Main.projectile[num52].ai[0] = 1f;
WorldGen.SquareTileFrame(i, j, true);
}
}
}
else
{
if (Main.netMode == 2 && Main.tile[i, j + 1] != null && !Main.tile[i, j + 1].active())
{
bool flag7 = true;
if (Main.tile[i, j - 1].active() && Main.tile[i, j - 1].type == 21)
{
flag7 = false;
}
if (flag7)
{
int type2 = 31;
if (num == 59)
{
type2 = 39;
}
if (num == 57)
{
type2 = 40;
}
if (num == 112)
{
type2 = 56;
}
if (num == 116)
{
type2 = 67;
}
if (num == 123)
{
type2 = 71;
}
if (num == 224)
{
type2 = 179;
}
if (num == 234)
{
type2 = 241;
}
Main.tile[i, j].active(false);
int num53 = Projectile.NewProjectile((float)(i * 16 + 8), (float)(j * 16 + 8), 0f, 2.5f, type2, 10, 0f, Main.myPlayer, 0f, 0f);
Main.projectile[num53].velocity.Y = 0.5f;
Projectile expr_8165_cp_0 = Main.projectile[num53];
expr_8165_cp_0.position.Y = expr_8165_cp_0.position.Y + 2f;
Main.projectile[num53].netUpdate = true;
NetMessage.SendTileSquare(-1, i, j, 1);
WorldGen.SquareTileFrame(i, j, true);
}
}
}
}
if (rectangle.X != frameX && rectangle.Y != frameY && frameX >= 0 && frameY >= 0)
{
WorldGen.tileReframeCount++;
if (WorldGen.tileReframeCount < 100)
{
bool flag8 = WorldGen.mergeUp;
bool flag9 = WorldGen.mergeDown;
bool flag10 = WorldGen.mergeLeft;
bool flag11 = WorldGen.mergeRight;
WorldGen.TileFrame(i - 1, j, false, false);
WorldGen.TileFrame(i + 1, j, false, false);
WorldGen.TileFrame(i, j - 1, false, false);
WorldGen.TileFrame(i, j + 1, false, false);
WorldGen.mergeUp = flag8;
WorldGen.mergeDown = flag9;
WorldGen.mergeLeft = flag10;
WorldGen.mergeRight = flag11;
}
WorldGen.tileReframeCount--;
}
}
}
}
}
catch
{
}
if (Main.netMode != 2 && Main.mapEnabled && !WorldGen.noMapUpdate && !WorldGen.gen && i > 0 && j > 0 && Main.map[i, j] != null && Main.map[i, j].light > 0)
{
Main.map[i, j].setTile(i, j, Main.map[i, j].light);
if (Main.map[i, j].changed() && !flag)
{
if (Map.numUpdateTile < Map.maxUpdateTile - 1)
{
Map.updateTileX[Map.numUpdateTile] = (short)i;
Map.updateTileY[Map.numUpdateTile] = (short)j;
Map.numUpdateTile++;
return;
}
Main.mapUnfinished = true;
}
}
}
}
}