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

◆ UpdateWeather()

void Terraria.Main.UpdateWeather ( GameTime gameTime,
int currentDayRateIteration )
inline

Definition at line 55707 of file Main.cs.

55708 {
55709 if (netMode != 2 && currentDayRateIteration == 0)
55710 {
55711 bool flag = base.IsActive;
55712 if (thunderDelay > 0)
55713 {
55714 thunderDelay--;
55715 if (thunderDelay == 0)
55716 {
55717 Vector2 center = player[myPlayer].Center;
55718 float num = thunderDistance * 15;
55719 if (rand.Next(2) == 0)
55720 {
55721 num *= -1f;
55722 }
55723 center.X += num;
55724 int num2 = (int)(worldSurface * 16.0) - 500;
55725 if (center.Y > (float)num2)
55726 {
55727 center.Y = num2;
55728 }
55729 if (flag)
55730 {
55732 }
55733 }
55734 }
55735 if (lightningSpeed > 0f)
55736 {
55738 if (lightning >= 1f)
55739 {
55740 lightning = 1f;
55741 lightningSpeed = 0f;
55742 }
55743 Lighting.LightTiles(firstTileX, lastTileX, firstTileY, lastTileY);
55744 Lighting.LightTiles(firstTileX, lastTileX, firstTileY, lastTileY);
55745 }
55746 else if (lightning > 0f)
55747 {
55749 Lighting.LightTiles(firstTileX, lastTileX, firstTileY, lastTileY);
55750 Lighting.LightTiles(firstTileX, lastTileX, firstTileY, lastTileY);
55751 }
55752 else if (thunderDelay <= 0 && (double)player[myPlayer].position.Y < rockLayer * 16.0 && atmo == 1f && !remixWorld)
55753 {
55754 if (IsItStorming)
55755 {
55756 float num3 = 600f;
55757 float num4 = 1600f;
55758 if ((double)maxRaining > 0.8)
55759 {
55760 num3 *= 0.6f;
55761 num4 *= 0.8f;
55762 }
55763 if ((double)maxRaining > 0.7)
55764 {
55765 num3 *= 0.7f;
55766 num4 *= 0.9f;
55767 }
55768 if ((double)maxRaining > 0.6)
55769 {
55770 num3 *= 0.8f;
55771 num4 *= 0.95f;
55772 }
55773 if ((double)Math.Abs(windSpeedTarget) > 0.7)
55774 {
55775 num3 *= 0.6f;
55776 num4 *= 0.8f;
55777 }
55778 if ((double)Math.Abs(windSpeedTarget) > 0.6)
55779 {
55780 num3 *= 0.7f;
55781 num4 *= 0.9f;
55782 }
55783 if ((double)Math.Abs(windSpeedTarget) > 0.5)
55784 {
55785 num3 *= 0.8f;
55786 num4 *= 0.95f;
55787 }
55788 float num5 = rand.Next((int)num3, (int)num4);
55789 num5 *= (1f - maxRaining + 1f) / 2f;
55790 num5 *= (1f - windSpeedTarget + 1f) / 2f;
55791 if (rand.Next((int)num5) == 0)
55792 {
55793 NewLightning();
55794 }
55795 }
55796 else if ((double)GraveyardVisualIntensity >= 0.9)
55797 {
55798 int maxValue = 120;
55799 if (rand.Next(maxValue) == 0)
55800 {
55801 NewLightning();
55802 }
55803 }
55804 }
55805 }
55806 float num6 = 0.8f;
55807 float num7 = 0.0003f;
55808 float num8 = windSpeedTarget * (1f + 5f / 9f * maxRaining);
55809 num7 += Math.Abs(num8 - windSpeedCurrent) * 0.0015f;
55810 if (windSpeedCurrent < num8)
55811 {
55813 if (windSpeedCurrent > num8)
55814 {
55816 }
55817 }
55818 else if (windSpeedCurrent > num8)
55819 {
55821 if (windSpeedCurrent < num8)
55822 {
55824 }
55825 }
55826 if (netMode == 1 || (netMode != 2 && gameMenu))
55827 {
55828 return;
55829 }
55831 {
55833 {
55834 return;
55835 }
55836 windCounter--;
55837 if (windCounter <= 0)
55838 {
55839 float num9 = 1f;
55840 if (windSpeedTarget < 0f)
55841 {
55842 num9 = -1f;
55843 }
55844 if (rand.Next(4) == 0)
55845 {
55846 windSpeedTarget += (float)rand.Next(-25, 26) * 0.001f;
55847 }
55848 else if (rand.Next(2) == 0)
55849 {
55850 windSpeedTarget += (float)rand.Next(-50, 51) * 0.001f;
55851 }
55852 else
55853 {
55854 windSpeedTarget += (float)rand.Next(-100, 101) * 0.001f;
55855 }
55857 if (extremeWindCounter <= 0)
55858 {
55860 if (rand.Next(30) < 13)
55861 {
55862 if (rand.Next(2) == 0)
55863 {
55864 windSpeedTarget = 0f;
55865 windCounter = rand.Next(7200, 28801);
55866 }
55867 else
55868 {
55869 windSpeedTarget = (float)rand.Next(-200, 201) * 0.001f;
55870 }
55871 }
55872 else if (rand.Next(20) < 13)
55873 {
55874 windSpeedTarget = (float)rand.Next(-400, 401) * 0.001f;
55875 }
55876 else
55877 {
55878 windSpeedTarget = (float)rand.Next(-850, 851) * 0.001f;
55879 }
55880 if ((double)Math.Abs(windSpeedTarget) > 0.3)
55881 {
55882 extremeWindCounter += rand.Next(5, 11);
55883 }
55884 if ((double)Math.Abs(windSpeedTarget) > 0.5)
55885 {
55886 extremeWindCounter += rand.Next(10, 21);
55887 }
55888 if ((double)Math.Abs(windSpeedTarget) > 0.7)
55889 {
55890 extremeWindCounter += rand.Next(15, 31);
55891 }
55892 }
55893 else
55894 {
55896 }
55897 if (rand.Next(3) != 0 && ((num9 < 0f && windSpeedTarget > 0f) || (num9 > 0f && windSpeedTarget < 0f)))
55898 {
55899 windSpeedTarget *= -1f;
55900 }
55901 }
55902 if (windSpeedTarget > num6)
55903 {
55905 }
55906 if (windSpeedTarget < 0f - num6)
55907 {
55908 windSpeedTarget = 0f - num6;
55909 }
55910 }
55911 if (rand.Next(60) == 0)
55912 {
55913 numCloudsTemp += rand.Next(-1, 2);
55914 }
55915 if ((float)rand.Next(1000) < 50f * cloudBGAlpha)
55916 {
55917 numCloudsTemp++;
55918 }
55919 if ((float)rand.Next(1300) < 25f * (1f - cloudBGAlpha))
55920 {
55921 numCloudsTemp--;
55922 }
55923 if ((float)rand.Next(1000) < 200f * cloudAlpha && numCloudsTemp < 100)
55924 {
55925 numCloudsTemp++;
55926 }
55927 if ((float)rand.Next(1000) < 50f * cloudAlpha)
55928 {
55929 numCloudsTemp++;
55930 }
55931 if (numCloudsTemp > 66 && rand.Next(100) == 0)
55932 {
55933 numCloudsTemp -= rand.Next(1, 3);
55934 }
55935 if (numCloudsTemp < 50 && rand.Next(100) == 0)
55936 {
55937 numCloudsTemp += rand.Next(1, 3);
55938 }
55940 {
55941 numCloudsTemp = 100;
55942 }
55943 if (numCloudsTemp < -20)
55944 {
55945 numCloudsTemp = -20;
55946 }
55947 if (cloudAlpha > 0f && (float)numClouds < 200f * cloudAlpha)
55948 {
55949 while ((float)numClouds < 200f * cloudAlpha)
55950 {
55951 numClouds += rand.Next(30);
55952 if (numClouds > 200)
55953 {
55954 numClouds = 200;
55955 }
55957 {
55959 }
55960 }
55961 if (netMode == 2)
55962 {
55963 NetMessage.SendData(7);
55964 }
55965 }
55967 if (weatherCounter > 0)
55968 {
55969 return;
55970 }
55971 if (rand.Next(2) == 0)
55972 {
55973 if (rand.Next(2) == 0)
55974 {
55975 numCloudsTemp += rand.Next(250);
55976 }
55977 else
55978 {
55979 numCloudsTemp += rand.Next(100);
55980 }
55981 }
55982 if (numCloudsTemp < 0)
55983 {
55984 numCloudsTemp = 0;
55985 }
55986 if (numCloudsTemp > 200)
55987 {
55988 numCloudsTemp = 200;
55989 }
55991 weatherCounter = rand.Next(3600, 10800);
55992 if (netMode == 2)
55993 {
55994 NetMessage.SendData(7);
55995 }
55996 }
static double Abs(double value)
static void PlaySound(int type, Vector2 position, int style=1)
static float windSpeedCurrent
Definition Main.cs:1360
static float lightningDecay
Definition Main.cs:2557
static float cloudAlpha
Definition Main.cs:1302
static float windSpeedTarget
Definition Main.cs:1362
static float GraveyardVisualIntensity
Definition Main.cs:1393
static float cloudBGAlpha
Definition Main.cs:626
static int numCloudsTemp
Definition Main.cs:1358
int firstTileY
Definition Main.cs:952
static double worldSurface
Definition Main.cs:1272
static int numClouds
Definition Main.cs:1356
static int myPlayer
Definition Main.cs:1801
static float lightning
Definition Main.cs:2555
static int netMode
Definition Main.cs:2095
static void ResetWindCounter(bool resetExtreme=false)
Definition Main.cs:55675
static double rockLayer
Definition Main.cs:1274
static int thunderDistance
Definition Main.cs:2563
int lastTileY
Definition Main.cs:954
static int weatherCounter
Definition Main.cs:1354
static float atmo
Definition Main.cs:2571
int firstTileX
Definition Main.cs:948
static int extremeWindCounter
Definition Main.cs:1366
static int windCounter
Definition Main.cs:1364
static int thunderDelay
Definition Main.cs:2561
static UnifiedRandom rand
Definition Main.cs:1387
static float maxRaining
Definition Main.cs:1304
static float lightningSpeed
Definition Main.cs:2559
static void NewLightning()
Definition Main.cs:55685
static bool gameMenu
Definition Main.cs:1926
static Player[] player
Definition Main.cs:1803
int lastTileX
Definition Main.cs:950
static bool IsItStorming
Definition Main.cs:2871
static bool remixWorld
Definition Main.cs:349

