diff options
-rw-r--r-- | src/game/Corpse.cpp | 8 | ||||
-rw-r--r-- | src/game/Object.cpp | 8 |
2 files changed, 10 insertions, 6 deletions
diff --git a/src/game/Corpse.cpp b/src/game/Corpse.cpp index 7fc8dc7fb50..6aec1da7ef9 100644 --- a/src/game/Corpse.cpp +++ b/src/game/Corpse.cpp @@ -81,10 +81,6 @@ bool Corpse::Create( uint32 guidlow, Player *owner) { ASSERT(owner); - //we need to assign owner's map for corpse - //in other way we will get a crash in Corpse::SaveToDB() - SetMap(owner->GetMap()); - Relocate(owner->GetPositionX(), owner->GetPositionY(), owner->GetPositionZ(), owner->GetOrientation()); if(!IsPositionValid()) @@ -94,6 +90,10 @@ bool Corpse::Create( uint32 guidlow, Player *owner) return false; } + //we need to assign owner's map for corpse + //in other way we will get a crash in Corpse::SaveToDB() + SetMap(owner->GetMap()); + WorldObject::_Create(guidlow, HIGHGUID_CORPSE, owner->GetPhaseMask()); SetFloatValue( OBJECT_FIELD_SCALE_X, 1 ); diff --git a/src/game/Object.cpp b/src/game/Object.cpp index 334790402b9..2e3aa8e0528 100644 --- a/src/game/Object.cpp +++ b/src/game/Object.cpp @@ -82,10 +82,14 @@ Object::Object( ) : m_PackGUID(sizeof(uint64)+1) WorldObject::~WorldObject() { + // this may happen because there are many !create/delete if(m_isWorldObject && m_currMap) { - sLog.outCrash("Object::~Object - guid="UI64FMTD", typeid=%d, entry=%u deleted but still in map!!", GetGUID(), GetTypeId(), GetEntry()); - assert(false); + if(GetTypeId() == TYPEID_CORPSE) + { + sLog.outCrash("Object::~Object Corpse guid="UI64FMTD", type=%d, entry=%u deleted but still in map!!", GetGUID(), ((Corpse*)this)->GetType(), GetEntry()); + assert(false); + } ResetMap(); } } |