diff options
Diffstat (limited to 'src/server/game/Maps/MapInstanced.cpp')
-rw-r--r-- | src/server/game/Maps/MapInstanced.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/server/game/Maps/MapInstanced.cpp b/src/server/game/Maps/MapInstanced.cpp index ccd2d962152..66a51466e7d 100644 --- a/src/server/game/Maps/MapInstanced.cpp +++ b/src/server/game/Maps/MapInstanced.cpp @@ -25,6 +25,7 @@ #include "MMapFactory.h" #include "ObjectMgr.h" #include "Player.h" +#include "ScriptMgr.h" #include "VMapFactory.h" #include "VMapManager2.h" #include "World.h" @@ -95,8 +96,12 @@ void MapInstanced::UnloadAll() { // Unload instanced maps for (InstancedMaps::iterator i = m_InstancedMaps.begin(); i != m_InstancedMaps.end(); ++i) + { i->second->UnloadAll(); + sScriptMgr->OnDestroyMap(i->second.get()); + } + m_InstancedMaps.clear(); // Unload own grids (just dummy(placeholder) grids, neccesary to unload GridMaps!) @@ -236,6 +241,8 @@ InstanceMap* MapInstanced::CreateInstance(uint32 InstanceId, InstanceSave* save, Trinity::unique_trackable_ptr<Map>& ptr = m_InstancedMaps[InstanceId]; ptr.reset(map); map->SetWeakPtr(ptr); + + sScriptMgr->OnCreateMap(map); return map; } @@ -263,6 +270,8 @@ BattlegroundMap* MapInstanced::CreateBattleground(uint32 InstanceId, Battlegroun Trinity::unique_trackable_ptr<Map>& ptr = m_InstancedMaps[InstanceId]; ptr.reset(map); map->SetWeakPtr(ptr); + + sScriptMgr->OnCreateMap(map); return map; } @@ -287,6 +296,8 @@ bool MapInstanced::DestroyInstance(InstancedMaps::iterator &itr) Map::UnloadAll(); } + sScriptMgr->OnDestroyMap(itr->second.get()); + // Free up the instance id and allow it to be reused for bgs and arenas (other instances are handled in the InstanceSaveMgr) if (itr->second->IsBattlegroundOrArena()) sMapMgr->FreeInstanceId(itr->second->GetInstanceId()); |