using Terraria; using Terraria.ModLoader; namespace SoulHarvest.Common; /// /// Resolves the authoritative Death Reaper world-stop once per game tick. NPC /// hooks query this cached value, so a full battlefield does not rescan every /// player once for every NPC. /// internal sealed class ReaperDeathUltimateFreezeSystem : ModSystem { private static ulong cachedTick = ulong.MaxValue; private static bool cachedFrozen; internal static bool IsWorldFrozen { get { if (Main.gameMenu) return false; if (cachedTick == Main.GameUpdateCount) return cachedFrozen; cachedTick = Main.GameUpdateCount; cachedFrozen = false; foreach (Player player in Main.ActivePlayers) { if (!player.dead && player.GetModPlayer() .FreezesWorldForDeathUltimate) { cachedFrozen = true; break; } } return cachedFrozen; } } public override void OnWorldLoad() => ResetCache(); public override void OnWorldUnload() => ResetCache(); public override void Unload() => ResetCache(); private static void ResetCache() { cachedTick = ulong.MaxValue; cachedFrozen = false; } }