Skip to content

Instantly share code, notes, and snippets.

@hakusaro
Created June 30, 2015 17:34
Show Gist options
  • Save hakusaro/519ea806581b5cb636b2 to your computer and use it in GitHub Desktop.
Save hakusaro/519ea806581b5cb636b2 to your computer and use it in GitHub Desktop.
This file has been truncated, but you can view the full file.
using Microsoft.Xna.Framework;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading;
using Terraria.DataStructures;
using Terraria.Enums;
using Terraria.GameContent.Achievements;
using Terraria.GameContent.Biomes;
using Terraria.GameContent.Events;
using Terraria.GameContent.Generation;
using Terraria.GameContent.Tile_Entities;
using Terraria.Graphics.Capture;
using Terraria.ID;
using Terraria.IO;
using Terraria.ObjectData;
using Terraria.Utilities;
using Terraria.World.Generation;
namespace Terraria
{
internal class WorldGen
{
public class Spread
{
public static void Wall(int x, int y, int wallType)
{
if (!WorldGen.InWorld(x, y, 0))
{
return;
}
byte wall = (byte)wallType;
List<Point> list = new List<Point>();
List<Point> list2 = new List<Point>();
HashSet<Point> hashSet = new HashSet<Point>();
list2.Add(new Point(x, y));
while (list2.Count > 0)
{
list.Clear();
list.AddRange(list2);
list2.Clear();
while (list.Count > 0)
{
Point item = list[0];
if (!WorldGen.InWorld(item.X, item.Y, 1))
{
list.Remove(item);
}
else
{
hashSet.Add(item);
list.Remove(item);
Tile tile = Main.tile[item.X, item.Y];
if (WorldGen.SolidTile(item.X, item.Y) || tile.wall != 0)
{
if (tile.active() && tile.wall == 0)
{
tile.wall = wall;
}
}
else
{
tile.wall = wall;
Point item2 = new Point(item.X - 1, item.Y);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
item2 = new Point(item.X + 1, item.Y);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
item2 = new Point(item.X, item.Y - 1);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
item2 = new Point(item.X, item.Y + 1);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
}
}
}
}
}
public static void Wall2(int x, int y, int wallType)
{
if (!WorldGen.InWorld(x, y, 0))
{
return;
}
byte b = (byte)wallType;
int num = 0;
int maxWallOut = WorldGen.maxWallOut2;
List<Point> list = new List<Point>();
List<Point> list2 = new List<Point>();
HashSet<Point> hashSet = new HashSet<Point>();
list2.Add(new Point(x, y));
while (list2.Count > 0)
{
list.Clear();
list.AddRange(list2);
list2.Clear();
while (list.Count > 0)
{
Point item = list[0];
if (!WorldGen.InWorld(item.X, item.Y, 1))
{
list.Remove(item);
}
else
{
hashSet.Add(item);
list.Remove(item);
Tile tile = Main.tile[item.X, item.Y];
if (!WorldGen.SolidTile(item.X, item.Y) && tile.wall != b && tile.wall != 4 && tile.wall != 40 && tile.wall != 3)
{
if (b == 63 && tile.wall == 0)
{
list.Remove(item);
}
else
{
num++;
if (num >= maxWallOut)
{
list.Remove(item);
}
else
{
tile.wall = b;
Point item2 = new Point(item.X - 1, item.Y);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
item2 = new Point(item.X + 1, item.Y);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
item2 = new Point(item.X, item.Y - 1);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
item2 = new Point(item.X, item.Y + 1);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
if (b == 63)
{
item2 = new Point(item.X - 1, item.Y - 1);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
item2 = new Point(item.X + 1, item.Y - 1);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
item2 = new Point(item.X - 1, item.Y + 1);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
item2 = new Point(item.X + 1, item.Y + 1);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
item2 = new Point(item.X - 2, item.Y);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
item2 = new Point(item.X + 2, item.Y);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
}
}
}
}
else if (tile.active() && tile.wall != b && tile.wall != 4 && tile.wall != 40 && tile.wall != 3)
{
tile.wall = b;
}
}
}
}
}
public static void Moss(int x, int y)
{
if (!WorldGen.InWorld(x, y, 0))
{
return;
}
byte mossWall = WorldGen.mossWall;
ushort mossTile = (ushort)WorldGen.mossTile;
List<Point> list = new List<Point>();
List<Point> list2 = new List<Point>();
HashSet<Point> hashSet = new HashSet<Point>();
list2.Add(new Point(x, y));
while (list2.Count > 0)
{
list.Clear();
list.AddRange(list2);
list2.Clear();
while (list.Count > 0)
{
Point item = list[0];
if (!WorldGen.InWorld(item.X, item.Y, 1))
{
list.Remove(item);
}
else
{
hashSet.Add(item);
list.Remove(item);
Tile tile = Main.tile[item.X, item.Y];
if (WorldGen.SolidTile(item.X, item.Y) || tile.wall != 0)
{
if (tile.active())
{
if (tile.wall == 0)
{
tile.wall = mossWall;
}
if (tile.type == 1)
{
tile.type = mossTile;
}
}
}
else
{
tile.wall = mossWall;
Point item2 = new Point(item.X - 1, item.Y);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
item2 = new Point(item.X + 1, item.Y);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
item2 = new Point(item.X, item.Y - 1);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
item2 = new Point(item.X, item.Y + 1);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
}
}
}
}
}
public static void Gem(int x, int y)
{
if (!WorldGen.InWorld(x, y, 0))
{
return;
}
List<Point> list = new List<Point>();
List<Point> list2 = new List<Point>();
HashSet<Point> hashSet = new HashSet<Point>();
list2.Add(new Point(x, y));
while (list2.Count > 0)
{
list.Clear();
list.AddRange(list2);
list2.Clear();
while (list.Count > 0)
{
Point item = list[0];
if (!WorldGen.InWorld(item.X, item.Y, 1))
{
list.Remove(item);
}
else
{
hashSet.Add(item);
list.Remove(item);
Tile tile = Main.tile[item.X, item.Y];
if (WorldGen.SolidTile(item.X, item.Y) || tile.wall != 0)
{
if (tile.active())
{
if (WorldGen.Spread.Gemmable((int)tile.type))
{
tile.type = WorldGen.randGemTile();
}
Tile tile2 = Main.tile[item.X - 1, item.Y];
if (WorldGen.Spread.Gemmable((int)tile2.type))
{
tile2.type = WorldGen.randGemTile();
}
tile2 = Main.tile[item.X + 1, item.Y];
if (WorldGen.Spread.Gemmable((int)tile2.type))
{
tile2.type = WorldGen.randGemTile();
}
tile2 = Main.tile[item.X, item.Y - 1];
if (WorldGen.Spread.Gemmable((int)tile2.type))
{
tile2.type = WorldGen.randGemTile();
}
tile2 = Main.tile[item.X, item.Y + 1];
if (WorldGen.Spread.Gemmable((int)tile2.type))
{
tile2.type = WorldGen.randGemTile();
}
}
}
else
{
tile.wall = (byte)(48 + WorldGen.randGem());
if (!tile.active() && WorldGen.genRand.Next(2) == 0)
{
WorldGen.PlaceTile(item.X, item.Y, 178, true, false, -1, WorldGen.randGem());
}
Point item2 = new Point(item.X - 1, item.Y);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
item2 = new Point(item.X + 1, item.Y);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
item2 = new Point(item.X, item.Y - 1);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
item2 = new Point(item.X, item.Y + 1);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
}
}
}
}
}
public static void Spider(int x, int y)
{
if (!WorldGen.InWorld(x, y, 0))
{
return;
}
byte wall = 62;
List<Point> list = new List<Point>();
List<Point> list2 = new List<Point>();
HashSet<Point> hashSet = new HashSet<Point>();
list2.Add(new Point(x, y));
while (list2.Count > 0)
{
list.Clear();
list.AddRange(list2);
list2.Clear();
while (list.Count > 0)
{
Point item = list[0];
if (!WorldGen.InWorld(item.X, item.Y, 1))
{
list.Remove(item);
}
else
{
hashSet.Add(item);
list.Remove(item);
Tile tile = Main.tile[item.X, item.Y];
if (WorldGen.SolidTile(item.X, item.Y) || tile.wall != 0)
{
if (tile.active() && tile.wall == 0)
{
tile.wall = wall;
}
}
else
{
tile.wall = wall;
WorldGen.SquareWallFrame(item.X, item.Y, true);
if (!tile.active())
{
tile.liquid = 0;
tile.lava(false);
if (WorldGen.SolidTile(item.X, item.Y + 1) && WorldGen.genRand.Next(3) == 0)
{
if (WorldGen.genRand.Next(15) == 0)
{
WorldGen.AddBuriedChest(item.X, item.Y, 939, true, 15);
}
else
{
WorldGen.PlacePot(item.X, item.Y, 28, WorldGen.genRand.Next(19, 21));
}
}
if (!tile.active())
{
if (WorldGen.SolidTile(item.X, item.Y - 1) && WorldGen.genRand.Next(3) == 0)
{
WorldGen.PlaceTight(item.X, item.Y, 165, true);
}
else if (WorldGen.SolidTile(item.X, item.Y + 1))
{
WorldGen.PlaceTile(item.X, item.Y, 187, true, false, -1, 9 + WorldGen.genRand.Next(5));
if (WorldGen.genRand.Next(3) == 0)
{
if (!tile.active())
{
WorldGen.PlaceSmallPile(item.X, item.Y, 34 + WorldGen.genRand.Next(4), 1, 185);
}
if (!tile.active())
{
WorldGen.PlaceSmallPile(item.X, item.Y, 48 + WorldGen.genRand.Next(6), 0, 185);
}
}
}
}
}
Point item2 = new Point(item.X - 1, item.Y);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
item2 = new Point(item.X + 1, item.Y);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
item2 = new Point(item.X, item.Y - 1);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
item2 = new Point(item.X, item.Y + 1);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
}
}
}
}
}
public static void WallDungeon(int x, int y, int wallType)
{
if (!WorldGen.InWorld(x, y, 0))
{
return;
}
byte b = (byte)wallType;
List<Point> list = new List<Point>();
List<Point> list2 = new List<Point>();
HashSet<Point> hashSet = new HashSet<Point>();
list2.Add(new Point(x, y));
while (list2.Count > 0)
{
list.Clear();
list.AddRange(list2);
list2.Clear();
while (list.Count > 0)
{
Point item = list[0];
if (!WorldGen.InWorld(item.X, item.Y, 1))
{
list.Remove(item);
}
else
{
hashSet.Add(item);
list.Remove(item);
Tile tile = Main.tile[item.X, item.Y];
if (!WorldGen.SolidTile(item.X, item.Y) && tile.wall != b && tile.wall > 0)
{
tile.wall = b;
Point item2 = new Point(item.X - 1, item.Y);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
item2 = new Point(item.X + 1, item.Y);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
item2 = new Point(item.X, item.Y - 1);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
item2 = new Point(item.X, item.Y + 1);
if (!hashSet.Contains(item2))
{
list2.Add(item2);
}
}
else if (tile.active())
{
tile.wall = b;
}
}
}
}
}
private static bool Gemmable(int type)
{
return type == 0 || type == 1 || type == 40 || type == 59 || type == 60 || type == 70 || type == 147 || type == 161;
}
}
private static int lAltarX;
private static int lAltarY;
public static int tileReframeCount = 0;
public static bool noMapUpdate = false;
public static double worldSurfaceLow;
public static int tLeft;
public static int tRight;
public static int tTop;
public static int tBottom;
public static int tRooms;
public static int[] mossType = new int[3];
public static int c = 0;
public static int m = 0;
public static int a = 0;
public static int co = 0;
public static int ir = 0;
public static int si = 0;
public static int go = 0;
public static int copperBar = 20;
public static int ironBar = 22;
public static int silverBar = 21;
public static int goldBar = 19;
public static ushort CopperTierOre = 7;
public static ushort IronTierOre = 6;
public static ushort SilverTierOre = 9;
public static ushort GoldTierOre = 8;
public static int treeBG = 0;
public static int corruptBG = 0;
public static int jungleBG = 0;
public static int snowBG = 0;
public static int hallowBG = 0;
public static int crimsonBG = 0;
public static int desertBG = 0;
public static int oceanBG = 0;
public static int oreTier1 = -1;
public static int oreTier2 = -1;
public static int oreTier3 = -1;
public static bool crimson = false;
public static byte mossTile = 179;
public static byte mossWall = 54;
public static bool[] gem = new bool[6];
public static int[] tileCounts = new int[419];
public static int totalEvil = 0;
public static int totalBlood = 0;
public static int totalGood = 0;
public static int totalSolid = 0;
public static int totalEvil2 = 0;
public static int totalBlood2 = 0;
public static int totalGood2 = 0;
public static int totalSolid2 = 0;
public static byte tEvil = 0;
public static byte tBlood = 0;
public static byte tGood = 0;
public static int totalX = 0;
public static int totalD = 0;
public static bool IsGeneratingHardMode = false;
private static Vector2[] heartPos = new Vector2[100];
private static int heartCount = 0;
public static int lavaLine;
public static int waterLine;
public static bool noTileActions = false;
public static bool spawnEye = false;
public static int spawnHardBoss = 0;
public static int numLarva = 0;
public static int[] larvaX = new int[100];
public static int[] larvaY = new int[100];
public static bool gen = false;
public static bool shadowOrbSmashed = false;
public static int shadowOrbCount = 0;
public static int altarCount = 0;
public static bool spawnMeteor = false;
public static bool loadFailed = false;
public static bool loadSuccess = false;
public static bool worldCleared = false;
public static bool worldBackup = false;
public static bool loadBackup = false;
private static int lastMaxTilesX = 0;
private static int lastMaxTilesY = 0;
public static bool saveLock = false;
private static bool mergeUp = false;
private static bool mergeDown = false;
private static bool mergeLeft = false;
private static bool mergeRight = false;
private static bool stopDrops = false;
private static bool mudWall = false;
private static int grassSpread = 0;
public static bool noLiquidCheck = false;
[ThreadStatic]
public static 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[] 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[419];
public static int bestX = 0;
public static int bestY = 0;
public static int hiScore = 0;
public static int dungeonX;
public static int dungeonY;
public static Vector2 lastDungeonHall = Vector2.Zero;
public static int maxDRooms = 100;
public static int numDRooms = 0;
public static int[] dRoomX = new int[WorldGen.maxDRooms];
public static int[] dRoomY = new int[WorldGen.maxDRooms];
public static int[] dRoomSize = new int[WorldGen.maxDRooms];
private static bool[] dRoomTreasure = new bool[WorldGen.maxDRooms];
private static int[] dRoomL = new int[WorldGen.maxDRooms];
private static int[] dRoomR = new int[WorldGen.maxDRooms];
private static int[] dRoomT = new int[WorldGen.maxDRooms];
private static int[] dRoomB = new int[WorldGen.maxDRooms];
private static int numDDoors;
private static int[] DDoorX = new int[300];
private static int[] DDoorY = new int[300];
private static int[] DDoorPos = new int[300];
private static int numDPlats;
private static int[] DPlatX = new int[300];
private static int[] DPlatY = new int[300];
private static int JungleItemCount = 0;
private static int[] JChestX = new int[100];
private static int[] JChestY = new int[100];
private static int numJChests = 0;
public static int dEnteranceX = 0;
public static bool dSurface = false;
private static double dxStrength1;
private static double dyStrength1;
private static double dxStrength2;
private static double dyStrength2;
private static int dMinX;
private static int dMaxX;
private static int dMinY;
private static int dMaxY;
private static int numIslandHouses = 0;
private static int houseCount = 0;
private static bool[] skyLake = new bool[30];
private static int[] fihX = new int[30];
private static int[] fihY = new int[30];
private static int numMCaves = 0;
private static int[] mCaveX = new int[30];
private static int[] mCaveY = new int[30];
private static int JungleX = 0;
private static int hellChest = 0;
private static int[] hellChestItem = new int[5];
private static bool roomTorch;
private static bool roomDoor;
private static bool roomChair;
private static bool roomTable;
private static bool roomOccupied;
private static bool roomEvil;
public static Point16[] statueList;
public static List<int> StatuesWithTraps = new List<int>(new int[]
{
4,
7,
10,
18
});
public static Rectangle UndergroundDesertLocation = Rectangle.Empty;
private static int tileCounterNum = 0;
private static int tileCounterMax = 20;
private static int[] tileCounterX = new int[WorldGen.tileCounterMax];
private static int[] tileCounterY = new int[WorldGen.tileCounterMax];
private static WorldGenerator _generator;
public static void SetupStatueList()
{
if (WorldGen.statueList != null)
{
return;
}
WorldGen.statueList = new Point16[44];
for (int i = 0; i < WorldGen.statueList.Length; i++)
{
WorldGen.statueList[i] = new Point16(105, i);
}
WorldGen.statueList[34] = new Point16(349, 0);
WorldGen.statueList[43] = new Point16(105, 50);
}
public static void PlaceStatueTrap(int x, int y)
{
for (int i = -10; i <= 10; i++)
{
for (int j = -10; j <= 10; j++)
{
Tile testTile = Main.tile[x + i, y + j + 1];
Tile tile = Main.tile[x + i, y + j];
if (!tile.active() && WorldGen.SolidTile2(testTile))
{
WorldGen.PlaceTile(x + i, y + j, 135, true, false, -1, 0);
if (tile.active() && tile.type == 135)
{
WorldUtils.WireLine(new Point(x, y), new Point(x + i, y + j));
return;
}
}
}
}
}
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, 0, 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, 0, 0);
return;
}
Main.npc[n].homeless = true;
}
public static bool NextNPC()
{
if (WorldGen.CheckConditions(WorldGen.spawnNPC))
{
bool flag = false;
for (int i = 0; i < 200; i++)
{
if (Main.npc[i].type == WorldGen.spawnNPC)
{
flag = true;
}
}
if (flag)
{
return true;
}
}
for (int j = 0; j < 540; j++)
{
if (Main.nextNPC[j] && WorldGen.CheckConditions(j))
{
bool flag2 = false;
for (int k = 0; k < 200; k++)
{
if (Main.npc[k].type == j)
{
flag2 = true;
}
}
if (!flag2)
{
WorldGen.spawnNPC = j;
return true;
}
Main.nextNPC[j] = false;
}
}
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 UnspawnTravelNPC()
{
int num = -1;
for (int i = 0; i < 200; i++)
{
if (Main.npc[i].active && Main.npc[i].type == 368)
{
num = i;
break;
}
}
if (num < 0)
{
return;
}
int num2 = (int)(Main.npc[num].Center.X / 16f);
int num3 = (int)(Main.npc[num].Center.Y / 16f);
bool 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)
{
string str = Main.npc[num].name;
if (Main.npc[num].displayName != "")
{
if (Lang.lang <= 1)
{
str = Main.npc[num].displayName + " " + Lang.the + Main.npc[num].name;
}
else
{
str = Main.npc[num].displayName;
}
}
if (Main.netMode == 0)
{
Main.NewText(str + " " + Lang.misc[35], 50, 125, 255, false);
}
else if (Main.netMode == 2)
{
NetMessage.SendData(25, -1, -1, str + " " + Lang.misc[35], 255, 50f, 125f, 255f, 0, 0, 0);
}
Main.npc[num].active = false;
Main.npc[num].netSkip = -1;
Main.npc[num].life = 0;
NetMessage.SendData(23, -1, -1, "", num, 0f, 0f, 0f, 0, 0, 0);
}
}
public static void SpawnTravelNPC()
{
if (Main.eclipse || !Main.dayTime)
{
return;
}
if (Main.invasionType > 0 && Main.invasionDelay == 0 && Main.invasionSize > 0)
{
return;
}
for (int i = 0; i < 200; i++)
{
if (Main.npc[i].active && Main.npc[i].type == 368)
{
return;
}
}
Chest.SetupTravelShop();
NetMessage.SendTravelShop();
int[] array = new int[200];
int num = 0;
for (int j = 0; j < 200; j++)
{
if (Main.npc[j].active && Main.npc[j].townNPC && Main.npc[j].type != 37 && !Main.npc[j].homeless)
{
array[num] = j;
num++;
}
}
if (num == 0)
{
return;
}
int num2 = array[Main.rand.Next(num)];
WorldGen.bestX = Main.npc[num2].homeTileX;
WorldGen.bestY = Main.npc[num2].homeTileY;
int minValue = WorldGen.bestX;
int num3 = WorldGen.bestX;
int num4 = WorldGen.bestY;
int num5 = WorldGen.bestX;
while (num5 > WorldGen.bestX - 10 && (WorldGen.SolidTile(num5, num4) || Main.tileSolidTop[(int)Main.tile[num5, num4].type]) && (!Main.tile[num5, num4 - 1].active() || !Main.tileSolid[(int)Main.tile[num5, num4 - 1].type] || Main.tileSolidTop[(int)Main.tile[num5, num4 - 1].type]) && (!Main.tile[num5, num4 - 2].active() || !Main.tileSolid[(int)Main.tile[num5, num4 - 2].type] || Main.tileSolidTop[(int)Main.tile[num5, num4 - 2].type]) && (!Main.tile[num5, num4 - 3].active() || !Main.tileSolid[(int)Main.tile[num5, num4 - 3].type] || Main.tileSolidTop[(int)Main.tile[num5, num4 - 3].type]))
{
minValue = num5;
num5--;
}
int num6 = WorldGen.bestX;
while (num6 < WorldGen.bestX + 10 && (WorldGen.SolidTile(num6, num4) || Main.tileSolidTop[(int)Main.tile[num6, num4].type]) && (!Main.tile[num6, num4 - 1].active() || !Main.tileSolid[(int)Main.tile[num6, num4 - 1].type] || Main.tileSolidTop[(int)Main.tile[num6, num4 - 1].type]) && (!Main.tile[num6, num4 - 2].active() || !Main.tileSolid[(int)Main.tile[num6, num4 - 2].type] || Main.tileSolidTop[(int)Main.tile[num6, num4 - 2].type]) && (!Main.tile[num6, num4 - 3].active() || !Main.tileSolid[(int)Main.tile[num6, num4 - 3].type] || Main.tileSolidTop[(int)Main.tile[num6, num4 - 3].type]))
{
num3 = num6;
num6++;
}
for (int k = 0; k < 30; k++)
{
int num7 = Main.rand.Next(minValue, num3 + 1);
if (k < 20)
{
if (num7 < WorldGen.bestX - 1 || num7 > WorldGen.bestX + 1)
{
WorldGen.bestX = num7;
break;
}
}
else if (num7 != WorldGen.bestX)
{
WorldGen.bestX = num7;
break;
}
}
int num8 = WorldGen.bestX;
int num9 = WorldGen.bestY;
bool flag = false;
if (!flag && (double)num9 <= Main.worldSurface)
{
for (int l = 20; l < 500; l++)
{
for (int m = 0; m < 2; m++)
{
if (m == 0)
{
num8 = WorldGen.bestX + l * 2;
}
else
{
num8 = WorldGen.bestX - l * 2;
}
if (num8 > 10 && num8 < Main.maxTilesX - 10)
{
int num10 = WorldGen.bestY - l;
double num11 = (double)(WorldGen.bestY + l);
if (num10 < 10)
{
num10 = 10;
}
if (num11 > Main.worldSurface)
{
num11 = Main.worldSurface;
}
int num12 = num10;
while ((double)num12 < num11)
{
num9 = num12;
if (Main.tile[num8, num9].nactive() && Main.tileSolid[(int)Main.tile[num8, num9].type])
{
if (Main.tile[num8, num9 - 3].liquid == 0 && Main.tile[num8, num9 - 2].liquid == 0 && Main.tile[num8, num9 - 1].liquid == 0 && !Collision.SolidTiles(num8 - 1, num8 + 1, num9 - 3, num9 - 1))
{
flag = true;
Rectangle value = new Rectangle(num8 * 16 + 8 - NPC.sWidth / 2 - NPC.safeRangeX, num9 * 16 + 8 - NPC.sHeight / 2 - NPC.safeRangeY, NPC.sWidth + NPC.safeRangeX * 2, NPC.sHeight + NPC.safeRangeY * 2);
for (int n = 0; n < 255; n++)
{
if (Main.player[n].active)
{
Rectangle rectangle = new Rectangle((int)Main.player[n].position.X, (int)Main.player[n].position.Y, Main.player[n].width, Main.player[n].height);
if (rectangle.Intersects(value))
{
flag = false;
break;
}
}
}
break;
}
break;
}
else
{
num12++;
}
}
}
if (flag)
{
break;
}
}
if (flag)
{
break;
}
}
}
int num13 = NPC.NewNPC(num8 * 16, num9 * 16, 368, 1, 0f, 0f, 0f, 0f, 255);
Main.npc[num13].homeTileX = WorldGen.bestX;
Main.npc[num13].homeTileY = WorldGen.bestY;
Main.npc[num13].homeless = true;
if (num8 < WorldGen.bestX)
{
Main.npc[num13].direction = 1;
}
else if (num8 > WorldGen.bestX)
{
Main.npc[num13].direction = -1;
}
Main.npc[num13].netUpdate = true;
string str = Main.npc[num13].name;
if (Main.npc[num13].displayName != "")
{
if (Lang.lang <= 1)
{
str = Main.npc[num13].displayName + " " + Lang.the + Main.npc[num13].name;
}
else
{
str = Main.npc[num13].displayName;
}
}
if (Main.netMode == 0)
{
Main.NewText(str + " " + Lang.misc[18], 50, 125, 255, false);
return;
}
if (Main.netMode == 2)
{
NetMessage.SendData(25, -1, -1, str + " " + Lang.misc[18], 255, 50f, 125f, 255f, 0, 0, 0);
}
}
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, 0f, 0f, 0f, 0f, 255);
Main.nextNPC[WorldGen.spawnNPC] = false;
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.npc[num7].displayName != "")
{
if (Lang.lang <= 1)
{
str = Main.npc[num7].displayName + " " + Lang.the + Main.npc[num7].name;
}
else
{
str = Main.npc[num7].displayName;
}
}
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, 0, 0);
}
AchievementsHelper.NotifyProgressionEvent(8);
if (Main.npc[num7].type == 160)
{
AchievementsHelper.NotifyProgressionEvent(18);
}
bool[] array = new bool[540];
for (int n = 0; n < 200; n++)
{
if (Main.npc[n].active && Main.npc[n].type >= 0 && Main.npc[n].type < 540)
{
array[Main.npc[n].type] = true;
}
}
if (array[38] && array[17] && array[107] && array[19] && array[22] && array[124] && array[228] && array[178] && array[18] && array[229] && array[209] && array[54] && array[108] && array[160] && array[20] && array[369] && array[207] && array[227] && array[208] && array[441] && array[353])
{
AchievementsHelper.NotifyProgressionEvent(17);
}
}
else
{
Main.nextNPC[WorldGen.spawnNPC] = false;
WorldGen.spawnNPC = 0;
Main.npc[num].homeTileX = WorldGen.bestX;
Main.npc[num].homeTileY = WorldGen.bestY;
Main.npc[num].homeless = false;
AchievementsHelper.NotifyProgressionEvent(8);
}
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.houseTile[354] || WorldGen.houseTile[355])
{
WorldGen.roomTable = true;
}
if (WorldGen.houseTile[4] || WorldGen.houseTile[33] || WorldGen.houseTile[34] || WorldGen.houseTile[35] || WorldGen.houseTile[42] || WorldGen.houseTile[49] || WorldGen.houseTile[93] || WorldGen.houseTile[95] || WorldGen.houseTile[98] || WorldGen.houseTile[100] || WorldGen.houseTile[149] || WorldGen.houseTile[173] || WorldGen.houseTile[174] || WorldGen.houseTile[270] || WorldGen.houseTile[271] || WorldGen.houseTile[316] || WorldGen.houseTile[317] || WorldGen.houseTile[318] || WorldGen.houseTile[372])
{
WorldGen.roomTorch = true;
}
if (WorldGen.houseTile[10] || WorldGen.houseTile[11] || WorldGen.houseTile[19] || WorldGen.houseTile[387] || WorldGen.houseTile[386] || WorldGen.houseTile[388] || WorldGen.houseTile[389])
{
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;
AchievementsHelper.NotifyProgressionEvent(8);
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)
{
if (num8 > 0)
{
num8 -= 15;
if (num8 < 0)
{
num8 = 0;
}
}
}
else if (Main.tile[num9, num10].type == 21)
{
if (num8 > 0)
{
num8 -= 30;
if (num8 < 1)
{
num8 = 1;
}
}
}
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 < 419; 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 (Main.tile[x, y].type == 389)
{
return;
}
if (Main.tile[x, y].type == 386 && ((Main.tile[x, y].frameX < 36 && Main.tile[x, y].frameY == 18) || (Main.tile[x, y].frameX >= 36 && Main.tile[x, y].frameY == 0)))
{
return;
}
}
if (x < WorldGen.roomX1)
{
WorldGen.roomX1 = x;
}
if (x > WorldGen.roomX2)
{
WorldGen.roomX2 = x;
}
if (y < WorldGen.roomY1)
{
WorldGen.roomY1 = y;
}
if (y > WorldGen.roomY2)
{
WorldGen.roomY2 = y;
}
bool 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] || TileID.Sets.HousingWalls[(int)Main.tile[x + j, y].type]))
{
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] || TileID.Sets.HousingWalls[(int)Main.tile[x, y + j].type]))
{
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;
if (Main.netMode == 1)
{
return;
}
for (int i = 0; i < 255; i++)
{
if (Main.player[i].active)
{
flag = false;
break;
}
}
int num = 0;
float num2 = (float)(Main.maxTilesX / 4200);
int num3 = (int)(400f * num2);
for (int j = 5; j < Main.maxTilesX - 5; j++)
{
int num4 = 5;
while ((double)num4 < Main.worldSurface)
{
if (Main.tile[j, num4].active() && Main.tile[j, num4].type == 37)
{
num++;
if (num > num3)
{
return;
}
}
num4++;
}
}
float num5 = 600f;
while (!flag)
{
float num6 = (float)Main.maxTilesX * 0.08f;
int num7 = Main.rand.Next(150, Main.maxTilesX - 150);
while ((float)num7 > (float)Main.spawnTileX - num6 && (float)num7 < (float)Main.spawnTileX + num6)
{
num7 = Main.rand.Next(150, Main.maxTilesX - 150);
}
int k = (int)(Main.worldSurface * 0.3);
while (k < Main.maxTilesY)
{
if (Main.tile[num7, k].active() && Main.tileSolid[(int)Main.tile[num7, k].type])
{
int num8 = 0;
int num9 = 15;
for (int l = num7 - num9; l < num7 + num9; l++)
{
for (int m = k - num9; m < k + num9; m++)
{
if (WorldGen.SolidTile(l, m))
{
num8++;
if (Main.tile[l, m].type == 189 || Main.tile[l, m].type == 202)
{
num8 -= 100;
}
}
else if (Main.tile[l, m].liquid > 0)
{
num8--;
}
}
}
if ((float)num8 < num5)
{
num5 -= 0.5f;
break;
}
flag = WorldGen.meteor(num7, k);
if (flag)
{
break;
}
break;
}
else
{
k++;
}
}
if (num5 < 100f)
{
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 = 35;
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 = WorldGen.genRand.Next(17, 23);
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)
{
float num4 = (float)Math.Abs(i - num2);
float num5 = (float)Math.Abs(j - num3);
float num6 = (float)Math.Sqrt((double)(num4 * num4 + num5 * num5));
if ((double)num6 < (double)num * 0.9 + (double)Main.rand.Next(-4, 5))
{
if (!Main.tileSolid[(int)Main.tile[num2, num3].type])
{
Main.tile[num2, num3].active(false);
}
Main.tile[num2, num3].type = 37;
}
}
}
}
num = WorldGen.genRand.Next(8, 14);
for (int num7 = i - num; num7 < i + num; num7++)
{
for (int num8 = j - num; num8 < j + num; num8++)
{
if (num8 > j + Main.rand.Next(-2, 3) - 4)
{
float num9 = (float)Math.Abs(i - num7);
float num10 = (float)Math.Abs(j - num8);
float num11 = (float)Math.Sqrt((double)(num9 * num9 + num10 * num10));
if ((double)num11 < (double)num * 0.8 + (double)Main.rand.Next(-3, 4))
{
Main.tile[num7, num8].active(false);
}
}
}
}
num = WorldGen.genRand.Next(25, 35);
for (int num12 = i - num; num12 < i + num; num12++)
{
for (int num13 = j - num; num13 < j + num; num13++)
{
float num14 = (float)Math.Abs(i - num12);
float num15 = (float)Math.Abs(j - num13);
float num16 = (float)Math.Sqrt((double)(num14 * num14 + num15 * num15));
if ((double)num16 < (double)num * 0.7)
{
if (Main.tile[num12, num13].type == 5 || Main.tile[num12, num13].type == 32 || Main.tile[num12, num13].type == 352)
{
WorldGen.KillTile(num12, num13, false, false, false);
}
Main.tile[num12, num13].liquid = 0;
}
if (Main.tile[num12, num13].type == 37)
{
if (!WorldGen.SolidTile(num12 - 1, num13) && !WorldGen.SolidTile(num12 + 1, num13) && !WorldGen.SolidTile(num12, num13 - 1) && !WorldGen.SolidTile(num12, num13 + 1))
{
Main.tile[num12, num13].active(false);
}
else if ((Main.tile[num12, num13].halfBrick() || Main.tile[num12 - 1, num13].topSlope()) && !WorldGen.SolidTile(num12, num13 + 1))
{
Main.tile[num12, num13].active(false);
}
}
WorldGen.SquareTileFrame(num12, num13, true);
WorldGen.SquareWallFrame(num12, num13, true);
}
}
num = WorldGen.genRand.Next(23, 32);
for (int num17 = i - num; num17 < i + num; num17++)
{
for (int num18 = j - num; num18 < j + num; num18++)
{
if (num18 > j + WorldGen.genRand.Next(-3, 4) - 3 && Main.tile[num17, num18].active() && Main.rand.Next(10) == 0)
{
float num19 = (float)Math.Abs(i - num17);
float num20 = (float)Math.Abs(j - num18);
float num21 = (float)Math.Sqrt((double)(num19 * num19 + num20 * num20));
if ((double)num21 < (double)num * 0.8)
{
if (Main.tile[num17, num18].type == 5 || Main.tile[num17, num18].type == 32 || Main.tile[num17, num18].type == 352)
{
WorldGen.KillTile(num17, num18, false, false, false);
}
Main.tile[num17, num18].type = 37;
WorldGen.SquareTileFrame(num17, num18, true);
}
}
}
}
num = WorldGen.genRand.Next(30, 38);
for (int num22 = i - num; num22 < i + num; num22++)
{
for (int num23 = j - num; num23 < j + num; num23++)
{
if (num23 > j + WorldGen.genRand.Next(-2, 3) && Main.tile[num22, num23].active() && Main.rand.Next(20) == 0)
{
float num24 = (float)Math.Abs(i - num22);
float num25 = (float)Math.Abs(j - num23);
float num26 = (float)Math.Sqrt((double)(num24 * num24 + num25 * num25));
if ((double)num26 < (double)num * 0.85)
{
if (Main.tile[num22, num23].type == 5 || Main.tile[num22, num23].type == 32 || Main.tile[num22, num23].type == 352)
{
WorldGen.KillTile(num22, num23, false, false, false);
}
Main.tile[num22, num23].type = 37;
WorldGen.SquareTileFrame(num22, num23, 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, 0, 0);
}
if (Main.netMode != 1)
{
NetMessage.SendTileSquare(-1, i, j, 40);
}
return true;
}
public static void setWorldSize()
{
Main.bottomWorld = (float)(Main.maxTilesY * 16);
Main.rightWorld = (float)(Main.maxTilesX * 16);
Main.maxSectionsX = Main.maxTilesX / 200;
Main.maxSectionsY = Main.maxTilesY / 150;
}
public static void worldGenCallBack(object threadContext)
{
Main.PlaySound(10, -1, -1, 1);
WorldGen.clearWorld();
WorldGen.generateWorld(-1, threadContext as GenerationProgress);
WorldFile.saveWorld(Main.ActiveWorldFileData.IsCloudSave, true);
if (Main.menuMode == 10 || Main.menuMode == 888)
{
Main.menuMode = 6;
}
Main.PlaySound(10, -1, -1, 1);
}
public static void CreateNewWorld(GenerationProgress progress = null)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.worldGenCallBack), progress);
}
public static void SaveAndQuitCallBack(object threadContext)
{
try
{
Main.PlaySound(34, -1, -1, 0);
Main.PlaySound(35, -1, -1, 0);
}
catch
{
}
if (Main.netMode == 0)
{
WorldFile.CacheSaveTime();
}
Main.invasionProgress = 0;
Main.invasionProgressDisplayLeft = 0;
Main.invasionProgressAlpha = 0f;
Main.menuMode = 10;
Main.gameMenu = true;
CaptureInterface.ResetFocus();
Main.ActivePlayerFileData.StopPlayTimer();
Player.SavePlayer(Main.ActivePlayerFileData, false);
if (Main.netMode == 0)
{
WorldFile.saveWorld();
Main.PlaySound(10, -1, -1, 1);
}
else
{
Netplay.disconnect = true;
Main.netMode = 0;
}
Main.fastForwardTime = false;
Main.UpdateSundial();
Main.menuMode = 0;
if (threadContext != null)
{
((Action)threadContext)();
}
}
public static void SaveAndQuit(Action callback = null)
{
Main.PlaySound(11, -1, -1, 1);
ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.SaveAndQuitCallBack), callback);
}
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;
WorldFile.loadWorld(Main.ActiveWorldFileData.IsCloudSave);
if (WorldGen.loadFailed || !WorldGen.loadSuccess)
{
WorldFile.loadWorld(Main.ActiveWorldFileData.IsCloudSave);
if (WorldGen.loadFailed || !WorldGen.loadSuccess)
{
bool isCloudSave = Main.ActiveWorldFileData.IsCloudSave;
if (FileUtilities.Exists(Main.worldPathName + ".bak", isCloudSave))
{
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;
}
FileUtilities.Copy(Main.worldPathName, Main.worldPathName + ".bad", isCloudSave, true);
FileUtilities.Copy(Main.worldPathName + ".bak", Main.worldPathName, isCloudSave, true);
FileUtilities.Delete(Main.worldPathName + ".bak", isCloudSave);
WorldFile.loadWorld(Main.ActiveWorldFileData.IsCloudSave);
if (WorldGen.loadFailed || !WorldGen.loadSuccess)
{
WorldFile.loadWorld(Main.ActiveWorldFileData.IsCloudSave);
if (WorldGen.loadFailed || !WorldGen.loadSuccess)
{
FileUtilities.Copy(Main.worldPathName, Main.worldPathName + ".bak", isCloudSave, true);
FileUtilities.Copy(Main.worldPathName + ".bad", Main.worldPathName, isCloudSave, true);
FileUtilities.Delete(Main.worldPathName + ".bad", isCloudSave);
Console.WriteLine("Load failed!");
return;
}
}
}
}
}
if (Main.mapEnabled)
{
Main.Map.Load();
}
if (Main.netMode != 2)
{
Main.sectionManager.SetAllFramesLoaded();
}
while (Main.loadMapLock)
{
float num = (float)Main.loadMapLastX / (float)Main.maxTilesX;
Main.statusText = string.Concat(new object[]
{
Lang.gen[68],
" ",
(int)(num * 100f + 1f),
"%"
});
Thread.Sleep(0);
if (!Main.mapEnabled)
{
break;
}
}
if (Main.gameMenu)
{
Main.gameMenu = false;
}
if (Main.netMode == 0 && Main.anglerWhoFinishedToday.Contains(Main.player[Main.myPlayer].name))
{
Main.anglerQuestFinished = true;
}
Main.player[Main.myPlayer].Spawn();
Main.player[Main.myPlayer].Update(Main.myPlayer);
Main.ActivePlayerFileData.StartPlayTimer();
Player.EnterWorld(Main.player[Main.myPlayer]);
Main.dayTime = WorldFile.tempDayTime;
Main.time = WorldFile.tempTime;
Main.moonPhase = WorldFile.tempMoonPhase;
Main.bloodMoon = WorldFile.tempBloodMoon;
Main.raining = WorldFile.tempRaining;
Main.rainTime = WorldFile.tempRainTime;
Main.maxRaining = WorldFile.tempMaxRain;
Main.cloudAlpha = WorldFile.tempMaxRain;
CultistRitual.delay = WorldFile.tempCultistDelay;
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)
{
WorldFile.saveWorld();
}
public static void saveAndPlay()
{
ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.saveAndPlayCallBack), 1);
}
public static void saveToonWhilePlayingCallBack(object threadContext)
{
Player.SavePlayer(Main.ActivePlayerFileData, false);
}
public static void saveToonWhilePlaying()
{
ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.saveToonWhilePlayingCallBack), 1);
}
public static void serverLoadWorldCallBack(object threadContext)
{
Main.rand = new Random((int)DateTime.Now.Ticks);
WorldFile.loadWorld(Main.ActiveWorldFileData.IsCloudSave);
if (WorldGen.loadFailed || !WorldGen.loadSuccess)
{
WorldFile.loadWorld(Main.ActiveWorldFileData.IsCloudSave);
if (WorldGen.loadFailed || !WorldGen.loadSuccess)
{
bool isCloudSave = Main.ActiveWorldFileData.IsCloudSave;
if (FileUtilities.Exists(Main.worldPathName + ".bak", isCloudSave))
{
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;
}
FileUtilities.Copy(Main.worldPathName + ".bak", Main.worldPathName, isCloudSave, true);
FileUtilities.Delete(Main.worldPathName + ".bak", isCloudSave);
WorldFile.loadWorld(Main.ActiveWorldFileData.IsCloudSave);
if (WorldGen.loadFailed || !WorldGen.loadSuccess)
{
WorldFile.loadWorld(Main.ActiveWorldFileData.IsCloudSave);
if (WorldGen.loadFailed || !WorldGen.loadSuccess)
{
Console.WriteLine("Load failed!");
return;
}
}
}
}
}
Main.PlaySound(10, -1, -1, 1);
Netplay.StartServer();
Main.dayTime = WorldFile.tempDayTime;
Main.time = WorldFile.tempTime;
Main.raining = WorldFile.tempRaining;
Main.rainTime = WorldFile.tempRainTime;
Main.maxRaining = WorldFile.tempMaxRain;
Main.cloudAlpha = WorldFile.tempMaxRain;
Main.moonPhase = WorldFile.tempMoonPhase;
Main.bloodMoon = WorldFile.tempBloodMoon;
Main.eclipse = WorldFile.tempEclipse;
CultistRitual.delay = WorldFile.tempCultistDelay;
}
public static void serverLoadWorld()
{
ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.serverLoadWorldCallBack), 1);
}
public static void clearWorld()
{
CombatText.clearAll();
NPC.ResetKillCount();
Main.checkXMas();
Main.checkHalloween();
if (Main.mapReady)
{
for (int i = 0; i < WorldGen.lastMaxTilesX; i++)
{
float arg_28_0 = (float)i / (float)WorldGen.lastMaxTilesX;
Main.statusText = Lang.gen[65];
}
Main.Map.Clear();
}
NPC.MoonLordCountdown = 0;
Main.pumpkinMoon = false;
Main.clearMap = true;
Main.mapTime = 0;
Main.updateMap = false;
Main.mapReady = false;
Main.refreshMap = false;
Main.eclipse = false;
Main.slimeRain = false;
Main.slimeRainTime = 0.0;
Main.sundialCooldown = 0;
Main.fastForwardTime = false;
Main.UpdateSundial();
NPC.waveKills = 0f;
WorldGen.spawnHardBoss = 0;
WorldGen.totalSolid2 = 0;
WorldGen.totalGood2 = 0;
WorldGen.totalEvil2 = 0;
WorldGen.totalBlood2 = 0;
WorldGen.totalSolid = 0;
WorldGen.totalGood = 0;
WorldGen.totalEvil = 0;
WorldGen.totalBlood = 0;
WorldFile.ResetTemps();
Main.maxRaining = 0f;
WorldGen.totalX = 0;
WorldGen.totalD = 0;
WorldGen.tEvil = 0;
WorldGen.tBlood = 0;
WorldGen.tGood = 0;
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.downedSlimeKing = false;
NPC.downedMechBossAny = false;
NPC.downedMechBoss1 = false;
NPC.downedMechBoss2 = false;
NPC.downedMechBoss3 = false;
NPC.downedFishron = false;
NPC.downedMartians = false;
NPC.downedAncientCultist = false;
NPC.downedMoonlord = false;
NPC.downedHalloweenKing = false;
NPC.downedHalloweenTree = false;
NPC.downedChristmasIceQueen = false;
NPC.downedChristmasSantank = false;
NPC.downedChristmasTree = false;
NPC.downedTowerSolar = (NPC.downedTowerVortex = (NPC.downedTowerNebula = (NPC.downedTowerStardust = (NPC.LunarApocalypseIsUp = false))));
NPC.TowerActiveSolar = (NPC.TowerActiveVortex = (NPC.TowerActiveNebula = (NPC.TowerActiveStardust = false)));
NPC.downedPlantBoss = false;
NPC.savedStylist = false;
NPC.savedGoblin = false;
NPC.savedWizard = false;
NPC.savedMech = false;
NPC.downedGoblins = false;
NPC.downedClown = false;
NPC.downedFrost = false;
NPC.downedPirates = false;
NPC.savedAngler = false;
NPC.downedMartians = false;
NPC.downedGolemBoss = false;
NPC.savedTaxCollector = 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.invasionSizeStart = 0;
Main.treeX[0] = Main.maxTilesX;
Main.treeX[1] = Main.maxTilesX;
Main.treeX[2] = Main.maxTilesX;
Main.treeStyle[0] = 0;
Main.treeStyle[1] = 0;
Main.treeStyle[2] = 0;
Main.treeStyle[3] = 0;
WorldGen.noLiquidCheck = false;
Liquid.numLiquid = 0;
LiquidBuffer.numLiquidBuffer = 0;
if (Main.netMode == 1 || WorldGen.lastMaxTilesX > Main.maxTilesX || WorldGen.lastMaxTilesY > Main.maxTilesY)
{
for (int j = 0; j < WorldGen.lastMaxTilesX; j++)
{
float num = (float)j / (float)WorldGen.lastMaxTilesX;
Main.statusText = string.Concat(new object[]
{
Lang.gen[46],
" ",
(int)(num * 100f + 1f),
"%"
});
for (int k = 0; k < WorldGen.lastMaxTilesY; k++)
{
Main.tile[j, k] = null;
}
}
}
WorldGen.lastMaxTilesX = Main.maxTilesX;
WorldGen.lastMaxTilesY = Main.maxTilesY;
if (Main.netMode != 2)
{
Main.sectionManager = new WorldSections(Main.maxTilesX / 200, Main.maxTilesY / 150);
}
if (Main.netMode != 1)
{
for (int l = 0; l < Main.maxTilesX; l++)
{
float num2 = (float)l / (float)Main.maxTilesX;
Main.statusText = string.Concat(new object[]
{
Lang.gen[47],
" ",
(int)(num2 * 100f + 1f),
"%"
});
for (int m = 0; m < Main.maxTilesY; m++)
{
if (Main.tile[l, m] == null)
{
Main.tile[l, m] = new Tile();
}
else
{
Main.tile[l, m].ClearEverything();
}
}
}
}
for (int n = 0; n < 6000; n++)
{
Main.dust[n] = new Dust();
}
for (int num3 = 0; num3 < 500; num3++)
{
Main.gore[num3] = new Gore();
}
for (int num4 = 0; num4 < 400; num4++)
{
Main.item[num4] = new Item();
Main.itemLockoutTime[num4] = 0;
}
for (int num5 = 0; num5 < 200; num5++)
{
Main.npc[num5] = new NPC();
}
for (int num6 = 0; num6 < 1000; num6++)
{
Main.projectile[num6] = new Projectile();
}
for (int num7 = 0; num7 < 1000; num7++)
{
Main.chest[num7] = null;
}
for (int num8 = 0; num8 < 1000; num8++)
{
Main.sign[num8] = null;
}
for (int num9 = 0; num9 < Liquid.resLiquid; num9++)
{
Main.liquid[num9] = new Liquid();
}
for (int num10 = 0; num10 < 10000; num10++)
{
Main.liquidBuffer[num10] = new LiquidBuffer();
}
WorldGen.setWorldSize();
WorldGen.worldCleared = true;
}
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] = 97;
Main.snowBG[1] = 96;
Main.snowBG[2] = 95;
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 RandomizeWeather()
{
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 RandomizeMoonState()
{
Main.moonType = WorldGen.genRand.Next(Main.maxMoons);
}
public static void RandomizeBackgrounds()
{
WorldGen.treeBG = WorldGen.genRand.Next(9);
if ((WorldGen.treeBG == 1 || WorldGen.treeBG == 2) && WorldGen.genRand.Next(2) == 0)
{
WorldGen.treeBG = WorldGen.genRand.Next(7);
}
if (WorldGen.treeBG == 0)
{
WorldGen.treeBG = WorldGen.genRand.Next(7);
}
if (WorldGen.treeBG == 3 && WorldGen.genRand.Next(3) == 0)
{
WorldGen.treeBG = 31;
}
if (WorldGen.treeBG == 5 && WorldGen.genRand.Next(2) == 0)
{
WorldGen.treeBG = 51;
}
if (WorldGen.treeBG == 7 && WorldGen.genRand.Next(4) == 0)
{
WorldGen.treeBG = WorldGen.genRand.Next(71, 74);
}
WorldGen.setBG(0, WorldGen.treeBG);
WorldGen.setBG(1, WorldGen.genRand.Next(2));
WorldGen.setBG(2, WorldGen.genRand.Next(2));
WorldGen.snowBG = WorldGen.genRand.Next(6);
if (WorldGen.snowBG == 2 && WorldGen.genRand.Next(2) == 0)
{
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 RandomizeTreeStyle()
{
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;
return;
}
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;
return;
}
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);
}
}
public static void RandomizeCaveBackgrounds()
{
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);
}
private static void ResetGenerator()
{
WorldGen.mudWall = false;
WorldGen.hellChest = 0;
WorldGen.JungleX = 0;
WorldGen.numMCaves = 0;
WorldGen.numIslandHouses = 0;
WorldGen.houseCount = 0;
WorldGen.dEnteranceX = 0;
WorldGen.numDRooms = 0;
WorldGen.numDDoors = 0;
WorldGen.numDPlats = 0;
WorldGen.numJChests = 0;
WorldGen.JungleItemCount = 0;
}
public static bool mayanTrap(int x2, int y2)
{
int 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 && WorldGen.genRand.Next(20) == 0)
{
num = 2;
}
else if (num == -1)
{
num = WorldGen.genRand.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 && WorldGen.genRand.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 && WorldGen.genRand.Next(20) == 0)
{
type = 2;
}
else if (type == -1)
{
type = WorldGen.genRand.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 = WorldGen.genRand.Next(4, 7);
int num12 = x2 + WorldGen.genRand.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 * WorldGen.genRand.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 || Main.tile[x, y].wall == 83 || Main.tile[x, y].wall == 3)
{
WorldGen.numTileCount = WorldGen.maxTileCount;
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 bool InWorld(int x, int y, int fluff = 0)
{
return x >= fluff && x < Main.maxTilesX - fluff && y >= fluff && y < Main.maxTilesY - fluff;
}
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.Spread.Gem(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 ushort randGemTile()
{
if (WorldGen.genRand.Next(20) != 0)
{
return 1;
}
ushort num = (ushort)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 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 tileCountAndDestroy()
{
for (int i = 10; i < Main.maxTilesX - 10; i++)
{
for (int j = 10; j < Main.maxTilesY - 10; j++)
{
if (Main.tile[i, j].active())
{
int num = WorldGen.tileCounter(i, j);
if (num < WorldGen.tileCounterMax)
{
WorldGen.tileCounterKill();
}
}
}
}
}
public static int tileCounter(int x, int y)
{
WorldGen.tileCounterNum = 0;
WorldGen.tileCounterNext(x, y);
return WorldGen.tileCounterNum;
}
public static void tileCounterNext(int x, int y)
{
if (WorldGen.tileCounterNum >= WorldGen.tileCounterMax)
{
return;
}
if (x < 5 || x > Main.maxTilesX - 5 || y < 5 || y > Main.maxTilesY - 5)
{
return;
}
if (Main.tile[x, y].active() && Main.tileSolid[(int)Main.tile[x, y].type] && TileID.Sets.CanBeClearedDuringGeneration[(int)Main.tile[x, y].type])
{
for (int i = 0; i < WorldGen.tileCounterNum; i++)
{
if (WorldGen.tileCounterX[i] == x && WorldGen.tileCounterY[i] == y)
{
return;
}
}
WorldGen.tileCounterX[WorldGen.tileCounterNum] = x;
WorldGen.tileCounterY[WorldGen.tileCounterNum] = y;
WorldGen.tileCounterNum++;
WorldGen.tileCounterNext(x - 1, y);
WorldGen.tileCounterNext(x + 1, y);
WorldGen.tileCounterNext(x, y - 1);
WorldGen.tileCounterNext(x, y + 1);
}
}
public static void tileCounterKill()
{
for (int i = 0; i < WorldGen.tileCounterNum; i++)
{
int num = WorldGen.tileCounterX[i];
int num2 = WorldGen.tileCounterY[i];
Main.tile[num, num2].active(false);
}
}
private static void AddGenerationPass(string name, WorldGenLegacyMethod method)
{
WorldGen._generator.Append(new PassLegacy(name, method));
}
private static void AddGenerationPass(string name, float weight, WorldGenLegacyMethod method)
{
WorldGen._generator.Append(new PassLegacy(name, method, weight));
}
public static bool checkUnderground(int x, int y)
{
try
{
int num = 120;
int num2 = 80;
int num3 = 3;
if ((double)y > Main.worldSurface + (double)num2)
{
bool result = true;
return result;
}
if ((double)y < Main.worldSurface / 2.0)
{
bool result = false;
return result;
}
int num4 = y - num2;
int num5 = x - num / 2;
int num6 = 0;
if (num5 < 0)
{
num5 = 0;
}
if (num5 >= Main.maxTilesX - num)
{
num5 = Main.maxTilesX - num - 1;
}
for (int i = num5; i < num5 + num; i++)
{
for (int j = num4; j < num4 + num3; j++)
{
if (WorldGen.SolidTile(i, j) || Main.tile[x, y].wall > 0)
{
num6++;
}
}
}
if ((double)num6 >= (double)(num * num3) * 0.8)
{
bool result = true;
return result;
}
}
catch
{
}
return false;
}
public static int GetNextJungleChestItem()
{
int result = 211;
switch (WorldGen.JungleItemCount % 4)
{
case 0:
result = 211;
break;
case 1:
result = 212;
break;
case 2:
result = 213;
break;
case 3:
result = 964;
break;
}
if (WorldGen.genRand.Next(50) == 0)
{
result = 753;
}
else if (WorldGen.genRand.Next(30) == 0)
{
result = 2292;
}
else if (WorldGen.genRand.Next(20) == 0)
{
result = 3017;
}
WorldGen.JungleItemCount++;
return result;
}
public static void generateWorld(int seed = -1, GenerationProgress customProgressObject = null)
{
WorldGen._generator = new WorldGenerator();
if (seed > 0)
{
WorldGen.genRand = new Random(seed);
}
else
{
WorldGen.genRand = new Random((int)DateTime.Now.Ticks);
}
MicroBiome.ResetAll();
StructureMap structures = new StructureMap();
double worldSurface = 0.0;
WorldGen.worldSurfaceLow = 0.0;
double worldSurfaceHigh = 0.0;
double rockLayer = 0.0;
double rockLayerLow = 0.0;
double rockLayerHigh = 0.0;
int copper = 7;
int iron = 6;
int silver = 9;
int gold = 8;
int dungeonSide = 0;
ushort jungleHut = (ushort)WorldGen.genRand.Next(5);
int howFar = 0;
int[] PyrX = null;
int[] PyrY = null;
int numPyr = 0;
int[] snowMinX = new int[Main.maxTilesY];
int[] snowMaxX = new int[Main.maxTilesY];
int snowTop = 0;
int snowBottom = 0;
float dub2 = 0f;
int skyLakes = 1;
if (Main.maxTilesX > 8000)
{
skyLakes++;
}
if (Main.maxTilesX > 6000)
{
skyLakes++;
}
for (int i = 0; i < WorldGen.hellChestItem.Length; i++)
{
bool flag = true;
while (flag)
{
flag = false;
WorldGen.hellChestItem[i] = WorldGen.genRand.Next(WorldGen.hellChestItem.Length);
for (int j = 0; j < i; j++)
{
if (WorldGen.hellChestItem[j] == WorldGen.hellChestItem[i])
{
flag = true;
}
}
}
}
WorldGen.AddGenerationPass("Reset", delegate(GenerationProgress progress)
{
WorldGen.noTileActions = true;
progress.Message = "";
WorldGen.SetupStatueList();
WorldGen.RandomizeWeather();
Main.cloudAlpha = 0f;
Main.maxRaining = 0f;
WorldFile.tempMaxRain = 0f;
Main.raining = false;
WorldGen.heartCount = 0;
Main.checkXMas();
Main.checkHalloween();
WorldGen.gen = true;
WorldGen.ResetGenerator();
WorldGen.numLarva = 0;
int num = 86400;
Main.slimeRainTime = (double)(-(double)WorldGen.genRand.Next(num * 2, num * 3));
Main.cloudBGActive = (float)(-(float)WorldGen.genRand.Next(8640, 86400));
WorldGen.CopperTierOre = 7;
WorldGen.IronTierOre = 6;
WorldGen.SilverTierOre = 9;
WorldGen.GoldTierOre = 8;
WorldGen.copperBar = 20;
WorldGen.ironBar = 22;
WorldGen.silverBar = 21;
WorldGen.goldBar = 19;
if (WorldGen.genRand.Next(2) == 0)
{
copper = 166;
WorldGen.copperBar = 703;
WorldGen.CopperTierOre = 166;
}
if (WorldGen.genRand.Next(2) == 0)
{
iron = 167;
WorldGen.ironBar = 704;
WorldGen.IronTierOre = 167;
}
if (WorldGen.genRand.Next(2) == 0)
{
silver = 168;
WorldGen.silverBar = 705;
WorldGen.SilverTierOre = 168;
}
if (WorldGen.genRand.Next(2) == 0)
{
gold = 169;
WorldGen.goldBar = 706;
WorldGen.GoldTierOre = 169;
}
WorldGen.crimson = (WorldGen.genRand.Next(2) == 0);
if (jungleHut == 0)
{
jungleHut = 119;
}
else if (jungleHut == 1)
{
jungleHut = 120;
}
else if (jungleHut == 2)
{
jungleHut = 158;
}
else if (jungleHut == 3)
{
jungleHut = 175;
}
else if (jungleHut == 4)
{
jungleHut = 45;
}
Main.worldID = WorldGen.genRand.Next(2147483647);
WorldGen.RandomizeTreeStyle();
WorldGen.RandomizeCaveBackgrounds();
WorldGen.RandomizeBackgrounds();
WorldGen.RandomizeMoonState();
dungeonSide = ((WorldGen.genRand.Next(2) == 0) ? -1 : 1);
});
WorldGen.AddGenerationPass("Terrain", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[0];
int num = 0;
int num2 = 0;
worldSurface = (double)Main.maxTilesY * 0.3;
worldSurface *= (double)WorldGen.genRand.Next(90, 110) * 0.005;
rockLayer = worldSurface + (double)Main.maxTilesY * 0.2;
rockLayer *= (double)WorldGen.genRand.Next(90, 110) * 0.01;
WorldGen.worldSurfaceLow = worldSurface;
worldSurfaceHigh = worldSurface;
rockLayerLow = rockLayer;
rockLayerHigh = rockLayer;
for (int k = 0; k < Main.maxTilesX; k++)
{
float value = (float)k / (float)Main.maxTilesX;
progress.Set(value);
if (worldSurface < WorldGen.worldSurfaceLow)
{
WorldGen.worldSurfaceLow = worldSurface;
}
if (worldSurface > worldSurfaceHigh)
{
worldSurfaceHigh = worldSurface;
}
if (rockLayer < rockLayerLow)
{
rockLayerLow = rockLayer;
}
if (rockLayer > rockLayerHigh)
{
rockLayerHigh = rockLayer;
}
if (num2 <= 0)
{
num = WorldGen.genRand.Next(0, 5);
num2 = WorldGen.genRand.Next(5, 40);
if (num == 0)
{
num2 *= (int)((double)WorldGen.genRand.Next(5, 30) * 0.2);
}
}
num2--;
if ((double)k > (double)Main.maxTilesX * 0.43 && (double)k < (double)Main.maxTilesX * 0.57 && num >= 3)
{
num = WorldGen.genRand.Next(3);
}
if ((double)k > (double)Main.maxTilesX * 0.47 && (double)k < (double)Main.maxTilesX * 0.53)
{
num = 0;
}
if (num == 0)
{
while (WorldGen.genRand.Next(0, 7) == 0)
{
worldSurface += (double)WorldGen.genRand.Next(-1, 2);
}
}
else if (num == 1)
{
while (WorldGen.genRand.Next(0, 4) == 0)
{
worldSurface -= 1.0;
}
while (WorldGen.genRand.Next(0, 10) == 0)
{
worldSurface += 1.0;
}
}
else if (num == 2)
{
while (WorldGen.genRand.Next(0, 4) == 0)
{
worldSurface += 1.0;
}
while (WorldGen.genRand.Next(0, 10) == 0)
{
worldSurface -= 1.0;
}
}
else if (num == 3)
{
while (WorldGen.genRand.Next(0, 2) == 0)
{
worldSurface -= 1.0;
}
while (WorldGen.genRand.Next(0, 6) == 0)
{
worldSurface += 1.0;
}
}
else if (num == 4)
{
while (WorldGen.genRand.Next(0, 2) == 0)
{
worldSurface += 1.0;
}
while (WorldGen.genRand.Next(0, 5) == 0)
{
worldSurface -= 1.0;
}
}
if (worldSurface < (double)Main.maxTilesY * 0.17)
{
worldSurface = (double)Main.maxTilesY * 0.17;
num2 = 0;
}
else if (worldSurface > (double)Main.maxTilesY * 0.3)
{
worldSurface = (double)Main.maxTilesY * 0.3;
num2 = 0;
}
if ((k < 275 || k > Main.maxTilesX - 275) && worldSurface > (double)Main.maxTilesY * 0.25)
{
worldSurface = (double)Main.maxTilesY * 0.25;
num2 = 1;
}
while (WorldGen.genRand.Next(0, 3) == 0)
{
rockLayer += (double)WorldGen.genRand.Next(-2, 3);
}
if (rockLayer < worldSurface + (double)Main.maxTilesY * 0.05)
{
rockLayer += 1.0;
}
if (rockLayer > worldSurface + (double)Main.maxTilesY * 0.35)
{
rockLayer -= 1.0;
}
int num3 = 0;
while ((double)num3 < worldSurface)
{
Main.tile[k, num3].active(false);
Main.tile[k, num3].frameX = -1;
Main.tile[k, num3].frameY = -1;
num3++;
}
for (int l = (int)worldSurface; l < Main.maxTilesY; l++)
{
if ((double)l < rockLayer)
{
Main.tile[k, l].active(true);
Main.tile[k, l].type = 0;
Main.tile[k, l].frameX = -1;
Main.tile[k, l].frameY = -1;
}
else
{
Main.tile[k, l].active(true);
Main.tile[k, l].type = 1;
Main.tile[k, l].frameX = -1;
Main.tile[k, l].frameY = -1;
}
}
}
Main.worldSurface = worldSurfaceHigh + 25.0;
Main.rockLayer = rockLayerHigh;
double num4 = (double)((int)((Main.rockLayer - Main.worldSurface) / 6.0) * 6);
Main.rockLayer = Main.worldSurface + num4;
WorldGen.waterLine = (int)(Main.rockLayer + (double)Main.maxTilesY) / 2;
WorldGen.waterLine += WorldGen.genRand.Next(-100, 20);
WorldGen.lavaLine = WorldGen.waterLine + WorldGen.genRand.Next(50, 80);
});
WorldGen.AddGenerationPass("Tunnels", delegate(GenerationProgress progress)
{
for (int k = 0; k < (int)((double)Main.maxTilesX * 0.0015); k++)
{
int[] array = new int[10];
int[] array2 = new int[10];
int num = WorldGen.genRand.Next(450, Main.maxTilesX - 450);
int num2 = 0;
for (int l = 0; l < 10; l++)
{
while (!Main.tile[num, num2].active())
{
num2++;
}
array[l] = num;
array2[l] = num2 - WorldGen.genRand.Next(11, 16);
num += 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);
}
}
});
WorldGen.AddGenerationPass("Sand", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[1];
int num = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.0008), (int)((double)Main.maxTilesX * 0.0025));
num += 2;
PyrX = new int[num];
PyrY = new int[num];
for (int k = 0; k < num; k++)
{
int num2 = WorldGen.genRand.Next(Main.maxTilesX);
while ((float)num2 > (float)Main.maxTilesX * 0.4f && (float)num2 < (float)Main.maxTilesX * 0.6f)
{
num2 = WorldGen.genRand.Next(Main.maxTilesX);
}
int num3 = WorldGen.genRand.Next(35, 90);
if (k == 1)
{
float num4 = (float)(Main.maxTilesX / 4200);
num3 += (int)((float)WorldGen.genRand.Next(20, 40) * num4);
}
if (WorldGen.genRand.Next(3) == 0)
{
num3 *= 2;
}
if (k == 1)
{
num3 *= 2;
}
int num5 = num2 - num3;
num3 = WorldGen.genRand.Next(35, 90);
if (WorldGen.genRand.Next(3) == 0)
{
num3 *= 2;
}
if (k == 1)
{
num3 *= 2;
}
int num6 = num2 + num3;
if (num5 < 0)
{
num5 = 0;
}
if (num6 > Main.maxTilesX)
{
num6 = Main.maxTilesX;
}
if (k == 0)
{
num5 = 0;
num6 = WorldGen.genRand.Next(260, 300);
if (dungeonSide == 1)
{
num6 += 40;
}
}
else if (k == 2)
{
num5 = Main.maxTilesX - WorldGen.genRand.Next(260, 300);
num6 = Main.maxTilesX;
if (dungeonSide == -1)
{
num5 -= 40;
}
}
int num7 = WorldGen.genRand.Next(50, 100);
for (int l = num5; l < num6; l++)
{
if (WorldGen.genRand.Next(2) == 0)
{
num7 += WorldGen.genRand.Next(-1, 2);
if (num7 < 50)
{
num7 = 50;
}
if (num7 > 100)
{
num7 = 100;
}
}
int num8 = 0;
while ((double)num8 < Main.worldSurface)
{
if (Main.tile[l, num8].active())
{
if (l == (num5 + num6) / 2 && WorldGen.genRand.Next(6) == 0)
{
PyrX[numPyr] = l;
PyrY[numPyr] = num8;
numPyr++;
}
int num9 = num7;
if (l - num5 < num9)
{
num9 = l - num5;
}
if (num6 - l < num9)
{
num9 = num6 - l;
}
num9 += WorldGen.genRand.Next(5);
for (int m = num8; m < num8 + num9; m++)
{
if (l > num5 + WorldGen.genRand.Next(5) && l < num6 - WorldGen.genRand.Next(5))
{
Main.tile[l, m].type = 53;
}
}
break;
}
num8++;
}
}
}
for (int n = 0; n < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 8E-06); n++)
{
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.AddGenerationPass("Mount Caves", delegate(GenerationProgress progress)
{
WorldGen.numMCaves = 0;
progress.Message = Lang.gen[2];
for (int k = 0; k < (int)((double)Main.maxTilesX * 0.0008); k++)
{
int num = 0;
bool flag2 = false;
bool flag3 = false;
int num2 = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.25), (int)((double)Main.maxTilesX * 0.75));
while (!flag3)
{
flag3 = true;
while (num2 > Main.maxTilesX / 2 - 100 && num2 < Main.maxTilesX / 2 + 100)
{
num2 = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.25), (int)((double)Main.maxTilesX * 0.75));
}
for (int l = 0; l < WorldGen.numMCaves; l++)
{
if (num2 > WorldGen.mCaveX[l] - 50 && num2 < WorldGen.mCaveX[l] + 50)
{
num++;
flag3 = false;
break;
}
}
if (num >= 200)
{
flag2 = true;
break;
}
}
if (!flag2)
{
int num3 = 0;
while ((double)num3 < Main.worldSurface)
{
if (Main.tile[num2, num3].active())
{
for (int m = num2 - 50; m < num2 + 50; m++)
{
for (int n = num3 - 25; n < num3 + 25; n++)
{
if (Main.tile[m, n].active() && (Main.tile[m, n].type == 53 || Main.tile[m, n].type == 151 || Main.tile[m, n].type == 274))
{
flag2 = true;
}
}
}
if (!flag2)
{
WorldGen.Mountinater(num2, num3);
WorldGen.mCaveX[WorldGen.numMCaves] = num2;
WorldGen.mCaveY[WorldGen.numMCaves] = num3;
WorldGen.numMCaves++;
break;
}
}
num3++;
}
}
}
});
WorldGen.AddGenerationPass("Dirt Wall Backgrounds", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[3];
for (int k = 1; k < Main.maxTilesX - 1; k++)
{
byte wall = 2;
float value = (float)k / (float)Main.maxTilesX;
progress.Set(value);
bool flag2 = false;
howFar += WorldGen.genRand.Next(-1, 2);
if (howFar < 0)
{
howFar = 0;
}
if (howFar > 10)
{
howFar = 10;
}
int num = 0;
while ((double)num < Main.worldSurface + 10.0 && (double)num <= Main.worldSurface + (double)howFar)
{
if (Main.tile[k, num].active())
{
if (Main.tile[k, num].type == 147)
{
wall = 40;
}
else
{
wall = 2;
}
}
if (flag2 && Main.tile[k, num].wall != 64)
{
Main.tile[k, num].wall = wall;
}
if (Main.tile[k, num].active() && Main.tile[k - 1, num].active() && Main.tile[k + 1, num].active() && Main.tile[k, num + 1].active() && Main.tile[k - 1, num + 1].active() && Main.tile[k + 1, num + 1].active())
{
flag2 = true;
}
num++;
}
}
});
WorldGen.AddGenerationPass("Rocks In Dirt", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[4];
for (int k = 0; k < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.00015); k++)
{
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 l = 0; l < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.0002); l++)
{
int num = WorldGen.genRand.Next(0, Main.maxTilesX);
int num2 = WorldGen.genRand.Next((int)WorldGen.worldSurfaceLow, (int)worldSurfaceHigh + 1);
if (!Main.tile[num, num2 - 10].active())
{
num2 = WorldGen.genRand.Next((int)WorldGen.worldSurfaceLow, (int)worldSurfaceHigh + 1);
}
WorldGen.TileRunner(num, num2, (double)WorldGen.genRand.Next(4, 10), WorldGen.genRand.Next(5, 30), 1, false, 0f, 0f, false, true);
}
for (int m = 0; m < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.0045); m++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)worldSurfaceHigh, (int)rockLayerHigh + 1), (double)WorldGen.genRand.Next(2, 7), WorldGen.genRand.Next(2, 23), 1, false, 0f, 0f, false, true);
}
});
WorldGen.AddGenerationPass("Dirt In Rocks", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[5];
for (int k = 0; k < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.005); k++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)rockLayerLow, Main.maxTilesY), (double)WorldGen.genRand.Next(2, 6), WorldGen.genRand.Next(2, 40), 0, false, 0f, 0f, false, true);
}
});
WorldGen.AddGenerationPass("Clay", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[6];
for (int k = 0; k < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 2E-05); k++)
{
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 l = 0; l < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 5E-05); l++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)WorldGen.worldSurfaceLow, (int)worldSurfaceHigh + 1), (double)WorldGen.genRand.Next(8, 14), WorldGen.genRand.Next(15, 45), 40, false, 0f, 0f, false, true);
}
for (int m = 0; m < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 2E-05); m++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)worldSurfaceHigh, (int)rockLayerHigh + 1), (double)WorldGen.genRand.Next(8, 15), WorldGen.genRand.Next(5, 50), 40, false, 0f, 0f, false, true);
}
for (int n = 5; n < Main.maxTilesX - 5; n++)
{
int num = 1;
while ((double)num < Main.worldSurface - 1.0)
{
if (Main.tile[n, num].active())
{
for (int num2 = num; num2 < num + 5; num2++)
{
if (Main.tile[n, num2].type == 40)
{
Main.tile[n, num2].type = 0;
}
}
break;
}
num++;
}
}
});
int i2;
WorldGen.AddGenerationPass("Small Holes", delegate(GenerationProgress progress)
{
i2 = 0;
progress.Message = Lang.gen[7];
for (int k = 0; k < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.0015); k++)
{
float value = (float)((double)k / ((double)(Main.maxTilesX * Main.maxTilesY) * 0.0015));
progress.Set(value);
int type = -1;
if (WorldGen.genRand.Next(5) == 0)
{
type = -2;
}
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)worldSurfaceHigh, Main.maxTilesY), (double)WorldGen.genRand.Next(2, 5), WorldGen.genRand.Next(2, 20), type, false, 0f, 0f, false, true);
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)worldSurfaceHigh, Main.maxTilesY), (double)WorldGen.genRand.Next(8, 15), WorldGen.genRand.Next(7, 30), type, false, 0f, 0f, false, true);
}
});
WorldGen.AddGenerationPass("Dirt Layer Caves", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[8];
for (int k = 0; k < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 3E-05); k++)
{
float value = (float)((double)k / ((double)(Main.maxTilesX * Main.maxTilesY) * 3E-05));
progress.Set(value);
if (rockLayerHigh <= (double)Main.maxTilesY)
{
int type = -1;
if (WorldGen.genRand.Next(6) == 0)
{
type = -2;
}
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)WorldGen.worldSurfaceLow, (int)rockLayerHigh + 1), (double)WorldGen.genRand.Next(5, 15), WorldGen.genRand.Next(30, 200), type, false, 0f, 0f, false, true);
}
}
});
WorldGen.AddGenerationPass("Rock Layer Caves", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[9];
for (int k = 0; k < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.00013); k++)
{
float value = (float)((double)k / ((double)(Main.maxTilesX * Main.maxTilesY) * 0.00013));
progress.Set(value);
if (rockLayerHigh <= (double)Main.maxTilesY)
{
int type = -1;
if (WorldGen.genRand.Next(10) == 0)
{
type = -2;
}
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)rockLayerHigh, Main.maxTilesY), (double)WorldGen.genRand.Next(6, 20), WorldGen.genRand.Next(50, 300), type, false, 0f, 0f, false, true);
}
}
});
WorldGen.AddGenerationPass("Surface Caves", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[10];
for (int k = 0; k < (int)((double)Main.maxTilesX * 0.002); k++)
{
i2 = WorldGen.genRand.Next(0, Main.maxTilesX);
while ((double)i2 > (double)Main.maxTilesX * 0.45 && (double)i2 < (double)Main.maxTilesX * 0.55)
{
i2 = WorldGen.genRand.Next(0, Main.maxTilesX);
}
int num = 0;
while ((double)num < worldSurfaceHigh)
{
if (Main.tile[i2, num].active())
{
WorldGen.TileRunner(i2, num, (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;
}
num++;
}
}
for (int l = 0; l < (int)((double)Main.maxTilesX * 0.0007); l++)
{
i2 = WorldGen.genRand.Next(0, Main.maxTilesX);
while ((double)i2 > (double)Main.maxTilesX * 0.43 && (double)i2 < (double)Main.maxTilesX * 0.58)
{
i2 = WorldGen.genRand.Next(0, Main.maxTilesX);
}
int num2 = 0;
while ((double)num2 < worldSurfaceHigh)
{
if (Main.tile[i2, num2].active())
{
WorldGen.TileRunner(i2, num2, (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;
}
num2++;
}
}
for (int m = 0; m < (int)((double)Main.maxTilesX * 0.0003); m++)
{
i2 = WorldGen.genRand.Next(0, Main.maxTilesX);
while ((double)i2 > (double)Main.maxTilesX * 0.4 && (double)i2 < (double)Main.maxTilesX * 0.6)
{
i2 = WorldGen.genRand.Next(0, Main.maxTilesX);
}
int num3 = 0;
while ((double)num3 < worldSurfaceHigh)
{
if (Main.tile[i2, num3].active())
{
WorldGen.TileRunner(i2, num3, (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(i2, num3, (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(i2, num3, (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;
}
num3++;
}
}
for (int n = 0; n < (int)((double)Main.maxTilesX * 0.0004); n++)
{
i2 = WorldGen.genRand.Next(0, Main.maxTilesX);
while ((double)i2 > (double)Main.maxTilesX * 0.4 && (double)i2 < (double)Main.maxTilesX * 0.6)
{
i2 = WorldGen.genRand.Next(0, Main.maxTilesX);
}
int num4 = 0;
while ((double)num4 < worldSurfaceHigh)
{
if (Main.tile[i2, num4].active())
{
WorldGen.TileRunner(i2, num4, (double)WorldGen.genRand.Next(7, 12), WorldGen.genRand.Next(150, 250), -1, false, 0f, 1f, true, true);
break;
}
num4++;
}
}
float num5 = (float)(Main.maxTilesX / 4200);
int num6 = 0;
while ((float)num6 < 5f * num5)
{
try
{
WorldGen.Caverer(WorldGen.genRand.Next(100, Main.maxTilesX - 100), WorldGen.genRand.Next((int)Main.rockLayer, Main.maxTilesY - 400));
}
catch
{
}
num6++;
}
});
WorldGen.AddGenerationPass("Slush Check", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[56];
snowTop = (int)Main.worldSurface;
int num = WorldGen.genRand.Next(Main.maxTilesX);
if (dungeonSide == 1)
{
while ((float)num < (float)Main.maxTilesX * 0.55f || (float)num > (float)Main.maxTilesX * 0.7f)
{
num = WorldGen.genRand.Next(Main.maxTilesX);
}
}
else
{
while ((float)num < (float)Main.maxTilesX * 0.3f || (float)num > (float)Main.maxTilesX * 0.45f)
{
num = WorldGen.genRand.Next(Main.maxTilesX);
}
}
int num2 = WorldGen.genRand.Next(50, 90);
float num3 = (float)(Main.maxTilesX / 4200);
num2 += (int)((float)WorldGen.genRand.Next(20, 40) * num3);
num2 += (int)((float)WorldGen.genRand.Next(20, 40) * num3);
int num4 = num - num2;
num2 = WorldGen.genRand.Next(50, 90);
num2 += (int)((float)WorldGen.genRand.Next(20, 40) * num3);
num2 += (int)((float)WorldGen.genRand.Next(20, 40) * num3);
int num5 = num + num2;
if (num4 < 0)
{
num4 = 0;
}
if (num5 > Main.maxTilesX)
{
num5 = Main.maxTilesX;
}
int num6 = 10;
for (int k = 0; k <= WorldGen.lavaLine - 140; k++)
{
num4 += WorldGen.genRand.Next(-4, 4);
num5 += WorldGen.genRand.Next(-3, 5);
snowMinX[k] = num4;
snowMaxX[k] = num5;
for (int l = num4; l < num5; l++)
{
if (k < WorldGen.lavaLine - 140)
{
if (Main.tile[l, k].wall == 2)
{
Main.tile[l, k].wall = 40;
}
int type = (int)Main.tile[l, k].type;
if (type == 0 || type == 2 || type == 23 || type == 40 || type == 53)
{
Main.tile[l, k].type = 147;
}
else if (type == 1)
{
Main.tile[l, k].type = 161;
}
}
else
{
num6 += WorldGen.genRand.Next(-3, 4);
if (WorldGen.genRand.Next(3) == 0)
{
num6 += WorldGen.genRand.Next(-4, 5);
if (WorldGen.genRand.Next(3) == 0)
{
num6 += WorldGen.genRand.Next(-6, 7);
}
}
if (num6 < 0)
{
num6 = WorldGen.genRand.Next(3);
}
else if (num6 > 50)
{
num6 = 50 - WorldGen.genRand.Next(3);
}
for (int m = k; m < k + num6; m++)
{
if (Main.tile[l, m].wall == 2)
{
Main.tile[l, m].wall = 40;
}
int type2 = (int)Main.tile[l, m].type;
if (type2 == 0 || type2 == 2 || type2 == 23 || type2 == 40 || type2 == 53)
{
Main.tile[l, m].type = 147;
}
else if (type2 == 1)
{
Main.tile[l, m].type = 161;
}
}
}
}
if (snowBottom < k)
{
snowBottom = k;
}
}
});
WorldGen.AddGenerationPass("Grass", delegate(GenerationProgress progress)
{
for (int k = 0; k < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.002); k++)
{
int num = WorldGen.genRand.Next(1, Main.maxTilesX - 1);
int num2 = WorldGen.genRand.Next((int)WorldGen.worldSurfaceLow, (int)worldSurfaceHigh);
if (num2 >= Main.maxTilesY)
{
num2 = Main.maxTilesY - 2;
}
if (Main.tile[num - 1, num2].active() && Main.tile[num - 1, num2].type == 0 && Main.tile[num + 1, num2].active() && Main.tile[num + 1, num2].type == 0 && Main.tile[num, num2 - 1].active() && Main.tile[num, num2 - 1].type == 0 && Main.tile[num, num2 + 1].active() && Main.tile[num, num2 + 1].type == 0)
{
Main.tile[num, num2].active(true);
Main.tile[num, num2].type = 2;
}
num = WorldGen.genRand.Next(1, Main.maxTilesX - 1);
num2 = WorldGen.genRand.Next(0, (int)WorldGen.worldSurfaceLow);
if (num2 >= Main.maxTilesY)
{
num2 = Main.maxTilesY - 2;
}
if (Main.tile[num - 1, num2].active() && Main.tile[num - 1, num2].type == 0 && Main.tile[num + 1, num2].active() && Main.tile[num + 1, num2].type == 0 && Main.tile[num, num2 - 1].active() && Main.tile[num, num2 - 1].type == 0 && Main.tile[num, num2 + 1].active() && Main.tile[num, num2 + 1].type == 0)
{
Main.tile[num, num2].active(true);
Main.tile[num, num2].type = 2;
}
}
});
WorldGen.AddGenerationPass("Jungle", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[11];
float num = (float)(Main.maxTilesX / 4200);
num *= 1.5f;
float num2 = (float)WorldGen.genRand.Next(15, 30) * 0.01f;
int num3;
if (dungeonSide == -1)
{
num2 = 1f - num2;
num3 = (int)((float)Main.maxTilesX * num2);
}
else
{
num3 = (int)((float)Main.maxTilesX * num2);
}
int num4 = (int)((double)Main.maxTilesY + Main.rockLayer) / 2;
num3 += WorldGen.genRand.Next((int)(-100f * num), (int)(101f * num));
num4 += WorldGen.genRand.Next((int)(-100f * num), (int)(101f * num));
int num5 = num3;
int num6 = num4;
WorldGen.TileRunner(num3, num4, (double)WorldGen.genRand.Next((int)(250f * num), (int)(500f * num)), WorldGen.genRand.Next(50, 150), 59, false, (float)(dungeonSide * 3), 0f, false, true);
int num7 = 0;
while ((float)num7 < 6f * num)
{
WorldGen.TileRunner(num3 + WorldGen.genRand.Next(-(int)(125f * num), (int)(125f * num)), num4 + WorldGen.genRand.Next(-(int)(125f * num), (int)(125f * num)), (double)WorldGen.genRand.Next(3, 7), WorldGen.genRand.Next(3, 8), WorldGen.genRand.Next(63, 65), false, 0f, 0f, false, true);
num7++;
}
WorldGen.mudWall = true;
progress.Set(0.15f);
num3 += WorldGen.genRand.Next((int)(-250f * num), (int)(251f * num));
num4 += WorldGen.genRand.Next((int)(-150f * num), (int)(151f * num));
int num8 = num3;
int num9 = num4;
int num10 = num3;
int num11 = num4;
WorldGen.TileRunner(num3, num4, (double)WorldGen.genRand.Next((int)(250f * num), (int)(500f * num)), WorldGen.genRand.Next(50, 150), 59, false, 0f, 0f, false, true);
WorldGen.mudWall = false;
int num12 = 0;
while ((float)num12 < 6f * num)
{
WorldGen.TileRunner(num3 + WorldGen.genRand.Next(-(int)(125f * num), (int)(125f * num)), num4 + WorldGen.genRand.Next(-(int)(125f * num), (int)(125f * num)), (double)WorldGen.genRand.Next(3, 7), WorldGen.genRand.Next(3, 8), WorldGen.genRand.Next(65, 67), false, 0f, 0f, false, true);
num12++;
}
WorldGen.mudWall = true;
progress.Set(0.3f);
num3 += WorldGen.genRand.Next((int)(-400f * num), (int)(401f * num));
num4 += WorldGen.genRand.Next((int)(-150f * num), (int)(151f * num));
int num13 = num3;
int num14 = num4;
WorldGen.TileRunner(num3, num4, (double)WorldGen.genRand.Next((int)(250f * num), (int)(500f * num)), WorldGen.genRand.Next(50, 150), 59, false, (float)(dungeonSide * -3), 0f, false, true);
WorldGen.mudWall = false;
int num15 = 0;
while ((float)num15 < 6f * num)
{
WorldGen.TileRunner(num3 + WorldGen.genRand.Next(-(int)(125f * num), (int)(125f * num)), num4 + WorldGen.genRand.Next(-(int)(125f * num), (int)(125f * num)), (double)WorldGen.genRand.Next(3, 7), WorldGen.genRand.Next(3, 8), WorldGen.genRand.Next(67, 69), false, 0f, 0f, false, true);
num15++;
}
WorldGen.mudWall = true;
progress.Set(0.45f);
num3 = (num5 + num8 + num13) / 3;
num4 = (num6 + num9 + num14) / 3;
WorldGen.TileRunner(num3, num4, (double)WorldGen.genRand.Next((int)(400f * num), (int)(600f * num)), 10000, 59, false, 0f, -20f, true, true);
WorldGen.JungleRunner(num3, num4);
progress.Set(0.6f);
WorldGen.mudWall = false;
for (int k = 0; k < Main.maxTilesX / 4; k++)
{
num3 = WorldGen.genRand.Next(20, Main.maxTilesX - 20);
num4 = WorldGen.genRand.Next((int)worldSurface + 10, Main.maxTilesY - 200);
while (Main.tile[num3, num4].wall != 64 && Main.tile[num3, num4].wall != 15)
{
num3 = WorldGen.genRand.Next(20, Main.maxTilesX - 20);
num4 = WorldGen.genRand.Next((int)worldSurface + 10, Main.maxTilesY - 200);
}
WorldGen.MudWallRunner(num3, num4);
}
num3 = num10;
num4 = num11;
int num16 = 0;
while ((float)num16 <= 20f * num)
{
progress.Set((60f + (float)num16 / num) * 0.01f);
num3 += WorldGen.genRand.Next((int)(-5f * num), (int)(6f * num));
num4 += WorldGen.genRand.Next((int)(-5f * num), (int)(6f * num));
WorldGen.TileRunner(num3, num4, (double)WorldGen.genRand.Next(40, 100), WorldGen.genRand.Next(300, 500), 59, false, 0f, 0f, false, true);
num16++;
}
int num17 = 0;
while ((float)num17 <= 10f * num)
{
progress.Set((80f + (float)num17 / num * 2f) * 0.01f);
num3 = num10 + WorldGen.genRand.Next((int)(-600f * num), (int)(600f * num));
num4 = num11 + WorldGen.genRand.Next((int)(-200f * num), (int)(200f * num));
while (num3 < 1 || num3 >= Main.maxTilesX - 1 || num4 < 1 || num4 >= Main.maxTilesY - 1 || Main.tile[num3, num4].type != 59)
{
num3 = num10 + WorldGen.genRand.Next((int)(-600f * num), (int)(600f * num));
num4 = num11 + WorldGen.genRand.Next((int)(-200f * num), (int)(200f * num));
}
int num18 = 0;
while ((float)num18 < 8f * num)
{
num3 += WorldGen.genRand.Next(-30, 31);
num4 += WorldGen.genRand.Next(-30, 31);
int type = -1;
if (WorldGen.genRand.Next(7) == 0)
{
type = -2;
}
WorldGen.TileRunner(num3, num4, (double)WorldGen.genRand.Next(10, 20), WorldGen.genRand.Next(30, 70), type, false, 0f, 0f, false, true);
num18++;
}
num17++;
}
int num19 = 0;
while ((float)num19 <= 300f * num)
{
num3 = num10 + WorldGen.genRand.Next((int)(-600f * num), (int)(600f * num));
num4 = num11 + WorldGen.genRand.Next((int)(-200f * num), (int)(200f * num));
while (num3 < 1 || num3 >= Main.maxTilesX - 1 || num4 < 1 || num4 >= Main.maxTilesY - 1 || Main.tile[num3, num4].type != 59)
{
num3 = num10 + WorldGen.genRand.Next((int)(-600f * num), (int)(600f * num));
num4 = num11 + WorldGen.genRand.Next((int)(-200f * num), (int)(200f * num));
}
WorldGen.TileRunner(num3, num4, (double)WorldGen.genRand.Next(4, 10), WorldGen.genRand.Next(5, 30), 1, false, 0f, 0f, false, true);
if (WorldGen.genRand.Next(4) == 0)
{
int type2 = WorldGen.genRand.Next(63, 69);
WorldGen.TileRunner(num3 + WorldGen.genRand.Next(-1, 2), num4 + WorldGen.genRand.Next(-1, 2), (double)WorldGen.genRand.Next(3, 7), WorldGen.genRand.Next(4, 8), type2, false, 0f, 0f, false, true);
}
num19++;
}
});
WorldGen.AddGenerationPass("Marble", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[80];
float num = (float)(Main.maxTilesX * Main.maxTilesY) / 5040000f;
int num2 = (int)((float)WorldGen.genRand.Next(10, 15) * num);
float num3 = (float)(Main.maxTilesX - 160) / (float)num2;
int k = 0;
while (k < num2)
{
float num4 = (float)k / (float)num2;
progress.Set(num4);
Point origin = WorldGen.RandomRectanglePoint((int)(num4 * (float)(Main.maxTilesX - 160)) + 80, (int)rockLayer + 20, (int)num3, Main.maxTilesY - ((int)rockLayer + 40) - 200);
if (Biomes<MarbleBiome>.Place(origin, structures))
{
k++;
}
}
});
WorldGen.AddGenerationPass("Granite", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[81];
float num = (float)Main.maxTilesX / 4200f;
int num2 = (int)((float)WorldGen.genRand.Next(8, 14) * num);
float num3 = (float)(Main.maxTilesX - 200) / (float)num2;
int k = 0;
while (k < num2)
{
float num4 = (float)k / (float)num2;
progress.Set(num4);
Point origin = WorldGen.RandomRectanglePoint((int)(num4 * (float)(Main.maxTilesX - 200)) + 100, (int)rockLayer + 20, (int)num3, Main.maxTilesY - ((int)rockLayer + 40) - 200);
if (Biomes<GraniteBiome>.Place(origin, structures))
{
k++;
}
}
});
WorldGen.AddGenerationPass("Mud Caves To Grass", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[77];
for (int k = 0; k < Main.maxTilesX; k++)
{
for (int l = 0; l < Main.maxTilesY; l++)
{
if (Main.tile[k, l].active())
{
WorldGen.grassSpread = 0;
WorldGen.SpreadGrass(k, l, 59, 60, true, 0);
}
progress.Set(0.2f * ((float)(k * Main.maxTilesY + l) / (float)(Main.maxTilesX * Main.maxTilesY)));
}
}
for (int m = 10; m < Main.maxTilesX - 10; m++)
{
for (int n = 10; n < Main.maxTilesY - 10; n++)
{
if (Main.tile[m, n].active())
{
int num = WorldGen.tileCounter(m, n);
if (num < WorldGen.tileCounterMax)
{
WorldGen.tileCounterKill();
}
}
float num2 = (float)((m - 10) * (Main.maxTilesY - 20) + (n - 10)) / (float)((Main.maxTilesX - 20) * (Main.maxTilesY - 20));
progress.Set(0.2f + num2 * 0.8f);
}
}
});
WorldGen.AddGenerationPass("Full Desert", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[78];
int num = dungeonSide;
int num2 = Main.maxTilesX / 2;
int num3 = WorldGen.genRand.Next(num2) / 8;
num3 += num2 / 8;
int x = num2 + num3 * -num;
int num4 = 0;
while (!Biomes<DesertBiome>.Place(new Point(x, (int)worldSurface), structures))
{
num3 = WorldGen.genRand.Next(num2) / 2;
num3 += num2 / 8;
x = num2 + num3 * -num;
if (++num4 > 1000)
{
num *= -1;
num4 = 0;
}
}
});
WorldGen.AddGenerationPass("Floating Islands", delegate(GenerationProgress progress)
{
WorldGen.numIslandHouses = 0;
WorldGen.houseCount = 0;
progress.Message = Lang.gen[12];
for (int k = 0; k < (int)((double)Main.maxTilesX * 0.0008) + skyLakes; k++)
{
int num = 1000;
int num2 = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.1), (int)((double)Main.maxTilesX * 0.9));
while (--num > 0)
{
bool flag2 = true;
while (num2 > Main.maxTilesX / 2 - 80 && num2 < Main.maxTilesX / 2 + 80)
{
num2 = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.1), (int)((double)Main.maxTilesX * 0.9));
}
for (int l = 0; l < WorldGen.numIslandHouses; l++)
{
if (num2 > WorldGen.fihX[l] - 180 && num2 < WorldGen.fihX[l] + 180)
{
flag2 = false;
break;
}
}
if (flag2)
{
flag2 = false;
int num3 = 0;
int num4 = 200;
while ((double)num4 < Main.worldSurface)
{
if (Main.tile[num2, num4].active())
{
num3 = num4;
flag2 = true;
break;
}
num4++;
}
if (flag2)
{
int num5 = WorldGen.genRand.Next(90, num3 - 100);
num5 = Math.Min(num5, (int)WorldGen.worldSurfaceLow - 50);
if (k < skyLakes)
{
WorldGen.skyLake[WorldGen.numIslandHouses] = true;
WorldGen.CloudLake(num2, num5);
}
else
{
WorldGen.CloudIsland(num2, num5);
}
WorldGen.fihX[WorldGen.numIslandHouses] = num2;
WorldGen.fihY[WorldGen.numIslandHouses] = num5;
WorldGen.numIslandHouses++;
}
}
}
}
});
WorldGen.AddGenerationPass("Mushroom Patches", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[13];
for (int k = 0; k < Main.maxTilesX / 500; k++)
{
int num = 0;
bool flag2 = true;
while (flag2)
{
int num2 = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.3), (int)((double)Main.maxTilesX * 0.7));
int num3 = WorldGen.genRand.Next((int)Main.rockLayer, Main.maxTilesY - 350);
flag2 = false;
int num4 = 60;
for (int l = num2 - num4; l < num2 + num4; l += 3)
{
for (int m = num3 - num4; m < num3 + num4; m += 3)
{
if (Main.tile[l, m].type == 147 || Main.tile[l, m].type == 161 || Main.tile[l, m].type == 162)
{
flag2 = true;
break;
}
if (WorldGen.UndergroundDesertLocation.Contains(new Point(l, m)))
{
flag2 = true;
break;
}
}
}
if (!flag2)
{
WorldGen.ShroomPatch(num2, num3);
}
num++;
if (num > 100)
{
break;
}
}
}
for (int n = 0; n < Main.maxTilesX; n++)
{
for (int num5 = (int)Main.worldSurface; num5 < Main.maxTilesY; num5++)
{
if (Main.tile[n, num5].active())
{
WorldGen.grassSpread = 0;
WorldGen.SpreadGrass(n, num5, 59, 70, false, 0);
if (Main.tile[n, num5].type == 70 && WorldGen.genRand.Next(20) == 0)
{
int num6;
if (WorldGen.genRand.Next(5) == 0)
{
num6 = 2;
}
else
{
num6 = 1;
}
int num7 = WorldGen.genRand.Next(2, 6);
int num8 = num5 - num7;
bool flag3 = true;
for (int num9 = n - num6; num9 <= n + num6; num9++)
{
if (Main.tile[num9, num8].active())
{
flag3 = false;
}
if (Main.tileBrick[(int)Main.tile[num9, num8 - 1].type])
{
flag3 = false;
}
if (Main.tileBrick[(int)Main.tile[num9, num8 + 1].type])
{
flag3 = false;
}
}
if (Main.tile[n - num6 - 1, num8].type == 190)
{
flag3 = false;
}
if (Main.tile[n + num6 + 1, num8].type == 190)
{
flag3 = false;
}
for (int num10 = num8; num10 < num5; num10++)
{
if (Main.tile[n, num10].active())
{
flag3 = false;
}
if (Main.tileBrick[(int)Main.tile[n - 1, num10].type])
{
flag3 = false;
}
if (Main.tileBrick[(int)Main.tile[n + 1, num10].type])
{
flag3 = false;
}
}
if (flag3)
{
for (int num11 = n - num6; num11 <= n + num6; num11++)
{
WorldGen.PlaceTile(num11, num8, 190, true, true, -1, 0);
}
for (int num12 = num8; num12 < num5; num12++)
{
WorldGen.PlaceTile(n, num12, 190, true, true, -1, 0);
}
}
}
}
}
}
});
WorldGen.AddGenerationPass("Mud To Dirt", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[14];
for (int k = 0; k < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.001); k++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)rockLayerLow, Main.maxTilesY), (double)WorldGen.genRand.Next(2, 6), WorldGen.genRand.Next(2, 40), 59, false, 0f, 0f, false, true);
}
});
WorldGen.AddGenerationPass("Silt", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[15];
for (int k = 0; k < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.0001); k++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)rockLayerHigh, Main.maxTilesY), (double)WorldGen.genRand.Next(5, 12), WorldGen.genRand.Next(15, 50), 123, false, 0f, 0f, false, true);
}
for (int l = 0; l < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.0005); l++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)rockLayerHigh, Main.maxTilesY), (double)WorldGen.genRand.Next(2, 5), WorldGen.genRand.Next(2, 5), 123, false, 0f, 0f, false, true);
}
});
WorldGen.AddGenerationPass("Shinies", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[16];
for (int k = 0; k < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 6E-05); k++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)WorldGen.worldSurfaceLow, (int)worldSurfaceHigh), (double)WorldGen.genRand.Next(3, 6), WorldGen.genRand.Next(2, 6), copper, false, 0f, 0f, false, true);
}
for (int l = 0; l < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 8E-05); l++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)worldSurfaceHigh, (int)rockLayerHigh), (double)WorldGen.genRand.Next(3, 7), WorldGen.genRand.Next(3, 7), copper, false, 0f, 0f, false, true);
}
for (int m = 0; m < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.0002); m++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)rockLayerLow, Main.maxTilesY), (double)WorldGen.genRand.Next(4, 9), WorldGen.genRand.Next(4, 8), copper, false, 0f, 0f, false, true);
}
for (int n = 0; n < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 3E-05); n++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)WorldGen.worldSurfaceLow, (int)worldSurfaceHigh), (double)WorldGen.genRand.Next(3, 7), WorldGen.genRand.Next(2, 5), iron, false, 0f, 0f, false, true);
}
for (int num = 0; num < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 8E-05); num++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)worldSurfaceHigh, (int)rockLayerHigh), (double)WorldGen.genRand.Next(3, 6), WorldGen.genRand.Next(3, 6), iron, false, 0f, 0f, false, true);
}
for (int num2 = 0; num2 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.0002); num2++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)rockLayerLow, Main.maxTilesY), (double)WorldGen.genRand.Next(4, 9), WorldGen.genRand.Next(4, 8), iron, false, 0f, 0f, false, true);
}
for (int num3 = 0; num3 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 2.6E-05); num3++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)worldSurfaceHigh, (int)rockLayerHigh), (double)WorldGen.genRand.Next(3, 6), WorldGen.genRand.Next(3, 6), silver, false, 0f, 0f, false, true);
}
for (int num4 = 0; num4 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.00015); num4++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)rockLayerLow, Main.maxTilesY), (double)WorldGen.genRand.Next(4, 9), WorldGen.genRand.Next(4, 8), silver, false, 0f, 0f, false, true);
}
for (int num5 = 0; num5 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.00017); num5++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next(0, (int)WorldGen.worldSurfaceLow), (double)WorldGen.genRand.Next(4, 9), WorldGen.genRand.Next(4, 8), silver, false, 0f, 0f, false, true);
}
for (int num6 = 0; num6 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.00012); num6++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)rockLayerLow, Main.maxTilesY), (double)WorldGen.genRand.Next(4, 8), WorldGen.genRand.Next(4, 8), gold, false, 0f, 0f, false, true);
}
for (int num7 = 0; num7 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.00012); num7++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next(0, (int)WorldGen.worldSurfaceLow - 20), (double)WorldGen.genRand.Next(4, 8), WorldGen.genRand.Next(4, 8), gold, false, 0f, 0f, false, true);
}
if (WorldGen.crimson)
{
for (int num8 = 0; num8 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 2E-05); num8++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)rockLayerLow, Main.maxTilesY), (double)WorldGen.genRand.Next(2, 4), WorldGen.genRand.Next(3, 6), 204, false, 0f, 0f, false, true);
}
return;
}
for (int num9 = 0; num9 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 2E-05); num9++)
{
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), WorldGen.genRand.Next((int)rockLayerLow, Main.maxTilesY), (double)WorldGen.genRand.Next(2, 4), WorldGen.genRand.Next(3, 6), 22, false, 0f, 0f, false, true);
}
});
WorldGen.AddGenerationPass("Webs", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[17];
for (int k = 0; k < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.0006); k++)
{
int num = WorldGen.genRand.Next(20, Main.maxTilesX - 20);
int num2 = WorldGen.genRand.Next((int)worldSurfaceHigh, Main.maxTilesY - 20);
if (k < WorldGen.numMCaves)
{
num = WorldGen.mCaveX[k];
num2 = WorldGen.mCaveY[k];
}
if (!Main.tile[num, num2].active())
{
if ((double)num2 <= Main.worldSurface)
{
if (Main.tile[num, num2].wall <= 0)
{
goto IL_140;
}
}
while (!Main.tile[num, num2].active() && num2 > (int)WorldGen.worldSurfaceLow)
{
num2--;
}
num2++;
int num3 = 1;
if (WorldGen.genRand.Next(2) == 0)
{
num3 = -1;
}
while (!Main.tile[num, num2].active() && num > 10 && num < Main.maxTilesX - 10)
{
num += num3;
}
num -= num3;
if ((double)num2 > Main.worldSurface || Main.tile[num, num2].wall > 0)
{
WorldGen.TileRunner(num, num2, (double)WorldGen.genRand.Next(4, 11), WorldGen.genRand.Next(2, 4), 51, true, (float)num3, -1f, false, false);
}
}
IL_140:;
}
});
WorldGen.AddGenerationPass("Underworld", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[18];
progress.Set(0f);
int num = Main.maxTilesY - WorldGen.genRand.Next(150, 190);
for (int k = 0; k < Main.maxTilesX; k++)
{
num += WorldGen.genRand.Next(-3, 4);
if (num < Main.maxTilesY - 190)
{
num = Main.maxTilesY - 190;
}
if (num > Main.maxTilesY - 160)
{
num = Main.maxTilesY - 160;
}
for (int l = num - 20 - WorldGen.genRand.Next(3); l < Main.maxTilesY; l++)
{
if (l >= num)
{
Main.tile[k, l].active(false);
Main.tile[k, l].lava(false);
Main.tile[k, l].liquid = 0;
}
else
{
Main.tile[k, l].type = 57;
}
}
}
int num2 = Main.maxTilesY - WorldGen.genRand.Next(40, 70);
for (int m = 10; m < Main.maxTilesX - 10; m++)
{
num2 += WorldGen.genRand.Next(-10, 11);
if (num2 > Main.maxTilesY - 60)
{
num2 = Main.maxTilesY - 60;
}
if (num2 < Main.maxTilesY - 100)
{
num2 = Main.maxTilesY - 120;
}
for (int n = num2; n < Main.maxTilesY - 10; n++)
{
if (!Main.tile[m, n].active())
{
Main.tile[m, n].lava(true);
Main.tile[m, n].liquid = 255;
}
}
}
for (int num3 = 0; num3 < Main.maxTilesX; num3++)
{
if (WorldGen.genRand.Next(50) == 0)
{
int num4 = Main.maxTilesY - 65;
while (!Main.tile[num3, num4].active() && num4 > Main.maxTilesY - 135)
{
num4--;
}
WorldGen.TileRunner(WorldGen.genRand.Next(0, Main.maxTilesX), num4 + 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 num5 = 0; num5 < Main.maxTilesX; num5++)
{
float num6 = (float)num5 / (float)(Main.maxTilesX - 1);
progress.Set(num6 / 2f + 0.5f);
if (WorldGen.genRand.Next(13) == 0)
{
int num7 = Main.maxTilesY - 65;
while ((Main.tile[num5, num7].liquid > 0 || Main.tile[num5, num7].active()) && num7 > Main.maxTilesY - 140)
{
num7--;
}
WorldGen.TileRunner(num5, num7 - WorldGen.genRand.Next(2, 5), (double)WorldGen.genRand.Next(5, 30), 1000, 57, true, 0f, (float)WorldGen.genRand.Next(1, 3), true, true);
float num8 = (float)WorldGen.genRand.Next(1, 3);
if (WorldGen.genRand.Next(3) == 0)
{
num8 *= 0.5f;
}
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.TileRunner(num5, num7 - WorldGen.genRand.Next(2, 5), (double)((int)((float)WorldGen.genRand.Next(5, 15) * num8)), (int)((float)WorldGen.genRand.Next(10, 15) * num8), 57, true, 1f, 0.3f, false, true);
}
if (WorldGen.genRand.Next(2) == 0)
{
num8 = (float)WorldGen.genRand.Next(1, 3);
WorldGen.TileRunner(num5, num7 - WorldGen.genRand.Next(2, 5), (double)((int)((float)WorldGen.genRand.Next(5, 15) * num8)), (int)((float)WorldGen.genRand.Next(10, 15) * num8), 57, true, -1f, 0.3f, false, true);
}
WorldGen.TileRunner(num5 + WorldGen.genRand.Next(-10, 10), num7 + 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(num5 + WorldGen.genRand.Next(-10, 10), num7 + 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(num5 + WorldGen.genRand.Next(-15, 15), num7 + 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 num9 = 0; num9 < Main.maxTilesX; num9++)
{
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 num10 = 0; num10 < Main.maxTilesX; num10++)
{
if (!Main.tile[num10, Main.maxTilesY - 145].active())
{
Main.tile[num10, Main.maxTilesY - 145].liquid = 255;
Main.tile[num10, Main.maxTilesY - 145].lava(true);
}
if (!Main.tile[num10, Main.maxTilesY - 144].active())
{
Main.tile[num10, Main.maxTilesY - 144].liquid = 255;
Main.tile[num10, Main.maxTilesY - 144].lava(true);
}
}
for (int num11 = 0; num11 < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.0008); num11++)
{
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();
});
WorldGen.AddGenerationPass("Lakes", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[19];
int num = WorldGen.genRand.Next(2, (int)((double)Main.maxTilesX * 0.005));
for (int k = 0; k < num; k++)
{
float value = (float)k / (float)num;
progress.Set(value);
int num2 = WorldGen.genRand.Next(300, Main.maxTilesX - 300);
while (num2 > Main.maxTilesX / 2 - 100 && num2 < Main.maxTilesX / 2 + 100)
{
num2 = WorldGen.genRand.Next(300, Main.maxTilesX - 300);
}
int num3 = (int)WorldGen.worldSurfaceLow - 20;
while (!Main.tile[num2, num3].active())
{
num3++;
}
WorldGen.Lakinater(num2, num3);
}
});
WorldGen.AddGenerationPass("Dungeon", delegate(GenerationProgress progress)
{
int x;
if (dungeonSide == -1)
{
x = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.05), (int)((double)Main.maxTilesX * 0.2));
dungeonSide = -1;
}
else
{
x = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.8), (int)((double)Main.maxTilesX * 0.95));
dungeonSide = 1;
}
int y = (int)((Main.worldSurface + Main.rockLayer) / 2.0) + WorldGen.genRand.Next(-200, 200);
WorldGen.MakeDungeon(x, y);
});
WorldGen.AddGenerationPass("Corruption", delegate(GenerationProgress progress)
{
if (WorldGen.crimson)
{
progress.Message = Lang.gen[72];
int num = 0;
while ((double)num < (double)Main.maxTilesX * 0.00045)
{
float value = (float)((double)num / ((double)Main.maxTilesX * 0.00045));
progress.Set(value);
bool flag2 = false;
int num2 = 0;
int num3 = 0;
int num4 = 0;
while (!flag2)
{
int num5 = 0;
flag2 = true;
int num6 = Main.maxTilesX / 2;
int num7 = 200;
if (dungeonSide < 0)
{
num2 = WorldGen.genRand.Next(600, Main.maxTilesX - 320);
}
else
{
num2 = WorldGen.genRand.Next(320, Main.maxTilesX - 600);
}
num3 = num2 - WorldGen.genRand.Next(200) - 100;
num4 = num2 + WorldGen.genRand.Next(200) + 100;
if (num3 < 285)
{
num3 = 285;
}
if (num4 > Main.maxTilesX - 285)
{
num4 = Main.maxTilesX - 285;
}
if (dungeonSide < 0 && num3 < 400)
{
num3 = 400;
}
else if (dungeonSide > 0 && num3 > Main.maxTilesX - 400)
{
num3 = Main.maxTilesX - 400;
}
if (num2 > num6 - num7 && num2 < num6 + num7)
{
flag2 = false;
}
if (num3 > num6 - num7 && num3 < num6 + num7)
{
flag2 = false;
}
if (num4 > num6 - num7 && num4 < num6 + num7)
{
flag2 = false;
}
if (num2 > WorldGen.UndergroundDesertLocation.X && num2 < WorldGen.UndergroundDesertLocation.X + WorldGen.UndergroundDesertLocation.Width)
{
flag2 = false;
}
if (num3 > WorldGen.UndergroundDesertLocation.X && num3 < WorldGen.UndergroundDesertLocation.X + WorldGen.UndergroundDesertLocation.Width)
{
flag2 = false;
}
if (num4 > WorldGen.UndergroundDesertLocation.X && num4 < WorldGen.UndergroundDesertLocation.X + WorldGen.UndergroundDesertLocation.Width)
{
flag2 = false;
}
for (int k = num3; k < num4; k++)
{
for (int l = 0; l < (int)Main.worldSurface; l += 5)
{
if (Main.tile[k, l].active() && Main.tileDungeon[(int)Main.tile[k, l].type])
{
flag2 = false;
break;
}
if (!flag2)
{
break;
}
}
}
if (num5 < 200 && WorldGen.JungleX > num3 && WorldGen.JungleX < num4)
{
num5++;
flag2 = false;
}
}
WorldGen.CrimStart(num2, (int)WorldGen.worldSurfaceLow - 10);
for (int m = num3; m < num4; m++)
{
int num8 = (int)WorldGen.worldSurfaceLow;
while ((double)num8 < Main.worldSurface - 1.0)
{
if (Main.tile[m, num8].active())
{
int num9 = num8 + WorldGen.genRand.Next(10, 14);
for (int n = num8; n < num9; n++)
{
if ((Main.tile[m, n].type == 59 || Main.tile[m, n].type == 60) && m >= num3 + WorldGen.genRand.Next(5) && m < num4 - WorldGen.genRand.Next(5))
{
Main.tile[m, n].type = 0;
}
}
break;
}
num8++;
}
}
double num10 = Main.worldSurface + 40.0;
for (int num11 = num3; num11 < num4; num11++)
{
num10 += (double)WorldGen.genRand.Next(-2, 3);
if (num10 < Main.worldSurface + 30.0)
{
num10 = Main.worldSurface + 30.0;
}
if (num10 > Main.worldSurface + 50.0)
{
num10 = Main.worldSurface + 50.0;
}
i2 = num11;
bool flag3 = false;
int num12 = (int)WorldGen.worldSurfaceLow;
while ((double)num12 < num10)
{
if (Main.tile[i2, num12].active())
{
if (Main.tile[i2, num12].type == 53 && i2 >= num3 + WorldGen.genRand.Next(5) && i2 <= num4 - WorldGen.genRand.Next(5))
{
Main.tile[i2, num12].type = 234;
}
if (Main.tile[i2, num12].type == 0 && (double)num12 < Main.worldSurface - 1.0 && !flag3)
{
WorldGen.grassSpread = 0;
WorldGen.SpreadGrass(i2, num12, 0, 199, true, 0);
}
flag3 = true;
if (Main.tile[i2, num12].wall == 216)
{
Main.tile[i2, num12].wall = 218;
}
else if (Main.tile[i2, num12].wall == 187)
{
Main.tile[i2, num12].wall = 221;
}
if (Main.tile[i2, num12].type == 1)
{
if (i2 >= num3 + WorldGen.genRand.Next(5) && i2 <= num4 - WorldGen.genRand.Next(5))
{
Main.tile[i2, num12].type = 203;
}
}
else if (Main.tile[i2, num12].type == 2)
{
Main.tile[i2, num12].type = 199;
}
else if (Main.tile[i2, num12].type == 161)
{
Main.tile[i2, num12].type = 200;
}
else if (Main.tile[i2, num12].type == 396)
{
Main.tile[i2, num12].type = 401;
}
else if (Main.tile[i2, num12].type == 397)
{
Main.tile[i2, num12].type = 399;
}
}
num12++;
}
}
int num13 = WorldGen.genRand.Next(10, 15);
for (int num14 = 0; num14 < num13; num14++)
{
int num15 = 0;
bool flag4 = false;
int num16 = 0;
while (!flag4)
{
num15++;
int num17 = WorldGen.genRand.Next(num3 - num16, num4 + num16);
int num18 = WorldGen.genRand.Next((int)(Main.worldSurface - (double)(num16 / 2)), (int)(Main.worldSurface + 100.0 + (double)num16));
if (num15 > 100)
{
num16++;
num15 = 0;
}
if (!Main.tile[num17, num18].active())
{
while (!Main.tile[num17, num18].active())
{
num18++;
}
num18--;
}
else
{
while (Main.tile[num17, num18].active() && (double)num18 > Main.worldSurface)
{
num18--;
}
}
if (num16 > 10 || (Main.tile[num17, num18 + 1].active() && Main.tile[num17, num18 + 1].type == 203))
{
WorldGen.Place3x2(num17, num18, 26, 1);
if (Main.tile[num17, num18].type == 26)
{
flag4 = true;
}
}
if (num16 > 100)
{
flag4 = true;
}
}
}
num++;
}
return;
}
progress.Message = Lang.gen[20];
int num19 = 0;
while ((double)num19 < (double)Main.maxTilesX * 0.00045)
{
float value2 = (float)((double)num19 / ((double)Main.maxTilesX * 0.00045));
progress.Set(value2);
bool flag5 = false;
int num20 = 0;
int num21 = 0;
int num22 = 0;
while (!flag5)
{
int num23 = 0;
flag5 = true;
int num24 = Main.maxTilesX / 2;
int num25 = 200;
num20 = WorldGen.genRand.Next(320, Main.maxTilesX - 320);
num21 = num20 - WorldGen.genRand.Next(200) - 100;
num22 = num20 + WorldGen.genRand.Next(200) + 100;
if (num21 < 285)
{
num21 = 285;
}
if (num22 > Main.maxTilesX - 285)
{
num22 = Main.maxTilesX - 285;
}
if (num20 > num24 - num25 && num20 < num24 + num25)
{
flag5 = false;
}
if (num21 > num24 - num25 && num21 < num24 + num25)
{
flag5 = false;
}
if (num22 > num24 - num25 && num22 < num24 + num25)
{
flag5 = false;
}
if (num20 > WorldGen.UndergroundDesertLocation.X && num20 < WorldGen.UndergroundDesertLocation.X + WorldGen.UndergroundDesertLocation.Width)
{
flag5 = false;
}
if (num21 > WorldGen.UndergroundDesertLocation.X && num21 < WorldGen.UndergroundDesertLocation.X + WorldGen.UndergroundDesertLocation.Width)
{
flag5 = false;
}
if (num22 > WorldGen.UndergroundDesertLocation.X && num22 < WorldGen.UndergroundDesertLocation.X + WorldGen.UndergroundDesertLocation.Width)
{
flag5 = false;
}
for (int num26 = num21; num26 < num22; num26++)
{
for (int num27 = 0; num27 < (int)Main.worldSurface; num27 += 5)
{
if (Main.tile[num26, num27].active() && Main.tileDungeon[(int)Main.tile[num26, num27].type])
{
flag5 = false;
break;
}
if (!flag5)
{
break;
}
}
}
if (num23 < 200 && WorldGen.JungleX > num21 && WorldGen.JungleX < num22)
{
num23++;
flag5 = false;
}
}
int num28 = 0;
for (int num29 = num21; num29 < num22; num29++)
{
if (num28 > 0)
{
num28--;
}
if (num29 == num20 || num28 == 0)
{
int num30 = (int)WorldGen.worldSurfaceLow;
while ((double)num30 < Main.worldSurface - 1.0)
{
if (Main.tile[num29, num30].active() || Main.tile[num29, num30].wall > 0)
{
if (num29 == num20)
{
num28 = 20;
WorldGen.ChasmRunner(num29, num30, WorldGen.genRand.Next(150) + 150, true);
break;
}
if (WorldGen.genRand.Next(35) == 0 && num28 == 0)
{
num28 = 30;
bool makeOrb = true;
WorldGen.ChasmRunner(num29, num30, WorldGen.genRand.Next(50) + 50, makeOrb);
break;
}
break;
}
else
{
num30++;
}
}
}
int num31 = (int)WorldGen.worldSurfaceLow;
while ((double)num31 < Main.worldSurface - 1.0)
{
if (Main.tile[num29, num31].active())
{
int num32 = num31 + WorldGen.genRand.Next(10, 14);
for (int num33 = num31; num33 < num32; num33++)
{
if ((Main.tile[num29, num33].type == 59 || Main.tile[num29, num33].type == 60) && num29 >= num21 + WorldGen.genRand.Next(5) && num29 < num22 - WorldGen.genRand.Next(5))
{
Main.tile[num29, num33].type = 0;
}
}
break;
}
num31++;
}
}
double num34 = Main.worldSurface + 40.0;
for (int num35 = num21; num35 < num22; num35++)
{
num34 += (double)WorldGen.genRand.Next(-2, 3);
if (num34 < Main.worldSurface + 30.0)
{
num34 = Main.worldSurface + 30.0;
}
if (num34 > Main.worldSurface + 50.0)
{
num34 = Main.worldSurface + 50.0;
}
i2 = num35;
bool flag6 = false;
int num36 = (int)WorldGen.worldSurfaceLow;
while ((double)num36 < num34)
{
if (Main.tile[i2, num36].active())
{
if (Main.tile[i2, num36].type == 53 && i2 >= num21 + WorldGen.genRand.Next(5) && i2 <= num22 - WorldGen.genRand.Next(5))
{
Main.tile[i2, num36].type = 112;
}
if (Main.tile[i2, num36].type == 0 && (double)num36 < Main.worldSurface - 1.0 && !flag6)
{
WorldGen.grassSpread = 0;
WorldGen.SpreadGrass(i2, num36, 0, 23, true, 0);
}
flag6 = true;
if (Main.tile[i2, num36].type == 1 && i2 >= num21 + WorldGen.genRand.Next(5) && i2 <= num22 - WorldGen.genRand.Next(5))
{
Main.tile[i2, num36].type = 25;
}
if (Main.tile[i2, num36].wall == 216)
{
Main.tile[i2, num36].wall = 217;
}
else if (Main.tile[i2, num36].wall == 187)
{
Main.tile[i2, num36].wall = 220;
}
if (Main.tile[i2, num36].type == 2)
{
Main.tile[i2, num36].type = 23;
}
if (Main.tile[i2, num36].type == 161)
{
Main.tile[i2, num36].type = 163;
}
else if (Main.tile[i2, num36].type == 396)
{
Main.tile[i2, num36].type = 400;
}
else if (Main.tile[i2, num36].type == 397)
{
Main.tile[i2, num36].type = 398;
}
}
num36++;
}
}
for (int num37 = num21; num37 < num22; num37++)
{
for (int num38 = 0; num38 < Main.maxTilesY - 50; num38++)
{
if (Main.tile[num37, num38].active() && Main.tile[num37, num38].type == 31)
{
int num39 = num37 - 13;
int num40 = num37 + 13;
int num41 = num38 - 13;
int num42 = num38 + 13;
for (int num43 = num39; num43 < num40; num43++)
{
if (num43 > 10 && num43 < Main.maxTilesX - 10)
{
for (int num44 = num41; num44 < num42; num44++)
{
if (Math.Abs(num43 - num37) + Math.Abs(num44 - num38) < 9 + WorldGen.genRand.Next(11) && WorldGen.genRand.Next(3) != 0 && Main.tile[num43, num44].type != 31)
{
Main.tile[num43, num44].active(true);
Main.tile[num43, num44].type = 25;
if (Math.Abs(num43 - num37) <= 1 && Math.Abs(num44 - num38) <= 1)
{
Main.tile[num43, num44].active(false);
}
}
if (Main.tile[num43, num44].type != 31 && Math.Abs(num43 - num37) <= 2 + WorldGen.genRand.Next(3) && Math.Abs(num44 - num38) <= 2 + WorldGen.genRand.Next(3))
{
Main.tile[num43, num44].active(false);
}
}
}
}
}
}
}
num19++;
}
});
WorldGen.AddGenerationPass("Slush", delegate(GenerationProgress progress)
{
for (int k = snowTop; k < snowBottom; k++)
{
for (int l = snowMinX[k]; l < snowMaxX[k]; l++)
{
int type = (int)Main.tile[l, k].type;
if (type == 123)
{
Main.tile[l, k].type = 224;
}
else if (type == 59)
{
bool flag2 = true;
int num = 3;
for (int m = l - num; m <= l + num; m++)
{
for (int n = k - num; n <= k + num; n++)
{
if (Main.tile[m, n].type == 60 || Main.tile[m, n].type == 70 || Main.tile[m, n].type == 71 || Main.tile[m, n].type == 72)
{
flag2 = false;
break;
}
}
}
if (flag2)
{
Main.tile[l, k].type = 224;
}
}
else if (type == 1)
{
Main.tile[l, k].type = 161;
}
}
}
});
WorldGen.AddGenerationPass("Mud Caves To Grass", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[21];
for (int k = 0; k < WorldGen.numMCaves; k++)
{
int i2 = WorldGen.mCaveX[k];
int j2 = WorldGen.mCaveY[k];
WorldGen.CaveOpenater(i2, j2);
WorldGen.Cavinator(i2, j2, WorldGen.genRand.Next(40, 50));
}
});
WorldGen.AddGenerationPass("Beaches", delegate(GenerationProgress progress)
{
int num = 0;
int num2 = 0;
int num3 = 20;
int num4 = Main.maxTilesX - 20;
progress.Message = Lang.gen[22];
for (int k = 0; k < 2; k++)
{
if (k == 0)
{
int num5 = 0;
int num6 = WorldGen.genRand.Next(125, 200) + 50;
if (dungeonSide == 1)
{
num6 = 275;
}
int num7 = 0;
float num8 = 1f;
int num9 = 0;
while (!Main.tile[num6 - 1, num9].active())
{
num9++;
}
num = num9;
num9 += WorldGen.genRand.Next(1, 5);
for (int l = num6 - 1; l >= num5; l--)
{
num7++;
if (num7 < 3)
{
num8 += (float)WorldGen.genRand.Next(10, 20) * 0.2f;
}
else if (num7 < 6)
{
num8 += (float)WorldGen.genRand.Next(10, 20) * 0.15f;
}
else if (num7 < 9)
{
num8 += (float)WorldGen.genRand.Next(10, 20) * 0.1f;
}
else if (num7 < 15)
{
num8 += (float)WorldGen.genRand.Next(10, 20) * 0.07f;
}
else if (num7 < 50)
{
num8 += (float)WorldGen.genRand.Next(10, 20) * 0.05f;
}
else if (num7 < 75)
{
num8 += (float)WorldGen.genRand.Next(10, 20) * 0.04f;
}
else if (num7 < 100)
{
num8 += (float)WorldGen.genRand.Next(10, 20) * 0.03f;
}
else if (num7 < 125)
{
num8 += (float)WorldGen.genRand.Next(10, 20) * 0.02f;
}
else if (num7 < 150)
{
num8 += (float)WorldGen.genRand.Next(10, 20) * 0.01f;
}
else if (num7 < 175)
{
num8 += (float)WorldGen.genRand.Next(10, 20) * 0.005f;
}
else if (num7 < 200)
{
num8 += (float)WorldGen.genRand.Next(10, 20) * 0.001f;
}
else if (num7 < 230)
{
num8 += (float)WorldGen.genRand.Next(10, 20) * 0.01f;
}
else if (num7 < 235)
{
num8 += (float)WorldGen.genRand.Next(10, 20) * 0.05f;
}
else if (num7 < 240)
{
num8 += (float)WorldGen.genRand.Next(10, 20) * 0.1f;
}
else if (num7 < 245)
{
num8 += (float)WorldGen.genRand.Next(10, 20) * 0.05f;
}
else if (num7 < 255)
{
num8 += (float)WorldGen.genRand.Next(10, 20) * 0.01f;
}
if (num7 == 235)
{
num4 = l;
}
if (num7 == 235)
{
num3 = l;
}
int num10 = WorldGen.genRand.Next(15, 20);
int num11 = 0;
while ((float)num11 < (float)num9 + num8 + (float)num10)
{
if ((float)num11 < (float)num9 + num8 * 0.75f - 3f)
{
Main.tile[l, num11].active(false);
if (num11 > num9)
{
Main.tile[l, num11].liquid = 255;
}
else if (num11 == num9)
{
Main.tile[l, num11].liquid = 127;
}
}
else if (num11 > num9)
{
Main.tile[l, num11].type = 53;
Main.tile[l, num11].active(true);
}
Main.tile[l, num11].wall = 0;
num11++;
}
}
}
else
{
int num5 = Main.maxTilesX - WorldGen.genRand.Next(125, 200) - 50;
int num6 = Main.maxTilesX;
if (dungeonSide == -1)
{
num5 = Main.maxTilesX - 275;
}
float num12 = 1f;
int num13 = 0;
int num14 = 0;
while (!Main.tile[num5, num14].active())
{
num14++;
}
num2 = num14;
num14 += WorldGen.genRand.Next(1, 5);
for (int m = num5; m < num6; m++)
{
num13++;
if (num13 < 3)
{
num12 += (float)WorldGen.genRand.Next(10, 20) * 0.2f;
}
else if (num13 < 6)
{
num12 += (float)WorldGen.genRand.Next(10, 20) * 0.15f;
}
else if (num13 < 9)
{
num12 += (float)WorldGen.genRand.Next(10, 20) * 0.1f;
}
else if (num13 < 15)
{
num12 += (float)WorldGen.genRand.Next(10, 20) * 0.07f;
}
else if (num13 < 50)
{
num12 += (float)WorldGen.genRand.Next(10, 20) * 0.05f;
}
else if (num13 < 75)
{
num12 += (float)WorldGen.genRand.Next(10, 20) * 0.04f;
}
else if (num13 < 100)
{
num12 += (float)WorldGen.genRand.Next(10, 20) * 0.03f;
}
else if (num13 < 125)
{
num12 += (float)WorldGen.genRand.Next(10, 20) * 0.02f;
}
else if (num13 < 150)
{
num12 += (float)WorldGen.genRand.Next(10, 20) * 0.01f;
}
else if (num13 < 175)
{
num12 += (float)WorldGen.genRand.Next(10, 20) * 0.005f;
}
else if (num13 < 200)
{
num12 += (float)WorldGen.genRand.Next(10, 20) * 0.001f;
}
else if (num13 < 230)
{
num12 += (float)WorldGen.genRand.Next(10, 20) * 0.01f;
}
else if (num13 < 235)
{
num12 += (float)WorldGen.genRand.Next(10, 20) * 0.05f;
}
else if (num13 < 240)
{
num12 += (float)WorldGen.genRand.Next(10, 20) * 0.1f;
}
else if (num13 < 245)
{
num12 += (float)WorldGen.genRand.Next(10, 20) * 0.05f;
}
else if (num13 < 255)
{
num12 += (float)WorldGen.genRand.Next(10, 20) * 0.01f;
}
if (num13 == 235)
{
num4 = m;
}
int num15 = WorldGen.genRand.Next(15, 20);
int num16 = 0;
while ((float)num16 < (float)num14 + num12 + (float)num15)
{
if ((float)num16 < (float)num14 + num12 * 0.75f - 3f && (double)num16 < Main.worldSurface - 2.0)
{
Main.tile[m, num16].active(false);
if (num16 > num14)
{
Main.tile[m, num16].liquid = 255;
}
else if (num16 == num14)
{
Main.tile[m, num16].liquid = 127;
}
}
else if (num16 > num14)
{
Main.tile[m, num16].type = 53;
Main.tile[m, num16].active(true);
}
Main.tile[m, num16].wall = 0;
num16++;
}
}
}
}
while (!Main.tile[num3, num].active())
{
num++;
}
num++;
while (!Main.tile[num4, num2].active())
{
num2++;
}
num2++;
});
WorldGen.AddGenerationPass("Gems", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[23];
for (int k = 63; k <= 68; k++)
{
float num = 0f;
if (k == 67)
{
num = (float)Main.maxTilesX * 0.5f;
}
else if (k == 66)
{
num = (float)Main.maxTilesX * 0.45f;
}
else if (k == 63)
{
num = (float)Main.maxTilesX * 0.3f;
}
else if (k == 65)
{
num = (float)Main.maxTilesX * 0.25f;
}
else if (k == 64)
{
num = (float)Main.maxTilesX * 0.1f;
}
else if (k == 68)
{
num = (float)Main.maxTilesX * 0.05f;
}
num *= 0.2f;
int num2 = 0;
while ((float)num2 < num)
{
int num3 = WorldGen.genRand.Next(0, Main.maxTilesX);
int num4 = WorldGen.genRand.Next((int)Main.worldSurface, Main.maxTilesY);
while (Main.tile[num3, num4].type != 1)
{
num3 = WorldGen.genRand.Next(0, Main.maxTilesX);
num4 = WorldGen.genRand.Next((int)Main.worldSurface, Main.maxTilesY);
}
WorldGen.TileRunner(num3, num4, (double)WorldGen.genRand.Next(2, 6), WorldGen.genRand.Next(3, 7), k, false, 0f, 0f, false, true);
num2++;
}
}
for (int l = 0; l < 2; l++)
{
int num5 = 1;
int num6 = 5;
int num7 = Main.maxTilesX - 5;
if (l == 1)
{
num5 = -1;
num6 = Main.maxTilesX - 5;
num7 = 5;
}
for (int num8 = num6; num8 != num7; num8 += num5)
{
for (int m = 10; m < Main.maxTilesY - 10; m++)
{
if (Main.tile[num8, m].active() && Main.tile[num8, m + 1].active() && Main.tileSand[(int)Main.tile[num8, m].type] && Main.tileSand[(int)Main.tile[num8, m + 1].type])
{
ushort type = Main.tile[num8, m].type;
int num9 = num8 + num5;
int num10 = m + 1;
if (!Main.tile[num9, m].active() && !Main.tile[num9, m + 1].active())
{
while (!Main.tile[num9, num10].active())
{
num10++;
}
num10--;
Main.tile[num8, m].active(false);
Main.tile[num9, num10].active(true);
Main.tile[num9, num10].type = type;
}
}
}
}
}
});
WorldGen.AddGenerationPass("Gravitating Sand", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[24];
for (int k = 0; k < Main.maxTilesX; k++)
{
float value = (float)k / (float)(Main.maxTilesX - 1);
progress.Set(value);
bool flag2 = false;
int num = 0;
for (int l = Main.maxTilesY - 1; l > 0; l--)
{
if (WorldGen.SolidOrSlopedTile(k, l))
{
ushort type = Main.tile[k, l].type;
if (flag2 && l < (int)Main.worldSurface && l != num - 1 && TileID.Sets.Falling[(int)type])
{
for (int m = l; m < num; m++)
{
Main.tile[k, m].type = type;
Main.tile[k, m].active(true);
}
}
flag2 = true;
num = l;
}
}
}
});
WorldGen.AddGenerationPass("Clean Up Dirt", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[25];
for (int k = 3; k < Main.maxTilesX - 3; k++)
{
float num = (float)k / (float)Main.maxTilesX;
progress.Set(0.5f * num);
bool flag2 = true;
int num2 = 0;
while ((double)num2 < Main.worldSurface)
{
if (flag2)
{
if (Main.tile[k, num2].wall == 2 || Main.tile[k, num2].wall == 40 || Main.tile[k, num2].wall == 64)
{
Main.tile[k, num2].wall = 0;
}
if (Main.tile[k, num2].type != 53 && Main.tile[k, num2].type != 112 && Main.tile[k, num2].type != 234)
{
if (Main.tile[k - 1, num2].wall == 2 || Main.tile[k - 1, num2].wall == 40 || Main.tile[k - 1, num2].wall == 40)
{
Main.tile[k - 1, num2].wall = 0;
}
if ((Main.tile[k - 2, num2].wall == 2 || Main.tile[k - 2, num2].wall == 40 || Main.tile[k - 2, num2].wall == 40) && WorldGen.genRand.Next(2) == 0)
{
Main.tile[k - 2, num2].wall = 0;
}
if ((Main.tile[k - 3, num2].wall == 2 || Main.tile[k - 3, num2].wall == 40 || Main.tile[k - 3, num2].wall == 40) && WorldGen.genRand.Next(2) == 0)
{
Main.tile[k - 3, num2].wall = 0;
}
if (Main.tile[k + 1, num2].wall == 2 || Main.tile[k + 1, num2].wall == 40 || Main.tile[k + 1, num2].wall == 40)
{
Main.tile[k + 1, num2].wall = 0;
}
if ((Main.tile[k + 2, num2].wall == 2 || Main.tile[k + 2, num2].wall == 40 || Main.tile[k + 2, num2].wall == 40) && WorldGen.genRand.Next(2) == 0)
{
Main.tile[k + 2, num2].wall = 0;
}
if ((Main.tile[k + 3, num2].wall == 2 || Main.tile[k + 3, num2].wall == 40 || Main.tile[k + 3, num2].wall == 40) && WorldGen.genRand.Next(2) == 0)
{
Main.tile[k + 3, num2].wall = 0;
}
if (Main.tile[k, num2].active())
{
flag2 = false;
}
}
}
else if (Main.tile[k, num2].wall == 0 && Main.tile[k, num2 + 1].wall == 0 && Main.tile[k, num2 + 2].wall == 0 && Main.tile[k, num2 + 3].wall == 0 && Main.tile[k, num2 + 4].wall == 0 && Main.tile[k - 1, num2].wall == 0 && Main.tile[k + 1, num2].wall == 0 && Main.tile[k - 2, num2].wall == 0 && Main.tile[k + 2, num2].wall == 0 && !Main.tile[k, num2].active() && !Main.tile[k, num2 + 1].active() && !Main.tile[k, num2 + 2].active() && !Main.tile[k, num2 + 3].active())
{
flag2 = true;
}
num2++;
}
}
for (int l = Main.maxTilesX - 5; l >= 5; l--)
{
float num3 = (float)l / (float)Main.maxTilesX;
progress.Set(1f - 0.5f * num3);
bool flag3 = true;
int num4 = 0;
while ((double)num4 < Main.worldSurface)
{
if (flag3)
{
if (Main.tile[l, num4].wall == 2 || Main.tile[l, num4].wall == 40 || Main.tile[l, num4].wall == 64)
{
Main.tile[l, num4].wall = 0;
}
if (Main.tile[l, num4].type != 53)
{
if (Main.tile[l - 1, num4].wall == 2 || Main.tile[l - 1, num4].wall == 40 || Main.tile[l - 1, num4].wall == 40)
{
Main.tile[l - 1, num4].wall = 0;
}
if ((Main.tile[l - 2, num4].wall == 2 || Main.tile[l - 2, num4].wall == 40 || Main.tile[l - 2, num4].wall == 40) && WorldGen.genRand.Next(2) == 0)
{
Main.tile[l - 2, num4].wall = 0;
}
if ((Main.tile[l - 3, num4].wall == 2 || Main.tile[l - 3, num4].wall == 40 || Main.tile[l - 3, num4].wall == 40) && WorldGen.genRand.Next(2) == 0)
{
Main.tile[l - 3, num4].wall = 0;
}
if (Main.tile[l + 1, num4].wall == 2 || Main.tile[l + 1, num4].wall == 40 || Main.tile[l + 1, num4].wall == 40)
{
Main.tile[l + 1, num4].wall = 0;
}
if ((Main.tile[l + 2, num4].wall == 2 || Main.tile[l + 2, num4].wall == 40 || Main.tile[l + 2, num4].wall == 40) && WorldGen.genRand.Next(2) == 0)
{
Main.tile[l + 2, num4].wall = 0;
}
if ((Main.tile[l + 3, num4].wall == 2 || Main.tile[l + 3, num4].wall == 40 || Main.tile[l + 3, num4].wall == 40) && WorldGen.genRand.Next(2) == 0)
{
Main.tile[l + 3, num4].wall = 0;
}
if (Main.tile[l, num4].active())
{
flag3 = false;
}
}
}
else if (Main.tile[l, num4].wall == 0 && Main.tile[l, num4 + 1].wall == 0 && Main.tile[l, num4 + 2].wall == 0 && Main.tile[l, num4 + 3].wall == 0 && Main.tile[l, num4 + 4].wall == 0 && Main.tile[l - 1, num4].wall == 0 && Main.tile[l + 1, num4].wall == 0 && Main.tile[l - 2, num4].wall == 0 && Main.tile[l + 2, num4].wall == 0 && !Main.tile[l, num4].active() && !Main.tile[l, num4 + 1].active() && !Main.tile[l, num4 + 2].active() && !Main.tile[l, num4 + 3].active())
{
flag3 = true;
}
num4++;
}
}
});
WorldGen.AddGenerationPass("Pyramids", delegate(GenerationProgress progress)
{
for (int k = 0; k < numPyr; k++)
{
int num = PyrX[k];
int num2 = PyrY[k];
if (num > 300 && num < Main.maxTilesX - 300 && (dungeonSide >= 0 || (double)num >= (double)WorldGen.dungeonX + (double)Main.maxTilesX * 0.15))
{
if (dungeonSide <= 0 || (double)num <= (double)WorldGen.dungeonX - (double)Main.maxTilesX * 0.15)
{
while (!Main.tile[num, num2].active() && (double)num2 < Main.worldSurface)
{
num2++;
}
if ((double)num2 < Main.worldSurface && Main.tile[num, num2].type == 53)
{
int num3 = Main.maxTilesX;
for (int l = 0; l < k; l++)
{
int num4 = Math.Abs(num - PyrX[l]);
if (num4 < num3)
{
num3 = num4;
}
}
if (num3 >= 250)
{
num2--;
WorldGen.Pyramid(num, num2);
}
}
}
}
}
});
WorldGen.AddGenerationPass("Dirt Rock Wall Runner", delegate(GenerationProgress progress)
{
for (int k = 0; k < Main.maxTilesX; k++)
{
int num = WorldGen.genRand.Next(10, Main.maxTilesX - 10);
int num2 = WorldGen.genRand.Next(10, (int)Main.worldSurface);
if (Main.tile[num, num2].wall == 2)
{
WorldGen.DirtyRockRunner(num, num2);
}
}
});
WorldGen.AddGenerationPass("Living Trees", delegate(GenerationProgress progress)
{
float num = (float)(Main.maxTilesX / 4200);
int num2 = WorldGen.genRand.Next(0, (int)(3f * num));
for (int k = 0; k < num2; k++)
{
bool flag2 = false;
int num3 = 0;
while (!flag2)
{
num3++;
if (num3 > 1000)
{
flag2 = true;
}
int num4 = WorldGen.genRand.Next(300, Main.maxTilesX - 300);
if (num4 <= Main.maxTilesX / 2 - 100 || num4 >= Main.maxTilesX / 2 + 100)
{
int num5 = 0;
while (!Main.tile[num4, num5].active() && (double)num5 < Main.worldSurface)
{
num5++;
}
if (Main.tile[num4, num5].type == 0)
{
num5--;
if (num5 > 150)
{
bool flag3 = true;
for (int l = num4 - 50; l < num4 + 50; l++)
{
for (int m = num5 - 50; m < num5 + 50; m++)
{
if (Main.tile[l, m].active())
{
int type = (int)Main.tile[l, m].type;
if (type == 41 || type == 43 || type == 44 || type == 189 || type == 196)
{
flag3 = false;
}
}
}
}
if (flag3)
{
flag2 = WorldGen.GrowLivingTree(num4, num5);
}
}
}
}
}
}
Main.tileSolid[192] = false;
});
WorldGen.AddGenerationPass("Wood Tree Walls", delegate(GenerationProgress progress)
{
for (int k = 25; k < Main.maxTilesX - 25; k++)
{
int num = 25;
while ((double)num < Main.worldSurface)
{
if (Main.tile[k, num].type == 191 || Main.tile[k, num - 1].type == 191 || Main.tile[k - 1, num].type == 191 || Main.tile[k + 1, num].type == 191 || Main.tile[k, num + 1].type == 191)
{
bool flag2 = true;
for (int l = k - 1; l <= k + 1; l++)
{
for (int m = num - 1; m <= num + 1; m++)
{
if (l != k && m != num && Main.tile[l, m].type != 191 && Main.tile[l, m].wall != 78)
{
flag2 = false;
}
}
}
if (flag2)
{
Main.tile[k, num].wall = 78;
}
}
num++;
}
}
});
WorldGen.AddGenerationPass("Alters", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[26];
for (int k = 0; k < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 2E-05); k++)
{
float value = (float)((double)k / ((double)(Main.maxTilesX * Main.maxTilesY) * 2E-05));
progress.Set(value);
bool flag2 = false;
int num = 0;
while (!flag2)
{
int num2 = WorldGen.genRand.Next(1, Main.maxTilesX);
int num3 = (int)(worldSurfaceHigh + 20.0);
int style = 0;
if (WorldGen.crimson)
{
style = 1;
}
WorldGen.Place3x2(num2, num3, 26, style);
if (Main.tile[num2, num3].type == 26)
{
flag2 = true;
}
else
{
num++;
if (num >= 10000)
{
flag2 = true;
}
}
}
}
});
WorldGen.AddGenerationPass("Wet Jungle", delegate(GenerationProgress progress)
{
for (int k = 0; k < Main.maxTilesX; k++)
{
i2 = k;
int num = (int)WorldGen.worldSurfaceLow;
while ((double)num < Main.worldSurface - 1.0)
{
if (Main.tile[i2, num].active())
{
if (Main.tile[i2, num].type == 60)
{
Main.tile[i2, num - 1].liquid = 255;
Main.tile[i2, num - 2].liquid = 255;
break;
}
break;
}
else
{
num++;
}
}
}
});
WorldGen.AddGenerationPass("Remove Water From Sand", delegate(GenerationProgress progress)
{
for (int k = 400; k < Main.maxTilesX - 400; k++)
{
i2 = k;
int num = (int)WorldGen.worldSurfaceLow;
while ((double)num < Main.worldSurface - 1.0)
{
if (Main.tile[i2, num].active())
{
ushort type = Main.tile[i2, num].type;
if (type == 53 || type == 396 || type == 397 || type == 404 || type == 407)
{
int num2 = num;
while ((double)num2 > WorldGen.worldSurfaceLow)
{
num2--;
Main.tile[i2, num2].liquid = 0;
}
break;
}
break;
}
else
{
num++;
}
}
}
Main.tileSolid[192] = true;
});
WorldGen.AddGenerationPass("Jungle Temple", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[70];
bool flag2 = true;
while (flag2)
{
int num = WorldGen.genRand.Next((int)Main.rockLayer, Main.maxTilesY - 500);
int num2;
if (dungeonSide < 0)
{
num2 = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.6), (int)((double)Main.maxTilesX * 0.85));
}
else
{
num2 = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.15), (int)((double)Main.maxTilesX * 0.4));
}
if (Main.tile[num2, num].active() && Main.tile[num2, num].type == 60)
{
flag2 = false;
WorldGen.makeTemple(num2, num);
}
}
});
WorldGen.AddGenerationPass("Hives", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[71];
float num = (float)(Main.maxTilesX / 4200);
float num2 = (float)(1 + WorldGen.genRand.Next((int)(5f * num), (int)(8f * num)));
int num3 = 10000;
while (num2 > 0f && num3 > 0)
{
num3--;
Point origin = WorldGen.RandomWorldPoint((int)(Main.worldSurface + Main.rockLayer) >> 1, 20, 300, 20);
if (Biomes<HiveBiome>.Place(origin, structures))
{
num2 -= 1f;
int num4 = WorldGen.genRand.Next(5);
int num5 = 0;
int num6 = 10000;
while (num5 < num4 && num6 > 0)
{
float num7 = WorldGen.genRand.NextFloat() * 60f + 30f;
float num8 = WorldGen.genRand.NextFloat() * 6.28318548f;
int num9 = (int)(Math.Cos((double)num8) * (double)num7) + origin.X;
int y = (int)(Math.Sin((double)num8) * (double)num7) + origin.Y;
num6--;
if (num9 > 50 && num9 < Main.maxTilesX - 50 && Biomes<HoneyPatchBiome>.Place(num9, y, structures))
{
num5++;
}
}
}
}
});
WorldGen.AddGenerationPass("Jungle Chests", delegate(GenerationProgress progress)
{
int num = WorldGen.genRand.Next(40, Main.maxTilesX - 40);
int num2 = WorldGen.genRand.Next((int)(Main.worldSurface + Main.rockLayer) / 2, Main.maxTilesY - 400);
float num3 = (float)WorldGen.genRand.Next(7, 12);
num3 *= (float)(Main.maxTilesX / 4200);
int num4 = 0;
while ((float)num4 < num3)
{
bool flag2 = true;
while (flag2)
{
num = WorldGen.genRand.Next(40, Main.maxTilesX / 2 - 40);
if (dungeonSide < 0)
{
num += Main.maxTilesX / 2;
}
num2 = WorldGen.genRand.Next((int)(Main.worldSurface + Main.rockLayer) / 2, Main.maxTilesY - 400);
if (Main.tile[num, num2].type == 60)
{
int num5 = 30;
flag2 = false;
for (int k = num - num5; k < num + num5; k += 3)
{
for (int l = num2 - num5; l < num2 + num5; l += 3)
{
if (Main.tile[k, l].active() && (Main.tile[k, l].type == 225 || Main.tile[k, l].type == 229 || Main.tile[k, l].type == 226 || Main.tile[k, l].type == 119 || Main.tile[k, l].type == 120))
{
flag2 = false;
}
if (Main.tile[k, l].wall == 86 || Main.tile[k, l].wall == 87)
{
flag2 = false;
}
}
}
}
if (!flag2)
{
int m = WorldGen.genRand.Next(2, 4);
int num6 = WorldGen.genRand.Next(2, 4);
int num7 = 0;
if (jungleHut == 119)
{
num7 = 23;
}
else if (jungleHut == 120)
{
num7 = 24;
}
else if (jungleHut == 158)
{
num7 = 42;
}
else if (jungleHut == 175)
{
num7 = 45;
}
else if (jungleHut == 45)
{
num7 = 10;
}
for (int n = num - m - 1; n <= num + m + 1; n++)
{
for (int num8 = num2 - num6 - 1; num8 <= num2 + num6 + 1; num8++)
{
Main.tile[n, num8].active(true);
Main.tile[n, num8].type = jungleHut;
Main.tile[n, num8].liquid = 0;
Main.tile[n, num8].lava(false);
}
}
for (int num9 = num - m; num9 <= num + m; num9++)
{
for (int num10 = num2 - num6; num10 <= num2 + num6; num10++)
{
Main.tile[num9, num10].active(false);
Main.tile[num9, num10].wall = (byte)num7;
}
}
bool flag3 = false;
int num11 = 0;
while (!flag3 && num11 < 100)
{
num11++;
int num12 = WorldGen.genRand.Next(num - m, num + m + 1);
int num13 = WorldGen.genRand.Next(num2 - num6, num2 + num6 - 2);
WorldGen.PlaceTile(num12, num13, 4, true, false, -1, 3);
if (Main.tile[num12, num13].type == 4)
{
flag3 = true;
}
}
for (int num14 = num - m - 1; num14 <= num + m + 1; num14++)
{
for (int num15 = num2 + num6 - 2; num15 <= num2 + num6; num15++)
{
Main.tile[num14, num15].active(false);
}
}
for (int num16 = num - m - 1; num16 <= num + m + 1; num16++)
{
for (int num17 = num2 + num6 - 2; num17 <= num2 + num6 - 1; num17++)
{
Main.tile[num16, num17].active(false);
}
}
for (int num18 = num - m - 1; num18 <= num + m + 1; num18++)
{
int num19 = 4;
int num20 = num2 + num6 + 2;
while (!Main.tile[num18, num20].active() && num20 < Main.maxTilesY && num19 > 0)
{
Main.tile[num18, num20].active(true);
Main.tile[num18, num20].type = 59;
num20++;
num19--;
}
}
m -= WorldGen.genRand.Next(1, 3);
int num21 = num2 - num6 - 2;
while (m > -1)
{
for (int num22 = num - m - 1; num22 <= num + m + 1; num22++)
{
Main.tile[num22, num21].active(true);
Main.tile[num22, num21].type = jungleHut;
}
m -= WorldGen.genRand.Next(1, 3);
num21--;
}
WorldGen.JChestX[WorldGen.numJChests] = num;
WorldGen.JChestY[WorldGen.numJChests] = num2;
WorldGen.numJChests++;
}
}
num4++;
}
Main.tileSolid[137] = false;
});
WorldGen.AddGenerationPass("Smooth World", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[60];
for (int k = 20; k < Main.maxTilesX - 20; k++)
{
float value = (float)k / (float)Main.maxTilesX;
progress.Set(value);
for (int l = 20; l < Main.maxTilesY - 20; l++)
{
if (Main.tile[k, l].type != 48 && Main.tile[k, l].type != 137 && Main.tile[k, l].type != 232 && Main.tile[k, l].type != 191 && Main.tile[k, l].type != 151 && Main.tile[k, l].type != 274)
{
if (!Main.tile[k, l - 1].active())
{
if (WorldGen.SolidTile(k, l) && TileID.Sets.CanBeClearedDuringGeneration[(int)Main.tile[k, l].type])
{
if (!Main.tile[k - 1, l].halfBrick() && !Main.tile[k + 1, l].halfBrick() && Main.tile[k - 1, l].slope() == 0 && Main.tile[k + 1, l].slope() == 0)
{
if (WorldGen.SolidTile(k, l + 1))
{
if (!WorldGen.SolidTile(k - 1, l) && !Main.tile[k - 1, l + 1].halfBrick() && WorldGen.SolidTile(k - 1, l + 1) && WorldGen.SolidTile(k + 1, l) && !Main.tile[k + 1, l - 1].active())
{
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.SlopeTile(k, l, 2);
}
else
{
WorldGen.PoundTile(k, l);
}
}
else if (!WorldGen.SolidTile(k + 1, l) && !Main.tile[k + 1, l + 1].halfBrick() && WorldGen.SolidTile(k + 1, l + 1) && WorldGen.SolidTile(k - 1, l) && !Main.tile[k - 1, l - 1].active())
{
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.SlopeTile(k, l, 1);
}
else
{
WorldGen.PoundTile(k, l);
}
}
else if (WorldGen.SolidTile(k + 1, l + 1) && WorldGen.SolidTile(k - 1, l + 1) && !Main.tile[k + 1, l].active() && !Main.tile[k - 1, l].active())
{
WorldGen.PoundTile(k, l);
}
if (WorldGen.SolidTile(k, l))
{
if (WorldGen.SolidTile(k - 1, l) && WorldGen.SolidTile(k + 1, l + 2) && !Main.tile[k + 1, l].active() && !Main.tile[k + 1, l + 1].active() && !Main.tile[k - 1, l - 1].active())
{
WorldGen.KillTile(k, l, false, false, false);
}
else if (WorldGen.SolidTile(k + 1, l) && WorldGen.SolidTile(k - 1, l + 2) && !Main.tile[k - 1, l].active() && !Main.tile[k - 1, l + 1].active() && !Main.tile[k + 1, l - 1].active())
{
WorldGen.KillTile(k, l, false, false, false);
}
else if (!Main.tile[k - 1, l + 1].active() && !Main.tile[k - 1, l].active() && WorldGen.SolidTile(k + 1, l) && WorldGen.SolidTile(k, l + 2))
{
if (WorldGen.genRand.Next(5) == 0)
{
WorldGen.KillTile(k, l, false, false, false);
}
else if (WorldGen.genRand.Next(5) == 0)
{
WorldGen.PoundTile(k, l);
}
else
{
WorldGen.SlopeTile(k, l, 2);
}
}
else if (!Main.tile[k + 1, l + 1].active() && !Main.tile[k + 1, l].active() && WorldGen.SolidTile(k - 1, l) && WorldGen.SolidTile(k, l + 2))
{
if (WorldGen.genRand.Next(5) == 0)
{
WorldGen.KillTile(k, l, false, false, false);
}
else if (WorldGen.genRand.Next(5) == 0)
{
WorldGen.PoundTile(k, l);
}
else
{
WorldGen.SlopeTile(k, l, 1);
}
}
}
}
if (WorldGen.SolidTile(k, l) && !Main.tile[k - 1, l].active() && !Main.tile[k + 1, l].active())
{
WorldGen.KillTile(k, l, false, false, false);
}
}
}
else if (!Main.tile[k, l].active() && Main.tile[k, l + 1].type != 151 && Main.tile[k, l + 1].type != 274)
{
if (Main.tile[k + 1, l].type != 190 && Main.tile[k + 1, l].type != 48 && Main.tile[k + 1, l].type != 232 && WorldGen.SolidTile(k - 1, l + 1) && WorldGen.SolidTile(k + 1, l) && !Main.tile[k - 1, l].active() && !Main.tile[k + 1, l - 1].active())
{
WorldGen.PlaceTile(k, l, (int)Main.tile[k, l + 1].type, false, false, -1, 0);
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.SlopeTile(k, l, 2);
}
else
{
WorldGen.PoundTile(k, l);
}
}
if (Main.tile[k - 1, l].type != 190 && Main.tile[k - 1, l].type != 48 && Main.tile[k - 1, l].type != 232 && WorldGen.SolidTile(k + 1, l + 1) && WorldGen.SolidTile(k - 1, l) && !Main.tile[k + 1, l].active() && !Main.tile[k - 1, l - 1].active())
{
WorldGen.PlaceTile(k, l, (int)Main.tile[k, l + 1].type, false, false, -1, 0);
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.SlopeTile(k, l, 1);
}
else
{
WorldGen.PoundTile(k, l);
}
}
}
}
else if (!Main.tile[k, l + 1].active() && WorldGen.genRand.Next(2) == 0 && WorldGen.SolidTile(k, l) && !Main.tile[k - 1, l].halfBrick() && !Main.tile[k + 1, l].halfBrick() && Main.tile[k - 1, l].slope() == 0 && Main.tile[k + 1, l].slope() == 0 && WorldGen.SolidTile(k, l - 1))
{
if (WorldGen.SolidTile(k - 1, l) && !WorldGen.SolidTile(k + 1, l) && WorldGen.SolidTile(k - 1, l - 1))
{
WorldGen.SlopeTile(k, l, 3);
}
else if (WorldGen.SolidTile(k + 1, l) && !WorldGen.SolidTile(k - 1, l) && WorldGen.SolidTile(k + 1, l - 1))
{
WorldGen.SlopeTile(k, l, 4);
}
}
}
}
}
for (int m = 20; m < Main.maxTilesX - 20; m++)
{
for (int n = 20; n < Main.maxTilesY - 20; n++)
{
if (WorldGen.genRand.Next(2) == 0 && !Main.tile[m, n - 1].active() && Main.tile[m, n].type != 137 && Main.tile[m, n].type != 48 && Main.tile[m, n].type != 232 && Main.tile[m, n].type != 191 && Main.tile[m, n].type != 151 && Main.tile[m, n].type != 274 && Main.tile[m, n].type != 75 && Main.tile[m, n].type != 76 && WorldGen.SolidTile(m, n) && Main.tile[m - 1, n].type != 137 && Main.tile[m + 1, n].type != 137)
{
if (WorldGen.SolidTile(m, n + 1) && WorldGen.SolidTile(m + 1, n) && !Main.tile[m - 1, n].active())
{
WorldGen.SlopeTile(m, n, 2);
}
if (WorldGen.SolidTile(m, n + 1) && WorldGen.SolidTile(m - 1, n) && !Main.tile[m + 1, n].active())
{
WorldGen.SlopeTile(m, n, 1);
}
}
if (Main.tile[m, n].slope() == 1 && !WorldGen.SolidTile(m - 1, n))
{
WorldGen.SlopeTile(m, n, 0);
WorldGen.PoundTile(m, n);
}
if (Main.tile[m, n].slope() == 2 && !WorldGen.SolidTile(m + 1, n))
{
WorldGen.SlopeTile(m, n, 0);
WorldGen.PoundTile(m, n);
}
}
}
Main.tileSolid[137] = true;
Main.tileSolid[190] = false;
Main.tileSolid[192] = false;
});
WorldGen.AddGenerationPass("Settle Liquids", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[27];
Liquid.QuickWater(3, -1, -1);
WorldGen.WaterCheck();
int k = 0;
Liquid.quickSettle = true;
while (k < 10)
{
int num = Liquid.numLiquid + LiquidBuffer.numLiquidBuffer;
k++;
float num2 = 0f;
while (Liquid.numLiquid > 0)
{
float num3 = (float)(num - (Liquid.numLiquid + LiquidBuffer.numLiquidBuffer)) / (float)num;
if (Liquid.numLiquid + LiquidBuffer.numLiquidBuffer > num)
{
num = Liquid.numLiquid + LiquidBuffer.numLiquidBuffer;
}
if (num3 > num2)
{
num2 = num3;
}
else
{
num3 = num2;
}
if (k == 1)
{
progress.Set(num3 / 3f + 0.33f);
}
int num4 = 10;
if (k > num4)
{
}
Liquid.UpdateLiquid();
}
WorldGen.WaterCheck();
progress.Set((float)k * 0.1f / 3f + 0.66f);
}
Liquid.quickSettle = false;
Main.tileSolid[190] = true;
});
WorldGen.AddGenerationPass("Waterfalls", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[69];
for (int k = 20; k < Main.maxTilesX - 20; k++)
{
float num = (float)k / (float)Main.maxTilesX;
progress.Set(num * 0.5f);
for (int l = 20; l < Main.maxTilesY - 20; l++)
{
if (WorldGen.SolidTile(k, l) && !Main.tile[k - 1, l].active() && WorldGen.SolidTile(k, l + 1) && !Main.tile[k + 1, l].active() && (Main.tile[k - 1, l].liquid > 0 || Main.tile[k + 1, l].liquid > 0))
{
bool flag2 = true;
int num2 = WorldGen.genRand.Next(8, 20);
int num3 = WorldGen.genRand.Next(8, 20);
num2 = l - num2;
num3 += l;
for (int m = num2; m <= num3; m++)
{
if (Main.tile[k, m].halfBrick())
{
flag2 = false;
}
}
if ((Main.tile[k, l].type == 75 || Main.tile[k, l].type == 76) && WorldGen.genRand.Next(10) != 0)
{
flag2 = false;
}
if (flag2)
{
WorldGen.PoundTile(k, l);
}
}
}
}
for (int n = 20; n < Main.maxTilesX - 20; n++)
{
float num4 = (float)n / (float)Main.maxTilesX;
progress.Set(num4 * 0.5f + 0.5f);
for (int num5 = 20; num5 < Main.maxTilesY - 20; num5++)
{
if (Main.tile[n, num5].type != 48 && Main.tile[n, num5].type != 232 && WorldGen.SolidTile(n, num5) && WorldGen.SolidTile(n, num5 + 1))
{
if (!WorldGen.SolidTile(n + 1, num5) && Main.tile[n - 1, num5].halfBrick() && Main.tile[n - 2, num5].liquid > 0)
{
WorldGen.PoundTile(n, num5);
}
if (!WorldGen.SolidTile(n - 1, num5) && Main.tile[n + 1, num5].halfBrick() && Main.tile[n + 2, num5].liquid > 0)
{
WorldGen.PoundTile(n, num5);
}
}
}
}
});
WorldGen.AddGenerationPass("Ice", delegate(GenerationProgress progress)
{
for (int k = 10; k < Main.maxTilesX - 10; k++)
{
for (int l = (int)Main.worldSurface; l < Main.maxTilesY - 100; l++)
{
if (Main.tile[k, l].liquid > 0 && !Main.tile[k, l].lava())
{
WorldGen.MakeWateryIceThing(k, l);
}
}
}
Main.tileSolid[226] = false;
Main.tileSolid[162] = false;
});
WorldGen.AddGenerationPass("Wall Variety", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[79];
float num = (float)(Main.maxTilesX * Main.maxTilesY) / 5040000f;
int k = (int)(300f * num);
int num2 = k;
ShapeData shapeData = new ShapeData();
while (k > 0)
{
progress.Set(1f - (float)k / (float)num2);
Point point = WorldGen.RandomWorldPoint((int)worldSurface, 2, 190, 2);
Tile tile = Main.tile[point.X, point.Y];
Tile tile2 = Main.tile[point.X, point.Y - 1];
byte b = 0;
if (tile.type == 59 || tile.type == 60)
{
b = (byte)(204 + WorldGen.genRand.Next(4));
}
else if (tile.type == 1 && tile2.wall == 0)
{
if ((double)point.Y < rockLayer)
{
b = (byte)(196 + WorldGen.genRand.Next(4));
}
else if (point.Y < WorldGen.lavaLine)
{
b = (byte)(212 + WorldGen.genRand.Next(4));
}
else
{
b = (byte)(208 + WorldGen.genRand.Next(4));
}
}
if (tile.active() && b != 0 && !tile2.active())
{
bool foundInvalidTile = false;
bool flag2 = WorldUtils.Gen(new Point(point.X, point.Y - 1), new ShapeFloodFill(1000), Actions.Chain(new GenAction[]
{
new Modifiers.IsNotSolid(),
new Actions.Blank().Output(shapeData),
new Actions.ContinueWrapper(Actions.Chain(new GenAction[]
{
new Modifiers.IsTouching(true, new ushort[]
{
60,
147,
161,
396,
397
}),
new Actions.Custom(delegate(int x, int y, object[] args)
{
foundInvalidTile = true;
return true;
})
}))
}));
if (shapeData.Count > 50 && flag2 && !foundInvalidTile)
{
WorldUtils.Gen(new Point(point.X, point.Y), new ModShapes.OuterOutline(shapeData, true, true), new Actions.PlaceWall(b, true));
k--;
}
shapeData.Clear();
}
}
});
WorldGen.AddGenerationPass("Traps", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[34];
for (int k = 0; k < (int)((double)Main.maxTilesX * 0.05); k++)
{
float value = (float)((double)k / ((double)Main.maxTilesX * 0.05));
progress.Set(value);
for (int l = 0; l < 1000; l++)
{
int num = WorldGen.genRand.Next(200, Main.maxTilesX - 200);
int num2 = WorldGen.genRand.Next((int)Main.worldSurface, Main.maxTilesY - 300);
if (Main.tile[num, num2].wall == 0 && WorldGen.placeTrap(num, num2, -1))
{
break;
}
}
}
});
WorldGen.AddGenerationPass("Life Crystals", delegate(GenerationProgress progress)
{
dub2 = (float)(Main.maxTilesX / 4200);
progress.Message = Lang.gen[28];
for (int k = 0; k < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 2E-05); k++)
{
float value = (float)((double)k / ((double)(Main.maxTilesX * Main.maxTilesY) * 2E-05));
progress.Set(value);
bool flag2 = false;
int num = 0;
while (!flag2)
{
if (WorldGen.AddLifeCrystal(WorldGen.genRand.Next(40, Main.maxTilesX - 40), WorldGen.genRand.Next((int)(worldSurfaceHigh + 20.0), Main.maxTilesY - 300)))
{
flag2 = true;
}
else
{
num++;
if (num >= 10000)
{
flag2 = true;
}
}
}
}
Main.tileSolid[225] = false;
});
WorldGen.AddGenerationPass("Statues", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[29];
int num = 0;
int num2 = (int)((float)(WorldGen.statueList.Length * 2) * dub2);
for (int k = 0; k < num2; k++)
{
if (num >= WorldGen.statueList.Length)
{
num = 0;
}
int x = (int)WorldGen.statueList[num].X;
int y = (int)WorldGen.statueList[num].Y;
float value = (float)(k / num2);
progress.Set(value);
bool flag2 = false;
int num3 = 0;
while (!flag2)
{
int num4 = WorldGen.genRand.Next(20, Main.maxTilesX - 20);
int num5 = WorldGen.genRand.Next((int)(worldSurfaceHigh + 20.0), Main.maxTilesY - 300);
while (!Main.tile[num4, num5].active())
{
num5++;
}
num5--;
WorldGen.PlaceTile(num4, num5, x, true, true, -1, y);
if (Main.tile[num4, num5].active() && (int)Main.tile[num4, num5].type == x)
{
flag2 = true;
if (WorldGen.StatuesWithTraps.Contains(num))
{
WorldGen.PlaceStatueTrap(num4, num5);
}
num++;
}
else
{
num3++;
if (num3 >= 10000)
{
flag2 = true;
}
}
}
}
});
WorldGen.AddGenerationPass("Buried Chests", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[30];
Main.tileSolid[226] = true;
Main.tileSolid[162] = true;
Main.tileSolid[225] = true;
for (int k = 0; k < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 1.6E-05); k++)
{
float value = (float)((double)k / ((double)(Main.maxTilesX * Main.maxTilesY) * 1.6E-05));
progress.Set(value);
bool flag2 = false;
int num = 0;
while (!flag2)
{
float num2 = (float)WorldGen.genRand.Next((int)(5f * dub2), (int)(8f * dub2 + 1f));
int num3 = WorldGen.genRand.Next(20, Main.maxTilesX - 20);
int num4 = WorldGen.genRand.Next((int)(worldSurfaceHigh + 20.0), Main.maxTilesY - 230);
if ((float)k <= num2)
{
num4 = WorldGen.genRand.Next(Main.maxTilesY - 200, Main.maxTilesY - 50);
}
int num5 = 0;
while (Main.wallDungeon[(int)Main.tile[num3, num4].wall])
{
num5++;
num3 = WorldGen.genRand.Next(1, Main.maxTilesX);
num4 = WorldGen.genRand.Next((int)(worldSurfaceHigh + 20.0), Main.maxTilesY - 230);
if (num5 < 1000 && (float)k <= num2)
{
num4 = WorldGen.genRand.Next(Main.maxTilesY - 200, Main.maxTilesY - 50);
}
}
if ((float)k > num2)
{
for (int l = 10; l > 0; l--)
{
int x = WorldGen.genRand.Next(80, Main.maxTilesX - 80);
int y = WorldGen.genRand.Next((int)(worldSurfaceHigh + 20.0), Main.maxTilesY - 230);
if (Biomes<CaveHouseBiome>.Place(x, y, structures))
{
flag2 = true;
break;
}
}
}
else if (WorldGen.AddBuriedChest(num3, num4, 0, false, -1))
{
flag2 = true;
}
num++;
if (num >= 1000)
{
flag2 = true;
}
}
}
int num6 = (int)(2f * (float)(Main.maxTilesX * Main.maxTilesY) / 5040000f);
int num7 = 1000;
while (num7 >= 0 && num6 >= 0)
{
if (Biomes<CaveHouseBiome>.Place(WorldGen.RandomRectanglePoint(WorldGen.UndergroundDesertLocation), structures))
{
num6--;
}
num7--;
}
Main.tileSolid[226] = false;
Main.tileSolid[162] = false;
Main.tileSolid[225] = false;
});
WorldGen.AddGenerationPass("Surface Chests", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[31];
for (int k = 0; k < (int)((double)Main.maxTilesX * 0.005); k++)
{
float value = (float)((double)k / ((double)Main.maxTilesX * 0.005));
progress.Set(value);
bool flag2 = false;
int num = 0;
while (!flag2)
{
int num2 = WorldGen.genRand.Next(300, Main.maxTilesX - 300);
int num3 = WorldGen.genRand.Next((int)WorldGen.worldSurfaceLow, (int)Main.worldSurface);
bool flag3 = false;
if (Main.tile[num2, num3].wall == 2 && !Main.tile[num2, num3].active())
{
flag3 = true;
}
if (flag3 && WorldGen.AddBuriedChest(num2, num3, 0, true, -1))
{
flag2 = true;
}
else
{
num++;
if (num >= 2000)
{
flag2 = true;
}
}
}
}
});
WorldGen.AddGenerationPass("Jungle Chests Placement", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[32];
for (int k = 0; k < WorldGen.numJChests; k++)
{
float value = (float)(k / WorldGen.numJChests);
progress.Set(value);
int nextJungleChestItem = WorldGen.GetNextJungleChestItem();
if (!WorldGen.AddBuriedChest(WorldGen.JChestX[k] + WorldGen.genRand.Next(2), WorldGen.JChestY[k], nextJungleChestItem, false, 10))
{
for (int l = WorldGen.JChestX[k] - 1; l <= WorldGen.JChestX[k] + 1; l++)
{
for (int m = WorldGen.JChestY[k]; m <= WorldGen.JChestY[k] + 2; m++)
{
WorldGen.KillTile(l, m, false, false, false);
}
}
for (int n = WorldGen.JChestX[k] - 1; n <= WorldGen.JChestX[k] + 1; n++)
{
for (int num = WorldGen.JChestY[k]; num <= WorldGen.JChestY[k] + 3; num++)
{
if (num < Main.maxTilesY)
{
Main.tile[n, num].slope(0);
Main.tile[n, num].halfBrick(false);
}
}
}
WorldGen.AddBuriedChest(WorldGen.JChestX[k], WorldGen.JChestY[k], nextJungleChestItem, false, 10);
}
}
});
WorldGen.AddGenerationPass("Water Chests", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[33];
int num = 0;
int num2 = 0;
while ((float)num2 < 9f * dub2)
{
float value = (float)num2 / (9f * dub2);
progress.Set(value);
num++;
int contain;
if (WorldGen.genRand.Next(15) == 0)
{
contain = 863;
}
else if (num == 1)
{
contain = 186;
}
else if (num == 2)
{
contain = 277;
}
else
{
contain = 187;
num = 0;
}
bool flag2 = false;
while (!flag2)
{
int num3 = WorldGen.genRand.Next(1, Main.maxTilesX);
int num4 = WorldGen.genRand.Next(1, Main.maxTilesY - 200);
while (Main.tile[num3, num4].liquid < 200 || Main.tile[num3, num4].lava())
{
num3 = WorldGen.genRand.Next(1, Main.maxTilesX);
num4 = WorldGen.genRand.Next(1, Main.maxTilesY - 200);
}
flag2 = WorldGen.AddBuriedChest(num3, num4, contain, false, 17);
}
flag2 = false;
while (!flag2)
{
int num5 = WorldGen.genRand.Next(1, Main.maxTilesX);
int num6 = WorldGen.genRand.Next((int)Main.worldSurface, Main.maxTilesY - 200);
while (Main.tile[num5, num6].liquid < 200 || Main.tile[num5, num6].lava())
{
num5 = WorldGen.genRand.Next(1, Main.maxTilesX);
num6 = WorldGen.genRand.Next(1, Main.maxTilesY - 200);
}
flag2 = WorldGen.AddBuriedChest(num5, num6, contain, false, 17);
}
num2++;
}
});
WorldGen.AddGenerationPass("Spider Caves", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[64];
WorldGen.maxTileCount = 3500;
for (int k = 0; k < (int)((double)Main.maxTilesX * 0.005); k++)
{
float value = (float)((double)k / ((double)Main.maxTilesX * 0.005));
progress.Set(value);
int num = 0;
int x = WorldGen.genRand.Next(200, Main.maxTilesX - 200);
int y = WorldGen.genRand.Next((int)(Main.worldSurface + Main.rockLayer) / 2, Main.maxTilesY - 230);
int num2 = WorldGen.countTiles(x, y, false, true);
while ((num2 >= 3500 || num2 < 500) && num < 500)
{
num++;
x = WorldGen.genRand.Next(200, Main.maxTilesX - 200);
y = WorldGen.genRand.Next((int)Main.rockLayer + 30, Main.maxTilesY - 230);
num2 = WorldGen.countTiles(x, y, false, true);
}
if (num < 500)
{
WorldGen.Spread.Spider(x, y);
}
}
Main.tileSolid[162] = true;
});
WorldGen.AddGenerationPass("Gem Caves", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[64];
WorldGen.maxTileCount = 300;
for (int k = 0; k < (int)((double)Main.maxTilesX * 0.003); k++)
{
float value = (float)((double)k / ((double)Main.maxTilesX * 0.003));
progress.Set(value);
int num = 0;
int x = WorldGen.genRand.Next(200, Main.maxTilesX - 200);
int y = WorldGen.genRand.Next((int)Main.rockLayer + 30, Main.maxTilesY - 230);
int num2 = WorldGen.countTiles(x, y, false, false);
while ((num2 >= 300 || num2 < 50 || WorldGen.lavaCount > 0 || WorldGen.iceCount > 0 || WorldGen.rockCount == 0) && num < 1000)
{
num++;
x = WorldGen.genRand.Next(200, Main.maxTilesX - 200);
y = WorldGen.genRand.Next((int)Main.rockLayer + 30, Main.maxTilesY - 230);
num2 = WorldGen.countTiles(x, y, false, false);
}
if (num < 1000)
{
WorldGen.gemCave(x, y);
}
}
});
WorldGen.AddGenerationPass("Moss", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[61];
WorldGen.randMoss();
WorldGen.maxTileCount = 2500;
for (int k = 0; k < (int)((double)Main.maxTilesX * 0.01); k++)
{
float value = (float)((double)k / ((double)Main.maxTilesX * 0.01));
progress.Set(value);
int num = 0;
int x = WorldGen.genRand.Next(200, Main.maxTilesX - 200);
int y = WorldGen.genRand.Next((int)(Main.worldSurface + Main.rockLayer) / 2, WorldGen.waterLine);
int num2 = WorldGen.countTiles(x, y, false, false);
while ((num2 >= 2500 || num2 < 10 || WorldGen.lavaCount > 0 || WorldGen.iceCount > 0 || WorldGen.rockCount == 0) && num < 1000)
{
num++;
x = WorldGen.genRand.Next(200, Main.maxTilesX - 200);
y = WorldGen.genRand.Next((int)Main.rockLayer + 30, Main.maxTilesY - 230);
num2 = WorldGen.countTiles(x, y, false, false);
}
if (num < 1000)
{
WorldGen.setMoss(x, y);
WorldGen.Spread.Moss(x, y);
}
}
for (int l = 0; l < Main.maxTilesX; l++)
{
int num3 = WorldGen.genRand.Next(50, Main.maxTilesX - 50);
int num4 = WorldGen.genRand.Next((int)(Main.worldSurface + Main.rockLayer) / 2, WorldGen.lavaLine);
if (Main.tile[num3, num4].type == 1)
{
WorldGen.setMoss(num3, num4);
Main.tile[num3, num4].type = (ushort)WorldGen.mossTile;
}
}
float num5 = (float)Main.maxTilesX * 0.05f;
while (num5 > 0f)
{
int num6 = WorldGen.genRand.Next(50, Main.maxTilesX - 50);
int num7 = WorldGen.genRand.Next((int)(Main.worldSurface + Main.rockLayer) / 2, WorldGen.lavaLine);
if (Main.tile[num6, num7].type == 1 && (!Main.tile[num6 - 1, num7].active() || !Main.tile[num6 + 1, num7].active() || !Main.tile[num6, num7 - 1].active() || !Main.tile[num6, num7 + 1].active()))
{
WorldGen.setMoss(num6, num7);
Main.tile[num6, num7].type = (ushort)WorldGen.mossTile;
num5 -= 1f;
}
}
num5 = (float)Main.maxTilesX * 0.065f;
while (num5 > 0f)
{
int num8 = WorldGen.genRand.Next(50, Main.maxTilesX - 50);
int num9 = WorldGen.genRand.Next(WorldGen.waterLine, Main.maxTilesY - 200);
if (Main.tile[num8, num9].type == 1 && (!Main.tile[num8 - 1, num9].active() || !Main.tile[num8 + 1, num9].active() || !Main.tile[num8, num9 - 1].active() || !Main.tile[num8, num9 + 1].active()))
{
int num10 = 25;
int num11 = 0;
for (int m = num8 - num10; m < num8 + num10; m++)
{
for (int n = num9 - num10; n < num9 + num10; n++)
{
if (Main.tile[m, n].liquid > 0 && Main.tile[m, n].lava())
{
num11++;
}
}
}
if (num11 > 20)
{
Main.tile[num8, num9].type = 381;
num5 -= 1f;
}
else
{
num5 -= 0.002f;
}
}
}
for (int num12 = 0; num12 < Main.maxTilesX; num12++)
{
for (int num13 = 0; num13 < Main.maxTilesY; num13++)
{
if (Main.tile[num12, num13].active() && Main.tileMoss[(int)Main.tile[num12, num13].type])
{
for (int num14 = 0; num14 < 4; num14++)
{
int num15 = num12;
int num16 = num13;
if (num14 == 0)
{
num15--;
}
if (num14 == 1)
{
num15++;
}
if (num14 == 2)
{
num16--;
}
if (num14 == 3)
{
num16++;
}
try
{
WorldGen.grassSpread = 0;
WorldGen.SpreadGrass(num15, num16, 1, (int)Main.tile[num12, num13].type, true, 0);
}
catch
{
WorldGen.grassSpread = 0;
WorldGen.SpreadGrass(num15, num16, 1, (int)Main.tile[num12, num13].type, false, 0);
}
}
}
}
}
});
WorldGen.AddGenerationPass("Temple", delegate(GenerationProgress progress)
{
Main.tileSolid[162] = false;
Main.tileSolid[226] = true;
WorldGen.templePart2();
Main.tileSolid[232] = false;
});
WorldGen.AddGenerationPass("Ice Walls", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[63];
WorldGen.maxTileCount = 1500;
for (int k = 0; k < (int)((double)Main.maxTilesX * 0.04); k++)
{
float num = (float)((double)k / ((double)Main.maxTilesX * 0.04));
progress.Set(num * 0.66f);
int num2 = 0;
int x = WorldGen.genRand.Next(200, Main.maxTilesX - 200);
int y = WorldGen.genRand.Next((int)(Main.worldSurface + Main.rockLayer) / 2, Main.maxTilesY - 220);
int num3 = WorldGen.countTiles(x, y, false, true);
while ((num3 >= 1500 || num3 < 10) && num2 < 500)
{
num2++;
x = WorldGen.genRand.Next(200, Main.maxTilesX - 200);
y = WorldGen.genRand.Next((int)(Main.worldSurface + Main.rockLayer) / 2, Main.maxTilesY - 220);
num3 = WorldGen.countTiles(x, y, false, true);
}
if (num2 < 500)
{
int num4 = WorldGen.genRand.Next(2);
if (WorldGen.iceCount > 0)
{
if (num4 == 0)
{
num4 = 40;
}
else if (num4 == 1)
{
num4 = 71;
}
}
else if (WorldGen.lavaCount > 0)
{
num4 = 79;
}
else
{
num4 = WorldGen.genRand.Next(4);
if (num4 == 0)
{
num4 = 59;
}
else if (num4 == 1)
{
num4 = 61;
}
else if (num4 == 2)
{
num4 = 170;
}
else if (num4 == 3)
{
num4 = 171;
}
}
WorldGen.Spread.Wall(x, y, num4);
}
}
WorldGen.maxTileCount = 1500;
for (int l = 0; l < (int)((double)Main.maxTilesX * 0.02); l++)
{
float num5 = (float)((double)l / ((double)Main.maxTilesX * 0.02));
progress.Set(num5 * 0.34f + 0.66f);
int num6 = 0;
int num7 = WorldGen.genRand.Next(200, Main.maxTilesX - 200);
int num8 = WorldGen.genRand.Next((int)Main.worldSurface, WorldGen.lavaLine);
int num9 = 0;
if (Main.tile[num7, num8].wall == 64)
{
num9 = WorldGen.countTiles(num7, num8, true, false);
}
while ((num9 >= 1500 || num9 < 10) && num6 < 1000)
{
num6++;
num7 = WorldGen.genRand.Next(200, Main.maxTilesX - 200);
num8 = WorldGen.genRand.Next((int)Main.worldSurface, WorldGen.lavaLine);
if (!Main.wallHouse[(int)Main.tile[num7, num8].wall])
{
if (Main.tile[num7, num8].wall == 64)
{
num9 = WorldGen.countTiles(num7, num8, true, false);
}
else
{
num9 = 0;
}
}
}
if (num6 < 1000)
{
WorldGen.Spread.Wall2(num7, num8, 15);
}
}
});
WorldGen.AddGenerationPass("Jungle Trees", delegate(GenerationProgress progress)
{
for (int k = 0; k < Main.maxTilesX; k++)
{
for (int l = (int)Main.worldSurface - 1; l < Main.maxTilesY - 350; l++)
{
if (WorldGen.genRand.Next(10) == 0)
{
WorldGen.GrowUndergroundTree(k, l);
}
}
}
});
WorldGen.AddGenerationPass("Floating Island Houses", delegate(GenerationProgress progress)
{
for (int k = 0; k < WorldGen.numIslandHouses; k++)
{
if (!WorldGen.skyLake[k])
{
WorldGen.IslandHouse(WorldGen.fihX[k], WorldGen.fihY[k]);
}
}
});
WorldGen.AddGenerationPass("Quick Cleanup", delegate(GenerationProgress progress)
{
Main.tileSolid[137] = false;
Main.tileSolid[130] = false;
for (int k = 20; k < Main.maxTilesX - 20; k++)
{
for (int l = 20; l < Main.maxTilesY - 20; l++)
{
if (Main.tile[k, l].type != 19 && TileID.Sets.CanBeClearedDuringGeneration[(int)Main.tile[k, l].type])
{
if (Main.tile[k, l].topSlope() || Main.tile[k, l].halfBrick())
{
if (!WorldGen.SolidTile(k, l + 1))
{
Main.tile[k, l].active(false);
}
if (Main.tile[k + 1, l].type == 137 || Main.tile[k - 1, l].type == 137)
{
Main.tile[k, l].active(false);
}
}
else if (Main.tile[k, l].bottomSlope())
{
if (!WorldGen.SolidTile(k, l - 1))
{
Main.tile[k, l].active(false);
}
if (Main.tile[k + 1, l].type == 137 || Main.tile[k - 1, l].type == 137)
{
Main.tile[k, l].active(false);
}
}
}
}
}
});
WorldGen.AddGenerationPass("Pots", delegate(GenerationProgress progress)
{
Main.tileSolid[137] = true;
Main.tileSolid[130] = true;
progress.Message = Lang.gen[35];
for (int k = 0; k < (int)((double)(Main.maxTilesX * Main.maxTilesY) * 0.0008); k++)
{
float num = (float)((double)k / ((double)(Main.maxTilesX * Main.maxTilesY) * 0.0008));
progress.Set(num);
bool flag2 = false;
int num2 = 0;
while (!flag2)
{
int num3 = WorldGen.genRand.Next((int)worldSurfaceHigh, Main.maxTilesY - 10);
if ((double)num > 0.93)
{
num3 = Main.maxTilesY - 150;
}
else if ((double)num > 0.75)
{
num3 = (int)WorldGen.worldSurfaceLow;
}
int num4 = WorldGen.genRand.Next(1, Main.maxTilesX);
bool flag3 = false;
for (int l = num3; l < Main.maxTilesY; l++)
{
if (!flag3)
{
if (Main.tile[num4, l].active() && Main.tileSolid[(int)Main.tile[num4, l].type] && !Main.tile[num4, l - 1].lava())
{
flag3 = true;
}
}
else
{
int style = WorldGen.genRand.Next(0, 4);
int num5 = 0;
if (l < Main.maxTilesY - 5)
{
num5 = (int)Main.tile[num4, l + 1].type;
}
if (num5 == 147 || num5 == 161 || num5 == 162)
{
style = WorldGen.genRand.Next(4, 7);
}
if (num5 == 60)
{
style = WorldGen.genRand.Next(7, 10);
}
if (Main.wallDungeon[(int)Main.tile[num4, l].wall])
{
style = WorldGen.genRand.Next(10, 13);
}
if (num5 == 41 || num5 == 43 || num5 == 44)
{
style = WorldGen.genRand.Next(10, 13);
}
if (num5 == 22 || num5 == 23 || num5 == 25)
{
style = WorldGen.genRand.Next(16, 19);
}
if (num5 == 199 || num5 == 203 || num5 == 204 || num5 == 200)
{
style = WorldGen.genRand.Next(22, 25);
}
if (num5 == 367)
{
style = WorldGen.genRand.Next(31, 34);
}
if (num5 == 226)
{
style = WorldGen.genRand.Next(28, 31);
}
if (l > Main.maxTilesY - 200)
{
style = WorldGen.genRand.Next(13, 16);
}
if (WorldGen.PlacePot(num4, l, 28, style))
{
flag2 = true;
break;
}
num2++;
if (num2 >= 10000)
{
flag2 = true;
break;
}
}
}
}
}
});
WorldGen.AddGenerationPass("Hellforge", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[36];
for (int k = 0; k < Main.maxTilesX / 200; k++)
{
float value = (float)(k / (Main.maxTilesX / 200));
progress.Set(value);
bool flag2 = false;
int num = 0;
while (!flag2)
{
int num2 = WorldGen.genRand.Next(1, Main.maxTilesX);
int num3 = WorldGen.genRand.Next(Main.maxTilesY - 250, Main.maxTilesY - 5);
try
{
if (Main.tile[num2, num3].wall != 13)
{
if (Main.tile[num2, num3].wall != 14)
{
continue;
}
}
while (!Main.tile[num2, num3].active())
{
num3++;
}
num3--;
WorldGen.PlaceTile(num2, num3, 77, false, false, -1, 0);
if (Main.tile[num2, num3].type == 77)
{
flag2 = true;
}
else
{
num++;
if (num >= 10000)
{
flag2 = true;
}
}
}
catch
{
}
}
}
});
WorldGen.AddGenerationPass("Spreading Grass", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[37];
for (int k = 0; k < Main.maxTilesX; k++)
{
i2 = k;
bool flag2 = true;
int num = 0;
while ((double)num < Main.worldSurface - 1.0)
{
if (Main.tile[i2, num].active())
{
if (flag2 && Main.tile[i2, num].type == 0)
{
try
{
WorldGen.grassSpread = 0;
WorldGen.SpreadGrass(i2, num, 0, 2, true, 0);
}
catch
{
WorldGen.grassSpread = 0;
WorldGen.SpreadGrass(i2, num, 0, 2, false, 0);
}
}
if ((double)num > worldSurfaceHigh)
{
break;
}
flag2 = false;
}
else if (Main.tile[i2, num].wall == 0)
{
flag2 = true;
}
num++;
}
}
});
WorldGen.AddGenerationPass("Piles", delegate(GenerationProgress progress)
{
Main.tileSolid[190] = false;
Main.tileSolid[196] = false;
Main.tileSolid[189] = false;
Main.tileSolid[202] = false;
int num = 0;
while ((double)num < (double)Main.maxTilesX * 0.06)
{
bool flag2 = false;
while (!flag2)
{
int num2 = WorldGen.genRand.Next(25, Main.maxTilesX - 25);
int num3 = WorldGen.genRand.Next((int)Main.worldSurface, Main.maxTilesY - 300);
if (!Main.tile[num2, num3].active())
{
int num4 = 186;
while (!Main.tile[num2, num3 + 1].active() && num3 < Main.maxTilesY - 5)
{
num3++;
}
int num5 = WorldGen.genRand.Next(22);
if (num5 >= 16 && num5 <= 22)
{
num5 = WorldGen.genRand.Next(22);
}
if ((Main.tile[num2, num3 + 1].type == 0 || Main.tile[num2, num3 + 1].type == 1 || Main.tileMoss[(int)Main.tile[num2, num3 + 1].type]) && WorldGen.genRand.Next(5) == 0)
{
num5 = WorldGen.genRand.Next(23, 29);
num4 = 187;
}
if (num3 > Main.maxTilesY - 300 || Main.wallDungeon[(int)Main.tile[num2, num3].wall] || Main.tile[num2, num3 + 1].type == 30 || Main.tile[num2, num3 + 1].type == 19 || Main.tile[num2, num3 + 1].type == 25 || Main.tile[num2, num3 + 1].type == 203)
{
num5 = WorldGen.genRand.Next(7);
num4 = 186;
}
if (Main.tile[num2, num3 + 1].type == 147 || Main.tile[num2, num3 + 1].type == 161 || Main.tile[num2, num3 + 1].type == 162)
{
num5 = WorldGen.genRand.Next(26, 32);
num4 = 186;
}
if (Main.tile[num2, num3 + 1].type == 60)
{
num4 = 187;
num5 = WorldGen.genRand.Next(6);
}
if ((Main.tile[num2, num3 + 1].type == 57 || Main.tile[num2, num3 + 1].type == 58) && WorldGen.genRand.Next(3) < 2)
{
num4 = 187;
num5 = WorldGen.genRand.Next(6, 9);
}
if (Main.tile[num2, num3 + 1].type == 226)
{
num4 = 187;
num5 = WorldGen.genRand.Next(18, 23);
}
if (Main.tile[num2, num3 + 1].type == 70)
{
num5 = WorldGen.genRand.Next(32, 35);
num4 = 186;
}
if (num4 == 186 && num5 >= 7 && num5 <= 15 && WorldGen.genRand.Next(75) == 0)
{
num4 = 187;
num5 = 17;
}
if (Main.wallDungeon[(int)Main.tile[num2, num3].wall] && WorldGen.genRand.Next(3) != 0)
{
flag2 = true;
}
else
{
WorldGen.PlaceTile(num2, num3, num4, true, false, -1, num5);
if (Main.tile[num2, num3].type == 186 || Main.tile[num2, num3].type == 187)
{
flag2 = true;
}
if (flag2 && num4 == 186 && num5 <= 7)
{
int num6 = WorldGen.genRand.Next(1, 5);
for (int k = 0; k < num6; k++)
{
int num7 = num2 + WorldGen.genRand.Next(-10, 11);
int num8 = num3 - WorldGen.genRand.Next(5);
if (!Main.tile[num7, num8].active())
{
while (!Main.tile[num7, num8 + 1].active() && num8 < Main.maxTilesY - 5)
{
num8++;
}
int x = WorldGen.genRand.Next(12, 36);
WorldGen.PlaceSmallPile(num7, num8, x, 0, 185);
}
}
}
}
}
}
num++;
}
int num9 = 0;
while ((double)num9 < (double)Main.maxTilesX * 0.01)
{
bool flag3 = false;
while (!flag3)
{
int num10 = WorldGen.genRand.Next(25, Main.maxTilesX - 25);
int num11 = WorldGen.genRand.Next(Main.maxTilesY - 300, Main.maxTilesY - 10);
if (!Main.tile[num10, num11].active())
{
int num12 = 186;
while (!Main.tile[num10, num11 + 1].active() && num11 < Main.maxTilesY - 5)
{
num11++;
}
int num13 = WorldGen.genRand.Next(22);
if (num13 >= 16 && num13 <= 22)
{
num13 = WorldGen.genRand.Next(22);
}
if (num11 > Main.maxTilesY - 300 || Main.wallDungeon[(int)Main.tile[num10, num11].wall] || Main.tile[num10, num11 + 1].type == 30 || Main.tile[num10, num11 + 1].type == 19)
{
num13 = WorldGen.genRand.Next(7);
}
if ((Main.tile[num10, num11 + 1].type == 57 || Main.tile[num10, num11 + 1].type == 58) && WorldGen.genRand.Next(3) < 2)
{
num12 = 187;
num13 = WorldGen.genRand.Next(6, 9);
}
if (Main.tile[num10, num11 + 1].type == 147 || Main.tile[num10, num11 + 1].type == 161 || Main.tile[num10, num11 + 1].type == 162)
{
num13 = WorldGen.genRand.Next(26, 32);
}
WorldGen.PlaceTile(num10, num11, num12, true, false, -1, num13);
if (Main.tile[num10, num11].type == 186 || Main.tile[num10, num11].type == 187)
{
flag3 = true;
}
if (flag3 && num12 == 186 && num13 <= 7)
{
int num14 = WorldGen.genRand.Next(1, 5);
for (int l = 0; l < num14; l++)
{
int num15 = num10 + WorldGen.genRand.Next(-10, 11);
int num16 = num11 - WorldGen.genRand.Next(5);
if (!Main.tile[num15, num16].active())
{
while (!Main.tile[num15, num16 + 1].active() && num16 < Main.maxTilesY - 5)
{
num16++;
}
int x2 = WorldGen.genRand.Next(12, 36);
WorldGen.PlaceSmallPile(num15, num16, x2, 0, 185);
}
}
}
}
}
num9++;
}
int num17 = 0;
while ((double)num17 < (double)Main.maxTilesX * 0.003)
{
bool flag4 = false;
while (!flag4)
{
int num18 = 186;
int num19 = WorldGen.genRand.Next(25, Main.maxTilesX - 25);
int num20 = WorldGen.genRand.Next(10, (int)Main.worldSurface);
if (!Main.tile[num19, num20].active())
{
while (!Main.tile[num19, num20 + 1].active() && num20 < Main.maxTilesY - 5)
{
num20++;
}
int num21 = WorldGen.genRand.Next(7, 13);
if (num20 > Main.maxTilesY - 300 || Main.wallDungeon[(int)Main.tile[num19, num20].wall] || Main.tile[num19, num20 + 1].type == 30 || Main.tile[num19, num20 + 1].type == 19 || Main.tile[num19, num20 + 1].type == 53 || Main.tile[num19, num20 + 1].type == 25 || Main.tile[num19, num20 + 1].type == 203)
{
num21 = -1;
}
if (Main.tile[num19, num20 + 1].type == 147 || Main.tile[num19, num20 + 1].type == 161 || Main.tile[num19, num20 + 1].type == 162)
{
num21 = WorldGen.genRand.Next(26, 32);
}
if (Main.tile[num19, num20 + 1].type == 2 || Main.tile[num19 - 1, num20 + 1].type == 2 || Main.tile[num19 + 1, num20 + 1].type == 2)
{
num18 = 187;
num21 = WorldGen.genRand.Next(14, 17);
}
if (Main.tile[num19, num20 + 1].type == 151 || Main.tile[num19, num20 + 1].type == 274)
{
num18 = 186;
num21 = WorldGen.genRand.Next(7);
}
if (num21 >= 0)
{
WorldGen.PlaceTile(num19, num20, num18, true, false, -1, num21);
}
if ((int)Main.tile[num19, num20].type == num18)
{
flag4 = true;
}
}
}
num17++;
}
int num22 = 0;
while ((double)num22 < (double)Main.maxTilesX * 0.0035)
{
bool flag5 = false;
while (!flag5)
{
int num23 = WorldGen.genRand.Next(25, Main.maxTilesX - 25);
int num24 = WorldGen.genRand.Next(10, (int)Main.worldSurface);
if (!Main.tile[num23, num24].active() && Main.tile[num23, num24].wall > 0)
{
int num25 = 186;
while (!Main.tile[num23, num24 + 1].active() && num24 < Main.maxTilesY - 5)
{
num24++;
}
int num26 = WorldGen.genRand.Next(7, 13);
if (num24 > Main.maxTilesY - 300 || Main.wallDungeon[(int)Main.tile[num23, num24].wall] || Main.tile[num23, num24 + 1].type == 30 || Main.tile[num23, num24 + 1].type == 19)
{
num26 = -1;
}
if (Main.tile[num23, num24 + 1].type == 25)
{
num26 = WorldGen.genRand.Next(7);
}
if (Main.tile[num23, num24 + 1].type == 147 || Main.tile[num23, num24 + 1].type == 161 || Main.tile[num23, num24 + 1].type == 162)
{
num26 = WorldGen.genRand.Next(26, 32);
}
if (Main.tile[num23, num24 + 1].type == 2 || Main.tile[num23 - 1, num24 + 1].type == 2 || Main.tile[num23 + 1, num24 + 1].type == 2)
{
num25 = 187;
num26 = WorldGen.genRand.Next(14, 17);
}
if (Main.tile[num23, num24 + 1].type == 151 || Main.tile[num23, num24 + 1].type == 274)
{
num25 = 186;
num26 = WorldGen.genRand.Next(7);
}
if (num26 >= 0)
{
WorldGen.PlaceTile(num23, num24, num25, true, false, -1, num26);
}
if ((int)Main.tile[num23, num24].type == num25)
{
flag5 = true;
}
if (flag5 && num26 <= 7)
{
int num27 = WorldGen.genRand.Next(1, 5);
for (int m = 0; m < num27; m++)
{
int num28 = num23 + WorldGen.genRand.Next(-10, 11);
int num29 = num24 - WorldGen.genRand.Next(5);
if (!Main.tile[num28, num29].active())
{
while (!Main.tile[num28, num29 + 1].active() && num29 < Main.maxTilesY - 5)
{
num29++;
}
int x3 = WorldGen.genRand.Next(12, 36);
WorldGen.PlaceSmallPile(num28, num29, x3, 0, 185);
}
}
}
}
}
num22++;
}
int num30 = 0;
while ((double)num30 < (double)Main.maxTilesX * 0.6)
{
bool flag6 = false;
while (!flag6)
{
int num31 = WorldGen.genRand.Next(25, Main.maxTilesX - 25);
int num32 = WorldGen.genRand.Next((int)Main.worldSurface, Main.maxTilesY - 20);
if (Main.tile[num31, num32].wall == 87 && WorldGen.genRand.Next(2) == 0)
{
num31 = WorldGen.genRand.Next(25, Main.maxTilesX - 25);
num32 = WorldGen.genRand.Next((int)Main.worldSurface, Main.maxTilesY - 20);
}
if (!Main.tile[num31, num32].active())
{
while (!Main.tile[num31, num32 + 1].active() && num32 < Main.maxTilesY - 5)
{
num32++;
}
int num33 = WorldGen.genRand.Next(2);
int num34 = WorldGen.genRand.Next(36);
if (num34 >= 28 && num34 <= 35)
{
num34 = WorldGen.genRand.Next(36);
}
if (num33 == 1)
{
num34 = WorldGen.genRand.Next(25);
if (num34 >= 16 && num34 <= 24)
{
num34 = WorldGen.genRand.Next(25);
}
}
if (num32 > Main.maxTilesY - 300)
{
if (num33 == 0)
{
num34 = WorldGen.genRand.Next(12, 28);
}
if (num33 == 1)
{
num34 = WorldGen.genRand.Next(6, 16);
}
}
if (Main.wallDungeon[(int)Main.tile[num31, num32].wall] || Main.tile[num31, num32 + 1].type == 30 || Main.tile[num31, num32 + 1].type == 19 || Main.tile[num31, num32 + 1].type == 25 || Main.tile[num31, num32 + 1].type == 203 || Main.tile[num31, num32].wall == 87)
{
if (num33 == 0 && num34 < 12)
{
num34 += 12;
}
if (num33 == 1 && num34 < 6)
{
num34 += 6;
}
if (num33 == 1 && num34 >= 17)
{
num34 -= 10;
}
}
if (Main.tile[num31, num32 + 1].type == 147 || Main.tile[num31, num32 + 1].type == 161 || Main.tile[num31, num32 + 1].type == 162)
{
if (num33 == 0 && num34 < 12)
{
num34 += 36;
}
if (num33 == 1 && num34 >= 20)
{
num34 += 6;
}
if (num33 == 1 && num34 < 6)
{
num34 += 25;
}
}
if (Main.tile[num31, num32 + 1].type == 151 || Main.tile[num31, num32 + 1].type == 274)
{
if (num33 == 0)
{
num34 = WorldGen.genRand.Next(12, 28);
}
if (num33 == 1)
{
num34 = WorldGen.genRand.Next(12, 19);
}
}
flag6 = ((Main.wallDungeon[(int)Main.tile[num31, num32].wall] && WorldGen.genRand.Next(3) != 0) || WorldGen.PlaceSmallPile(num31, num32, num34, num33, 185));
if (flag6 && num33 == 1 && num34 >= 6 && num34 <= 15)
{
int num35 = WorldGen.genRand.Next(1, 5);
for (int n = 0; n < num35; n++)
{
int num36 = num31 + WorldGen.genRand.Next(-10, 11);
int num37 = num32 - WorldGen.genRand.Next(5);
if (!Main.tile[num36, num37].active())
{
while (!Main.tile[num36, num37 + 1].active() && num37 < Main.maxTilesY - 5)
{
num37++;
}
int x4 = WorldGen.genRand.Next(12, 36);
WorldGen.PlaceSmallPile(num36, num37, x4, 0, 185);
}
}
}
}
}
num30++;
}
int num38 = 0;
while ((float)num38 < (float)Main.maxTilesX * 0.02f)
{
bool flag7 = false;
while (!flag7)
{
int num39 = WorldGen.genRand.Next(25, Main.maxTilesX - 25);
int num40 = WorldGen.genRand.Next(15, (int)Main.worldSurface);
if (!Main.tile[num39, num40].active())
{
while (!Main.tile[num39, num40 + 1].active() && num40 < Main.maxTilesY - 5)
{
num40++;
}
int num41 = WorldGen.genRand.Next(2);
int num42 = WorldGen.genRand.Next(11);
if (num41 == 1)
{
num42 = WorldGen.genRand.Next(5);
}
if (Main.tile[num39, num40 + 1].type == 147 || Main.tile[num39, num40 + 1].type == 161 || Main.tile[num39, num40 + 1].type == 162)
{
if (num41 == 0 && num42 < 12)
{
num42 += 36;
}
if (num41 == 1 && num42 >= 20)
{
num42 += 6;
}
if (num41 == 1 && num42 < 6)
{
num42 += 25;
}
}
if (Main.tile[num39, num40 + 1].type == 2 && num41 == 1)
{
num42 = WorldGen.genRand.Next(38, 41);
}
if (Main.tile[num39, num40 + 1].type == 151 || Main.tile[num39, num40 + 1].type == 274)
{
if (num41 == 0)
{
num42 = WorldGen.genRand.Next(12, 28);
}
if (num41 == 1)
{
num42 = WorldGen.genRand.Next(12, 19);
}
}
if (!Main.wallDungeon[(int)Main.tile[num39, num40].wall] && Main.tile[num39, num40 + 1].type != 30 && Main.tile[num39, num40 + 1].type != 19 && Main.tile[num39, num40 + 1].type != 41 && Main.tile[num39, num40 + 1].type != 43 && Main.tile[num39, num40 + 1].type != 44 && Main.tile[num39, num40 + 1].type != 45 && Main.tile[num39, num40 + 1].type != 46 && Main.tile[num39, num40 + 1].type != 47 && Main.tile[num39, num40 + 1].type != 175 && Main.tile[num39, num40 + 1].type != 176 && Main.tile[num39, num40 + 1].type != 177 && Main.tile[num39, num40 + 1].type != 53 && Main.tile[num39, num40 + 1].type != 25 && Main.tile[num39, num40 + 1].type != 203)
{
flag7 = WorldGen.PlaceSmallPile(num39, num40, num42, num41, 185);
}
}
}
num38++;
}
int num43 = 0;
while ((float)num43 < (float)Main.maxTilesX * 0.15f)
{
bool flag8 = false;
while (!flag8)
{
int num44 = WorldGen.genRand.Next(25, Main.maxTilesX - 25);
int num45 = WorldGen.genRand.Next(15, (int)Main.worldSurface);
if (!Main.tile[num44, num45].active())
{
if (Main.tile[num44, num45].wall != 2)
{
if (Main.tile[num44, num45].wall != 40)
{
continue;
}
}
while (!Main.tile[num44, num45 + 1].active() && num45 < Main.maxTilesY - 5)
{
num45++;
}
int num46 = WorldGen.genRand.Next(2);
int num47 = WorldGen.genRand.Next(11);
if (num46 == 1)
{
num47 = WorldGen.genRand.Next(5);
}
if (Main.tile[num44, num45 + 1].type == 147 || Main.tile[num44, num45 + 1].type == 161 || Main.tile[num44, num45 + 1].type == 162)
{
if (num46 == 0 && num47 < 12)
{
num47 += 36;
}
if (num46 == 1 && num47 >= 20)
{
num47 += 6;
}
if (num46 == 1 && num47 < 6)
{
num47 += 25;
}
}
if (Main.tile[num44, num45 + 1].type == 2 && num46 == 1)
{
num47 = WorldGen.genRand.Next(38, 41);
}
if (Main.tile[num44, num45 + 1].type == 151 || Main.tile[num44, num45 + 1].type == 274)
{
if (num46 == 0)
{
num47 = WorldGen.genRand.Next(12, 28);
}
if (num46 == 1)
{
num47 = WorldGen.genRand.Next(12, 19);
}
}
if (!Main.wallDungeon[(int)Main.tile[num44, num45].wall] && Main.tile[num44, num45 + 1].type != 30 && Main.tile[num44, num45 + 1].type != 19 && Main.tile[num44, num45 + 1].type != 41 && Main.tile[num44, num45 + 1].type != 43 && Main.tile[num44, num45 + 1].type != 44 && Main.tile[num44, num45 + 1].type != 45 && Main.tile[num44, num45 + 1].type != 46 && Main.tile[num44, num45 + 1].type != 47 && Main.tile[num44, num45 + 1].type != 175 && Main.tile[num44, num45 + 1].type != 176 && Main.tile[num44, num45 + 1].type != 177 && Main.tile[num44, num45 + 1].type != 25 && Main.tile[num44, num45 + 1].type != 203)
{
flag8 = WorldGen.PlaceSmallPile(num44, num45, num47, num46, 185);
}
}
}
num43++;
}
Main.tileSolid[190] = true;
Main.tileSolid[192] = true;
Main.tileSolid[196] = true;
Main.tileSolid[189] = true;
Main.tileSolid[202] = true;
Main.tileSolid[225] = true;
});
WorldGen.AddGenerationPass("Moss", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[38];
int num = 8;
int num2 = 400;
int num3 = 4;
int num4 = 275;
for (int k = 0; k < 3; k++)
{
int num5;
int num6;
switch (k)
{
case 0:
{
IL_3D:
num5 = 5;
num6 = num4;
bool flag2 = false;
int maxValue = num3;
goto IL_77;
}
case 1:
{
num5 = num2;
num6 = Main.maxTilesX - num2;
bool flag2 = true;
int maxValue = num;
goto IL_77;
}
case 2:
{
num5 = Main.maxTilesX - num4;
num6 = Main.maxTilesX - 5;
bool flag2 = false;
int maxValue = num3;
goto IL_77;
}
}
goto IL_3D;
IL_77:
for (int l = num5; l < num6; l++)
{
int maxValue;
if (WorldGen.genRand.Next(maxValue) == 0)
{
int num7 = 0;
while ((double)num7 < Main.worldSurface - 1.0)
{
Tile tile = Main.tile[l, num7];
if (tile.active() && tile.type == 53)
{
Tile tile2 = Main.tile[l, num7 - 1];
if (!tile2.active() && tile2.wall == 0)
{
bool flag2;
if (flag2)
{
WorldGen.PlantCactus(l, num7);
break;
}
if (Main.tile[l, num7 - 2].liquid == 255 && Main.tile[l, num7 - 3].liquid == 255 && Main.tile[l, num7 - 4].liquid == 255)
{
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.PlaceTile(l, num7 - 1, 81, true, false, -1, 0);
break;
}
WorldGen.PlaceTile(l, num7 - 1, 324, true, false, -1, WorldGen.genRand.Next(2));
break;
}
else if (Main.tile[l, num7 - 2].liquid == 0)
{
WorldGen.PlaceTile(l, num7 - 1, 324, true, false, -1, WorldGen.genRand.Next(2));
break;
}
}
}
num7++;
}
}
}
}
});
WorldGen.AddGenerationPass("Spawn Point", delegate(GenerationProgress progress)
{
int num = 5;
bool flag2 = true;
while (flag2)
{
int num2 = Main.maxTilesX / 2 + WorldGen.genRand.Next(-num, num + 1);
for (int k = 0; k < Main.maxTilesY; k++)
{
if (Main.tile[num2, k].active())
{
Main.spawnTileX = num2;
Main.spawnTileY = k;
break;
}
}
flag2 = false;
num++;
if ((double)Main.spawnTileY > Main.worldSurface)
{
flag2 = true;
}
if (Main.tile[Main.spawnTileX, Main.spawnTileY - 1].liquid > 0)
{
flag2 = true;
}
}
int num3 = 10;
while ((double)Main.spawnTileY > Main.worldSurface)
{
int num4 = WorldGen.genRand.Next(Main.maxTilesX / 2 - num3, Main.maxTilesX / 2 + num3);
for (int l = 0; l < Main.maxTilesY; l++)
{
if (Main.tile[num4, l].active())
{
Main.spawnTileX = num4;
Main.spawnTileY = l;
break;
}
}
num3++;
}
});
WorldGen.AddGenerationPass("Grass Wall", delegate(GenerationProgress progress)
{
WorldGen.maxTileCount = 3500;
for (int k = 50; k < Main.maxTilesX - 50; k++)
{
int num = 0;
while ((double)num < Main.worldSurface - 10.0)
{
if (WorldGen.genRand.Next(4) == 0)
{
bool flag2 = false;
int num2 = -1;
int num3 = -1;
if (Main.tile[k, num].active() && Main.tile[k, num].type == 2 && (Main.tile[k, num].wall == 2 || Main.tile[k, num].wall == 63))
{
for (int l = k - 1; l <= k + 1; l++)
{
for (int m = num - 1; m <= num + 1; m++)
{
if (Main.tile[l, m].wall == 0 && !WorldGen.SolidTile(l, m))
{
flag2 = true;
}
}
}
if (flag2)
{
for (int n = k - 1; n <= k + 1; n++)
{
for (int num4 = num - 1; num4 <= num + 1; num4++)
{
if ((Main.tile[n, num4].wall == 2 || Main.tile[n, num4].wall == 15) && !WorldGen.SolidTile(n, num4))
{
num2 = n;
num3 = num4;
}
}
}
}
}
if (flag2 && num2 > -1 && num3 > -1)
{
int num5 = WorldGen.countDirtTiles(num2, num3);
if (num5 < WorldGen.maxTileCount)
{
try
{
WorldGen.Spread.Wall2(num2, num3, 63);
}
catch
{
}
}
}
}
num++;
}
}
for (int num6 = 5; num6 < Main.maxTilesX - 5; num6++)
{
int num7 = 10;
while ((double)num7 < Main.worldSurface - 1.0)
{
if (Main.tile[num6, num7].wall == 63 && WorldGen.genRand.Next(10) == 0)
{
Main.tile[num6, num7].wall = 65;
}
if (Main.tile[num6, num7].active() && Main.tile[num6, num7].type == 0)
{
bool flag3 = false;
for (int num8 = num6 - 1; num8 <= num6 + 1; num8++)
{
for (int num9 = num7 - 1; num9 <= num7 + 1; num9++)
{
if (Main.tile[num6, num7].wall == 63 || Main.tile[num6, num7].wall == 65)
{
flag3 = true;
break;
}
}
}
if (flag3)
{
WorldGen.SpreadGrass(num6, num7, 0, 2, true, 0);
}
}
num7++;
}
}
});
WorldGen.AddGenerationPass("Guide", delegate(GenerationProgress progress)
{
int num = NPC.NewNPC(Main.spawnTileX * 16, Main.spawnTileY * 16, 22, 0, 0f, 0f, 0f, 0f, 255);
Main.npc[num].homeTileX = Main.spawnTileX;
Main.npc[num].homeTileY = Main.spawnTileY;
Main.npc[num].direction = 1;
Main.npc[num].homeless = true;
});
WorldGen.AddGenerationPass("Sunflowers", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[39];
int num = 0;
while ((double)num < (double)Main.maxTilesX * 0.002)
{
int arg_22_0 = Main.maxTilesX / 2;
int num2 = WorldGen.genRand.Next(Main.maxTilesX);
int num3 = num2 - WorldGen.genRand.Next(10) - 7;
int num4 = num2 + WorldGen.genRand.Next(10) + 7;
if (num3 < 0)
{
num3 = 0;
}
if (num4 > Main.maxTilesX - 1)
{
num4 = Main.maxTilesX - 1;
}
for (int k = num3; k < num4; k++)
{
int num5 = 1;
while ((double)num5 < Main.worldSurface - 1.0)
{
if (Main.tile[k, num5].type == 2 && Main.tile[k, num5].active() && !Main.tile[k, num5 - 1].active())
{
WorldGen.PlaceTile(k, num5 - 1, 27, true, false, -1, 0);
}
if (Main.tile[k, num5].active())
{
break;
}
num5++;
}
}
num++;
}
});
WorldGen.AddGenerationPass("Planting Trees", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[40];
int num = 0;
while ((double)num < (double)Main.maxTilesX * 0.003)
{
int num2 = WorldGen.genRand.Next(50, Main.maxTilesX - 50);
int num3 = WorldGen.genRand.Next(25, 50);
for (int k = num2 - num3; k < num2 + num3; k++)
{
int num4 = 20;
while ((double)num4 < Main.worldSurface)
{
WorldGen.GrowEpicTree(k, num4);
num4++;
}
}
num++;
}
WorldGen.AddTrees();
});
WorldGen.AddGenerationPass("Herbs", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[41];
int num = 0;
while ((double)num < (double)Main.maxTilesX * 1.7)
{
WorldGen.PlantAlch();
num++;
}
});
WorldGen.AddGenerationPass("Dye Plants", delegate(GenerationProgress progress)
{
for (int k = 0; k < Main.maxTilesX; k++)
{
WorldGen.plantDye(WorldGen.genRand.Next(100, Main.maxTilesX - 100), WorldGen.genRand.Next(100, Main.maxTilesY - 200), false);
}
for (int l = 0; l < Main.maxTilesX / 8; l++)
{
WorldGen.plantDye(WorldGen.genRand.Next(100, Main.maxTilesX - 100), WorldGen.genRand.Next(100, Main.maxTilesY - 200), true);
}
});
WorldGen.AddGenerationPass("Webs And Honey", delegate(GenerationProgress progress)
{
for (int k = 100; k < Main.maxTilesX - 100; k++)
{
for (int l = (int)Main.worldSurface; l < Main.maxTilesY - 100; l++)
{
if (Main.tile[k, l].wall == 86)
{
if (Main.tile[k, l].liquid > 0)
{
Main.tile[k, l].honey(true);
}
if (WorldGen.genRand.Next(3) == 0)
{
WorldGen.PlaceTight(k, l, 165, false);
}
}
if (Main.tile[k, l].wall == 62)
{
Main.tile[k, l].liquid = 0;
Main.tile[k, l].lava(false);
}
if (Main.tile[k, l].wall == 62 && !Main.tile[k, l].active() && WorldGen.genRand.Next(10) != 0)
{
int num = WorldGen.genRand.Next(2, 5);
int num2 = k - num;
int num3 = k + num;
int num4 = l - num;
int num5 = l + num;
bool flag2 = false;
for (int m = num2; m <= num3; m++)
{
for (int n = num4; n <= num5; n++)
{
if (WorldGen.SolidTile(m, n))
{
flag2 = true;
break;
}
}
}
if (flag2)
{
WorldGen.PlaceTile(k, l, 51, true, false, -1, 0);
WorldGen.TileFrame(k, l, false, false);
}
}
}
}
});
WorldGen.AddGenerationPass("Weeds", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[42];
if (Main.halloween)
{
for (int k = 40; k < Main.maxTilesX - 40; k++)
{
int num = 50;
while ((double)num < Main.worldSurface)
{
if (Main.tile[k, num].active() && Main.tile[k, num].type == 2 && WorldGen.genRand.Next(15) == 0)
{
WorldGen.PlacePumpkin(k, num - 1);
int num2 = WorldGen.genRand.Next(5);
for (int l = 0; l < num2; l++)
{
WorldGen.GrowPumpkin(k, num - 1, 254);
}
}
num++;
}
}
}
WorldGen.AddPlants();
});
WorldGen.AddGenerationPass("Mud Caves To Grass", delegate(GenerationProgress progress)
{
for (int k = 0; k < Main.maxTilesX; k++)
{
for (int l = 0; l < Main.maxTilesY; l++)
{
if (Main.tile[k, l].active())
{
if (l >= (int)Main.worldSurface && Main.tile[k, l].type == 70 && !Main.tile[k, l - 1].active())
{
WorldGen.GrowShroom(k, l);
if (!Main.tile[k, l - 1].active())
{
WorldGen.PlaceTile(k, l - 1, 71, true, false, -1, 0);
}
}
if (Main.tile[k, l].type == 60 && !Main.tile[k, l - 1].active())
{
WorldGen.PlaceTile(k, l - 1, 61, true, false, -1, 0);
}
}
}
}
});
WorldGen.AddGenerationPass("Jungle Plants", delegate(GenerationProgress progress)
{
for (int k = 0; k < Main.maxTilesX * 100; k++)
{
int num = WorldGen.genRand.Next(40, Main.maxTilesX / 2 - 40);
if (dungeonSide < 0)
{
num += Main.maxTilesX / 2;
}
int num2 = WorldGen.genRand.Next(Main.maxTilesY - 300);
while (!Main.tile[num, num2].active() && num2 < Main.maxTilesY - 300)
{
num2++;
}
if (Main.tile[num, num2].active() && Main.tile[num, num2].type == 60)
{
num2--;
WorldGen.PlaceJunglePlant(num, num2, 233, WorldGen.genRand.Next(8), 0);
if (Main.tile[num, num2].type != 233)
{
WorldGen.PlaceJunglePlant(num, num2, 233, WorldGen.genRand.Next(12), 1);
}
}
}
});
WorldGen.AddGenerationPass("Vines", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[43];
for (int k = 0; k < Main.maxTilesX; k++)
{
int num = 0;
int num2 = 0;
while ((double)num2 < Main.worldSurface)
{
if (num > 0 && !Main.tile[k, num2].active())
{
Main.tile[k, num2].active(true);
Main.tile[k, num2].type = 52;
num--;
}
else
{
num = 0;
}
if (Main.tile[k, num2].active() && !Main.tile[k, num2].bottomSlope() && (Main.tile[k, num2].type == 2 || (Main.tile[k, num2].type == 192 && WorldGen.genRand.Next(4) == 0)) && WorldGen.genRand.Next(5) < 3)
{
num = WorldGen.genRand.Next(1, 10);
}
num2++;
}
num = 0;
for (int l = 0; l < Main.maxTilesY; l++)
{
if (num > 0 && !Main.tile[k, l].active())
{
Main.tile[k, l].active(true);
Main.tile[k, l].type = 62;
num--;
}
else
{
num = 0;
}
if (Main.tile[k, l].active() && Main.tile[k, l].type == 60 && !Main.tile[k, l].bottomSlope() && WorldGen.genRand.Next(5) < 3)
{
num = WorldGen.genRand.Next(1, 10);
}
}
num = 0;
for (int m = 0; m < Main.maxTilesY; m++)
{
if (num > 0 && !Main.tile[k, m].active())
{
Main.tile[k, m].active(true);
Main.tile[k, m].type = 205;
num--;
}
else
{
num = 0;
}
if (Main.tile[k, m].active() && Main.tile[k, m].type == 199 && WorldGen.genRand.Next(5) < 3)
{
num = WorldGen.genRand.Next(1, 10);
}
}
}
});
WorldGen.AddGenerationPass("Flowers", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[44];
int num = 0;
while ((double)num < (double)Main.maxTilesX * 0.005)
{
int num2 = WorldGen.genRand.Next(20, Main.maxTilesX - 20);
int num3 = WorldGen.genRand.Next(5, 15);
int num4 = WorldGen.genRand.Next(15, 30);
int num5 = 1;
while ((double)num5 < Main.worldSurface - 1.0)
{
if (Main.tile[num2, num5].active())
{
for (int k = num2 - num3; k < num2 + num3; k++)
{
for (int l = num5 - num4; l < num5 + num4; l++)
{
if (Main.tile[k, l].type == 3 || Main.tile[k, l].type == 24)
{
Main.tile[k, l].frameX = (short)(WorldGen.genRand.Next(6, 8) * 18);
if (Main.tile[k, l].type == 3 && WorldGen.genRand.Next(2) == 0)
{
Main.tile[k, l].frameX = (short)(WorldGen.genRand.Next(9, 11) * 18);
}
}
}
}
break;
}
num5++;
}
num++;
}
});
WorldGen.AddGenerationPass("Mushrooms", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[45];
int num = 0;
while ((double)num < (double)Main.maxTilesX * 0.002)
{
int num2 = WorldGen.genRand.Next(20, Main.maxTilesX - 20);
int num3 = WorldGen.genRand.Next(4, 10);
int num4 = WorldGen.genRand.Next(15, 30);
int num5 = 1;
while ((double)num5 < Main.worldSurface - 1.0)
{
if (Main.tile[num2, num5].active())
{
for (int k = num2 - num3; k < num2 + num3; k++)
{
for (int l = num5 - num4; l < num5 + num4; l++)
{
if (Main.tile[k, l].type == 3 || Main.tile[k, l].type == 24)
{
Main.tile[k, l].frameX = 144;
}
else if (Main.tile[k, l].type == 201)
{
Main.tile[k, l].frameX = 270;
}
}
}
break;
}
num5++;
}
num++;
}
});
WorldGen.AddGenerationPass("Stalac", delegate(GenerationProgress progress)
{
for (int k = 20; k < Main.maxTilesX - 20; k++)
{
for (int l = (int)Main.worldSurface; l < Main.maxTilesY - 20; l++)
{
if (!Main.tile[k, l].active() && WorldGen.genRand.Next(5) == 0)
{
if ((Main.tile[k, l - 1].type == 1 || Main.tile[k, l - 1].type == 147 || Main.tile[k, l - 1].type == 161 || Main.tile[k, l - 1].type == 25 || Main.tile[k, l - 1].type == 203 || Main.tileStone[(int)Main.tile[k, l - 1].type] || Main.tileMoss[(int)Main.tile[k, l - 1].type]) && !Main.tile[k, l].active() && !Main.tile[k, l + 1].active())
{
Main.tile[k, l - 1].slope(0);
}
if ((Main.tile[k, l + 1].type == 1 || Main.tile[k, l + 1].type == 147 || Main.tile[k, l + 1].type == 161 || Main.tile[k, l + 1].type == 25 || Main.tile[k, l + 1].type == 203 || Main.tileStone[(int)Main.tile[k, l + 1].type] || Main.tileMoss[(int)Main.tile[k, l + 1].type]) && !Main.tile[k, l].active() && !Main.tile[k, l - 1].active())
{
Main.tile[k, l + 1].slope(0);
}
WorldGen.PlaceTight(k, l, 165, false);
}
}
for (int m = 5; m < (int)Main.worldSurface; m++)
{
if ((Main.tile[k, m - 1].type == 147 || Main.tile[k, m - 1].type == 161) && WorldGen.genRand.Next(5) == 0)
{
if (!Main.tile[k, m].active() && !Main.tile[k, m + 1].active())
{
Main.tile[k, m - 1].slope(0);
}
WorldGen.PlaceTight(k, m, 165, false);
}
if ((Main.tile[k, m - 1].type == 25 || Main.tile[k, m - 1].type == 203) && WorldGen.genRand.Next(5) == 0)
{
if (!Main.tile[k, m].active() && !Main.tile[k, m + 1].active())
{
Main.tile[k, m - 1].slope(0);
}
WorldGen.PlaceTight(k, m, 165, false);
}
if ((Main.tile[k, m + 1].type == 25 || Main.tile[k, m + 1].type == 203) && WorldGen.genRand.Next(5) == 0)
{
if (!Main.tile[k, m].active() && !Main.tile[k, m - 1].active())
{
Main.tile[k, m + 1].slope(0);
}
WorldGen.PlaceTight(k, m, 165, false);
}
}
}
});
WorldGen.AddGenerationPass("Gems In Ice Biome", delegate(GenerationProgress progress)
{
int num = 0;
while ((double)num < (double)Main.maxTilesX * 0.25)
{
int num2 = WorldGen.genRand.Next((int)(Main.worldSurface + Main.rockLayer) / 2, WorldGen.lavaLine);
int num3 = WorldGen.genRand.Next(snowMinX[num2], snowMaxX[num2]);
if (Main.tile[num3, num2].active() && (Main.tile[num3, num2].type == 147 || Main.tile[num3, num2].type == 161 || Main.tile[num3, num2].type == 162 || Main.tile[num3, num2].type == 224))
{
int num4 = WorldGen.genRand.Next(1, 4);
int num5 = WorldGen.genRand.Next(1, 4);
int num6 = WorldGen.genRand.Next(1, 4);
int num7 = WorldGen.genRand.Next(1, 4);
int num8 = WorldGen.genRand.Next(12);
int style;
if (num8 < 3)
{
style = 0;
}
else if (num8 < 6)
{
style = 1;
}
else if (num8 < 8)
{
style = 2;
}
else if (num8 < 10)
{
style = 3;
}
else if (num8 < 11)
{
style = 4;
}
else
{
style = 5;
}
for (int k = num3 - num4; k < num3 + num5; k++)
{
for (int l = num2 - num6; l < num2 + num7; l++)
{
if (!Main.tile[k, l].active())
{
WorldGen.PlaceTile(k, l, 178, true, false, -1, style);
}
}
}
}
num++;
}
});
WorldGen.AddGenerationPass("Random Gems", delegate(GenerationProgress progress)
{
for (int k = 0; k < Main.maxTilesX; k++)
{
int num = WorldGen.genRand.Next(20, Main.maxTilesX - 20);
int num2 = WorldGen.genRand.Next((int)Main.rockLayer, Main.maxTilesY - 300);
if (!Main.tile[num, num2].active() && !Main.tile[num, num2].lava() && !Main.wallDungeon[(int)Main.tile[num, num2].wall] && Main.tile[num, num2].wall != 27)
{
int num3 = WorldGen.genRand.Next(12);
int style;
if (num3 < 3)
{
style = 0;
}
else if (num3 < 6)
{
style = 1;
}
else if (num3 < 8)
{
style = 2;
}
else if (num3 < 10)
{
style = 3;
}
else if (num3 < 11)
{
style = 4;
}
else
{
style = 5;
}
WorldGen.PlaceTile(num, num2, 178, true, false, -1, style);
}
}
});
WorldGen.AddGenerationPass("Moss Grass", delegate(GenerationProgress progress)
{
for (int k = 5; k < Main.maxTilesX - 5; k++)
{
for (int l = 5; l < Main.maxTilesY - 5; l++)
{
if (Main.tile[k, l].active() && Main.tileMoss[(int)Main.tile[k, l].type])
{
for (int m = 0; m < 4; m++)
{
int num = k;
int num2 = l;
if (m == 0)
{
num--;
}
if (m == 1)
{
num++;
}
if (m == 2)
{
num2--;
}
if (m == 3)
{
num2++;
}
if (!Main.tile[num, num2].active())
{
WorldGen.PlaceTile(num, num2, 184, true, false, -1, 0);
}
}
}
}
}
});
WorldGen.AddGenerationPass("Muds Walls In Jungle", delegate(GenerationProgress progress)
{
int num = 0;
int num2 = 0;
bool flag2 = false;
for (int k = 5; k < Main.maxTilesX - 5; k++)
{
int num3 = 0;
while ((double)num3 < Main.worldSurface + 20.0)
{
if (Main.tile[k, num3].active() && Main.tile[k, num3].type == 60)
{
num = k;
flag2 = true;
break;
}
num3++;
}
if (flag2)
{
break;
}
}
flag2 = false;
for (int l = Main.maxTilesX - 5; l > 5; l--)
{
int num4 = 0;
while ((double)num4 < Main.worldSurface + 20.0)
{
if (Main.tile[l, num4].active() && Main.tile[l, num4].type == 60)
{
num2 = l;
flag2 = true;
break;
}
num4++;
}
if (flag2)
{
break;
}
}
for (int m = num; m <= num2; m++)
{
int num5 = 0;
while ((double)num5 < Main.worldSurface + 20.0)
{
if (((m >= num + 2 && m <= num2 - 2) || WorldGen.genRand.Next(2) != 0) && ((m >= num + 3 && m <= num2 - 3) || WorldGen.genRand.Next(3) != 0) && (Main.tile[m, num5].wall == 2 || Main.tile[m, num5].wall == 59))
{
Main.tile[m, num5].wall = 15;
}
num5++;
}
}
});
WorldGen.AddGenerationPass("Larva", delegate(GenerationProgress progress)
{
for (int k = 0; k < WorldGen.numLarva; k++)
{
int num = WorldGen.larvaX[k];
int num2 = WorldGen.larvaY[k];
for (int l = num - 1; l <= num + 1; l++)
{
for (int m = num2 - 2; m <= num2 + 1; m++)
{
if (m != num2 + 1)
{
Main.tile[l, m].active(false);
}
else
{
Main.tile[l, m].active(true);
Main.tile[l, m].type = 225;
Main.tile[l, m].slope(0);
Main.tile[l, m].halfBrick(false);
}
}
}
WorldGen.PlaceTile(num, num2, 231, true, false, -1, 0);
}
Main.tileSolid[232] = true;
Main.tileSolid[162] = true;
});
WorldGen.AddGenerationPass("Tile Cleanup", delegate(GenerationProgress progress)
{
for (int k = 40; k < Main.maxTilesX - 40; k++)
{
for (int l = 40; l < Main.maxTilesY - 40; l++)
{
if (!Main.tile[k, l].active() && Main.tile[k, l].liquid == 0 && WorldGen.genRand.Next(3) != 0 && WorldGen.SolidTile(k, l - 1))
{
int num = WorldGen.genRand.Next(15, 21);
for (int m = l - 2; m >= l - num; m--)
{
if (Main.tile[k, m].liquid >= 128)
{
int num2 = 373;
if (Main.tile[k, m].lava())
{
num2 = 374;
}
else if (Main.tile[k, m].honey())
{
num2 = 375;
}
int maxValue = l - m;
if (WorldGen.genRand.Next(maxValue) <= 1)
{
Main.tile[k, l].type = (ushort)num2;
Main.tile[k, l].frameX = 0;
Main.tile[k, l].frameY = 0;
Main.tile[k, l].active(true);
break;
}
}
}
if (!Main.tile[k, l].active())
{
num = WorldGen.genRand.Next(3, 11);
for (int n = l + 1; n <= l + num; n++)
{
if (Main.tile[k, n].liquid >= 200)
{
int num3 = 373;
if (Main.tile[k, n].lava())
{
num3 = 374;
}
else if (Main.tile[k, n].honey())
{
num3 = 375;
}
int num4 = n - l;
if (WorldGen.genRand.Next(num4 * 3) <= 1)
{
Main.tile[k, l].type = (ushort)num3;
Main.tile[k, l].frameX = 0;
Main.tile[k, l].frameY = 0;
Main.tile[k, l].active(true);
break;
}
}
}
}
}
if (Main.tile[k, l].type == 137)
{
if (Main.tile[k, l].frameY <= 52)
{
int num5 = -1;
if (Main.tile[k, l].frameX >= 18)
{
num5 = 1;
}
if (Main.tile[k + num5, l].halfBrick() || Main.tile[k + num5, l].slope() != 0)
{
Main.tile[k + num5, l].active(false);
}
}
}
else if (Main.tile[k, l].type == 162 && Main.tile[k, l + 1].liquid == 0)
{
Main.tile[k, l].active(false);
}
if (Main.tile[k, l].wall == 13 || Main.tile[k, l].wall == 14)
{
Main.tile[k, l].liquid = 0;
}
if (Main.tile[k, l].type == 31)
{
int num6 = (int)(Main.tile[k, l].frameX / 18);
int num7 = 0;
int num8 = k;
num7 += num6 / 2;
num6 %= 2;
num8 -= num6;
int num9 = (int)(Main.tile[k, l].frameY / 18);
int num10 = 0;
int num11 = l;
num10 += num9 / 2;
num9 %= 2;
num11 -= num9;
for (int num12 = 0; num12 < 2; num12++)
{
for (int num13 = 0; num13 < 2; num13++)
{
int num14 = num8 + num12;
int num15 = num11 + num13;
Main.tile[num14, num15].active(true);
Main.tile[num14, num15].slope(0);
Main.tile[num14, num15].halfBrick(false);
Main.tile[num14, num15].type = 31;
Main.tile[num14, num15].frameX = (short)(num12 * 18 + 36 * num7);
Main.tile[num14, num15].frameY = (short)(num13 * 18 + 36 * num10);
}
}
}
if (Main.tile[k, l].type == 12)
{
int num16 = (int)(Main.tile[k, l].frameX / 18);
int num17 = 0;
int num18 = k;
num17 += num16 / 2;
num16 %= 2;
num18 -= num16;
int num19 = (int)(Main.tile[k, l].frameY / 18);
int num20 = 0;
int num21 = l;
num20 += num19 / 2;
num19 %= 2;
num21 -= num19;
for (int num22 = 0; num22 < 2; num22++)
{
for (int num23 = 0; num23 < 2; num23++)
{
int num24 = num18 + num22;
int num25 = num21 + num23;
Main.tile[num24, num25].active(true);
Main.tile[num24, num25].slope(0);
Main.tile[num24, num25].halfBrick(false);
Main.tile[num24, num25].type = 12;
Main.tile[num24, num25].frameX = (short)(num22 * 18 + 36 * num17);
Main.tile[num24, num25].frameY = (short)(num23 * 18 + 36 * num20);
}
if (!Main.tile[num22, l + 2].active())
{
Main.tile[num22, l + 2].active(true);
if (!Main.tileSolid[(int)Main.tile[num22, l + 2].type] || Main.tileSolidTop[(int)Main.tile[num22, l + 2].type])
{
Main.tile[num22, l + 2].type = 0;
}
}
Main.tile[num22, l + 2].slope(0);
Main.tile[num22, l + 2].halfBrick(false);
}
}
if (Main.tile[k, l].type == 21)
{
int num26 = (int)(Main.tile[k, l].frameX / 18);
int num27 = 0;
int num28 = k;
int num29 = l - (int)(Main.tile[k, l].frameY / 18);
while (num26 >= 2)
{
num27++;
num26 -= 2;
}
num28 -= num26;
for (int num30 = 0; num30 < 2; num30++)
{
for (int num31 = 0; num31 < 2; num31++)
{
int num32 = num28 + num30;
int num33 = num29 + num31;
Main.tile[num32, num33].active(true);
Main.tile[num32, num33].slope(0);
Main.tile[num32, num33].halfBrick(false);
Main.tile[num32, num33].type = 21;
Main.tile[num32, num33].frameX = (short)(num30 * 18 + 36 * num27);
Main.tile[num32, num33].frameY = (short)(num31 * 18);
}
if (!Main.tile[num30, l + 2].active())
{
Main.tile[num30, l + 2].active(true);
if (!Main.tileSolid[(int)Main.tile[num30, l + 2].type] || Main.tileSolidTop[(int)Main.tile[num30, l + 2].type])
{
Main.tile[num30, l + 2].type = 0;
}
}
Main.tile[num30, l + 2].slope(0);
Main.tile[num30, l + 2].halfBrick(false);
}
}
if (Main.tile[k, l].type == 28)
{
int num34 = (int)(Main.tile[k, l].frameX / 18);
int num35 = 0;
int num36 = k;
while (num34 >= 2)
{
num35++;
num34 -= 2;
}
num36 -= num34;
int num37 = (int)(Main.tile[k, l].frameY / 18);
int num38 = 0;
int num39 = l;
while (num37 >= 2)
{
num38++;
num37 -= 2;
}
num39 -= num37;
for (int num40 = 0; num40 < 2; num40++)
{
for (int num41 = 0; num41 < 2; num41++)
{
int num42 = num36 + num40;
int num43 = num39 + num41;
Main.tile[num42, num43].active(true);
Main.tile[num42, num43].slope(0);
Main.tile[num42, num43].halfBrick(false);
Main.tile[num42, num43].type = 28;
Main.tile[num42, num43].frameX = (short)(num40 * 18 + 36 * num35);
Main.tile[num42, num43].frameY = (short)(num41 * 18 + 36 * num38);
}
if (!Main.tile[num40, l + 2].active())
{
Main.tile[num40, l + 2].active(true);
if (!Main.tileSolid[(int)Main.tile[num40, l + 2].type] || Main.tileSolidTop[(int)Main.tile[num40, l + 2].type])
{
Main.tile[num40, l + 2].type = 0;
}
}
Main.tile[num40, l + 2].slope(0);
Main.tile[num40, l + 2].halfBrick(false);
}
}
if (Main.tile[k, l].type == 26)
{
int num44 = (int)(Main.tile[k, l].frameX / 18);
int num45 = 0;
int num46 = k;
int num47 = l - (int)(Main.tile[k, l].frameY / 18);
while (num44 >= 3)
{
num45++;
num44 -= 3;
}
num46 -= num44;
for (int num48 = 0; num48 < 3; num48++)
{
for (int num49 = 0; num49 < 2; num49++)
{
int num50 = num46 + num48;
int num51 = num47 + num49;
Main.tile[num50, num51].active(true);
Main.tile[num50, num51].slope(0);
Main.tile[num50, num51].halfBrick(false);
Main.tile[num50, num51].type = 26;
Main.tile[num50, num51].frameX = (short)(num48 * 18 + 54 * num45);
Main.tile[num50, num51].frameY = (short)(num49 * 18);
}
if (!Main.tile[num46 + num48, num47 + 2].active())
{
Main.tile[num46 + num48, num47 + 2].active(true);
if (!Main.tileSolid[(int)Main.tile[num46 + num48, num47 + 2].type] || Main.tileSolidTop[(int)Main.tile[num46 + num48, num47 + 2].type])
{
Main.tile[num46 + num48, num47 + 2].type = 0;
}
}
Main.tile[num46 + num48, num47 + 2].slope(0);
Main.tile[num46 + num48, num47 + 2].halfBrick(false);
}
}
}
}
});
WorldGen.AddGenerationPass("Lihzahrd Altars", delegate(GenerationProgress progress)
{
int num = WorldGen.lAltarX;
int num2 = WorldGen.lAltarY;
for (int k = 0; k <= 2; k++)
{
for (int l = 0; l <= 1; l++)
{
int num3 = num + k;
int num4 = num2 + l;
Main.tile[num3, num4].active(true);
Main.tile[num3, num4].type = 237;
Main.tile[num3, num4].frameX = (short)(k * 18);
Main.tile[num3, num4].frameY = (short)(l * 18);
}
Main.tile[k, num2 + 2].active(true);
Main.tile[k, num2 + 2].slope(0);
Main.tile[k, num2 + 2].halfBrick(false);
Main.tile[k, num2 + 2].type = 226;
}
});
WorldGen.AddGenerationPass("Micro Biomes", delegate(GenerationProgress progress)
{
progress.Message = Lang.gen[76];
float num = (float)(Main.maxTilesX * Main.maxTilesY) / 5040000f;
float num2 = (float)Main.maxTilesX / 4200f;
int num3 = (int)((float)WorldGen.genRand.Next(3, 6) * num);
int k = 0;
while (k < num3)
{
if (Biomes<ThinIceBiome>.Place(WorldGen.RandomWorldPoint((int)Main.worldSurface + 20, 50, 200, 50), structures))
{
k++;
}
}
progress.Set(0.1f);
int num4 = (int)Math.Ceiling((double)num);
int l = 0;
while (l < num4)
{
Point origin;
origin.Y = (int)worldSurface + WorldGen.genRand.Next(50, 100);
if (WorldGen.genRand.Next(2) == 0)
{
origin.X = WorldGen.genRand.Next(50, (int)((float)Main.maxTilesX * 0.3f));
}
else
{
origin.X = WorldGen.genRand.Next((int)((float)Main.maxTilesX * 0.7f), Main.maxTilesX - 50);
}
if (Biomes<EnchantedSwordBiome>.Place(origin, structures))
{
l++;
}
}
progress.Set(0.2f);
int num5 = (int)((float)WorldGen.genRand.Next(6, 12) * num);
int m = 0;
while (m < num5)
{
if (Biomes<CampsiteBiome>.Place(WorldGen.RandomWorldPoint((int)Main.worldSurface, 50, 200, 50), structures))
{
m++;
}
}
int num6 = (int)((float)WorldGen.genRand.Next(14, 30) * num);
int n = 0;
while (n < num6)
{
if (Biomes<MiningExplosivesBiome>.Place(WorldGen.RandomWorldPoint((int)rockLayer, 50, 200, 50), structures))
{
n++;
}
}
progress.Set(0.3f);
int num7 = (int)((float)WorldGen.genRand.Next(6, 12) * num2);
int num8 = 0;
int num9 = 0;
while (num8 < num7 && num9 < 20000)
{
if (Biomes<MahoganyTreeBiome>.Place(WorldGen.RandomWorldPoint((int)Main.worldSurface + 50, 50, 500, 50), structures))
{
num8++;
}
num9++;
}
progress.Set(0.4f);
if (!WorldGen.crimson)
{
int num10 = (int)((float)WorldGen.genRand.Next(1, 3) * num);
int num11 = 0;
while (num11 < num10)
{
if (Biomes<CorruptionPitBiome>.Place(WorldGen.RandomWorldPoint((int)Main.worldSurface, 50, 500, 50), structures))
{
num11++;
}
}
}
TrackGenerator.Run((int)(10f * num), (int)(num * 25f) + 250);
progress.Set(1f);
});
WorldGen.AddGenerationPass("Final Cleanup", delegate(GenerationProgress progress)
{
for (int k = 0; k < Main.maxTilesX; k++)
{
for (int l = 0; l < Main.maxTilesY; l++)
{
if (Main.tile[k, l].active() && (!WorldGen.SolidTile(k, l + 1) || !WorldGen.SolidTile(k, l + 2)))
{
ushort type = Main.tile[k, l].type;
if (type <= 112)
{
if (type != 53)
{
if (type == 112)
{
Main.tile[k, l].type = 398;
}
}
else
{
Main.tile[k, l].type = 397;
}
}
else if (type != 123)
{
if (type != 224)
{
if (type == 234)
{
Main.tile[k, l].type = 399;
}
}
else
{
Main.tile[k, l].type = 147;
}
}
else
{
Main.tile[k, l].type = 1;
}
}
}
}
WorldGen.noTileActions = false;
WorldGen.gen = false;
Main.AnglerQuestSwap();
});
WorldGen._generator.GenerateWorld(customProgressObject);
Main.WorldFileMetadata = FileMetadata.FromCurrentSettings(FileType.World);
}
public static Point RandomRectanglePoint(Rectangle rectangle)
{
return new Point(WorldGen.genRand.Next(rectangle.X, rectangle.X + rectangle.Width), WorldGen.genRand.Next(rectangle.Y, rectangle.Y + rectangle.Height));
}
public static Point RandomRectanglePoint(int x, int y, int width, int height)
{
return new Point(WorldGen.genRand.Next(x, x + width), WorldGen.genRand.Next(y, y + height));
}
public static Point RandomWorldPoint(int padding)
{
return WorldGen.RandomWorldPoint(padding, padding, padding, padding);
}
public static Point RandomWorldPoint(int top = 0, int right = 0, int bottom = 0, int left = 0)
{
return new Point(WorldGen.genRand.Next(left, Main.maxTilesX - right), WorldGen.genRand.Next(top, Main.maxTilesY - bottom));
}
public static bool GrowPalmTree(int i, int y)
{
int num = y;
while (Main.tile[i, num].type == 20)
{
num++;
}
Tile tile = Main.tile[i, num];
Tile tile2 = Main.tile[i, num - 1];
if (!tile.active() || tile.halfBrick() || tile.slope() != 0)
{
return false;
}
if (tile2.wall != 0 || tile2.liquid != 0)
{
return false;
}
if (tile.type != 53 && tile.type != 234 && tile.type != 116 && tile.type != 112)
{
return false;
}
if (!WorldGen.EmptyTileCheck(i - 1, i + 1, num - 30, num - 1, 20))
{
return false;
}
int num2 = WorldGen.genRand.Next(10, 21);
int num3 = WorldGen.genRand.Next(-8, 9);
num3 *= 2;
short num4 = 0;
for (int j = 0; j < num2; j++)
{
tile = Main.tile[i, num - 1 - j];
if (j == 0)
{
tile.active(true);
tile.type = 323;
tile.frameX = 66;
tile.frameY = 0;
}
else if (j == num2 - 1)
{
tile.active(true);
tile.type = 323;
tile.frameX = (short)(22 * WorldGen.genRand.Next(4, 7));
tile.frameY = num4;
}
else
{
if ((int)num4 != num3)
{
float num5 = (float)j / (float)num2;
bool flag = num5 >= 0.25f && ((num5 < 0.5f && WorldGen.genRand.Next(13) == 0) || (num5 < 0.7f && WorldGen.genRand.Next(9) == 0) || num5 >= 0.95f || WorldGen.genRand.Next(5) != 0 || true);
if (flag)
{
short num6 = (short)Math.Sign(num3);
num4 += num6 * 2;
}
}
tile.active(true);
tile.type = 323;
tile.frameX = (short)(22 * WorldGen.genRand.Next(0, 3));
tile.frameY = num4;
}
}
WorldGen.RangeFrame(i - 2, num - num2 - 1, i + 2, num + 1);
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, i, (int)((double)num - (double)num2 * 0.5), num2 + 1);
}
return true;
}
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)
{
ushort num = 151;
int num2 = j - WorldGen.genRand.Next(0, 7);
int num3 = WorldGen.genRand.Next(9, 13);
int num4 = 1;
int num5 = j + WorldGen.genRand.Next(75, 125);
for (int k = num2; k < num5; k++)
{
for (int l = i - num4; l < i + num4 - 1; l++)
{
Main.tile[l, k].type = num;
Main.tile[l, k].active(true);
Main.tile[l, k].halfBrick(false);
Main.tile[l, k].slope(0);
}
num4++;
}
for (int m = i - num4 - 5; m <= i + num4 + 5; m++)
{
for (int n = j - 1; n <= num5 + 1; n++)
{
bool flag = true;
for (int num6 = m - 1; num6 <= m + 1; num6++)
{
for (int num7 = n - 1; num7 <= n + 1; num7++)
{
if (Main.tile[num6, num7].type != num)
{
flag = false;
}
}
}
if (flag)
{
Main.tile[m, n].wall = 34;
WorldGen.SquareWallFrame(m, n, true);
}
}
}
int num8 = 1;
if (WorldGen.genRand.Next(2) == 0)
{
num8 = -1;
}
int num9 = i - num3 * num8;
int num10 = j + num3;
int num11 = WorldGen.genRand.Next(5, 8);
bool flag2 = true;
int num12 = WorldGen.genRand.Next(20, 30);
while (flag2)
{
flag2 = false;
bool flag3 = false;
for (int num13 = num10; num13 <= num10 + num11; num13++)
{
int num14 = num9;
if (Main.tile[num14, num13 - 1].type == 53)
{
flag3 = true;
}
if (Main.tile[num14, num13].type == num)
{
Main.tile[num14, num13 + 1].wall = 34;
Main.tile[num14 + num8, num13].wall = 34;
Main.tile[num14, num13].active(false);
flag2 = true;
}
if (flag3)
{
Main.tile[num14, num13].type = 53;
Main.tile[num14, num13].active(true);
Main.tile[num14, num13].halfBrick(false);
Main.tile[num14, num13].slope(0);
}
}
num9 -= num8;
}
num9 = i - num3 * num8;
bool flag4 = true;
bool flag5 = false;
flag2 = true;
while (flag2)
{
for (int num15 = num10; num15 <= num10 + num11; num15++)
{
int num16 = num9;
Main.tile[num16, num15].active(false);
}
num9 += num8;
num10++;
num12--;
if (num10 >= num5 - num11 * 2)
{
num12 = 10;
}
if (num12 <= 0)
{
bool flag6 = false;
if (!flag4 && !flag5)
{
flag5 = true;
flag6 = true;
int num17 = WorldGen.genRand.Next(7, 13);
int num18 = WorldGen.genRand.Next(23, 28);
int num19 = num18;
int num20 = num9;
while (num18 > 0)
{
for (int num21 = num10 - num17 + num11; num21 <= num10 + num11; num21++)
{
if (num18 == num19 || num18 == 1)
{
if (num21 >= num10 - num17 + num11 + 2)
{
Main.tile[num9, num21].active(false);
}
}
else if (num18 == num19 - 1 || num18 == 2 || num18 == num19 - 2 || num18 == 3)
{
if (num21 >= num10 - num17 + num11 + 1)
{
Main.tile[num9, num21].active(false);
}
}
else
{
Main.tile[num9, num21].active(false);
}
}
num18--;
num9 += num8;
}
int num22 = num9 - num8;
int num23 = num22;
int num24 = num20;
if (num22 > num20)
{
num23 = num20;
num24 = num22;
}
int num25 = WorldGen.genRand.Next(3);
if (num25 == 0)
{
num25 = 857;
}
else if (num25 == 1)
{
num25 = 848;
}
else if (num25 == 2)
{
num25 = 934;
}
WorldGen.AddBuriedChest((num23 + num24) / 2, num10, num25, false, 1);
int num26 = WorldGen.genRand.Next(1, 10);
for (int num27 = 0; num27 < num26; num27++)
{
int i2 = WorldGen.genRand.Next(num23, num24);
int j2 = num10 + num11;
WorldGen.PlaceSmallPile(i2, j2, WorldGen.genRand.Next(16, 19), 1, 185);
}
WorldGen.PlaceTile(num23 + 2, num10 - num17 + num11 + 1, 91, true, false, -1, WorldGen.genRand.Next(4, 7));
WorldGen.PlaceTile(num23 + 3, num10 - num17 + num11, 91, true, false, -1, WorldGen.genRand.Next(4, 7));
WorldGen.PlaceTile(num24 - 2, num10 - num17 + num11 + 1, 91, true, false, -1, WorldGen.genRand.Next(4, 7));
WorldGen.PlaceTile(num24 - 3, num10 - num17 + num11, 91, true, false, -1, WorldGen.genRand.Next(4, 7));
for (int num28 = num23; num28 <= num24; num28++)
{
WorldGen.PlacePot(num28, num10 + num11, 28, WorldGen.genRand.Next(25, 28));
}
}
if (flag4)
{
flag4 = false;
num8 *= -1;
num12 = WorldGen.genRand.Next(15, 20);
}
else if (flag6)
{
num12 = WorldGen.genRand.Next(10, 15);
}
else
{
num8 *= -1;
num12 = WorldGen.genRand.Next(20, 40);
}
}
if (num10 >= num5 - num11)
{
flag2 = false;
}
}
int num29 = WorldGen.genRand.Next(100, 200);
int num30 = WorldGen.genRand.Next(500, 800);
flag2 = true;
int num31 = num11;
num12 = WorldGen.genRand.Next(10, 50);
if (num8 == 1)
{
num9 -= num31;
}
int num32 = WorldGen.genRand.Next(5, 10);
while (flag2)
{
num29--;
num30--;
num12--;
for (int num33 = num9 - num32 - WorldGen.genRand.Next(0, 2); num33 <= num9 + num31 + num32 + WorldGen.genRand.Next(0, 2); num33++)
{
int num34 = num10;
if (num33 >= num9 && num33 <= num9 + num31)
{
Main.tile[num33, num34].active(false);
}
else
{
Main.tile[num33, num34].type = num;
Main.tile[num33, num34].active(true);
Main.tile[num33, num34].halfBrick(false);
Main.tile[num33, num34].slope(0);
}
if (num33 >= num9 - 1 && num33 <= num9 + 1 + num31)
{
Main.tile[num33, num34].wall = 34;
}
}
num10++;
num9 += num8;
if (num29 <= 0)
{
flag2 = false;
for (int num35 = num9 + 1; num35 <= num9 + num31 - 1; num35++)
{
if (Main.tile[num35, num10].active())
{
flag2 = true;
}
}
}
if (num12 < 0)
{
num12 = WorldGen.genRand.Next(10, 50);
num8 *= -1;
}
if (num30 <= 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, 23);
}
}
}
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_115B = Main.tile[num75, num52 - 1];
expr_115B.frameX += 18;
Tile expr_1178 = Main.tile[num75, num52];
expr_1178.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_11DE = Main.tile[num75, num52 - 1];
expr_11DE.frameX += 18;
Tile expr_11FB = Main.tile[num75, num52];
expr_11FB.frameX += 18;
}
num75 = num66 - 7;
if (num61 < 0)
{
num75 = num64 + 8;
}
int contain = WorldGen.genRand.Next(2);
contain = 832;
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, 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, num - 1].wall >= 138 && Main.tile[i, num - 1].wall <= 141) || Main.tile[i, num - 1].wall == 145 || Main.tile[i, num - 1].wall == 150 || Main.tile[i, num - 1].wall == 152) && ((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 || Main.tile[i - 1, num].type == 199))
{
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 || Main.tile[i + 1, num].type == 199))
{
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);
if ((i < 380 || i > Main.maxTilesX - 380) && WorldGen.genRand.Next(3) == 0)
{
WorldGen.GrowPalmTree(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)
{
ushort 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 ignoreID = -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 (ignoreID == -1)
{
return false;
}
if (ignoreID == 11)
{
ushort type = Main.tile[i, j].type;
if (type != 11)
{
return false;
}
}
else if (ignoreID == 71)
{
ushort type2 = Main.tile[i, j].type;
if (type2 != 71)
{
return false;
}
}
else if (ignoreID == 20)
{
ushort type3 = Main.tile[i, j].type;
if (type3 <= 74)
{
if (type3 <= 24)
{
if (type3 == 3 || type3 == 20 || type3 == 24)
{
goto IL_159;
}
}
else
{
if (type3 == 32)
{
goto IL_159;
}
switch (type3)
{
case 61:
case 62:
goto IL_159;
default:
switch (type3)
{
case 69:
case 71:
case 73:
case 74:
goto IL_159;
}
break;
}
}
}
else if (type3 <= 113)
{
switch (type3)
{
case 82:
case 83:
case 84:
goto IL_159;
default:
if (type3 == 110 || type3 == 113)
{
goto IL_159;
}
break;
}
}
else if (type3 == 201 || type3 == 233 || type3 == 352)
{
goto IL_159;
}
return false;
}
}
IL_159:;
}
}
return true;
}
public static void StartHardmode()
{
if (Main.netMode == 1 || Main.hardMode)
{
return;
}
Main.hardMode = true;
Main.InitLifeBytes();
ThreadPool.QueueUserWorkItem(new WaitCallback(WorldGen.smCallBack), 1);
}
public static void smCallBack(object threadContext)
{
WorldGen.IsGeneratingHardMode = 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);
float num7 = (float)Main.maxTilesX / 4200f;
int i = (int)(25f * num7);
ShapeData shapeData = new ShapeData();
while (i > 0)
{
Point point = WorldGen.RandomWorldPoint((int)Main.worldSurface - 100, 1, 190, 1);
Tile tile = Main.tile[point.X, point.Y];
Tile tile2 = Main.tile[point.X, point.Y - 1];
byte b = 0;
if (TileID.Sets.Crimson[(int)tile.type])
{
b = (byte)(192 + WorldGen.genRand.Next(4));
}
else if (TileID.Sets.Corrupt[(int)tile.type])
{
b = (byte)(188 + WorldGen.genRand.Next(4));
}
else if (TileID.Sets.Hallow[(int)tile.type])
{
b = (byte)(200 + WorldGen.genRand.Next(4));
}
if (tile.active() && b != 0 && !tile2.active())
{
bool flag = WorldUtils.Gen(new Point(point.X, point.Y - 1), new ShapeFloodFill(1000), Actions.Chain(new GenAction[]
{
new Modifiers.IsNotSolid(),
new Modifiers.OnlyWalls(new byte[]
{
0,
54,
55,
56,
57,
58,
59,
61,
185,
212,
213,
214,
215,
196,
197,
198,
199,
15,
40,
71,
64,
204,
205,
206,
207,
208,
209,
210,
211,
71
}),
new Actions.Blank().Output(shapeData)
}));
if (shapeData.Count > 50 && flag)
{
WorldUtils.Gen(new Point(point.X, point.Y), new ModShapes.OuterOutline(shapeData, true, true), new Actions.PlaceWall(b, true));
i--;
}
shapeData.Clear();
}
}
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, 0, 0);
}
AchievementsHelper.NotifyProgressionEvent(9);
if (Main.netMode == 2)
{
Netplay.ResetSections();
}
WorldGen.IsGeneratingHardMode = false;
}
public static bool PlaceDoor(int i, int j, int type, int style = 0)
{
int num = 54 * style;
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;
if (Main.tile[i, j].type != 11)
{
return false;
}
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 && Wiring.running)
{
Wiring.SkipWire(num2, num4);
Wiring.SkipWire(num2, num4 + 1);
Wiring.SkipWire(num2, num4 + 2);
}
for (int num6 = num2 - 1; num6 <= num2 + 1; num6++)
{
for (int num7 = num4 - 1; num7 <= num4 + 2; num7++)
{
WorldGen.TileFrame(num6, num7, 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;
}
if (Main.wallDungeon[(int)Main.tile[i, num].wall])
{
return false;
}
Tile tile = Main.tile[i - 1, num + 1];
Tile tile2 = Main.tile[i, num + 1];
if (!tile.nactive() || !Main.tileSolid[(int)tile.type])
{
return false;
}
if (!tile2.nactive() || !Main.tileSolid[(int)tile2.type])
{
return false;
}
if (tile.blockType() != 0)
{
tile.slope(0);
tile.halfBrick(false);
}
if (tile2.blockType() != 0)
{
tile2.slope(0);
tile2.halfBrick(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 = 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 = 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())
{
ushort num3 = (ushort)WorldGen.genRand.Next(75, 77);
byte wallType = 13;
if (WorldGen.genRand.Next(5) > 0)
{
num3 = 75;
}
if (num3 == 75)
{
wallType = 14;
}
WorldGen.HellFort(i, num2, num3, wallType);
i += WorldGen.genRand.Next(30, 130);
if (WorldGen.genRand.Next(10) == 0)
{
i += WorldGen.genRand.Next(0, 200);
}
}
}
float num4 = (float)(Main.maxTilesX / 4200);
int num5 = 0;
while ((float)num5 < 200f * num4)
{
int num6 = 0;
bool flag = false;
while (!flag)
{
num6++;
int num7 = WorldGen.genRand.Next((int)((double)Main.maxTilesX * 0.2), (int)((double)Main.maxTilesX * 0.8));
int num8 = WorldGen.genRand.Next(Main.maxTilesY - 300, Main.maxTilesY - 20);
if (Main.tile[num7, num8].active() && (Main.tile[num7, num8].type == 75 || Main.tile[num7, num8].type == 76))
{
int num9 = 0;
if (Main.tile[num7 - 1, num8].wall > 0)
{
num9 = -1;
}
else if (Main.tile[num7 + 1, num8].wall > 0)
{
num9 = 1;
}
if (!Main.tile[num7 + num9, num8].active() && !Main.tile[num7 + num9, num8 + 1].active())
{
bool flag2 = false;
for (int j = num7 - 8; j < num7 + 8; j++)
{
for (int k = num8 - 8; k < num8 + 8; k++)
{
if (Main.tile[j, k].active() && Main.tile[j, k].type == 4)
{
flag2 = true;
break;
}
}
}
if (!flag2)
{
WorldGen.PlaceTile(num7 + num9, num8, 4, true, true, -1, 7);
flag = true;
}
}
}
if (num6 > 1000)
{
flag = true;
}
}
num5++;
}
float num10 = 4200000f / (float)Main.maxTilesX;
int num11 = 0;
while ((float)num11 < num10)
{
int num12 = WorldGen.genRand.Next(num, Main.maxTilesX - num);
int num13 = WorldGen.genRand.Next(Main.maxTilesY - 250, Main.maxTilesY - 20);
while ((Main.tile[num12, num13].wall != 13 && Main.tile[num12, num13].wall != 14) || Main.tile[num12, num13].active())
{
num12 = WorldGen.genRand.Next(num, Main.maxTilesX - num);
num13 = WorldGen.genRand.Next(Main.maxTilesY - 250, Main.maxTilesY - 20);
}
if ((Main.tile[num12, num13].wall == 13 || Main.tile[num12, num13].wall == 14) && !Main.tile[num12, num13].active())
{
while (!WorldGen.SolidTile(num12, num13) && num13 < Main.maxTilesY - 20)
{
num13++;
}
num13--;
int num14 = num12;
int num15 = num12;
while (!Main.tile[num14, num13].active() && WorldGen.SolidTile(num14, num13 + 1))
{
num14--;
}
num14++;
while (!Main.tile[num15, num13].active() && WorldGen.SolidTile(num15, num13 + 1))
{
num15++;
}
num15--;
int num16 = num15 - num14;
int num17 = (num15 + num14) / 2;
if (!Main.tile[num17, num13].active() && (Main.tile[num17, num13].wall == 13 || Main.tile[num17, num13].wall == 14) && WorldGen.SolidTile(num17, num13 + 1))
{
int style = 16;
int style2 = 13;
int style3 = 14;
int style4 = 49;
int style5 = 4;
int style6 = 8;
int style7 = 15;
int style8 = 9;
int style9 = 10;
int style10 = 17;
int style11 = 25;
int style12 = 25;
int style13 = 23;
int style14 = 25;
int num18 = WorldGen.genRand.Next(13);
int num19 = 0;
int num20 = 0;
if (num18 == 0)
{
num19 = 5;
num20 = 4;
}
if (num18 == 1)
{
num19 = 4;
num20 = 3;
}
if (num18 == 2)
{
num19 = 3;
num20 = 5;
}
if (num18 == 3)
{
num19 = 4;
num20 = 6;
}
if (num18 == 4)
{
num19 = 3;
num20 = 3;
}
if (num18 == 5)
{
num19 = 5;
num20 = 3;
}
if (num18 == 6)
{
num19 = 5;
num20 = 4;
}
if (num18 == 7)
{
num19 = 5;
num20 = 4;
}
if (num18 == 8)
{
num19 = 5;
num20 = 4;
}
if (num18 == 9)
{
num19 = 3;
num20 = 5;
}
if (num18 == 10)
{
num19 = 5;
num20 = 3;
}
if (num18 == 11)
{
num19 = 2;
num20 = 4;
}
if (num18 == 12)
{
num19 = 3;
num20 = 3;
}
for (int l = num17 - num19; l <= num17 + num19; l++)
{
for (int m = num13 - num20; m <= num13; m++)
{
if (Main.tile[l, m].active())
{
num18 = -1;
break;
}
}
}
if ((double)num16 < (double)num19 * 1.75)
{
num18 = -1;
}
if (num18 == 0)
{
WorldGen.PlaceTile(num17, num13, 14, true, false, -1, style2);
int num21 = WorldGen.genRand.Next(6);
if (num21 < 3)
{
WorldGen.PlaceTile(num17 + num21, num13 - 2, 33, true, false, -1, style12);
}
if (Main.tile[num17, num13].active())
{
if (!Main.tile[num17 - 2, num13].active())
{
WorldGen.PlaceTile(num17 - 2, num13, 15, true, false, -1, style);
if (Main.tile[num17 - 2, num13].active())
{
Tile expr_691 = Main.tile[num17 - 2, num13];
expr_691.frameX += 18;
Tile expr_6B2 = Main.tile[num17 - 2, num13 - 1];
expr_6B2.frameX += 18;
}
}
if (!Main.tile[num17 + 2, num13].active())
{
WorldGen.PlaceTile(num17 + 2, num13, 15, true, false, -1, style);
}
}
}
else if (num18 == 1)
{
WorldGen.PlaceTile(num17, num13, 18, true, false, -1, style3);
int num22 = WorldGen.genRand.Next(4);
if (num22 < 2)
{
WorldGen.PlaceTile(num17 + num22, num13 - 1, 33, true, false, -1, style12);
}
if (Main.tile[num17, num13].active())
{
if (WorldGen.genRand.Next(2) == 0)
{
if (!Main.tile[num17 - 1, num13].active())
{
WorldGen.PlaceTile(num17 - 1, num13, 15, true, false, -1, style);
if (Main.tile[num17 - 1, num13].active())
{
Tile expr_7B3 = Main.tile[num17 - 1, num13];
expr_7B3.frameX += 18;
Tile expr_7D4 = Main.tile[num17 - 1, num13 - 1];
expr_7D4.frameX += 18;
}
}
}
else if (!Main.tile[num17 + 2, num13].active())
{
WorldGen.PlaceTile(num17 + 2, num13, 15, true, false, -1, style);
}
}
}
else if (num18 == 2)
{
WorldGen.PlaceTile(num17, num13, 105, true, false, -1, style4);
}
else if (num18 == 3)
{
WorldGen.PlaceTile(num17, num13, 101, true, false, -1, style5);
}
else if (num18 == 4)
{
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.PlaceTile(num17, num13, 15, true, false, -1, style);
Tile expr_881 = Main.tile[num17, num13];
expr_881.frameX += 18;
Tile expr_8A0 = Main.tile[num17, num13 - 1];
expr_8A0.frameX += 18;
}
else
{
WorldGen.PlaceTile(num17, num13, 15, true, false, -1, style);
}
}
else if (num18 == 5)
{
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.Place4x2(num17, num13, 79, 1, style6);
}
else
{
WorldGen.Place4x2(num17, num13, 79, -1, style6);
}
}
else if (num18 == 6)
{
WorldGen.PlaceTile(num17, num13, 87, true, false, -1, style7);
}
else if (num18 == 7)
{
WorldGen.PlaceTile(num17, num13, 88, true, false, -1, style8);
}
else if (num18 == 8)
{
WorldGen.PlaceTile(num17, num13, 89, true, false, -1, style9);
}
else if (num18 == 9)
{
WorldGen.PlaceTile(num17, num13, 104, true, false, -1, style10);
}
else if (num18 == 10)
{
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.Place4x2(num17, num13, 90, 1, style14);
}
else
{
WorldGen.Place4x2(num17, num13, 90, -1, style14);
}
}
else if (num18 == 11)
{
WorldGen.PlaceTile(num17, num13, 93, true, false, -1, style13);
}
else if (num18 == 12)
{
WorldGen.PlaceTile(num17, num13, 100, true, false, -1, style11);
}
}
}
num11++;
}
num10 = 420000f / (float)Main.maxTilesX;
int num23 = 0;
while ((float)num23 < num10)
{
int num24 = WorldGen.genRand.Next(num, Main.maxTilesX - num);
int num25 = WorldGen.genRand.Next(Main.maxTilesY - 250, Main.maxTilesY - 20);
while ((Main.tile[num24, num25].wall != 13 && Main.tile[num24, num25].wall != 14) || Main.tile[num24, num25].active())
{
num24 = WorldGen.genRand.Next(num, Main.maxTilesX - num);
num25 = WorldGen.genRand.Next(Main.maxTilesY - 250, Main.maxTilesY - 20);
}
int num26;
int num27;
int num28;
int num29;
for (int n = 0; n < 2; n++)
{
num26 = num24;
num27 = num24;
while (!Main.tile[num26, num25].active() && (Main.tile[num26, num25].wall == 13 || Main.tile[num26, num25].wall == 14))
{
num26--;
}
num26++;
while (!Main.tile[num27, num25].active() && (Main.tile[num27, num25].wall == 13 || Main.tile[num27, num25].wall == 14))
{
num27++;
}
num27--;
num24 = (num26 + num27) / 2;
num28 = num25;
num29 = num25;
while (!Main.tile[num24, num28].active() && (Main.tile[num24, num28].wall == 13 || Main.tile[num24, num28].wall == 14))
{
num28--;
}
num28++;
while (!Main.tile[num24, num29].active() && (Main.tile[num24, num29].wall == 13 || Main.tile[num24, num29].wall == 14))
{
num29++;
}
num29--;
num25 = (num28 + num29) / 2;
}
num26 = num24;
num27 = num24;
while (!Main.tile[num26, num25].active() && !Main.tile[num26, num25 - 1].active() && !Main.tile[num26, num25 + 1].active())
{
num26--;
}
num26++;
while (!Main.tile[num27, num25].active() && !Main.tile[num27, num25 - 1].active() && !Main.tile[num27, num25 + 1].active())
{
num27++;
}
num27--;
num28 = num25;
num29 = num25;
while (!Main.tile[num24, num28].active() && !Main.tile[num24 - 1, num28].active() && !Main.tile[num24 + 1, num28].active())
{
num28--;
}
num28++;
while (!Main.tile[num24, num29].active() && !Main.tile[num24 - 1, num29].active() && !Main.tile[num24 + 1, num29].active())
{
num29++;
}
num29--;
num24 = (num26 + num27) / 2;
num25 = (num28 + num29) / 2;
int num30 = num27 - num26;
int num31 = num29 - num28;
if (num30 > 7 && num31 > 5)
{
int num32 = 0;
if (WorldGen.nearPicture2(num24, num25))
{
num32 = -1;
}
if (num32 == 0)
{
Vector2 vector = WorldGen.randHellPicture();
int type = (int)vector.X;
int style15 = (int)vector.Y;
if (!WorldGen.nearPicture(num24, num25))
{
WorldGen.PlaceTile(num24, num25, type, true, false, -1, style15);
}
}
}
num23++;
}
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);
}
num10 = 420000f / (float)Main.maxTilesX;
int num33 = 0;
while ((float)num33 < num10)
{
int num34;
int num35;
do
{
num34 = WorldGen.genRand.Next(num, Main.maxTilesX - num);
num35 = WorldGen.genRand.Next(Main.maxTilesY - 250, Main.maxTilesY - 20);
}
while ((Main.tile[num34, num35].wall != 13 && Main.tile[num34, num35].wall != 14) || Main.tile[num34, num35].active());
while (!WorldGen.SolidTile(num34, num35) && num35 > 10)
{
num35--;
}
num35++;
if (Main.tile[num34, num35].wall == 13 || Main.tile[num34, num35].wall == 14)
{
int num36 = WorldGen.genRand.Next(3);
int style16 = 32;
int style17 = 32;
int num37;
switch (num36)
{
case 0:
{
IL_F95:
num37 = 1;
int num38 = 3;
goto IL_FAB;
}
case 1:
{
num37 = 3;
int num38 = 3;
goto IL_FAB;
}
case 2:
{
num37 = 1;
int num38 = 2;
goto IL_FAB;
}
}
goto IL_F95;
IL_FAB:
for (int num39 = num34 - 1; num39 <= num34 + num37; num39++)
{
int num38;
for (int num40 = num35; num40 <= num35 + num38; num40++)
{
Tile tile = Main.tile[num34, num35];
if (num39 < num34 || num39 == num34 + num37)
{
if (tile.active())
{
ushort type2 = tile.type;
if (type2 <= 34)
{
switch (type2)
{
case 10:
case 11:
break;
default:
if (type2 != 34)
{
goto IL_102A;
}
break;
}
}
else if (type2 != 42 && type2 != 91)
{
goto IL_102A;
}
num36 = -1;
}
}
else if (tile.active())
{
num36 = -1;
}
IL_102A:;
}
}
switch (num36)
{
case 0:
WorldGen.PlaceTile(num34, num35, 91, true, false, -1, array[WorldGen.genRand.Next(3)]);
break;
case 1:
WorldGen.PlaceTile(num34, num35, 34, true, false, -1, style16);
break;
case 2:
WorldGen.PlaceTile(num34, num35, 42, true, false, -1, style17);
break;
}
}
num33++;
}
}
public static void HellFort(int i, int j, ushort 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 = (ushort)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(55, 65);
num15 = WorldGen.genRand.Next(45, 50);
if (num15 > num14)
{
num15 = num14;
}
num14 = (int)((double)((float)num14) * 1.6);
num15 = (int)((double)((float)num15) * 1.35);
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;
while (true)
{
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)
{
break;
}
if (num89 >= 1000)
{
goto Block_117;
}
}
WorldGen.lAltarX = num90 - (int)(Main.tile[num90, num91].frameX / 18);
WorldGen.lAltarY = num91 - (int)(Main.tile[num90, num91].frameY / 18);
goto IL_1578;
Block_117:
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 = -1; num92 <= 3; num92++)
{
for (int num93 = -1; num93 <= 1; num93++)
{
x = num90 + num92;
y = num91 + num93;
Main.tile[x, y].active(false);
}
}
WorldGen.lAltarX = num90;
WorldGen.lAltarY = num91;
for (int num94 = 0; num94 <= 2; num94++)
{
for (int num95 = 0; num95 <= 1; num95++)
{
x = num90 + num94;
y = num91 + num95;
Main.tile[x, y].active(true);
Main.tile[x, y].type = 237;
Main.tile[x, y].frameX = (short)(num94 * 18);
Main.tile[x, y].frameY = (short)(num95 * 18);
}
}
IL_1578:
float num96 = (float)num2 * 1.1f;
num96 *= 1f + (float)WorldGen.genRand.Next(-25, 26) * 0.01f;
int num97 = 0;
while (num96 > 0f)
{
num97++;
int num98 = WorldGen.genRand.Next(num2);
int num99 = WorldGen.genRand.Next(array[num98].X, array[num98].X + array[num98].Width);
int num100 = WorldGen.genRand.Next(array[num98].Y, array[num98].Y + array[num98].Height);
if (Main.tile[num99, num100].wall == 87 && !Main.tile[num99, num100].active())
{
bool flag5 = false;
if (WorldGen.genRand.Next(2) == 0)
{
int num101 = 1;
if (WorldGen.genRand.Next(2) == 0)
{
num101 = -1;
}
while (!Main.tile[num99, num100].active())
{
num100 += num101;
}
num100 -= num101;
int num102 = WorldGen.genRand.Next(2);
int num103 = WorldGen.genRand.Next(3, 10);
bool flag6 = true;
for (int num104 = num99 - num103; num104 < num99 + num103; num104++)
{
for (int num105 = num100 - num103; num105 < num100 + num103; num105++)
{
if (Main.tile[num104, num105].active() && Main.tile[num104, num105].type == 10)
{
flag6 = false;
break;
}
}
}
if (flag6)
{
for (int num106 = num99 - num103; num106 < num99 + num103; num106++)
{
for (int num107 = num100 - num103; num107 < num100 + num103; num107++)
{
if (WorldGen.SolidTile(num106, num107) && Main.tile[num106, num107].type != 232 && !WorldGen.SolidTile(num106, num107 - num101))
{
Main.tile[num106, num107].type = 232;
flag5 = true;
if (num102 == 0)
{
Main.tile[num106, num107 - 1].type = 232;
Main.tile[num106, num107 - 1].active(true);
}
else
{
Main.tile[num106, num107 + 1].type = 232;
Main.tile[num106, num107 + 1].active(true);
}
num102++;
if (num102 > 1)
{
num102 = 0;
}
}
}
}
}
if (flag5)
{
num97 = 0;
num96 -= 1f;
}
}
else
{
int num108 = 1;
if (WorldGen.genRand.Next(2) == 0)
{
num108 = -1;
}
while (!Main.tile[num99, num100].active())
{
num99 += num108;
}
num99 -= num108;
int num109 = WorldGen.genRand.Next(2);
int num110 = WorldGen.genRand.Next(3, 10);
bool flag7 = true;
for (int num111 = num99 - num110; num111 < num99 + num110; num111++)
{
for (int num112 = num100 - num110; num112 < num100 + num110; num112++)
{
if (Main.tile[num111, num112].active() && Main.tile[num111, num112].type == 10)
{
flag7 = false;
break;
}
}
}
if (flag7)
{
for (int num113 = num99 - num110; num113 < num99 + num110; num113++)
{
for (int num114 = num100 - num110; num114 < num100 + num110; num114++)
{
if (WorldGen.SolidTile(num113, num114) && Main.tile[num113, num114].type != 232 && !WorldGen.SolidTile(num113 - num108, num114))
{
Main.tile[num113, num114].type = 232;
flag5 = true;
if (num109 == 0)
{
Main.tile[num113 - 1, num114].type = 232;
Main.tile[num113 - 1, num114].active(true);
}
else
{
Main.tile[num113 + 1, num114].type = 232;
Main.tile[num113 + 1, num114].active(true);
}
num109++;
if (num109 > 1)
{
num109 = 0;
}
}
}
}
}
if (flag5)
{
num97 = 0;
num96 -= 1f;
}
}
}
if (num97 > 1000)
{
num97 = 0;
num96 -= 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 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 num = WorldGen.genRand.Next(3);
WorldGen.genRand.Next(3);
ushort num2;
int num3;
switch (num)
{
case 0:
num2 = 41;
num3 = 7;
goto IL_44;
case 1:
num2 = 43;
num3 = 8;
goto IL_44;
}
num2 = 44;
num3 = 9;
IL_44:
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 num4 = (float)(Main.maxTilesX / 60);
num4 += (float)WorldGen.genRand.Next(0, (int)(num4 / 3f));
float num5 = num4;
int num6 = 5;
WorldGen.DungeonRoom(WorldGen.dungeonX, WorldGen.dungeonY, num2, num3);
while (num4 > 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;
}
num4 -= 1f;
Main.statusText = string.Concat(new object[]
{
Lang.gen[58],
" ",
(int)((num5 - num4) / num5 * 60f),
"%"
});
if (num6 > 0)
{
num6--;
}
if (num6 == 0 & WorldGen.genRand.Next(3) == 0)
{
num6 = 5;
if (WorldGen.genRand.Next(2) == 0)
{
int num7 = WorldGen.dungeonX;
int num8 = WorldGen.dungeonY;
WorldGen.DungeonHalls(WorldGen.dungeonX, WorldGen.dungeonY, num2, num3, false);
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.DungeonHalls(WorldGen.dungeonX, WorldGen.dungeonY, num2, num3, false);
}
WorldGen.DungeonRoom(WorldGen.dungeonX, WorldGen.dungeonY, num2, num3);
WorldGen.dungeonX = num7;
WorldGen.dungeonY = num8;
}
else
{
WorldGen.DungeonRoom(WorldGen.dungeonX, WorldGen.dungeonY, num2, num3);
}
}
else
{
WorldGen.DungeonHalls(WorldGen.dungeonX, WorldGen.dungeonY, num2, num3, false);
}
}
WorldGen.DungeonRoom(WorldGen.dungeonX, WorldGen.dungeonY, num2, num3);
int num9 = WorldGen.dRoomX[0];
int num10 = WorldGen.dRoomY[0];
for (int i = 0; i < WorldGen.numDRooms; i++)
{
if (WorldGen.dRoomY[i] < num10)
{
num9 = WorldGen.dRoomX[i];
num10 = WorldGen.dRoomY[i];
}
}
WorldGen.dungeonX = num9;
WorldGen.dungeonY = num10;
WorldGen.dEnteranceX = num9;
WorldGen.dSurface = false;
num6 = 5;
while (!WorldGen.dSurface)
{
if (num6 > 0)
{
num6--;
}
if (num6 == 0 && WorldGen.genRand.Next(5) == 0 && (double)WorldGen.dungeonY > Main.worldSurface + 100.0)
{
num6 = 10;
int num11 = WorldGen.dungeonX;
int num12 = WorldGen.dungeonY;
WorldGen.DungeonHalls(WorldGen.dungeonX, WorldGen.dungeonY, num2, num3, true);
WorldGen.DungeonRoom(WorldGen.dungeonX, WorldGen.dungeonY, num2, num3);
WorldGen.dungeonX = num11;
WorldGen.dungeonY = num12;
}
WorldGen.DungeonStairs(WorldGen.dungeonX, WorldGen.dungeonY, num2, num3);
}
WorldGen.DungeonEnt(WorldGen.dungeonX, WorldGen.dungeonY, num2, num3);
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 num13 = 0;
int num14 = 1000;
int num15 = 0;
while (num15 < Main.maxTilesX / 100)
{
num13++;
int num16 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
int num17 = WorldGen.genRand.Next((int)Main.worldSurface + 25, WorldGen.dMaxY);
int num18 = num16;
if ((int)Main.tile[num16, num17].wall == num3 && !Main.tile[num16, num17].active())
{
int num19 = 1;
if (WorldGen.genRand.Next(2) == 0)
{
num19 = -1;
}
while (!Main.tile[num16, num17].active())
{
num17 += num19;
}
if (Main.tile[num16 - 1, num17].active() && Main.tile[num16 + 1, num17].active() && !Main.tile[num16 - 1, num17 - num19].active() && !Main.tile[num16 + 1, num17 - num19].active())
{
num15++;
int num20 = WorldGen.genRand.Next(5, 13);
while (Main.tile[num16 - 1, num17].active() && Main.tile[num16, num17 + num19].active() && Main.tile[num16, num17].active() && !Main.tile[num16, num17 - num19].active() && num20 > 0)
{
Main.tile[num16, num17].type = 48;
if (!Main.tile[num16 - 1, num17 - num19].active() && !Main.tile[num16 + 1, num17 - num19].active())
{
Main.tile[num16, num17 - num19].type = 48;
Main.tile[num16, num17 - num19].active(true);
}
num16--;
num20--;
}
num20 = WorldGen.genRand.Next(5, 13);
num16 = num18 + 1;
while (Main.tile[num16 + 1, num17].active() && Main.tile[num16, num17 + num19].active() && Main.tile[num16, num17].active() && !Main.tile[num16, num17 - num19].active() && num20 > 0)
{
Main.tile[num16, num17].type = 48;
if (!Main.tile[num16 - 1, num17 - num19].active() && !Main.tile[num16 + 1, num17 - num19].active())
{
Main.tile[num16, num17 - num19].type = 48;
Main.tile[num16, num17 - num19].active(true);
}
num16++;
num20--;
}
}
}
if (num13 > num14)
{
num13 = 0;
num15++;
}
}
num13 = 0;
num14 = 1000;
num15 = 0;
Main.statusText = Lang.gen[58] + " 75%";
while (num15 < Main.maxTilesX / 100)
{
num13++;
int num21 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
int num22 = WorldGen.genRand.Next((int)Main.worldSurface + 25, WorldGen.dMaxY);
int num23 = num22;
if ((int)Main.tile[num21, num22].wall == num3 && !Main.tile[num21, num22].active())
{
int num24 = 1;
if (WorldGen.genRand.Next(2) == 0)
{
num24 = -1;
}
while (num21 > 5 && num21 < Main.maxTilesX - 5 && !Main.tile[num21, num22].active())
{
num21 += num24;
}
if (Main.tile[num21, num22 - 1].active() && Main.tile[num21, num22 + 1].active() && !Main.tile[num21 - num24, num22 - 1].active() && !Main.tile[num21 - num24, num22 + 1].active())
{
num15++;
int num25 = WorldGen.genRand.Next(5, 13);
while (Main.tile[num21, num22 - 1].active() && Main.tile[num21 + num24, num22].active() && Main.tile[num21, num22].active() && !Main.tile[num21 - num24, num22].active() && num25 > 0)
{
Main.tile[num21, num22].type = 48;
if (!Main.tile[num21 - num24, num22 - 1].active() && !Main.tile[num21 - num24, num22 + 1].active())
{
Main.tile[num21 - num24, num22].type = 48;
Main.tile[num21 - num24, num22].active(true);
}
num22--;
num25--;
}
num25 = WorldGen.genRand.Next(5, 13);
num22 = num23 + 1;
while (Main.tile[num21, num22 + 1].active() && Main.tile[num21 + num24, num22].active() && Main.tile[num21, num22].active() && !Main.tile[num21 - num24, num22].active() && num25 > 0)
{
Main.tile[num21, num22].type = 48;
if (!Main.tile[num21 - num24, num22 - 1].active() && !Main.tile[num21 - num24, num22 + 1].active())
{
Main.tile[num21 - num24, num22].type = 48;
Main.tile[num21 - num24, num22].active(true);
}
num22++;
num25--;
}
}
}
if (num13 > num14)
{
num13 = 0;
num15++;
}
}
Main.statusText = Lang.gen[58] + " 80%";
for (int num26 = 0; num26 < WorldGen.numDDoors; num26++)
{
int num27 = WorldGen.DDoorX[num26] - 10;
int num28 = WorldGen.DDoorX[num26] + 10;
int num29 = 100;
int num30 = 0;
for (int num31 = num27; num31 < num28; num31++)
{
bool flag = true;
int num32 = WorldGen.DDoorY[num26];
while (num32 > 10 && !Main.tile[num31, num32].active())
{
num32--;
}
if (!Main.tileDungeon[(int)Main.tile[num31, num32].type])
{
flag = false;
}
int num33 = num32;
num32 = WorldGen.DDoorY[num26];
while (!Main.tile[num31, num32].active())
{
num32++;
}
if (!Main.tileDungeon[(int)Main.tile[num31, num32].type])
{
flag = false;
}
int num34 = num32;
if (num34 - num33 >= 3)
{
int num35 = num31 - 20;
int num36 = num31 + 20;
int num37 = num34 - 10;
int num38 = num34 + 10;
for (int num39 = num35; num39 < num36; num39++)
{
for (int num40 = num37; num40 < num38; num40++)
{
if (Main.tile[num39, num40].active() && Main.tile[num39, num40].type == 10)
{
flag = false;
break;
}
}
}
if (flag)
{
for (int num41 = num34 - 3; num41 < num34; num41++)
{
for (int num42 = num31 - 3; num42 <= num31 + 3; num42++)
{
if (Main.tile[num42, num41].active())
{
flag = false;
break;
}
}
}
}
if (flag && num34 - num33 < 20)
{
bool flag2 = false;
if (WorldGen.DDoorPos[num26] == 0 && num34 - num33 < num29)
{
flag2 = true;
}
if (WorldGen.DDoorPos[num26] == -1 && num31 > num30)
{
flag2 = true;
}
if (WorldGen.DDoorPos[num26] == 1 && (num31 < num30 || num30 == 0))
{
flag2 = true;
}
if (flag2)
{
num30 = num31;
num29 = num34 - num33;
}
}
}
}
if (num29 < 20)
{
int num43 = num30;
int num44 = WorldGen.DDoorY[num26];
int num45 = num44;
while (!Main.tile[num43, num44].active())
{
Main.tile[num43, num44].active(false);
num44++;
}
while (!Main.tile[num43, num45].active())
{
num45--;
}
num44--;
num45++;
for (int num46 = num45; num46 < num44 - 2; num46++)
{
Main.tile[num43, num46].active(true);
Main.tile[num43, num46].type = num2;
}
int style = 13;
if (WorldGen.genRand.Next(3) == 0)
{
if (num3 == 7)
{
style = 16;
}
else if (num3 == 8)
{
style = 17;
}
else if (num3 == 9)
{
style = 18;
}
}
WorldGen.PlaceTile(num43, num44, 10, true, false, -1, style);
num43--;
int num47 = num44 - 3;
while (!Main.tile[num43, num47].active())
{
num47--;
}
if (num44 - num47 < num44 - num45 + 5 && Main.tileDungeon[(int)Main.tile[num43, num47].type])
{
for (int num48 = num44 - 4 - WorldGen.genRand.Next(3); num48 > num47; num48--)
{
Main.tile[num43, num48].active(true);
Main.tile[num43, num48].type = num2;
}
}
num43 += 2;
num47 = num44 - 3;
while (!Main.tile[num43, num47].active())
{
num47--;
}
if (num44 - num47 < num44 - num45 + 5 && Main.tileDungeon[(int)Main.tile[num43, num47].type])
{
for (int num49 = num44 - 4 - WorldGen.genRand.Next(3); num49 > num47; num49--)
{
Main.tile[num43, num49].active(true);
Main.tile[num43, num49].type = num2;
}
}
num44++;
num43--;
Main.tile[num43 - 1, num44].active(true);
Main.tile[num43 - 1, num44].type = num2;
Main.tile[num43 + 1, num44].active(true);
Main.tile[num43 + 1, num44].type = num2;
}
}
int[] array = new int[3];
if (num3 == 7)
{
array[0] = 7;
array[1] = 94;
array[2] = 95;
}
else if (num3 == 9)
{
array[0] = 9;
array[1] = 96;
array[2] = 97;
}
else
{
array[0] = 8;
array[1] = 98;
array[2] = 99;
}
for (int num50 = 0; num50 < 5; num50++)
{
for (int num51 = 0; num51 < 3; num51++)
{
int num52 = WorldGen.genRand.Next(40, 240);
int num53 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
int num54 = WorldGen.genRand.Next(WorldGen.dMinY, WorldGen.dMaxY);
for (int num55 = num53 - num52; num55 < num53 + num52; num55++)
{
for (int num56 = num54 - num52; num56 < num54 + num52; num56++)
{
if ((double)num56 > Main.worldSurface)
{
float num57 = (float)Math.Abs(num53 - num55);
float num58 = (float)Math.Abs(num54 - num56);
double num59 = Math.Sqrt((double)(num57 * num57 + num58 * num58));
if (num59 < (double)num52 * 0.4 && Main.wallDungeon[(int)Main.tile[num55, num56].wall])
{
WorldGen.Spread.WallDungeon(num55, num56, array[num51]);
}
}
}
}
}
}
Main.statusText = Lang.gen[58] + " 85%";
for (int num60 = 0; num60 < WorldGen.numDPlats; num60++)
{
int num61 = WorldGen.DPlatX[num60];
int num62 = WorldGen.DPlatY[num60];
int num63 = Main.maxTilesX;
int num64 = 10;
if ((double)num62 < Main.worldSurface + 50.0)
{
num64 = 20;
}
for (int num65 = num62 - 5; num65 <= num62 + 5; num65++)
{
int num66 = num61;
int num67 = num61;
bool flag3 = false;
if (Main.tile[num66, num65].active())
{
flag3 = true;
}
else
{
while (!Main.tile[num66, num65].active())
{
num66--;
if (!Main.tileDungeon[(int)Main.tile[num66, num65].type])
{
flag3 = true;
}
}
while (!Main.tile[num67, num65].active())
{
num67++;
if (!Main.tileDungeon[(int)Main.tile[num67, num65].type])
{
flag3 = true;
}
}
}
if (!flag3 && num67 - num66 <= num64)
{
bool flag4 = true;
int num68 = num61 - num64 / 2 - 2;
int num69 = num61 + num64 / 2 + 2;
int num70 = num65 - 5;
int num71 = num65 + 5;
for (int num72 = num68; num72 <= num69; num72++)
{
for (int num73 = num70; num73 <= num71; num73++)
{
if (Main.tile[num72, num73].active() && Main.tile[num72, num73].type == 19)
{
flag4 = false;
break;
}
}
}
for (int num74 = num65 + 3; num74 >= num65 - 5; num74--)
{
if (Main.tile[num61, num74].active())
{
flag4 = false;
break;
}
}
if (flag4)
{
num63 = num65;
break;
}
}
}
if (num63 > num62 - 10 && num63 < num62 + 10)
{
int num75 = num61;
int num76 = num63;
int num77 = num61 + 1;
while (!Main.tile[num75, num76].active())
{
Main.tile[num75, num76].active(true);
Main.tile[num75, num76].type = 19;
if (num3 == 7)
{
Main.tile[num75, num76].frameY = 108;
}
if (num3 == 8)
{
Main.tile[num75, num76].frameY = 144;
}
if (num3 == 9)
{
Main.tile[num75, num76].frameY = 126;
}
num75--;
}
while (!Main.tile[num77, num76].active())
{
Main.tile[num77, num76].active(true);
Main.tile[num77, num76].type = 19;
if (num3 == 7)
{
Main.tile[num77, num76].frameY = 108;
}
if (num3 == 8)
{
Main.tile[num77, num76].frameY = 144;
}
if (num3 == 9)
{
Main.tile[num77, num76].frameY = 126;
}
num77++;
}
}
}
for (int num78 = 0; num78 < 4; num78++)
{
bool flag5 = false;
while (!flag5)
{
int num79 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
int num80 = WorldGen.genRand.Next((int)Main.worldSurface, WorldGen.dMaxY);
if (Main.wallDungeon[(int)Main.tile[num79, num80].wall] && !Main.tile[num79, num80].active())
{
int contain = 0;
int style2 = 0;
if (num78 == 0)
{
style2 = 23;
contain = 1156;
}
else if (num78 == 1)
{
if (!WorldGen.crimson)
{
style2 = 24;
contain = 1571;
}
else
{
style2 = 25;
contain = 1569;
}
}
else if (num78 == 2)
{
style2 = 26;
contain = 1260;
}
else if (num78 == 3)
{
style2 = 27;
contain = 1572;
}
flag5 = WorldGen.AddBuriedChest(num79, num80, 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%";
num13 = 0;
num14 = 1000;
num15 = 0;
while (num15 < Main.maxTilesX / 20)
{
num13++;
int num81 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
int num82 = WorldGen.genRand.Next(WorldGen.dMinY, WorldGen.dMaxY);
bool flag6 = true;
if (Main.wallDungeon[(int)Main.tile[num81, num82].wall] && !Main.tile[num81, num82].active())
{
int num83 = 1;
if (WorldGen.genRand.Next(2) == 0)
{
num83 = -1;
}
while (flag6 && !Main.tile[num81, num82].active())
{
num81 -= num83;
if (num81 < 5 || num81 > Main.maxTilesX - 5)
{
flag6 = false;
}
else if (Main.tile[num81, num82].active() && !Main.tileDungeon[(int)Main.tile[num81, num82].type])
{
flag6 = false;
}
}
if (flag6 && Main.tile[num81, num82].active() && Main.tileDungeon[(int)Main.tile[num81, num82].type] && Main.tile[num81, num82 - 1].active() && Main.tileDungeon[(int)Main.tile[num81, num82 - 1].type] && Main.tile[num81, num82 + 1].active() && Main.tileDungeon[(int)Main.tile[num81, num82 + 1].type])
{
num81 += num83;
for (int num84 = num81 - 3; num84 <= num81 + 3; num84++)
{
for (int num85 = num82 - 3; num85 <= num82 + 3; num85++)
{
if (Main.tile[num84, num85].active() && Main.tile[num84, num85].type == 19)
{
flag6 = false;
break;
}
}
}
if (flag6 && (!Main.tile[num81, num82 - 1].active() & !Main.tile[num81, num82 - 2].active() & !Main.tile[num81, num82 - 3].active()))
{
int num86 = num81;
int num87 = num81;
while (num86 > WorldGen.dMinX && num86 < WorldGen.dMaxX && !Main.tile[num86, num82].active() && !Main.tile[num86, num82 - 1].active() && !Main.tile[num86, num82 + 1].active())
{
num86 += num83;
}
num86 = Math.Abs(num81 - num86);
bool flag7 = false;
if (WorldGen.genRand.Next(2) == 0)
{
flag7 = true;
}
if (num86 > 5)
{
for (int num88 = WorldGen.genRand.Next(1, 4); num88 > 0; num88--)
{
Main.tile[num81, num82].active(true);
Main.tile[num81, num82].type = 19;
if ((int)Main.tile[num81, num82].wall == array[0])
{
Main.tile[num81, num82].frameY = (short)(18 * array2[0]);
}
if ((int)Main.tile[num81, num82].wall == array[1])
{
Main.tile[num81, num82].frameY = (short)(18 * array2[1]);
}
if ((int)Main.tile[num81, num82].wall == array[2])
{
Main.tile[num81, num82].frameY = (short)(18 * array2[2]);
}
if (flag7)
{
WorldGen.PlaceTile(num81, num82 - 1, 50, true, false, -1, 0);
if (WorldGen.genRand.Next(50) == 0 && Main.tile[num81, num82 - 1].type == 50)
{
Main.tile[num81, num82 - 1].frameX = 90;
}
}
num81 += num83;
}
num13 = 0;
num15++;
if (!flag7 && WorldGen.genRand.Next(2) == 0)
{
num81 = num87;
num82--;
int num89 = 0;
if (WorldGen.genRand.Next(4) == 0)
{
num89 = 1;
}
if (num89 == 0)
{
num89 = 13;
}
else if (num89 == 1)
{
num89 = 49;
}
WorldGen.PlaceTile(num81, num82, num89, true, false, -1, 0);
if (Main.tile[num81, num82].type == 13)
{
if (WorldGen.genRand.Next(2) == 0)
{
Main.tile[num81, num82].frameX = 18;
}
else
{
Main.tile[num81, num82].frameX = 36;
}
}
}
}
}
}
}
if (num13 > num14)
{
num13 = 0;
num15++;
}
}
Main.statusText = Lang.gen[58] + " 95%";
int num90 = 1;
for (int num91 = 0; num91 < WorldGen.numDRooms; num91++)
{
int num92 = 0;
while (num92 < 1000)
{
int num93 = (int)((double)WorldGen.dRoomSize[num91] * 0.4);
int i2 = WorldGen.dRoomX[num91] + WorldGen.genRand.Next(-num93, num93 + 1);
int num94 = WorldGen.dRoomY[num91] + WorldGen.genRand.Next(-num93, num93 + 1);
int style3 = 2;
int num95;
if (num90 == 1)
{
num95 = 329;
}
else if (num90 == 2)
{
num95 = 155;
}
else if (num90 == 3)
{
num95 = 156;
}
else if (num90 == 4)
{
num95 = 157;
}
else if (num90 == 5)
{
num95 = 163;
}
else if (num90 == 6)
{
num95 = 113;
}
else if (num90 == 7)
{
num95 = 3317;
}
else if (num90 == 8)
{
num95 = 327;
style3 = 0;
}
else
{
num95 = 164;
num90 = 0;
}
if ((double)num94 < Main.worldSurface + 50.0)
{
num95 = 327;
style3 = 0;
}
if (num95 == 0 && WorldGen.genRand.Next(2) == 0)
{
num92 = 1000;
}
else
{
if (WorldGen.AddBuriedChest(i2, num94, num95, false, style3))
{
num92 += 1000;
num90++;
}
num92++;
}
}
}
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;
}
num13 = 0;
num14 = 1000;
num15 = 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 (num15 < Main.maxTilesX / 150)
{
num13++;
int num96 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
int num97 = WorldGen.genRand.Next(WorldGen.dMinY, WorldGen.dMaxY);
if (Main.wallDungeon[(int)Main.tile[num96, num97].wall])
{
int num98 = num97;
while (num98 > WorldGen.dMinY)
{
if (Main.tile[num96, num98 - 1].active() && Main.tile[num96, num98 - 1].type == num2)
{
bool flag8 = false;
for (int num99 = num96 - 15; num99 < num96 + 15; num99++)
{
for (int num100 = num98 - 15; num100 < num98 + 15; num100++)
{
if (num99 > 0 && num99 < Main.maxTilesX && num100 > 0 && num100 < Main.maxTilesY && Main.tile[num99, num100].type == 42)
{
flag8 = true;
break;
}
}
}
if (Main.tile[num96 - 1, num98].active() || Main.tile[num96 + 1, num98].active() || Main.tile[num96 - 1, num98 + 1].active() || Main.tile[num96 + 1, num98 + 1].active() || Main.tile[num96, num98 + 2].active())
{
flag8 = true;
}
if (flag8)
{
break;
}
int style4 = array3[0];
if ((int)Main.tile[num96, num98].wall == array[1])
{
style4 = array3[1];
}
if ((int)Main.tile[num96, num98].wall == array[2])
{
style4 = array3[2];
}
WorldGen.Place1x2Top(num96, num98, 42, style4);
if (Main.tile[num96, num98].type == 42)
{
num13 = 0;
num15++;
for (int num101 = 0; num101 < 1000; num101++)
{
int num102 = num96 + WorldGen.genRand.Next(-12, 13);
int num103 = num98 + WorldGen.genRand.Next(3, 21);
if (!Main.tile[num102, num103].active() && !Main.tile[num102, num103 + 1].active() && Main.tile[num102 - 1, num103].type != 48 && Main.tile[num102 + 1, num103].type != 48 && Collision.CanHit(new Vector2((float)(num102 * 16), (float)(num103 * 16)), 16, 16, new Vector2((float)(num96 * 16), (float)(num98 * 16 + 1)), 16, 16))
{
if ((WorldGen.SolidTile(num102 - 1, num103) && Main.tile[num102 - 1, num103].type != 10) || (WorldGen.SolidTile(num102 + 1, num103) && Main.tile[num102 + 1, num103].type != 10) || WorldGen.SolidTile(num102, num103 + 1))
{
WorldGen.PlaceTile(num102, num103, 136, true, false, -1, 0);
}
if (Main.tile[num102, num103].active())
{
while (num102 != num96 || num103 != num98)
{
Main.tile[num102, num103].wire(true);
if (num102 > num96)
{
num102--;
}
if (num102 < num96)
{
num102++;
}
Main.tile[num102, num103].wire(true);
if (num103 > num98)
{
num103--;
}
if (num103 < num98)
{
num103++;
}
Main.tile[num102, num103].wire(true);
}
if (WorldGen.genRand.Next(3) > 0)
{
Main.tile[num96, num98].frameX = 18;
Main.tile[num96, num98 + 1].frameX = 18;
break;
}
break;
}
}
}
break;
}
break;
}
else
{
num98--;
}
}
}
if (num13 > num14)
{
num15++;
num13 = 0;
}
}
num13 = 0;
num14 = 1000;
num15 = 0;
while (num15 < Main.maxTilesX / 500)
{
num13++;
int num104 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
int num105 = WorldGen.genRand.Next(WorldGen.dMinY, WorldGen.dMaxY);
while ((double)num105 < Main.worldSurface)
{
num105 = WorldGen.genRand.Next(WorldGen.dMinY, WorldGen.dMaxY);
}
if (Main.wallDungeon[(int)Main.tile[num104, num105].wall] && WorldGen.placeTrap(num104, num105, 0))
{
num13 = num14;
}
if (num13 > num14)
{
num15++;
num13 = 0;
}
}
float num106 = 2000f * (float)Main.maxTilesX / 4200f;
int num107 = 1 + Main.maxTilesX / 4200;
int num108 = 1 + Main.maxTilesX / 4200;
int num109 = 0;
while ((float)num109 < num106)
{
if (num107 > 0 || num108 > 0)
{
num109--;
}
int num110 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
int num111 = WorldGen.genRand.Next((int)Main.worldSurface + 10, WorldGen.dMaxY);
while (!Main.wallDungeon[(int)Main.tile[num110, num111].wall] || Main.tile[num110, num111].active())
{
num110 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
num111 = WorldGen.genRand.Next((int)Main.worldSurface + 10, WorldGen.dMaxY);
}
if (Main.wallDungeon[(int)Main.tile[num110, num111].wall] && !Main.tile[num110, num111].active())
{
while (!WorldGen.SolidTile(num110, num111) && num111 < Main.maxTilesY - 200)
{
num111++;
}
num111--;
int num112 = num110;
int num113 = num110;
while (!Main.tile[num112, num111].active() && WorldGen.SolidTile(num112, num111 + 1))
{
num112--;
}
num112++;
while (!Main.tile[num113, num111].active() && WorldGen.SolidTile(num113, num111 + 1))
{
num113++;
}
num113--;
int num114 = num113 - num112;
int num115 = (num113 + num112) / 2;
if (!Main.tile[num115, num111].active() && Main.wallDungeon[(int)Main.tile[num115, num111].wall] && WorldGen.SolidTile(num115, num111 + 1) && Main.tile[num115, num111 + 1].type != 48)
{
int style5 = 13;
int style6 = 10;
int style7 = 11;
int num116 = 1;
int num117 = 46;
int style8 = 1;
int num118 = 5;
int num119 = 11;
int num120 = 5;
int num121 = 6;
int num122 = 21;
int num123 = 22;
int num124 = 24;
if (num3 == 8)
{
style5 = 14;
style6 = 11;
style7 = 12;
num116 = 2;
num117 = 47;
style8 = 2;
num118 = 6;
num119 = 12;
num120 = 6;
num121 = 7;
num122 = 22;
num123 = 23;
num124 = 25;
}
else if (num3 == 9)
{
style5 = 15;
style6 = 12;
style7 = 13;
num116 = 3;
num117 = 48;
style8 = 3;
num118 = 7;
num119 = 13;
num120 = 7;
num121 = 8;
num122 = 23;
num123 = 24;
num124 = 26;
}
if (Main.tile[num115, num111].wall >= 94 && Main.tile[num115, num111].wall <= 105)
{
style5 = 17;
style6 = 14;
style7 = 15;
num116 = -1;
num117 = -1;
style8 = 5;
num118 = -1;
num119 = -1;
num120 = -1;
num121 = -1;
num122 = -1;
num123 = -1;
num124 = -1;
}
int num125 = WorldGen.genRand.Next(12);
if ((num125 == 10 || num125 == 11) && WorldGen.genRand.Next(4) != 0)
{
num125 = WorldGen.genRand.Next(12);
}
while ((num125 == 2 && num117 == -1) || (num125 == 5 && num118 == -1) || (num125 == 6 && num119 == -1) || (num125 == 7 && num120 == -1) || (num125 == 8 && num121 == -1) || (num125 == 9 && num122 == -1) || (num125 == 10 && num123 == -1) || (num125 == 11 && num124 == -1))
{
num125 = WorldGen.genRand.Next(9);
}
int num126 = 0;
int num127 = 0;
if (num125 == 0)
{
num126 = 5;
num127 = 4;
}
if (num125 == 1)
{
num126 = 4;
num127 = 3;
}
if (num125 == 2)
{
num126 = 3;
num127 = 5;
}
if (num125 == 3)
{
num126 = 4;
num127 = 6;
}
if (num125 == 4)
{
num126 = 3;
num127 = 3;
}
if (num125 == 5)
{
num126 = 5;
num127 = 3;
}
if (num125 == 6)
{
num126 = 5;
num127 = 4;
}
if (num125 == 7)
{
num126 = 5;
num127 = 4;
}
if (num125 == 8)
{
num126 = 5;
num127 = 4;
}
if (num125 == 9)
{
num126 = 5;
num127 = 3;
}
if (num125 == 10)
{
num126 = 2;
num127 = 4;
}
if (num125 == 11)
{
num126 = 3;
num127 = 3;
}
for (int num128 = num115 - num126; num128 <= num115 + num126; num128++)
{
for (int num129 = num111 - num127; num129 <= num111; num129++)
{
if (Main.tile[num128, num129].active())
{
num125 = -1;
break;
}
}
}
if ((double)num114 < (double)num126 * 1.75)
{
num125 = -1;
}
if (num107 > 0 || num108 > 0)
{
if (num107 > 0)
{
WorldGen.PlaceTile(num115, num111, 355, true, false, -1, 0);
if (Main.tile[num115, num111].type == 355)
{
num107--;
}
}
else if (num108 > 0)
{
WorldGen.PlaceTile(num115, num111, 354, true, false, -1, 0);
if (Main.tile[num115, num111].type == 354)
{
num108--;
}
}
}
else if (num125 == 0)
{
WorldGen.PlaceTile(num115, num111, 14, true, false, -1, style6);
if (Main.tile[num115, num111].active())
{
if (!Main.tile[num115 - 2, num111].active())
{
WorldGen.PlaceTile(num115 - 2, num111, 15, true, false, -1, style5);
if (Main.tile[num115 - 2, num111].active())
{
Tile expr_2900 = Main.tile[num115 - 2, num111];
expr_2900.frameX += 18;
Tile expr_2921 = Main.tile[num115 - 2, num111 - 1];
expr_2921.frameX += 18;
}
}
if (!Main.tile[num115 + 2, num111].active())
{
WorldGen.PlaceTile(num115 + 2, num111, 15, true, false, -1, style5);
}
}
for (int num130 = num115 - 1; num130 <= num115 + 1; num130++)
{
if (WorldGen.genRand.Next(2) == 0 && !Main.tile[num130, num111 - 2].active())
{
int num131 = WorldGen.genRand.Next(5);
if (num116 != -1 && num131 <= 1 && !Main.tileLighted[(int)Main.tile[num130 - 1, num111 - 2].type])
{
WorldGen.PlaceTile(num130, num111 - 2, 33, true, false, -1, num116);
}
if (num131 == 2 && !Main.tileLighted[(int)Main.tile[num130 - 1, num111 - 2].type])
{
WorldGen.PlaceTile(num130, num111 - 2, 49, true, false, -1, 0);
}
if (num131 == 3)
{
WorldGen.PlaceTile(num130, num111 - 2, 50, true, false, -1, 0);
}
if (num131 == 4)
{
WorldGen.PlaceTile(num130, num111 - 2, 103, true, false, -1, 0);
}
}
}
}
else if (num125 == 1)
{
WorldGen.PlaceTile(num115, num111, 18, true, false, -1, style7);
if (Main.tile[num115, num111].active())
{
if (WorldGen.genRand.Next(2) == 0)
{
if (!Main.tile[num115 - 1, num111].active())
{
WorldGen.PlaceTile(num115 - 1, num111, 15, true, false, -1, style5);
if (Main.tile[num115 - 1, num111].active())
{
Tile expr_2AE7 = Main.tile[num115 - 1, num111];
expr_2AE7.frameX += 18;
Tile expr_2B08 = Main.tile[num115 - 1, num111 - 1];
expr_2B08.frameX += 18;
}
}
}
else if (!Main.tile[num115 + 2, num111].active())
{
WorldGen.PlaceTile(num115 + 2, num111, 15, true, false, -1, style5);
}
for (int num132 = num115; num132 <= num115 + 1; num132++)
{
if (WorldGen.genRand.Next(2) == 0 && !Main.tile[num132, num111 - 1].active())
{
int num133 = WorldGen.genRand.Next(5);
if (num116 != -1 && num133 <= 1 && !Main.tileLighted[(int)Main.tile[num132 - 1, num111 - 1].type])
{
WorldGen.PlaceTile(num132, num111 - 1, 33, true, false, -1, num116);
}
if (num133 == 2 && !Main.tileLighted[(int)Main.tile[num132 - 1, num111 - 1].type])
{
WorldGen.PlaceTile(num132, num111 - 1, 49, true, false, -1, 0);
}
if (num133 == 3)
{
WorldGen.PlaceTile(num132, num111 - 1, 50, true, false, -1, 0);
}
if (num133 == 4)
{
WorldGen.PlaceTile(num132, num111 - 1, 103, true, false, -1, 0);
}
}
}
}
}
else if (num125 == 2)
{
WorldGen.PlaceTile(num115, num111, 105, true, false, -1, num117);
}
else if (num125 == 3)
{
WorldGen.PlaceTile(num115, num111, 101, true, false, -1, style8);
}
else if (num125 == 4)
{
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.PlaceTile(num115, num111, 15, true, false, -1, style5);
Tile expr_2CA0 = Main.tile[num115, num111];
expr_2CA0.frameX += 18;
Tile expr_2CBF = Main.tile[num115, num111 - 1];
expr_2CBF.frameX += 18;
}
else
{
WorldGen.PlaceTile(num115, num111, 15, true, false, -1, style5);
}
}
else if (num125 == 5)
{
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.Place4x2(num115, num111, 79, 1, num118);
}
else
{
WorldGen.Place4x2(num115, num111, 79, -1, num118);
}
}
else if (num125 == 6)
{
WorldGen.PlaceTile(num115, num111, 87, true, false, -1, num119);
}
else if (num125 == 7)
{
WorldGen.PlaceTile(num115, num111, 88, true, false, -1, num120);
}
else if (num125 == 8)
{
WorldGen.PlaceTile(num115, num111, 89, true, false, -1, num121);
}
else if (num125 == 9)
{
if (WorldGen.genRand.Next(2) == 0)
{
WorldGen.Place4x2(num115, num111, 90, 1, num122);
}
else
{
WorldGen.Place4x2(num115, num111, 90, -1, num122);
}
}
else if (num125 == 10)
{
WorldGen.PlaceTile(num115, num111, 93, true, false, -1, num124);
}
else if (num125 == 11)
{
WorldGen.PlaceTile(num115, num111, 100, true, false, -1, num123);
}
}
}
num109++;
}
num106 = 420000f / (float)Main.maxTilesX;
int num134 = 0;
while ((float)num134 < num106)
{
int num135 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
int num136 = WorldGen.genRand.Next((int)Main.worldSurface, WorldGen.dMaxY);
while (!Main.wallDungeon[(int)Main.tile[num135, num136].wall] || Main.tile[num135, num136].active())
{
num135 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
num136 = WorldGen.genRand.Next((int)Main.worldSurface, WorldGen.dMaxY);
}
int num138;
int num139;
int num140;
int num141;
for (int num137 = 0; num137 < 2; num137++)
{
num138 = num135;
num139 = num135;
while (!Main.tile[num138, num136].active() && Main.wallDungeon[(int)Main.tile[num138, num136].wall])
{
num138--;
}
num138++;
while (!Main.tile[num139, num136].active() && Main.wallDungeon[(int)Main.tile[num139, num136].wall])
{
num139++;
}
num139--;
num135 = (num138 + num139) / 2;
num140 = num136;
num141 = num136;
while (!Main.tile[num135, num140].active() && Main.wallDungeon[(int)Main.tile[num135, num140].wall])
{
num140--;
}
num140++;
while (!Main.tile[num135, num141].active() && Main.wallDungeon[(int)Main.tile[num135, num141].wall])
{
num141++;
}
num141--;
num136 = (num140 + num141) / 2;
}
num138 = num135;
num139 = num135;
while (!Main.tile[num138, num136].active() && !Main.tile[num138, num136 - 1].active() && !Main.tile[num138, num136 + 1].active())
{
num138--;
}
num138++;
while (!Main.tile[num139, num136].active() && !Main.tile[num139, num136 - 1].active() && !Main.tile[num139, num136 + 1].active())
{
num139++;
}
num139--;
num140 = num136;
num141 = num136;
while (!Main.tile[num135, num140].active() && !Main.tile[num135 - 1, num140].active() && !Main.tile[num135 + 1, num140].active())
{
num140--;
}
num140++;
while (!Main.tile[num135, num141].active() && !Main.tile[num135 - 1, num141].active() && !Main.tile[num135 + 1, num141].active())
{
num141++;
}
num141--;
num135 = (num138 + num139) / 2;
num136 = (num140 + num141) / 2;
int num142 = num139 - num138;
int num143 = num141 - num140;
if (num142 > 7 && num143 > 5)
{
bool[] array4 = new bool[3];
array4[0] = true;
if (num142 > num143 * 3 && num142 > 21)
{
array4[1] = true;
}
if (num143 > num142 * 3 && num143 > 21)
{
array4[2] = true;
}
int num144 = WorldGen.genRand.Next(3);
if ((int)Main.tile[num135, num136].wall == array[0])
{
num144 = 0;
}
while (!array4[num144])
{
num144 = WorldGen.genRand.Next(3);
}
if (WorldGen.nearPicture2(num135, num136))
{
num144 = -1;
}
if (num144 == 0)
{
Vector2 vector = WorldGen.randPictureTile();
if ((int)Main.tile[num135, num136].wall != array[0])
{
vector = WorldGen.randBoneTile();
}
int type = (int)vector.X;
int style9 = (int)vector.Y;
if (!WorldGen.nearPicture(num135, num136))
{
WorldGen.PlaceTile(num135, num136, type, true, false, -1, style9);
}
}
else if (num144 == 1)
{
Vector2 vector2 = WorldGen.randPictureTile();
if ((int)Main.tile[num135, num136].wall != array[0])
{
vector2 = WorldGen.randBoneTile();
}
int type2 = (int)vector2.X;
int style10 = (int)vector2.Y;
if (!Main.tile[num135, num136].active())
{
WorldGen.PlaceTile(num135, num136, type2, true, false, -1, style10);
}
int num145 = num135;
int num146 = num136;
int num147 = num136;
for (int num148 = 0; num148 < 2; num148++)
{
num135 += 7;
num140 = num147;
num141 = num147;
while (!Main.tile[num135, num140].active() && !Main.tile[num135 - 1, num140].active() && !Main.tile[num135 + 1, num140].active())
{
num140--;
}
num140++;
while (!Main.tile[num135, num141].active() && !Main.tile[num135 - 1, num141].active() && !Main.tile[num135 + 1, num141].active())
{
num141++;
}
num141--;
num147 = (num140 + num141) / 2;
vector2 = WorldGen.randPictureTile();
if ((int)Main.tile[num135, num147].wall != array[0])
{
vector2 = WorldGen.randBoneTile();
}
type2 = (int)vector2.X;
style10 = (int)vector2.Y;
if (Math.Abs(num146 - num147) >= 4 || WorldGen.nearPicture(num135, num147))
{
break;
}
WorldGen.PlaceTile(num135, num147, type2, true, false, -1, style10);
}
num147 = num136;
num135 = num145;
for (int num149 = 0; num149 < 2; num149++)
{
num135 -= 7;
num140 = num147;
num141 = num147;
while (!Main.tile[num135, num140].active() && !Main.tile[num135 - 1, num140].active() && !Main.tile[num135 + 1, num140].active())
{
num140--;
}
num140++;
while (!Main.tile[num135, num141].active() && !Main.tile[num135 - 1, num141].active() && !Main.tile[num135 + 1, num141].active())
{
num141++;
}
num141--;
num147 = (num140 + num141) / 2;
vector2 = WorldGen.randPictureTile();
if ((int)Main.tile[num135, num147].wall != array[0])
{
vector2 = WorldGen.randBoneTile();
}
type2 = (int)vector2.X;
style10 = (int)vector2.Y;
if (Math.Abs(num146 - num147) >= 4 || WorldGen.nearPicture(num135, num147))
{
break;
}
WorldGen.PlaceTile(num135, num147, type2, true, false, -1, style10);
}
}
else if (num144 == 2)
{
Vector2 vector3 = WorldGen.randPictureTile();
if ((int)Main.tile[num135, num136].wall != array[0])
{
vector3 = WorldGen.randBoneTile();
}
int type3 = (int)vector3.X;
int style11 = (int)vector3.Y;
if (!Main.tile[num135, num136].active())
{
WorldGen.PlaceTile(num135, num136, type3, true, false, -1, style11);
}
int num150 = num136;
int num151 = num135;
int num152 = num135;
for (int num153 = 0; num153 < 3; num153++)
{
num136 += 7;
num138 = num152;
num139 = num152;
while (!Main.tile[num138, num136].active() && !Main.tile[num138, num136 - 1].active() && !Main.tile[num138, num136 + 1].active())
{
num138--;
}
num138++;
while (!Main.tile[num139, num136].active() && !Main.tile[num139, num136 - 1].active() && !Main.tile[num139, num136 + 1].active())
{
num139++;
}
num139--;
num152 = (num138 + num139) / 2;
vector3 = WorldGen.randPictureTile();
if ((int)Main.tile[num152, num136].wall != array[0])
{
vector3 = WorldGen.randBoneTile();
}
type3 = (int)vector3.X;
style11 = (int)vector3.Y;
if (Math.Abs(num151 - num152) >= 4 || WorldGen.nearPicture(num152, num136))
{
break;
}
WorldGen.PlaceTile(num152, num136, type3, true, false, -1, style11);
}
num152 = num135;
num136 = num150;
for (int num154 = 0; num154 < 3; num154++)
{
num136 -= 7;
num138 = num152;
num139 = num152;
while (!Main.tile[num138, num136].active() && !Main.tile[num138, num136 - 1].active() && !Main.tile[num138, num136 + 1].active())
{
num138--;
}
num138++;
while (!Main.tile[num139, num136].active() && !Main.tile[num139, num136 - 1].active() && !Main.tile[num139, num136 + 1].active())
{
num139++;
}
num139--;
num152 = (num138 + num139) / 2;
vector3 = WorldGen.randPictureTile();
if ((int)Main.tile[num152, num136].wall != array[0])
{
vector3 = WorldGen.randBoneTile();
}
type3 = (int)vector3.X;
style11 = (int)vector3.Y;
if (Math.Abs(num151 - num152) >= 4 || WorldGen.nearPicture(num152, num136))
{
break;
}
WorldGen.PlaceTile(num152, num136, type3, true, false, -1, style11);
}
}
}
num134++;
}
num106 = 840000f / (float)Main.maxTilesX;
int num155 = 0;
while ((float)num155 < num106)
{
int num156 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
int num157 = WorldGen.genRand.Next(WorldGen.dMinY, WorldGen.dMaxY);
while (!Main.wallDungeon[(int)Main.tile[num156, num157].wall] || Main.tile[num156, num157].active())
{
num156 = WorldGen.genRand.Next(WorldGen.dMinX, WorldGen.dMaxX);
num157 = WorldGen.genRand.Next(WorldGen.dMinY, WorldGen.dMaxY);
}
while (!WorldGen.SolidTile(num156, num157) && num157 > 10)
{
num157--;
}
num157++;
if (Main.wallDungeon[(int)Main.tile[num156, num157].wall] && Main.tile[num156, num157 - 1].type != 48 && !Main.tile[num156, num157].active() && !Main.tile[num156, num157 + 1].active() && !Main.tile[num156, num157 + 2].active() && !Main.tile[num156, num157 + 3].active())
{
bool flag9 = true;
for (int num158 = num156 - 1; num158 <= num156 + 1; num158++)
{
for (int num159 = num157; num159 <= num157 + 3; num159++)
{
if (Main.tile[num158, num159].active() && (Main.tile[num158, num159].type == 10 || Main.tile[num158, num159].type == 11 || Main.tile[num158, num159].type == 91))
{
flag9 = false;
}
}
}
if (flag9)
{
int num160 = 10;
if ((int)Main.tile[num156, num157].wall == array[1])
{
num160 = 12;
}
if ((int)Main.tile[num156, num157].wall == array[2])
{
num160 = 14;
}
num160 += WorldGen.genRand.Next(2);
WorldGen.PlaceTile(num156, num157, 91, true, false, -1, num160);
}
}
num155++;
}
}
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 = 17;
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 > 13)
{
if (num2 == 14)
{
num2 = 15;
}
else if (num2 == 15)
{
num2 = 16;
}
else if (num2 == 16)
{
num2 = 30;
}
}
}
return new Vector2((float)num, (float)num2);
}
public static void DungeonStairs(int i, int j, ushort tileType, int wallType)
{
Vector2 zero = Vector2.Zero;
double num = (double)WorldGen.genRand.Next(5, 9);
Vector2 value;
value.X = (float)i;
value.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;
}
zero.Y = -1f;
zero.X = (float)num2;
if (WorldGen.genRand.Next(3) != 0)
{
zero.X *= 1f + (float)WorldGen.genRand.Next(0, 200) * 0.01f;
}
else if (WorldGen.genRand.Next(3) == 0)
{
zero.X *= (float)WorldGen.genRand.Next(50, 76) * 0.01f;
}
else if (WorldGen.genRand.Next(6) == 0)
{
zero.Y *= 2f;
}
if (WorldGen.dungeonX < Main.maxTilesX / 2 && zero.X < 0f && (double)zero.X < 0.5)
{
zero.X = -0.5f;
}
if (WorldGen.dungeonX > Main.maxTilesX / 2 && zero.X > 0f && (double)zero.X > 0.5)
{
zero.X = -0.5f;
}
while (k > 0)
{
k--;
int num3 = (int)((double)value.X - num - 4.0 - (double)WorldGen.genRand.Next(6));
int num4 = (int)((double)value.X + num + 4.0 + (double)WorldGen.genRand.Next(6));
int num5 = (int)((double)value.Y - num - 4.0);
int num6 = (int)((double)value.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 (value.X > (float)(Main.maxTilesX / 2))
{
num7 = -1;
}
int num8 = (int)(value.X + (float)WorldGen.dxStrength1 * 0.6f * (float)num7 + (float)WorldGen.dxStrength2 * (float)num7);
int num9 = (int)(WorldGen.dyStrength2 * 0.5);
if ((double)value.Y < Main.worldSurface - 5.0 && Main.tile[num8, (int)((double)value.Y - num - 6.0 + (double)num9)].wall == 0 && Main.tile[num8, (int)((double)value.Y - num - 7.0 + (double)num9)].wall == 0 && Main.tile[num8, (int)((double)value.Y - num - 8.0 + (double)num9)].wall == 0)
{
WorldGen.dSurface = true;
WorldGen.TileRunner(num8, (int)((double)value.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 = 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)value.X - num * 0.5 - (double)num11);
num4 = (int)((double)value.X + num * 0.5 + (double)num11);
num5 = (int)((double)value.Y - num * 0.5 - (double)num11);
num6 = (int)((double)value.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;
}
value += zero;
if ((double)value.Y < Main.worldSurface)
{
zero.Y *= 0.98f;
}
}
WorldGen.dungeonX = (int)value.X;
WorldGen.dungeonY = (int)value.Y;
}
public static void DungeonHalls(int i, int j, ushort tileType, int wallType, bool forceX = false)
{
Vector2 zero = Vector2.Zero;
double num = (double)WorldGen.genRand.Next(4, 6);
double num2 = num;
Vector2 zero2 = Vector2.Zero;
Vector2 zero3 = Vector2.Zero;
Vector2 value;
value.X = (float)i;
value.Y = (float)j;
int k = WorldGen.genRand.Next(35, 80);
if (forceX)
{
k += 20;
WorldGen.lastDungeonHall = Vector2.Zero;
}
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)
{
zero2.Y = 0f;
zero2.X = (float)num5;
zero3.Y = 0f;
zero3.X = (float)(-(float)num5);
zero.Y = 0f;
zero.X = (float)num5;
if (WorldGen.genRand.Next(3) == 0)
{
if (WorldGen.genRand.Next(2) == 0)
{
zero.Y = -0.2f;
}
else
{
zero.Y = 0.2f;
}
}
}
else
{
num += 1.0;
zero.Y = (float)num5;
zero.X = 0f;
zero2.X = 0f;
zero2.Y = (float)num5;
zero3.X = 0f;
zero3.Y = (float)(-(float)num5);
if (WorldGen.genRand.Next(3) != 0)
{
flag2 = true;
if (WorldGen.genRand.Next(2) == 0)
{
zero.X = (float)WorldGen.genRand.Next(10, 20) * 0.1f;
}
else
{
zero.X = (float)(-(float)WorldGen.genRand.Next(10, 20)) * 0.1f;
}
}
else if (WorldGen.genRand.Next(2) == 0)
{
if (WorldGen.genRand.Next(2) == 0)
{
zero.X = (float)WorldGen.genRand.Next(20, 40) * 0.01f;
}
else
{
zero.X = (float)(-(float)WorldGen.genRand.Next(20, 40)) * 0.01f;
}
}
else
{
k /= 2;
}
}
if (WorldGen.lastDungeonHall != zero3)
{
flag = true;
}
}
int num7 = 0;
if (!forceX)
{
if (value.X > (float)(WorldGen.lastMaxTilesX - 200))
{
int num5 = -1;
zero2.Y = 0f;
zero2.X = (float)num5;
zero.Y = 0f;
zero.X = (float)num5;
if (WorldGen.genRand.Next(3) == 0)
{
if (WorldGen.genRand.Next(2) == 0)
{
zero.Y = -0.2f;
}
else
{
zero.Y = 0.2f;
}
}
}
else if (value.X < 200f)
{
int num5 = 1;
zero2.Y = 0f;
zero2.X = (float)num5;
zero.Y = 0f;
zero.X = (float)num5;
if (WorldGen.genRand.Next(3) == 0)
{
if (WorldGen.genRand.Next(2) == 0)
{
zero.Y = -0.2f;
}
else
{
zero.Y = 0.2f;
}
}
}
else if (value.Y > (float)(WorldGen.lastMaxTilesY - 300))
{
int num5 = -1;
num += 1.0;
zero.Y = (float)num5;
zero.X = 0f;
zero2.X = 0f;
zero2.Y = (float)num5;
if (WorldGen.genRand.Next(2) == 0)
{
if (WorldGen.genRand.Next(2) == 0)
{
zero.X = (float)WorldGen.genRand.Next(20, 50) * 0.01f;
}
else
{
zero.X = (float)(-(float)WorldGen.genRand.Next(20, 50)) * 0.01f;
}
}
}
else if ((double)value.Y < Main.rockLayer + 100.0)
{
int num5 = 1;
num += 1.0;
zero.Y = (float)num5;
zero.X = 0f;
zero2.X = 0f;
zero2.Y = (float)num5;
if (WorldGen.genRand.Next(3) != 0)
{
flag2 = true;
if (WorldGen.genRand.Next(2) == 0)
{
zero.X = (float)WorldGen.genRand.Next(10, 20) * 0.1f;
}
else
{
zero.X = (float)(-(float)WorldGen.genRand.Next(10, 20)) * 0.1f;
}
}
else if (WorldGen.genRand.Next(2) == 0)
{
if (WorldGen.genRand.Next(2) == 0)
{
zero.X = (float)WorldGen.genRand.Next(20, 50) * 0.01f;
}
else
{
zero.X = (float)WorldGen.genRand.Next(20, 50) * 0.01f;
}
}
}
else if (value.X < (float)(Main.maxTilesX / 2) && (double)value.X > (double)Main.maxTilesX * 0.25)
{
int num5 = -1;
zero2.Y = 0f;
zero2.X = (float)num5;
zero.Y = 0f;
zero.X = (float)num5;
if (WorldGen.genRand.Next(3) == 0)
{
if (WorldGen.genRand.Next(2) == 0)
{
zero.Y = -0.2f;
}
else
{
zero.Y = 0.2f;
}
}
}
else if (value.X > (float)(Main.maxTilesX / 2) && (double)value.X < (double)Main.maxTilesX * 0.75)
{
int num5 = 1;
zero2.Y = 0f;
zero2.X = (float)num5;
zero.Y = 0f;
zero.X = (float)num5;
if (WorldGen.genRand.Next(3) == 0)
{
if (WorldGen.genRand.Next(2) == 0)
{
zero.Y = -0.2f;
}
else
{
zero.Y = 0.2f;
}
}
}
}
if (zero2.Y == 0f)
{
WorldGen.DDoorX[WorldGen.numDDoors] = (int)value.X;
WorldGen.DDoorY[WorldGen.numDDoors] = (int)value.Y;
WorldGen.DDoorPos[WorldGen.numDDoors] = 0;
WorldGen.numDDoors++;
}
else
{
WorldGen.DPlatX[WorldGen.numDPlats] = (int)value.X;
WorldGen.DPlatY[WorldGen.numDPlats] = (int)value.Y;
WorldGen.numDPlats++;
}
WorldGen.lastDungeonHall = zero2;
if (Math.Abs(zero.X) > Math.Abs(zero.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 (zero2.X > 0f && value.X > (float)(Main.maxTilesX - 100))
{
k = 0;
}
else if (zero2.X < 0f && value.X < 100f)
{
k = 0;
}
else if (zero2.Y > 0f && value.Y > (float)(Main.maxTilesY - 100))
{
k = 0;
}
else if (zero2.Y < 0f && (double)value.Y < Main.rockLayer + 50.0)
{
k = 0;
}
k--;
int num8 = (int)((double)value.X - num - 4.0 - (double)WorldGen.genRand.Next(6));
int num9 = (int)((double)value.X + num + 4.0 + (double)WorldGen.genRand.Next(6));
int num10 = (int)((double)value.Y - num - 4.0 - (double)WorldGen.genRand.Next(6));
int num11 = (int)((double)value.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 = 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 (zero.Y == 0f && WorldGen.genRand.Next((int)num + 1) == 0)
{
num16 = WorldGen.genRand.Next(1, 3);
}
else if (zero.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)value.X - num * 0.5 - (double)num16);
num9 = (int)((double)value.X + num * 0.5 + (double)num16);
num10 = (int)((double)value.Y - num * 0.5 - (double)num16);
num11 = (int)((double)value.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;
}
}
value += zero;
if (flag2 && num7 > WorldGen.genRand.Next(10, 20))
{
num7 = 0;
zero.X *= -1f;
}
}
WorldGen.dungeonX = (int)value.X;
WorldGen.dungeonY = (int)value.Y;
if (zero2.Y == 0f)
{
WorldGen.DDoorX[WorldGen.numDDoors] = (int)value.X;
WorldGen.DDoorY[WorldGen.numDDoors] = (int)value.Y;
WorldGen.DDoorPos[WorldGen.numDDoors] = 0;
WorldGen.numDDoors++;
return;
}
WorldGen.DPlatX[WorldGen.numDPlats] = (int)value.X;
WorldGen.DPlatY[WorldGen.numDPlats] = (int)value.Y;
WorldGen.numDPlats++;
}
public static void DungeonRoom(int i, int j, ushort 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 = 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, ushort 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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, 0f, 0f, 0f, 0f, 255);
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 = 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 = 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(Point point, int contain = 0, bool notNearOtherChests = false, int Style = -1)
{
return WorldGen.AddBuriedChest(point.X, point.Y, contain, notNearOtherChests, Style);
}
public static bool AddBuriedChest(int i, int j, int contain = 0, bool notNearOtherChests = false, int Style = -1)
{
bool flag = false;
bool flag2 = false;
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 flag3 = false;
int num = k;
int num2 = 0;
if ((double)num >= Main.worldSurface + 25.0 || contain > 0)
{
num2 = 1;
if (Style == 10 || contain == 211 || contain == 212 || contain == 213 || contain == 753)
{
num2 = 10;
flag2 = true;
}
}
if (Style >= 0)
{
num2 = Style;
}
if (num2 == 11 || (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)))
{
flag = true;
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
{
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 == WorldGen.hellChestItem[0])
{
contain = 274;
num2 = 4;
flag3 = true;
}
else if (WorldGen.hellChest == WorldGen.hellChestItem[1])
{
contain = 220;
num2 = 4;
flag3 = true;
}
else if (WorldGen.hellChest == WorldGen.hellChestItem[2])
{
contain = 112;
num2 = 4;
flag3 = true;
}
else if (WorldGen.hellChest == WorldGen.hellChestItem[3])
{
contain = 218;
num2 = 4;
flag3 = true;
}
else
{
contain = 3019;
num2 = 4;
flag3 = true;
}
}
int num4 = WorldGen.PlaceChest(i - 1, num - 1, 21, notNearOtherChests, num2);
if (num4 >= 0)
{
if (flag3)
{
WorldGen.hellChest++;
if (WorldGen.hellChest > 4)
{
WorldGen.hellChest = 0;
}
}
int num5 = 0;
while (num5 == 0)
{
if ((num2 == 0 && (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);
}
else if (contain == 832)
{
num5++;
Main.chest[num4].item[num5].SetDefaults(933, false);
}
num5++;
}
else
{
int num6 = WorldGen.genRand.Next(11);
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(40, 75);
}
if (num6 == 4)
{
Main.chest[num4].item[num5].SetDefaults(279, false);
Main.chest[num4].item[num5].stack = WorldGen.genRand.Next(70, 150);
}
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);
}
if (num6 == 8)
{
Main.chest[num4].item[num5].SetDefaults(3068, false);
Main.chest[num4].item[num5].Prefix(-1);
}
if (num6 == 9)
{
Main.chest[num4].item[num5].SetDefaults(3069, false);
Main.chest[num4].item[num5].Prefix(-1);
}
if (num6 == 10)
{
Main.chest[num4].item[num5].SetDefaults(3084, false);
Main.chest[num4].item[num5].Prefix(-1);
}
num5++;
}
if (WorldGen.genRand.Next(6) == 0)
{
Main.chest[num4].item[num5].SetDefaults(3093, false);
Main.chest[num4].item[num5].stack = 1;
if (WorldGen.genRand.Next(5) == 0)
{
Main.chest[num4].item[num5].stack += WorldGen.genRand.Next(2);
}
if (WorldGen.genRand.Next(10) == 0)
{
Main.chest[num4].item[num5].stack += WorldGen.genRand.Next(3);
}
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)
{
Main.chest[num4].item[num5].SetDefaults(2350, false);
Main.chest[num4].item[num5].stack = WorldGen.genRand.Next(2, 5);
num5++;
}
if (WorldGen.genRand.Next(3) > 0)
{
int num10 = WorldGen.genRand.Next(6);
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);
}
if (num10 == 4)
{
Main.chest[num4].item[num5].SetDefaults(2322, false);
}
if (num10 == 5)
{
Main.chest[num4].item[num5].SetDefaults(2325, 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)
{
if (contain == 832)
{
Main.chest[num4].item[num5].SetDefaults(933, false);
num5++;
}
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(9);
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);
}
if (num16 == 7)
{
Main.chest[num4].item[num5].SetDefaults(2322, false);
}
if (num16 == 8)
{
Main.chest[num4].item[num5].SetDefaults(2329, false);
}
Main.chest[num4].item[num5].stack = stack11;
num5++;
}
if (WorldGen.genRand.Next(3) != 0)
{
int stack12 = WorldGen.genRand.Next(1, 3);
Main.chest[num4].item[num5].SetDefaults(2350, false);
Main.chest[num4].item[num5].stack = stack12;
num5++;
}
if (WorldGen.genRand.Next(2) == 0)
{
int stack13 = 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 = stack13;
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++;
if (flag && WorldGen.genRand.Next(5) == 0)
{
Main.chest[num4].item[num5].SetDefaults(3199, false);
num5++;
}
if (flag2 && WorldGen.genRand.Next(6) == 0)
{
Main.chest[num4].item[num5++].SetDefaults(3360, false);
Main.chest[num4].item[num5++].SetDefaults(3361, false);
}
}
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 stack14 = 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 = stack14;
num5++;
}
if (WorldGen.genRand.Next(2) == 0)
{
int num19 = WorldGen.genRand.Next(2);
int stack15 = 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 = stack15;
num5++;
}
if (WorldGen.genRand.Next(2) == 0)
{
int num20 = WorldGen.genRand.Next(1);
int stack16 = WorldGen.genRand.Next(3) + 3;
if (num20 == 0)
{
Main.chest[num4].item[num5].SetDefaults(188, false);
}
Main.chest[num4].item[num5].stack = stack16;
num5++;
}
if (WorldGen.genRand.Next(3) > 0)
{
int num21 = WorldGen.genRand.Next(6);
int stack17 = 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 = stack17;
num5++;
}
if (WorldGen.genRand.Next(3) > 1)
{
int num22 = WorldGen.genRand.Next(7);
int stack18 = 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);
}
if (num22 == 4)
{
Main.chest[num4].item[num5].SetDefaults(2329, false);
}
if (num22 == 5)
{
Main.chest[num4].item[num5].SetDefaults(2351, false);
}
if (num22 == 6)
{
Main.chest[num4].item[num5].SetDefaults(2329, false);
}
Main.chest[num4].item[num5].stack = stack18;
num5++;
}
if (WorldGen.genRand.Next(2) == 0)
{
int stack19 = WorldGen.genRand.Next(1, 3);
Main.chest[num4].item[num5].SetDefaults(2350, false);
Main.chest[num4].item[num5].stack = stack19;
num5++;
}
if (WorldGen.genRand.Next(2) == 0)
{
int num23 = WorldGen.genRand.Next(2);
int stack20 = 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 = stack20;
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 stack21 = 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 = stack21;
num5++;
}
if (WorldGen.genRand.Next(2) == 0)
{
int num26 = WorldGen.genRand.Next(2);
int stack22 = 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 = stack22;
num5++;
}
if (WorldGen.genRand.Next(2) == 0)
{
int num27 = WorldGen.genRand.Next(2);
int stack23 = WorldGen.genRand.Next(6) + 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 = stack23;
num5++;
}
if (WorldGen.genRand.Next(4) > 0)
{
int num28 = WorldGen.genRand.Next(8);
int stack24 = 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);
}
if (num28 == 7)
{
Main.chest[num4].item[num5].SetDefaults(2323, false);
}
Main.chest[num4].item[num5].stack = stack24;
num5++;
}
if (WorldGen.genRand.Next(3) > 0)
{
int num29 = WorldGen.genRand.Next(8);
int stack25 = 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);
}
if (num29 == 5)
{
Main.chest[num4].item[num5].SetDefaults(2351, false);
}
if (num29 == 6)
{
Main.chest[num4].item[num5].SetDefaults(2348, false);
}
if (num29 == 7)
{
Main.chest[num4].item[num5].SetDefaults(2345, false);
}
Main.chest[num4].item[num5].stack = stack25;
num5++;
}
if (WorldGen.genRand.Next(3) == 0)
{
int stack26 = WorldGen.genRand.Next(1, 3);
Main.chest[num4].item[num5].SetDefaults(2350, false);
Main.chest[num4].item[num5].stack = stack26;
num5++;
}
if (WorldGen.genRand.Next(2) == 0)
{
int num30 = WorldGen.genRand.Next(2);
int stack27 = 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 = stack27;
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++;
}
}
if (num5 > 0)
{
if (num2 == 10 && WorldGen.genRand.Next(4) == 0)
{
Main.chest[num4].item[num5].SetDefaults(2204, false);
num5++;
}
if (num2 == 11 && WorldGen.genRand.Next(7) == 0)
{
Main.chest[num4].item[num5].SetDefaults(2198, false);
num5++;
}
if (num2 == 12 && WorldGen.genRand.Next(2) == 0)
{
Main.chest[num4].item[num5].SetDefaults(2196, false);
num5++;
}
if (num2 == 13 && WorldGen.genRand.Next(3) == 0)
{
Main.chest[num4].item[num5].SetDefaults(2197, false);
num5++;
}
if (num2 == 16)
{
Main.chest[num4].item[num5].SetDefaults(2195, false);
num5++;
}
if (Main.wallDungeon[(int)Main.tile[i, k].wall] && WorldGen.genRand.Next(8) == 0)
{
Main.chest[num4].item[num5].SetDefaults(2192, false);
num5++;
}
if (num2 == 16)
{
if (Main.rand.Next(5) == 0)
{
Main.chest[num4].item[num5].SetDefaults(2767, false);
num5++;
}
else
{
Main.chest[num4].item[num5].SetDefaults(2766, false);
Main.chest[num4].item[num5].stack = Main.rand.Next(3, 8);
num5++;
}
}
}
}
return true;
}
return false;
}
else
{
k++;
}
}
return false;
}
public static void UnlockDoor(int i, int j)
{
int num = j;
if (Main.tile[i, num] == null)
{
return;
}
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_8E = Main.tile[i, k];
expr_8E.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();
}
byte color2 = Main.tile[i, num2 + 1].color();
if (Main.tile[i, num2 + 2] == null)
{
Main.tile[i, num2 + 2] = new Tile();
}
byte color3 = 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;
}
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)
{
return false;
}
WorldGen.KillTile(num5, l, false, false, false);
}
}
if (Main.netMode != 1 && Wiring.running)
{
Wiring.SkipWire(num4, num2);
Wiring.SkipWire(num4, num2 + 1);
Wiring.SkipWire(num4, num2 + 2);
Wiring.SkipWire(num4 + 1, num2);
Wiring.SkipWire(num4 + 1, num2 + 1);
Wiring.SkipWire(num4 + 1, num2 + 2);
}
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 = 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(color2);
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 = num3 + 18;
Main.tile[num4 + 1, num2 + 1].color(color2);
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(color3);
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 = num3 + 18;
Main.tile[num4 + 1, num2 + 2].color(color3);
for (int m = num4 - 1; m <= num4 + 2; m++)
{
for (int n = num2 - 1; n <= num2 + 2; n++)
{
WorldGen.TileFrame(m, n, false, false);
}
}
return true;
}
public static void Check1xX(int x, int j, byte type)
{
if (WorldGen.destroyObject)
{
return;
}
int frameX = (int)Main.tile[x, j].frameX;
int num = 3;
if (type == 92)
{
num = 6;
}
int i = (int)Main.tile[x, j].frameY;
int num2 = 0;
while (i >= 18 * num)
{
i -= 18 * num;
num2++;
}
int num3 = j - i / 18;
bool flag = false;
for (int k = 0; k < num; k++)
{
if (Main.tile[x, num3 + k] == null)
{
Main.tile[x, num3 + k] = new Tile();
}
if (!Main.tile[x, num3 + k].active())
{
flag = true;
}
else if (Main.tile[x, num3 + k].type != (ushort)type)
{
flag = true;
}
else if ((int)Main.tile[x, num3 + k].frameY != k * 18 + num2 * num * 18)
{
flag = true;
}
else if ((int)Main.tile[x, num3 + k].frameX != frameX)
{
flag = true;
}
}
if (Main.tile[x, num3 + num] == null)
{
Main.tile[x, num3 + num] = new Tile();
}
if (!WorldGen.SolidTileAllowBottomSlope(x, num3 + num))
{
flag = true;
}
if (flag)
{
WorldGen.destroyObject = true;
for (int l = 0; l < num; l++)
{
if (Main.tile[x, num3 + l].type == (ushort)type)
{
WorldGen.KillTile(x, num3 + l, false, false, false);
}
}
if (type == 92)
{
Item.NewItem(x * 16, j * 16, 32, 32, 341, 1, false, 0, false);
}
if (type == 93)
{
int type2 = 0;
if (num2 == 0)
{
type2 = 342;
}
else if (num2 >= 1 && num2 <= 10)
{
type2 = 2082 + num2 - 1;
}
else if (num2 >= 11 && num2 <= 16)
{
type2 = 2129 + num2 - 11;
}
else if (num2 == 17)
{
type2 = 2225;
}
else if (num2 == 18)
{
type2 = 2533;
}
else if (num2 == 19)
{
type2 = 2547;
}
else if (num2 == 20)
{
type2 = 2563;
}
else if (num2 == 21)
{
type2 = 2578;
}
else if (num2 == 22)
{
type2 = 2643;
}
else if (num2 == 23)
{
type2 = 2644;
}
else if (num2 == 24)
{
type2 = 2645;
}
else if (num2 == 25)
{
type2 = 2646;
}
else if (num2 == 26)
{
type2 = 2647;
}
else if (num2 == 27)
{
type2 = 2819;
}
else if (num2 == 28)
{
type2 = 3135;
}
else if (num2 == 29)
{
type2 = 3137;
}
else if (num2 == 30)
{
type2 = 3136;
}
Item.NewItem(x * 16, j * 16, 32, 32, type2, 1, false, 0, false);
}
WorldGen.destroyObject = false;
}
}
public static void Check2xX(int i, int j, ushort 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 (type == 410 && num3 != 0)
{
num3 += 2;
}
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.SolidTileAllowBottomSlope(num, num4 + num2))
{
flag = true;
}
if (!WorldGen.SolidTileAllowBottomSlope(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)
{
int num5 = frameX / 36;
int type2;
if (num5 >= 1 && num5 <= 5)
{
type2 = 2237 + num5 - 1;
}
else if (num5 == 6)
{
type2 = 2560;
}
else if (num5 == 7)
{
type2 = 2575;
}
else if (num5 >= 8 && num5 <= 23)
{
type2 = 2591 + num5 - 8;
}
else if (num5 == 24)
{
type2 = 2809;
}
else if (num5 == 25)
{
type2 = 3126;
}
else if (num5 == 26)
{
type2 = 3128;
}
else if (num5 == 27)
{
type2 = 3127;
}
else
{
type2 = 359;
}
Item.NewItem(num * 16, j * 16, 32, 32, type2, 1, false, 0, false);
}
if (type == 105)
{
int num6 = frameX / 36;
if (num6 == 0)
{
num6 = 360;
}
else if (num6 == 1)
{
num6 = 52;
}
else if (num6 == 43)
{
num6 = 1152;
}
else if (num6 == 44)
{
num6 = 1153;
}
else if (num6 == 45)
{
num6 = 1154;
}
else if (num6 == 46)
{
num6 = 1408;
}
else if (num6 == 47)
{
num6 = 1409;
}
else if (num6 == 48)
{
num6 = 1410;
}
else if (num6 == 49)
{
num6 = 1462;
}
else if (num6 == 50)
{
num6 = 2672;
}
else
{
num6 = 438 + num6 - 2;
}
Item.NewItem(num * 16, j * 16, 32, 32, num6, 1, false, 0, false);
}
if (type == 356)
{
Item.NewItem(num * 16, j * 16, 32, 32, 3064, 1, false, 0, false);
}
if (type == 337)
{
int num7 = frameX / 36;
Item.NewItem(num * 16, j * 16, 32, 32, 2702 + num7, 1, false, 0, false);
}
if (type == 207)
{
int num8 = frameX / 36;
if (num8 == 0)
{
num8 = 909;
}
else if (num8 == 1)
{
num8 = 910;
}
else if (num8 >= 2 && num8 <= 7)
{
num8 = 938 + num8;
}
Item.NewItem(num * 16, j * 16, 32, 32, num8, 1, false, 0, false);
}
if (type == 410)
{
int num9 = frameX / 36;
Item.NewItem(num * 16, j * 16, 32, 32, num9 + 3536, 1, false, 0, false);
}
if (type == 320)
{
Item.NewItem(num * 16, j * 16, 32, 32, 2496, 1, false, 0, false);
}
if (type == 349)
{
Item.NewItem(num * 16, j * 16, 32, 32, 470, 1, false, 0, false);
}
if (type == 378)
{
Item.NewItem(num * 16, j * 16, 32, 48, 3202, 1, false, 0, false);
TETrainingDummy.Kill(num, num4);
}
WorldGen.destroyObject = false;
}
}
public static void PlaceTight(int x, int y, ushort type = 165, bool spiders = false)
{
if (Main.tile[x, y - 1] == null)
{
Main.tile[x, y - 1] = new Tile();
}
if (Main.tile[x, y] == null)
{
Main.tile[x, y] = new Tile();
}
if (Main.tile[x, y + 1] == null)
{
Main.tile[x, y + 1] = new Tile();
}
if (WorldGen.SolidTile(x, y - 1) && !Main.tile[x, y].active() && !Main.tile[x, y + 1].active())
{
if (spiders)
{
int num = 108 + WorldGen.genRand.Next(3) * 18;
Main.tile[x, y].type = type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameX = (short)num;
Main.tile[x, y].frameY = 0;
Main.tile[x, y + 1].type = type;
Main.tile[x, y + 1].active(true);
Main.tile[x, y + 1].frameX = (short)num;
Main.tile[x, y + 1].frameY = 18;
}
else
{
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 || Main.tile[x, y - 1].type == 200)
{
if (WorldGen.genRand.Next(2) == 0)
{
int num2 = WorldGen.genRand.Next(3) * 18;
Main.tile[x, y].type = type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameX = (short)num2;
Main.tile[x, y].frameY = 72;
}
else
{
int num3 = WorldGen.genRand.Next(3) * 18;
Main.tile[x, y].type = 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 = 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] || Main.tile[x, y - 1].type == 117 || Main.tile[x, y - 1].type == 25 || Main.tile[x, y - 1].type == 203)
{
if (WorldGen.genRand.Next(2) == 0)
{
int num4 = 54 + WorldGen.genRand.Next(3) * 18;
Main.tile[x, y].type = type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameX = (short)num4;
Main.tile[x, y].frameY = 72;
}
else
{
int num5 = 54 + WorldGen.genRand.Next(3) * 18;
Main.tile[x, y].type = 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 = 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 + WorldGen.genRand.Next(3) * 18;
Main.tile[x, y].type = type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameX = (short)num6;
Main.tile[x, y].frameY = 72;
}
if (Main.tile[x, y - 1].type == 396 || Main.tile[x, y - 1].type == 397)
{
if (WorldGen.genRand.Next(2) == 0)
{
int num7 = 378 + WorldGen.genRand.Next(3) * 18;
Main.tile[x, y].type = type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameX = (short)num7;
Main.tile[x, y].frameY = 72;
}
else
{
int num8 = 378 + WorldGen.genRand.Next(3) * 18;
Main.tile[x, y].type = type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameX = (short)num8;
Main.tile[x, y].frameY = 0;
Main.tile[x, y + 1].type = type;
Main.tile[x, y + 1].active(true);
Main.tile[x, y + 1].frameX = (short)num8;
Main.tile[x, y + 1].frameY = 18;
}
}
if (Main.tile[x, y - 1].type == 368)
{
if (WorldGen.genRand.Next(2) == 0)
{
int num9 = 432 + WorldGen.genRand.Next(3) * 18;
Main.tile[x, y].type = type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameX = (short)num9;
Main.tile[x, y].frameY = 72;
}
else
{
int num10 = 432 + WorldGen.genRand.Next(3) * 18;
Main.tile[x, y].type = type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameX = (short)num10;
Main.tile[x, y].frameY = 0;
Main.tile[x, y + 1].type = type;
Main.tile[x, y + 1].active(true);
Main.tile[x, y + 1].frameX = (short)num10;
Main.tile[x, y + 1].frameY = 18;
}
}
if (Main.tile[x, y - 1].type == 367)
{
if (WorldGen.genRand.Next(2) == 0)
{
int num11 = 486 + WorldGen.genRand.Next(3) * 18;
Main.tile[x, y].type = type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameX = (short)num11;
Main.tile[x, y].frameY = 72;
}
else
{
int num12 = 486 + WorldGen.genRand.Next(3) * 18;
Main.tile[x, y].type = type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameX = (short)num12;
Main.tile[x, y].frameY = 0;
Main.tile[x, y + 1].type = type;
Main.tile[x, y + 1].active(true);
Main.tile[x, y + 1].frameX = (short)num12;
Main.tile[x, y + 1].frameY = 18;
}
}
}
}
else
{
if (spiders)
{
return;
}
if (WorldGen.SolidTile(x, y + 1) && !Main.tile[x, y].active() && !Main.tile[x, y - 1].active())
{
if (Main.tile[x, y + 1].type == 1 || Main.tileMoss[(int)Main.tile[x, y + 1].type] || Main.tile[x, y - 1].type == 117 || Main.tile[x, y - 1].type == 25 || Main.tile[x, y - 1].type == 203)
{
if (WorldGen.genRand.Next(2) == 0)
{
int num13 = 54 + WorldGen.genRand.Next(3) * 18;
Main.tile[x, y].type = type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameX = (short)num13;
Main.tile[x, y].frameY = 90;
}
else
{
int num14 = 54 + WorldGen.genRand.Next(3) * 18;
Main.tile[x, y - 1].type = type;
Main.tile[x, y - 1].active(true);
Main.tile[x, y - 1].frameX = (short)num14;
Main.tile[x, y - 1].frameY = 36;
Main.tile[x, y].type = type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameX = (short)num14;
Main.tile[x, y].frameY = 54;
}
}
if (Main.tile[x, y + 1].type == 225)
{
int num15 = 162 + WorldGen.genRand.Next(3) * 18;
Main.tile[x, y].type = type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameX = (short)num15;
Main.tile[x, y].frameY = 90;
}
if (Main.tile[x, y + 1].type == 396 || Main.tile[x, y + 1].type == 397)
{
if (WorldGen.genRand.Next(2) == 0)
{
int num16 = 378 + WorldGen.genRand.Next(3) * 18;
Main.tile[x, y].type = type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameX = (short)num16;
Main.tile[x, y].frameY = 90;
}
else
{
int num17 = 378 + WorldGen.genRand.Next(3) * 18;
Main.tile[x, y - 1].type = type;
Main.tile[x, y - 1].active(true);
Main.tile[x, y - 1].frameX = (short)num17;
Main.tile[x, y - 1].frameY = 36;
Main.tile[x, y].type = type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameX = (short)num17;
Main.tile[x, y].frameY = 54;
}
}
if (Main.tile[x, y + 1].type == 368)
{
if (WorldGen.genRand.Next(2) == 0)
{
int num18 = 432 + WorldGen.genRand.Next(3) * 18;
Main.tile[x, y].type = type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameX = (short)num18;
Main.tile[x, y].frameY = 90;
}
else
{
int num19 = 432 + WorldGen.genRand.Next(3) * 18;
Main.tile[x, y - 1].type = type;
Main.tile[x, y - 1].active(true);
Main.tile[x, y - 1].frameX = (short)num19;
Main.tile[x, y - 1].frameY = 36;
Main.tile[x, y].type = type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameX = (short)num19;
Main.tile[x, y].frameY = 54;
}
}
if (Main.tile[x, y + 1].type == 367)
{
if (WorldGen.genRand.Next(2) == 0)
{
int num20 = 486 + WorldGen.genRand.Next(3) * 18;
Main.tile[x, y].type = type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameX = (short)num20;
Main.tile[x, y].frameY = 90;
}
else
{
int num21 = 486 + WorldGen.genRand.Next(3) * 18;
Main.tile[x, y - 1].type = type;
Main.tile[x, y - 1].active(true);
Main.tile[x, y - 1].frameX = (short)num21;
Main.tile[x, y - 1].frameY = 36;
Main.tile[x, y].type = type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameX = (short)num21;
Main.tile[x, y].frameY = 54;
}
}
}
}
if (Main.tile[x, y].type == 165)
{
WorldGen.CheckTight(x, y);
}
}
public static void TightBiome(int x, int j)
{
if (Main.netMode == 1)
{
return;
}
if (Main.tile[x, j] == null)
{
return;
}
int num = j;
int num2 = 1;
int num3;
if (Main.tile[x, num].frameX >= 0 && Main.tile[x, num].frameX <= 36)
{
num3 = 7;
}
else if (Main.tile[x, num].frameX >= 54 && Main.tile[x, num].frameX <= 90)
{
num3 = 0;
}
else if (Main.tile[x, num].frameX >= 216 && Main.tile[x, num].frameX <= 252)
{
num3 = 1;
}
else if (Main.tile[x, num].frameX >= 270 && Main.tile[x, num].frameX <= 306)
{
num3 = 2;
}
else if (Main.tile[x, num].frameX >= 324 && Main.tile[x, num].frameX <= 360)
{
num3 = 3;
}
else if (Main.tile[x, num].frameX >= 378 && Main.tile[x, num].frameX <= 414)
{
num3 = 4;
}
else if (Main.tile[x, num].frameX >= 432 && Main.tile[x, num].frameX <= 468)
{
num3 = 5;
}
else
{
if (Main.tile[x, num].frameX < 486 || Main.tile[x, num].frameX > 522)
{
return;
}
num3 = 6;
}
int num4;
if (Main.tile[x, num].frameY == 72)
{
num4 = (int)Main.tile[x, num - 1].type;
}
else if (Main.tile[x, num].frameY == 90)
{
num4 = (int)Main.tile[x, num + 1].type;
}
else if (Main.tile[x, num].frameY >= 36)
{
if (Main.tile[x, num].frameY == 54)
{
num--;
}
num2 = 2;
num4 = (int)Main.tile[x, num + 2].type;
}
else
{
if (Main.tile[x, num].frameY == 18)
{
num--;
}
num2 = 2;
num4 = (int)Main.tile[x, num - 1].type;
}
if (num4 == 1)
{
num4 = 0;
}
else if (num4 == 117 || num4 == 164 || num4 == 402 || num4 == 403)
{
num4 = 1;
}
else if (num4 == 25 || num4 == 163 || num4 == 398 || num4 == 400)
{
num4 = 2;
}
else if (num4 == 203 || num4 == 200 || num4 == 399 || num4 == 401)
{
num4 = 3;
}
else if (num4 == 396 || num4 == 397)
{
num4 = 4;
}
else if (num4 == 367)
{
num4 = 6;
}
else if (num4 == 368)
{
num4 = 5;
}
else
{
if (num4 != 161)
{
return;
}
num4 = 7;
}
if (num3 != num4)
{
int num5 = WorldGen.genRand.Next(3) * 18;
if (num4 == 0)
{
num5 += 54;
}
else if (num4 == 1)
{
num5 += 216;
}
else if (num4 == 2)
{
num5 += 270;
}
else if (num4 == 3)
{
num5 += 324;
}
else if (num4 == 4)
{
num5 += 378;
}
else if (num4 == 5)
{
num5 += 432;
}
else if (num4 == 6)
{
num5 += 486;
}
else if (num4 == 7)
{
num5 = num5;
}
for (int i = num; i < num + num2; i++)
{
Main.tile[x, i].frameX = (short)num5;
}
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, x, num, 2);
}
}
}
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)
{
WorldGen.TightBiome(x, num);
return;
}
if (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)
{
WorldGen.TightBiome(x, num);
return;
}
if (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)
{
WorldGen.TightBiome(x, num);
return;
}
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);
return;
}
}
else
{
WorldGen.TightBiome(x, num);
}
}
}
public static void Place1xX(int x, int y, ushort 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 + num2 * num);
Main.tile[x, y - num2 + 1 + j].frameX = 0;
Main.tile[x, y - num2 + 1 + j].type = type;
}
}
}
public static int checkXmasTreeDrop(int x, int y, int obj)
{
int num = x;
int num2 = y;
if (Main.tile[x, y].frameX < 10)
{
num -= (int)Main.tile[x, y].frameX;
num2 -= (int)Main.tile[x, y].frameY;
}
int num3 = 0;
if ((Main.tile[num, num2].frameY & 1) == 1)
{
num3++;
}
if ((Main.tile[num, num2].frameY & 2) == 2)
{
num3 += 2;
}
if ((Main.tile[num, num2].frameY & 4) == 4)
{
num3 += 4;
}
int num4 = 0;
if ((Main.tile[num, num2].frameY & 8) == 8)
{
num4++;
}
if ((Main.tile[num, num2].frameY & 16) == 16)
{
num4 += 2;
}
if ((Main.tile[num, num2].frameY & 32) == 32)
{
num4 += 4;
}
int num5 = 0;
if ((Main.tile[num, num2].frameY & 64) == 64)
{
num5++;
}
if ((Main.tile[num, num2].frameY & 128) == 128)
{
num5 += 2;
}
if ((Main.tile[num, num2].frameY & 256) == 256)
{
num5 += 4;
}
if ((Main.tile[num, num2].frameY & 512) == 512)
{
num5 += 8;
}
int num6 = 0;
if ((Main.tile[num, num2].frameY & 1024) == 1024)
{
num6++;
}
if ((Main.tile[num, num2].frameY & 2048) == 2048)
{
num6 += 2;
}
if ((Main.tile[num, num2].frameY & 4096) == 4096)
{
num6 += 4;
}
if ((Main.tile[num, num2].frameY & 8192) == 8192)
{
num6 += 8;
}
if (obj == 0 && num3 > 0)
{
return num3;
}
if (obj == 1 && num4 > 0)
{
return num4;
}
if (obj == 2 && num5 > 0)
{
return num5;
}
if (obj == 3 && num6 > 0)
{
return num6;
}
return -1;
}
public static void dropXmasTree(int x, int y, int obj)
{
int num = x;
int num2 = y;
if (Main.tile[x, y].frameX < 10)
{
num -= (int)Main.tile[x, y].frameX;
num2 -= (int)Main.tile[x, y].frameY;
}
int num3 = 0;
if ((Main.tile[num, num2].frameY & 1) == 1)
{
num3++;
}
if ((Main.tile[num, num2].frameY & 2) == 2)
{
num3 += 2;
}
if ((Main.tile[num, num2].frameY & 4) == 4)
{
num3 += 4;
}
int num4 = 0;
if ((Main.tile[num, num2].frameY & 8) == 8)
{
num4++;
}
if ((Main.tile[num, num2].frameY & 16) == 16)
{
num4 += 2;
}
if ((Main.tile[num, num2].frameY & 32) == 32)
{
num4 += 4;
}
int num5 = 0;
if ((Main.tile[num, num2].frameY & 64) == 64)
{
num5++;
}
if ((Main.tile[num, num2].frameY & 128) == 128)
{
num5 += 2;
}
if ((Main.tile[num, num2].frameY & 256) == 256)
{
num5 += 4;
}
if ((Main.tile[num, num2].frameY & 512) == 512)
{
num5 += 8;
}
int num6 = 0;
if ((Main.tile[num, num2].frameY & 1024) == 1024)
{
num6++;
}
if ((Main.tile[num, num2].frameY & 2048) == 2048)
{
num6 += 2;
}
if ((Main.tile[num, num2].frameY & 4096) == 4096)
{
num6 += 4;
}
if ((Main.tile[num, num2].frameY & 8192) == 8192)
{
num6 += 8;
}
if (obj == 0 && num3 > 0)
{
int number = Item.NewItem(x * 16, y * 16, 16, 16, 1874 + num3 - 1, 1, false, 0, false);
if (Main.netMode == 1)
{
NetMessage.SendData(21, -1, -1, "", number, 1f, 0f, 0f, 0, 0, 0);
return;
}
}
else if (obj == 1 && num4 > 0)
{
int number2 = Item.NewItem(x * 16, y * 16, 16, 16, 1878 + num4 - 1, 1, false, 0, false);
if (Main.netMode == 1)
{
NetMessage.SendData(21, -1, -1, "", number2, 1f, 0f, 0f, 0, 0, 0);
return;
}
}
else if (obj == 2 && num5 > 0)
{
int number3 = Item.NewItem(x * 16, y * 16, 16, 16, 1884 + num5 - 1, 1, false, 0, false);
if (Main.netMode == 1)
{
NetMessage.SendData(21, -1, -1, "", number3, 1f, 0f, 0f, 0, 0, 0);
return;
}
}
else if (obj == 3 && num6 > 0)
{
int number4 = Item.NewItem(x * 16, y * 16, 16, 16, 1895 + num6 - 1, 1, false, 0, false);
if (Main.netMode == 1)
{
NetMessage.SendData(21, -1, -1, "", number4, 1f, 0f, 0f, 0, 0, 0);
}
}
}
public static void setXmasTree(int x, int y, int obj, int style)
{
int num = x;
int num2 = y;
if (Main.tile[x, y].frameX < 10)
{
num -= (int)Main.tile[x, y].frameX;
num2 -= (int)Main.tile[x, y].frameY;
}
if (obj == 0)
{
if ((style & 1) == 1)
{
Tile expr_59 = Main.tile[num, num2];
expr_59.frameY |= 1;
}
else
{
Main.tile[num, num2].frameY = (Main.tile[num, num2].frameY & -2);
}
if ((style & 2) == 2)
{
Tile expr_A1 = Main.tile[num, num2];
expr_A1.frameY |= 2;
}
else
{
Main.tile[num, num2].frameY = (Main.tile[num, num2].frameY & -3);
}
if ((style & 4) == 4)
{
Tile expr_E9 = Main.tile[num, num2];
expr_E9.frameY |= 4;
}
else
{
Main.tile[num, num2].frameY = (Main.tile[num, num2].frameY & -5);
}
}
if (obj == 1)
{
if ((style & 1) == 1)
{
Tile expr_138 = Main.tile[num, num2];
expr_138.frameY |= 8;
}
else
{
Main.tile[num, num2].frameY = (Main.tile[num, num2].frameY & -9);
}
if ((style & 2) == 2)
{
Tile expr_180 = Main.tile[num, num2];
expr_180.frameY |= 16;
}
else
{
Main.tile[num, num2].frameY = (Main.tile[num, num2].frameY & -17);
}
if ((style & 4) == 4)
{
Tile expr_1C9 = Main.tile[num, num2];
expr_1C9.frameY |= 32;
}
else
{
Main.tile[num, num2].frameY = (Main.tile[num, num2].frameY & -33);
}
}
if (obj == 2)
{
if ((style & 1) == 1)
{
Tile expr_219 = Main.tile[num, num2];
expr_219.frameY |= 64;
}
else
{
Main.tile[num, num2].frameY = (Main.tile[num, num2].frameY & -65);
}
if ((style & 2) == 2)
{
Tile expr_262 = Main.tile[num, num2];
expr_262.frameY |= 128;
}
else
{
Main.tile[num, num2].frameY = (Main.tile[num, num2].frameY & -129);
}
if ((style & 4) == 4)
{
Tile expr_2B1 = Main.tile[num, num2];
expr_2B1.frameY |= 256;
}
else
{
Main.tile[num, num2].frameY = (Main.tile[num, num2].frameY & -257);
}
if ((style & 8) == 8)
{
Tile expr_300 = Main.tile[num, num2];
expr_300.frameY |= 512;
}
else
{
Main.tile[num, num2].frameY = (Main.tile[num, num2].frameY & -513);
}
}
if (obj == 3)
{
if ((style & 1) == 1)
{
Tile expr_356 = Main.tile[num, num2];
expr_356.frameY |= 1024;
}
else
{
Main.tile[num, num2].frameY = (Main.tile[num, num2].frameY & -1025);
}
if ((style & 2) == 2)
{
Tile expr_3A5 = Main.tile[num, num2];
expr_3A5.frameY |= 2048;
}
else
{
Main.tile[num, num2].frameY = (Main.tile[num, num2].frameY & -2049);
}
if ((style & 4) == 4)
{
Tile expr_3F4 = Main.tile[num, num2];
expr_3F4.frameY |= 4096;
}
else
{
Main.tile[num, num2].frameY = (Main.tile[num, num2].frameY & -4097);
}
if ((style & 8) == 8)
{
Tile expr_443 = Main.tile[num, num2];
expr_443.frameY |= 8192;
return;
}
Main.tile[num, num2].frameY = (Main.tile[num, num2].frameY & -8193);
}
}
public static int PlaceXmasTree_Direct(int x, int y, int type, int style, int dir)
{
for (short num = 0; num < 4; num += 1)
{
for (short num2 = 0; num2 < 8; num2 += 1)
{
Tile tile = Main.tile[x + (int)num, y + (int)num2];
tile.active(true);
tile.type = (ushort)type;
if (num == 0 && num2 == 0)
{
tile.frameX = 10;
tile.frameY = 0;
}
else
{
tile.frameX = num;
tile.frameY = num2;
}
}
}
return 0;
}
public static void PlaceXmasTree(int x, int y, ushort type = 171)
{
bool flag = true;
int num = x - 1;
int num2 = y - 7;
for (int i = num; i < num + 4; i++)
{
for (int j = num2; j < num2 + 8; j++)
{
if (Main.tile[i, j].active())
{
flag = false;
}
}
if (i > num && i < num + 3 && !WorldGen.SolidTile(i, num2 + 8))
{
flag = false;
}
}
if (flag)
{
int num3 = 0;
for (int k = num; k < num + 4; k++)
{
int num4 = 0;
for (int l = num2; l < num2 + 8; l++)
{
Main.tile[k, l].active(true);
if (num3 == 0 && num4 == 0)
{
Main.tile[k, l].frameX = 10;
Main.tile[k, l].frameY = 0;
}
else
{
Main.tile[k, l].frameX = (short)num3;
Main.tile[k, l].frameY = (short)num4;
}
Main.tile[k, l].type = type;
Main.tile[k, l].active(true);
num4++;
}
num3++;
}
}
}
public static void CheckXmasTree(int x, int y)
{
if (WorldGen.destroyObject)
{
return;
}
int num = x;
int num2 = y;
if (Main.tile[x, y].frameX < 10)
{
num -= (int)Main.tile[x, y].frameX;
num2 -= (int)Main.tile[x, y].frameY;
}
bool flag = false;
int num3 = 0;
for (int i = num; i < num + 4; i++)
{
int num4 = 0;
for (int j = num2; j < num2 + 8; j++)
{
if (Main.tile[i, j].active() && Main.tile[i, j].type == 171)
{
if (num3 != 0 && num4 != 0 && (int)Main.tile[i, j].frameX != num3 && (int)Main.tile[i, j].frameY != num4)
{
flag = true;
}
}
else
{
flag = true;
}
num4++;
}
num3++;
if (i > num && i < num + 3 && !WorldGen.SolidTile2(i, num2 + 8))
{
flag = true;
}
}
if (flag)
{
WorldGen.destroyObject = true;
for (int k = num; k < num + 4; k++)
{
for (int l = num2; l < num2 + 8; l++)
{
if (Main.tile[k, l].type == 171)
{
WorldGen.KillTile(k, l, false, false, false);
}
}
}
Item.NewItem(x * 16, y * 16, 32, 32, 1873, 1, false, 0, false);
WorldGen.destroyObject = false;
}
}
public static void Place2xX(int x, int y, ushort type, int style = 0)
{
int num = style * 36;
int num2 = 3;
if (type == 105 && style == 34)
{
type = 349;
style = 0;
num = 0;
}
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 = 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 = type;
}
}
}
public static void Check1x2(int x, int j, ushort 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.SolidTileAllowBottomSlope(x, num + 2) && Main.tile[x, num + 2].type != 19)
{
flag = true;
}
if (Main.tile[x, num].type == 20)
{
int num3 = (int)(Main.tile[x, num].frameX / 54);
int type2 = (int)Main.tile[x, num + 2].type;
int num4 = -1;
if (type2 == 2)
{
num4 = 0;
}
else if (type2 == 147)
{
num4 = 1;
}
else if (type2 == 60)
{
num4 = 2;
}
else if (type2 == 23)
{
num4 = 3;
}
else if (type2 == 199)
{
num4 = 4;
}
else if (type2 == 109)
{
num4 = 5;
}
else if (type2 == 53)
{
num4 = 6;
}
else if (type2 == 116)
{
num4 = 7;
}
else if (type2 == 234)
{
num4 = 8;
}
else if (type2 == 112)
{
num4 = 9;
}
else
{
flag = true;
}
if (!flag && num3 != num4)
{
int num5 = 54 * num4;
num5 += WorldGen.genRand.Next(3) * 18;
Main.tile[x, num].frameX = (short)num5;
Main.tile[x, num + 1].frameX = (short)num5;
}
}
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 == 338)
{
Item.NewItem(x * 16, num * 16, 32, 32, 2738, 1, false, 0, false);
}
if (type == 390)
{
Item.NewItem(x * 16, num * 16, 16, 32, 3253, 1, false, 0, false);
}
if (type == 15)
{
int type3;
if (num2 >= 18 && num2 <= 23)
{
type3 = 1703 + num2 - 18;
}
else if (num2 == 5)
{
type3 = 806;
}
else if (num2 == 6)
{
type3 = 807;
}
else if (num2 == 7)
{
type3 = 808;
}
else if (num2 == 8)
{
type3 = 809;
}
else if (num2 == 9)
{
type3 = 810;
}
else if (num2 == 10)
{
type3 = 826;
}
else if (num2 == 11)
{
type3 = 915;
}
else if (num2 == 13)
{
type3 = 1396;
}
else if (num2 == 14)
{
type3 = 1399;
}
else if (num2 == 15)
{
type3 = 1402;
}
else if (num2 == 12)
{
type3 = 1143;
}
else if (num2 == 4)
{
type3 = 630;
}
else if (num2 == 3)
{
type3 = 629;
}
else if (num2 == 2)
{
type3 = 628;
}
else if (num2 == 17)
{
type3 = 1509;
}
else if (num2 == 1)
{
type3 = 358;
}
else if (num2 == 24)
{
type3 = 1792;
}
else if (num2 == 25)
{
type3 = 1814;
}
else if (num2 == 16)
{
type3 = 1459;
}
else if (num2 == 26)
{
type3 = 1925;
}
else if (num2 == 27)
{
type3 = 2228;
}
else if (num2 == 28)
{
type3 = 2288;
}
else if (num2 == 29)
{
type3 = 2524;
}
else if (num2 == 30)
{
type3 = 2557;
}
else if (num2 == 31)
{
type3 = 2572;
}
else if (num2 == 32)
{
type3 = 2812;
}
else if (num2 == 33)
{
type3 = 3174;
}
else if (num2 == 34)
{
type3 = 3176;
}
else if (num2 == 35)
{
type3 = 3175;
}
else
{
type3 = 34;
}
Item.NewItem(x * 16, num * 16, 32, 32, type3, 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] || Main.tile[x, y + 1].topSlope() || Main.tile[x, y + 1].halfBrick()))
{
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, ushort 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 num5 = (int)(Main.tile[x, y].frameX / 18);
int num6 = (int)(Main.tile[x, y].frameY / 18);
num5 %= 2;
int num7 = x - num5;
int num8 = y - num6;
int num9 = (int)(Main.tile[num7, num8].frameX / 18 / 2);
int k = (int)(Main.tile[x, y].frameX / 18);
int num10 = 0;
while (k > 1)
{
k -= 2;
num10++;
}
num = num7;
num2 = num7 + 2;
num3 = num8;
num4 = num8 + 2;
num5 = 0;
for (int l = num; l < num2; l++)
{
num6 = 0;
for (int m = num3; m < num4; m++)
{
if (!Main.tile[l, m].active() || Main.tile[l, m].type != type)
{
flag = true;
break;
}
if ((int)(Main.tile[l, m].frameX / 18) != num5 + num9 * 2 || (int)(Main.tile[l, m].frameY / 18) != num6)
{
flag = true;
break;
}
num6++;
}
num5++;
}
if (!flag)
{
if (type == 85)
{
if (Main.tile[num7, num8 + 2].active() && (Main.tileSolid[(int)Main.tile[num7, num8 + 2].type] || Main.tileSolidTop[(int)Main.tile[num7, num8 + 2].type]) && Main.tile[num7 + 1, num8 + 2].active() && (Main.tileSolid[(int)Main.tile[num7 + 1, num8 + 2].type] || Main.tileSolidTop[(int)Main.tile[num7 + 1, num8 + 2].type]))
{
num9 = num10;
}
else
{
flag = true;
}
}
else if (Main.tile[num7, num8 + 2].active() && (Main.tileSolid[(int)Main.tile[num7, num8 + 2].type] || (Main.tileSolidTop[(int)Main.tile[num7, num8 + 2].type] && !Main.tileNoAttach[(int)Main.tile[num7, num8 + 2].type])) && Main.tile[num7 + 1, num8 + 2].active() && (Main.tileSolid[(int)Main.tile[num7 + 1, num8 + 2].type] || (Main.tileSolidTop[(int)Main.tile[num7 + 1, num8 + 2].type] && !Main.tileNoAttach[(int)Main.tile[num7 + 1, num8 + 2].type])))
{
num9 = 0;
}
else if (Main.tile[num7, num8 - 1].nactive() && Main.tileSolid[(int)Main.tile[num7, num8 - 1].type] && !Main.tileSolidTop[(int)Main.tile[num7, num8 - 1].type] && !Main.tileNoAttach[(int)Main.tile[num7, num8 - 1].type] && Main.tile[num7 + 1, num8 - 1].nactive() && Main.tileSolid[(int)Main.tile[num7 + 1, num8 - 1].type] && !Main.tileSolidTop[(int)Main.tile[num7 + 1, num8 - 1].type] && !Main.tileNoAttach[(int)Main.tile[num7 + 1, num8 - 1].type])
{
num9 = 1;
}
else if (Main.tile[num7 - 1, num8].nactive() && Main.tileSolid[(int)Main.tile[num7 - 1, num8].type] && !Main.tileSolidTop[(int)Main.tile[num7 - 1, num8].type] && !Main.tileNoAttach[(int)Main.tile[num7 - 1, num8].type] && Main.tile[num7 - 1, num8 + 1].nactive() && Main.tileSolid[(int)Main.tile[num7 - 1, num8 + 1].type] && !Main.tileSolidTop[(int)Main.tile[num7 - 1, num8 + 1].type] && !Main.tileNoAttach[(int)Main.tile[num7 - 1, num8 + 1].type])
{
num9 = 2;
}
else if (Main.tile[num7 + 2, num8].nactive() && Main.tileSolid[(int)Main.tile[num7 + 2, num8].type] && !Main.tileSolidTop[(int)Main.tile[num7 + 2, num8].type] && !Main.tileNoAttach[(int)Main.tile[num7 + 2, num8].type] && Main.tile[num7 + 2, num8 + 1].nactive() && Main.tileSolid[(int)Main.tile[num7 + 2, num8 + 1].type] && !Main.tileSolidTop[(int)Main.tile[num7 + 2, num8 + 1].type] && !Main.tileNoAttach[(int)Main.tile[num7 + 2, num8 + 1].type])
{
num9 = 3;
}
else if (Main.tile[num7, num8].wall > 0 && Main.tile[num7 + 1, num8].wall > 0 && Main.tile[num7, num8 + 1].wall > 0 && Main.tile[num7 + 1, num8 + 1].wall > 0)
{
num9 = 4;
}
else
{
flag = true;
}
}
if (flag)
{
if (type == 395)
{
int num11 = TEItemFrame.Find(num7, num8);
if (num11 != -1 && ((TEItemFrame)TileEntity.ByID[num11]).item.stack > 0)
{
((TEItemFrame)TileEntity.ByID[num11]).DropItem();
if (Main.netMode != 2)
{
Main.blockMouse = true;
}
return;
}
}
WorldGen.destroyObject = true;
for (int n = num; n < num2; n++)
{
for (int num12 = num3; num12 < num4; num12++)
{
if (Main.tile[n, num12].type == type)
{
WorldGen.KillTile(n, num12, false, false, false);
}
}
}
if (type != 395)
{
Sign.KillSign(num7, num8);
}
if (type == 85)
{
int type2 = 321;
if (num10 >= 6 && num10 <= 10)
{
type2 = 3229 + num10 - 6;
}
else if (num10 >= 1 && num10 <= 5)
{
type2 = 1173 + num10 - 1;
}
Item.NewItem(x * 16, y * 16, 32, 32, type2, 1, false, 0, false);
}
else if (type == 395)
{
Item.NewItem(num7 * 16, num8 * 16, 32, 32, 3270, 1, false, 0, false);
TEItemFrame.Kill(num7, num8);
}
else
{
Item.NewItem(x * 16, y * 16, 32, 32, 171, 1, false, 0, false);
}
WorldGen.destroyObject = false;
return;
}
int num13 = 36 * num9;
for (int num14 = 0; num14 < 2; num14++)
{
for (int num15 = 0; num15 < 2; num15++)
{
Main.tile[num7 + num14, num8 + num15].active(true);
Main.tile[num7 + num14, num8 + num15].type = type;
Main.tile[num7 + num14, num8 + num15].frameX = (short)(num13 + 18 * num14);
Main.tile[num7 + num14, num8 + num15].frameY = (short)(18 * num15);
}
}
}
public static bool PlaceSign(int x, int y, ushort 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])
{
num5--;
num7 = 3;
}
else
{
if (Main.tile[num5, num6].wall <= 0 || Main.tile[num5 + 1, num6].wall <= 0 || Main.tile[num5, num6 + 1].wall <= 0 || Main.tile[num5 + 1, num6 + 1].wall <= 0)
{
return false;
}
num7 = 4;
}
}
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 = 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 bool Place2x2Horizontal(int x, int y, ushort 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();
}
}
}
if (!WorldGen.SolidTile2(x, y + 1) || !WorldGen.SolidTile2(x + 1, y + 1))
{
return false;
}
int num5 = y - 1;
if (Main.tile[x, num5].active() || Main.tile[x + 1, num5].active() || Main.tile[x, num5 + 1].active() || Main.tile[x + 1, num5 + 1].active())
{
return false;
}
int num6 = 36 * Style;
for (int k = 0; k < 2; k++)
{
for (int l = 0; l < 2; l++)
{
Main.tile[x + k, num5 + l].active(true);
Main.tile[x + k, num5 + l].type = type;
Main.tile[x + k, num5 + l].frameX = (short)(num6 + 18 * k);
Main.tile[x + k, num5 + 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;
}
if (color == 28)
{
white.R = 255;
white.G = 178;
white.B = 125;
}
if (color == 29)
{
white.R = 25;
white.G = 25;
white.B = 25;
}
if (color == 30)
{
white.R = 200;
white.G = 200;
white.B = 200;
white.A = 150;
}
return white;
}
public static void paintEffect(int x, int y, byte color, byte oldColor)
{
int color2 = (int)(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 (WorldGen.genRand.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, 0, 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, 0, 0);
}
WorldGen.paintEffect(x, y, color, oldColor);
return true;
}
public static void Place3x3Wall(int x, int y, ushort 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 = 0;
while (style > 35)
{
num3++;
style -= 36;
}
int num4 = style * 54;
int num5 = num3 * 54;
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 = type;
Main.tile[k, l].frameX = (short)(num4 + 18 * (k - num));
Main.tile[k, l].frameY = (short)(num5 + 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 num2 = 0;
int i = (int)(Main.tile[x, y].frameX / 18);
while (i >= 3)
{
i -= 3;
num++;
}
int num3 = x - i;
int j = (int)(Main.tile[x, y].frameY / 18);
while (j >= 3)
{
j -= 3;
num2++;
}
int num4 = y - j;
j = num2 * 54;
i = num * 54;
for (int k = num3; k < num3 + 3; k++)
{
for (int l = num4; l < num4 + 3; l++)
{
if ((int)Main.tile[k, l].type != type || !Main.tile[k, l].active() || Main.tile[k, l].wall <= 0 || (int)Main.tile[k, l].frameX != i + (k - num3) * 18 || (int)Main.tile[k, l].frameY != j + (l - num4) * 18)
{
flag = true;
break;
}
}
}
if (flag)
{
WorldGen.destroyObject = true;
for (int m = num3; m < num3 + 3; m++)
{
for (int n = num4; n < num4 + 3; n++)
{
if ((int)Main.tile[m, n].type == type && Main.tile[m, n].active())
{
WorldGen.KillTile(m, n, false, false, false);
}
}
}
num += num2 * 36;
if (type == 240)
{
if (num == 37)
{
Item.NewItem(x * 16, y * 16, 32, 32, 1856, 1, false, 0, false);
}
else if (num == 36)
{
Item.NewItem(x * 16, y * 16, 32, 32, 1855, 1, false, 0, false);
}
else if (num == 38)
{
Item.NewItem(x * 16, y * 16, 32, 32, 1960, 1, false, 0, false);
}
else if (num == 39)
{
Item.NewItem(x * 16, y * 16, 32, 32, 1961, 1, false, 0, false);
}
else if (num == 40)
{
Item.NewItem(x * 16, y * 16, 32, 32, 1962, 1, false, 0, false);
}
else 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 == 54)
{
Item.NewItem(x * 16, y * 16, 32, 32, 2489, 1, false, 0, false);
}
else if (num == 55)
{
Item.NewItem(x * 16, y * 16, 32, 32, 2589, 1, false, 0, false);
}
else if (num == 56)
{
Item.NewItem(x * 16, y * 16, 32, 32, 3357, 1, false, 0, false);
}
else if (num == 57)
{
Item.NewItem(x * 16, y * 16, 32, 32, 3358, 1, false, 0, false);
}
else if (num == 58)
{
Item.NewItem(x * 16, y * 16, 32, 32, 3359, 1, false, 0, false);
}
else if (num == 59)
{
Item.NewItem(x * 16, y * 16, 32, 32, 3595, 1, false, 0, false);
}
else if (num >= 41 && num <= 45)
{
Item.NewItem(x * 16, y * 16, 32, 32, 2114 + num - 41, 1, false, 0, false);
}
else if (num >= 46 && num <= 53)
{
Item.NewItem(x * 16, y * 16, 32, 32, 2442 + num - 46, 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, ushort 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 = 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, ushort 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 = 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 if (num == 18)
{
Item.NewItem(x * 16, y * 16, 32, 32, 1908, 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, ushort 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 = 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, ushort 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 = 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 = (int)(Main.tile[x, y].frameY / 18);
int num2 = (int)(Main.tile[x, y].frameX / 18);
int num3 = 27 * (num2 / 6) + (num >> 2);
num %= 4;
num2 %= 6;
int num4 = y - num;
int num5 = x - (int)(Main.tile[x, y].frameX / 18 % 6);
num = num3 % 27 * 72;
num2 = num3 / 27 * 108;
for (int i = num5; i < num5 + 6; i++)
{
for (int j = num4; j < num4 + 4; j++)
{
if ((int)Main.tile[i, j].type != type || !Main.tile[i, j].active() || Main.tile[i, j].wall <= 0 || (int)Main.tile[i, j].frameY != num + (j - num4) * 18 || (int)Main.tile[i, j].frameX != num2 + (i - num5) * 18)
{
flag = true;
break;
}
}
}
if (flag)
{
WorldGen.destroyObject = true;
for (int k = num5; k < num5 + 6; k++)
{
for (int l = num4; l < num4 + 4; l++)
{
if ((int)Main.tile[k, l].type == type && Main.tile[k, l].active())
{
WorldGen.KillTile(k, l, false, false, false);
}
}
}
if (type == 242)
{
if (num3 == 30)
{
Item.NewItem(x * 16, y * 16, 32, 32, 2995, 1, false, 0, false);
}
else if (num3 >= 31 && num3 <= 35)
{
Item.NewItem(x * 16, y * 16, 32, 32, 3055 + num3 - 31, 1, false, 0, false);
}
else if (num3 >= 27 && num3 <= 29)
{
Item.NewItem(x * 16, y * 16, 32, 32, 2865 + num3 - 27, 1, false, 0, false);
}
else if (num3 == 36)
{
Item.NewItem(x * 16, y * 16, 32, 32, 3596, 1, false, 0, false);
}
else if (num3 == 26)
{
Item.NewItem(x * 16, y * 16, 32, 32, 2497, 1, false, 0, false);
}
else if (num3 == 25)
{
Item.NewItem(x * 16, y * 16, 32, 32, 2495, 1, false, 0, false);
}
else if (num3 >= 22)
{
Item.NewItem(x * 16, y * 16, 32, 32, 2281 + num3 - 22, 1, false, 0, false);
}
else if (num3 >= 17)
{
Item.NewItem(x * 16, y * 16, 32, 32, 1846 + num3 - 17, 1, false, 0, false);
}
else if (num3 == 16)
{
Item.NewItem(x * 16, y * 16, 32, 32, 1573, 1, false, 0, false);
}
else if (num3 >= 13)
{
Item.NewItem(x * 16, y * 16, 32, 32, 1500 + num3 - 13, 1, false, 0, false);
}
else if (num3 >= 6)
{
Item.NewItem(x * 16, y * 16, 32, 32, 1433 + num3 - 6, 1, false, 0, false);
}
else
{
Item.NewItem(x * 16, y * 16, 32, 32, 1421 + num3, 1, false, 0, false);
}
}
WorldGen.destroyObject = false;
}
}
public static void Place1x1(int x, int y, int type, int style = 0)
{
Tile tile = Main.tile[x, y];
if (Main.tile[x, y] == null)
{
tile = new Tile();
Main.tile[x, y] = tile;
}
if (Main.tile[x, y + 1] == null)
{
Main.tile[x, y + 1] = new Tile();
}
if (type == 324)
{
if (WorldGen.SolidTile2(x, y + 1) || (Main.tile[x, y + 1].nactive() && Main.tileTable[(int)Main.tile[x, y + 1].type]))
{
tile.active(true);
tile.type = (ushort)type;
tile.frameX = (short)(22 * WorldGen.genRand.Next(2));
tile.frameY = (short)(22 * style);
}
return;
}
if (WorldGen.SolidTile2(x, y + 1) && !tile.active())
{
tile.active(true);
tile.type = (ushort)type;
if (type == 324)
{
tile.frameX = (short)(22 * WorldGen.genRand.Next(2));
tile.frameY = (short)(22 * style);
return;
}
if (type == 144 || type == 239 || type == 36)
{
tile.frameX = (short)(style * 18);
tile.frameY = 0;
return;
}
tile.frameY = (short)(style * 18);
}
}
public static void Check1x1(int x, int y, int type)
{
if (Main.tile[x, y + 1] != null && !WorldGen.SolidTileAllowBottomSlope(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 = (ushort)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 != 380 && 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 && Main.tile[x, y + 1].type != 380)
{
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 && Main.tile[x, y + 1].type != 380)
{
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 && Main.tile[x, y + 1].type != 380)
{
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 != 380 && 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 && Main.tile[x, y + 1].type != 380)
{
flag = true;
}
if (Main.tile[x, y].liquid > 0 && !Main.tile[x, y].lava())
{
flag = true;
}
}
else if (style == 6)
{
if (Main.tile[x, y + 1].type != 78 && Main.tile[x, y + 1].type != 380 && 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 && Main.tile[x, y + 1].type != 200)
{
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 GrowSpike(int i, int j, ushort spikeType, ushort landType)
{
int num = i;
int num2 = j;
int num3 = 0;
if (Main.tile[num + 1, num2].active() && Main.tile[num + 1, num2].type == spikeType)
{
num3++;
}
if (Main.tile[num - 1, num2].active() && Main.tile[num - 1, num2].type == spikeType)
{
num3++;
}
if (Main.tile[num, num2 + 1].active() && Main.tile[num, num2 + 1].type == spikeType)
{
num3++;
}
if (Main.tile[num, num2 - 1].active() && Main.tile[num, num2 - 1].type == spikeType)
{
num3++;
}
if (num3 < 3 || Main.tile[i, j].type == landType)
{
int num4 = WorldGen.genRand.Next(4);
if (num4 == 0)
{
num2--;
}
else if (num4 == 1)
{
num2++;
}
else if (num4 == 2)
{
num--;
}
else if (num4 == 3)
{
num++;
}
if (!Main.tile[num, num2].active())
{
num3 = 0;
if (Main.tile[num + 1, num2].active() && Main.tile[num + 1, num2].type == spikeType)
{
num3++;
}
if (Main.tile[num - 1, num2].active() && Main.tile[num - 1, num2].type == spikeType)
{
num3++;
}
if (Main.tile[num, num2 + 1].active() && Main.tile[num, num2 + 1].type == spikeType)
{
num3++;
}
if (Main.tile[num, num2 - 1].active() && Main.tile[num, num2 - 1].type == spikeType)
{
num3++;
}
if (num3 < 2)
{
int num5 = 7;
int num6 = num - num5;
int num7 = num + num5;
int num8 = num2 - num5;
int num9 = num2 + num5;
bool flag = false;
for (int k = num6; k < num7; k++)
{
for (int l = num8; l < num9; l++)
{
if (Math.Abs(k - num) * 2 + Math.Abs(l - num2) < 9 && Main.tile[k, l].active() && Main.tile[k, l].type == landType && Main.tile[k, l - 1].active() && Main.tile[k, l - 1].type == spikeType && Main.tile[k, l - 1].liquid == 0)
{
flag = true;
break;
}
}
}
if (flag)
{
Main.tile[num, num2].type = spikeType;
Main.tile[num, num2].active(true);
WorldGen.SquareTileFrame(num, num2, true);
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num, num2, 3);
}
}
}
}
}
}
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)
{
bool flag = false;
if (Main.tile[x, y].frameX == 108)
{
if (WorldGen.genRand.Next(3) != 0)
{
flag = true;
}
}
else
{
flag = true;
}
if (flag)
{
Main.tile[x, y].type = 83;
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, x, y, 1);
}
WorldGen.SquareTileFrame(x, y, true);
return;
}
}
else
{
if (Main.dayTime && Main.tile[x, y].type == 82 && Main.tile[x, y].frameX == 0 && 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.dayTime && Main.tile[x, y].type == 82 && Main.tile[x, y].frameX == 18 && 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 && WorldGen.genRand.Next(3) != 0)
{
if (Main.tile[x, y].type == 83)
{
if (WorldGen.genRand.Next(2) == 0)
{
Main.tile[x, y].type = 84;
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, x, y, 1);
return;
}
}
}
else if (WorldGen.genRand.Next(5) == 0 || Main.tile[x, y].type == 84)
{
Main.tile[x, y].type = 83;
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, x, y, 1);
return;
}
}
}
else if (Main.tile[x, y].frameX == 108 && Main.tile[x, y].type == 83 && WorldGen.genRand.Next(80) == 0)
{
Main.tile[x, y].type = 84;
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, x, y, 1);
}
WorldGen.SquareTileFrame(x, y, true);
}
}
}
}
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)
{
int num3 = 15;
int num4 = 5;
int num5 = 0;
num3 = (int)((float)num3 * ((float)Main.maxTilesX / 4200f));
int num6 = Utils.Clamp<int>(num - num3, 4, Main.maxTilesX - 4);
int num7 = Utils.Clamp<int>(num + num3, 4, Main.maxTilesX - 4);
int num8 = Utils.Clamp<int>(num2 - num3, 4, Main.maxTilesY - 4);
int num9 = Utils.Clamp<int>(num2 + num3, 4, Main.maxTilesY - 4);
for (int i = num6; i <= num7; i++)
{
for (int j = num8; j <= num9; j++)
{
if (Main.tileAlch[(int)Main.tile[i, j].type])
{
num5++;
}
}
}
if (num5 < num4)
{
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].type == 147 || Main.tile[num, num2].type == 163 || Main.tile[num, num2].type == 164 || Main.tile[num, num2].type == 161 || Main.tile[num, num2].type == 200)
{
WorldGen.PlaceAlch(num, num2 - 1, 6);
}
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 && Main.tile[x, y + 1].type != 380)
{
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 && Main.tile[x, y + 1].type != 380)
{
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 && Main.tile[x, y + 1].type != 380)
{
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 && Main.tile[x, y + 1].type != 380)
{
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 != 380 && 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 (num == 5)
{
if (Main.tile[x, y + 1].type != 57 && Main.tile[x, y + 1].type != 78 && Main.tile[x, y + 1].type != 380)
{
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);
}
}
}
}
else if (num == 6)
{
if (Main.tile[x, y + 1].type != 78 && Main.tile[x, y + 1].type != 380 && 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 && Main.tile[x, y + 1].type != 200)
{
flag = true;
}
if (Main.tile[x, y].liquid > 0 && Main.tile[x, y].lava())
{
flag = true;
}
}
}
if (flag)
{
WorldGen.KillTile(x, y, false, false, false);
}
}
public static void CheckBanner(int x, int j, byte type)
{
if (WorldGen.destroyObject)
{
return;
}
int i = (int)(Main.tile[x, j].frameY / 18);
int num = 0;
while (i >= 3)
{
i -= 3;
num++;
}
i = j - i;
int frameX = (int)Main.tile[x, j].frameX;
bool flag = false;
for (int k = 0; k < 3; k++)
{
if (Main.tile[x, i + k] == null)
{
Main.tile[x, i + k] = new Tile();
}
if (!Main.tile[x, i + k].active())
{
flag = true;
}
else if (Main.tile[x, i + k].type != (ushort)type)
{
flag = true;
}
else if ((int)Main.tile[x, i + k].frameY != k * 18 + num * 18 * 3)
{
flag = true;
}
else if ((int)Main.tile[x, i + k].frameX != frameX)
{
flag = true;
}
}
if (Main.tile[x, i - 1] == null)
{
Main.tile[x, i - 1] = new Tile();
}
if (!Main.tile[x, i - 1].nactive())
{
flag = true;
}
if ((!Main.tile[x, i - 1].topSlope() && !Main.tile[x, i - 1].halfBrick() && !Main.tileSolid[(int)Main.tile[x, i - 1].type]) || (Main.tileSolidTop[(int)Main.tile[x, i - 1].type] && (Main.tile[x, i - 1].type != 19 || (!Main.tile[x, i - 1].halfBrick() && !Main.tile[x, i - 1].topSlope()))) || Main.tile[x, i - 1].bottomSlope())
{
flag = true;
}
if (flag)
{
WorldGen.destroyObject = true;
for (int l = 0; l < 3; l++)
{
if (Main.tile[x, i + l].type == (ushort)type)
{
WorldGen.KillTile(x, i + l, false, false, false);
}
}
if (type == 91)
{
int num2 = frameX / 18;
num2 += num * 111;
if (num2 >= 270)
{
Item.NewItem(x * 16, (i + 1) * 16, 32, 32, 3323 + num2, 1, false, 0, false);
}
else if (num2 >= 207)
{
Item.NewItem(x * 16, (i + 1) * 16, 32, 32, 3183 + num2, 1, false, 0, false);
}
else if (num2 >= 109)
{
Item.NewItem(x * 16, (i + 1) * 16, 32, 32, 2788 + num2, 1, false, 0, false);
}
else if (num2 >= 22)
{
Item.NewItem(x * 16, (i + 1) * 16, 32, 32, 1593 + num2, 1, false, 0, false);
}
else if (num2 >= 10 && num2 <= 15)
{
Item.NewItem(x * 16, (i + 1) * 16, 32, 32, 1441 + num2, 1, false, 0, false);
}
else if (num2 >= 16 && num2 <= 21)
{
Item.NewItem(x * 16, (i + 1) * 16, 32, 32, 1448 + num2, 1, false, 0, false);
}
else if (num2 >= 7 && num2 <= 9)
{
Item.NewItem(x * 16, (i + 1) * 16, 32, 32, 838 + num2, 1, false, 0, false);
}
else if (num2 >= 4 && num2 <= 6)
{
Item.NewItem(x * 16, (i + 1) * 16, 32, 32, 785 + num2, 1, false, 0, false);
}
else
{
Item.NewItem(x * 16, (i + 1) * 16, 32, 32, 337 + num2, 1, false, 0, false);
}
}
WorldGen.destroyObject = false;
}
}
public static void PlaceBanner(int x, int y, ushort type, int style = 0)
{
int num = style * 18;
int num2 = 0;
if (style >= 90)
{
num -= 1620;
num2 += 54;
}
if (Main.tile[x, y - 1] == null)
{
Main.tile[x, y - 1] = new Tile();
}
if (Main.tile[x, y] == null)
{
Main.tile[x, y] = new Tile();
}
if (Main.tile[x, y + 1] == null)
{
Main.tile[x, y + 1] = new Tile();
}
if (Main.tile[x, y + 2] == null)
{
Main.tile[x, y + 2] = new Tile();
}
if (Main.tile[x, y - 1].nactive() && Main.tileSolid[(int)Main.tile[x, y - 1].type] && !Main.tileSolidTop[(int)Main.tile[x, y - 1].type] && !Main.tile[x, y].active() && !Main.tile[x, y + 1].active() && !Main.tile[x, y + 2].active())
{
Main.tile[x, y].active(true);
Main.tile[x, y].frameY = (short)num2;
Main.tile[x, y].frameX = (short)num;
Main.tile[x, y].type = type;
Main.tile[x, y + 1].active(true);
Main.tile[x, y + 1].frameY = (short)(num2 + 18);
Main.tile[x, y + 1].frameX = (short)num;
Main.tile[x, y + 1].type = type;
Main.tile[x, y + 2].active(true);
Main.tile[x, y + 2].frameY = (short)(num2 + 36);
Main.tile[x, y + 2].frameX = (short)num;
Main.tile[x, y + 2].type = 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 PlaceWoman(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 = 269;
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 = 269;
Main.tile[i, j].active(true);
Main.tile[i, j].frameY = 36;
Main.tile[i, j].frameX = (short)b;
Main.tile[i, j].type = 269;
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 = 269;
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 = 269;
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 = 269;
}
public static void CheckWeaponsRack(int i, int j)
{
if (WorldGen.destroyObject)
{
return;
}
int num = j - (int)(Main.tile[i, j].frameY / 18);
int k = (int)Main.tile[i, j].frameX;
int num2 = 0;
while (k >= 5000)
{
k -= 5000;
num2++;
}
if (num2 != 0)
{
k = (num2 - 1) * 18;
}
k %= 54;
int num3 = i - k / 18;
bool flag = false;
for (int l = 0; l < 3; l++)
{
for (int m = 0; m < 3; m++)
{
int num4 = num3 + l;
int num5 = num + m;
int n = (int)Main.tile[num4, num5].frameX;
int num6 = 0;
while (n >= 5000)
{
n -= 5000;
num6++;
}
if (num6 != 0)
{
n = (num6 - 1) * 18;
}
n %= 54;
if (!Main.tile[num4, num5].active() || Main.tile[num4, num5].type != 334 || Main.tile[num4, num5].wall <= 0 || (int)Main.tile[num4, num5].frameY != m * 18 || n != l * 18)
{
flag = true;
}
}
}
if (flag)
{
WorldGen.destroyObject = true;
Item.NewItem(i * 16, j * 16, 48, 48, 2699, 1, false, 0, false);
for (int num7 = 0; num7 < 3; num7++)
{
for (int num8 = 0; num8 < 3; num8++)
{
int num9 = num3 + num7;
int num10 = num + num8;
if (Main.tile[num9, num10].active() && Main.tile[num9, num10].type == 334)
{
WorldGen.KillTile(num9, num10, false, false, false);
}
}
}
WorldGen.destroyObject = false;
}
}
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.SolidTileAllowBottomSlope(num2, num + 3) || !WorldGen.SolidTileAllowBottomSlope(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 CheckWoman(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 != 269 || (int)Main.tile[num3, num4].frameY != m * 18 || n != l * 18)
{
flag = true;
}
}
}
if (!WorldGen.SolidTileAllowBottomSlope(num2, num + 3) || !WorldGen.SolidTileAllowBottomSlope(num2 + 1, num + 3))
{
flag = true;
}
if (flag)
{
WorldGen.destroyObject = true;
Item.NewItem(i * 16, j * 16, 32, 32, 1989, 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 == 269)
{
WorldGen.KillTile(num7, num8, false, false, false);
}
}
}
WorldGen.destroyObject = false;
}
}
public static void Place1x2(int x, int y, ushort 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 = type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameY = num + 18;
Main.tile[x, y].frameX = frameX;
Main.tile[x, y].type = type;
}
}
public static void Place1x2Top(int x, int y, ushort 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 = type;
Main.tile[x, y + 1].active(true);
Main.tile[x, y + 1].frameY = num + 18;
Main.tile[x, y + 1].frameX = frameX;
Main.tile[x, y + 1].type = type;
}
}
public static void Check1x2Top(int x, int j, ushort 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)
{
int type2 = 0;
if (num == 0)
{
type2 = 136;
}
else if (num == 7)
{
type2 = 1431;
}
else if (num == 8)
{
type2 = 1808;
}
else if (num == 9)
{
type2 = 1859;
}
else if (num < 10)
{
type2 = 1389 + num;
}
else if (num == 10)
{
type2 = 2032;
}
else if (num == 11)
{
type2 = 2033;
}
else if (num == 12)
{
type2 = 2034;
}
else if (num == 13)
{
type2 = 2035;
}
else if (num == 14)
{
type2 = 2036;
}
else if (num == 15)
{
type2 = 2037;
}
else if (num == 16)
{
type2 = 2038;
}
else if (num == 17)
{
type2 = 2039;
}
else if (num == 18)
{
type2 = 2040;
}
else if (num == 19)
{
type2 = 2041;
}
else if (num == 20)
{
type2 = 2042;
}
else if (num == 21)
{
type2 = 2043;
}
else if (num >= 22 && num <= 25)
{
type2 = 2145 + num - 22;
}
else if (num == 26)
{
type2 = 2226;
}
else if (num == 27)
{
type2 = 2530;
}
else if (num == 28)
{
type2 = 2546;
}
else if (num == 29)
{
type2 = 2564;
}
else if (num == 30)
{
type2 = 2579;
}
else if (num == 31)
{
type2 = 2641;
}
else if (num == 32)
{
type2 = 2642;
}
else if (num == 33)
{
type2 = 2820;
}
else if (num == 34)
{
type2 = 3138;
}
else if (num == 35)
{
type2 = 3140;
}
else if (num == 36)
{
type2 = 3139;
}
Item.NewItem(x * 16, num2 * 16, 32, 32, type2, 1, false, 0, false);
}
else if (type == 270)
{
Item.NewItem(x * 16, num2 * 16, 32, 32, 1993, 1, false, 0, false);
}
else if (type == 271)
{
Item.NewItem(x * 16, num2 * 16, 32, 32, 2005, 1, false, 0, false);
}
WorldGen.destroyObject = false;
}
}
public static bool PlaceSmallPile(int i, int j, int X, int Y, ushort 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 = type;
Main.tile[i + 1, j].active(true);
Main.tile[i + 1, j].frameY = frameY;
Main.tile[i + 1, j].frameX = num + 18;
Main.tile[i + 1, j].type = 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 = 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, ushort type)
{
if (WorldGen.destroyObject)
{
return;
}
bool flag = true;
if (Main.tile[i, y] == null)
{
Main.tile[i, y] = new Tile();
}
int num = (int)(Main.tile[i, y].frameX / 18);
int num2 = num >> 1;
num %= 2;
int num3 = i - num;
if (Main.tile[num3, y] == null)
{
Main.tile[num3, y] = new Tile();
}
if (Main.tile[num3 + 1, y] == null)
{
Main.tile[num3 + 1, y] = new Tile();
}
if (Main.tile[num3, y + 1] == null)
{
Main.tile[num3, y + 1] = new Tile();
}
if (Main.tile[num3 + 1, y + 1] == null)
{
Main.tile[num3 + 1, y + 1] = new Tile();
}
if (Main.tile[num3 + 1, y].frameX == Main.tile[num3, y].frameX + 18 && Main.tile[num3, y].type == type && Main.tile[num3 + 1, y].type == type)
{
flag = false;
}
if (type == 29 || type == 103)
{
if (!Main.tile[num3, y + 1].active() || !Main.tileTable[(int)Main.tile[num3, y + 1].type])
{
flag = true;
}
if (!Main.tile[num3 + 1, y + 1].active() || !Main.tileTable[(int)Main.tile[num3 + 1, y + 1].type])
{
flag = true;
}
}
else
{
if (!WorldGen.SolidTileAllowBottomSlope(num3, y + 1))
{
flag = true;
}
if (!WorldGen.SolidTileAllowBottomSlope(num3 + 1, y + 1))
{
flag = true;
}
}
if (type == 185 && Main.tile[num3, y].frameX >= 1368 && Main.tile[num3, y].frameX <= 1458 && Main.tile[num3, y + 1].type != 2 && Main.tile[num3 + 1, y + 1].type != 2)
{
Tile expr_235 = Main.tile[num3, y];
expr_235.frameX -= 1368;
Tile expr_255 = Main.tile[num3 + 1, y];
expr_255.frameX -= 1368;
}
if (flag)
{
int frameX = (int)Main.tile[num3, y].frameX;
if (!Main.tile[num3, y].active())
{
frameX = (int)Main.tile[num3 + 1, y].frameX;
}
WorldGen.destroyObject = true;
if (Main.tile[num3, y].type == type)
{
WorldGen.KillTile(num3, y, false, false, false);
}
if (Main.tile[num3 + 1, y].type == type)
{
WorldGen.KillTile(num3 + 1, y, false, false, false);
}
if (type == 16)
{
if (num2 == 1)
{
Item.NewItem(num3 * 16, y * 16, 32, 32, 716, 1, false, 0, false);
}
else
{
Item.NewItem(num3 * 16, y * 16, 32, 32, 35, 1, false, 0, false);
}
}
if (type == 18)
{
int type2 = 36;
if (num2 >= 1 && num2 <= 3)
{
type2 = 634 + num2;
}
else if (num2 >= 4 && num2 <= 8)
{
type2 = 807 + num2;
}
else if (num2 == 9)
{
type2 = 916;
}
else if (num2 == 10)
{
type2 = 1145;
}
else if (num2 == 11)
{
type2 = 1398;
}
else if (num2 == 12)
{
type2 = 1401;
}
else if (num2 == 13)
{
type2 = 1404;
}
else if (num2 == 14)
{
type2 = 1461;
}
else if (num2 == 15)
{
type2 = 1511;
}
else if (num2 == 16)
{
type2 = 1795;
}
else if (num2 == 17)
{
type2 = 1817;
}
else if (num2 == 18)
{
type2 = 2229;
}
else if (num2 == 19)
{
type2 = 2251;
}
else if (num2 == 20)
{
type2 = 2252;
}
else if (num2 == 21)
{
type2 = 2253;
}
else if (num2 == 22)
{
type2 = 2534;
}
else if (num2 == 23)
{
type2 = 673;
}
else if (num2 == 24)
{
type2 = 2631;
}
else if (num2 == 25)
{
type2 = 2632;
}
else if (num2 == 26)
{
type2 = 2633;
}
else if (num2 == 27)
{
type2 = 2826;
}
else if (num2 == 28)
{
type2 = 3156;
}
else if (num2 == 29)
{
type2 = 3158;
}
else if (num2 == 30)
{
type2 = 3157;
}
Item.NewItem(num3 * 16, y * 16, 32, 32, type2, 1, false, 0, false);
}
if (type == 185)
{
if (frameX >= 576 && frameX <= 610)
{
Item.NewItem(num3 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(10, 100), false, 0, false);
Item.NewItem(num3 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100), false, 0, false);
if (WorldGen.genRand.Next(3) != 0)
{
Item.NewItem(num3 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(10, 100), false, 0, false);
}
if (WorldGen.genRand.Next(3) != 0)
{
Item.NewItem(num3 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100), false, 0, false);
}
if (WorldGen.genRand.Next(2) == 0)
{
Item.NewItem(num3 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(10, 100), false, 0, false);
}
if (WorldGen.genRand.Next(2) == 0)
{
Item.NewItem(num3 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100), false, 0, false);
}
if (WorldGen.genRand.Next(3) == 0)
{
Item.NewItem(num3 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(10, 100), false, 0, false);
}
if (WorldGen.genRand.Next(3) == 0)
{
Item.NewItem(num3 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100), false, 0, false);
}
if (WorldGen.genRand.Next(4) == 0)
{
Item.NewItem(num3 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(10, 100), false, 0, false);
}
if (WorldGen.genRand.Next(4) == 0)
{
Item.NewItem(num3 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100), false, 0, false);
}
if (WorldGen.genRand.Next(5) == 0)
{
Item.NewItem(num3 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(10, 100), false, 0, false);
}
if (WorldGen.genRand.Next(5) == 0)
{
Item.NewItem(num3 * 16, y * 16, 32, 32, 71, WorldGen.genRand.Next(20, 100), false, 0, false);
}
}
if (frameX >= 612 && frameX <= 646)
{
Item.NewItem(num3 * 16, y * 16, 32, 32, 72, WorldGen.genRand.Next(10, 100), false, 0, false);
if (WorldGen.genRand.Next(2) == 0)
{
Item.NewItem(num3 * 16, y * 16, 32, 32, 72, WorldGen.genRand.Next(20, 100), false, 0, false);
}
if (WorldGen.genRand.Next(3) == 0)
{
Item.NewItem(num3 * 16, y * 16, 32, 32, 72, WorldGen.genRand.Next(30, 100), false, 0, false);
}
}
if (frameX >= 648 && frameX <= 682)
{
Item.NewItem(num3 * 16, y * 16, 32, 32, 73, WorldGen.genRand.Next(1, 6), false, 0, false);
if (WorldGen.genRand.Next(2) == 0)
{
Item.NewItem(num3 * 16, y * 16, 32, 32, 73, WorldGen.genRand.Next(2, 6), false, 0, false);
}
if (WorldGen.genRand.Next(3) == 0)
{
Item.NewItem(num3 * 16, y * 16, 32, 32, 73, WorldGen.genRand.Next(3, 6), false, 0, false);
}
}
if (frameX >= 684 && frameX <= 718)
{
Item.NewItem(num3 * 16, y * 16, 32, 32, 181, WorldGen.genRand.Next(1, 4), false, 0, false);
}
if (frameX >= 720 && frameX <= 754)
{
Item.NewItem(num3 * 16, y * 16, 32, 32, 180, WorldGen.genRand.Next(1, 4), false, 0, false);
}
if (frameX >= 756 && frameX <= 790)
{
Item.NewItem(num3 * 16, y * 16, 32, 32, 177, WorldGen.genRand.Next(1, 4), false, 0, false);
}
if (frameX >= 792 && frameX <= 826)
{
Item.NewItem(num3 * 16, y * 16, 32, 32, 179, WorldGen.genRand.Next(1, 4), false, 0, false);
}
if (frameX >= 828 && frameX <= 862)
{
Item.NewItem(num3 * 16, y * 16, 32, 32, 178, WorldGen.genRand.Next(1, 4), false, 0, false);
}
if (frameX >= 864 && frameX <= 898)
{
Item.NewItem(num3 * 16, y * 16, 32, 32, 182, WorldGen.genRand.Next(1, 4), false, 0, false);
}
}
if (type == 29)
{
Item.NewItem(num3 * 16, y * 16, 32, 32, 87, 1, false, 0, false);
Main.PlaySound(13, i * 16, y * 16, 1);
}
if (type == 103)
{
int type3 = 356;
if (num2 == 1)
{
type3 = 2235;
}
if (num2 == 2)
{
type3 = 2242;
}
if (num2 == 3)
{
type3 = 2243;
}
Item.NewItem(num3 * 16, y * 16, 32, 32, type3, 1, false, 0, false);
Main.PlaySound(13, i * 16, y * 16, 1);
}
else if (type == 134)
{
if (num2 == 1)
{
Item.NewItem(num3 * 16, y * 16, 32, 32, 1220, 1, false, 0, false);
}
else
{
Item.NewItem(num3 * 16, y * 16, 32, 32, 525, 1, false, 0, false);
}
}
WorldGen.destroyObject = false;
WorldGen.SquareTileFrame(num3, y, true);
WorldGen.SquareTileFrame(num3 + 1, y, true);
}
}
public static void Place2x1(int x, int y, ushort type, int style = 0)
{
if (Main.tile[x, y] == null)
{
Main.tile[x, y] = new Tile();
}
if (Main.tile[x + 1, y] == null)
{
Main.tile[x + 1, y] = new Tile();
}
if (Main.tile[x, y + 1] == null)
{
Main.tile[x, y + 1] = new Tile();
}
if (Main.tile[x + 1, y + 1] == null)
{
Main.tile[x + 1, y + 1] = new Tile();
}
bool flag = false;
if (type != 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 = 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 = 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.SolidTileAllowBottomSlope(l, k + 2) && (!Main.tile[l, k + 2].active() || Main.tile[l, k + 2].type != 19))
{
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)
{
int type2;
if (num2 == 0)
{
type2 = 224;
}
else if (num2 == 4)
{
type2 = 920;
}
else if (num2 >= 9 && num2 <= 12)
{
type2 = 1710 + num2;
}
else if (num2 >= 5 && num2 <= 8)
{
type2 = 1465 + num2;
}
else if (num2 >= 13 && num2 <= 18)
{
type2 = 2066 + num2 - 13;
}
else if (num2 == 19)
{
type2 = 2139;
}
else if (num2 == 20)
{
type2 = 2140;
}
else if (num2 == 21)
{
type2 = 2231;
}
else if (num2 == 22)
{
type2 = 2520;
}
else if (num2 == 23)
{
type2 = 2538;
}
else if (num2 == 24)
{
type2 = 2553;
}
else if (num2 == 25)
{
type2 = 2568;
}
else if (num2 == 26)
{
type2 = 2669;
}
else if (num2 == 27)
{
type2 = 2811;
}
else if (num2 == 28)
{
type2 = 3162;
}
else if (num2 == 29)
{
type2 = 3164;
}
else if (num2 == 30)
{
type2 = 3163;
}
else
{
type2 = num2 + 643;
}
Item.NewItem(i * 16, j * 16, 32, 32, type2, 1, false, 0, false);
}
if (type == 90)
{
int type3 = 0;
if (num2 == 0)
{
type3 = 336;
}
else if (num2 >= 1 && num2 <= 10)
{
type3 = 2072 + num2 - 1;
}
else if (num2 >= 11 && num2 <= 15)
{
type3 = 2124 + num2 - 11;
}
else if (num2 == 16)
{
type3 = 2232;
}
else if (num2 == 17)
{
type3 = 2519;
}
else if (num2 == 18)
{
type3 = 2537;
}
else if (num2 == 19)
{
type3 = 2552;
}
else if (num2 == 20)
{
type3 = 2567;
}
else if (num2 == 21)
{
type3 = 2658;
}
else if (num2 == 22)
{
type3 = 2659;
}
else if (num2 == 23)
{
type3 = 2660;
}
else if (num2 == 24)
{
type3 = 2661;
}
else if (num2 == 25)
{
type3 = 2662;
}
else if (num2 == 26)
{
type3 = 2663;
}
else if (num2 == 27)
{
type3 = 2810;
}
else if (num2 == 28)
{
type3 = 3159;
}
else if (num2 == 29)
{
type3 = 3161;
}
else if (num2 == 30)
{
type3 = 3160;
}
Item.NewItem(i * 16, j * 16, 32, 32, type3, 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, ushort 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 = type;
Main.tile[X2, num - 1].active(true);
Main.tile[X2, num - 1].frameY = num2;
Main.tile[X2, num - 1].frameX = 18 + num3;
Main.tile[X2, num - 1].type = type;
Main.tile[X2 - 1, num].active(true);
Main.tile[X2 - 1, num].frameY = num2 + 18;
Main.tile[X2 - 1, num].frameX = num3;
Main.tile[X2 - 1, num].type = type;
Main.tile[X2, num].active(true);
Main.tile[X2, num].frameY = num2 + 18;
Main.tile[X2, num].frameX = 18 + num3;
Main.tile[X2, num].type = 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 = type;
Main.tile[X2, Y2 - 1].active(true);
Main.tile[X2, Y2 - 1].frameY = 0;
Main.tile[X2, Y2 - 1].frameX = num4 + 18;
Main.tile[X2, Y2 - 1].type = type;
Main.tile[X2 + 1, Y2 - 1].active(true);
Main.tile[X2 + 1, Y2 - 1].frameY = 0;
Main.tile[X2 + 1, Y2 - 1].frameX = num4 + 36;
Main.tile[X2 + 1, Y2 - 1].type = 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 = type;
Main.tile[X2, Y2].active(true);
Main.tile[X2, Y2].frameY = 18;
Main.tile[X2, Y2].frameX = num4 + 18;
Main.tile[X2, Y2].type = type;
Main.tile[X2 + 1, Y2].active(true);
Main.tile[X2 + 1, Y2].frameY = 18;
Main.tile[X2 + 1, Y2].frameX = num4 + 36;
Main.tile[X2 + 1, Y2].type = 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 (Main.tile[num15, num11 + 2] == null)
{
Main.tile[num15, num11 + 2] = new Tile();
}
if (!WorldGen.SolidTile(num15, num11 + 2) || Main.tile[num15, num11 + 2].type != 60)
{
flag2 = true;
}
}
if (flag2)
{
short arg_4B4_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 CheckSuper(int x, int y, int type)
{
if (WorldGen.destroyObject)
{
return;
}
Tile tile = Main.tile[x, y];
int num = 0;
if (type == 376)
{
num = (int)(tile.frameX / 36);
}
TileObjectData tileData = TileObjectData.GetTileData(type, num, 0);
bool styleHorizontal = tileData.StyleHorizontal;
int width = tileData.Width;
int height = tileData.Height;
int num2 = x - (int)(tile.frameX / 18) % width;
int num3 = y - (int)(tile.frameY / 18) % height;
int num4 = 0;
int num5 = 0;
if (styleHorizontal)
{
num4 = (int)tile.frameX / tileData.CoordinateFullWidth;
}
else
{
num5 = (int)tile.frameY / tileData.CoordinateFullHeight;
}
bool flag = false;
bool flag2 = false;
if (type == 376)
{
flag = true;
}
for (int i = 0; i < width; i++)
{
for (int j = 0; j < height; j++)
{
Tile tileSafely = Framing.GetTileSafely(num2 + i, num3 + j);
if (!tileSafely.active() || (int)tileSafely.type != type || (int)tileSafely.frameX != num4 * tileData.CoordinateFullWidth + i * (tileData.CoordinateWidth + 2) || (int)tileSafely.frameY != num5 * tileData.CoordinateFullHeight + j * (tileData.CoordinateHeights[0] + 2))
{
flag2 = true;
}
}
if (flag)
{
Tile tileSafely = Framing.GetTileSafely(num2 + i, num3 + height);
if (!tileSafely.active() || (!Main.tileSolid[(int)tileSafely.type] && !Main.tileTable[(int)tileSafely.type]))
{
flag2 = true;
}
if (tileSafely.halfBrick())
{
flag2 = true;
}
}
}
if (!flag2)
{
return;
}
WorldGen.destroyObject = true;
for (int k = 0; k < width; k++)
{
for (int l = 0; l < height; l++)
{
if ((int)Main.tile[num2 + k, num3 + l].type == type && Main.tile[num2 + k, num3 + l].active())
{
WorldGen.KillTile(num2 + k, num3 + l, false, false, false);
}
}
}
int num6 = 0;
if (type == 376)
{
if (num > 2)
{
num6 = 3203 + num - 3;
}
else
{
num6 = 2334 + num;
}
}
if (num6 != 0)
{
Item.NewItem(num2 * 16, num3 * 16, tileData.CoordinateFullWidth, tileData.CoordinateFullHeight, num6, 1, false, 0, false);
}
WorldGen.destroyObject = false;
for (int m = -1; m < width + 1; m++)
{
for (int n = -1; n < height + 1; n++)
{
WorldGen.TileFrame(num2 + m, num3 + n, false, false);
}
}
}
public static void Check2x2(int i, int j, int type)
{
if (WorldGen.destroyObject)
{
return;
}
bool flag = false;
int num = 0;
int k = (int)(Main.tile[i, j].frameX / 18 * -1);
if (k < -1)
{
k += 2;
num = 36;
}
k += i;
int num2 = (type == 172) ? 38 : 36;
int l = (int)Main.tile[i, j].frameY;
int num3 = 0;
while (l >= num2)
{
l -= num2;
num3++;
}
int num4 = j - l / 18;
for (int m = k; m < k + 2; m++)
{
for (int n = num4; n < num4 + 2; n++)
{
Tile tileSafely = Framing.GetTileSafely(m, n);
if (!tileSafely.active() || (int)tileSafely.type != type || (int)tileSafely.frameX != (m - k) * 18 + num || (int)tileSafely.frameY != (n - num4) * 18 + num3 * num2)
{
flag = true;
}
}
if (type == 95 || type == 126)
{
Framing.GetTileSafely(m, num4 - 1);
if (!Main.tile[m, num4 - 1].active() || !Main.tileSolid[(int)Main.tile[m, num4 - 1].type] || Main.tileSolidTop[(int)Main.tile[m, num4 - 1].type])
{
flag = true;
}
}
else if (type != 138 && type != 132)
{
Tile tileSafely2 = Framing.GetTileSafely(m, num4 + 2);
if (!tileSafely2.active() || (!Main.tileSolid[(int)tileSafely2.type] && !Main.tileTable[(int)tileSafely2.type]))
{
flag = true;
}
if (tileSafely2.halfBrick())
{
flag = true;
}
}
}
if (type == 138)
{
ushort type2 = Main.tile[k, num4 - 1].type;
ushort type3 = Main.tile[k + 1, num4 - 1].type;
if (type2 != 21 && type3 != 21 && type2 != 88 && type3 != 88 && !WorldGen.SolidTileAllowBottomSlope(k, num4 + 2) && !WorldGen.SolidTileAllowBottomSlope(k + 1, num4 + 2))
{
flag = true;
}
}
else if (type == 132)
{
flag = false;
num4 = (int)(Main.tile[i, j].frameY / 18 * -1);
num4 += j;
num = 0;
k = (int)(Main.tile[i, j].frameX / 18 * -1);
while (k < -1)
{
k += 2;
num += 36;
}
k += i;
for (int num5 = k; num5 < k + 2; num5++)
{
for (int num6 = num4; num6 < num4 + 2; num6++)
{
if (Main.tile[num5, num6] == null)
{
Main.tile[num5, num6] = new Tile();
}
if (!Main.tile[num5, num6].active() || (int)Main.tile[num5, num6].type != type || (int)Main.tile[num5, num6].frameX != (num5 - k) * 18 + num || (int)Main.tile[num5, num6].frameY != (num6 - num4) * 18)
{
flag = true;
}
}
}
if (Main.tile[k, num4 + 2] == null)
{
Main.tile[k, num4 + 2] = new Tile();
}
if (Main.tile[k + 1, num4 + 2] == null)
{
Main.tile[k + 1, num4 + 2] = new Tile();
}
bool flag2 = false;
ushort type4 = Main.tile[k, num4 + 2].type;
ushort type5 = Main.tile[k + 1, num4 + 2].type;
if (!Main.tile[k, num4 + 2].active() || (!Main.tileSolid[(int)type4] && !Main.tileSolidTop[(int)type4]))
{
flag2 = true;
}
if (!Main.tile[k + 1, num4 + 2].active() || (!Main.tileSolid[(int)type5] && !Main.tileSolidTop[(int)type5]))
{
flag2 = true;
}
if (flag2)
{
if (Main.tile[k, num4].wall < 1 || Main.tile[k + 1, num4].wall < 1 || Main.tile[k, num4 + 1].wall < 1 || Main.tile[k + 1, num4 + 1].wall < 1)
{
flag = true;
}
else if (num < 72)
{
for (int num7 = k; num7 < k + 2; num7++)
{
for (int num8 = num4; num8 < num4 + 2; num8++)
{
Tile expr_49E = Main.tile[num7, num8];
expr_49E.frameX += 72;
}
}
}
}
else if (num >= 72)
{
for (int num9 = k; num9 < k + 2; num9++)
{
for (int num10 = num4; num10 < num4 + 2; num10++)
{
Tile expr_4E8 = Main.tile[num9, num10];
expr_4E8.frameX -= 72;
}
}
}
}
if (!flag)
{
return;
}
WorldGen.destroyObject = true;
for (int num11 = k; num11 < k + 2; num11++)
{
for (int num12 = num4; num12 < num4 + 2; num12++)
{
if ((int)Main.tile[num11, num12].type == type && Main.tile[num11, num12].active())
{
WorldGen.KillTile(num11, num12, false, false, false);
}
}
}
int num13 = 0;
if (type == 360)
{
num13 = 3072;
}
if (type >= 288 && type <= 295)
{
num13 = 2178 + type - 288;
}
if (type >= 316 && type <= 318)
{
num13 = 2439 + type - 316;
}
if (type == 85)
{
num13 = 321;
}
if (type == 94)
{
num13 = 352;
}
if (type == 95)
{
num13 = 344;
}
if (type == 96)
{
num13 = 345;
}
if (type == 97)
{
num13 = 346;
}
if (type == 98)
{
num13 = 347;
}
if (type == 99)
{
num13 = 348;
}
if (type == 335)
{
num13 = 2700;
}
if (type == 411)
{
num13 = 3545;
}
if (type == 100)
{
if (num3 == 0)
{
num13 = 349;
}
else if (num3 >= 1 && num3 <= 12)
{
num13 = 2092 + num3 - 1;
}
else if (num3 >= 13 && num3 <= 16)
{
num13 = 2149 + num3 - 13;
}
else if (num3 == 17)
{
num13 = 2227;
}
else if (num3 == 18)
{
num13 = 2522;
}
else if (num3 == 19)
{
num13 = 2541;
}
else if (num3 == 20)
{
num13 = 2555;
}
else if (num3 == 21)
{
num13 = 2570;
}
else if (num3 == 22)
{
num13 = 2664;
}
else if (num3 == 23)
{
num13 = 2665;
}
else if (num3 == 24)
{
num13 = 2666;
}
else if (num3 == 25)
{
num13 = 2667;
}
else if (num3 == 26)
{
num13 = 2668;
}
else if (num3 == 27)
{
num13 = 2825;
}
else if (num3 == 28)
{
num13 = 3168;
}
else if (num3 == 29)
{
num13 = 3170;
}
else if (num3 == 30)
{
num13 = 3169;
}
}
if (type == 173)
{
num13 = 714;
}
if (type == 125)
{
num13 = 487;
}
if (type == 287)
{
num13 = 2177;
}
if (type == 126)
{
num13 = 488;
}
if (type == 132)
{
num13 = 513;
}
if (type == 142)
{
num13 = 581;
}
if (type == 143)
{
num13 = 582;
}
if (type == 282)
{
num13 = 250;
}
if (type == 319)
{
num13 = 2490;
}
if (type == 172)
{
num13 = 2827 + num3;
if (num3 == 29)
{
num13 = 3147;
}
else if (num3 == 30)
{
num13 = 3149;
}
else if (num3 == 31)
{
num13 = 3148;
}
}
if (num13 != 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, num13, 1, false, 0, false);
}
if (type == 138 && !WorldGen.gen && Main.netMode != 1)
{
Projectile.NewProjectile((float)(k * 16) + 15.5f, (float)(num4 * 16 + 16), 0f, 0f, 99, 70, 10f, Main.myPlayer, 0f, 0f);
}
WorldGen.destroyObject = false;
for (int num14 = k - 1; num14 < k + 3; num14++)
{
for (int num15 = num4 - 1; num15 < num4 + 3; num15++)
{
WorldGen.TileFrame(num14, num15, false, false);
}
}
}
public static bool CheckBoulderChest(int i, int j)
{
int num = (int)(Main.tile[i, j].frameX / 18 * -1);
if (num < -1)
{
num += 2;
}
num += i;
int k;
for (k = (int)Main.tile[i, j].frameY; k >= 36; k -= 36)
{
}
k = j - k / 18;
return Main.tile[num, k - 1].type == 21 || Main.tile[num + 1, k - 1].type == 21 || Main.tile[num, k - 1].type == 88 || Main.tile[num + 1, k - 1].type == 88;
}
public static void OreRunner(int i, int j, double strength, int steps, ushort 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 = 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;
num3 *= 0.9f;
}
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, 0, 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;
num3 *= 0.9f;
}
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, 0, 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;
num3 *= 0.9f;
}
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, 0, 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 || num == 222)
{
num9 = Main.rockLayer;
}
if (num == 111 || num == 223)
{
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), (ushort)num);
num8++;
}
int num10 = WorldGen.genRand.Next(3);
int num11 = 0;
while (num10 != 2 && num11++ < 1000)
{
int num12 = WorldGen.genRand.Next(100, Main.maxTilesX - 100);
int num13 = WorldGen.genRand.Next((int)Main.rockLayer + 50, Main.maxTilesY - 300);
if (Main.tile[num12, num13].active() && Main.tile[num12, num13].type == 1)
{
if (num10 == 0)
{
if (WorldGen.crimson)
{
Main.tile[num12, num13].type = 203;
}
else
{
Main.tile[num12, num13].type = 25;
}
}
else
{
Main.tile[num12, num13].type = 117;
}
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, num12, num13, 1);
break;
}
break;
}
}
if (Main.netMode != 1)
{
int num14 = Main.rand.Next(2) + 1;
for (int k = 0; k < num14; k++)
{
NPC.SpawnOnPlayer((int)Player.FindClosest(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16), 82);
}
}
WorldGen.altarCount++;
AchievementsHelper.NotifyProgressionEvent(6);
}
public static void Check3x1(int i, int j, int type)
{
if (WorldGen.destroyObject)
{
return;
}
bool flag = false;
int 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 (Main.tile[l, j - 1].active() && Main.tile[l, j - 1].type == 21)
{
return;
}
if (!WorldGen.SolidTileAllowBottomSlope(l, j + 1))
{
flag = true;
}
}
if (flag)
{
short arg_12D_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;
bool flag2 = false;
int num = 36;
int num2 = (int)Main.tile[i, j].frameY / num;
int num3 = (int)Main.tile[i, j].frameY % num;
int num4 = j - num3 / 18;
int k = (int)(Main.tile[i, j].frameX / 18);
int num5 = 0;
while (k > 2)
{
k -= 3;
num5++;
}
k = i - k;
int num6 = num5 * 54;
if (type == 14 && num5 == 25)
{
flag2 = true;
}
int num7 = num4 + 2;
if (flag2)
{
num7--;
}
for (int l = k; l < k + 3; l++)
{
for (int m = num4; m < num7; 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 + num6 || (int)Main.tile[l, m].frameY != (m - num4) * 18 + num2 * 36)
{
flag = true;
}
}
if (type == 285 || type == 286 || type == 298 || type == 299 || type == 310 || type == 339 || (type >= 361 && type <= 364))
{
if (!WorldGen.SolidTileAllowBottomSlope(l, num7) && (!Main.tile[l, num7].nactive() || !Main.tileSolidTop[(int)Main.tile[l, num7].type] || Main.tile[l, num7].frameY != 0) && (!Main.tile[l, num7].active() || Main.tile[l, num7].type != 19))
{
flag = true;
}
}
else if (!WorldGen.SolidTileAllowBottomSlope(l, num7) && (!Main.tile[l, num7].active() || Main.tile[l, num7].type != 19))
{
flag = true;
}
}
if (type == 187 && Main.tile[k, num4].frameX >= 756 && Main.tile[k, num4].frameX <= 900 && Main.tile[k, num4 + 2].type != 2 && Main.tile[k + 1, num4 + 2].type != 2 && Main.tile[k + 2, num4 + 2].type != 2)
{
Tile expr_2FE = Main.tile[k, num4];
expr_2FE.frameX -= 378;
Tile expr_31F = Main.tile[k + 1, num4];
expr_31F.frameX -= 378;
Tile expr_340 = Main.tile[k + 2, num4];
expr_340.frameX -= 378;
Tile expr_361 = Main.tile[k, num4 + 1];
expr_361.frameX -= 378;
Tile expr_384 = Main.tile[k + 1, num4 + 1];
expr_384.frameX -= 378;
Tile expr_3A7 = Main.tile[k + 2, num4 + 1];
expr_3A7.frameX -= 378;
Main.tile[k, num4].type = 186;
Main.tile[k + 1, num4].type = 186;
Main.tile[k + 2, num4].type = 186;
Main.tile[k, num4 + 1].type = 186;
Main.tile[k + 1, num4 + 1].type = 186;
Main.tile[k + 2, num4 + 1].type = 186;
}
if (flag)
{
int frameX = (int)Main.tile[i, j].frameX;
WorldGen.destroyObject = true;
num7 = num4 + 3;
if (flag2)
{
num7--;
}
for (int n = k; n < k + 3; n++)
{
for (int num8 = num4; num8 < num4 + 3; num8++)
{
if (Main.tile[n, num8] == null)
{
Main.tile[n, num8] = new Tile();
}
if ((int)Main.tile[n, num8].type == type && Main.tile[n, num8].active())
{
WorldGen.KillTile(n, num8, false, false, false);
}
}
}
if (type == 14)
{
int type2;
if (num5 >= 1 && num5 <= 3)
{
type2 = 637 + num5;
}
else if (num5 >= 15 && num5 <= 20)
{
type2 = 1698 + num5;
}
else if (num5 >= 4 && num5 <= 7)
{
type2 = 823 + num5;
}
else if (num5 == 8)
{
type2 = 917;
}
else if (num5 == 9)
{
type2 = 1144;
}
else if (num5 == 10)
{
type2 = 1397;
}
else if (num5 == 11)
{
type2 = 1400;
}
else if (num5 == 12)
{
type2 = 1403;
}
else if (num5 == 13)
{
type2 = 1460;
}
else if (num5 == 14)
{
type2 = 1510;
}
else if (num5 == 23)
{
type2 = 1926;
}
else if (num5 == 21)
{
type2 = 1794;
}
else if (num5 == 22)
{
type2 = 1816;
}
else if (num5 == 24)
{
type2 = 2248;
}
else if (num5 == 25)
{
type2 = 2259;
}
else if (num5 == 26)
{
type2 = 2532;
}
else if (num5 == 27)
{
type2 = 2550;
}
else if (num5 == 28)
{
type2 = 677;
}
else if (num5 == 29)
{
type2 = 2583;
}
else if (num5 == 30)
{
type2 = 2743;
}
else if (num5 == 31)
{
type2 = 2824;
}
else if (num5 == 32)
{
type2 = 3153;
}
else if (num5 == 33)
{
type2 = 3155;
}
else if (num5 == 34)
{
type2 = 3154;
}
else
{
type2 = 32;
}
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.IsGeneratingHardMode)
{
WorldGen.SmashAltar(i, j);
}
}
else if (type == 298)
{
Item.NewItem(i * 16, j * 16, 32, 32, 2190, 1, false, 0, false);
}
else if (type == 299)
{
Item.NewItem(i * 16, j * 16, 32, 32, 2191, 1, false, 0, false);
}
else if (type >= 361 && type <= 364)
{
Item.NewItem(i * 16, j * 16, 32, 32, 3073 + type - 361, 1, false, 0, false);
}
else if (type >= 391 && type <= 394)
{
Item.NewItem(i * 16, j * 16, 48, 32, 3254 + type - 391, 1, false, 0, false);
}
else if (type == 285)
{
Item.NewItem(i * 16, j * 16, 32, 32, 2174, 1, false, 0, false);
}
else if (type == 286)
{
Item.NewItem(i * 16, j * 16, 32, 32, 2175, 1, false, 0, false);
}
else if (type == 310)
{
Item.NewItem(i * 16, j * 16, 32, 32, 2207, 1, false, 0, false);
}
else if (type == 339)
{
Item.NewItem(i * 16, j * 16, 32, 32, 2741, 1, false, 0, false);
}
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 == 377)
{
Item.NewItem(i * 16, j * 16, 32, 32, 3198, 1, false, 0, false);
}
else if (type == 228)
{
Item.NewItem(i * 16, j * 16, 32, 32, 1120, 1, false, 0, false);
}
else if (type == 405)
{
Item.NewItem(i * 16, j * 16, 32, 32, 3364, 1, false, 0, false);
}
else if (type == 215)
{
if (num5 == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 966, 1, false, 0, false);
}
else
{
Item.NewItem(i * 16, j * 16, 32, 32, 3046 + num5 - 1, 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;
if (num5 >= 1 && num5 <= 3)
{
type3 = 640 + num5;
}
else if (num5 == 4)
{
type3 = 919;
}
else if (num5 >= 5 && num5 <= 7)
{
type3 = 2245 + num5 - 5;
}
else if (num5 >= 8 && num5 <= 10)
{
type3 = 2254 + num5 - 8;
}
else if (num5 >= 11 && num5 <= 20)
{
type3 = 2376 + num5 - 11;
}
else if (num5 == 21)
{
type3 = 2531;
}
else if (num5 == 22)
{
type3 = 2548;
}
else if (num5 == 23)
{
type3 = 2565;
}
else if (num5 == 24)
{
type3 = 2580;
}
else if (num5 == 25)
{
type3 = 2671;
}
else if (num5 == 26)
{
type3 = 2821;
}
else if (num5 == 27)
{
type3 = 3141;
}
else if (num5 == 28)
{
type3 = 3143;
}
else if (num5 == 29)
{
type3 = 3142;
}
else
{
type3 = 333;
}
Item.NewItem(i * 16, j * 16, 32, 32, type3, 1, false, 0, false);
}
else if (type == 88)
{
int type4;
if (num5 >= 1 && num5 <= 3)
{
type4 = 646 + num5;
}
else if (num5 == 4)
{
type4 = 918;
}
else if (num5 >= 5 && num5 <= 15)
{
type4 = 2386 + num5 - 5;
}
else if (num5 == 16)
{
type4 = 2529;
}
else if (num5 == 17)
{
type4 = 2545;
}
else if (num5 == 18)
{
type4 = 2562;
}
else if (num5 == 19)
{
type4 = 2577;
}
else if (num5 == 20)
{
type4 = 2637;
}
else if (num5 == 21)
{
type4 = 2638;
}
else if (num5 == 22)
{
type4 = 2639;
}
else if (num5 == 23)
{
type4 = 2640;
}
else if (num5 == 24)
{
type4 = 2816;
}
else if (num5 == 25)
{
type4 = 3132;
}
else if (num5 == 26)
{
type4 = 3134;
}
else if (num5 == 27)
{
type4 = 3133;
}
else
{
type4 = 334;
}
Item.NewItem(i * 16, j * 16, 32, 32, type4, 1, false, 0, false);
}
else if (type == 89)
{
int type5;
if (num5 >= 1 && num5 <= 20)
{
type5 = 2397 + num5 - 1;
}
else if (num5 == 21)
{
type5 = 2521;
}
else if (num5 == 22)
{
type5 = 2527;
}
else if (num5 == 23)
{
type5 = 2539;
}
else if (num5 == 24)
{
type5 = 858;
}
else if (num5 == 25)
{
type5 = 2582;
}
else if (num5 == 26)
{
type5 = 2634;
}
else if (num5 == 27)
{
type5 = 2635;
}
else if (num5 == 28)
{
type5 = 2636;
}
else if (num5 == 29)
{
type5 = 2823;
}
else if (num5 == 30)
{
type5 = 3150;
}
else if (num5 == 31)
{
type5 = 3152;
}
else if (num5 == 32)
{
type5 = 3151;
}
else
{
type5 = 335;
}
Item.NewItem(i * 16, j * 16, 32, 32, type5, 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 (WorldGen.genRand.Next(2) == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 72, WorldGen.genRand.Next(20, 100), false, 0, false);
}
if (WorldGen.genRand.Next(3) == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 72, WorldGen.genRand.Next(30, 100), false, 0, false);
}
if (WorldGen.genRand.Next(4) == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 72, WorldGen.genRand.Next(40, 100), false, 0, false);
}
if (WorldGen.genRand.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)
{
if (Main.rand.Next(10) == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 3368, 1, false, 0, false);
}
else
{
Item.NewItem(i * 16, j * 16, 32, 32, 989, 1, false, 0, false);
}
}
WorldGen.destroyObject = false;
for (int num9 = k - 1; num9 < k + 4; num9++)
{
for (int num10 = num4 - 1; num10 < num4 + 4; num10++)
{
WorldGen.TileFrame(num9, num10, 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.SolidTileAllowBottomSlope(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)
{
int type2;
if (num == 1)
{
type2 = 1414;
}
else if (num == 2)
{
type2 = 1415;
}
else if (num == 3)
{
type2 = 1416;
}
else if (num == 4)
{
type2 = 1463;
}
else if (num == 5)
{
type2 = 1512;
}
else if (num == 6)
{
type2 = 2020;
}
else if (num == 7)
{
type2 = 2021;
}
else if (num == 8)
{
type2 = 2022;
}
else if (num == 9)
{
type2 = 2023;
}
else if (num == 10)
{
type2 = 2024;
}
else if (num == 11)
{
type2 = 2025;
}
else if (num == 12)
{
type2 = 2026;
}
else if (num == 13)
{
type2 = 2027;
}
else if (num == 14)
{
type2 = 2028;
}
else if (num == 15)
{
type2 = 2029;
}
else if (num == 16)
{
type2 = 2030;
}
else if (num == 17)
{
type2 = 2031;
}
else if (num >= 18 && num <= 21)
{
type2 = 2135 + num - 18;
}
else if (num == 22)
{
type2 = 2233;
}
else if (num == 23)
{
type2 = 2536;
}
else if (num == 24)
{
type2 = 2540;
}
else if (num == 25)
{
type2 = 2554;
}
else if (num == 26)
{
type2 = 2569;
}
else if (num == 27)
{
type2 = 2670;
}
else if (num == 28)
{
type2 = 2817;
}
else if (num == 29)
{
type2 = 3165;
}
else if (num == 30)
{
type2 = 3167;
}
else if (num == 31)
{
type2 = 3166;
}
else
{
type2 = 354;
}
Item.NewItem(i * 16, j * 16, 32, 32, type2, 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 Check6x3(int i, int j, int type)
{
if (WorldGen.destroyObject)
{
return;
}
bool flag = false;
int num = i + (int)(Main.tile[i, j].frameX / 18 * -1);
int num2 = j + (int)(Main.tile[i, j].frameY / 18 * -1);
for (int k = num; k < num + 6; k++)
{
for (int l = num2; l < num2 + 3; l++)
{
int num3 = (k - num) * 18;
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 != num3 || (int)Main.tile[k, l].frameY != (l - num2) * 18)
{
flag = true;
}
}
if (Main.tile[k, num2 + 3] == null)
{
Main.tile[k, num2 + 3] = new Tile();
}
if (!WorldGen.SolidTileAllowBottomSlope(k, num2 + 3) && (!Main.tile[k, num2 + 3].nactive() || !Main.tileSolidTop[(int)Main.tile[k, num2 + 3].type] || Main.tile[k, num2 + 3].frameY != 0))
{
flag = true;
}
}
if (flag)
{
WorldGen.destroyObject = true;
for (int m = num; m < num + 6; m++)
{
for (int n = num2; n < num2 + 3; n++)
{
if ((int)Main.tile[m, n].type == type && Main.tile[m, n].active())
{
WorldGen.KillTile(m, n, false, false, false);
}
}
}
if (type == 275)
{
Item.NewItem(i * 16, j * 16, 32, 32, 2162, 1, false, 0, false);
}
if (type == 413)
{
Item.NewItem(i * 16, j * 16, 32, 32, 3565, 1, false, 0, false);
}
if (type == 414)
{
Item.NewItem(i * 16, j * 16, 32, 32, 3566, 1, false, 0, false);
}
if (type == 276)
{
Item.NewItem(i * 16, j * 16, 32, 32, 2163, 1, false, 0, false);
}
if (type == 277)
{
Item.NewItem(i * 16, j * 16, 32, 32, 2164, 1, false, 0, false);
}
if (type == 278)
{
Item.NewItem(i * 16, j * 16, 32, 32, 2165, 1, false, 0, false);
}
if (type == 279)
{
Item.NewItem(i * 16, j * 16, 32, 32, 2166, 1, false, 0, false);
}
if (type == 280)
{
Item.NewItem(i * 16, j * 16, 32, 32, 2167, 1, false, 0, false);
}
if (type == 281)
{
Item.NewItem(i * 16, j * 16, 32, 32, 2168, 1, false, 0, false);
}
if (type == 296)
{
Item.NewItem(i * 16, j * 16, 32, 32, 2186, 1, false, 0, false);
}
if (type == 297)
{
Item.NewItem(i * 16, j * 16, 32, 32, 2187, 1, false, 0, false);
}
if (type == 309)
{
Item.NewItem(i * 16, j * 16, 32, 32, 2206, 1, false, 0, false);
}
if (type == 358)
{
Item.NewItem(i * 16, j * 16, 32, 32, 3070, 1, false, 0, false);
}
if (type == 359)
{
Item.NewItem(i * 16, j * 16, 32, 32, 3071, 1, false, 0, false);
}
WorldGen.destroyObject = false;
for (int num4 = num - 1; num4 < num + 7; num4++)
{
for (int num5 = num2 - 1; num5 < num2 + 4; num5++)
{
WorldGen.TileFrame(num4, num5, false, false);
}
}
}
}
public static void Place6x3(int x, int y, ushort type, int direction = -1, int style = 0)
{
if (x < 5 || x > Main.maxTilesX - 5 || y < 5 || y > Main.maxTilesY - 5)
{
return;
}
bool flag = true;
for (int i = x - 3; i < x + 3; i++)
{
for (int j = y - 2; j <= y; 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) && (!Main.tile[i, y + 1].nactive() || !Main.tileSolidTop[(int)Main.tile[i, y + 1].type] || Main.tile[i, y + 1].frameY != 0))
{
flag = false;
}
}
if (flag)
{
int num = 0;
for (int k = x - 3; k < x + 3; k++)
{
int num2 = 0;
for (int l = y - 2; l <= y; l++)
{
Main.tile[k, l].active(true);
Main.tile[k, l].frameY = (short)num2;
Main.tile[k, l].frameX = (short)num;
Main.tile[k, l].type = type;
num2 += 18;
}
num += 18;
}
}
}
public static void Place4x2(int x, int y, ushort type, int direction = -1, int style = 0)
{
if (x < 5 || x > Main.maxTilesX - 5 || y < 5 || y > Main.maxTilesY - 5)
{
return;
}
bool flag = true;
for (int i = x - 1; i < x + 3; i++)
{
for (int 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 = type;
Main.tile[x, y - 1].active(true);
Main.tile[x, y - 1].frameY = (short)num2;
Main.tile[x, y - 1].frameX = 18 + num;
Main.tile[x, y - 1].type = type;
Main.tile[x + 1, y - 1].active(true);
Main.tile[x + 1, y - 1].frameY = (short)num2;
Main.tile[x + 1, y - 1].frameX = 36 + num;
Main.tile[x + 1, y - 1].type = type;
Main.tile[x + 2, y - 1].active(true);
Main.tile[x + 2, y - 1].frameY = (short)num2;
Main.tile[x + 2, y - 1].frameX = 54 + num;
Main.tile[x + 2, y - 1].type = type;
Main.tile[x - 1, y].active(true);
Main.tile[x - 1, y].frameY = (short)(num2 + 18);
Main.tile[x - 1, y].frameX = num;
Main.tile[x - 1, y].type = type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameY = (short)(num2 + 18);
Main.tile[x, y].frameX = 18 + num;
Main.tile[x, y].type = type;
Main.tile[x + 1, y].active(true);
Main.tile[x + 1, y].frameY = (short)(num2 + 18);
Main.tile[x + 1, y].frameX = 36 + num;
Main.tile[x + 1, y].type = type;
Main.tile[x + 2, y].active(true);
Main.tile[x + 2, y].frameY = (short)(num2 + 18);
Main.tile[x + 2, y].frameX = 54 + num;
Main.tile[x + 2, y].type = 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.SolidTileAllowBottomSlope(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);
}
}
}
int type2 = 928;
switch (num)
{
case 1:
type2 = 1337;
break;
case 2:
type2 = 3369;
break;
}
Item.NewItem(i * 16, j * 16, 32, 32, type2, 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, ushort type, int style = 0)
{
if (x < 5 || x > Main.maxTilesX - 5 || y < 5 || y > Main.maxTilesY - 5)
{
return;
}
bool flag = true;
for (int i = x - 1; i < x + 3; i++)
{
for (int 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 || Main.tile[l, m].type == 35))
{
if (Main.tile[l, m].frameX < 36)
{
Tile expr_E9 = Main.tile[l, m];
expr_E9.frameX += 36;
}
else
{
Tile expr_108 = Main.tile[l, m];
expr_108.frameX -= 36;
}
}
}
}
if (Wiring.running)
{
Wiring.SkipWire(num2, num3);
Wiring.SkipWire(num2 + 1, num3);
Wiring.SkipWire(num2, num3 + 1);
Wiring.SkipWire(num2 + 1, num3 + 1);
}
NetMessage.SendTileSquare(-1, num2, num3, 3);
}
public static void SwitchMonolith(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 >= 3)
{
num -= 3;
}
int num2 = i - k;
int num3 = j - num;
for (int l = num2; l < num2 + 2; l++)
{
for (int m = num3; m < num3 + 3; m++)
{
if (Main.tile[l, m] == null)
{
Main.tile[l, m] = new Tile();
}
if (Main.tile[l, m].active() && Main.tile[l, m].type == 410)
{
if (Main.tile[l, m].frameY < 56)
{
Tile expr_CF = Main.tile[l, m];
expr_CF.frameY += 56;
}
else
{
Tile expr_EE = Main.tile[l, m];
expr_EE.frameY -= 56;
}
}
}
}
if (Wiring.running)
{
Wiring.SkipWire(num2, num3);
Wiring.SkipWire(num2, num3 + 1);
Wiring.SkipWire(num2, num3 + 2);
Wiring.SkipWire(num2 + 1, num3);
Wiring.SkipWire(num2 + 1, num3 + 1);
Wiring.SkipWire(num2 + 1, num3 + 2);
}
NetMessage.SendTileSquare(-1, num2, num3 + 1, 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_CF = Main.tile[l, m];
expr_CF.frameY += 72;
}
else
{
Tile expr_EE = Main.tile[l, m];
expr_EE.frameY -= 72;
}
}
}
}
if (Wiring.running)
{
Wiring.SkipWire(num2, num3);
Wiring.SkipWire(num2, num3 + 1);
Wiring.SkipWire(num2, num3 + 2);
Wiring.SkipWire(num2, num3 + 3);
Wiring.SkipWire(num2 + 1, num3);
Wiring.SkipWire(num2 + 1, num3 + 1);
Wiring.SkipWire(num2 + 1, num3 + 2);
Wiring.SkipWire(num2 + 1, num3 + 3);
}
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.tile[l, num5 + 2].nactive())
{
flag = true;
}
else 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 (type == 35)
{
Item.NewItem(i * 16, j * 16, 32, 32, 1813, 1, false, 0, false);
}
else if (num == 28)
{
Item.NewItem(i * 16, j * 16, 32, 32, 1963, 1, false, 0, false);
}
else if (num == 29)
{
Item.NewItem(i * 16, j * 16, 32, 32, 1964, 1, false, 0, false);
}
else if (num == 30)
{
Item.NewItem(i * 16, j * 16, 32, 32, 1965, 1, false, 0, false);
}
else if (num == 31)
{
Item.NewItem(i * 16, j * 16, 32, 32, 2742, 1, false, 0, false);
}
else if (num == 32)
{
Item.NewItem(i * 16, j * 16, 32, 32, 3044, 1, false, 0, false);
}
else if (num == 33)
{
Item.NewItem(i * 16, j * 16, 32, 32, 3235, 1, false, 0, false);
}
else if (num == 34)
{
Item.NewItem(i * 16, j * 16, 32, 32, 3236, 1, false, 0, false);
}
else if (num == 35)
{
Item.NewItem(i * 16, j * 16, 32, 32, 3237, 1, false, 0, false);
}
else if (num == 36)
{
Item.NewItem(i * 16, j * 16, 32, 32, 3370, 1, false, 0, false);
}
else if (num == 37)
{
Item.NewItem(i * 16, j * 16, 32, 32, 3371, 1, false, 0, false);
}
else 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, ushort 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 = 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 = 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 = 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 = type;
}
}
public static void Place2x2(int x, int y, ushort type, int style)
{
if (type == 95 || type == 126)
{
y++;
}
if (x < 5 || x > Main.maxTilesX - 5 || y < 5 || y > Main.maxTilesY - 5)
{
return;
}
if (type == 172)
{
if (!WorldGen.CanPlaceSink(x, y, type, style))
{
return;
}
}
else
{
for (int i = x - 1; i < x + 1; i++)
{
for (int j = y - 1; j < y + 1; j++)
{
Tile tile = Framing.GetTileSafely(i, j);
if (tile.active())
{
return;
}
if (type == 98 && tile.liquid > 0)
{
return;
}
}
if (type == 95 || type == 126)
{
Tile tile = Framing.GetTileSafely(i, y - 2);
if (!tile.nactive() || !Main.tileSolid[(int)tile.type] || Main.tileSolidTop[(int)tile.type])
{
return;
}
}
else if (type != 132)
{
Tile tile = Framing.GetTileSafely(i, y + 1);
if (!tile.nactive() || (!WorldGen.SolidTile2(tile) && !Main.tileTable[(int)tile.type]))
{
return;
}
}
}
}
if (type == 132)
{
bool flag = true;
if (Main.tile[x - 1, y + 1] == null)
{
Main.tile[x - 1, y + 1] = new Tile();
}
if (Main.tile[x, y + 1] == null)
{
Main.tile[x, y + 1] = new Tile();
}
if (!Main.tile[x - 1, y + 1].nactive() || (!WorldGen.SolidTile2(x - 1, y + 1) && !Main.tileTable[(int)Main.tile[x - 1, y + 1].type]))
{
flag = false;
}
if (!Main.tile[x, y + 1].nactive() || (!WorldGen.SolidTile2(x, y + 1) && !Main.tileTable[(int)Main.tile[x, y + 1].type]))
{
flag = false;
}
if (!flag && (Main.tile[x - 1, y - 1].wall < 1 || Main.tile[x, y - 1].wall < 1 || Main.tile[x - 1, y].wall < 1 || Main.tile[x - 1, y].wall < 1))
{
return;
}
}
x--;
y--;
int num = (type == 172) ? 38 : 36;
for (int k = 0; k < 2; k++)
{
for (int l = 0; l < 2; l++)
{
Tile tile = Main.tile[x + k, y + l];
tile.active(true);
tile.frameX = (short)(k * 18);
tile.frameY = (short)(style * num + l * 18);
tile.type = type;
}
}
}
public static bool PlaceObject(int x, int y, int type, bool mute = false, int style = 0, int alternate = 0, int random = -1, int direction = -1)
{
if (type >= 419)
{
return false;
}
TileObject toBePlaced;
if (!TileObject.CanPlace(x, y, type, style, direction, out toBePlaced, false))
{
return false;
}
toBePlaced.random = random;
if (TileObject.Place(toBePlaced) && !mute)
{
WorldGen.SquareTileFrame(x, y, true);
Main.PlaySound(0, x * 16, y * 16, 1);
}
return false;
}
public static bool ShiftTrapdoor(int x, int y, bool playerAbove, int onlyCloseOrOpen = -1)
{
Tile tileSafely = Framing.GetTileSafely(x, y);
if (tileSafely.type == 386 && onlyCloseOrOpen != 1)
{
Point topLeftAndStyles = WorldGen.GetTopLeftAndStyles(ref x, ref y, 2, 2, 18, 18);
if (topLeftAndStyles.X == 0)
{
if (Main.netMode != 1 && Wiring.running)
{
Wiring.SkipWire(x, y);
Wiring.SkipWire(x, y + 1);
Wiring.SkipWire(x + 1, y);
Wiring.SkipWire(x + 1, y + 1);
}
if (!Collision.EmptyTile(x, y + 1, true) || !Collision.EmptyTile(x + 1, y + 1, true))
{
return false;
}
Main.PlaySound(8, x * 16 + 16, y * 16 + 16, 1);
for (int i = 0; i < 2; i++)
{
tileSafely = Framing.GetTileSafely(x + i, y);
tileSafely.ClearTile();
}
for (int j = 0; j < 2; j++)
{
tileSafely = Framing.GetTileSafely(x + j, y + 1);
tileSafely.type = 387;
tileSafely.frameX = (short)(j * 18);
tileSafely.frameY = (short)(topLeftAndStyles.Y * 18);
}
for (int k = -1; k < 3; k++)
{
for (int l = 0; l < 3; l++)
{
WorldGen.TileFrame(x + k, y + l, false, false);
}
}
return true;
}
else if (topLeftAndStyles.X == 1)
{
if (Main.netMode != 1 && Wiring.running)
{
Wiring.SkipWire(x, y - 1);
Wiring.SkipWire(x, y);
Wiring.SkipWire(x + 1, y - 1);
Wiring.SkipWire(x + 1, y);
}
if (!Collision.EmptyTile(x, y, true) || !Collision.EmptyTile(x + 1, y, true))
{
return false;
}
Main.PlaySound(8, x * 16 + 16, y * 16, 1);
for (int m = 0; m < 2; m++)
{
tileSafely = Framing.GetTileSafely(x + m, y + 1);
tileSafely.ClearTile();
}
for (int n = 0; n < 2; n++)
{
tileSafely = Framing.GetTileSafely(x + n, y);
tileSafely.type = 387;
tileSafely.frameX = (short)(n * 18);
tileSafely.frameY = (short)(topLeftAndStyles.Y * 18);
}
for (int num = -1; num < 3; num++)
{
for (int num2 = -1; num2 < 2; num2++)
{
WorldGen.TileFrame(x + num, y + num2, false, false);
}
}
return true;
}
}
if (tileSafely.type == 387 && onlyCloseOrOpen != 0)
{
WorldGen.GetTopLeftAndStyles(ref x, ref y, 2, 1, 18, 18);
int num3 = playerAbove.ToDirectionInt();
for (int num4 = 0; num4 < 2; num4++)
{
tileSafely = Framing.GetTileSafely(x + num4, y + num3);
if (tileSafely.active() && !Main.tileCut[(int)tileSafely.type])
{
return false;
}
}
if (Main.netMode != 1 && Wiring.running)
{
Wiring.SkipWire(x, y);
Wiring.SkipWire(x, y + num3);
Wiring.SkipWire(x + 1, y);
Wiring.SkipWire(x + 1, y + num3);
}
Main.PlaySound(8, x * 16 + 16, y * 16, 1);
for (int num5 = 0; num5 < 2; num5++)
{
tileSafely = Framing.GetTileSafely(x + num5, y + num3);
if (tileSafely.active() && Main.tileCut[(int)tileSafely.type])
{
WorldGen.KillTile(x + num5, y + num3, false, false, false);
}
}
for (int num6 = 0; num6 < 2; num6++)
{
tileSafely = Framing.GetTileSafely(x + num6, y);
byte color = tileSafely.color();
for (int num7 = 0; num7 < 2; num7++)
{
tileSafely = Framing.GetTileSafely(x + num6, y + num7 - (!playerAbove).ToInt());
tileSafely.type = 386;
tileSafely.frameX = (short)(num6 * 18 + playerAbove.ToInt() * 36);
tileSafely.frameY = (short)(num7 * 18);
tileSafely.color(color);
tileSafely.active(true);
}
}
for (int num8 = -1; num8 < 3; num8++)
{
for (int num9 = -1; num9 < 3; num9++)
{
WorldGen.TileFrame(x + num8, y + num9 - (!playerAbove).ToInt() * 2, false, false);
}
}
return true;
}
Main.PlaySound(9, x * 16, y * 16, 1);
return false;
}
public static void CheckTrapDoor(int x, int y, int type)
{
if (WorldGen.destroyObject)
{
return;
}
bool flag = false;
int num = 0;
int num2 = 0;
Point point = default(Point);
if (type == 387)
{
num = 2;
num2 = 1;
point = WorldGen.GetTopLeftAndStyles(ref x, ref y, num, num2, 18, 18);
flag = (flag || !WorldGen.CheckTileFrames(type, x, y, num, num2, point.X, 18, point.Y, 18) || !WorldGen.CheckTileAnchors(x, y, num, num2, 1, AnchorType.SolidTile));
}
if (type == 386)
{
num = 2;
num2 = 2;
point = WorldGen.GetTopLeftAndStyles(ref x, ref y, num, num2, 18, 18);
flag = (flag || !WorldGen.CheckTileFrames(type, x, y, num, num2, point.X, 18, point.Y, 18));
if (point.X == 0)
{
flag = (flag || !WorldGen.CheckTileAnchors(x, y + 1, num, 1, 1, AnchorType.SolidTile));
}
else if (point.X == 1)
{
flag = (flag || !WorldGen.CheckTileAnchors(x, y, num, 1, 1, AnchorType.SolidTile));
}
}
if (!flag)
{
return;
}
WorldGen.destroyObject = true;
for (int i = x; i < x + num; i++)
{
for (int j = y; j < y + num2; j++)
{
WorldGen.KillTile(i, j, false, false, false);
}
}
int type2 = 3239;
if (point.Y == 0)
{
type2 = 3239;
}
Item.NewItem(x * 16, y * 16, num * 16, num2 * 16, type2, 1, false, 0, false);
for (int k = x - 1; k < x + num + 1; k++)
{
for (int l = y - 1; l < y + num2 + 1; l++)
{
WorldGen.TileFrame(k, l, false, false);
}
}
WorldGen.destroyObject = false;
}
public static void CheckTallGate(int x, int y, int type)
{
if (WorldGen.destroyObject)
{
return;
}
bool flag = false;
Tile tileSafely = Framing.GetTileSafely(x, y);
Point point = new Point((int)(tileSafely.frameX / 18), 0);
TileObjectData tileData = TileObjectData.GetTileData(type, point.X, 0);
point.Y = (int)tileSafely.frameY / tileData.CoordinateFullHeight;
int width = tileData.Width;
int height = tileData.Height;
int num = 0;
int num2 = (int)tileSafely.frameY % tileData.CoordinateFullHeight;
while (num < height && num2 - tileData.CoordinateHeights[num] >= 0)
{
num2 -= tileData.CoordinateHeights[num];
num++;
}
int arg_99_0 = tileData.CoordinateFullHeight;
y -= num;
int num3 = point.Y * tileData.CoordinateFullHeight;
for (int i = 0; i < height; i++)
{
tileSafely = Framing.GetTileSafely(x, y + i);
if ((int)tileSafely.frameX != point.X * tileData.CoordinateFullWidth || (int)tileSafely.frameY != num3)
{
flag = true;
break;
}
num3 += tileData.CoordinateHeights[i] + tileData.CoordinatePadding;
}
if (!flag && WorldGen.CheckTileAnchors(x, y, width, height, 2, AnchorType.SolidTile))
{
return;
}
WorldGen.destroyObject = true;
for (int j = x; j < x + width; j++)
{
for (int k = y; k < y + height; k++)
{
WorldGen.KillTile(j, k, false, false, false);
}
}
int type2 = 3240;
if (point.Y == 0)
{
type2 = 3240;
}
Item.NewItem(x * 16, y * 16, width * 16, height * 16, type2, 1, false, 0, false);
for (int l = x - 1; l < x + width + 1; l++)
{
for (int m = y - 1; m < y + height + 1; m++)
{
WorldGen.TileFrame(l, m, false, false);
}
}
WorldGen.destroyObject = false;
}
public static bool ShiftTallGate(int x, int y, bool closing)
{
ushort type = closing ? 388 : 389;
ushort num = closing ? 389 : 388;
Tile tileSafely = Framing.GetTileSafely(x, y);
if (tileSafely.type != num)
{
return false;
}
Point point = new Point((int)(tileSafely.frameX / 18), 0);
TileObjectData tileData = TileObjectData.GetTileData(388, point.X, 0);
point.Y = (int)tileSafely.frameY / tileData.CoordinateFullHeight;
int arg_74_0 = tileData.Width;
int height = tileData.Height;
int num2 = 0;
int num3 = (int)tileSafely.frameY % tileData.CoordinateFullHeight;
while (num2 < height && num3 - tileData.CoordinateHeights[num2] >= 0)
{
num3 -= tileData.CoordinateHeights[num2];
num2++;
}
int arg_C5_0 = tileData.CoordinateFullHeight;
y -= num2;
if (Main.netMode != 1 && Wiring.running)
{
for (int i = 0; i < height; i++)
{
Wiring.SkipWire(x, y + i);
}
}
for (int j = 0; j < height; j++)
{
if (!Collision.EmptyTile(x, y + j, true))
{
return false;
}
}
Main.PlaySound(8, x * 16 + 16, y * 16 + 16, 1);
for (int k = 0; k < height; k++)
{
tileSafely = Framing.GetTileSafely(x, y + k);
tileSafely.type = type;
}
for (int l = -1; l < 2; l++)
{
for (int m = -1; m < height + 1; m++)
{
WorldGen.TileFrame(x + l, y + m, false, false);
}
}
return true;
}
public static Point GetTopLeftAndStyles(ref int x, ref int y, int w, int h, int frameXinc, int frameYinc)
{
Tile tileSafely = Framing.GetTileSafely(x, y);
Point result = new Point((int)tileSafely.frameX / (w * frameXinc), (int)tileSafely.frameY / (h * frameYinc));
if (frameXinc != 0)
{
x -= (int)tileSafely.frameX / frameXinc % w;
}
if (frameYinc != 0)
{
y -= (int)tileSafely.frameY / frameYinc % h;
}
return result;
}
public static bool CheckTileFrames(int type, int sx, int sy, int w, int h, int styleX, int frameXinc, int styleY, int frameYinc)
{
for (int i = 0; i < w; i++)
{
for (int j = 0; j < h; j++)
{
Tile tileSafely = Framing.GetTileSafely(sx + i, sy + j);
if (!tileSafely.active() || (int)tileSafely.type != type || (int)tileSafely.frameX != styleX * w * frameXinc + i * frameXinc || (int)tileSafely.frameY != styleY * h * frameYinc + j * frameYinc)
{
return false;
}
}
}
return true;
}
public static bool CheckTileAnchors(int sx, int sy, int w, int h, int mode, AnchorType anchor)
{
if ((mode & 1) == 1)
{
for (int i = sy; i < sy + h; i++)
{
if (!WorldGen.AnchorValid(Framing.GetTileSafely(sx - 1, i), anchor))
{
return false;
}
if (!WorldGen.AnchorValid(Framing.GetTileSafely(sx + w, i), anchor))
{
return false;
}
}
}
if ((mode & 2) == 2)
{
for (int j = sx; j < sx + w; j++)
{
if (!WorldGen.AnchorValid(Framing.GetTileSafely(j, sy - 1), anchor))
{
return false;
}
if (!WorldGen.AnchorValid(Framing.GetTileSafely(j, sy + h), anchor))
{
return false;
}
}
}
return true;
}
public static bool AnchorValid(Tile tileCache, AnchorType anchor)
{
bool flag = false;
if (tileCache.nactive())
{
if ((anchor & AnchorType.SolidTile) == AnchorType.SolidTile && Main.tileSolid[(int)tileCache.type] && !Main.tileSolidTop[(int)tileCache.type] && !Main.tileNoAttach[(int)tileCache.type] && tileCache.blockType() == 0)
{
flag = true;
}
if ((anchor & AnchorType.SolidBottom) == AnchorType.SolidBottom && !Main.tileNoAttach[(int)tileCache.type] && ((Main.tileSolid[(int)tileCache.type] && (!Main.tileSolidTop[(int)tileCache.type] || (tileCache.type == 19 && (tileCache.halfBrick() || tileCache.topSlope())))) || tileCache.topSlope() || tileCache.halfBrick()) && !tileCache.bottomSlope())
{
flag = true;
}
if (!flag && ((anchor & AnchorType.SolidWithTop) == AnchorType.SolidWithTop || (anchor & AnchorType.Table) == AnchorType.Table))
{
if (tileCache.type == 19)
{
int num = (int)tileCache.frameX / TileObjectData.PlatformFrameWidth();
if ((!tileCache.halfBrick() && num >= 0 && num <= 7) || (num >= 12 && num <= 16) || (num >= 25 && num <= 26))
{
flag = true;
}
}
else if (Main.tileSolid[(int)tileCache.type] && Main.tileSolidTop[(int)tileCache.type])
{
flag = true;
}
}
if (!flag && (anchor & AnchorType.Table) == AnchorType.Table && tileCache.type != 19 && Main.tileTable[(int)tileCache.type] && tileCache.blockType() == 0)
{
flag = true;
}
if (!flag && (anchor & AnchorType.SolidSide) == AnchorType.SolidSide && Main.tileSolid[(int)tileCache.type] && !Main.tileSolidTop[(int)tileCache.type])
{
switch (tileCache.blockType())
{
case 4:
case 5:
flag = true;
break;
}
}
}
else if (!flag && (anchor & AnchorType.EmptyTile) == AnchorType.EmptyTile)
{
flag = true;
}
return flag;
}
public static bool CanPlaceSink(int x, int y, ushort type, int style)
{
if (x < 5 || x > Main.maxTilesX - 5 || y < 5 || y > Main.maxTilesY - 5)
{
return false;
}
bool result = true;
x--;
y--;
for (int i = 0; i < 2; i++)
{
Tile tileSafely;
for (int j = 0; j < 2; j++)
{
tileSafely = Framing.GetTileSafely(x + i, y + j);
if (tileSafely.active())
{
result = false;
}
}
tileSafely = Framing.GetTileSafely(x + i, y + 2);
if (!tileSafely.nactive() || !WorldGen.SolidTile(tileSafely))
{
result = false;
}
}
return result;
}
public static void Place3x4(int x, int y, ushort type, int style)
{
if (x < 5 || x > Main.maxTilesX - 5 || y < 5 || y > Main.maxTilesY - 5)
{
return;
}
bool flag = true;
for (int i = x - 1; i < x + 2; i++)
{
for (int 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 = 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 = 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 = type;
}
}
}
public static void Place3x1(int x, int y, ushort type, int style = 0)
{
if (x < 5 || x > Main.maxTilesX - 5 || y < 5 || y > Main.maxTilesY - 5)
{
return;
}
bool flag = true;
for (int i = x - 1; i < x + 2; i++)
{
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 = type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameY = 0;
Main.tile[x, y].frameX = num + 18;
Main.tile[x, y].type = type;
Main.tile[x + 1, y].active(true);
Main.tile[x + 1, y].frameY = 0;
Main.tile[x + 1, y].frameX = num + 36;
Main.tile[x + 1, y].type = type;
}
}
public static void Place3x2(int x, int y, ushort type, int style = 0)
{
if (x < 5 || x > Main.maxTilesX - 5 || y < 5 || y > Main.maxTilesY - 5)
{
return;
}
bool flag = false;
bool flag2 = true;
if (type == 14 && style == 25)
{
flag = true;
}
int num = y - 1;
if (flag)
{
num = y;
}
for (int i = x - 1; i < x + 2; i++)
{
for (int j = num; j < y + 1; j++)
{
if (Main.tile[i, j] == null)
{
Main.tile[i, j] = new Tile();
}
if (Main.tile[i, j].active())
{
flag2 = false;
}
if (type == 215 && Main.tile[i, j].liquid > 0)
{
flag2 = false;
}
}
if (Main.tile[i, y + 1] == null)
{
Main.tile[i, y + 1] = new Tile();
}
if (type == 285 || type == 286 || type == 298 || type == 299 || type == 310 || (type >= 361 && type <= 364))
{
if (!WorldGen.SolidTile2(i, y + 1) && (!Main.tile[i, y + 1].nactive() || !Main.tileSolidTop[(int)Main.tile[i, y + 1].type] || Main.tile[i, y + 1].frameY != 0))
{
flag2 = false;
}
}
else if (!WorldGen.SolidTile2(i, y + 1))
{
flag2 = false;
}
}
if (type == 88)
{
int num2 = Chest.CreateChest(x - 1, y - 1, -1);
if (num2 == -1)
{
flag2 = false;
}
else if (Main.netMode == 1)
{
NetMessage.SendData(34, -1, -1, "", 2, (float)x, (float)y, (float)style, 0, 0, 0);
}
}
if (flag2)
{
short num3 = (short)(54 * style);
if (flag)
{
Main.tile[x - 1, y].active(true);
Main.tile[x - 1, y].frameY = 0;
Main.tile[x - 1, y].frameX = num3;
Main.tile[x - 1, y].type = type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameY = 0;
Main.tile[x, y].frameX = num3 + 18;
Main.tile[x, y].type = type;
Main.tile[x + 1, y].active(true);
Main.tile[x + 1, y].frameY = 0;
Main.tile[x + 1, y].frameX = num3 + 36;
Main.tile[x + 1, y].type = type;
return;
}
Main.tile[x - 1, y - 1].active(true);
Main.tile[x - 1, y - 1].frameY = 0;
Main.tile[x - 1, y - 1].frameX = num3;
Main.tile[x - 1, y - 1].type = type;
Main.tile[x, y - 1].active(true);
Main.tile[x, y - 1].frameY = 0;
Main.tile[x, y - 1].frameX = num3 + 18;
Main.tile[x, y - 1].type = type;
Main.tile[x + 1, y - 1].active(true);
Main.tile[x + 1, y - 1].frameY = 0;
Main.tile[x + 1, y - 1].frameX = num3 + 36;
Main.tile[x + 1, y - 1].type = type;
Main.tile[x - 1, y].active(true);
Main.tile[x - 1, y].frameY = 18;
Main.tile[x - 1, y].frameX = num3;
Main.tile[x - 1, y].type = type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameY = 18;
Main.tile[x, y].frameX = num3 + 18;
Main.tile[x, y].type = type;
Main.tile[x + 1, y].active(true);
Main.tile[x + 1, y].frameY = 18;
Main.tile[x + 1, y].frameX = num3 + 36;
Main.tile[x + 1, y].type = type;
}
}
public static void Place2x2Style(int x, int y, ushort type, int style = 0)
{
if (x < 5 || x > Main.maxTilesX - 5 || y < 5 || y > Main.maxTilesY - 5)
{
return;
}
short num = 0;
if (type == 254)
{
num = (short)(x % 12 / 2);
num *= 36;
}
bool flag = true;
for (int i = x - 1; i < x + 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 (!WorldGen.SolidTile(i, y + 1))
{
flag = false;
}
if (type == 254 && Main.tile[i, y + 1].type != 2 && Main.tile[i, y + 1].type != 109)
{
flag = false;
}
}
if (flag)
{
short num2 = (short)(36 * style);
Main.tile[x - 1, y - 1].active(true);
Main.tile[x - 1, y - 1].frameY = num;
Main.tile[x - 1, y - 1].frameX = num2;
Main.tile[x - 1, y - 1].type = type;
Main.tile[x, y - 1].active(true);
Main.tile[x, y - 1].frameY = num;
Main.tile[x, y - 1].frameX = num2 + 18;
Main.tile[x, y - 1].type = type;
Main.tile[x - 1, y].active(true);
Main.tile[x - 1, y].frameY = num + 18;
Main.tile[x - 1, y].frameX = num2;
Main.tile[x - 1, y].type = type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameY = num + 18;
Main.tile[x, y].frameX = num2 + 18;
Main.tile[x, y].type = type;
}
}
public static bool NearFriendlyWall(int x, int y)
{
try
{
if (x < 2 || x >= Main.maxTilesX - 2 || y < 2 || y >= Main.maxTilesY - 2)
{
bool result = true;
return result;
}
if (Main.tile[x, y].wall == 0 || Main.wallHouse[(int)Main.tile[x, y].wall])
{
bool result = true;
return result;
}
if (Main.tile[x - 1, y].wall == 0 || Main.wallHouse[(int)Main.tile[x - 1, y].wall])
{
bool result = true;
return result;
}
if (Main.tile[x + 1, y].wall == 0 || Main.wallHouse[(int)Main.tile[x + 1, y].wall])
{
bool result = true;
return result;
}
if (Main.tile[x, y - 1].wall == 0 || Main.wallHouse[(int)Main.tile[x, y - 1].wall])
{
bool result = true;
return result;
}
if (Main.tile[x, y + 1].wall == 0 || Main.wallHouse[(int)Main.tile[x, y + 1].wall])
{
bool result = true;
return result;
}
}
catch
{
}
return false;
}
public static void Check2x2Style(int i, int j, int type)
{
if (WorldGen.destroyObject)
{
return;
}
bool flag = false;
int k;
for (k = (int)(Main.tile[i, j].frameY / 18); k > 1; k -= 2)
{
}
int num = j - k;
int l = (int)(Main.tile[i, j].frameX / 18);
int num2 = 0;
while (l > 1)
{
l -= 2;
num2++;
}
l = i - l;
int num3 = num2 * 36;
for (int m = l; m < l + 2; m++)
{
for (int n = num; n < num + 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 - l) * 18 + num3)
{
flag = true;
}
}
if (!WorldGen.SolidTileAllowBottomSlope(m, num + 2))
{
flag = true;
}
}
if (flag)
{
int frameX = (int)Main.tile[i, j].frameX;
WorldGen.destroyObject = true;
for (int num4 = l; num4 < l + 2; num4++)
{
for (int num5 = num; num5 < num + 2; num5++)
{
if (Main.tile[num4, num5] == null)
{
Main.tile[num4, num5] = new Tile();
}
if ((int)Main.tile[num4, num5].type == type && Main.tile[num4, num5].active())
{
WorldGen.KillTile(num4, num5, false, false, false);
}
}
}
if (type == 254)
{
if (frameX >= 72)
{
if (frameX < 108)
{
if (WorldGen.genRand.Next(2) == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 1725, WorldGen.genRand.Next(1, 3), false, 0, false);
}
}
else if (frameX < 144)
{
Item.NewItem(i * 16, j * 16, 32, 32, 1725, WorldGen.genRand.Next(2, 6), false, 0, false);
}
else
{
Item.NewItem(i * 16, j * 16, 32, 32, 1725, WorldGen.genRand.Next(5, 11), false, 0, false);
if (Main.halloween && WorldGen.genRand.Next(200) == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 1799, 1, false, 0, false);
}
}
}
}
else if (type == 96)
{
if (num2 == 0)
{
Item.NewItem(i * 16, j * 16, 32, 32, 345, 1, false, 0, false);
}
if (num2 == 1)
{
Item.NewItem(i * 16, j * 16, 32, 32, 1791, 1, false, 0, false);
}
}
WorldGen.destroyObject = false;
for (int num6 = l - 1; num6 < l + 3; num6++)
{
for (int num7 = num - 1; num7 < num + 3; num7++)
{
WorldGen.TileFrame(num6, num7, false, false);
}
}
}
}
public static void PlacePumpkin(int x, int superY)
{
ushort type = 254;
int num = WorldGen.genRand.Next(6) * 36;
if (x < 5 || x > Main.maxTilesX - 5 || superY < 5 || superY > Main.maxTilesY - 5)
{
return;
}
bool flag = true;
for (int i = x - 1; i < x + 1; i++)
{
for (int j = superY - 1; j < superY + 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 != 3 && Main.tile[i, j].type != 73 && Main.tile[i, j].type != 113 && Main.tile[i, j].type != 110 && (Main.tile[i, j].type != 185 || Main.tile[i, j].frameY != 0))
{
flag = false;
}
if (Main.tile[i, j].liquid > 0)
{
flag = false;
}
}
if (!WorldGen.SolidTile(i, superY + 1) || (Main.tile[i, superY + 1].type != 2 && Main.tile[i, superY + 1].type != 109))
{
flag = false;
}
}
if (flag)
{
Main.tile[x - 1, superY - 1].active(true);
Main.tile[x - 1, superY - 1].frameY = (short)num;
Main.tile[x - 1, superY - 1].frameX = 0;
Main.tile[x - 1, superY - 1].type = type;
Main.tile[x, superY - 1].active(true);
Main.tile[x, superY - 1].frameY = (short)num;
Main.tile[x, superY - 1].frameX = 18;
Main.tile[x, superY - 1].type = type;
Main.tile[x - 1, superY].active(true);
Main.tile[x - 1, superY].frameY = (short)(num + 18);
Main.tile[x - 1, superY].frameX = 0;
Main.tile[x - 1, superY].type = type;
Main.tile[x, superY].active(true);
Main.tile[x, superY].frameY = (short)(num + 18);
Main.tile[x, superY].frameX = 18;
Main.tile[x, superY].type = type;
}
}
public static void GrowPumpkin(int i, int j, int type)
{
if (WorldGen.destroyObject)
{
return;
}
bool flag = false;
int k;
for (k = (int)(Main.tile[i, j].frameY / 18); k > 1; k -= 2)
{
}
int num = j - k;
int l = (int)(Main.tile[i, j].frameX / 18);
int num2 = 0;
while (l > 1)
{
l -= 2;
num2++;
}
l = i - l;
int num3 = num2 * 36;
if (num2 >= 4)
{
return;
}
for (int m = l; m < l + 2; m++)
{
for (int n = num; n < num + 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 - l) * 18 + num3)
{
flag = true;
}
}
if (!WorldGen.SolidTile(m, num + 2) || (Main.tile[m, num + 2].type != 2 && Main.tile[m, num + 2].type != 109))
{
flag = true;
}
}
if (!flag)
{
for (int num4 = l; num4 < l + 2; num4++)
{
for (int num5 = num; num5 < num + 2; num5++)
{
if (Main.tile[num4, num5] == null)
{
Main.tile[num4, num5] = new Tile();
}
if ((int)Main.tile[num4, num5].type == type && Main.tile[num4, num5].active())
{
Tile expr_1AD = Main.tile[num4, num5];
expr_1AD.frameX += 36;
}
}
}
}
if (Main.netMode == 2)
{
NetMessage.SendTileSquare(-1, l, num, 4);
}
}
public static void FixHearts()
{
for (int i = 0; i < Main.maxTilesX; i++)
{
for (int j = 0; j < Main.maxTilesY; j++)
{
Tile tile = Main.tile[i, j];
if (tile.active() && tile.type == 12 && tile.frameX == 0 && tile.frameY == 0)
{
WorldGen.FixHeart(i, j);
}
}
}
}
public static void DestroyHeart(int i, int j)
{
WorldGen.destroyObject = true;
for (int k = i; k < i + 2; k++)
{
for (int l = j; l < j + 2; l++)
{
if (k < Main.maxTilesX && l < Main.maxTilesY)
{
Tile tile = Main.tile[k, l];
if (tile.active() && tile.type == 12)
{
WorldGen.KillTile(k, l, false, false, false);
}
}
}
}
WorldGen.destroyObject = false;
}
public static void FixHeart(int i, int j)
{
if (i < 40 || i >= Main.maxTilesX - 40 || j < 40 || j >= Main.maxTilesY - 40)
{
WorldGen.DestroyHeart(i, j);
return;
}
Tile tile = Main.tile[i, j + 2];
Tile tile2 = Main.tile[i + 1, j + 2];
if (tile.active() && !Main.tileSolid[(int)tile.type] && Main.tileCut[(int)tile.type])
{
WorldGen.KillTile(i, j + 2, false, false, false);
}
if (tile2.active() && !Main.tileSolid[(int)tile2.type] && Main.tileCut[(int)tile2.type])
{
WorldGen.KillTile(i + 1, j + 2, false, false, false);
}
if (!tile.active())
{
if (!tile2.active())
{
WorldGen.DestroyHeart(i, j);
return;
}
if (Main.tileSolid[(int)tile2.type])
{
tile.type = tile2.type;
tile.active(true);
}
}
if (!tile2.active() && Main.tileSolid[(int)tile.type])
{
tile2.type = tile.type;
tile2.active(true);
}
if (!tile.nactive() || !Main.tileSolid[(int)tile.type] || !tile2.nactive() || !Main.tileSolid[(int)tile2.type])
{
WorldGen.DestroyHeart(i, j);
return;
}
if (tile.blockType() != 0)
{
tile.slope(0);
tile.halfBrick(false);
}
if (tile2.blockType() != 0)
{
tile2.slope(0);
tile2.halfBrick(false);
}
}
public static void FixChands()
{
for (int i = 5; i < Main.maxTilesX - 5; i++)
{
for (int j = 5; j < Main.maxTilesY - 5; j++)
{
if (Main.tile[i, j].active())
{
int type = (int)Main.tile[i, j].type;
if (Main.tile[i, j].active() && (type == 35 || type == 36 || type == 170 || type == 171 || type == 172))
{
WorldGen.FixChand(i, j);
}
}
}
}
}
public static void FixChand(int i, int j)
{
int num = 0;
int type = (int)Main.tile[i, j].type;
if (Main.tile[i, j].active())
{
if (type == 35)
{
num = 1;
}
if (type == 36)
{
num = 2;
}
if (type == 170)
{
num = 3;
}
if (type == 171)
{
num = 4;
}
if (type == 172)
{
num = 5;
}
}
if (num > 0)
{
int k;
for (k = (int)(Main.tile[i, j].frameX / 18); k >= 3; k -= 3)
{
}
if (k >= 3)
{
k -= 3;
}
k = i - k;
int num2 = j + (int)(Main.tile[i, j].frameY / 18 * -1);
for (int l = k; l < k + 3; l++)
{
for (int m = num2; m < num2 + 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)
{
Main.tile[l, m].type = 34;
Main.tile[l, m].frameY = (short)((int)Main.tile[l, m].frameY + num * 54);
}
}
}
}
}
public static void PlaceChand(int x, int y, ushort type, int style = 0)
{
bool flag = true;
int num = 0;
for (int i = x - 1; i < x + 2; i++)
{
for (int j = y; j < y + 3; j++)
{
if (Main.tile[i, j] == null)
{
Main.tile[i, j] = new Tile();
}
if (Main.tile[i, j].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 = 0;
int num3 = style * 18 * 3;
Main.tile[x - 1, y + num].active(true);
Main.tile[x - 1, y + num].frameY = (short)num3;
Main.tile[x - 1, y + num].frameX = (short)num2;
Main.tile[x - 1, y + num].type = type;
Main.tile[x, y + num].active(true);
Main.tile[x, y + num].frameY = (short)num3;
Main.tile[x, y + num].frameX = (short)(num2 + 18);
Main.tile[x, y + num].type = type;
Main.tile[x + 1, y + num].active(true);
Main.tile[x + 1, y + num].frameY = (short)num3;
Main.tile[x + 1, y + num].frameX = (short)(num2 + 36);
Main.tile[x + 1, y + num].type = type;
Main.tile[x - 1, y + 1 + num].active(true);
Main.tile[x - 1, y + 1 + num].frameY = (short)(num3 + 18);
Main.tile[x - 1, y + 1 + num].frameX = (short)num2;
Main.tile[x - 1, y + 1 + num].type = type;
Main.tile[x, y + 1 + num].active(true);
Main.tile[x, y + 1 + num].frameY = (short)(num3 + 18);
Main.tile[x, y + 1 + num].frameX = (short)(num2 + 18);
Main.tile[x, y + 1 + num].type = type;
Main.tile[x + 1, y + 1 + num].active(true);
Main.tile[x + 1, y + 1 + num].frameY = (short)(num3 + 18);
Main.tile[x + 1, y + 1 + num].frameX = (short)(num2 + 36);
Main.tile[x + 1, y + 1 + num].type = type;
Main.tile[x - 1, y + 2 + num].active(true);
Main.tile[x - 1, y + 2 + num].frameY = (short)(num3 + 36);
Main.tile[x - 1, y + 2 + num].frameX = (short)num2;
Main.tile[x - 1, y + 2 + num].type = type;
Main.tile[x, y + 2 + num].active(true);
Main.tile[x, y + 2 + num].frameY = (short)(num3 + 36);
Main.tile[x, y + 2 + num].frameX = (short)(num2 + 18);
Main.tile[x, y + 2 + num].type = type;
Main.tile[x + 1, y + 2 + num].active(true);
Main.tile[x + 1, y + 2 + num].frameY = (short)(num3 + 36);
Main.tile[x + 1, y + 2 + num].frameX = (short)(num2 + 36);
Main.tile[x + 1, y + 2 + num].type = type;
}
}
public static void CheckChand(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 l = (int)(Main.tile[i, j].frameY / 18);
int num4 = 0;
while (l >= 3)
{
num4++;
l -= 3;
}
int num5 = 54 * num4;
if (l >= 3)
{
l -= 3;
}
l = j - l;
for (int m = k; m < k + 3; 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() || (int)Main.tile[m, n].type != type || (int)Main.tile[m, n].frameX != (m - num2) * 18 + num3 || (int)Main.tile[m, n].frameY != (n - l) * 18 + num5)
{
flag = true;
}
}
}
if (Main.tile[k + 1, l - 1] == null)
{
Main.tile[k + 1, l - 1] = new Tile();
}
if (!Main.tile[k + 1, l - 1].nactive() || !Main.tileSolid[(int)Main.tile[k + 1, l - 1].type] || Main.tileSolidTop[(int)Main.tile[k + 1, l - 1].type])
{
flag = true;
}
if (flag)
{
WorldGen.destroyObject = true;
for (int num6 = k; num6 < k + 3; num6++)
{
for (int num7 = l; num7 < l + 3; num7++)
{
if ((int)Main.tile[num6, num7].type == type && Main.tile[num6, num7].active())
{
WorldGen.KillTile(num6, num7, false, false, false);
}
}
}
if (type == 34)
{
int type2;
if (num4 == 1)
{
type2 = 107;
}
else if (num4 == 2)
{
type2 = 108;
}
else if (num4 == 3)
{
type2 = 710;
}
else if (num4 == 4)
{
type2 = 711;
}
else if (num4 == 5)
{
type2 = 712;
}
else if (num4 == 6)
{
type2 = 1812;
}
else if (num4 >= 7 && num4 <= 17)
{
type2 = 2055 + num4 - 7;
}
else if (num4 >= 18 && num4 <= 21)
{
type2 = 2141 + num4 - 18;
}
else if (num4 == 22)
{
type2 = 2224;
}
else if (num4 == 23)
{
type2 = 2525;
}
else if (num4 == 24)
{
type2 = 2543;
}
else if (num4 == 25)
{
type2 = 2558;
}
else if (num4 == 26)
{
type2 = 2573;
}
else if (num4 == 27)
{
type2 = 2652;
}
else if (num4 == 28)
{
type2 = 2653;
}
else if (num4 == 29)
{
type2 = 2654;
}
else if (num4 == 30)
{
type2 = 2655;
}
else if (num4 == 31)
{
type2 = 2656;
}
else if (num4 == 32)
{
type2 = 2657;
}
else if (num4 == 33)
{
type2 = 2813;
}
else if (num4 == 34)
{
type2 = 3177;
}
else if (num4 == 35)
{
type2 = 3179;
}
else if (num4 == 36)
{
type2 = 3178;
}
else
{
type2 = 106;
}
Item.NewItem(i * 16, j * 16, 32, 32, type2, 1, false, 0, false);
}
WorldGen.destroyObject = false;
for (int num8 = k - 1; num8 < k + 4; num8++)
{
for (int num9 = l - 1; num9 < l + 4; num9++)
{
WorldGen.TileFrame(num8, num9, false, false);
}
}
}
}
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;
int num4 = (int)(Main.tile[i, j].frameY / 54);
int num5 = (int)(Main.tile[i, j].frameY % 54 / 18);
if (k >= 3)
{
k -= 3;
}
k = i - k;
int num6 = j - num5;
for (int l = k; l < k + 3; l++)
{
for (int m = num6; m < num6 + 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 - num6) * 18 + num4 * 54)
{
flag = true;
}
}
}
if (type == 106 || type == 212 || type == 219 || type == 220 || type == 228 || type == 231 || type == 243 || type == 247 || type == 283 || (type >= 300 && type <= 308) || type == 354 || type == 355 || type == 406 || type == 412)
{
for (int n = k; n < k + 3; n++)
{
if (Main.tile[n, num6 + 3] == null)
{
Main.tile[n, num6 + 3] = new Tile();
}
if (!WorldGen.SolidTileAllowBottomSlope(n, num6 + 3) && (!Main.tile[n, num6 + 3].active() || Main.tile[n, num6 + 3].type != 19))
{
flag = true;
break;
}
}
}
else
{
if (Main.tile[k + 1, num6 - 1] == null)
{
Main.tile[k + 1, num6 - 1] = new Tile();
}
if (!Main.tile[k + 1, num6 - 1].nactive() || !Main.tileSolid[(int)Main.tile[k + 1, num6 - 1].type] || Main.tileSolidTop[(int)Main.tile[k + 1, num6 - 1].type])
{
flag = true;
}
}
if (flag)
{
WorldGen.destroyObject = true;
for (int num7 = k; num7 < k + 3; num7++)
{
for (int num8 = num6; num8 < num6 + 3; num8++)
{
if ((int)Main.tile[num7, num8].type == type && Main.tile[num7, num8].active())
{
WorldGen.KillTile(num7, num8, false, false, false);
}
}
}
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 == 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 == 283)
{
Item.NewItem(i * 16, j * 16, 32, 32, 2172, 1, false, 0, false);
}
else if (type >= 300 && type <= 306)
{
Item.NewItem(i * 16, j * 16, 32, 32, 2192 + type - 300, 1, false, 0, false);
}
else if (type == 307)
{
Item.NewItem(i * 16, j * 16, 32, 32, 2203, 1, false, 0, false);
}
else if (type == 308)
{
Item.NewItem(i * 16, j * 16, 32, 32, 2204, 1, false, 0, false);
}
else if (type == 406)
{
Item.NewItem(i * 16, j * 16, 32, 32, 3365, 1, false, 0, false);
}
else if (type == 354)
{
Item.NewItem(i * 16, j * 16, 32, 32, 2999, 1, false, 0, false);
}
else if (type == 355)
{
Item.NewItem(i * 16, j * 16, 32, 32, 3000, 1, false, 0, false);
}
else if (type == 412)
{
Item.NewItem(i * 16, j * 16, 32, 32, 3549, 1, false, 0, false);
}
else if (type == 231)
{
int num9 = (i + 1) * 16 + 8;
int num10 = j * 16;
Gore.NewGore(new Vector2((float)num9, (float)num10), default(Vector2), 300, 1f);
Gore.NewGore(new Vector2((float)num9, (float)(num10 + 8)), default(Vector2), 301, 1f);
Gore.NewGore(new Vector2((float)num9, (float)(num10 + 16)), default(Vector2), 302, 1f);
float num11 = (float)(i * 16);
float num12 = (float)(j * 16);
float num13 = -1f;
int plr = 0;
for (int num14 = 0; num14 < 255; num14++)
{
if (Main.player[num14].active && !Main.player[num14].dead)
{
float num15 = Math.Abs(Main.player[num14].position.X - num11) + Math.Abs(Main.player[num14].position.Y - num12);
if (num15 < num13 || num13 == -1f)
{
plr = num14;
num13 = num15;
}
}
}
NPC.SpawnOnPlayer(plr, 222);
}
WorldGen.destroyObject = false;
for (int num16 = k - 1; num16 < k + 4; num16++)
{
for (int num17 = num6 - 1; num17 < num6 + 4; num17++)
{
WorldGen.TileFrame(num16, num17, false, false);
}
}
}
}
public static void Place3x3(int x, int y, ushort 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 || type == 283 || (type >= 300 && type <= 308) || type == 354 || type == 355)
{
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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = type;
}
}
public static void PlaceSunflower(int x, int y, ushort type = 27)
{
if ((double)y > Main.worldSurface - 1.0)
{
return;
}
bool flag = true;
for (int 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 = 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 (style >= 8 && style <= 11)
{
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, ushort 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 = 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] != null && Main.tile[num2, num].active() && Main.tile[num2, num].type == 80)
{
num++;
if (Main.tile[num2, num] == null)
{
return false;
}
if (!Main.tile[num2, num].active() || Main.tile[num2, num].type != 80)
{
if (Main.tile[num2 - 1, num] != null && Main.tile[num2 - 1, num].active() && Main.tile[num2 - 1, num].type == 80 && Main.tile[num2 - 1, num - 1] != null && Main.tile[num2 - 1, num - 1].active() && Main.tile[num2 - 1, num - 1].type == 80 && num2 >= i)
{
num2--;
}
if (Main.tile[num2 + 1, num] != null && Main.tile[num2 + 1, num].active() && Main.tile[num2 + 1, num].type == 80 && Main.tile[num2 + 1, num - 1] != null && 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;
}
for (int k = 0; k < 2; k++)
{
for (int l = 0; l < 2; l++)
{
Tile tile = Main.tile[num + k, num2 + l];
if (tile != null && (!tile.nactive() || (int)tile.type != type))
{
WorldGen.destroyObject = true;
break;
}
}
if (WorldGen.destroyObject)
{
break;
}
if (type == 12)
{
Tile tile = Main.tile[num + k, num2 + 2];
if (tile != null && (!tile.nactive() || !Main.tileSolid[(int)tile.type] || tile.blockType() != 0))
{
WorldGen.destroyObject = true;
break;
}
}
}
if (!WorldGen.destroyObject)
{
return;
}
for (int m = num; m < num + 2; m++)
{
for (int n = num2; n < num2 + 2; n++)
{
if ((int)Main.tile[m, n].type == type)
{
WorldGen.KillTile(m, n, 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(5);
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(100, 101);
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, 3062, 1, false, -1, false);
}
else if (num3 == 4)
{
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(100, 101);
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 num8 = 0; num8 < 255; num8++)
{
float num9 = Math.Abs(Main.player[num8].position.X - num5) + Math.Abs(Main.player[num8].position.Y - num6);
if (num9 < num7 || num7 == -1f)
{
plr = num8;
num7 = num9;
}
}
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, 0, 0);
}
}
AchievementsHelper.NotifyProgressionEvent(7);
}
}
if (flag)
{
Main.PlaySound(4, i * 16, j * 16, 1);
}
else
{
Main.PlaySound(13, i * 16, j * 16, 1);
}
WorldGen.destroyObject = false;
}
}
public static void CheckPalmTree(int i, int j)
{
int num = -1;
int num2 = -1;
int type = (int)Main.tile[i, j].type;
int frameX = (int)Main.tile[i, j].frameX;
int frameY = (int)Main.tile[i, j].frameY;
if (Main.tile[i, j - 1] != null && Main.tile[i, j - 1].active())
{
num = (int)Main.tile[i, j - 1].type;
}
if (Main.tile[i, j + 1] != null && Main.tile[i, j + 1].active())
{
num2 = (int)Main.tile[i, j + 1].type;
}
if (num2 == 53)
{
num2 = 53;
}
if (num2 == 234)
{
num2 = 53;
}
if (num2 == 116)
{
num2 = 53;
}
if (num2 == 112)
{
num2 = 53;
}
if (num2 != 53 && num2 != type)
{
WorldGen.KillTile(i, j, false, false, false);
}
if ((Main.tile[i, j].frameX == 66 || Main.tile[i, j].frameX == 220) && num2 != 53)
{
WorldGen.KillTile(i, j, false, false, false);
}
if (num != type && Main.tile[i, j].frameX <= 44)
{
Main.tile[i, j].frameX = (short)(WorldGen.genRand.Next(7, 10) * 22);
}
else if (num != type && Main.tile[i, j].frameX == 66)
{
Main.tile[i, j].frameX = 220;
}
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 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())
{
ushort 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())
{
ushort 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())
{
ushort 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())
{
ushort 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 conversionType, int size = 4)
{
for (int k = i - size; k <= i + size; k++)
{
for (int l = j - size; l <= j + size; l++)
{
if (WorldGen.InWorld(k, l, 1) && Math.Abs(k - i) + Math.Abs(l - j) < 6)
{
int type = (int)Main.tile[k, l].type;
int wall = (int)Main.tile[k, l].wall;
if (conversionType == 4)
{
if (type <= 419 && wall <= 225)
{
if (WallID.Sets.Conversion.Grass[wall] && wall != 81)
{
Main.tile[k, l].wall = 81;
WorldGen.SquareWallFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (WallID.Sets.Conversion.Stone[wall] && wall != 83)
{
Main.tile[k, l].wall = 83;
WorldGen.SquareWallFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (WallID.Sets.Conversion.HardenedSand[wall] && wall != 218)
{
Main.tile[k, l].wall = 218;
WorldGen.SquareWallFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (WallID.Sets.Conversion.Sandstone[wall] && wall != 221)
{
Main.tile[k, l].wall = 221;
WorldGen.SquareWallFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
if ((Main.tileMoss[type] || TileID.Sets.Conversion.Stone[type]) && type != 203)
{
Main.tile[k, l].type = 203;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (TileID.Sets.Conversion.Grass[type] && type != 199)
{
Main.tile[k, l].type = 199;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (TileID.Sets.Conversion.Ice[type] && type != 200)
{
Main.tile[k, l].type = 200;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (TileID.Sets.Conversion.Sand[type] && type != 234)
{
Main.tile[k, l].type = 234;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (TileID.Sets.Conversion.HardenedSand[type] && type != 399)
{
Main.tile[k, l].type = 399;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (TileID.Sets.Conversion.Sandstone[type] && type != 401)
{
Main.tile[k, l].type = 401;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (TileID.Sets.Conversion.Thorn[type] && type != 352)
{
Main.tile[k, l].type = 352;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
if (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);
}
}
}
else if (conversionType == 2)
{
if (type <= 419 && wall <= 225)
{
if (WallID.Sets.Conversion.Grass[wall] && wall != 70)
{
Main.tile[k, l].wall = 70;
WorldGen.SquareWallFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (WallID.Sets.Conversion.Stone[wall] && wall != 28)
{
Main.tile[k, l].wall = 28;
WorldGen.SquareWallFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (WallID.Sets.Conversion.HardenedSand[wall] && wall != 219)
{
Main.tile[k, l].wall = 219;
WorldGen.SquareWallFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (WallID.Sets.Conversion.Sandstone[wall] && wall != 222)
{
Main.tile[k, l].wall = 222;
WorldGen.SquareWallFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
if ((Main.tileMoss[type] || TileID.Sets.Conversion.Stone[type]) && type != 117)
{
Main.tile[k, l].type = 117;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (TileID.Sets.Conversion.Grass[type] && type != 109)
{
Main.tile[k, l].type = 109;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (TileID.Sets.Conversion.Ice[type] && type != 164)
{
Main.tile[k, l].type = 164;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (TileID.Sets.Conversion.Sand[type] && type != 116)
{
Main.tile[k, l].type = 116;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (TileID.Sets.Conversion.HardenedSand[type] && type != 402)
{
Main.tile[k, l].type = 402;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (TileID.Sets.Conversion.Sandstone[type] && type != 403)
{
Main.tile[k, l].type = 403;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (TileID.Sets.Conversion.Thorn[type])
{
WorldGen.KillTile(k, l, false, false, false);
if (Main.netMode == 1)
{
NetMessage.SendData(17, -1, -1, "", 0, (float)k, (float)l, 0f, 0, 0, 0);
}
}
if (type == 59 && (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 (conversionType == 1)
{
if (type <= 419 && wall <= 225)
{
if (WallID.Sets.Conversion.Grass[wall] && wall != 69)
{
Main.tile[k, l].wall = 69;
WorldGen.SquareWallFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (WallID.Sets.Conversion.Stone[wall] && wall != 3)
{
Main.tile[k, l].wall = 3;
WorldGen.SquareWallFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (WallID.Sets.Conversion.HardenedSand[wall] && wall != 217)
{
Main.tile[k, l].wall = 217;
WorldGen.SquareWallFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (WallID.Sets.Conversion.Sandstone[wall] && wall != 220)
{
Main.tile[k, l].wall = 220;
WorldGen.SquareWallFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
if ((Main.tileMoss[type] || TileID.Sets.Conversion.Stone[type]) && type != 25)
{
Main.tile[k, l].type = 25;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (TileID.Sets.Conversion.Grass[type] && type != 23)
{
Main.tile[k, l].type = 23;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (TileID.Sets.Conversion.Ice[type] && type != 163)
{
Main.tile[k, l].type = 163;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (TileID.Sets.Conversion.Sand[type] && type != 112)
{
Main.tile[k, l].type = 112;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (TileID.Sets.Conversion.HardenedSand[type] && type != 398)
{
Main.tile[k, l].type = 398;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (TileID.Sets.Conversion.Sandstone[type] && type != 400)
{
Main.tile[k, l].type = 400;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (TileID.Sets.Conversion.Thorn[type] && type != 32)
{
Main.tile[k, l].type = 32;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
if (type == 59 && (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 (conversionType == 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 (TileID.Sets.Conversion.Thorn[type])
{
WorldGen.KillTile(k, l, false, false, false);
if (Main.netMode == 1)
{
NetMessage.SendData(17, -1, -1, "", 0, (float)k, (float)l, 0f, 0, 0, 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 (WorldGen.genRand.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);
}
}
else if (WallID.Sets.Conversion.HardenedSand[wall] && wall != 216)
{
Main.tile[k, l].wall = 216;
WorldGen.SquareWallFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (WallID.Sets.Conversion.Sandstone[wall] && wall != 187)
{
Main.tile[k, l].wall = 187;
WorldGen.SquareWallFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
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 == 398 || Main.tile[k, l].type == 402 || Main.tile[k, l].type == 399)
{
Main.tile[k, l].type = 397;
WorldGen.SquareTileFrame(k, l, true);
NetMessage.SendTileSquare(-1, k, l, 1);
}
else if (Main.tile[k, l].type == 400 || Main.tile[k, l].type == 403 || Main.tile[k, l].type == 401)
{
Main.tile[k, l].type = 396;
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 || Main.tile[k, l].type == 352)
{
WorldGen.KillTile(k, l, false, false, false);
if (Main.netMode == 1)
{
NetMessage.SendData(17, -1, -1, "", 0, (float)k, (float)l, 0f, 0, 0, 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] == null)
{
return;
}
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;
if (Main.tile[i - 2, j] != null)
{
int type = (int)Main.tile[i - 2, j].type;
if (Main.tile[i - 1, j] != null)
{
int num4 = (int)Main.tile[i - 1, j].type;
if (Main.tile[i + 1, j] != null)
{
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())
{
ushort 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);
}
}
}
float num6 = 1f;
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);
num6 = 1.25f;
}
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);
num6 = 1.75f;
}
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);
num6 = 1.9f;
}
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);
num6 = 2.1f;
}
else if (num >= 16 && num <= 18)
{
num6 = 1.6f;
}
else if (num >= 19 && num <= 21)
{
num6 = 3.5f;
}
else if (num >= 22 && num <= 24)
{
num6 = 1.6f;
}
else if (num >= 25 && num <= 27)
{
num6 = 10f;
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 (Main.hardMode)
{
num6 = 4f;
}
}
else if (num >= 31 && num <= 33)
{
int num7 = WorldGen.genRand.Next(2, 5);
for (int num8 = 0; num8 < num7; num8++)
{
Gore.NewGore(new Vector2((float)(i * 16), (float)(j * 16)), default(Vector2), 698 + WorldGen.genRand.Next(6), 1f);
}
num6 = 2f;
}
num6 = (num6 * 2f + 1f) / 3f;
int maxValue = (int)(250f / ((num6 + 1f) / 2f));
if (Main.rand.Next(maxValue) == 0)
{
if (Main.netMode != 1)
{
Projectile.NewProjectile((float)(i * 16 + 16), (float)(j * 16 + 16), 0f, -12f, 518, 0, 0f, Main.myPlayer, 0f, 0f);
}
}
else if (WorldGen.genRand.Next(40) == 0 && Main.wallDungeon[(int)Main.tile[i, j].wall] && (double)j > Main.worldSurface)
{
Item.NewItem(i * 16, j * 16, 16, 16, 327, 1, false, 0, false);
}
else if (WorldGen.genRand.Next(45) == 0 || (Main.rand.Next(45) == 0 && Main.expertMode))
{
if ((double)j < Main.worldSurface)
{
int num9 = WorldGen.genRand.Next(10);
if (num9 == 0)
{
Item.NewItem(i * 16, j * 16, 16, 16, 292, 1, false, 0, false);
}
if (num9 == 1)
{
Item.NewItem(i * 16, j * 16, 16, 16, 298, 1, false, 0, false);
}
if (num9 == 2)
{
Item.NewItem(i * 16, j * 16, 16, 16, 299, 1, false, 0, false);
}
if (num9 == 3)
{
Item.NewItem(i * 16, j * 16, 16, 16, 290, 1, false, 0, false);
}
if (num9 == 4)
{
Item.NewItem(i * 16, j * 16, 16, 16, 2322, 1, false, 0, false);
}
if (num9 == 5)
{
Item.NewItem(i * 16, j * 16, 16, 16, 2324, 1, false, 0, false);
}
if (num9 == 6)
{
Item.NewItem(i * 16, j * 16, 16, 16, 2325, 1, false, 0, false);
}
if (num9 >= 7)
{
Item.NewItem(i * 16, j * 16, 16, 16, 2350, 1, false, 0, false);
}
}
else if ((double)j < Main.rockLayer)
{
int num10 = WorldGen.genRand.Next(11);
if (num10 == 0)
{
Item.NewItem(i * 16, j * 16, 16, 16, 289, 1, false, 0, false);
}
if (num10 == 1)
{
Item.NewItem(i * 16, j * 16, 16, 16, 298, 1, false, 0, false);
}
if (num10 == 2)
{
Item.NewItem(i * 16, j * 16, 16, 16, 299, 1, false, 0, false);
}
if (num10 == 3)
{
Item.NewItem(i * 16, j * 16, 16, 16, 290, 1, false, 0, false);
}
if (num10 == 4)
{
Item.NewItem(i * 16, j * 16, 16, 16, 303, 1, false, 0, false);
}
if (num10 == 5)
{
Item.NewItem(i * 16, j * 16, 16, 16, 291, 1, false, 0, false);
}
if (num10 == 6)
{
Item.NewItem(i * 16, j * 16, 16, 16, 304, 1, false, 0, false);
}
if (num10 == 7)
{
Item.NewItem(i * 16, j * 16, 16, 16, 2322, 1, false, 0, false);
}
if (num10 == 8)
{
Item.NewItem(i * 16, j * 16, 16, 16, 2329, 1, false, 0, false);
}
if (num10 >= 9)
{
Item.NewItem(i * 16, j * 16, 16, 16, 2350, 1, false, 0, false);
}
}
else if (j < Main.maxTilesY - 200)
{
int num11 = WorldGen.genRand.Next(15);
if (num11 == 0)
{
Item.NewItem(i * 16, j * 16, 16, 16, 296, 1, false, 0, false);
}
if (num11 == 1)
{
Item.NewItem(i * 16, j * 16, 16, 16, 295, 1, false, 0, false);
}
if (num11 == 2)
{
Item.NewItem(i * 16, j * 16, 16, 16, 299, 1, false, 0, false);
}
if (num11 == 3)
{
Item.NewItem(i * 16, j * 16, 16, 16, 302, 1, false, 0, false);
}
if (num11 == 4)
{
Item.NewItem(i * 16, j * 16, 16, 16, 303, 1, false, 0, false);
}
if (num11 == 5)
{
Item.NewItem(i * 16, j * 16, 16, 16, 305, 1, false, 0, false);
}
if (num11 == 6)
{
Item.NewItem(i * 16, j * 16, 16, 16, 301, 1, false, 0, false);
}
if (num11 == 7)
{
Item.NewItem(i * 16, j * 16, 16, 16, 302, 1, false, 0, false);
}
if (num11 == 8)
{
Item.NewItem(i * 16, j * 16, 16, 16, 297, 1, false, 0, false);
}
if (num11 == 9)
{
Item.NewItem(i * 16, j * 16, 16, 16, 304, 1, false, 0, false);
}
if (num11 == 10)
{
Item.NewItem(i * 16, j * 16, 16, 16, 2322, 1, false, 0, false);
}
if (num11 == 11)
{
Item.NewItem(i * 16, j * 16, 16, 16, 2323, 1, false, 0, false);
}
if (num11 == 12)
{
Item.NewItem(i * 16, j * 16, 16, 16, 2327, 1, false, 0, false);
}
if (num11 == 13)
{
Item.NewItem(i * 16, j * 16, 16, 16, 2329, 1, false, 0, false);
}
if (num11 == 14)
{
Item.NewItem(i * 16, j * 16, 16, 16, 2350, 1, false, 0, false);
}
}
else
{
int num12 = WorldGen.genRand.Next(14);
if (num12 == 0)
{
Item.NewItem(i * 16, j * 16, 16, 16, 296, 1, false, 0, false);
}
if (num12 == 1)
{
Item.NewItem(i * 16, j * 16, 16, 16, 295, 1, false, 0, false);
}
if (num12 == 2)
{
Item.NewItem(i * 16, j * 16, 16, 16, 293, 1, false, 0, false);
}
if (num12 == 3)
{
Item.NewItem(i * 16, j * 16, 16, 16, 288, 1, false, 0, false);
}
if (num12 == 4)
{
Item.NewItem(i * 16, j * 16, 16, 16, 294, 1, false, 0, false);
}
if (num12 == 5)
{
Item.NewItem(i * 16, j * 16, 16, 16, 297, 1, false, 0, false);
}
if (num12 == 6)
{
Item.NewItem(i * 16, j * 16, 16, 16, 304, 1, false, 0, false);
}
if (num12 == 7)
{
Item.NewItem(i * 16, j * 16, 16, 16, 305, 1, false, 0, false);
}
if (num12 == 8)
{
Item.NewItem(i * 16, j * 16, 16, 16, 301, 1, false, 0, false);
}
if (num12 == 9)
{
Item.NewItem(i * 16, j * 16, 16, 16, 302, 1, false, 0, false);
}
if (num12 == 10)
{
Item.NewItem(i * 16, j * 16, 16, 16, 288, 1, false, 0, false);
}
if (num12 == 11)
{
Item.NewItem(i * 16, j * 16, 16, 16, 300, 1, false, 0, false);
}
if (num12 == 12)
{
Item.NewItem(i * 16, j * 16, 16, 16, 2323, 1, false, 0, false);
}
if (num12 == 13)
{
Item.NewItem(i * 16, j * 16, 16, 16, 2326, 1, false, 0, false);
}
}
}
else if (Main.netMode == 2 && Main.rand.Next(30) == 0)
{
Item.NewItem(i * 16, j * 16, 16, 16, 2997, 1, false, 0, false);
}
else
{
int num13 = Main.rand.Next(8);
if (Main.expertMode)
{
num13--;
}
if (num13 == 0 && Main.player[(int)Player.FindClosest(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16)].statLife < Main.player[(int)Player.FindClosest(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16)].statLifeMax2)
{
Item.NewItem(i * 16, j * 16, 16, 16, 58, 1, false, 0, false);
if (Main.rand.Next(2) == 0)
{
Item.NewItem(i * 16, j * 16, 16, 16, 58, 1, false, 0, false);
}
if (Main.expertMode)
{
if (Main.rand.Next(2) == 0)
{
Item.NewItem(i * 16, j * 16, 16, 16, 58, 1, false, 0, false);
}
if (Main.rand.Next(2) == 0)
{
Item.NewItem(i * 16, j * 16, 16, 16, 58, 1, false, 0, false);
}
}
}
else if (num13 == 1 && Main.player[(int)Player.FindClosest(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16)].statMana < Main.player[(int)Player.FindClosest(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16)].statManaMax2)
{
Item.NewItem(i * 16, j * 16, 16, 16, 184, 1, false, 0, false);
}
else if (num13 == 2)
{
int num14 = Main.rand.Next(2, 6);
if (Main.expertMode)
{
num14 += Main.rand.Next(1, 7);
}
if (Main.tile[i, j].liquid > 0)
{
Item.NewItem(i * 16, j * 16, 16, 16, 282, num14, false, 0, false);
}
else
{
Item.NewItem(i * 16, j * 16, 16, 16, 8, num14, false, 0, false);
}
}
else if (num13 == 3)
{
int stack = Main.rand.Next(10, 21);
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, stack, false, 0, false);
}
else if (num13 == 4)
{
int type3 = 28;
if (j > Main.maxTilesY - 200 || Main.hardMode)
{
type3 = 188;
}
int num15 = 1;
if (Main.expertMode && Main.rand.Next(3) != 0)
{
num15++;
}
Item.NewItem(i * 16, j * 16, 16, 16, type3, num15, false, 0, false);
}
else if (num13 == 5 && (double)j > Main.rockLayer)
{
int num16 = Main.rand.Next(4) + 1;
if (Main.expertMode)
{
num16 += Main.rand.Next(4);
}
Item.NewItem(i * 16, j * 16, 16, 16, 166, num16, false, 0, false);
}
else if ((num13 == 5 || num13 == 6) && j < Main.maxTilesY - 200 && !Main.hardMode)
{
int stack2 = Main.rand.Next(20, 41);
Item.NewItem(i * 16, j * 16, 16, 16, 965, stack2, false, 0, false);
}
else
{
float num17 = (float)(200 + WorldGen.genRand.Next(-100, 101));
if ((double)j < Main.worldSurface)
{
num17 *= 0.5f;
}
else if ((double)j < Main.rockLayer)
{
num17 *= 0.75f;
}
else if (j > Main.maxTilesY - 250)
{
num17 *= 1.25f;
}
num17 *= 1f + (float)Main.rand.Next(-20, 21) * 0.01f;
if (Main.rand.Next(4) == 0)
{
num17 *= 1f + (float)Main.rand.Next(5, 11) * 0.01f;
}
if (Main.rand.Next(8) == 0)
{
num17 *= 1f + (float)Main.rand.Next(10, 21) * 0.01f;
}
if (Main.rand.Next(12) == 0)
{
num17 *= 1f + (float)Main.rand.Next(20, 41) * 0.01f;
}
if (Main.rand.Next(16) == 0)
{
num17 *= 1f + (float)Main.rand.Next(40, 81) * 0.01f;
}
if (Main.rand.Next(20) == 0)
{
num17 *= 1f + (float)Main.rand.Next(50, 101) * 0.01f;
}
if (Main.expertMode)
{
num17 *= 2.5f;
}
if (Main.expertMode && Main.rand.Next(2) == 0)
{
num17 *= 1.25f;
}
if (Main.expertMode && Main.rand.Next(3) == 0)
{
num17 *= 1.5f;
}
if (Main.expertMode && Main.rand.Next(4) == 0)
{
num17 *= 1.75f;
}
num17 *= num6;
if (NPC.downedBoss1)
{
num17 *= 1.1f;
}
if (NPC.downedBoss2)
{
num17 *= 1.1f;
}
if (NPC.downedBoss3)
{
num17 *= 1.1f;
}
if (NPC.downedMechBoss1)
{
num17 *= 1.1f;
}
if (NPC.downedMechBoss2)
{
num17 *= 1.1f;
}
if (NPC.downedMechBoss3)
{
num17 *= 1.1f;
}
if (NPC.downedPlantBoss)
{
num17 *= 1.1f;
}
if (NPC.downedQueenBee)
{
num17 *= 1.1f;
}
if (NPC.downedGolemBoss)
{
num17 *= 1.1f;
}
if (NPC.downedPirates)
{
num17 *= 1.1f;
}
if (NPC.downedGoblins)
{
num17 *= 1.1f;
}
if (NPC.downedFrost)
{
num17 *= 1.1f;
}
while ((int)num17 > 0)
{
if (num17 > 1000000f)
{
int num18 = (int)(num17 / 1000000f);
if (num18 > 50 && Main.rand.Next(2) == 0)
{
num18 /= Main.rand.Next(3) + 1;
}
if (Main.rand.Next(2) == 0)
{
num18 /= Main.rand.Next(3) + 1;
}
num17 -= (float)(1000000 * num18);
Item.NewItem(i * 16, j * 16, 16, 16, 74, num18, false, 0, false);
}
else if (num17 > 10000f)
{
int num19 = (int)(num17 / 10000f);
if (num19 > 50 && Main.rand.Next(2) == 0)
{
num19 /= Main.rand.Next(3) + 1;
}
if (Main.rand.Next(2) == 0)
{
num19 /= Main.rand.Next(3) + 1;
}
num17 -= (float)(10000 * num19);
Item.NewItem(i * 16, j * 16, 16, 16, 73, num19, false, 0, false);
}
else if (num17 > 100f)
{
int num20 = (int)(num17 / 100f);
if (num20 > 50 && Main.rand.Next(2) == 0)
{
num20 /= Main.rand.Next(3) + 1;
}
if (Main.rand.Next(2) == 0)
{
num20 /= Main.rand.Next(3) + 1;
}
num17 -= (float)(100 * num20);
Item.NewItem(i * 16, j * 16, 16, 16, 72, num20, false, 0, false);
}
else
{
int num21 = (int)num17;
if (num21 > 50 && Main.rand.Next(2) == 0)
{
num21 /= Main.rand.Next(3) + 1;
}
if (Main.rand.Next(2) == 0)
{
num21 /= Main.rand.Next(4) + 1;
}
if (num21 < 1)
{
num21 = 1;
}
num17 -= (float)num21;
Item.NewItem(i * 16, j * 16, 16, 16, 71, num21, false, 0, false);
}
}
}
}
WorldGen.destroyObject = false;
}
}
public static int PlaceChest(int x, int y, ushort type = 21, bool notNearOtherChests = false, int style = 0)
{
int num = -1;
TileObject toBePlaced;
if (TileObject.CanPlace(x, y, (int)type, style, 1, out toBePlaced, false))
{
bool flag = true;
if (notNearOtherChests && Chest.NearOtherChests(x - 1, y - 1))
{
flag = false;
}
if (flag)
{
TileObject.Place(toBePlaced);
num = Chest.CreateChest(toBePlaced.xCoord, toBePlaced.yCoord, -1);
}
}
else
{
num = -1;
}
if (num != -1 && Main.netMode == 1)
{
NetMessage.SendData(34, -1, -1, "", 0, (float)x, (float)y, (float)style, 0, 0, 0);
}
return num;
}
public static void PlaceChestDirect(int x, int y, ushort type, int style, int id)
{
Chest.CreateChest(x, y - 1, id);
for (int i = 0; i <= 1; i++)
{
for (int j = -1; j <= 0; j++)
{
if (Main.tile[x + i, y + j] == null)
{
Main.tile[x + i, y + j] = new Tile();
}
}
}
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 = 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 = 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 = 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 = type;
Main.tile[x + 1, y].halfBrick(false);
}
public static void PlaceDresserDirect(int x, int y, ushort type, int style, int id)
{
Chest.CreateChest(x - 1, y - 1, id);
for (int i = -1; i <= 1; i++)
{
for (int j = -1; j <= 0; j++)
{
if (Main.tile[x + i, y + j] == null)
{
Main.tile[x + i, y + j] = new Tile();
}
}
}
short num = (short)(style * 54);
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 = type;
Main.tile[x, y - 1].active(true);
Main.tile[x, y - 1].frameY = 0;
Main.tile[x, y - 1].frameX = num + 18;
Main.tile[x, y - 1].type = type;
Main.tile[x + 1, y - 1].active(true);
Main.tile[x + 1, y - 1].frameY = 0;
Main.tile[x + 1, y - 1].frameX = num + 36;
Main.tile[x + 1, y - 1].type = 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 = type;
Main.tile[x, y].active(true);
Main.tile[x, y].frameY = 18;
Main.tile[x, y].frameX = num + 18;
Main.tile[x, y].type = type;
Main.tile[x + 1, y].active(true);
Main.tile[x + 1, y].frameY = 18;
Main.tile[x + 1, y].frameX = num + 36;
Main.tile[x + 1, y].type = type;
}
public static void CheckChest(int i, int j, int type)
{
if (WorldGen.destroyObject)
{
return;
}
bool flag = false;
int 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 num2 = (int)(Main.tile[i, j].frameX / 36);
int type2 = Chest.chestItemSpawn[num2];
WorldGen.destroyObject = true;
for (int num3 = k; num3 < k + 2; num3++)
{
for (int num4 = num; num4 < num + 3; num4++)
{
if ((int)Main.tile[num3, num4].type == type && Main.tile[num3, num4].active())
{
Chest.DestroyChest(num3, num4);
WorldGen.KillTile(num3, num4, false, false, false);
}
}
}
Item.NewItem(i * 16, j * 16, 32, 32, type2, 1, false, 0, false);
WorldGen.destroyObject = false;
if (Main.tile[k, num + 2].type == 138 || Main.tile[k + 1, num + 2].type == 138)
{
WorldGen.SquareTileFrame(k, num + 2, true);
}
}
}
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 >= 419)
{
return false;
}
bool result = false;
if (i >= 0 && j >= 0 && i < Main.maxTilesX && j < Main.maxTilesY)
{
Tile tile = Main.tile[i, j];
if (tile == null)
{
tile = new Tile();
Main.tile[i, j] = tile;
}
if (forced || Collision.EmptyTile(i, j, false) || !Main.tileSolid[type] || (type == 23 && tile.type == 0 && tile.active()) || (type == 199 && tile.type == 0 && tile.active()) || (type == 2 && tile.type == 0 && tile.active()) || (type == 109 && tile.type == 0 && tile.active()) || (type == 60 && tile.type == 59 && tile.active()) || (type == 70 && tile.type == 59 && tile.active()))
{
if (type == 23 && (tile.type != 0 || !tile.active()))
{
return false;
}
if (type == 2 && (tile.type != 0 || !tile.active()))
{
return false;
}
if (type == 109 && (tile.type != 0 || !tile.active()))
{
return false;
}
if (type == 60 && (tile.type != 59 || !tile.active()))
{
return false;
}
if (type == 81)
{
if (Main.tile[i, j - 1] == null)
{
Main.tile[i, j - 1] = new Tile();
}
if (Main.tile[i, j + 1] == null)
{
Main.tile[i, j + 1] = new Tile();
}
if (Main.tile[i, j - 1].active())
{
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 ((type == 373 || type == 375 || type == 374) && (Main.tile[i, j - 1] == null || Main.tile[i, j - 1].bottomSlope()))
{
return false;
}
if (tile.liquid > 0)
{
if (type == 4)
{
if (style != 8 && style != 11)
{
return false;
}
}
else if (type == 3 || type == 20 || type == 24 || type == 27 || type == 32 || type == 51 || type == 69 || type == 72 || type == 201 || type == 352)
{
return false;
}
}
if (type != 2 || Main.tile[i, j].type != 0)
{
tile.halfBrick(false);
tile.frameY = 0;
tile.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 || Main.tile[i, j + 1].type == 380) && type == 3) || (Main.tile[i, j + 1].type == 109 && type == 110)))
{
if (type == 24 && WorldGen.genRand.Next(13) == 0)
{
tile.active(true);
tile.type = 32;
WorldGen.SquareTileFrame(i, j, true);
}
if (type == 201 && WorldGen.genRand.Next(13) == 0)
{
tile.active(true);
tile.type = 352;
WorldGen.SquareTileFrame(i, j, true);
}
else if (Main.tile[i, j + 1].type == 78 || Main.tile[i, j + 1].type == 380)
{
tile.active(true);
tile.type = (ushort)type;
tile.frameX = (short)(WorldGen.genRand.Next(2) * 18 + 108);
}
else if ((tile.wall == 0 || tile.wall == 106 || tile.wall == 107 || (tile.wall >= 63 && tile.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)
{
tile.active(true);
tile.type = (ushort)type;
tile.frameX = (short)(WorldGen.genRand.Next(2) * 18 + 162);
}
else if (WorldGen.genRand.Next(50) == 0 || ((type == 24 || type == 201) && WorldGen.genRand.Next(40) == 0))
{
tile.active(true);
tile.type = (ushort)type;
if (type == 201)
{
tile.frameX = 270;
}
else
{
tile.frameX = 144;
}
}
else if (WorldGen.genRand.Next(35) == 0)
{
tile.active(true);
tile.type = (ushort)type;
tile.frameX = (short)(WorldGen.genRand.Next(2) * 18 + 108);
}
else
{
tile.active(true);
tile.type = (ushort)type;
tile.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)
{
tile.active(true);
tile.type = 69;
WorldGen.SquareTileFrame(i, j, true);
}
else if (WorldGen.genRand.Next(60) == 0 && (double)j > Main.rockLayer)
{
tile.active(true);
tile.type = (ushort)type;
tile.frameX = 144;
}
else if (WorldGen.genRand.Next(300) == 0 && (double)j > Main.rockLayer)
{
tile.active(true);
tile.type = (ushort)type;
tile.frameX = 162;
}
else if (WorldGen.genRand.Next(15) == 0)
{
tile.active(true);
tile.type = (ushort)type;
tile.frameX = (short)(WorldGen.genRand.Next(2) * 18 + 108);
}
else
{
tile.active(true);
tile.type = (ushort)type;
tile.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)
{
tile.active(true);
tile.type = (ushort)type;
tile.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))
{
tile.active(true);
tile.type = (ushort)type;
tile.frameX = (short)(WorldGen.genRand.Next(18) * 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))
{
tile.active(true);
tile.type = (ushort)type;
tile.frameX = (short)(style * 18);
tile.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)))
{
tile.active(true);
tile.type = (ushort)type;
tile.frameX = (short)(style * 18);
tile.frameY = (short)(WorldGen.genRand.Next(3) * 18);
WorldGen.SquareTileFrame(i, j, true);
}
}
else if (type == 171)
{
WorldGen.PlaceXmasTree(i, j, 171);
}
else if (type == 254)
{
WorldGen.Place2x2Style(i, j, (ushort)type, style);
}
else if (type == 335)
{
WorldGen.Place2x2(i, j, (ushort)type, 0);
}
else if (type == 319 || type == 132 || type == 138 || type == 142 || type == 143 || type == 282 || (type >= 288 && type <= 295) || (type >= 316 && type <= 318))
{
WorldGen.Place2x2(i, j, (ushort)type, 0);
}
else if (type == 411)
{
WorldGen.Place2x2(i, j, (ushort)type, 0);
}
else if (type == 137)
{
tile.active(true);
tile.type = (ushort)type;
tile.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() && !TileID.Sets.NotReallySolid[(int)Main.tile[i - 1, j].type] && 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() && !TileID.Sets.NotReallySolid[(int)Main.tile[i + 1, j].type] && 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) || tile.wall > 0)
{
tile.active(true);
tile.type = (ushort)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 (tile.wall > 0 || (Main.tile[i - 1, j].active() && (Main.tile[i - 1, j].slope() == 0 || Main.tile[i - 1, j].slope() % 2 != 1) && (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.tile[i + 1, j].slope() % 2 != 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].type == 19) && !Main.tile[i, j + 1].halfBrick() && Main.tile[i, j + 1].slope() == 0))
{
tile.active(true);
tile.type = (ushort)type;
tile.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 >= 275 && type <= 281) || type == 296 || type == 297 || type == 309 || type == 358 || type == 359 || type == 413 || type == 414)
{
WorldGen.Place6x3(i, j, (ushort)type, -1, 0);
}
else if (type == 237 || type == 244 || type == 285 || type == 286 || type == 298 || type == 299 || type == 310 || type == 339 || (type >= 361 && type <= 364))
{
WorldGen.Place3x2(i, j, (ushort)type, 0);
}
else if (type == 128)
{
WorldGen.PlaceMan(i, j, style);
WorldGen.SquareTileFrame(i, j, true);
}
else if (type == 269)
{
WorldGen.PlaceWoman(i, j, style);
WorldGen.SquareTileFrame(i, j, true);
}
else if (type == 334)
{
int style2 = 0;
if (style == -1)
{
style2 = 1;
}
WorldGen.Place3x3Wall(i, j, 334, style2);
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))
{
tile.frameX = (short)(18 * style);
tile.active(true);
tile.type = (ushort)type;
WorldGen.SquareTileFrame(i, j, true);
}
}
else if (type == 139 || type == 35)
{
WorldGen.PlaceMB(i, j, (ushort)type, style);
WorldGen.SquareTileFrame(i, j, true);
}
else if (type == 165)
{
WorldGen.PlaceTight(i, j, (ushort)type, false);
WorldGen.SquareTileFrame(i, j, true);
}
else if (type == 235)
{
WorldGen.Place3x1(i, j, (ushort)type, 0);
WorldGen.SquareTileFrame(i, j, true);
}
else if (type == 240)
{
WorldGen.Place3x3Wall(i, j, (ushort)type, style);
}
else if (type == 245)
{
WorldGen.Place2x3Wall(i, j, (ushort)type, style);
}
else if (type == 246)
{
WorldGen.Place3x2Wall(i, j, (ushort)type, style);
}
else if (type == 241)
{
WorldGen.Place4x3Wall(i, j, (ushort)type, style);
}
else if (type == 242)
{
WorldGen.Place6x4Wall(i, j, (ushort)type, style);
}
else if (type == 34)
{
WorldGen.PlaceChand(i, j, (ushort)type, style);
WorldGen.SquareTileFrame(i, j, true);
}
else if (type == 106 || type == 212 || type == 219 || type == 220 || type == 228 || type == 231 || type == 243 || type == 247 || type == 283 || (type >= 300 && type <= 308) || type == 354 || type == 355)
{
WorldGen.Place3x3(i, j, (ushort)type, style);
WorldGen.SquareTileFrame(i, j, true);
}
else if (type == 13 || type == 33 || type == 49 || type == 50 || type == 78 || type == 174 || type == 372)
{
WorldGen.PlaceOnTable1x1(i, j, type, style);
WorldGen.SquareTileFrame(i, j, 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 || type == 377)
{
WorldGen.Place3x2(i, j, (ushort)type, style);
WorldGen.SquareTileFrame(i, j, true);
}
else if (type == 236)
{
WorldGen.PlaceJunglePlant(i, j, (ushort)type, WorldGen.genRand.Next(3), 0);
WorldGen.SquareTileFrame(i, j, true);
}
else if (type == 238)
{
WorldGen.PlaceJunglePlant(i, j, (ushort)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();
}
int type2 = (int)Main.tile[i, j + 1].type;
if (Main.tile[i, j + 1].active() && (type2 == 2 || type2 == 109 || type2 == 147 || type2 == 60 || type2 == 23 || type2 == 199 || type2 == 53 || type2 == 234 || type2 == 116 || type2 == 112))
{
WorldGen.Place1x2(i, j, (ushort)type, style);
WorldGen.SquareTileFrame(i, j, true);
}
}
else if (type == 15 || type == 216 || type == 338 || type == 390)
{
if (Main.tile[i, j - 1] == null)
{
Main.tile[i, j - 1] = new Tile();
}
if (Main.tile[i, j] == null)
{
Main.tile[i, j] = new Tile();
}
WorldGen.Place1x2(i, j, (ushort)type, style);
WorldGen.SquareTileFrame(i, j, 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, (ushort)type, style);
WorldGen.SquareTileFrame(i, j, true);
}
else if (type == 92 || type == 93)
{
WorldGen.Place1xX(i, j, (ushort)type, style);
WorldGen.SquareTileFrame(i, j, true);
}
else if (type == 104 || type == 105 || type == 320 || type == 337 || type == 349 || type == 356 || type == 378)
{
WorldGen.Place2xX(i, j, (ushort)type, style);
WorldGen.SquareTileFrame(i, j, true);
}
else if (type == 17 || type == 77 || type == 133)
{
WorldGen.Place3x2(i, j, (ushort)type, style);
WorldGen.SquareTileFrame(i, j, true);
}
else if (type == 207)
{
WorldGen.Place2xX(i, j, (ushort)type, style);
WorldGen.SquareTileFrame(i, j, true);
}
else if (type == 410)
{
WorldGen.Place2xX(i, j, (ushort)type, style);
WorldGen.SquareTileFrame(i, j, true);
}
else if (type == 21)
{
WorldGen.PlaceChest(i, j, (ushort)type, false, style);
WorldGen.SquareTileFrame(i, j, true);
}
else if (type == 91)
{
WorldGen.PlaceBanner(i, j, (ushort)type, style);
WorldGen.SquareTileFrame(i, j, true);
}
else if (type == 135 || type == 141 || type == 144 || type == 210 || type == 239 || type == 36 || type == 324)
{
WorldGen.Place1x1(i, j, type, style);
WorldGen.SquareTileFrame(i, j, true);
}
else if (type == 101 || type == 102)
{
WorldGen.Place3x4(i, j, (ushort)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, WorldGen.genRand.Next(4));
WorldGen.SquareTileFrame(i, j, true);
}
else if (type == 42 || type == 270 || type == 271)
{
WorldGen.Place1x2Top(i, j, (ushort)type, style);
WorldGen.SquareTileFrame(i, j, true);
}
else if (type == 55)
{
WorldGen.PlaceSign(i, j, (ushort)type, style);
}
else if (type == 85 || type == 376)
{
WorldGen.Place2x2Horizontal(i, j, (ushort)type, style);
}
else if (Main.tileAlch[type])
{
WorldGen.PlaceAlch(i, j, style);
}
else if (type == 94 || type == 95 || type == 97 || type == 98 || type == 99 || type == 100 || type == 125 || type == 126 || type == 173 || type == 287 || type == 172)
{
WorldGen.Place2x2(i, j, (ushort)type, style);
}
else if (type == 96)
{
WorldGen.Place2x2Style(i, j, (ushort)type, style);
}
else if (type == 79 || type == 90)
{
int direction = 1;
if (plr > -1)
{
direction = Main.player[plr].direction;
}
WorldGen.Place4x2(i, j, (ushort)type, direction, style);
}
else if (type == 209)
{
WorldGen.PlaceCannon(i, j, (ushort)type, style);
}
else if (type == 81)
{
tile.frameX = (short)(26 * WorldGen.genRand.Next(6));
tile.active(true);
tile.type = (ushort)type;
}
else if (type == 19)
{
tile.frameY = (short)(18 * style);
tile.active(true);
tile.type = (ushort)type;
}
else if (type == 380)
{
tile.frameY = (short)(18 * style);
tile.active(true);
tile.type = (ushort)type;
}
else if (type == 314)
{
Minecart.PlaceTrack(tile, style);
}
else
{
tile.active(true);
tile.type = (ushort)type;
}
if (tile.active())
{
if (tile.type == 54)
{
WorldGen.SquareWallFrame(i, j, true);
}
WorldGen.SquareTileFrame(i, j, true);
result = true;
if (!mute)
{
if (type == 127)
{
Main.PlaySound(2, i * 16, j * 16, 30);
}
else if (type == 314)
{
Main.PlaySound(2, i * 16, j * 16, 52);
}
else if (type >= 330 && type <= 333)
{
Main.PlaySound(18, i * 16, j * 16, 1);
}
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 KillWall(int i, int j, bool fail = false)
{
if (i >= 0 && j >= 0 && i < Main.maxTilesX && j < Main.maxTilesY)
{
Tile tile = Main.tile[i, j];
if (tile == null)
{
tile = new Tile();
Main.tile[i, j] = tile;
}
if (tile.wall > 0)
{
if (Main.wallDungeon[(int)tile.wall] && !NPC.downedBoss3)
{
fail = true;
}
if (tile.wall == 87 && !NPC.downedGolemBoss)
{
fail = true;
}
if (tile.wall == 21 || tile.wall == 186 || tile.wall == 136 || tile.wall == 137 || tile.wall == 168 || tile.wall == 169 || tile.wall == 172)
{
Main.PlaySound(13, i * 16, j * 16, 1);
}
else if (tile.wall >= 63 && tile.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 num2 = 0;
if (tile.wall == 148)
{
num2 = -1;
}
if (tile.wall == 1 || tile.wall == 5 || tile.wall == 6 || tile.wall == 7 || tile.wall == 107 || tile.wall == 8 || tile.wall == 9 || (tile.wall >= 48 && tile.wall <= 53) || (tile.wall >= 54 && tile.wall <= 58) || tile.wall == 185)
{
num2 = 1;
}
if (tile.wall >= 94 && tile.wall <= 105)
{
num2 = 1;
}
if (tile.wall == 3)
{
if (WorldGen.genRand.Next(2) == 0)
{
num2 = 14;
}
else
{
num2 = 1;
}
}
if (tile.wall == 35)
{
num2 = 37;
}
if (tile.wall == 4 || tile.wall == 106)
{
num2 = 7;
}
if (tile.wall == 12)
{
num2 = 9;
}
if (tile.wall == 10)
{
num2 = 10;
}
if (tile.wall == 11)
{
num2 = 11;
}
if (tile.wall == 21)
{
num2 = 13;
}
if (tile.wall == 34)
{
num2 = 32;
}
if (tile.wall == 145)
{
num2 = 8;
}
if (tile.wall == 22 || tile.wall == 28)
{
num2 = 51;
}
if (tile.wall == 23)
{
num2 = 38;
}
if (tile.wall == 24)
{
num2 = 36;
}
if (tile.wall == 25)
{
num2 = 48;
}
if (tile.wall == 179 || tile.wall == 178 || tile.wall == 183)
{
num2 = 236;
}
if (tile.wall == 181 || tile.wall == 180 || tile.wall == 184)
{
num2 = 240;
}
if (tile.wall == 113)
{
num2 = 189;
}
if (tile.wall == 114)
{
num2 = 190;
}
if (tile.wall == 115)
{
num2 = 191;
}
if (tile.wall == 177 || tile.wall == 13)
{
num2 = 25;
}
if (tile.wall == 186)
{
num2 = WorldGen.genRand.Next(68, 71);
}
if (tile.wall == 142)
{
num2 = 210;
}
if (tile.wall == 143)
{
num2 = 210;
}
if (tile.wall == 224)
{
num2 = 265;
}
if (tile.wall == 173)
{
num2 = 128;
}
if (tile.wall == 174)
{
num2 = 117;
}
if (tile.wall == 175)
{
num2 = 42;
}
if (tile.wall == 176)
{
num2 = 226;
}
if (tile.wall == 182)
{
if (WorldGen.genRand.Next(2) == 0)
{
num2 = 6;
}
else
{
num2 = 23;
}
}
if (tile.wall >= 153 && tile.wall <= 166)
{
switch (tile.wall)
{
case 153:
case 157:
num2 = 138;
break;
case 154:
case 158:
num2 = 86;
break;
case 155:
case 159:
num2 = 91;
break;
case 156:
case 160:
num2 = 89;
break;
case 161:
case 164:
num2 = 90;
break;
case 162:
case 165:
num2 = 88;
break;
case 163:
case 166:
num2 = 87;
break;
}
}
if (tile.wall == 26 || tile.wall == 30)
{
num2 = 49;
}
if (tile.wall == 29 || tile.wall == 32)
{
num2 = 50;
}
if (tile.wall == 31)
{
num2 = 51;
}
if (tile.wall == 14 || tile.wall == 20)
{
num2 = 109;
}
if (tile.wall >= 88 && tile.wall <= 93)
{
num2 = (int)(86 + tile.wall - 88);
if (tile.wall == 93)
{
num2 = WorldGen.genRand.Next(88, 94);
}
}
if (tile.wall == 33)
{
num2 = 14;
}
if (tile.wall == 41)
{
num2 = 77;
}
if (tile.wall == 42)
{
num2 = 78;
}
if (tile.wall == 43)
{
num2 = 78;
}
if (tile.wall == 43)
{
num2 = 78;
}
if (tile.wall == 36)
{
num2 = 26;
}
if (tile.wall == 37)
{
num2 = 32;
}
if (tile.wall == 38)
{
num2 = 2;
}
if (tile.wall == 39)
{
num2 = 1;
}
if (tile.wall == 40)
{
num2 = 51;
}
if (tile.wall == 45)
{
num2 = 81;
}
if (tile.wall == 46)
{
num2 = 83;
}
if (tile.wall == 47)
{
num2 = 84;
}
if (tile.wall == 85)
{
num2 = 126;
}
if (tile.wall == 59)
{
num2 = 0;
}
if (tile.wall == 61)
{
num2 = 0;
}
if (tile.wall == 62)
{
num2 = 0;
}
if (tile.wall == 63)
{
num2 = 3;
}
if (tile.wall == 65)
{
num2 = 3;
}
if (tile.wall == 66)
{
num2 = 3;
}
if (tile.wall == 68)
{
num2 = 3;
}
if (tile.wall == 64)
{
num2 = 40;
}
if (tile.wall == 67)
{
num2 = 40;
}
if (tile.wall == 84)
{
num2 = 80;
}
if (tile.wall == 71)
{
num2 = 80;
}
if (tile.wall == 60)
{
num2 = 3;
}
if (tile.wall == 71)
{
num2 = 80;
}
if (tile.wall == 167)
{
num2 = 81;
}
if (tile.wall == 147)
{
num2 = 51;
}
if (tile.wall == 146)
{
num2 = 9;
}
if (tile.wall == 109)
{
num2 = 144;
}
if (tile.wall == 110)
{
num2 = 145;
}
if (tile.wall == 111)
{
num2 = 146;
}
if (tile.wall == 86 || tile.wall == 108)
{
num2 = 147;
}
if (tile.wall == 87)
{
num2 = 148;
}
if (tile.wall == 83)
{
num2 = 117;
if (WorldGen.genRand.Next(2) == 0)
{
num2 = 1;
}
}
if (tile.wall == 81)
{
num2 = 123;
}
if (tile.wall == 136)
{
num2 = 13;
}
if (tile.wall == 137)
{
num2 = 13;
}
if (tile.wall == 168)
{
num2 = 13;
}
if (tile.wall == 169)
{
num2 = 13;
}
if (tile.wall == 172)
{
num2 = 13;
}
if (tile.wall == 72)
{
num2 = 40;
}
if (tile.wall == 73)
{
num2 = 16;
}
if (tile.wall == 74 || tile.wall == 80)
{
num2 = 26;
}
if (tile.wall == 144)
{
if (WorldGen.genRand.Next(2) == 0)
{
num2 = 10;
}
else
{
num2 = 118;
}
}
if (tile.wall == 75)
{
num2 = 26;
}
if (tile.wall == 76)
{
num2 = 4;
}
if (tile.wall == 77 || tile.wall == 81)
{
num2 = 5;
}
if (tile.wall == 78)
{
num2 = 7;
}
if (tile.wall == 79)
{
num2 = 37;
}
if (tile.wall == 82)
{
num2 = 36;
}
if (tile.wall == 69)
{
if (WorldGen.genRand.Next(2) == 0)
{
num2 = 14;
}
else
{
num2 = 17;
}
}
if (tile.wall == 70)
{
num2 = 47;
}
if (tile.wall == 27)
{
if (WorldGen.genRand.Next(2) == 0)
{
num2 = 7;
}
else
{
num2 = 1;
}
}
if (tile.wall == 138)
{
num2 = 77;
}
if (tile.wall == 139)
{
num2 = 78;
}
if (tile.wall == 140)
{
num2 = 79;
}
if (tile.wall == 141)
{
num2 = 126;
}
if (tile.wall == 149 || tile.wall == 150)
{
num2 = 214;
}
if (tile.wall == 151 || tile.wall == 152)
{
num2 = 215;
}
if (tile.wall == 44)
{
int num3 = 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[num3].noGravity = true;
}
else if ((tile.wall < 133 || tile.wall > 135) && (tile.wall < 116 || tile.wall > 125) && (tile.wall < 126 || tile.wall > 132))
{
if (tile.wall == 76)
{
Dust.NewDust(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16, num2, 0f, 0f, 75, new Color(0, 80, 255, 100), 0.75f);
}
else if (num2 >= 0)
{
Dust.NewDust(new Vector2((float)(i * 16), (float)(j * 16)), 16, 16, num2, 0f, 0f, 0, default(Color), 1f);
}
}
}
if (fail)
{
WorldGen.SquareWallFrame(i, j, true);
return;
}
int num4 = 0;
if (tile.wall == 168)
{
num4 = 2696;
}
if (tile.wall == 169)
{
num4 = 2698;
}
if (tile.wall == 142)
{
num4 = 2263;
}
if (tile.wall == 143)
{
num4 = 2264;
}
if (tile.wall == 144)
{
num4 = 2271;
}
if (tile.wall == 149)
{
num4 = 2505;
}
if (tile.wall == 150)
{
num4 = 2507;
}
if (tile.wall == 151)
{
num4 = 2506;
}
if (tile.wall == 152)
{
num4 = 2508;
}
if (tile.wall == 1)
{
num4 = 26;
}
if (tile.wall == 4)
{
num4 = 93;
}
if (tile.wall == 5)
{
num4 = 130;
}
if (tile.wall == 6)
{
num4 = 132;
}
if (tile.wall == 7)
{
num4 = 135;
}
if (tile.wall == 8)
{
num4 = 138;
}
if (tile.wall == 9)
{
num4 = 140;
}
if (tile.wall == 10)
{
num4 = 142;
}
if (tile.wall == 11)
{
num4 = 144;
}
if (tile.wall == 12)
{
num4 = 146;
}
if (tile.wall == 14)
{
num4 = 330;
}
if (tile.wall == 224)
{
num4 = 3472;
}
if (tile.wall == 177)
{
num4 = 3067;
}
if (tile.wall == 167)
{
num4 = 2691;
}
if (tile.wall == 60)
{
num4 = 3584;
}
if (tile.wall == 179)
{
num4 = 3083;
}
if (tile.wall == 183)
{
num4 = 3082;
}
if (tile.wall == 181)
{
num4 = 3089;
}
if (tile.wall == 184)
{
num4 = 3088;
}
if (tile.wall == 186)
{
num4 = 3238;
}
if (tile.wall >= 153 && tile.wall <= 166)
{
switch (tile.wall)
{
case 153:
num4 = 2677;
break;
case 154:
num4 = 2679;
break;
case 155:
num4 = 2681;
break;
case 156:
num4 = 2683;
break;
case 157:
num4 = 2678;
break;
case 158:
num4 = 2680;
break;
case 159:
num4 = 2682;
break;
case 160:
num4 = 2684;
break;
case 161:
num4 = 2686;
break;
case 162:
num4 = 2688;
break;
case 163:
num4 = 2690;
break;
case 164:
num4 = 2685;
break;
case 165:
num4 = 2687;
break;
case 166:
num4 = 2689;
break;
}
}
if (tile.wall == 136)
{
num4 = 2169;
}
if (tile.wall == 137)
{
num4 = 2170;
}
if (tile.wall == 172)
{
num4 = 2788;
}
if (tile.wall == 145)
{
num4 = 2333;
}
if (tile.wall == 16)
{
num4 = 30;
}
if (tile.wall == 17)
{
num4 = 135;
}
if (tile.wall == 18)
{
num4 = 138;
}
if (tile.wall == 19)
{
num4 = 140;
}
if (tile.wall == 20)
{
num4 = 330;
}
if (tile.wall == 21)
{
num4 = 392;
}
if (tile.wall == 86 || tile.wall == 108)
{
num4 = 1126;
}
if (tile.wall == 173)
{
num4 = 2789;
}
if (tile.wall == 174)
{
num4 = 2790;
}
if (tile.wall == 175)
{
num4 = 2791;
}
if (tile.wall == 176)
{
num4 = 2861;
}
if (tile.wall == 182)
{
num4 = 3101;
}
if (tile.wall == 133)
{
num4 = 2158;
}
if (tile.wall == 134)
{
num4 = 2159;
}
if (tile.wall == 135)
{
num4 = 2160;
}
else if (tile.wall == 113)
{
num4 = 1726;
}
else if (tile.wall == 114)
{
num4 = 1728;
}
else if (tile.wall == 115)
{
num4 = 1730;
}
else if (tile.wall == 146)
{
num4 = 2432;
}
else if (tile.wall == 147)
{
num4 = 2433;
}
else if (tile.wall == 148)
{
num4 = 2434;
}
if (tile.wall >= 116 && tile.wall <= 125)
{
num4 = 1948 + (int)tile.wall - 116;
}
if (tile.wall >= 126 && tile.wall <= 132)
{
num4 = 2008 + (int)tile.wall - 126;
}
if (tile.wall == 22)
{
num4 = 417;
}
if (tile.wall == 23)
{
num4 = 418;
}
if (tile.wall == 24)
{
num4 = 419;
}
if (tile.wall == 25)
{
num4 = 420;
}
if (tile.wall == 26)
{
num4 = 421;
}
if (tile.wall == 29)
{
num4 = 587;
}
if (tile.wall == 30)
{
num4 = 592;
}
if (tile.wall == 31)
{
num4 = 595;
}
if (tile.wall == 32)
{
num4 = 605;
}
if (tile.wall == 33)
{
num4 = 606;
}
if (tile.wall == 34)
{
num4 = 608;
}
if (tile.wall == 35)
{
num4 = 610;
}
if (tile.wall == 36)
{
num4 = 615;
}
if (tile.wall == 37)
{
num4 = 616;
}
if (tile.wall == 38)
{
num4 = 617;
}
if (tile.wall == 39)
{
num4 = 618;
}
if (tile.wall == 41)
{
num4 = 622;
}
if (tile.wall == 42)
{
num4 = 623;
}
if (tile.wall == 43)
{
num4 = 624;
}
if (tile.wall == 44)
{
num4 = 663;
}
if (tile.wall == 45)
{
num4 = 720;
}
if (tile.wall == 46)
{
num4 = 721;
}
if (tile.wall == 47)
{
num4 = 722;
}
if (tile.wall == 66)
{
num4 = 745;
}
if (tile.wall == 67)
{
num4 = 746;
}
if (tile.wall == 68)
{
num4 = 747;
}
if (tile.wall == 84)
{
num4 = 884;
}
if (tile.wall == 72)
{
num4 = 750;
}
if (tile.wall == 73)
{
num4 = 752;
}
if (tile.wall == 74)
{
num4 = 764;
}
if (tile.wall == 85)
{
num4 = 927;
}
if (tile.wall == 75)
{
num4 = 768;
}
if (tile.wall == 76)
{
num4 = 769;
}
if (tile.wall == 77)
{
num4 = 770;
}
if (tile.wall == 82)
{
num4 = 825;
}
if (tile.wall == 27)
{
num4 = 479;
}
if (tile.wall == 106)
{
num4 = 1447;
}
if (tile.wall == 107)
{
num4 = 1448;
}
if (tile.wall == 109)
{
num4 = 1590;
}
if (tile.wall == 110)
{
num4 = 1592;
}
if (tile.wall == 111)
{
num4 = 1594;
}
if (tile.wall == 78)
{
num4 = 1723;
}
if (tile.wall == 87 || tile.wall == 112)
{
num4 = 1102;
}
if (tile.wall == 94 || tile.wall == 100)
{
num4 = 1378;
}
if (tile.wall == 95 || tile.wall == 101)
{
num4 = 1379;
}
if (tile.wall == 96 || tile.wall == 102)
{
num4 = 1380;
}
if (tile.wall == 97 || tile.wall == 103)
{
num4 = 1381;
}
if (tile.wall == 98 || tile.wall == 104)
{
num4 = 1382;
}
if (tile.wall == 99 || tile.wall == 105)
{
num4 = 1383;
}
if (tile.wall >= 88 && tile.wall <= 93)
{
num4 = 1267 + (int)tile.wall - 88;
}
if (tile.wall >= 138 && tile.wall <= 141)
{
num4 = 2210 + (int)tile.wall - 138;
}
if (num4 > 0)
{
Item.NewItem(i * 16, j * 16, 16, 16, num4, 1, false, 0, false);
}
tile.wall = 0;
tile.wallColor(0);
WorldGen.SquareWallFrame(i, j, true);
if (tile.type >= 0 && tile.type < 419 && TileID.Sets.FramesOnKillWall[(int)tile.type])
{
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 LaunchRocketSmall(int x, int y)
{
if (Main.tile[x, y].frameX == 18)
{
x--;
}
if (Main.tile[x, y].frameY == 18)
{
y--;
}
Vector2 vector = new Vector2((float)(x * 16 + 16), (float)(y * 16));
int type = 415 + Main.rand.Next(4);
int damage = 0;
int num = 0;
Projectile.NewProjectile(vector.X, vector.Y + 2f, 0f, -8f, type, damage, (float)num, Main.myPlayer, 0f, 0f);
}
public static bool CanKillTile(int i, int j)
{
bool flag;
return WorldGen.CanKillTile(i, j, out flag);
}
public static bool CanKillTile(int i, int j, out bool blockDamaged)
{
blockDamaged = false;
if (i < 0 || j < 0 || i >= Main.maxTilesX || j >= Main.maxTilesY)
{
return false;
}
Tile tile = Main.tile[i, j];
Tile tile2 = null;
if (tile == null)
{
return false;
}
if (!tile.active())
{
return false;
}
if (j >= 1)
{
tile2 = Main.tile[i, j - 1];
}
if (tile2 != null && tile2.active())
{
int type = (int)tile2.type;
int num = type;
if (num <= 26)
{
if (num != 5)
{
if (num != 21 && num != 26)
{
goto IL_12B;
}
}
else
{
if ((int)tile.type != type && (tile2.frameX != 66 || tile2.frameY < 0 || tile2.frameY > 44) && (tile2.frameX != 88 || tile2.frameY < 66 || tile2.frameY > 110) && tile2.frameY < 198)
{
return false;
}
goto IL_12B;
}
}
else if (num != 72 && num != 88)
{
if (num != 323)
{
goto IL_12B;
}
if ((int)tile.type != type && (tile2.frameX == 66 || tile2.frameX == 220))
{
return false;
}
goto IL_12B;
}
if ((int)tile.type != type)
{
return false;
}
}
IL_12B:
ushort type2 = tile.type;
if (type2 <= 21)
{
if (type2 != 10)
{
if (type2 == 21)
{
if (!Chest.CanDestroyChest(i - (int)(tile.frameX / 18 % 2), j - (int)(tile.frameY / 18)))
{
return false;
}
}
}
else if (tile.type == 10 && tile.frameY >= 594 && tile.frameY <= 646)
{
blockDamaged = true;
return false;
}
}
else if (type2 != 88)
{
if (type2 != 138)
{
if (type2 == 235)
{
int num2 = i - (int)(tile.frameX % 54 / 18);
for (int k = 0; k < 3; k++)
{
if (Main.tile[num2 + k, j - 1].active() && Main.tile[num2 + k, j - 1].type == 21)
{
blockDamaged = true;
return false;
}
}
}
}
else if (WorldGen.CheckBoulderChest(i, j))
{
blockDamaged = true;
return false;
}
}
else if (!Chest.CanDestroyChest(i - (int)(tile.frameX / 18 % 3), j - (int)(tile.frameY / 18)))
{
return false;
}
return true;
}
public static void KillTile(int i, int j, bool fail = false, bool effectOnly = false, bool noItem = false)
{
if (i >= 0 && j >= 0 && i < Main.maxTilesX && j < Main.maxTilesY)
{
Tile tile = Main.tile[i, j];
if (tile == null)
{
tile = new Tile();
Main.tile[i, j] = tile;
}
if (tile.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 && tile.type != 5) || (Main.tile[i, j - 1].type == 323 && tile.type != 323) || (Main.tile[i, j - 1].type == 21 && tile.type != 21) || (Main.tile[i, j - 1].type == 323 && tile.type != 323) || (Main.tile[i, j - 1].type == 88 && tile.type != 88) || (Main.tile[i, j - 1].type == 26 && tile.type != 26) || (Main.tile[i, j - 1].type == 72 && tile.type != 72)))
{
if (Main.tile[i, j - 1].type == 5)
{
if ((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;
}
}
else if (Main.tile[i, j - 1].type != 323 || Main.tile[i, j - 1].frameX == 66 || Main.tile[i, j - 1].frameX == 220)
{
return;
}
}
if (tile.type == 10 && tile.frameY >= 594 && tile.frameY <= 646)
{
fail = true;
}
if (tile.type == 138)
{
fail = WorldGen.CheckBoulderChest(i, j);
}
if (tile.type == 235)
{
int frameX = (int)tile.frameX;
int num = i - frameX % 54 / 18;
for (int k = 0; k < 3; k++)
{
if (Main.tile[num + k, j - 1].active() && Main.tile[num + k, j - 1].type == 21)
{
fail = true;
break;
}
}
}
if (!effectOnly && !WorldGen.stopDrops)
{
if (tile.type == 127)
{
Main.PlaySound(2, i * 16, j * 16, 27);
}
else if (tile.type == 147 || tile.type == 224)
{
Main.PlaySound(2, i * 16, j * 16, WorldGen.genRand.Next(48, 50));
}
else if (tile.type == 161 || tile.type == 163 || tile.type == 164 || tile.type == 200)
{
Main.PlaySound(2, i * 16, j * 16, 50);
}
else if (tile.type == 3 || tile.type == 110)
{
Main.PlaySound(6, i * 16, j * 16, 1);
if (tile.frameX == 144)
{
Item.NewItem(i * 16, j * 16, 16, 16, 5, 1, false, 0, false);
}
}
else if (tile.type == 254)
{
Main.PlaySound(6, i * 16, j * 16, 1);
}
else if (tile.type == 24)
{
Main.PlaySound(6, i * 16, j * 16, 1);
if (tile.frameX == 144)
{
Item.NewItem(i * 16, j * 16, 16, 16, 60, 1, false, 0, false);
}
}
else if (Main.tileAlch[(int)tile.type] || tile.type == 384 || tile.type == 227 || tile.type == 32 || tile.type == 51 || tile.type == 52 || tile.type == 61 || tile.type == 62 || tile.type == 69 || tile.type == 71 || tile.type == 73 || tile.type == 74 || tile.type == 113 || tile.type == 115 || tile.type == 184 || tile.type == 192 || tile.type == 205 || tile.type == 233 || tile.type == 352 || tile.type == 382)
{
Main.PlaySound(6, i * 16, j * 16, 1);
}
else if (tile.type == 201)
{
Main.PlaySound(6, i * 16, j * 16, 1);
if (tile.frameX == 270)
{
Item.NewItem(i * 16, j * 16, 16, 16, 2887, 1, false, 0, false);
}
}
else if (tile.type == 1 || tile.type == 6 || tile.type == 7 || tile.type == 8 || tile.type == 9 || tile.type == 22 || tile.type == 140 || tile.type == 25 || tile.type == 37 || tile.type == 38 || tile.type == 39 || tile.type == 41 || tile.type == 43 || tile.type == 44 || tile.type == 45 || tile.type == 46 || tile.type == 47 || tile.type == 48 || tile.type == 56 || tile.type == 58 || tile.type == 63 || tile.type == 64 || tile.type == 65 || tile.type == 66 || tile.type == 67 || tile.type == 68 || tile.type == 75 || tile.type == 76 || tile.type == 107 || tile.type == 108 || tile.type == 111 || tile.type == 117 || tile.type == 118 || tile.type == 119 || tile.type == 120 || tile.type == 121 || tile.type == 122 || tile.type == 150 || tile.type == 151 || tile.type == 152 || tile.type == 153 || tile.type == 154 || tile.type == 155 || tile.type == 156 || tile.type == 160 || tile.type == 161 || tile.type == 166 || tile.type == 167 || tile.type == 168 || tile.type == 169 || tile.type == 175 || tile.type == 176 || tile.type == 177 || tile.type == 203 || tile.type == 202 || tile.type == 204 || tile.type == 206 || tile.type == 211 || tile.type == 221 || tile.type == 222 || tile.type == 223 || tile.type == 226 || tile.type == 248 || tile.type == 249 || tile.type == 250 || tile.type == 272 || tile.type == 273 || tile.type == 274 || tile.type == 284 || tile.type == 325 || tile.type == 346 || tile.type == 347 || tile.type == 348 || tile.type == 350 || tile.type == 367 || tile.type == 357 || tile.type == 368 || tile.type == 369 || tile.type == 370 || tile.type == 407)
{
Main.PlaySound(21, i * 16, j * 16, 1);
}
else if (tile.type == 231 || tile.type == 195)
{
Main.PlaySound(4, i * 16, j * 16, 1);
}
else if (tile.type == 26 && tile.frameX >= 54)
{
Main.PlaySound(4, i * 16, j * 16, 1);
}
else if (tile.type == 314)
{
Main.PlaySound(2, i * 16, j * 16, 52);
}
else if (tile.type >= 330 && tile.type <= 333)
{
Main.PlaySound(18, i * 16, j * 16, 1);
}
else if (tile.type != 138)
{
Main.PlaySound(0, i * 16, j * 16, 1);
}
if ((tile.type == 162 || tile.type == 385 || tile.type == 129 || (tile.type == 165 && tile.frameX < 54)) && !fail)
{
Main.PlaySound(2, i * 16, j * 16, 27);
}
}
if (tile.type == 128 || tile.type == 269)
{
int num2 = i;
int l = (int)tile.frameX;
int m;
for (m = (int)tile.frameX; m >= 100; m -= 100)
{
}
while (m >= 36)
{
m -= 36;
}
if (m == 18)
{
l = (int)Main.tile[i - 1, j].frameX;
num2--;
}
if (l >= 100)
{
int num3 = 0;
while (l >= 100)
{
l -= 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 (l = (int)Main.tile[num2, j].frameX; l >= 100; l -= 100)
{
}
Main.tile[num2, j].frameX = (short)l;
}
}
if (tile.type == 334)
{
int num5 = i;
int n = (int)tile.frameX;
int num6 = (int)tile.frameX;
int num7 = 0;
while (num6 >= 5000)
{
num6 -= 5000;
num7++;
}
if (num7 != 0)
{
num6 = (num7 - 1) * 18;
}
num6 %= 54;
if (num6 == 18)
{
n = (int)Main.tile[i - 1, j].frameX;
num5--;
}
if (num6 == 36)
{
n = (int)Main.tile[i - 2, j].frameX;
num5 -= 2;
}
if (n >= 5000)
{
int num8 = n % 5000;
num8 -= 100;
int num9 = (int)Main.tile[num5 + 1, j].frameX;
if (num9 >= 25000)
{
num9 -= 25000;
}
else
{
num9 -= 10000;
}
if (Main.netMode != 1)
{
Item item = new Item();
item.netDefaults(num8);
item.Prefix(num9);
int num10 = Item.NewItem(i * 16, j * 16, 16, 16, num8, 1, true, 0, false);
item.position = Main.item[num10].position;
Main.item[num10] = item;
NetMessage.SendData(21, -1, -1, "", num10, 0f, 0f, 0f, 0, 0, 0);
}
n = (int)Main.tile[num5, j].frameX;
int num11 = 0;
while (n >= 5000)
{
n -= 5000;
num11++;
}
if (num11 != 0)
{
n = (num11 - 1) * 18;
}
Main.tile[num5, j].frameX = (short)n;
Main.tile[num5 + 1, j].frameX = (short)(n + 18);
}
}
if (tile.type == 395)
{
int num12 = TEItemFrame.Find(i - (int)(tile.frameX % 36 / 18), j - (int)(tile.frameY % 36 / 18));
if (num12 != -1 && ((TEItemFrame)TileEntity.ByID[num12]).item.stack > 0)
{
((TEItemFrame)TileEntity.ByID[num12]).DropItem();
if (Main.netMode != 2)
{
Main.blockMouse = true;
}
return;
}
}
int num13 = 10;
if (tile.type == 231)
{
num13 = 6;
}
if (fail)
{
num13 = 3;
}
if (tile.type == 138)
{
num13 = 0;
}
if (tile.type == 373)
{
num13 = 0;
}
if (tile.type == 374)
{
num13 = 0;
}
if (tile.type == 375)
{
num13 = 0;
}
if (tile.type >= 300 && tile.type <= 308)
{
num13 = 0;
}
if (tile.type == 125)
{
num13 = 0;
}
if (tile.type == 287)
{
num13 = 0;
}
if (tile.type == 354)
{
num13 = 0;
}
if (tile.type == 355)
{
num13 = 0;
}
if (tile.type == 376)
{
num13 = 0;
}
int num14 = 0;
while (num14 < num13)
{
int num15 = 0;
if (tile.type == 216)
{
num15 = -1;
}
if (tile.type == 335)
{
num15 = -1;
}
if (tile.type == 338)
{
num15 = -1;
}
if (tile.type == 0)
{
num15 = 0;
}
if (tile.type == 192)
{
num15 = 3;
}
if (tile.type == 208)
{
num15 = 126;
}
else if (tile.type == 408 || tile.type == 409)
{
num15 = 265;
}
if (tile.type == 16)
{
num15 = 1;
if (tile.frameX >= 36)
{
num15 = 82;
}
}
else if (tile.type == 415)
{
num15 = 6;
}
else if (tile.type == 416)
{
num15 = 61;
}
else if (tile.type == 417)
{
num15 = 242;
}
else if (tile.type == 418)
{
num15 = 135;
}
if (tile.type == 1 || tile.type == 17 || tile.type == 38 || tile.type == 39 || tile.type == 41 || tile.type == 43 || tile.type == 44 || tile.type == 48 || Main.tileStone[(int)tile.type] || tile.type == 85 || tile.type == 90 || tile.type == 92 || tile.type == 96 || tile.type == 97 || tile.type == 99 || tile.type == 117 || tile.type == 130 || tile.type == 131 || tile.type == 132 || tile.type == 135 || tile.type == 135 || tile.type == 142 || tile.type == 143 || tile.type == 144 || tile.type == 210 || tile.type == 207 || tile.type == 235 || tile.type == 247 || tile.type == 272 || tile.type == 273 || tile.type == 283 || tile.type == 410)
{
num15 = 1;
}
if (tile.type == 379)
{
num15 = 257;
}
if (tile.type == 311)
{
num15 = 207;
}
if (tile.type == 312)
{
num15 = 208;
}
if (tile.type == 313)
{
num15 = 209;
}
if (tile.type == 104)
{
num15 = -1;
}
if (tile.type == 95 || tile.type == 98 || tile.type == 100 || tile.type == 174 || tile.type == 173)
{
num15 = 6;
}
if (tile.type == 30 || tile.type == 86 || tile.type == 94 || tile.type == 106 || tile.type == 114 || tile.type == 124 || tile.type == 128 || tile.type == 269)
{
num15 = 7;
}
if (tile.type == 372)
{
num15 = 242;
}
if (tile.type == 371)
{
num15 = 243;
}
if (tile.type == 334)
{
num15 = 7;
}
ushort type = tile.type;
if (type <= 139)
{
if (type <= 89)
{
switch (type)
{
case 10:
case 11:
goto IL_1499;
default:
switch (type)
{
case 87:
case 89:
goto IL_1499;
}
break;
}
}
else if (type == 93 || type == 139)
{
goto IL_1499;
}
}
else if (type <= 320)
{
if (type == 209)
{
goto IL_1499;
}
switch (type)
{
case 319:
case 320:
goto IL_1499;
}
}
else
{
switch (type)
{
case 386:
case 387:
case 390:
goto IL_1499;
case 388:
case 389:
break;
default:
switch (type)
{
case 405:
case 406:
case 411:
case 412:
goto IL_1499;
case 407:
num15 = 10;
break;
}
break;
}
}
IL_14A2:
if (tile.type == 240)
{
int num16 = (int)(tile.frameX / 54);
if (tile.frameY >= 54)
{
num16 += 36;
}
num15 = 7;
if (num16 == 16 || num16 == 17)
{
num15 = 26;
}
if (num16 >= 46 && num16 <= 49)
{
num15 = -1;
}
}
if (tile.type == 241)
{
num15 = 1;
}
if (tile.type == 242)
{
num15 = -1;
}
if (tile.type == 356)
{
num15 = -1;
}
if (tile.type == 351)
{
num15 = -1;
}
if (tile.type == 246)
{
num15 = -1;
}
if (tile.type == 36)
{
num15 = -1;
}
if (tile.type == 365)
{
num15 = 239;
}
if (tile.type == 366)
{
num15 = 30;
}
if (tile.type == 357 || tile.type == 367)
{
num15 = 236;
}
if (tile.type == 368 || tile.type == 369)
{
num15 = 240;
}
if (tile.type == 170)
{
num15 = 196;
}
if (tile.type == 315)
{
num15 = 225;
}
if (tile.type == 346)
{
num15 = 128;
}
if (tile.type == 347)
{
num15 = 117;
}
if (tile.type == 348)
{
num15 = 42;
}
if (tile.type == 350)
{
num15 = 226;
}
if (tile.type == 370)
{
if (WorldGen.genRand.Next(2) == 0)
{
num15 = 6;
}
else
{
num15 = 23;
}
}
if (tile.type == 171)
{
if (WorldGen.genRand.Next(2) == 0)
{
num15 = 196;
}
else
{
num15 = -1;
}
}
if (tile.type == 326)
{
num15 = 13;
}
if (tile.type == 327)
{
num15 = 13;
}
if (tile.type == 345)
{
num15 = 13;
}
if (tile.type == 336)
{
num15 = 6;
}
if (tile.type == 340)
{
num15 = 75;
}
if (tile.type == 341)
{
num15 = 65;
}
if (tile.type == 342)
{
num15 = 135;
}
if (tile.type == 343)
{
num15 = 169;
}
if (tile.type == 344)
{
num15 = 156;
}
if (tile.type == 328)
{
num15 = 13;
}
if (tile.type == 329)
{
num15 = 13;
}
if (tile.type == 330)
{
num15 = 9;
}
if (tile.type == 331)
{
num15 = 11;
}
if (tile.type == 332)
{
num15 = 19;
}
if (tile.type == 333)
{
num15 = 11;
}
if (tile.type == 101)
{
num15 = -1;
}
if (tile.type == 19)
{
int num17 = (int)(tile.frameY / 18);
if (num17 == 0 || num17 == 9 || num17 == 10 || num17 == 11 || num17 == 12)
{
num15 = 7;
}
else if (num17 == 1)
{
num15 = 77;
}
else if (num17 == 2)
{
num15 = 78;
}
else if (num17 == 3)
{
num15 = 79;
}
else if (num17 == 4)
{
num15 = 26;
}
else if (num17 == 5)
{
num15 = 126;
}
else if (num17 == 13)
{
num15 = 109;
}
else if (num17 == 14)
{
num15 = 13;
}
else if (num17 >= 15 || num17 <= 16)
{
num15 = -1;
}
else if (num17 == 17)
{
num15 = 215;
}
else if (num17 == 18)
{
num15 = 214;
}
else
{
num15 = 1;
}
}
if (tile.type == 79)
{
int num18 = (int)(tile.frameY / 36);
if (num18 == 0)
{
num15 = 7;
}
else if (num18 == 1)
{
num15 = 77;
}
else if (num18 == 2)
{
num15 = 78;
}
else if (num18 == 3)
{
num15 = 79;
}
else if (num18 == 4)
{
num15 = 126;
}
else if (num18 == 8)
{
num15 = 109;
}
else if (num18 >= 9)
{
num15 = -1;
}
else
{
num15 = 1;
}
}
if (tile.type == 18)
{
int num19 = (int)(tile.frameX / 36);
if (num19 == 0)
{
num15 = 7;
}
else if (num19 == 1)
{
num15 = 77;
}
else if (num19 == 2)
{
num15 = 78;
}
else if (num19 == 3)
{
num15 = 79;
}
else if (num19 == 4)
{
num15 = 26;
}
else if (num19 == 5)
{
num15 = 40;
}
else if (num19 == 6)
{
num15 = 5;
}
else if (num19 == 7)
{
num15 = 26;
}
else if (num19 == 8)
{
num15 = 4;
}
else if (num19 == 9)
{
num15 = 126;
}
else if (num19 == 10)
{
num15 = 148;
}
else if (num19 == 11 || num19 == 12 || num19 == 13)
{
num15 = 1;
}
else if (num19 == 14)
{
num15 = 109;
}
else if (num19 == 15)
{
num15 = 126;
}
else
{
num15 = -1;
}
}
if (tile.type == 14 || tile.type == 87 || tile.type == 88)
{
num15 = -1;
}
if (tile.type >= 255 && tile.type <= 261)
{
int num20 = (int)(tile.type - 255);
num15 = 86 + num20;
if (num20 == 6)
{
num15 = 138;
}
}
if (tile.type >= 262 && tile.type <= 268)
{
int num21 = (int)(tile.type - 262);
num15 = 86 + num21;
if (num21 == 6)
{
num15 = 138;
}
}
if (tile.type == 178)
{
int num22 = (int)(tile.frameX / 18);
num15 = 86 + num22;
if (num22 == 6)
{
num15 = 138;
}
}
if (tile.type == 186)
{
if (tile.frameX <= 360)
{
num15 = 26;
}
else if (tile.frameX <= 846)
{
num15 = 1;
}
else if (tile.frameX <= 954)
{
num15 = 9;
}
else if (tile.frameX <= 1062)
{
num15 = 11;
}
else if (tile.frameX <= 1170)
{
num15 = 10;
}
else if (tile.frameX <= 1332)
{
num15 = 0;
}
else if (tile.frameX <= 1386)
{
num15 = 10;
}
else
{
num15 = 80;
}
}
if (tile.type == 187)
{
if (tile.frameX <= 144)
{
num15 = 1;
}
else if (tile.frameX <= 306)
{
num15 = 38;
}
else if (tile.frameX <= 468)
{
num15 = 36;
}
else if (tile.frameX <= 738)
{
num15 = 30;
}
else if (tile.frameX <= 970)
{
num15 = 1;
}
else if (tile.frameX <= 1132)
{
num15 = 148;
}
else if (tile.frameX <= 1132)
{
num15 = 155;
}
else if (tile.frameX <= 1348)
{
num15 = 1;
}
else if (tile.frameX <= 1564)
{
num15 = 0;
}
}
if (tile.type == 105)
{
num15 = 1;
if (tile.frameX >= 1548 && tile.frameX <= 1654)
{
num15 = 148;
}
}
if (tile.type == 349)
{
num15 = 1;
}
if (tile.type == 337)
{
num15 = 1;
}
if (tile.type == 239)
{
int num23 = (int)(tile.frameX / 18);
if (num23 == 0)
{
num15 = 9;
}
if (num23 == 1)
{
num15 = 81;
}
if (num23 == 2)
{
num15 = 8;
}
if (num23 == 3)
{
num15 = 82;
}
if (num23 == 4)
{
num15 = 11;
}
if (num23 == 5)
{
num15 = 83;
}
if (num23 == 6)
{
num15 = 10;
}
if (num23 == 7)
{
num15 = 84;
}
if (num23 == 8)
{
num15 = 14;
}
if (num23 == 9)
{
num15 = 23;
}
if (num23 == 10)
{
num15 = 25;
}
if (num23 == 11)
{
num15 = 48;
}
if (num23 == 12)
{
num15 = 144;
}
if (num23 == 13)
{
num15 = 49;
}
if (num23 == 14)
{
num15 = 145;
}
if (num23 == 15)
{
num15 = 50;
}
if (num23 == 16)
{
num15 = 146;
}
if (num23 == 17)
{
num15 = 128;
}
if (num23 == 18)
{
num15 = 84;
}
if (num23 == 19)
{
num15 = 117;
}
if (num23 == 20)
{
num15 = 42;
}
if (num23 == 21)
{
num15 = -1;
}
if (num23 == 22)
{
num15 = 265;
}
}
if (tile.type == 185)
{
if (tile.frameY == 18)
{
int num24 = (int)(tile.frameX / 36);
if (num24 < 6)
{
num15 = 1;
}
else if (num24 < 16)
{
num15 = 26;
}
else if (num24 == 16)
{
num15 = 9;
}
else if (num24 == 17)
{
num15 = 11;
}
else if (num24 == 18)
{
num15 = 10;
}
else if (num24 == 19)
{
num15 = 86;
}
else if (num24 == 20)
{
num15 = 87;
}
else if (num24 == 21)
{
num15 = 88;
}
else if (num24 == 22)
{
num15 = 89;
}
else if (num24 == 23)
{
num15 = 90;
}
else if (num24 == 24)
{
num15 = 91;
}
else if (num24 < 31)
{
num15 = 80;
}
else if (num24 < 33)
{
num15 = 7;
}
else if (num24 < 34)
{
num15 = 8;
}
else if (num24 < 39)
{
num15 = 30;
}
else if (num24 < 42)
{
num15 = 1;
}
}
else
{
int num25 = (int)(tile.frameX / 18);
if (num25 < 6)
{
num15 = 1;
}
else if (num25 < 12)
{
num15 = 0;
}
else if (num25 < 27)
{
num15 = 26;
}
else if (num25 < 32)
{
num15 = 1;
}
else if (num25 < 35)
{
num15 = 0;
}
else if (num25 < 46)
{
num15 = 80;
}
else if (num25 < 52)
{
num15 = 30;
}
}
}
if (tile.type == 184)
{
int num26 = (int)(tile.frameX / 22);
if (num26 == 5)
{
num15 = 258;
}
else
{
num15 = 93 + num26;
}
}
if (tile.type == 237)
{
num15 = 148;
}
if (tile.type == 157)
{
num15 = 77;
}
if (tile.type == 158 || tile.type == 232 || tile.type == 383)
{
num15 = 78;
}
if (tile.type == 159)
{
num15 = 78;
}
if (tile.type == 15)
{
num15 = -1;
}
if (tile.type == 191)
{
num15 = 7;
}
if (tile.type == 5)
{
num15 = 7;
if (i > 5 && i < Main.maxTilesX - 5)
{
int num27 = i;
int num28 = j;
if (tile.frameX == 66 && tile.frameY <= 45)
{
num27++;
}
if (tile.frameX == 88 && tile.frameY >= 66 && tile.frameY <= 110)
{
num27--;
}
if (tile.frameX == 22 && tile.frameY >= 132 && tile.frameY <= 176)
{
num27--;
}
if (tile.frameX == 44 && tile.frameY >= 132 && tile.frameY <= 176)
{
num27++;
}
if (tile.frameX == 44 && tile.frameY >= 132 && tile.frameY <= 176)
{
num27++;
}
if (tile.frameX == 44 && tile.frameY >= 198)
{
num27++;
}
if (tile.frameX == 66 && tile.frameY >= 198)
{
num27--;
}
while (Main.tile[num27, num28] != null && (!Main.tile[num27, num28].active() || !Main.tileSolid[(int)Main.tile[num27, num28].type]))
{
num28++;
}
if (Main.tile[num27, num28] != null)
{
if (Main.tile[num27, num28].active() && Main.tile[num27, num28].type == 23)
{
num15 = 77;
}
if (Main.tile[num27, num28].active() && Main.tile[num27, num28].type == 60)
{
num15 = 78;
}
if (Main.tile[num27, num28].active() && Main.tile[num27, num28].type == 70)
{
num15 = 26;
}
if (Main.tile[num27, num28].active() && Main.tile[num27, num28].type == 109)
{
num15 = 79;
}
if (Main.tile[num27, num28].active() && Main.tile[num27, num28].type == 199)
{
num15 = 121;
}
if (Main.tile[num27, num28].active() && Main.tile[num27, num28].type == 147)
{
num15 = 122;
}
}
}
}
if (tile.type == 323)
{
num15 = 215;
if (i > 5 && i < Main.maxTilesX - 5)
{
int num29 = j;
while (Main.tile[i, num29] != null && (!Main.tile[i, num29].active() || !Main.tileSolid[(int)Main.tile[i, num29].type]))
{
num29++;
}
if (Main.tile[i, num29] != null)
{
if (Main.tile[i, num29].active() && Main.tile[i, num29].type == 234)
{
num15 = 121;
}
if (Main.tile[i, num29].active() && Main.tile[i, num29].type == 116)
{
num15 = 79;
}
if (Main.tile[i, num29].active() && Main.tile[i, num29].type == 112)
{
num15 = 77;
}
}
}
}
if (tile.type == 137)
{
num15 = 1;
int num30 = (int)(tile.frameY / 18);
if (num30 > 0)
{
num15 = 148;
}
}
if (tile.type == 212)
{
num15 = -1;
}
if (tile.type == 213)
{
num15 = 129;
}
if (tile.type == 214)
{
num15 = 1;
}
if (tile.type == 215)
{
num15 = -6;
}
if (tile.type == 325)
{
num15 = 81;
}
if (tile.type == 251)
{
num15 = 189;
}
if (tile.type == 252)
{
num15 = 190;
}
if (tile.type == 253)
{
num15 = 191;
}
if (tile.type == 254)
{
if (tile.frameX < 72)
{
num15 = 3;
}
else if (tile.frameX < 108)
{
num15 = 3;
if (WorldGen.genRand.Next(3) == 0)
{
num15 = 189;
}
}
else if (tile.frameX < 144)
{
num15 = 3;
if (WorldGen.genRand.Next(2) == 0)
{
num15 = 189;
}
}
else
{
num15 = 3;
if (WorldGen.genRand.Next(4) != 0)
{
num15 = 189;
}
}
}
if (tile.type == 21)
{
if (tile.frameX >= 1008)
{
num15 = -1;
}
else if (tile.frameX >= 612)
{
num15 = 11;
}
else if (tile.frameX >= 576)
{
num15 = 148;
}
else if (tile.frameX >= 540)
{
num15 = 26;
}
else if (tile.frameX >= 504)
{
num15 = 126;
}
else if (tile.frameX >= 468)
{
num15 = 116;
}
else if (tile.frameX >= 432)
{
num15 = 7;
}
else if (tile.frameX >= 396)
{
num15 = 11;
}
else if (tile.frameX >= 360)
{
num15 = 10;
}
else if (tile.frameX >= 324)
{
num15 = 79;
}
else if (tile.frameX >= 288)
{
num15 = 78;
}
else if (tile.frameX >= 252)
{
num15 = 77;
}
else if (tile.frameX >= 216)
{
num15 = 1;
}
else if (tile.frameX >= 180)
{
num15 = 7;
}
else if (tile.frameX >= 108)
{
num15 = 37;
}
else if (tile.frameX >= 36)
{
num15 = 10;
}
else
{
num15 = 7;
}
}
if (tile.type == 2)
{
if (WorldGen.genRand.Next(2) == 0)
{
num15 = 0;
}
else
{
num15 = 2;
}
}
if (Main.tileMoss[(int)tile.type])
{
if (tile.type == 381)
{
num15 = 258;
}
else
{
num15 = (int)(tile.type - 179 + 93);
}
}
if (tile.type == 127)
{
num15 = 67;
}
if (tile.type == 91)
{
num15 = -1;
}
if (tile.type == 198)
{
num15 = 109;
}
if (tile.type == 26)
{
if (tile.frameX >= 54)
{
num15 = 5;
}
else
{
num15 = 8;
}
}
if (tile.type == 34)
{
num15 = -1;
}
if (tile.type == 6)
{
num15 = 8;
}
if (tile.type == 7 || tile.type == 47 || tile.type == 284)
{
num15 = 9;
}
if (tile.type == 8 || tile.type == 45 || tile.type == 102)
{
num15 = 10;
}
if (tile.type == 9 || tile.type == 42 || tile.type == 46 || tile.type == 126 || tile.type == 136)
{
num15 = 11;
}
if (tile.type == 166 || tile.type == 175)
{
num15 = 81;
}
if (tile.type == 167)
{
num15 = 82;
}
if (tile.type == 168 || tile.type == 176)
{
num15 = 83;
}
if (tile.type == 169 || tile.type == 177)
{
num15 = 84;
}
if (tile.type == 199)
{
num15 = 117;
}
if (tile.type == 205)
{
num15 = 125;
}
if (tile.type == 201)
{
num15 = 125;
}
if (tile.type == 211)
{
num15 = 128;
}
if (tile.type == 227)
{
int num31 = (int)(tile.frameX / 34);
if (num31 == 0 || num31 == 1)
{
num15 = 26;
}
else if (num31 == 3)
{
num15 = 3;
}
else if (num31 == 2 || num31 == 4 || num31 == 5 || num31 == 6)
{
num15 = 40;
}
else if (num31 == 7)
{
num15 = 117;
}
else if (num31 == 8)
{
num15 = 17;
}
else if (num31 == 9)
{
num15 = 6;
}
else if (num31 == 10)
{
num15 = 3;
}
else if (num31 == 11)
{
num15 = 26;
}
}
if (tile.type == 204)
{
num15 = 117;
if (WorldGen.genRand.Next(2) == 0)
{
num15 = 1;
}
}
if (tile.type == 203)
{
num15 = 117;
}
if (tile.type == 243)
{
if (WorldGen.genRand.Next(2) == 0)
{
num15 = 7;
}
else
{
num15 = 13;
}
}
if (tile.type == 244)
{
if (WorldGen.genRand.Next(2) == 0)
{
num15 = 1;
}
else
{
num15 = 13;
}
}
else if ((tile.type >= 358 && tile.type <= 364) || (tile.type >= 275 && tile.type <= 282) || (tile.type == 285 || tile.type == 286 || (tile.type >= 288 && tile.type <= 297)) || (tile.type >= 316 && tile.type <= 318) || tile.type == 298 || tile.type == 299 || tile.type == 309 || tile.type == 310 || tile.type == 339 || tile.type == 413 || tile.type == 414)
{
num15 = 13;
if (WorldGen.genRand.Next(3) != 0)
{
num15 = -1;
}
}
if (tile.type == 13)
{
if (tile.frameX >= 90)
{
num15 = -1;
}
else
{
num15 = 13;
}
}
if (tile.type == 189)
{
num15 = 16;
}
if (tile.type == 12)
{
num15 = 12;
}
if (tile.type == 3 || tile.type == 73)
{
num15 = 3;
}
if (tile.type == 54)
{
num15 = 13;
}
if (tile.type == 22 || tile.type == 140)
{
num15 = 14;
}
if (tile.type == 78)
{
num15 = 22;
}
if (tile.type == 28)
{
num15 = 22;
if (tile.frameY >= 72 && tile.frameY <= 90)
{
num15 = 1;
}
if (tile.frameY >= 144 && tile.frameY <= 234)
{
num15 = 48;
}
if (tile.frameY >= 252 && tile.frameY <= 358)
{
num15 = 85;
}
if (tile.frameY >= 360 && tile.frameY <= 466)
{
num15 = 26;
}
if (tile.frameY >= 468 && tile.frameY <= 574)
{
num15 = 36;
}
if (tile.frameY >= 576 && tile.frameY <= 790)
{
num15 = 18;
}
if (tile.frameY >= 792 && tile.frameY <= 898)
{
num15 = 5;
}
if (tile.frameY >= 900 && tile.frameY <= 1006)
{
num15 = 0;
}
if (tile.frameY >= 1008 && tile.frameY <= 1114)
{
num15 = 148;
}
if (tile.frameY >= 1116 && tile.frameY <= 1222)
{
num15 = 241;
}
}
if (tile.type == 163)
{
num15 = 118;
}
if (tile.type == 164)
{
num15 = 119;
}
if (tile.type == 200)
{
num15 = 120;
}
if (tile.type == 221 || tile.type == 248)
{
num15 = 144;
}
if (tile.type == 222 || tile.type == 249)
{
num15 = 145;
}
if (tile.type == 223 || tile.type == 250)
{
num15 = 146;
}
if (tile.type == 224)
{
num15 = 149;
}
if (tile.type == 225)
{
num15 = 147;
}
if (tile.type == 229)
{
num15 = 153;
}
if (tile.type == 231)
{
num15 = 153;
if (WorldGen.genRand.Next(3) == 0)
{
num15 = 26;
}
}
if (tile.type == 226)
{
num15 = 148;
}
if (tile.type == 103)
{
num15 = -1;
}
if (tile.type == 29)
{
num15 = 23;
}
if (tile.type == 40)
{
num15 = 28;
}
if (tile.type == 49)
{
num15 = 29;
}
if (tile.type == 50)
{
num15 = 22;
}
if (tile.type == 51)
{
num15 = 30;
}
if (tile.type == 52 || tile.type == 353)
{
num15 = 3;
}
if (tile.type == 53 || tile.type == 81 || tile.type == 151 || tile.type == 202 || tile.type == 274)
{
num15 = 32;
}
if (tile.type == 56 || tile.type == 152)
{
num15 = 37;
}
if (tile.type == 75)
{
num15 = 109;
}
if (tile.type == 57 || tile.type == 119 || tile.type == 141 || tile.type == 234)
{
num15 = 36;
}
if (tile.type == 59 || tile.type == 120)
{
num15 = 38;
}
if (tile.type == 61 || tile.type == 62 || tile.type == 74 || tile.type == 80 || tile.type == 188 || tile.type == 233 || tile.type == 236 || tile.type == 384)
{
num15 = 40;
}
if (tile.type == 238)
{
if (WorldGen.genRand.Next(3) == 0)
{
num15 = 167;
}
else
{
num15 = 166;
}
}
if (tile.type == 69)
{
num15 = 7;
}
if (tile.type == 71 || tile.type == 72 || tile.type == 190)
{
num15 = 26;
}
if (tile.type == 70)
{
num15 = 17;
}
if (tile.type == 112)
{
num15 = 14;
}
if (tile.type == 123)
{
num15 = 53;
}
if (tile.type == 161)
{
num15 = 80;
}
if (tile.type == 206)
{
num15 = 80;
}
if (tile.type == 162)
{
num15 = 80;
}
if (tile.type == 165)
{
if (tile.frameX < 54)
{
num15 = 80;
}
else if (tile.frameX >= 324)
{
num15 = 117;
}
else if (tile.frameX >= 270)
{
num15 = 14;
}
else if (tile.frameX >= 216)
{
num15 = 1;
}
else if (tile.frameX >= 162)
{
num15 = 147;
}
else if (tile.frameX >= 108)
{
num15 = 30;
}
else
{
num15 = 1;
}
}
if (tile.type == 193)
{
num15 = 4;
}
if (tile.type == 194)
{
num15 = 26;
}
if (tile.type == 195)
{
num15 = 5;
}
if (tile.type == 196)
{
num15 = 108;
}
if (tile.type == 197)
{
num15 = 4;
}
if (tile.type == 153)
{
num15 = 26;
}
if (tile.type == 154)
{
num15 = 32;
}
if (tile.type == 155)
{
num15 = 2;
}
if (tile.type == 156)
{
num15 = 1;
}
if (tile.type == 116 || tile.type == 118 || tile.type == 147 || tile.type == 148)
{
num15 = 51;
}
if (tile.type == 109)
{
if (WorldGen.genRand.Next(2) == 0)
{
num15 = 0;
}
else
{
num15 = 47;
}
}
if (tile.type == 110 || tile.type == 113 || tile.type == 115)
{
num15 = 47;
}
if (tile.type == 107 || tile.type == 121)
{
num15 = 48;
}
if (tile.type == 108 || tile.type == 122 || tile.type == 146)
{
num1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment