Пример #1
0
        public override void PostWorldGen()
        {
            bool found   = false;
            int  y_range = 25;
            int  x       = Main.maxTilesX / 2;

            while (x != 0 && x != Main.maxTilesX - 1)
            {
                for (int y = (int)(Main.worldSurface) + 5; y <= (int)(Main.worldSurface) + 5 + y_range; y++)
                {
                    if (Main.tile[x, y].active())
                    {
                        if (WorldGen.EmptyTileCheck(x - 1, x + 1, y - 3, y - 1) && Main.tile[x, y - 1].liquid == 0)
                        {
                            Main.spawnTileX = x;
                            Main.spawnTileY = y;
                            found           = true;
                            break;
                        }
                    }
                }
                if (found)
                {
                    break;
                }
                if (x >= Main.maxTilesX / 2)
                {
                    x++;
                }
                x = Main.maxTilesX - x;
            }
            if (!found && 0 <= (int)(Main.worldSurface) + 5 && (int)(Main.worldSurface) + 5 < Main.maxTilesY)
            {
                Main.spawnTileX = Main.maxTilesX / 2;
                Main.spawnTileY = (int)(Main.worldSurface) + 5;
                for (int i = -1; i <= 1; i++)
                {
                    for (int j = -3; j <= -1; j++)
                    {
                        if (0 <= i && i < Main.maxTilesX && 0 <= j && j < Main.maxTilesY)
                        {
                            Main.tile[i, j].type = 0;
                        }
                    }
                }
            }
        }
