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

◆ UpdateTime()

static void Terraria.Main.UpdateTime ( )
inlinestaticprivate

Definition at line 81927 of file Main.cs.

81928 {
81929 //IL_0465: Unknown result type (might be due to invalid IL or missing references)
81930 //IL_04f5: Unknown result type (might be due to invalid IL or missing references)
81931 //IL_04ff: Unknown result type (might be due to invalid IL or missing references)
81933 {
81934 cloudBGActive = 0f;
81935 if (numClouds > 30)
81936 {
81937 numClouds = 30;
81938 }
81939 }
81940 if (ladyBugRainBoost > 0.0)
81941 {
81943 }
81944 if (pumpkinMoon)
81945 {
81946 bloodMoon = false;
81947 snowMoon = false;
81948 }
81949 if (snowMoon)
81950 {
81951 bloodMoon = false;
81952 }
81953 if ((netMode != 1 && !gameMenu) || netMode == 2)
81954 {
81955 if (slimeRainTime > 0.0)
81956 {
81958 if (slimeRainTime <= 0.0)
81959 {
81960 StopSlimeRain();
81961 }
81962 }
81963 else if (slimeRainTime < 0.0)
81964 {
81966 if (slimeRainTime > 0.0)
81967 {
81968 slimeRainTime = 0.0;
81969 }
81970 }
81971 if (raining)
81972 {
81974 {
81976 {
81977 StopRain();
81978 }
81979 else
81980 {
81983 {
81984 double num = 86400.0 / desiredWorldEventsUpdateRate / 24.0;
81985 if (rainTime <= 0.0)
81986 {
81987 StopRain();
81988 }
81989 else if (rand.NextDouble() <= 1.0 / (num * 2.0))
81990 {
81991 ChangeRain();
81992 }
81993 }
81994 }
81995 }
81996 }
81998 {
81999 double num2 = 86400.0 / desiredWorldEventsUpdateRate;
82001 {
82002 if (rand.NextDouble() <= 1.0 / (num2 * 5.75))
82003 {
82004 StartRain();
82005 }
82006 else if (cloudBGActive >= 1f && rand.NextDouble() <= 1.0 / (num2 * 4.25))
82007 {
82008 StartRain();
82009 }
82010 else if (ladyBugRainBoost > 0.0 && rand.NextDouble() <= 1.0 / num2)
82011 {
82012 StartRain();
82013 }
82014 }
82015 if (!raining && !NPC.BusyWithAnyInvasionOfSorts() && dayTime && time < 27000.0 && desiredWorldEventsUpdateRate > 0.0)
82016 {
82017 double num3 = 450000.00000000006 / desiredWorldEventsUpdateRate;
82018 if (!NPC.downedSlimeKing)
82019 {
82020 num3 /= 2.0;
82021 }
82022 if (hardMode)
82023 {
82024 num3 *= 1.5;
82025 }
82027 if (!flag)
82028 {
82029 num3 *= 5.0;
82030 }
82031 if (num3 > 0.0 && (flag || expertMode) && rand.NextDouble() <= 1.0 / num3)
82032 {
82034 }
82035 }
82036 }
82037 }
82039 {
82040 if (netMode == 2)
82041 {
82042 NetMessage.SendData(7);
82043 }
82045 }
82047 double num4 = time;
82048 time += dayRate;
82055 WorldGen.mysticLogsEvent.UpdateTime();
82056 PylonSystem.Update();
82057 if (!dedServ)
82058 {
82059 if (NPC.MoonLordCountdown > 0)
82060 {
82061 float num5 = MathHelper.Clamp((float)Math.Sin((float)NPC.MoonLordCountdown / 60f * 0.5f) * 2f, 0f, 1f);
82062 num5 *= 0.75f - 0.5f * ((float)NPC.MoonLordCountdown / (float)NPC.MaxMoonLordCountdown);
82063 if (!Terraria.Graphics.Effects.Filters.Scene["MoonLordShake"].IsActive())
82064 {
82065 Terraria.Graphics.Effects.Filters.Scene.Activate("MoonLordShake", Main.player[myPlayer].position);
82066 }
82067 Terraria.Graphics.Effects.Filters.Scene["MoonLordShake"].GetShader().UseIntensity(num5);
82068 }
82069 else if (Terraria.Graphics.Effects.Filters.Scene["MoonLordShake"].IsActive())
82070 {
82071 Terraria.Graphics.Effects.Filters.Scene.Deactivate("MoonLordShake");
82072 }
82073 }
82074 if (NPC.MoonLordCountdown > 0)
82075 {
82076 NPC.MoonLordCountdown--;
82077 if (NPC.MoonLordCountdown <= 0 && netMode != 1)
82078 {
82079 NPC.SpawnOnPlayer(Player.FindClosest(new Vector2((float)(maxTilesX / 2), (float)worldSurface / 2f) * 16f, 0, 0), 398);
82080 }
82081 }
82082 if (NPC.taxCollector && netMode != 2 && !gameMenu)
82083 {
82084 Main.player[myPlayer].taxTimer += dayRate;
82085 if (Main.player[myPlayer].taxTimer >= Player.taxRate)
82086 {
82087 Main.player[myPlayer].taxTimer -= Player.taxRate;
82088 Main.player[myPlayer].CollectTaxes();
82089 }
82090 }
82091 if (netMode != 1)
82092 {
82094 }
82095 if (netMode != 1)
82096 {
82097 if (NPC.travelNPC)
82098 {
82099 if (!dayTime || time > 48600.0)
82100 {
82101 WorldGen.UnspawnTravelNPC();
82102 }
82103 }
82104 else if (!IsFastForwardingTime() && dayTime && time < 27000.0 && rand.NextDouble() < dayRate / 108000.0)
82105 {
82106 int num6 = 0;
82107 for (int i = 0; i < 200; i++)
82108 {
82109 if (npc[i].active && npc[i].townNPC && npc[i].type != 37 && npc[i].type != 453)
82110 {
82111 num6++;
82112 }
82113 }
82114 if (num6 >= 2)
82115 {
82116 WorldGen.SpawnTravelNPC();
82117 }
82118 }
82119 NPC.travelNPC = false;
82120 }
82122 if (!dayTime)
82123 {
82124 eclipse = false;
82126 {
82127 if (WorldGen.spawnEye && netMode != 1 && time > 4860.0)
82128 {
82129 for (int j = 0; j < 255; j++)
82130 {
82131 if (Main.player[j].active && !Main.player[j].dead && ((double)Main.player[j].position.Y < worldSurface * 16.0 || remixWorld))
82132 {
82133 NPC.SpawnOnPlayer(j, 4);
82134 WorldGen.spawnEye = false;
82135 break;
82136 }
82137 }
82138 }
82139 if (WorldGen.spawnHardBoss > 0 && netMode != 1 && time > 4860.0)
82140 {
82141 bool flag2 = false;
82142 for (int k = 0; k < 200; k++)
82143 {
82144 if (npc[k].active && npc[k].boss)
82145 {
82146 flag2 = true;
82147 }
82148 }
82149 if (!flag2)
82150 {
82151 for (int l = 0; l < 255; l++)
82152 {
82153 if (Main.player[l].active && !Main.player[l].dead && ((double)Main.player[l].position.Y < worldSurface * 16.0 || remixWorld))
82154 {
82155 if (remixWorld && getGoodWorld)
82156 {
82157 NPC.SpawnMechQueen(l);
82158 }
82159 else if (WorldGen.spawnHardBoss == 1)
82160 {
82161 NPC.SpawnOnPlayer(l, 134);
82162 }
82163 else if (WorldGen.spawnHardBoss == 2)
82164 {
82165 NPC.SpawnOnPlayer(l, 125);
82166 NPC.SpawnOnPlayer(l, 126);
82167 }
82168 else if (WorldGen.spawnHardBoss == 3)
82169 {
82170 NPC.SpawnOnPlayer(l, 127);
82171 }
82172 break;
82173 }
82174 }
82175 }
82176 WorldGen.spawnHardBoss = 0;
82177 }
82178 if (netMode != 1)
82179 {
82180 double num7 = 16200.0;
82182 bool flag3 = raining;
82183 if (num8 && flag3 && (!NPC.downedDeerclops || rand.Next(4) == 0))
82184 {
82185 for (int m = 0; m < 255; m++)
82186 {
82187 Player player = Main.player[m];
82188 if (player.active && !player.dead && !((double)player.position.Y >= worldSurface * 16.0) && player.ZoneSnow && !(player.townNPCs > 0f) && (player.statLifeMax2 >= 200 || (int)player.statDefense >= 9) && !NPC.AnyDanger())
82189 {
82190 NPC.SpawnOnPlayer(m, 668);
82191 break;
82192 }
82193 }
82194 }
82195 }
82196 }
82197 if (time > 32400.0)
82198 {
82200 }
82202 }
82203 else
82204 {
82205 WorldGen.spawnHardBoss = 0;
82206 WorldGen.spawnEye = false;
82207 bloodMoon = false;
82208 stopMoonEvent();
82209 if (time > 54000.0)
82210 {
82212 }
82214 }
82215 }
static FilterManager Scene
Definition Filters.cs:5
static bool raining
Definition Main.cs:1401
static double time
The time that has passed since it last became day/night. Increased by F:Terraria....
Definition Main.cs:1375
static bool slimeRain
Definition Main.cs:1241
static void HandleMeteorFall()
Definition Main.cs:82572
static double ladyBugRainBoost
Definition Main.cs:2688
static float oldMaxRaining
Definition Main.cs:1397
static double worldSurface
The y-coordinate of the top of the dirt layer, in tile coordinates. Corresponds to 0' on the Depth Me...
Definition Main.cs:1351
static int numClouds
Definition Main.cs:1453
static double desiredWorldEventsUpdateRate
Definition Main.cs:2724
static int myPlayer
The index in F:Terraria.Main.player of this client's Player. If this is 255, this client is the ser...
Definition Main.cs:1958
static int netMode
Denotes the current network mode: 0 for single player client, 1 for multiplayer client,...
Definition Main.cs:2182
static bool expertMode
Definition Main.cs:2898
static bool IsFastForwardingTime()
Definition Main.cs:6063
static bool dayTime
Definition Main.cs:1365
static bool dedServ
Definition Main.cs:1301
static void UpdateSlimeRainWarning()
Definition Main.cs:82600
static bool bloodMoon
Definition Main.cs:1387
static bool AnyPlayerReadyToFightKingSlime()
Definition Main.cs:82217
static TeleportPylonsSystem PylonSystem
Definition Main.cs:2022
static void StopSlimeRain(bool announce=true)
Definition Main.cs:81892
static int maxTilesX
The width of the currently-loaded world in tiles.
Definition Main.cs:1186
static bool getGoodWorld
Definition Main.cs:369
static void UpdateTime_StartNight(ref bool stopEvents)
Definition Main.cs:82261
static void UpdateTime_StartDay(ref bool stopEvents)
Definition Main.cs:82455
static void stopMoonEvent()
Definition Main.cs:10490
static bool eclipse
Definition Main.cs:1403
static bool ShouldNormalEventsBeAbleToStart()
Definition Main.cs:82252
static UnifiedRandom rand
Definition Main.cs:2758
static NPC[] npc
Definition Main.cs:1830
static void UpdateTimeRate()
Definition Main.cs:6102
static void UpdateTime_SpawnTownNPCs()
Definition Main.cs:82643
static double rainTime
Definition Main.cs:1399
static double dayRate
The rate at which F:Terraria.Main.time updates per tick. Can be modified using M:Terraria....
Definition Main.cs:778
static void StartRain()
Starts rain for a random amount of time. Should be called on the server (netMode !...
Definition Main.cs:81792
static float maxRaining
Definition Main.cs:1395
static void ChangeRain()
Definition Main.cs:81843
static double slimeRainTime
Definition Main.cs:1239
static float cloudBGActive
Definition Main.cs:656
static bool snowMoon
Definition Main.cs:1391
static bool pumpkinMoon
Definition Main.cs:1389
static bool gameMenu
Definition Main.cs:2076
static bool hardMode
Definition Main.cs:1091
static Player[] player
Definition Main.cs:1960
static void StartSlimeRain(bool announce=true)
Definition Main.cs:81848
static bool remixWorld
Definition Main.cs:377
static void StopRain()
Stops rain. Should be called on the server (netMode != client) - vanilla syncs it using M:Terraria....
Definition Main.cs:81781

References Terraria.NPC.AnyDanger(), Terraria.Main.AnyPlayerReadyToFightKingSlime(), Terraria.Main.bloodMoon, Terraria.NPC.BusyWithAnyInvasionOfSorts(), Terraria.Main.ChangeRain(), Terraria.Main.cloudBGActive, Terraria.Main.dayRate, Terraria.Main.dayTime, Terraria.Main.dedServ, Terraria.Main.desiredWorldEventsUpdateRate, Terraria.NPC.downedDeerclops, Terraria.NPC.downedSlimeKing, Terraria.Main.eclipse, Terraria.GameContent.Creative.CreativePowers.ASharedTogglePower.Enabled, Terraria.Main.expertMode, Terraria.Player.FindClosest(), Terraria.Main.gameMenu, Terraria.Main.getGoodWorld, Terraria.Main.HandleMeteorFall(), Terraria.Main.hardMode, Terraria.GameContent.Creative.CreativePowerManager.Instance, Terraria.Main.IsFastForwardingTime(), Terraria.Main.ladyBugRainBoost, Terraria.GameContent.Events.LanternNight.LanternsUp, Terraria.NPC.MaxMoonLordCountdown, Terraria.Main.maxRaining, Terraria.Main.maxTilesX, Terraria.NPC.MoonLordCountdown, Terraria.Main.myPlayer, Terraria.WorldGen.mysticLogsEvent, Terraria.Main.netMode, Terraria.GameContent.Events.LanternNight.NextNightIsLanternNight, Terraria.Main.npc, Terraria.Main.numClouds, Terraria.Main.oldMaxRaining, Terraria.Main.player, Terraria.Main.pumpkinMoon, Terraria.Main.PylonSystem, Terraria.Main.raining, Terraria.Main.rainTime, Terraria.Main.rand, Terraria.Main.remixWorld, Terraria.Graphics.Effects.Filters.Scene, Terraria.NetMessage.SendData(), Terraria.Main.ShouldNormalEventsBeAbleToStart(), Terraria.Main.slimeRain, Terraria.Main.slimeRainTime, Terraria.Main.snowMoon, Terraria.WorldGen.spawnEye, Terraria.WorldGen.spawnHardBoss, Terraria.NPC.SpawnMechQueen(), Terraria.NPC.SpawnOnPlayer(), Terraria.WorldGen.SpawnTravelNPC(), Terraria.Main.StartRain(), Terraria.Main.StartSlimeRain(), Terraria.Main.stopMoonEvent(), Terraria.Main.StopRain(), Terraria.Main.StopSlimeRain(), Terraria.NPC.taxCollector, Terraria.Player.taxRate, Terraria.Main.time, Terraria.NPC.travelNPC, Terraria.WorldGen.UnspawnTravelNPC(), Terraria.Main.UpdateSlimeRainWarning(), Terraria.GameContent.Events.BirthdayParty.UpdateTime(), Terraria.GameContent.Events.CreditsRollEvent.UpdateTime(), Terraria.GameContent.Events.CultistRitual.UpdateTime(), Terraria.GameContent.Events.DD2Event.UpdateTime(), Terraria.GameContent.Events.LanternNight.UpdateTime(), Terraria.GameContent.Events.Sandstorm.UpdateTime(), Terraria.Main.UpdateTime_SpawnTownNPCs(), Terraria.Main.UpdateTime_StartDay(), Terraria.Main.UpdateTime_StartNight(), Terraria.Main.UpdateTimeRate(), and Terraria.Main.worldSurface.

Referenced by Terraria.Main.DoUpdateInWorld(), and Terraria.Main.UpdateMenu().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: