diff options
Diffstat (limited to 'src/server/game/Events/GameEventMgr.cpp')
-rw-r--r-- | src/server/game/Events/GameEventMgr.cpp | 34 |
1 files changed, 19 insertions, 15 deletions
diff --git a/src/server/game/Events/GameEventMgr.cpp b/src/server/game/Events/GameEventMgr.cpp index b0d207dc01e..72e12165505 100644 --- a/src/server/game/Events/GameEventMgr.cpp +++ b/src/server/game/Events/GameEventMgr.cpp @@ -1235,11 +1235,13 @@ void GameEventMgr::GameEventSpawn(int16 event_id) sObjectMgr->AddCreatureToGrid(data); // Spawn if necessary (loaded grids only) - Map* map = sMapMgr->CreateBaseMap(data->mapId); - map->RemoveRespawnTime(SPAWN_TYPE_CREATURE, *itr); - // We use spawn coords to spawn - if (map && !map->Instanceable() && map->IsGridLoaded(data->spawnPoint)) - Creature::CreateCreatureFromDB(*itr, map); + sMapMgr->DoForAllMapsWithMapId(data->mapId, [&itr, data](Map* map) + { + map->RemoveRespawnTime(SPAWN_TYPE_CREATURE, *itr); + // We use spawn coords to spawn + if (map->IsGridLoaded(data->spawnPoint)) + Creature::CreateCreatureFromDB(*itr, map); + }); } } @@ -1258,21 +1260,23 @@ void GameEventMgr::GameEventSpawn(int16 event_id) sObjectMgr->AddGameobjectToGrid(data); // Spawn if necessary (loaded grids only) // this base map checked as non-instanced and then only existed - Map* map = sMapMgr->CreateBaseMap(data->mapId); - map->RemoveRespawnTime(SPAWN_TYPE_GAMEOBJECT, *itr); - // We use current coords to unspawn, not spawn coords since creature can have changed grid - if (map && !map->Instanceable() && map->IsGridLoaded(data->spawnPoint)) + sMapMgr->DoForAllMapsWithMapId(data->mapId, [&itr, data](Map* map) { - if (GameObject* go = GameObject::CreateGameObjectFromDB(*itr, map, false)) + map->RemoveRespawnTime(SPAWN_TYPE_GAMEOBJECT, *itr); + // We use current coords to unspawn, not spawn coords since creature can have changed grid + if (map->IsGridLoaded(data->spawnPoint)) { - /// @todo find out when it is add to map - if (go->isSpawnedByDefault()) + if (GameObject* go = GameObject::CreateGameObjectFromDB(*itr, map, false)) { - if (!map->AddToMap(go)) - delete go; + /// @todo find out when it is add to map + if (go->isSpawnedByDefault()) + { + if (!map->AddToMap(go)) + delete go; + } } } - } + }); } } |