References System.Math.Abs(), Terraria.Main.atmo, Terraria.Main.cloudAlpha, Terraria.Main.cloudBGAlpha, Terraria.GameContent.Creative.CreativePowers.ASharedTogglePower.Enabled, Terraria.Main.extremeWindCounter, Terraria.Main.firstTileX, Terraria.Main.firstTileY, Terraria.Main.gameMenu, Terraria.Main.GraveyardVisualIntensity, Terraria.GameContent.Creative.CreativePowerManager.Instance, Terraria.Main.IsItStorming, Terraria.GameContent.Events.LanternNight.LanternsUp, Terraria.Main.lastTileX, Terraria.Main.lastTileY, Terraria.Main.lightning, Terraria.Main.lightningDecay, Terraria.Main.lightningSpeed, Terraria.Lighting.LightTiles(), Terraria.Main.maxRaining, Terraria.Main.myPlayer, Terraria.Main.netMode, Terraria.Main.NewLightning(), Terraria.Main.numClouds, Terraria.Main.numCloudsTemp, Terraria.Main.player, Terraria.Audio.SoundEngine.PlaySound(), Terraria.Main.rand, Terraria.Main.remixWorld, Terraria.Main.ResetWindCounter(), Terraria.Main.rockLayer, Terraria.NetMessage.SendData(), Terraria.Main.thunderDelay, Terraria.Main.thunderDistance, Terraria.Main.weatherCounter, Terraria.Main.windCounter, Terraria.Main.windSpeedCurrent, Terraria.Main.windSpeedTarget, and Terraria.Main.worldSurface.

Referenced by Terraria.Main.DoUpdate().