@@ -2717,12 +2717,18 @@ void Map::ProcessRespawns()
27172717
27182718void Map::ProcessCreatureRespawn (ObjectGuid::LowType spawnId)
27192719{
2720- // Pool members are handled entirely by PoolMgr
2721- if (uint32 poolId = sPoolMgr ->IsPartOfAPool <Creature>(spawnId))
2720+ // Pool members in non-instanced maps are handled entirely by PoolMgr.
2721+ // In instanced maps the pool system operates globally and Spawn1Object is
2722+ // a no-op for instanceable maps, so fall through to the normal per-instance
2723+ // respawn logic instead.
2724+ if (!Instanceable ())
27222725 {
2723- sPoolMgr ->UpdatePool <Creature>(poolId, spawnId);
2724- RemoveCreatureRespawnTime (spawnId);
2725- return ;
2726+ if (uint32 poolId = sPoolMgr ->IsPartOfAPool <Creature>(spawnId))
2727+ {
2728+ sPoolMgr ->UpdatePool <Creature>(poolId, spawnId);
2729+ RemoveCreatureRespawnTime (spawnId);
2730+ return ;
2731+ }
27262732 }
27272733
27282734 CreatureData const * data = sObjectMgr ->GetCreatureData (spawnId);
@@ -2778,12 +2784,16 @@ void Map::ProcessCreatureRespawn(ObjectGuid::LowType spawnId)
27782784
27792785void Map::ProcessGameObjectRespawn (ObjectGuid::LowType spawnId)
27802786{
2781- // Pool members are handled entirely by PoolMgr
2782- if (uint32 poolId = sPoolMgr ->IsPartOfAPool <GameObject>(spawnId))
2787+ // Same rationale as ProcessCreatureRespawn: pool management via PoolMgr is
2788+ // only meaningful for non-instanced maps where Spawn1Object actually spawns.
2789+ if (!Instanceable ())
27832790 {
2784- sPoolMgr ->UpdatePool <GameObject>(poolId, spawnId);
2785- RemoveGORespawnTime (spawnId);
2786- return ;
2791+ if (uint32 poolId = sPoolMgr ->IsPartOfAPool <GameObject>(spawnId))
2792+ {
2793+ sPoolMgr ->UpdatePool <GameObject>(poolId, spawnId);
2794+ RemoveGORespawnTime (spawnId);
2795+ return ;
2796+ }
27872797 }
27882798
27892799 GameObjectData const * data = sObjectMgr ->GetGameObjectData (spawnId);
0 commit comments