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

◆ PlaceCatTail()

static Point Terraria.WorldGen.PlaceCatTail ( int x,
int j )
inlinestatic

Definition at line 52771 of file WorldGen.cs.

52772 {
52773 //IL_002b: Unknown result type (might be due to invalid IL or missing references)
52774 //IL_008d: Unknown result type (might be due to invalid IL or missing references)
52775 //IL_0114: Unknown result type (might be due to invalid IL or missing references)
52776 //IL_0223: Unknown result type (might be due to invalid IL or missing references)
52777 //IL_01b3: Unknown result type (might be due to invalid IL or missing references)
52778 //IL_02db: Unknown result type (might be due to invalid IL or missing references)
52779 //IL_025d: Unknown result type (might be due to invalid IL or missing references)
52780 //IL_02e4: Unknown result type (might be due to invalid IL or missing references)
52781 //IL_0317: Unknown result type (might be due to invalid IL or missing references)
52782 //IL_03a1: Unknown result type (might be due to invalid IL or missing references)
52783 //IL_03be: Unknown result type (might be due to invalid IL or missing references)
52784 //IL_0437: Unknown result type (might be due to invalid IL or missing references)
52785 //IL_04f8: Unknown result type (might be due to invalid IL or missing references)
52786 int num = j;
52787 Point result = default(Point);
52788 ((Point)(ref result))._002Ector(-1, -1);
52789 if (x < 50 || x > Main.maxTilesX - 50 || num < 50 || num > Main.maxTilesY - 50)
52790 {
52791 return result;
52792 }
52793 if ((Main.tile[x, num].active() && Main.tile[x, num].type != 71) || Main.tile[x, num].liquid == 0 || Main.tile[x, num].liquidType() != 0)
52794 {
52795 return result;
52796 }
52797 while (Main.tile[x, num].liquid > 0 && num > 50)
52798 {
52799 num--;
52800 }
52801 num++;
52802 if (Main.tile[x, num].active() || Main.tile[x, num - 1].active() || Main.tile[x, num].liquid == 0 || Main.tile[x, num].liquidType() != 0)
52803 {
52804 return result;
52805 }
52806 if (Main.tile[x, num].wall != 0 && Main.tile[x, num].wall != 80 && Main.tile[x, num].wall != 81 && Main.tile[x, num].wall != 69 && (Main.tile[x, num].wall < 63 || Main.tile[x, num].wall > 68))
52807 {
52808 return result;
52809 }
52810 int num2 = 7;
52811 int num3 = 0;
52812 for (int i = x - num2; i <= x + num2; i++)
52813 {
52814 for (int k = num - num2; k <= num + num2; k++)
52815 {
52816 if (Main.tile[i, k].active() && Main.tile[i, k].type == 519)
52817 {
52818 num3++;
52819 break;
52820 }
52821 }
52822 }
52823 if (num3 > 3)
52824 {
52825 return result;
52826 }
52827 int l;
52828 for (l = num; (!Main.tile[x, l].active() || !Main.tileSolid[Main.tile[x, l].type] || Main.tileSolidTop[Main.tile[x, l].type]) && l < Main.maxTilesY - 50; l++)
52829 {
52830 if (Main.tile[x, l].active() && Main.tile[x, l].type != 71)
52831 {
52832 return result;
52833 }
52834 }
52835 int num4 = catTailDistance - 1;
52836 if (l - num > num4)
52837 {
52838 return result;
52839 }
52840 if (l - num < 2)
52841 {
52842 return result;
52843 }
52844 int type = Main.tile[x, l].type;
52845 if (!Main.tile[x, l].nactive())
52846 {
52847 return result;
52848 }
52849 int num5 = -1;
52850 switch (type)
52851 {
52852 case 2:
52853 case 477:
52854 num5 = 0;
52855 break;
52856 case 53:
52857 if (x < beachDistance || x > Main.maxTilesX - beachDistance)
52858 {
52859 return result;
52860 }
52861 num5 = 18;
52862 break;
52863 case 199:
52864 case 234:
52865 case 662:
52866 num5 = 54;
52867 break;
52868 case 23:
52869 case 112:
52870 case 661:
52871 num5 = 72;
52872 break;
52873 case 70:
52874 num5 = 90;
52875 break;
52876 }
52877 if (num5 < 0)
52878 {
52879 return result;
52880 }
52881 if (Main.tile[x, l].topSlope() && gen && genRand.Next(3) != 0)
52882 {
52883 Main.tile[x, l].slope(0);
52884 }
52885 else if (Main.tile[x, l].topSlope() || Main.tile[x, l].halfBrick())
52886 {
52887 return result;
52888 }
52889 num = l - 1;
52890 Main.tile[x, num].active(active: true);
52891 Main.tile[x, num].type = 519;
52892 Main.tile[x, num].frameX = 0;
52893 Main.tile[x, num].frameY = (short)num5;
52894 Main.tile[x, num].halfBrick(halfBrick: false);
52895 Main.tile[x, num].slope(0);
52896 Main.tile[x, num].CopyPaintAndCoating(Main.tile[x, num + 1]);
52897 SquareTileFrame(x, num);
52898 return new Point(x, num);
52899 }
static volatile bool gen
Definition WorldGen.cs:1210
static UnifiedRandom genRand
Definition WorldGen.cs:1455
static readonly int beachDistance
Definition WorldGen.cs:1166
static void SquareTileFrame(int i, int j, bool resetFrame=true)
static int catTailDistance
Definition WorldGen.cs:1414

References Terraria.Main.maxTilesX, Terraria.Main.maxTilesY, Terraria.Main.tile, Terraria.Main.tileSolid, and Terraria.Main.tileSolidTop.