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

◆ SonOfLakinater()

static void Terraria.WorldGen.SonOfLakinater ( int i,
int j,
double strengthMultiplier = 1::0 )
inlinestatic

Definition at line 69834 of file WorldGen.cs.

69835 {
69836 //IL_0176: Unknown result type (might be due to invalid IL or missing references)
69837 //IL_018b: Unknown result type (might be due to invalid IL or missing references)
69838 //IL_01a1: Unknown result type (might be due to invalid IL or missing references)
69839 //IL_01b6: Unknown result type (might be due to invalid IL or missing references)
69840 //IL_0661: Unknown result type (might be due to invalid IL or missing references)
69841 //IL_0662: Unknown result type (might be due to invalid IL or missing references)
69842 //IL_0663: Unknown result type (might be due to invalid IL or missing references)
69843 //IL_0668: Unknown result type (might be due to invalid IL or missing references)
69844 //IL_06aa: Unknown result type (might be due to invalid IL or missing references)
69845 //IL_06cb: Unknown result type (might be due to invalid IL or missing references)
69846 //IL_020f: Unknown result type (might be due to invalid IL or missing references)
69847 //IL_022a: Unknown result type (might be due to invalid IL or missing references)
69848 //IL_0245: Unknown result type (might be due to invalid IL or missing references)
69849 //IL_0260: Unknown result type (might be due to invalid IL or missing references)
69850 //IL_06ec: Unknown result type (might be due to invalid IL or missing references)
69851 //IL_0728: Unknown result type (might be due to invalid IL or missing references)
69852 //IL_040e: Unknown result type (might be due to invalid IL or missing references)
69853 bool lava = false;
69854 if (getGoodWorldGen && genRand.Next(3) == 0)
69855 {
69856 lava = true;
69857 }
69858 double num = (double)genRand.Next(15, 31) * strengthMultiplier;
69859 double num2 = genRand.Next(30, 61);
69860 if (genRand.Next(5) == 0)
69861 {
69862 num *= 1.3;
69863 num2 *= 1.3;
69864 }
69865 if (drunkWorldGen)
69866 {
69867 num *= 1.3;
69868 num2 *= 1.3;
69869 }
69870 Vector2D val = default(Vector2D);
69871 val.X = i;
69872 val.Y = j;
69873 double num3 = genRand.NextDouble() * 0.002;
69874 Vector2D val2 = default(Vector2D);
69875 if (genRand.Next(4) != 0)
69876 {
69877 val2.X = (double)genRand.Next(-15, 16) * 0.01;
69878 }
69879 else
69880 {
69881 val2.X = (double)genRand.Next(-50, 51) * 0.01;
69882 num3 = genRand.NextDouble() * 0.004 + 0.001;
69883 }
69884 val2.Y = (double)genRand.Next(101) * 0.01;
69885 double num4 = num;
69886 double num5 = num2;
69887 while (num > 3.0 && num2 > 0.0)
69888 {
69889 num -= (double)genRand.Next(11) * 0.1;
69890 num2 -= 1.0;
69891 int num6 = (int)(val.X - num * 4.0);
69892 int num7 = (int)(val.X + num * 4.0);
69893 int num8 = (int)(val.Y - num * 3.0);
69894 int num9 = (int)(val.Y + num * 2.0);
69895 if (num6 < 0)
69896 {
69897 num6 = 0;
69898 }
69899 if (num7 > Main.maxTilesX)
69900 {
69901 num7 = Main.maxTilesX;
69902 }
69903 if (num8 < 0)
69904 {
69905 num8 = 0;
69906 }
69907 if (num9 > Main.maxTilesY)
69908 {
69909 num9 = Main.maxTilesY;
69910 }
69911 num4 = num;
69912 for (int k = num6; k < num7; k++)
69913 {
69914 for (int l = num8; l < num9; l++)
69915 {
69916 double value = Math.Abs((double)k - val.X) * 0.6;
69917 double value2 = Math.Abs((double)l - val.Y) * 1.4;
69918 double value3 = Math.Abs((double)k - val.X) * 0.3;
69919 double value4 = Math.Abs((double)l - val.Y) * 5.0;
69920 value = Utils.Lerp(value, value3, num2 / num5);
69921 value2 = Utils.Lerp(value2, value4, num2 / num5);
69922 double num10 = Math.Sqrt(value * value + value2 * value2);
69923 int num11 = j + 5;
69924 if (num10 < num4 * 0.4)
69925 {
69926 if (l >= j)
69927 {
69928 if (l <= j + 1)
69929 {
69931 {
69932 Main.tile[k, l].liquid = byte.MaxValue;
69933 Main.tile[k, l].lava(lava);
69934 }
69935 }
69936 else
69937 {
69938 Main.tile[k, l].liquid = byte.MaxValue;
69939 Main.tile[k, l].lava(lava);
69940 }
69941 }
69942 Main.tile[k, l].active(active: false);
69943 if (!gen)
69944 {
69946 }
69947 if (Main.tile[k, l].type == 59 || Main.tile[k, l].type == 60)
69948 {
69949 SpreadGrass(k - 1, l, 59, 60);
69950 SpreadGrass(k + 1, l, 59, 60);
69951 SpreadGrass(k, l + 1, 59, 60);
69952 }
69953 }
69954 else if (l > j + 1 && num10 < num4 && Main.tile[k, l].liquid == 0)
69955 {
69956 if (Math.Abs((double)k - val.X) * 0.8 < num4 && Main.tile[k, l].wall > 0 && Main.tile[k - 1, l].wall > 0 && Main.tile[k + 1, l].wall > 0 && Main.tile[k, l + 1].wall > 0)
69957 {
69958 Main.tile[k, l].active(active: true);
69959 }
69960 }
69961 else
69962 {
69963 if (l >= j || num2 != num5 - 1.0 || !((double)l > GenVars.worldSurfaceLow - 20.0) || TileID.Sets.Clouds[Main.tile[k, l].type])
69964 {
69965 continue;
69966 }
69967 value = (double)Math.Abs(k - i) * 0.7;
69968 value2 = (double)Math.Abs(l - num11) * 1.35;
69970 double num12 = num4 * 0.4;
69971 double num13 = (double)Math.Abs(k - i) / (double)(num7 - i);
69972 num13 = 1.0 - num13;
69973 num13 *= 2.3;
69974 num13 *= num13;
69975 num13 *= num13;
69976 if (l < num11 && value < num12 + (double)Math.Abs(l - num11) * 0.5 * num13)
69977 {
69978 Main.tile[k, l].active(active: false);
69979 if (Main.tile[k, l].type == 59 || Main.tile[k, l].type == 60)
69980 {
69981 SpreadGrass(k - 1, l, 59, 60);
69982 SpreadGrass(k + 1, l, 59, 60);
69983 SpreadGrass(k, l + 1, 59, 60);
69984 }
69985 }
69986 }
69987 }
69988 }
69989 val += val2;
69990 val2.X += (double)genRand.Next(-100, 101) * num3;
69991 val2.Y += (double)genRand.Next(-100, 101) * 0.01;
69992 if (val2.X > 1.0)
69993 {
69994 val2.X = 1.0;
69995 }
69996 if (val2.X < -1.0)
69997 {
69998 val2.X = -1.0;
69999 }
70000 if (val2.Y > 1.0)
70001 {
70002 val2.Y = 1.0;
70003 }
70004 double num14 = 0.5 * (1.0 - num2 / num5);
70005 if (val2.Y < num14)
70006 {
70007 val2.Y = num14;
70008 }
70009 }
70010 }
static double Sqrt(double d)
static double Abs(double value)
static bool[] Clouds
Definition TileID.cs:125
static double worldSurfaceLow
Definition GenVars.cs:38
static volatile bool gen
Definition WorldGen.cs:972
static UnifiedRandom genRand
Definition WorldGen.cs:1215
static void SpreadGrass(int i, int j, int dirt=0, int grass=2, bool repeat=true, TileColorCache color=default(TileColorCache))
static bool drunkWorldGen
Definition WorldGen.cs:1154
static bool WillWaterPlacedHereStayPut(int x, int y)
static void SquareTileFrame(int i, int j, bool resetFrame=true)
static bool getGoodWorldGen
Definition WorldGen.cs:1156

References System.Math.Abs(), Terraria.ID.TileID.Sets.Clouds, Terraria.Utils.Lerp(), Terraria.Main.maxTilesX, Terraria.Main.maxTilesY, System.Math.Sqrt(), Terraria.Main.tile, System.value, Terraria.WorldBuilding.GenVars.worldSurfaceLow, ReLogic.Utilities.Vector2D.X, and ReLogic.Utilities.Vector2D.Y.

Referenced by Terraria.WorldGen.GenerateWorld().