diff options
author | Shauren <shauren.trinity@gmail.com> | 2015-10-29 18:46:37 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2015-10-29 18:46:37 +0100 |
commit | 1d17475791cae66beafda1e2c3198a66d355086f (patch) | |
tree | 518034e30a7531dbb98e3d14ffc65edb3ef4e10d /src/server/game/Maps/Map.cpp | |
parent | 7dcddd90be6e49281ca04239de5839e757ef3f7a (diff) |
Core/Corpses: Fixed map crash happening during map unload when there are corpses inside
Diffstat (limited to 'src/server/game/Maps/Map.cpp')
-rw-r--r-- | src/server/game/Maps/Map.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index a9ef590f84e..2b60ae53c9d 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -1603,11 +1603,18 @@ void Map::UnloadAll() } for (auto& cellCorpsePair : _corpsesByCell) + { for (Corpse* corpse : cellCorpsePair.second) + { + corpse->RemoveFromWorld(); + corpse->ResetMap(); delete corpse; + } + } _corpsesByCell.clear(); _corpsesByPlayer.clear(); + _corpseBones.clear(); } // ***************************** @@ -3632,7 +3639,7 @@ Corpse* Map::ConvertCorpseToBones(ObjectGuid const& ownerGuid, bool insignia /*= { // Create bones, don't change Corpse bones = new Corpse(); - bones->Create(corpse->GetGUID().GetCounter(), this); + bones->Create(corpse->GetGUID().GetCounter()); for (uint8 i = OBJECT_FIELD_TYPE + 1; i < CORPSE_END; ++i) // don't overwrite guid and object type bones->SetUInt32Value(i, corpse->GetUInt32Value(i)); |