Пример #2
0
        public static bool AddLunarRoots(int i, int j)
        {
            int k = j;

            while (k < Main.maxTilesY)
            {
                if (Main.tile[i, k].active() && Main.tileSolid[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[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[tile.type])
                    {
                        return(false);
                    }
                    if (!tile2.nactive() || !Main.tileSolid[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   = (ushort)Tremor.instance.TileType("LunarRootTile");
                    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   = (ushort)Tremor.instance.TileType("LunarRootTile");
                    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   = (ushort)Tremor.instance.TileType("LunarRootTile");
                    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   = (ushort)Tremor.instance.TileType("LunarRootTile");
                    Main.tile[i, num].frameX = 18;
                    Main.tile[i, num].frameY = 18;
                    return(true);
                }
                k++;
            }
            return(false);
        }
Пример #3
0
        public static bool AddChozoStatue(int i, int j)
        {
            Mod mod = MetroidMod.Instance;

            int k = j;

            while (k < Main.maxTilesY)
            {
                int    num2 = 0;
                ushort type = TileID.Stone;
                for (int l = 0; l < 3; l++)
                {
                    if (Main.tile[i + l, k].active() && Main.tileSolid[(int)Main.tile[i + l, k].type])
                    {
                        num2++;
                        type = Main.tile[i + l, k].type;
                    }
                }
                if (num2 >= 2)                // && !Main.tile[i, k - 1].active() && !Main.tile[i, k - 2].active() && !Main.tile[i, k - 3].active() && !Main.tile[i + 1, k - 1].active() && !Main.tile[i + 1, k - 2].active() && !Main.tile[i + 1, k - 3].active() && !Main.tile[i + 2, k - 1].active() && !Main.tile[i + 2, k - 2].active() && !Main.tile[i + 2, k - 3].active())
                {
                    int num = k - 1;
                    if (Main.tile[i, num - 1].lava() || Main.tile[i + 1, num - 1].lava() || Main.tile[i + 2, num - 1].lava())
                    {
                        return(false);
                    }
                    if (!WorldGen.EmptyTileCheck(i, i + 2, num - 2, num, -1))
                    {
                        return(false);
                    }
                    if (Main.tile[i, num].wall == WallID.LihzahrdBrickUnsafe)
                    {
                        return(false);
                    }

                    int rand = WorldGen.genRand.Next(4);                     // 0 & 1 = statue only, 2 = statue + brick base, 3 = statue + brick shrine
                    if (Main.wallDungeon[(int)Main.tile[i, num].wall])
                    {
                        rand = 0;
                    }

                    if (rand <= 1)
                    {
                        for (int tx = i; tx < i + 3; tx++)
                        {
                            Main.tile[tx, k].slope(0);
                            Main.tile[tx, k].halfBrick(false);
                            if (!Main.tile[tx, k].active())
                            {
                                Main.tile[tx, k].active(true);
                                Main.tile[tx, k].type = type;
                            }
                        }
                    }
                    else
                    {
                        if (rand == 3)
                        {
                            for (int wx = i - 1; wx < i + 4; wx++)
                            {
                                for (int wy = k - 4; wy < k; wy++)
                                {
                                    WorldGen.KillTile(wx, wy);

                                    if (WorldGen.genRand.Next(4) > 0)
                                    {
                                        WorldGen.KillWall(wx, wy);
                                        WorldGen.PlaceWall(wx, wy, WallID.Cave4Unsafe);
                                    }
                                }
                            }
                            for (int tx = i - 2; tx < i + 5; tx++)
                            {
                                Main.tile[tx, k].slope(0);
                                Main.tile[tx, k].halfBrick(false);
                                Main.tile[tx, k].active(true);
                                Main.tile[tx, k].type = 38;
                                Main.tile[tx, k - 5].slope(0);
                                Main.tile[tx, k - 5].halfBrick(false);
                                Main.tile[tx, k - 5].active(true);
                                Main.tile[tx, k - 5].type = 38;
                            }
                            Main.tile[i - 2, k - 4].slope(0);
                            Main.tile[i - 2, k - 4].halfBrick(false);
                            Main.tile[i - 2, k - 4].active(true);
                            Main.tile[i - 2, k - 4].type = 38;

                            Main.tile[i + 4, k - 4].slope(0);
                            Main.tile[i + 4, k - 4].halfBrick(false);
                            Main.tile[i + 4, k - 4].active(true);
                            Main.tile[i + 4, k - 4].type = 38;
                        }
                        for (int tx2 = i - 1; tx2 < i + 4; tx2++)
                        {
                            Main.tile[tx2, k].slope(0);
                            Main.tile[tx2, k].halfBrick(false);
                            Main.tile[tx2, k].active(true);
                            Main.tile[tx2, k].type = 38;
                            if (rand == 3)
                            {
                                Main.tile[tx2, k - 6].slope(0);
                                Main.tile[tx2, k - 6].halfBrick(false);
                                Main.tile[tx2, k - 6].active(true);
                                Main.tile[tx2, k - 6].type = 38;
                            }
                        }
                    }

                    int dir = 1;
                    if (WorldGen.genRand.Next(2) == 0)
                    {
                        dir = -1;
                    }

                    int statueX  = i + 2;
                    int statueX2 = i;
                    if (dir == 1)
                    {
                        statueX  = i + 1;
                        statueX2 = i + 2;
                    }
                    int statueY = num;

                    WorldGen.PlaceObject(statueX, statueY, mod.TileType("ChozoStatueNatural"), false, 0, 0, -1, -dir);
                    WorldGen.PlaceObject(statueX2, statueY, mod.TileType("ChozoStatueArmNatural"), false, 0, 0, -1, -dir);

                    ushort item = StatueItem(statueX2, statueY - 2);
                    WorldGen.PlaceObject(statueX2, statueY - 2, item);

                    return(true);
                }
                else
                {
                    k++;
                }
            }
            return(false);
        }
Пример #4
0
        public void GrowTree(int x, int minY, ushort treeType, int[] tilesAllowGrowth, int sapplingType = 0, int minTreeHeight = 5, int maxTreeHeight = 16)
        {
            int y = minY;

            while (Main.tile[x, y] == null || Main.tile[x, y].type == sapplingType)
            {
                y++;
            }

            if (Main.tile[x, y].nactive() && !Main.tile[x, y].halfBrick() && Main.tile[x, y].slope() == 0 &&
                ((Main.tile[x - 1, y].active() && Array.Exists(tilesAllowGrowth, element => Main.tile[x - 1, y].type == element)) ||
                 (Main.tile[x + 1, y].active() && Array.Exists(tilesAllowGrowth, element => Main.tile[x + 1, y].type == element))))
            {
                int width = 2;
                if (WorldGen.EmptyTileCheck(x - width, x + width, y - maxTreeHeight, y - 1, sapplingType))
                {
                    bool flag   = false;
                    bool flag2  = false;
                    int  height = WorldGen.genRand.Next(minTreeHeight, maxTreeHeight + 1);
                    int  num5;
                    for (int j = y - height; j < y; j++)
                    {
                        Main.tile[x, j].frameNumber((byte)WorldGen.genRand.Next(3));
                        Main.tile[x, j].active(true);
                        Main.tile[x, j].type = treeType;
                        num5 = WorldGen.genRand.Next(3);
                        int num6 = WorldGen.genRand.Next(10);

                        if (j == y - 1 || j == y - height)
                        {
                            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[x, j].frameX = 0;
                                Main.tile[x, j].frameY = 66;
                            }
                            if (num5 == 1)
                            {
                                Main.tile[x, j].frameX = 0;
                                Main.tile[x, j].frameY = 88;
                            }
                            if (num5 == 2)
                            {
                                Main.tile[x, j].frameX = 0;
                                Main.tile[x, j].frameY = 110;
                            }
                        }
                        else if (num6 == 2)
                        {
                            if (num5 == 0)
                            {
                                Main.tile[x, j].frameX = 22;
                                Main.tile[x, j].frameY = 0;
                            }
                            if (num5 == 1)
                            {
                                Main.tile[x, j].frameX = 22;
                                Main.tile[x, j].frameY = 22;
                            }
                            if (num5 == 2)
                            {
                                Main.tile[x, j].frameX = 22;
                                Main.tile[x, j].frameY = 44;
                            }
                        }
                        else if (num6 == 3)
                        {
                            if (num5 == 0)
                            {
                                Main.tile[x, j].frameX = 44;
                                Main.tile[x, j].frameY = 66;
                            }
                            if (num5 == 1)
                            {
                                Main.tile[x, j].frameX = 44;
                                Main.tile[x, j].frameY = 88;
                            }
                            if (num5 == 2)
                            {
                                Main.tile[x, j].frameX = 44;
                                Main.tile[x, j].frameY = 110;
                            }
                        }
                        else if (num6 == 4)
                        {
                            if (num5 == 0)
                            {
                                Main.tile[x, j].frameX = 22;
                                Main.tile[x, j].frameY = 66;
                            }
                            if (num5 == 1)
                            {
                                Main.tile[x, j].frameX = 22;
                                Main.tile[x, j].frameY = 88;
                            }
                            if (num5 == 2)
                            {
                                Main.tile[x, j].frameX = 22;
                                Main.tile[x, j].frameY = 110;
                            }
                        }
                        else if (num6 == 5)
                        {
                            if (num5 == 0)
                            {
                                Main.tile[x, j].frameX = 88;
                                Main.tile[x, j].frameY = 0;
                            }
                            if (num5 == 1)
                            {
                                Main.tile[x, j].frameX = 88;
                                Main.tile[x, j].frameY = 22;
                            }
                            if (num5 == 2)
                            {
                                Main.tile[x, j].frameX = 88;
                                Main.tile[x, j].frameY = 44;
                            }
                        }
                        else if (num6 == 6)
                        {
                            if (num5 == 0)
                            {
                                Main.tile[x, j].frameX = 66;
                                Main.tile[x, j].frameY = 66;
                            }
                            if (num5 == 1)
                            {
                                Main.tile[x, j].frameX = 66;
                                Main.tile[x, j].frameY = 88;
                            }
                            if (num5 == 2)
                            {
                                Main.tile[x, j].frameX = 66;
                                Main.tile[x, j].frameY = 110;
                            }
                        }
                        else if (num6 == 7)
                        {
                            if (num5 == 0)
                            {
                                Main.tile[x, j].frameX = 110;
                                Main.tile[x, j].frameY = 66;
                            }
                            if (num5 == 1)
                            {
                                Main.tile[x, j].frameX = 110;
                                Main.tile[x, j].frameY = 88;
                            }
                            if (num5 == 2)
                            {
                                Main.tile[x, j].frameX = 110;
                                Main.tile[x, j].frameY = 110;
                            }
                        }
                        else
                        {
                            if (num5 == 0)
                            {
                                Main.tile[x, j].frameX = 0;
                                Main.tile[x, j].frameY = 0;
                            }
                            if (num5 == 1)
                            {
                                Main.tile[x, j].frameX = 0;
                                Main.tile[x, j].frameY = 22;
                            }
                            if (num5 == 2)
                            {
                                Main.tile[x, j].frameX = 0;
                                Main.tile[x, j].frameY = 44;
                            }
                        }

                        if (num6 == 5 || num6 == 7)
                        {
                            Main.tile[x - 1, j].active(true);
                            Main.tile[x - 1, j].type = 5;
                            num5 = WorldGen.genRand.Next(3);
                            if (WorldGen.genRand.Next(3) < 2)
                            {
                                if (num5 == 0)
                                {
                                    Main.tile[x - 1, j].frameX = 44;
                                    Main.tile[x - 1, j].frameY = 198;
                                }
                                if (num5 == 1)
                                {
                                    Main.tile[x - 1, j].frameX = 44;
                                    Main.tile[x - 1, j].frameY = 220;
                                }
                                if (num5 == 2)
                                {
                                    Main.tile[x - 1, j].frameX = 44;
                                    Main.tile[x - 1, j].frameY = 242;
                                }
                            }
                            else
                            {
                                if (num5 == 0)
                                {
                                    Main.tile[x - 1, j].frameX = 66;
                                    Main.tile[x - 1, j].frameY = 0;
                                }
                                if (num5 == 1)
                                {
                                    Main.tile[x - 1, j].frameX = 66;
                                    Main.tile[x - 1, j].frameY = 22;
                                }
                                if (num5 == 2)
                                {
                                    Main.tile[x - 1, j].frameX = 66;
                                    Main.tile[x - 1, j].frameY = 44;
                                }
                            }
                        }
                        if (num6 == 6 || num6 == 7)
                        {
                            Main.tile[x + 1, j].active(true);
                            Main.tile[x + 1, j].type = 5;
                            num5 = WorldGen.genRand.Next(3);
                            if (WorldGen.genRand.Next(3) < 2)
                            {
                                if (num5 == 0)
                                {
                                    Main.tile[x + 1, j].frameX = 66;
                                    Main.tile[x + 1, j].frameY = 198;
                                }
                                if (num5 == 1)
                                {
                                    Main.tile[x + 1, j].frameX = 66;
                                    Main.tile[x + 1, j].frameY = 220;
                                }
                                if (num5 == 2)
                                {
                                    Main.tile[x + 1, j].frameX = 66;
                                    Main.tile[x + 1, j].frameY = 242;
                                }
                            }
                            else
                            {
                                if (num5 == 0)
                                {
                                    Main.tile[x + 1, j].frameX = 88;
                                    Main.tile[x + 1, j].frameY = 66;
                                }
                                if (num5 == 1)
                                {
                                    Main.tile[x + 1, j].frameX = 88;
                                    Main.tile[x + 1, j].frameY = 88;
                                }
                                if (num5 == 2)
                                {
                                    Main.tile[x + 1, j].frameX = 88;
                                    Main.tile[x + 1, j].frameY = 110;
                                }
                            }
                        }
                    }

                    int  num7  = WorldGen.genRand.Next(3);
                    bool flag3 = false;
                    bool flag4 = false;
                    if (Main.tile[x - 1, y].nactive() && !Main.tile[x - 1, y].halfBrick() &&
                        Main.tile[x - 1, y].slope() == 0 && Array.Exists(tilesAllowGrowth, element => Main.tile[x - 1, y].type == element))
                    {
                        flag3 = true;
                    }
                    if (Main.tile[x + 1, y].nactive() && !Main.tile[x + 1, y].halfBrick() && Main.tile[x + 1, y].slope() == 0 &&
                        Array.Exists(tilesAllowGrowth, element => Main.tile[x + 1, y].type == element))
                    {
                        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[x + 1, y - 1].active(true);
                        Main.tile[x + 1, y - 1].type = 5;
                        num5 = WorldGen.genRand.Next(3);
                        if (num5 == 0)
                        {
                            Main.tile[x + 1, y - 1].frameX = 22;
                            Main.tile[x + 1, y - 1].frameY = 132;
                        }
                        if (num5 == 1)
                        {
                            Main.tile[x + 1, y - 1].frameX = 22;
                            Main.tile[x + 1, y - 1].frameY = 154;
                        }
                        if (num5 == 2)
                        {
                            Main.tile[x + 1, y - 1].frameX = 22;
                            Main.tile[x + 1, y - 1].frameY = 176;
                        }
                    }
                    if (num7 == 0 || num7 == 2)
                    {
                        Main.tile[x - 1, y - 1].active(true);
                        Main.tile[x - 1, y - 1].type = 5;
                        num5 = WorldGen.genRand.Next(3);
                        if (num5 == 0)
                        {
                            Main.tile[x - 1, y - 1].frameX = 44;
                            Main.tile[x - 1, y - 1].frameY = 132;
                        }
                        if (num5 == 1)
                        {
                            Main.tile[x - 1, y - 1].frameX = 44;
                            Main.tile[x - 1, y - 1].frameY = 154;
                        }
                        if (num5 == 2)
                        {
                            Main.tile[x - 1, y - 1].frameX = 44;
                            Main.tile[x - 1, y - 1].frameY = 176;
                        }
                    }

                    num5 = WorldGen.genRand.Next(3);
                    if (num7 == 0)
                    {
                        if (num5 == 0)
                        {
                            Main.tile[x, y - 1].frameX = 88;
                            Main.tile[x, y - 1].frameY = 132;
                        }
                        if (num5 == 1)
                        {
                            Main.tile[x, y - 1].frameX = 88;
                            Main.tile[x, y - 1].frameY = 154;
                        }
                        if (num5 == 2)
                        {
                            Main.tile[x, y - 1].frameX = 88;
                            Main.tile[x, y - 1].frameY = 176;
                        }
                    }
                    else if (num7 == 1)
                    {
                        if (num5 == 0)
                        {
                            Main.tile[x, y - 1].frameX = 0;
                            Main.tile[x, y - 1].frameY = 132;
                        }
                        if (num5 == 1)
                        {
                            Main.tile[x, y - 1].frameX = 0;
                            Main.tile[x, y - 1].frameY = 154;
                        }
                        if (num5 == 2)
                        {
                            Main.tile[x, y - 1].frameX = 0;
                            Main.tile[x, y - 1].frameY = 176;
                        }
                    }
                    else if (num7 == 2)
                    {
                        if (num5 == 0)
                        {
                            Main.tile[x, y - 1].frameX = 66;
                            Main.tile[x, y - 1].frameY = 132;
                        }
                        if (num5 == 1)
                        {
                            Main.tile[x, y - 1].frameX = 66;
                            Main.tile[x, y - 1].frameY = 154;
                        }
                        if (num5 == 2)
                        {
                            Main.tile[x, y - 1].frameX = 66;
                            Main.tile[x, y - 1].frameY = 176;
                        }
                    }
                    if (WorldGen.genRand.Next(8) != 0)
                    {
                        num5 = WorldGen.genRand.Next(3);
                        if (num5 == 0)
                        {
                            Main.tile[x, y - height].frameX = 22;
                            Main.tile[x, y - height].frameY = 198;
                        }
                        if (num5 == 1)
                        {
                            Main.tile[x, y - height].frameX = 22;
                            Main.tile[x, y - height].frameY = 220;
                        }
                        if (num5 == 2)
                        {
                            Main.tile[x, y - height].frameX = 22;
                            Main.tile[x, y - height].frameY = 242;
                        }
                    }
                    else
                    {
                        num5 = WorldGen.genRand.Next(3);
                        if (num5 == 0)
                        {
                            Main.tile[x, y - height].frameX = 0;
                            Main.tile[x, y - height].frameY = 198;
                        }
                        if (num5 == 1)
                        {
                            Main.tile[x, y - height].frameX = 0;
                            Main.tile[x, y - height].frameY = 220;
                        }
                        if (num5 == 2)
                        {
                            Main.tile[x, y - height].frameX = 0;
                            Main.tile[x, y - height].frameY = 242;
                        }
                    }
                    WorldGen.RangeFrame(x - 2, y - height - 1, x + 2, y + 1);
                    if (Main.netMode == 2)
                    {
                        NetMessage.SendTileSquare(-1, x, (int)((double)y - (double)height * 0.5), height + 1);
                    }
                }
            }
        }
Пример #5
0
    public static bool GrowTree(int i, int y)
    {
        int j;

        for (j = y; Terraria.ModLoader.TileLoader.IsSapling(Main.tile[i, j].type); j++)
        {
        }

        if (Main.tile[i, j].nactive() && !Main.tile[i, j].halfBrick() && Main.tile[i, j].slope() == 0 && IsTileTypeFitForTree(Main.tile[i, j].type) && IsWallTypeFitForTree(Main.tile[i, j - 1].wall) && ((Main.tile[i - 1, j].active() && IsTileTypeFitForTree(Main.tile[i - 1, j].type)) || (Main.tile[i + 1, j].active() && IsTileTypeFitForTree(Main.tile[i + 1, j].type))))
        {
            byte color       = Main.tile[i, j].color();
            int  width       = 2;
            int  height      = WorldGen.genRand.Next(5, 17);
            int  extraHeight = height + 4;
            if (Main.tile[i, j].type == 60)
            {
                extraHeight += 5;
            }
            bool CanGrow = false;
            if (Main.tile[i, j].type == 70 && WorldGen.EmptyTileCheck(i - width, i + width, j - extraHeight, j - 3, 20) && WorldGen.EmptyTileCheck(i - 1, i + 1, j - 2, j - 1, 20))
            {
                CanGrow = true;
            }
            if (WorldGen.EmptyTileCheck(i - width, i + width, j - extraHeight, j - 1, 20))
            {
                CanGrow = true;
            }
            if (CanGrow)
            {
                bool flag2 = false;
                bool flag3 = false;
                int  style;
                for (int k = j - height; k < j; k++)
                {
                    Main.tile[i, k].frameNumber((byte)WorldGen.genRand.Next(3));
                    Main.tile[i, k].active(active: true);
                    Main.tile[i, k].type = 5;
                    Main.tile[i, k].color(color);
                    style = WorldGen.genRand.Next(3);
                    int style2 = WorldGen.genRand.Next(10);
                    if (k == j - 1 || k == j - height)
                    {
                        style2 = 0;
                    }
                    while (((style2 == 5 || style2 == 7) && flag2) || ((style2 == 6 || style2 == 7) && flag3))
                    {
                        style2 = WorldGen.genRand.Next(10);
                    }
                    flag2 = false;
                    flag3 = false;
                    if (style2 == 5 || style2 == 7)
                    {
                        flag2 = true;
                    }
                    if (style2 == 6 || style2 == 7)
                    {
                        flag3 = true;
                    }
                    switch (style2)
                    {
                    case 1:
                        if (style == 0)
                        {
                            Main.tile[i, k].frameX = 0;
                            Main.tile[i, k].frameY = 66;
                        }
                        if (style == 1)
                        {
                            Main.tile[i, k].frameX = 0;
                            Main.tile[i, k].frameY = 88;
                        }
                        if (style == 2)
                        {
                            Main.tile[i, k].frameX = 0;
                            Main.tile[i, k].frameY = 110;
                        }
                        break;

                    case 2:
                        if (style == 0)
                        {
                            Main.tile[i, k].frameX = 22;
                            Main.tile[i, k].frameY = 0;
                        }
                        if (style == 1)
                        {
                            Main.tile[i, k].frameX = 22;
                            Main.tile[i, k].frameY = 22;
                        }
                        if (style == 2)
                        {
                            Main.tile[i, k].frameX = 22;
                            Main.tile[i, k].frameY = 44;
                        }
                        break;

                    case 3:
                        if (style == 0)
                        {
                            Main.tile[i, k].frameX = 44;
                            Main.tile[i, k].frameY = 66;
                        }
                        if (style == 1)
                        {
                            Main.tile[i, k].frameX = 44;
                            Main.tile[i, k].frameY = 88;
                        }
                        if (style == 2)
                        {
                            Main.tile[i, k].frameX = 44;
                            Main.tile[i, k].frameY = 110;
                        }
                        break;

                    case 4:
                        if (style == 0)
                        {
                            Main.tile[i, k].frameX = 22;
                            Main.tile[i, k].frameY = 66;
                        }
                        if (style == 1)
                        {
                            Main.tile[i, k].frameX = 22;
                            Main.tile[i, k].frameY = 88;
                        }
                        if (style == 2)
                        {
                            Main.tile[i, k].frameX = 22;
                            Main.tile[i, k].frameY = 110;
                        }
                        break;

                    case 5:
                        if (style == 0)
                        {
                            Main.tile[i, k].frameX = 88;
                            Main.tile[i, k].frameY = 0;
                        }
                        if (style == 1)
                        {
                            Main.tile[i, k].frameX = 88;
                            Main.tile[i, k].frameY = 22;
                        }
                        if (style == 2)
                        {
                            Main.tile[i, k].frameX = 88;
                            Main.tile[i, k].frameY = 44;
                        }
                        break;

                    case 6:
                        if (style == 0)
                        {
                            Main.tile[i, k].frameX = 66;
                            Main.tile[i, k].frameY = 66;
                        }
                        if (style == 1)
                        {
                            Main.tile[i, k].frameX = 66;
                            Main.tile[i, k].frameY = 88;
                        }
                        if (style == 2)
                        {
                            Main.tile[i, k].frameX = 66;
                            Main.tile[i, k].frameY = 110;
                        }
                        break;

                    case 7:
                        if (style == 0)
                        {
                            Main.tile[i, k].frameX = 110;
                            Main.tile[i, k].frameY = 66;
                        }
                        if (style == 1)
                        {
                            Main.tile[i, k].frameX = 110;
                            Main.tile[i, k].frameY = 88;
                        }
                        if (style == 2)
                        {
                            Main.tile[i, k].frameX = 110;
                            Main.tile[i, k].frameY = 110;
                        }
                        break;

                    default:
                        if (style == 0)
                        {
                            Main.tile[i, k].frameX = 0;
                            Main.tile[i, k].frameY = 0;
                        }
                        if (style == 1)
                        {
                            Main.tile[i, k].frameX = 0;
                            Main.tile[i, k].frameY = 22;
                        }
                        if (style == 2)
                        {
                            Main.tile[i, k].frameX = 0;
                            Main.tile[i, k].frameY = 44;
                        }
                        break;
                    }
                    if (style2 == 5 || style2 == 7)
                    {
                        Main.tile[i - 1, k].active(active: true);
                        Main.tile[i - 1, k].type = 5;
                        Main.tile[i - 1, k].color(color);
                        style = WorldGen.genRand.Next(3);
                        if (WorldGen.genRand.Next(3) < 2)
                        {
                            if (style == 0)
                            {
                                Main.tile[i - 1, k].frameX = 44;
                                Main.tile[i - 1, k].frameY = 198;
                            }
                            if (style == 1)
                            {
                                Main.tile[i - 1, k].frameX = 44;
                                Main.tile[i - 1, k].frameY = 220;
                            }
                            if (style == 2)
                            {
                                Main.tile[i - 1, k].frameX = 44;
                                Main.tile[i - 1, k].frameY = 242;
                            }
                        }
                        else
                        {
                            if (style == 0)
                            {
                                Main.tile[i - 1, k].frameX = 66;
                                Main.tile[i - 1, k].frameY = 0;
                            }
                            if (style == 1)
                            {
                                Main.tile[i - 1, k].frameX = 66;
                                Main.tile[i - 1, k].frameY = 22;
                            }
                            if (style == 2)
                            {
                                Main.tile[i - 1, k].frameX = 66;
                                Main.tile[i - 1, k].frameY = 44;
                            }
                        }
                    }
                    if (style2 != 6 && style2 != 7)
                    {
                        continue;
                    }
                    Main.tile[i + 1, k].active(active: true);
                    Main.tile[i + 1, k].type = 5;
                    Main.tile[i + 1, k].color(color);
                    style = WorldGen.genRand.Next(3);
                    if (WorldGen.genRand.Next(3) < 2)
                    {
                        if (style == 0)
                        {
                            Main.tile[i + 1, k].frameX = 66;
                            Main.tile[i + 1, k].frameY = 198;
                        }
                        if (style == 1)
                        {
                            Main.tile[i + 1, k].frameX = 66;
                            Main.tile[i + 1, k].frameY = 220;
                        }
                        if (style == 2)
                        {
                            Main.tile[i + 1, k].frameX = 66;
                            Main.tile[i + 1, k].frameY = 242;
                        }
                    }
                    else
                    {
                        if (style == 0)
                        {
                            Main.tile[i + 1, k].frameX = 88;
                            Main.tile[i + 1, k].frameY = 66;
                        }
                        if (style == 1)
                        {
                            Main.tile[i + 1, k].frameX = 88;
                            Main.tile[i + 1, k].frameY = 88;
                        }
                        if (style == 2)
                        {
                            Main.tile[i + 1, k].frameX = 88;
                            Main.tile[i + 1, k].frameY = 110;
                        }
                    }
                }
                int  num6  = WorldGen.genRand.Next(3);
                bool flag4 = false;
                bool flag5 = false;
                if (Main.tile[i - 1, j].nactive() && !Main.tile[i - 1, j].halfBrick() && Main.tile[i - 1, j].slope() == 0 && IsTileTypeFitForTree(Main.tile[i - 1, j].type))
                {
                    flag4 = true;
                }
                if (Main.tile[i + 1, j].nactive() && !Main.tile[i + 1, j].halfBrick() && Main.tile[i + 1, j].slope() == 0 && IsTileTypeFitForTree(Main.tile[i + 1, j].type))
                {
                    flag5 = true;
                }
                if (!flag4)
                {
                    if (num6 == 0)
                    {
                        num6 = 2;
                    }
                    if (num6 == 1)
                    {
                        num6 = 3;
                    }
                }
                if (!flag5)
                {
                    if (num6 == 0)
                    {
                        num6 = 1;
                    }
                    if (num6 == 2)
                    {
                        num6 = 3;
                    }
                }
                if (flag4 && !flag5)
                {
                    num6 = 2;
                }
                if (flag5 && !flag4)
                {
                    num6 = 1;
                }
                if (num6 == 0 || num6 == 1)
                {
                    Main.tile[i + 1, j - 1].active(active: true);
                    Main.tile[i + 1, j - 1].type = 5;
                    Main.tile[i + 1, j - 1].color(color);
                    style = WorldGen.genRand.Next(3);
                    if (style == 0)
                    {
                        Main.tile[i + 1, j - 1].frameX = 22;
                        Main.tile[i + 1, j - 1].frameY = 132;
                    }
                    if (style == 1)
                    {
                        Main.tile[i + 1, j - 1].frameX = 22;
                        Main.tile[i + 1, j - 1].frameY = 154;
                    }
                    if (style == 2)
                    {
                        Main.tile[i + 1, j - 1].frameX = 22;
                        Main.tile[i + 1, j - 1].frameY = 176;
                    }
                }
                if (num6 == 0 || num6 == 2)
                {
                    Main.tile[i - 1, j - 1].active(active: true);
                    Main.tile[i - 1, j - 1].type = 5;
                    Main.tile[i - 1, j - 1].color(color);
                    style = WorldGen.genRand.Next(3);
                    if (style == 0)
                    {
                        Main.tile[i - 1, j - 1].frameX = 44;
                        Main.tile[i - 1, j - 1].frameY = 132;
                    }
                    if (style == 1)
                    {
                        Main.tile[i - 1, j - 1].frameX = 44;
                        Main.tile[i - 1, j - 1].frameY = 154;
                    }
                    if (style == 2)
                    {
                        Main.tile[i - 1, j - 1].frameX = 44;
                        Main.tile[i - 1, j - 1].frameY = 176;
                    }
                }
                style = WorldGen.genRand.Next(3);
                switch (num6)
                {
                case 0:
                    if (style == 0)
                    {
                        Main.tile[i, j - 1].frameX = 88;
                        Main.tile[i, j - 1].frameY = 132;
                    }
                    if (style == 1)
                    {
                        Main.tile[i, j - 1].frameX = 88;
                        Main.tile[i, j - 1].frameY = 154;
                    }
                    if (style == 2)
                    {
                        Main.tile[i, j - 1].frameX = 88;
                        Main.tile[i, j - 1].frameY = 176;
                    }
                    break;

                case 1:
                    if (style == 0)
                    {
                        Main.tile[i, j - 1].frameX = 0;
                        Main.tile[i, j - 1].frameY = 132;
                    }
                    if (style == 1)
                    {
                        Main.tile[i, j - 1].frameX = 0;
                        Main.tile[i, j - 1].frameY = 154;
                    }
                    if (style == 2)
                    {
                        Main.tile[i, j - 1].frameX = 0;
                        Main.tile[i, j - 1].frameY = 176;
                    }
                    break;

                case 2:
                    if (style == 0)
                    {
                        Main.tile[i, j - 1].frameX = 66;
                        Main.tile[i, j - 1].frameY = 132;
                    }
                    if (style == 1)
                    {
                        Main.tile[i, j - 1].frameX = 66;
                        Main.tile[i, j - 1].frameY = 154;
                    }
                    if (style == 2)
                    {
                        Main.tile[i, j - 1].frameX = 66;
                        Main.tile[i, j - 1].frameY = 176;
                    }
                    break;
                }
                if (WorldGen.genRand.Next(13) != 0)
                {
                    style = WorldGen.genRand.Next(3);
                    if (style == 0)
                    {
                        Main.tile[i, j - height].frameX = 22;
                        Main.tile[i, j - height].frameY = 198;
                    }
                    if (style == 1)
                    {
                        Main.tile[i, j - height].frameX = 22;
                        Main.tile[i, j - height].frameY = 220;
                    }
                    if (style == 2)
                    {
                        Main.tile[i, j - height].frameX = 22;
                        Main.tile[i, j - height].frameY = 242;
                    }
                }
                else
                {
                    style = WorldGen.genRand.Next(3);
                    if (style == 0)
                    {
                        Main.tile[i, j - height].frameX = 0;
                        Main.tile[i, j - height].frameY = 198;
                    }
                    if (style == 1)
                    {
                        Main.tile[i, j - height].frameX = 0;
                        Main.tile[i, j - height].frameY = 220;
                    }
                    if (style == 2)
                    {
                        Main.tile[i, j - height].frameX = 0;
                        Main.tile[i, j - height].frameY = 242;
                    }
                }
                WorldGen.RangeFrame(i - 2, j - height - 1, i + 2, j + 1);
                if (Main.netMode == 2)
                {
                    NetMessage.SendTileSquare(-1, i, (int)((double)j - (double)height * 0.5), height + 1);
                }
                return(true);
            }
        }
        return(false);
    }