From 9a14cfe807103da8962da53d2f5fc0411d570ffb Mon Sep 17 00:00:00 2001 From: hondacrx Date: Tue, 9 Feb 2021 13:15:12 -0500 Subject: [PATCH] Core/Spawn: Limit saved/stored respawn time. - Limit to long maximum, for the compiled-for architecture. Port From (https://github.com/TrinityCore/TrinityCore/commit/f3ac10f36fcc46c5e1537d69544a9294fc719ad2) --- Source/Game/Entities/Creature/Creature.cs | 2 +- Source/Game/Entities/GameObject/GameObject.cs | 2 +- Source/Game/Maps/Map.cs | 4 +++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Source/Game/Entities/Creature/Creature.cs b/Source/Game/Entities/Creature/Creature.cs index 1b57ac0ed..7821cdc8d 100644 --- a/Source/Game/Entities/Creature/Creature.cs +++ b/Source/Game/Entities/Creature/Creature.cs @@ -2213,7 +2213,7 @@ namespace Game.Entities return; } - uint thisRespawnTime = (uint)(forceDelay != 0 ? Time.UnixTime + forceDelay : m_respawnTime); + long thisRespawnTime = forceDelay != 0 ? Time.UnixTime + forceDelay : m_respawnTime; GetMap().SaveRespawnTime(SpawnObjectType.Creature, m_spawnId, GetEntry(), thisRespawnTime, GetMap().GetZoneId(GetPhaseShift(), GetHomePosition()), GridDefines.ComputeGridCoord(GetHomePosition().GetPositionX(), GetHomePosition().GetPositionY()).GetId(), saveToDb && m_creatureData != null && m_creatureData.dbData); } diff --git a/Source/Game/Entities/GameObject/GameObject.cs b/Source/Game/Entities/GameObject/GameObject.cs index 313b89e8a..a9e348673 100644 --- a/Source/Game/Entities/GameObject/GameObject.cs +++ b/Source/Game/Entities/GameObject/GameObject.cs @@ -1148,7 +1148,7 @@ namespace Game.Entities return; } - uint thisRespawnTime = (uint)(forceDelay != 0 ? Time.UnixTime + forceDelay : m_respawnTime); + long thisRespawnTime = forceDelay != 0 ? Time.UnixTime + forceDelay : m_respawnTime; GetMap().SaveRespawnTime(SpawnObjectType.GameObject, m_spawnId, GetEntry(), thisRespawnTime, GetZoneId(), GridDefines.ComputeGridCoord(GetPositionX(), GetPositionY()).GetId(), m_goData.dbData ? savetodb : false); } } diff --git a/Source/Game/Maps/Map.cs b/Source/Game/Maps/Map.cs index 943b8dc4e..1e3dac1ae 100644 --- a/Source/Game/Maps/Map.cs +++ b/Source/Game/Maps/Map.cs @@ -2536,7 +2536,9 @@ namespace Game.Maps { long now = Time.UnixTime; long respawnTime; - if (Global.ObjectMgr.GetLinkedRespawnGuid(thisGUID) == thisGUID) // never respawn, save "something" in DB + if (linkedTime == long.MaxValue) + respawnTime = linkedTime; + else if (Global.ObjectMgr.GetLinkedRespawnGuid(thisGUID) == thisGUID) // never respawn, save "something" in DB respawnTime = now + Time.Week; else // set us to check again shortly after linked unit respawnTime = Math.Max(now, linkedTime) + RandomHelper.URand(5, 15);