Created
June 30, 2015 17:34
-
-
Save hakusaro/519ea806581b5cb636b2 to your computer and use it in GitHub Desktop.
This file has been truncated, but you can view the full file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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