aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-06-09 23:03:42 +0200
committerShauren <shauren.trinity@gmail.com>2022-06-09 23:03:42 +0200
commit6ca0f99ccfc6549f3390a1bac151f85fdcb77561 (patch)
treec4a24306fa537f9dfa15cd083e380a3d01acf70e /src
parentf820ff178decf7d844b7c398b79be7269feeb53e (diff)
Core/GameEventMgr: Spawn creatures and gameobjects in all active instances when event starts
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Events/GameEventMgr.cpp34
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;
+ }
}
}
- }
+ });
}
}