diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index bb9ed8527e..bbe45a5a57 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -2554,7 +2554,7 @@ void Creature::SaveRespawnTime(uint32 forceDelay, bool savetodb) return; } - uint32 thisRespawnTime = forceDelay ? time(NULL) + forceDelay : m_respawnTime; + time_t thisRespawnTime = forceDelay ? time(NULL) + forceDelay : m_respawnTime; GetMap()->SaveRespawnTime(SPAWN_TYPE_CREATURE, m_spawnId, GetEntry(), thisRespawnTime, GetMap()->GetZoneId(GetPhaseShift(), GetHomePosition()), Trinity::ComputeGridCoord(GetHomePosition().GetPositionX(), GetHomePosition().GetPositionY()).GetId(), savetodb && m_creatureData && m_creatureData->dbData); } diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 46113830f7..3bad931ab5 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -3345,7 +3345,9 @@ bool Map::CheckRespawn(RespawnInfo* info) { time_t now = time(NULL); time_t respawnTime; - if (sObjectMgr->GetLinkedRespawnGuid(thisGUID) == thisGUID) // never respawn, save "something" in DB + if (linkedTime == std::numeric_limits::max()) + respawnTime = linkedTime; + else if (sObjectMgr->GetLinkedRespawnGuid(thisGUID) == thisGUID) // never respawn, save "something" in DB respawnTime = now + WEEK; else // set us to check again shortly after linked unit respawnTime = std::max(now, linkedTime) + urand(5, 15);