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

◆ UpdateTime()

static void Terraria.Main.UpdateTime ( )
inlinestaticprivate

Definition at line 61580 of file Main.cs.

61581 {
61583 {
61584 cloudBGActive = 0f;
61585 if (numClouds > 30)
61586 {
61587 numClouds = 30;
61588 }
61589 }
61590 if (ladyBugRainBoost > 0)
61591 {
61593 }
61594 if (pumpkinMoon)
61595 {
61596 bloodMoon = false;
61597 snowMoon = false;
61598 }
61599 if (snowMoon)
61600 {
61601 bloodMoon = false;
61602 }
61603 if ((netMode != 1 && !gameMenu) || netMode == 2)
61604 {
61605 if (slimeRainTime > 0.0)
61606 {
61608 if (slimeRainTime <= 0.0)
61609 {
61610 StopSlimeRain();
61611 }
61612 }
61613 else if (slimeRainTime < 0.0)
61614 {
61616 if (slimeRainTime > 0.0)
61617 {
61618 slimeRainTime = 0.0;
61619 }
61620 }
61621 if (raining)
61622 {
61624 {
61626 {
61627 StopRain();
61628 }
61629 else
61630 {
61631 rainTime -= dayRate;
61632 if (dayRate > 0)
61633 {
61634 int num = 86400 / dayRate / 24;
61635 if (rainTime <= 0)
61636 {
61637 StopRain();
61638 }
61639 else if (rand.Next(num * 2) == 0)
61640 {
61641 ChangeRain();
61642 }
61643 }
61644 }
61645 }
61646 }
61648 {
61649 int num2 = 86400;
61650 num2 /= ((dayRate == 0) ? 1 : dayRate);
61652 {
61653 if (rand.Next((int)((double)num2 * 5.75)) == 0)
61654 {
61655 StartRain();
61656 }
61657 else if (cloudBGActive >= 1f && rand.Next((int)((double)num2 * 4.25)) == 0)
61658 {
61659 StartRain();
61660 }
61661 else if (ladyBugRainBoost > 0 && rand.Next(num2) == 0)
61662 {
61663 StartRain();
61664 }
61665 }
61666 if (!raining && !NPC.BusyWithAnyInvasionOfSorts() && dayTime && time < 27000.0 && dayRate > 0)
61667 {
61668 int num3 = (int)(450000.00000000006 / (double)dayRate);
61669 if (!NPC.downedSlimeKing)
61670 {
61671 num3 /= 2;
61672 }
61673 if (hardMode)
61674 {
61675 num3 = (int)((double)num3 * 1.5);
61676 }
61677 bool flag = AnyPlayerReadyToFightKingSlime();
61678 if (!flag)
61679 {
61680 num3 *= 5;
61681 }
61682 if (num3 > 0 && (flag || expertMode) && rand.Next(num3) == 0)
61683 {
61685 }
61686 }
61687 }
61688 }
61690 {
61691 if (netMode == 2)
61692 {
61693 NetMessage.SendData(7);
61694 }
61696 }
61698 double num4 = time;
61699 time += dayRate;
61706 WorldGen.mysticLogsEvent.UpdateTime();
61707 PylonSystem.Update();
61708 if (!dedServ)
61709 {
61710 if (NPC.MoonLordCountdown > 0)
61711 {
61712 float num5 = MathHelper.Clamp((float)Math.Sin((float)NPC.MoonLordCountdown / 60f * 0.5f) * 2f, 0f, 1f);
61713 num5 *= 0.75f - 0.5f * ((float)NPC.MoonLordCountdown / (float)NPC.MaxMoonLordCountdown);
61714 if (!Terraria.Graphics.Effects.Filters.Scene["MoonLordShake"].IsActive())
61715 {
61716 Terraria.Graphics.Effects.Filters.Scene.Activate("MoonLordShake", Main.player[myPlayer].position);
61717 }
61718 Terraria.Graphics.Effects.Filters.Scene["MoonLordShake"].GetShader().UseIntensity(num5);
61719 }
61720 else if (Terraria.Graphics.Effects.Filters.Scene["MoonLordShake"].IsActive())
61721 {
61722 Terraria.Graphics.Effects.Filters.Scene.Deactivate("MoonLordShake");
61723 }
61724 }
61725 if (NPC.MoonLordCountdown > 0)
61726 {
61727 NPC.MoonLordCountdown--;
61728 if (NPC.MoonLordCountdown <= 0 && netMode != 1)
61729 {
61730 NPC.SpawnOnPlayer(Player.FindClosest(new Vector2(maxTilesX / 2, (float)worldSurface / 2f) * 16f, 0, 0), 398);
61731 }
61732 }
61733 if (NPC.taxCollector && netMode != 2 && !gameMenu)
61734 {
61735 Main.player[myPlayer].taxTimer += dayRate;
61736 if (Main.player[myPlayer].taxTimer >= Player.taxRate)
61737 {
61738 Main.player[myPlayer].taxTimer -= Player.taxRate;
61739 Main.player[myPlayer].CollectTaxes();
61740 }
61741 }
61742 if (netMode != 1)
61743 {
61745 }
61746 if (netMode != 1)
61747 {
61748 if (NPC.travelNPC)
61749 {
61750 if (!dayTime || time > 48600.0)
61751 {
61752 WorldGen.UnspawnTravelNPC();
61753 }
61754 }
61755 else if (!IsFastForwardingTime() && dayTime && time < 27000.0)
61756 {
61757 int num6 = dayRate;
61758 if (num6 < 1)
61759 {
61760 num6 = 1;
61761 }
61762 int num7 = (int)(27000.0 / (double)num6);
61763 num7 *= 4;
61764 if (rand.Next(num7) == 0)
61765 {
61766 int num8 = 0;
61767 for (int i = 0; i < 200; i++)
61768 {
61769 if (npc[i].active && npc[i].townNPC && npc[i].type != 37 && npc[i].type != 453)
61770 {
61771 num8++;
61772 }
61773 }
61774 if (num8 >= 2)
61775 {
61776 WorldGen.SpawnTravelNPC();
61777 }
61778 }
61779 }
61780 NPC.travelNPC = false;
61781 }
61783 if (!dayTime)
61784 {
61785 eclipse = false;
61787 {
61788 if (WorldGen.spawnEye && netMode != 1 && time > 4860.0)
61789 {
61790 for (int j = 0; j < 255; j++)
61791 {
61792 if (Main.player[j].active && !Main.player[j].dead && ((double)Main.player[j].position.Y < worldSurface * 16.0 || remixWorld))
61793 {
61794 NPC.SpawnOnPlayer(j, 4);
61795 WorldGen.spawnEye = false;
61796 break;
61797 }
61798 }
61799 }
61800 if (WorldGen.spawnHardBoss > 0 && netMode != 1 && time > 4860.0)
61801 {
61802 bool flag2 = false;
61803 for (int k = 0; k < 200; k++)
61804 {
61805 if (npc[k].active && npc[k].boss)
61806 {
61807 flag2 = true;
61808 }
61809 }
61810 if (!flag2)
61811 {
61812 for (int l = 0; l < 255; l++)
61813 {
61814 if (Main.player[l].active && !Main.player[l].dead && ((double)Main.player[l].position.Y < worldSurface * 16.0 || remixWorld))
61815 {
61816 if (remixWorld && getGoodWorld)
61817 {
61818 NPC.SpawnMechQueen(l);
61819 }
61820 else if (WorldGen.spawnHardBoss == 1)
61821 {
61822 NPC.SpawnOnPlayer(l, 134);
61823 }
61824 else if (WorldGen.spawnHardBoss == 2)
61825 {
61826 NPC.SpawnOnPlayer(l, 125);
61827 NPC.SpawnOnPlayer(l, 126);
61828 }
61829 else if (WorldGen.spawnHardBoss == 3)
61830 {
61831 NPC.SpawnOnPlayer(l, 127);
61832 }
61833 break;
61834 }
61835 }
61836 }
61837 WorldGen.spawnHardBoss = 0;
61838 }
61839 if (netMode != 1)
61840 {
61841 double num9 = 16200.0;
61843 bool flag3 = raining;
61844 if (num10 && flag3 && (!NPC.downedDeerclops || rand.Next(4) == 0))
61845 {
61846 for (int m = 0; m < 255; m++)
61847 {
61848 Player player = Main.player[m];
61849 if (player.active && !player.dead && !((double)player.position.Y >= worldSurface * 16.0) && player.ZoneSnow && !(player.townNPCs > 0f) && (player.statLifeMax2 >= 200 || player.statDefense >= 9) && !NPC.AnyDanger())
61850 {
61851 NPC.SpawnOnPlayer(m, 668);
61852 break;
61853 }
61854 }
61855 }
61856 }
61857 }
61858 if (time > 32400.0)
61859 {
61861 }
61863 }
61864 else
61865 {
61866 WorldGen.spawnHardBoss = 0;
61867 WorldGen.spawnEye = false;
61868 bloodMoon = false;
61869 stopMoonEvent();
61870 if (time > 54000.0)
61871 {
61873 }
61875 }
61876 }
static float Clamp(float value, float min, float max)
Definition MathHelper.cs:46
static double Sin(double a)
static FilterManager Scene
Definition Filters.cs:5
static int rainTime
Definition Main.cs:1308
static bool raining
Definition Main.cs:1310
static double time
Definition Main.cs:1284
static bool slimeRain
Definition Main.cs:1166
static void HandleMeteorFall()
Definition Main.cs:62225
static float oldMaxRaining
Definition Main.cs:1306
static double worldSurface
Definition Main.cs:1272
static int numClouds
Definition Main.cs:1356
static int myPlayer
Definition Main.cs:1801
static int netMode
Definition Main.cs:2095
static bool expertMode
Definition Main.cs:2737
static bool IsFastForwardingTime()
Definition Main.cs:5721
static bool dayTime
Definition Main.cs:1282
static bool dedServ
Definition Main.cs:1226
static void UpdateSlimeRainWarning()
Definition Main.cs:62253
static bool bloodMoon
Definition Main.cs:1296
static bool AnyPlayerReadyToFightKingSlime()
Definition Main.cs:61878
static TeleportPylonsSystem PylonSystem
Definition Main.cs:1872
static void StopSlimeRain(bool announce=true)
Definition Main.cs:61545
static int maxTilesX
Definition Main.cs:1114
static bool getGoodWorld
Definition Main.cs:341
static void UpdateTime_StartNight(ref bool stopEvents)
Definition Main.cs:61922
static void UpdateTime_StartDay(ref bool stopEvents)
Definition Main.cs:62110
static void stopMoonEvent()
Definition Main.cs:10107
static bool eclipse
Definition Main.cs:1312
static bool ShouldNormalEventsBeAbleToStart()
Definition Main.cs:61913
static UnifiedRandom rand
Definition Main.cs:1387
static NPC[] npc
Definition Main.cs:1685
static void UpdateTimeRate()
Definition Main.cs:5760
static void UpdateTime_SpawnTownNPCs()
Definition Main.cs:62302
static void StartRain()
Definition Main.cs:61448
static float maxRaining
Definition Main.cs:1304
static void ChangeRain()
Definition Main.cs:61499
static double slimeRainTime
Definition Main.cs:1164
static int dayRate
Definition Main.cs:746
static float cloudBGActive
Definition Main.cs:628
static bool snowMoon
Definition Main.cs:1300
static bool pumpkinMoon
Definition Main.cs:1298
static bool gameMenu
Definition Main.cs:1926
static bool hardMode
Definition Main.cs:1022
static int ladyBugRainBoost
Definition Main.cs:2605
static Player[] player
Definition Main.cs:1803
static void StartSlimeRain(bool announce=true)
Definition Main.cs:61505
static bool remixWorld
Definition Main.cs:349
static void StopRain()
Definition Main.cs:61441

References Terraria.NPC.AnyDanger(), Terraria.Main.AnyPlayerReadyToFightKingSlime(), Terraria.Main.bloodMoon, Terraria.NPC.BusyWithAnyInvasionOfSorts(), Terraria.Main.ChangeRain(), Microsoft.Xna.Framework.MathHelper.Clamp(), Terraria.Main.cloudBGActive, Terraria.Main.dayRate, Terraria.Main.dayTime, Terraria.Main.dedServ, 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, System.Text.RegularExpressions.i, 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(), System.Math.Sin(), 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, System.type, 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().