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

◆ CheckPot()

static void Terraria.WorldGen.CheckPot ( int i,
int j,
int type = 28 )
inlinestatic

Definition at line 47997 of file WorldGen.cs.

47998 {
47999 if (destroyObject)
48000 {
48001 return;
48002 }
48003 bool flag = false;
48004 int num = 0;
48005 int num2 = j;
48006 for (num += Main.tile[i, j].frameX / 18; num > 1; num -= 2)
48007 {
48008 }
48009 num *= -1;
48010 num += i;
48011 int num3 = Main.tile[i, j].frameY / 18;
48012 int num4 = 0;
48013 while (num3 > 1)
48014 {
48015 num3 -= 2;
48016 num4++;
48017 }
48018 num2 -= num3;
48019 for (int k = num; k < num + 2; k++)
48020 {
48021 for (int l = num2; l < num2 + 2; l++)
48022 {
48023 if (Main.tile[k, l] == null)
48024 {
48025 Main.tile[k, l] = new Tile();
48026 }
48027 int num5;
48028 for (num5 = Main.tile[k, l].frameX / 18; num5 > 1; num5 -= 2)
48029 {
48030 }
48031 if (!Main.tile[k, l].active() || Main.tile[k, l].type != type || num5 != k - num || Main.tile[k, l].frameY != (l - num2) * 18 + num4 * 36)
48032 {
48033 flag = true;
48034 }
48035 }
48036 if (Main.tile[k, num2 + 2] == null)
48037 {
48038 Main.tile[k, num2 + 2] = new Tile();
48039 }
48040 if (!SolidTile2(k, num2 + 2))
48041 {
48042 flag = true;
48043 }
48044 }
48045 if (!flag)
48046 {
48047 return;
48048 }
48049 destroyObject = true;
48050 if (num4 >= 7 && num4 <= 9)
48051 {
48052 SoundEngine.PlaySound(6, i * 16, j * 16);
48053 }
48054 else if (num4 >= 16 && num4 <= 24)
48055 {
48056 SoundEngine.PlaySound(4, i * 16, j * 16);
48057 }
48058 else
48059 {
48060 SoundEngine.PlaySound(13, i * 16, j * 16);
48061 }
48062 for (int m = num; m < num + 2; m++)
48063 {
48064 for (int n = num2; n < num2 + 2; n++)
48065 {
48066 if (Main.tile[m, n].type == type && Main.tile[m, n].active())
48067 {
48068 KillTile(m, n);
48069 }
48070 }
48071 }
48072 switch (num4)
48073 {
48074 case 0:
48075 Gore.NewGore(new Vector2(i * 16, j * 16), default(Vector2), 51);
48076 Gore.NewGore(new Vector2(i * 16, j * 16), default(Vector2), 52);
48077 Gore.NewGore(new Vector2(i * 16, j * 16), default(Vector2), 53);
48078 break;
48079 case 1:
48080 Gore.NewGore(new Vector2(i * 16, j * 16), default(Vector2), 166);
48081 Gore.NewGore(new Vector2(i * 16, j * 16), default(Vector2), 167);
48082 Gore.NewGore(new Vector2(i * 16, j * 16), default(Vector2), 168);
48083 break;
48084 case 2:
48085 Gore.NewGore(new Vector2(i * 16, j * 16), default(Vector2), 169);
48086 Gore.NewGore(new Vector2(i * 16, j * 16), default(Vector2), 170);
48087 Gore.NewGore(new Vector2(i * 16, j * 16), default(Vector2), 171);
48088 break;
48089 case 3:
48090 Gore.NewGore(new Vector2(i * 16, j * 16), default(Vector2), 172);
48091 Gore.NewGore(new Vector2(i * 16, j * 16), default(Vector2), 173);
48092 Gore.NewGore(new Vector2(i * 16, j * 16), default(Vector2), 174);
48093 break;
48094 case 4:
48095 case 5:
48096 case 6:
48097 Gore.NewGore(new Vector2(i * 16, j * 16), default(Vector2), 197);
48098 Gore.NewGore(new Vector2(i * 16, j * 16), default(Vector2), 198);
48099 break;
48100 default:
48101 if (num4 >= 7 && num4 <= 9)
48102 {
48103 Gore.NewGore(new Vector2(i * 16, j * 16), default(Vector2), 199);
48104 Gore.NewGore(new Vector2(i * 16, j * 16), default(Vector2), 200);
48105 }
48106 else if (num4 >= 10 && num4 <= 12)
48107 {
48108 Gore.NewGore(new Vector2(i * 16, j * 16), default(Vector2), 201);
48109 Gore.NewGore(new Vector2(i * 16, j * 16), default(Vector2), 202);
48110 }
48111 else if (num4 >= 13 && num4 <= 15)
48112 {
48113 Gore.NewGore(new Vector2(i * 16, j * 16), default(Vector2), 203);
48114 Gore.NewGore(new Vector2(i * 16, j * 16), default(Vector2), 204);
48115 }
48116 else
48117 {
48118 if ((num4 >= 16 && num4 <= 18) || (num4 >= 19 && num4 <= 21) || (num4 >= 22 && num4 <= 24))
48119 {
48120 break;
48121 }
48122 if (num4 >= 25 && num4 <= 27)
48123 {
48124 Gore.NewGore(new Vector2(i * 16, j * 16), default(Vector2), genRand.Next(217, 220));
48125 Gore.NewGore(new Vector2(i * 16, j * 16), default(Vector2), genRand.Next(217, 220));
48126 }
48127 else if (num4 >= 28 && num4 <= 30)
48128 {
48129 Gore.NewGore(new Vector2(i * 16, j * 16), default(Vector2), genRand.Next(315, 317));
48130 Gore.NewGore(new Vector2(i * 16, j * 16), default(Vector2), genRand.Next(315, 317));
48131 }
48132 else if (num4 >= 31 && num4 <= 33)
48133 {
48134 int num6 = genRand.Next(2, 5);
48135 for (int num7 = 0; num7 < num6; num7++)
48136 {
48137 Gore.NewGore(new Vector2(i * 16, j * 16), default(Vector2), 698 + genRand.Next(6));
48138 }
48139 }
48140 else if (num4 >= 34 && num4 <= 36)
48141 {
48142 Gore.NewGore(new Vector2(i * 16, j * 16), default(Vector2), 1122);
48143 Gore.NewGore(new Vector2(i * 16, j * 16), default(Vector2), 1123);
48144 Gore.NewGore(new Vector2(i * 16, j * 16), default(Vector2), 1124);
48145 }
48146 }
48147 break;
48148 }
48149 if (Main.netMode != 1 && type != 653)
48150 {
48151 SpawnThingsFromPot(i, j, num, num2, num4);
48152 }
48153 destroyObject = false;
48154 }
static void PlaySound(int type, Vector2 position, int style=1)
static bool destroyObject
Definition WorldGen.cs:1020
static void KillTile(int i, int j, bool fail=false, bool effectOnly=false, bool noItem=false)
static UnifiedRandom genRand
Definition WorldGen.cs:1215
static bool SolidTile2(Tile testTile)
static void SpawnThingsFromPot(int i, int j, int x2, int y2, int style)

References Terraria.Main.netMode, Terraria.Gore.NewGore(), Terraria.Audio.SoundEngine.PlaySound(), Terraria.DataStructures.Tile, Terraria.Main.tile, and System.type.