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

◆ CheckCatTail()

static void Terraria.WorldGen.CheckCatTail ( int x,
int j )
inlinestatic

Definition at line 52901 of file WorldGen.cs.

52902 {
52903 if (Main.tile[x, j] == null)
52904 {
52905 return;
52906 }
52907 int num = j;
52908 bool flag = false;
52909 int num2 = num;
52910 while ((!Main.tile[x, num2].active() || !Main.tileSolid[Main.tile[x, num2].type] || Main.tileSolidTop[Main.tile[x, num2].type]) && num2 < Main.maxTilesY - 50)
52911 {
52912 if (Main.tile[x, num2].active() && Main.tile[x, num2].type != 519)
52913 {
52914 flag = true;
52915 }
52916 if (!Main.tile[x, num2].active())
52917 {
52918 break;
52919 }
52920 num2++;
52921 if (Main.tile[x, num2] == null)
52922 {
52923 return;
52924 }
52925 }
52926 num = num2 - 1;
52927 if (Main.tile[x, num] == null)
52928 {
52929 return;
52930 }
52931 while (Main.tile[x, num] != null && Main.tile[x, num].liquid > 0 && num > 50)
52932 {
52933 if ((Main.tile[x, num].active() && Main.tile[x, num].type != 519) || Main.tile[x, num].liquidType() != 0)
52934 {
52935 flag = true;
52936 }
52937 num--;
52938 if (Main.tile[x, num] == null)
52939 {
52940 return;
52941 }
52942 }
52943 num++;
52944 if (Main.tile[x, num] == null)
52945 {
52946 return;
52947 }
52948 int num3 = num;
52949 int num4 = catTailDistance;
52950 if (num2 - num3 > num4)
52951 {
52952 flag = true;
52953 }
52954 int type = Main.tile[x, num2].type;
52955 int num5 = -1;
52956 switch (type)
52957 {
52958 case 2:
52959 case 477:
52960 num5 = 0;
52961 break;
52962 case 53:
52963 num5 = 18;
52964 break;
52965 case 199:
52966 case 234:
52967 case 662:
52968 num5 = 54;
52969 break;
52970 case 23:
52971 case 112:
52972 case 661:
52973 num5 = 72;
52974 break;
52975 case 70:
52976 num5 = 90;
52977 break;
52978 }
52979 if (!Main.tile[x, num2].nactive())
52980 {
52981 flag = true;
52982 }
52983 if (num5 < 0)
52984 {
52985 flag = true;
52986 }
52987 num = num2 - 1;
52988 if (Main.tile[x, num] != null && !Main.tile[x, num].active())
52989 {
52990 for (int num6 = num; num6 >= num3; num6--)
52991 {
52992 if (Main.tile[x, num6] == null)
52993 {
52994 return;
52995 }
52996 if (Main.tile[x, num6].active() && Main.tile[x, num6].type == 519)
52997 {
52998 num = num6;
52999 break;
53000 }
53001 }
53002 }
53003 while (Main.tile[x, num] != null && Main.tile[x, num].active() && Main.tile[x, num].type == 519)
53004 {
53005 num--;
53006 }
53007 num++;
53008 if (Main.tile[x, num2 - 1] != null && Main.tile[x, num2 - 1].liquid < 127 && genRand.Next(4) == 0)
53009 {
53010 flag = true;
53011 }
53012 if (Main.tile[x, num] != null && Main.tile[x, num].frameX >= 180 && Main.tile[x, num].liquid > 127 && genRand.Next(4) == 0)
53013 {
53014 flag = true;
53015 }
53016 if (Main.tile[x, num] != null && Main.tile[x, num2 - 1] != null && Main.tile[x, num].frameX > 18)
53017 {
53018 if (Main.tile[x, num2 - 1].frameX < 36 || Main.tile[x, num2 - 1].frameX > 72)
53019 {
53020 flag = true;
53021 }
53022 else if (Main.tile[x, num].frameX < 90)
53023 {
53024 flag = true;
53025 }
53026 else if (Main.tile[x, num].frameX >= 108 && Main.tile[x, num].frameX <= 162)
53027 {
53028 Main.tile[x, num].frameX = 90;
53029 }
53030 }
53031 if (num2 > num + 4 && Main.tile[x, num + 4] != null && Main.tile[x, num + 3] != null && Main.tile[x, num + 4].liquid == 0 && Main.tile[x, num + 3].type == 519)
53032 {
53033 flag = true;
53034 }
53035 if (flag)
53036 {
53037 int num7 = num3;
53038 if (num < num3)
53039 {
53040 num7 = num;
53041 }
53042 num7 -= 4;
53043 for (int i = num7; i <= num2; i++)
53044 {
53045 if (Main.tile[x, i] != null && Main.tile[x, i].active() && Main.tile[x, i].type == 519)
53046 {
53047 KillTile(x, i);
53048 if (Main.netMode == 2)
53049 {
53050 NetMessage.SendData(17, -1, -1, null, 0, x, i);
53051 }
53052 SquareTileFrame(x, i);
53053 }
53054 }
53055 }
53056 else
53057 {
53058 if (num5 == Main.tile[x, num].frameY)
53059 {
53060 return;
53061 }
53062 for (int k = num; k < num2; k++)
53063 {
53064 if (Main.tile[x, k] != null && Main.tile[x, k].active() && Main.tile[x, k].type == 519)
53065 {
53066 Main.tile[x, k].frameY = (short)num5;
53067 if (Main.netMode == 2)
53068 {
53069 NetMessage.SendTileSquare(-1, x, num);
53070 }
53071 }
53072 }
53073 }
53074 }
static void KillTile(int i, int j, bool fail=false, bool effectOnly=false, bool noItem=false)
static UnifiedRandom genRand
Definition WorldGen.cs:1455
static void SquareTileFrame(int i, int j, bool resetFrame=true)
static int catTailDistance
Definition WorldGen.cs:1414

References Terraria.Main.maxTilesY, Terraria.Main.netMode, Terraria.NetMessage.SendData(), Terraria.NetMessage.SendTileSquare(), Terraria.Main.tile, Terraria.Main.tileSolid, and Terraria.Main.tileSolidTop.

+ Here is the call graph for this function: