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

◆ GrowCatTail()

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

Definition at line 49908 of file WorldGen.cs.

49909 {
49910 if (Main.netMode == 1)
49911 {
49912 return;
49913 }
49914 int num = j;
49915 while (Main.tile[x, num].liquid > 0 && num > 50)
49916 {
49917 num--;
49918 }
49919 num++;
49920 int i;
49921 for (i = num; (!Main.tile[x, i].active() || !Main.tileSolid[Main.tile[x, i].type] || Main.tileSolidTop[Main.tile[x, i].type]) && i < Main.maxTilesY - 50; i++)
49922 {
49923 }
49924 num = i - 1;
49925 while (Main.tile[x, num].active() && Main.tile[x, num].type == 519)
49926 {
49927 num--;
49928 }
49929 num++;
49930 if (Main.tile[x, num].frameX == 90 && Main.tile[x, num - 1].active() && Main.tileCut[Main.tile[x, num - 1].type])
49931 {
49932 KillTile(x, num - 1);
49933 if (Main.netMode == 2)
49934 {
49935 NetMessage.SendData(17, -1, -1, null, 0, x, num - 1);
49936 }
49937 }
49938 if (Main.tile[x, num - 1].active())
49939 {
49940 return;
49941 }
49942 if (Main.tile[x, num].frameX == 0)
49943 {
49944 Main.tile[x, num].frameX = 18;
49945 SquareTileFrame(x, num);
49946 if (Main.netMode == 2)
49947 {
49948 NetMessage.SendTileSquare(-1, x, num);
49949 }
49950 }
49951 else if (Main.tile[x, num].frameX == 18)
49952 {
49953 Main.tile[x, num].frameX = (short)(18 * genRand.Next(2, 5));
49954 Main.tile[x, num - 1].active(active: true);
49955 Main.tile[x, num - 1].type = 519;
49956 Main.tile[x, num - 1].frameX = 90;
49957 Main.tile[x, num - 1].frameY = Main.tile[x, num].frameY;
49958 Main.tile[x, num - 1].halfBrick(halfBrick: false);
49959 Main.tile[x, num - 1].slope(0);
49960 Main.tile[x, num - 1].CopyPaintAndCoating(Main.tile[x, num]);
49961 SquareTileFrame(x, num);
49962 if (Main.netMode == 2)
49963 {
49964 NetMessage.SendTileSquare(-1, x, num);
49965 }
49966 }
49967 else if (Main.tile[x, num].frameX == 90)
49968 {
49969 if (Main.tile[x, num - 1].liquid == 0)
49970 {
49971 if (!Main.tile[x, num - 2].active() && (Main.tile[x, num].liquid > 0 || Main.tile[x, num + 1].liquid > 0 || Main.tile[x, num + 2].liquid > 0) && genRand.Next(3) == 0)
49972 {
49973 Main.tile[x, num].frameX = 108;
49974 Main.tile[x, num - 1].active(active: true);
49975 Main.tile[x, num - 1].type = 519;
49976 Main.tile[x, num - 1].frameX = 90;
49977 Main.tile[x, num - 1].frameY = Main.tile[x, num].frameY;
49978 Main.tile[x, num - 1].halfBrick(halfBrick: false);
49979 Main.tile[x, num - 1].slope(0);
49980 Main.tile[x, num - 1].CopyPaintAndCoating(Main.tile[x, num]);
49981 SquareTileFrame(x, num);
49982 }
49983 else
49984 {
49985 int num2 = genRand.Next(3);
49986 Main.tile[x, num].frameX = (short)(126 + num2 * 18);
49987 Main.tile[x, num - 1].active(active: true);
49988 Main.tile[x, num - 1].type = 519;
49989 Main.tile[x, num - 1].frameX = (short)(180 + num2 * 18);
49990 Main.tile[x, num - 1].frameY = Main.tile[x, num].frameY;
49991 Main.tile[x, num - 1].halfBrick(halfBrick: false);
49992 Main.tile[x, num - 1].slope(0);
49993 Main.tile[x, num - 1].CopyPaintAndCoating(Main.tile[x, num]);
49994 SquareTileFrame(x, num);
49995 }
49996 }
49997 else
49998 {
49999 Main.tile[x, num].frameX = 108;
50000 Main.tile[x, num - 1].active(active: true);
50001 Main.tile[x, num - 1].type = 519;
50002 Main.tile[x, num - 1].frameX = 90;
50003 Main.tile[x, num - 1].frameY = Main.tile[x, num].frameY;
50004 Main.tile[x, num - 1].halfBrick(halfBrick: false);
50005 Main.tile[x, num - 1].slope(0);
50006 Main.tile[x, num - 1].CopyPaintAndCoating(Main.tile[x, num]);
50007 SquareTileFrame(x, num);
50008 }
50009 }
50010 SquareTileFrame(x, num - 1, resetFrame: false);
50011 if (Main.netMode == 2)
50012 {
50013 NetMessage.SendTileSquare(-1, x, num - 1, 1, 2);
50014 }
50015 }
static void KillTile(int i, int j, bool fail=false, bool effectOnly=false, bool noItem=false)
static UnifiedRandom genRand
Definition WorldGen.cs:1215
static void SquareTileFrame(int i, int j, bool resetFrame=true)

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