Merge branch 'master' into test-staging

This commit is contained in:
Keleborn
2026-05-15 22:52:49 -07:00
32 changed files with 604 additions and 90 deletions
+20 -10
View File
@@ -2724,12 +2724,18 @@ void Map::ProcessRespawns()
void Map::ProcessCreatureRespawn(ObjectGuid::LowType spawnId)
{
// Pool members are handled entirely by PoolMgr
if (uint32 poolId = sPoolMgr->IsPartOfAPool<Creature>(spawnId))
// Pool members in non-instanced maps are handled entirely by PoolMgr.
// In instanced maps the pool system operates globally and Spawn1Object is
// a no-op for instanceable maps, so fall through to the normal per-instance
// respawn logic instead.
if (!Instanceable())
{
sPoolMgr->UpdatePool<Creature>(poolId, spawnId);
RemoveCreatureRespawnTime(spawnId);
return;
if (uint32 poolId = sPoolMgr->IsPartOfAPool<Creature>(spawnId))
{
sPoolMgr->UpdatePool<Creature>(poolId, spawnId);
RemoveCreatureRespawnTime(spawnId);
return;
}
}
CreatureData const* data = sObjectMgr->GetCreatureData(spawnId);
@@ -2785,12 +2791,16 @@ void Map::ProcessCreatureRespawn(ObjectGuid::LowType spawnId)
void Map::ProcessGameObjectRespawn(ObjectGuid::LowType spawnId)
{
// Pool members are handled entirely by PoolMgr
if (uint32 poolId = sPoolMgr->IsPartOfAPool<GameObject>(spawnId))
// Same rationale as ProcessCreatureRespawn: pool management via PoolMgr is
// only meaningful for non-instanced maps where Spawn1Object actually spawns.
if (!Instanceable())
{
sPoolMgr->UpdatePool<GameObject>(poolId, spawnId);
RemoveGORespawnTime(spawnId);
return;
if (uint32 poolId = sPoolMgr->IsPartOfAPool<GameObject>(spawnId))
{
sPoolMgr->UpdatePool<GameObject>(poolId, spawnId);
RemoveGORespawnTime(spawnId);
return;
}
}
GameObjectData const* data = sObjectMgr->GetGameObjectData(spawnId);