Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ FinishNoTraps()

static void Terraria.WorldGen.FinishNoTraps ( )
inlinestaticprivate

Definition at line 17851 of file WorldGen.cs.

17852 {
17853 Main.tileSolid[138] = false;
17854 for (int i = 50; i < Main.maxTilesX - 50; i++)
17855 {
17856 for (int j = 50; j < Main.maxTilesY - 50; j++)
17857 {
17858 Tile tile = Main.tile[i, j];
17859 if (genRand.Next(5) == 0 && tile.active() && tile.type == 12 && tile.frameX == 0 && tile.frameY == 0)
17860 {
17861 Main.tile[i, j].type = 665;
17862 Main.tile[i, j + 1].type = 665;
17863 Main.tile[i + 1, j].type = 665;
17864 Main.tile[i + 1, j + 1].type = 665;
17865 }
17866 if (i % 2 != 0 || j % 2 != 0 || !Main.tile[i, j].active() || (Main.tile[i, j].type != 105 && (Main.tile[i, j].type != 467 || (Main.tile[i, j].frameX != 144 && Main.tile[i, j].frameX != 162))))
17867 {
17868 continue;
17869 }
17870 bool flag = false;
17871 for (int k = i - 1; k <= i + 1; k++)
17872 {
17873 for (int l = j - 1; l <= j + 1; l++)
17874 {
17875 if (Main.tile[k, l].wire())
17876 {
17877 flag = true;
17878 }
17879 }
17880 }
17881 if (!flag)
17882 {
17883 bool flag2 = false;
17884 int num = 25;
17885 int num2 = -1;
17886 int num3 = -1;
17887 for (int m = 0; m < num * num; m++)
17888 {
17889 num2 = genRand.Next(i - num, i + num + 1);
17890 num3 = genRand.Next(j - num, j + num + 1);
17891 if (Main.tile[num2, num3].wire())
17892 {
17893 flag2 = true;
17894 break;
17895 }
17896 }
17897 if (flag2)
17898 {
17899 int num4 = i;
17900 int num5 = j;
17901 Main.tile[num4, num5].wire(wire: true);
17902 while (num4 != num2)
17903 {
17904 if (num4 < num2)
17905 {
17906 num4++;
17907 }
17908 if (num4 > num2)
17909 {
17910 num4--;
17911 }
17912 Main.tile[num4, num5].wire(wire: true);
17913 }
17914 while (num5 != num3)
17915 {
17916 if (num5 < num3)
17917 {
17918 num5++;
17919 }
17920 if (num5 > num3)
17921 {
17922 num5--;
17923 }
17924 Main.tile[num4, num5].wire(wire: true);
17925 }
17926 }
17927 else if (Main.tile[i, j].type == 105)
17928 {
17929 num = 15;
17930 bool flag3 = false;
17931 for (int n = 0; n < num * num; n++)
17932 {
17933 num2 = i + genRand.Next(-num, num + 1);
17934 num3 = j + genRand.Next(-num, num + 1);
17935 PlaceTile(num2, num3, 135, mute: true, forced: true, -1, genRand.Next(2, 4));
17936 if (Main.tile[num2, num3].type == 135)
17937 {
17938 flag3 = true;
17939 break;
17940 }
17941 }
17942 if (flag3)
17943 {
17944 int num6 = i;
17945 int num7 = j;
17946 Main.tile[num6, num7].wire(wire: true);
17947 while (num6 != num2)
17948 {
17949 if (num6 < num2)
17950 {
17951 num6++;
17952 }
17953 if (num6 > num2)
17954 {
17955 num6--;
17956 }
17957 Main.tile[num6, num7].wire(wire: true);
17958 }
17959 while (num7 != num3)
17960 {
17961 if (num7 < num3)
17962 {
17963 num7++;
17964 }
17965 if (num7 > num3)
17966 {
17967 num7--;
17968 }
17969 Main.tile[num6, num7].wire(wire: true);
17970 }
17971 }
17972 }
17973 }
17974 if (Main.tile[i, j].type == 467)
17975 {
17976 int num8 = 8;
17977 for (int num9 = 0; num9 < num8 * num8; num9++)
17978 {
17979 int num10 = i + genRand.Next(-num8, num8 + 1);
17980 int num11 = j + genRand.Next(-num8, num8 + 1);
17981 if (Main.tile[num10, num11].type != 0 && Main.tile[num10, num11].type != 1 && !TileID.Sets.Ore[Main.tile[num10, num11].type] && Main.tile[num10, num11].type != 59 && Main.tile[num10, num11].type != 151)
17982 {
17983 continue;
17984 }
17985 bool flag4 = true;
17986 for (int num12 = num10 - 1; num12 <= num10 + 1; num12++)
17987 {
17988 for (int num13 = num11 - 1; num13 <= num11 + 1; num13++)
17989 {
17990 if (!SolidTile(num12, num13))
17991 {
17992 flag4 = false;
17993 }
17994 }
17995 }
17996 if (!flag4)
17997 {
17998 continue;
17999 }
18000 Tile tile2 = Main.tile[num10, num11];
18001 tile2.type = 141;
18002 tile2.frameX = (tile2.frameY = 0);
18003 tile2.slope(0);
18004 tile2.halfBrick(halfBrick: false);
18006 if (Main.tile[num10, num11].type != 141)
18007 {
18008 continue;
18009 }
18010 int num14 = i;
18011 int num15 = j;
18012 Main.tile[num14, num15].wire(wire: true);
18013 while (num14 != num10)
18014 {
18015 if (num14 < num10)
18016 {
18017 num14++;
18018 }
18019 if (num14 > num10)
18020 {
18021 num14--;
18022 }
18023 Main.tile[num14, num15].wire(wire: true);
18024 }
18025 while (num15 != num11)
18026 {
18027 if (num15 < num11)
18028 {
18029 num15++;
18030 }
18031 if (num15 > num11)
18032 {
18033 num15--;
18034 }
18035 Main.tile[num14, num15].wire(wire: true);
18036 }
18037 break;
18038 }
18039 }
18040 else
18041 {
18042 j++;
18043 }
18044 }
18045 }
18046 Main.tileSolid[138] = true;
18047 for (int num16 = 0; num16 < 8000 && Main.chest[num16] != null; num16++)
18048 {
18049 if (genRand.Next(20) != 0 || Main.chest[num16].item[1].stack == 0)
18050 {
18051 continue;
18052 }
18053 for (int num17 = 1; num17 < 40; num17++)
18054 {
18055 if (Main.chest[num16].item[num17].stack == 0)
18056 {
18057 Main.chest[num16].item[num17].SetDefaults(5346);
18058 break;
18059 }
18060 }
18061 }
18062 }
static bool[] Ore
Definition TileID.cs:295
static bool PlaceTile(int i, int j, int Type, bool mute=false, bool forced=false, int plr=-1, int style=0)
static UnifiedRandom genRand
Definition WorldGen.cs:1215
static void TileFrame(int i, int j, bool resetFrame=false, bool noBreak=false)

References Terraria.Tile.active(), Terraria.Main.chest, Terraria.Tile.frameX, Terraria.Tile.frameY, Terraria.ID.TileID.Sets.Ore, Terraria.Enums.SolidTile, Terraria.Main.tile, Terraria.Main.tileSolid, and Terraria.Tile.type.