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

◆ plantDye()

static void Terraria.WorldGen.plantDye ( int i,
int j,
bool exoticPlant = false )
inlinestatic

Definition at line 61696 of file WorldGen.cs.

61697 {
61698 UnifiedRandom unifiedRandom = (gen ? genRand : Main.rand);
61699 if (!Main.tile[i, j].active() || i < 95 || i > Main.maxTilesX - 95 || j < 95 || j > Main.maxTilesY - 95)
61700 {
61701 return;
61702 }
61703 int num = 90;
61704 if (exoticPlant)
61705 {
61706 num = 240;
61707 }
61708 if (((double)j < Main.worldSurface || remixWorldGen) && (!Main.tile[i, j - 1].active() || Main.tile[i, j - 1].type == 3 || Main.tile[i, j - 1].type == 51 || Main.tile[i, j - 1].type == 61 || Main.tile[i, j - 1].type == 73 || Main.tile[i, j - 1].type == 74 || Main.tile[i, j - 1].type == 184))
61709 {
61710 int num2 = Utils.Clamp(i - num, 1, Main.maxTilesX - 1 - 1);
61711 int num3 = Utils.Clamp(i + num, 1, Main.maxTilesX - 1 - 1);
61712 int num4 = Utils.Clamp(j - num, 1, Main.maxTilesY - 1 - 1);
61713 int num5 = Utils.Clamp(j + num, 1, Main.maxTilesY - 1 - 1);
61714 for (int k = num2; k < num3; k++)
61715 {
61716 for (int l = num4; l < num5; l++)
61717 {
61718 if (Main.tile[k, l].active() && Main.tile[k, l].type == 227 && (!exoticPlant || Main.tile[k, l].frameX >= 272) && (exoticPlant || Main.tile[k, l].frameX < 272))
61719 {
61720 return;
61721 }
61722 }
61723 }
61724 if (exoticPlant)
61725 {
61726 int type = Main.tile[i, j].type;
61727 bool flag = TileID.Sets.Conversion.Grass[type] || TileID.Sets.Conversion.Moss[type] || type == 0;
61728 if (Main.tile[i, j - 1].liquid > 0 && (Main.tile[i, j - 1].lava() || Main.tile[i, j - 1].honey()))
61729 {
61730 flag = false;
61731 }
61732 if (flag)
61733 {
61734 PlaceTile(i, j - 1, 227, mute: true, forced: false, -1, genRand.Next(8, 12));
61735 }
61736 }
61737 else if (Main.tile[i, j].type == 2 || Main.tile[i, j].type == 109)
61738 {
61739 if (unifiedRandom.Next(4) == 0)
61740 {
61741 PlaceTile(i, j - 1, 227, mute: true, forced: false, -1, 4);
61742 }
61743 else
61744 {
61745 PlaceTile(i, j - 1, 227, mute: true, forced: false, -1, 3);
61746 }
61747 }
61748 else if (Main.tile[i, j].type == 60)
61749 {
61750 if (unifiedRandom.Next(2) == 0)
61751 {
61752 PlaceTile(i, j - 1, 227, mute: true, forced: false, -1, 2);
61753 }
61754 else
61755 {
61756 PlaceTile(i, j - 1, 227, mute: true, forced: false, -1, 4);
61757 }
61758 }
61759 else if (Main.tile[i, j].type == 53 && Main.tile[i, j - 1].liquid == byte.MaxValue && Main.tile[i, j - 2].liquid == byte.MaxValue)
61760 {
61761 PlaceTile(i, j - 1, 227, mute: true, forced: false, -1, 2);
61762 }
61763 else if (Main.tile[i, j].type == 80 && !Main.tile[i - 1, j - 1].active() && !Main.tile[i + 1, j - 1].active())
61764 {
61765 try
61766 {
61767 bool flag2 = true;
61768 for (int m = i - 5; m <= i + 5; m++)
61769 {
61770 for (int n = j - 5; n <= j + 15; n++)
61771 {
61772 if (Main.tile[m, n].active() && (Main.tile[m, n].type == 112 || Main.tile[m, n].type == 234))
61773 {
61774 flag2 = false;
61775 }
61776 }
61777 }
61778 if (flag2)
61779 {
61780 PlaceTile(i, j - 1, 227, mute: true, forced: false, -1, 6);
61781 }
61782 }
61783 catch
61784 {
61785 }
61786 }
61787 }
61788 if ((!((double)j >= Main.worldSurface) && !remixWorldGen) || j >= Main.UnderworldLayer)
61789 {
61790 return;
61791 }
61792 if (!Main.tile[i, j - 1].active() || Main.tile[i, j - 1].type == 3 || Main.tile[i, j - 1].type == 51 || Main.tile[i, j - 1].type == 61 || Main.tile[i, j - 1].type == 73 || Main.tile[i, j - 1].type == 74 || Main.tile[i, j - 1].type == 184)
61793 {
61794 int num6 = Utils.Clamp(i - num, 1, Main.maxTilesX - 1 - 1);
61795 int num7 = Utils.Clamp(i + num, 1, Main.maxTilesX - 1 - 1);
61796 int num8 = Utils.Clamp(j - num, 1, Main.maxTilesY - 1 - 1);
61797 int num9 = Utils.Clamp(j + num, 1, Main.maxTilesY - 1 - 1);
61798 for (int num10 = num6; num10 < num7; num10++)
61799 {
61800 for (int num11 = num8; num11 < num9; num11++)
61801 {
61802 if (Main.tile[num10, num11].active() && Main.tile[num10, num11].type == 227 && (!exoticPlant || Main.tile[num10, num11].frameX >= 272) && (exoticPlant || Main.tile[num10, num11].frameX < 272))
61803 {
61804 return;
61805 }
61806 }
61807 }
61808 if (exoticPlant)
61809 {
61810 int type2 = Main.tile[i, j].type;
61812 {
61813 PlaceTile(i, j - 1, 227, mute: true, forced: false, -1, genRand.Next(8, 12));
61814 }
61815 }
61816 else if (Main.tile[i, j].type == 60)
61817 {
61818 if (unifiedRandom.Next(2) == 0)
61819 {
61820 PlaceTile(i, j - 1, 227, mute: true, forced: false, -1, 2);
61821 }
61822 else if (unifiedRandom.Next(2) == 0)
61823 {
61824 PlaceTile(i, j - 1, 227, mute: true);
61825 }
61826 else
61827 {
61828 PlaceTile(i, j - 1, 227, mute: true, forced: false, -1, 1);
61829 }
61830 }
61831 else if (Main.tile[i, j].type == 0 || Main.tile[i, j].type == 1 || Main.tile[i, j].type == 59)
61832 {
61833 if (unifiedRandom.Next(2) == 0)
61834 {
61835 PlaceTile(i, j - 1, 227, mute: true);
61836 }
61837 else
61838 {
61839 PlaceTile(i, j - 1, 227, mute: true, forced: false, -1, 1);
61840 }
61841 }
61842 else if (Main.tile[i, j - 1].liquid == byte.MaxValue && Main.tile[i, j - 2].liquid == byte.MaxValue)
61843 {
61844 PlaceTile(i, j - 1, 227, mute: true, forced: false, -1, 5);
61845 }
61846 }
61847 if (Main.tile[i, j + 1].active() || exoticPlant)
61848 {
61849 return;
61850 }
61851 for (int num12 = i - num; num12 < i + num; num12++)
61852 {
61853 for (int num13 = j - num; num13 < j + num; num13++)
61854 {
61855 if (Main.tile[num12, num13].active() && Main.tile[num12, num13].type == 227)
61856 {
61857 return;
61858 }
61859 }
61860 }
61861 if (Main.tile[i, j].type == 0)
61862 {
61863 PlaceTile(i, j + 1, 227, mute: true, forced: false, -1, 7);
61864 }
61865 }
static bool remixWorldGen
Definition WorldGen.cs:1148
static volatile bool gen
Definition WorldGen.cs:972
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

References Terraria.ID.TileID.Sets.Conversion.Grass, Terraria.Main.maxTilesX, Terraria.Main.maxTilesY, Terraria.ID.TileID.Sets.Conversion.Moss, Terraria.Main.rand, Terraria.Main.tile, System.type, Terraria.Main.UnderworldLayer, and Terraria.Main.worldSurface.