diff options
author | megamage <none@none.none> | 2011-11-14 21:01:53 -0500 |
---|---|---|
committer | megamage <none@none.none> | 2011-11-14 21:01:53 -0500 |
commit | 10b89d976fe7ce19db8bcb1f829b3789cc9785af (patch) | |
tree | 9fd3079017e284833252a989442ac88a569b0f09 /src | |
parent | 28102c56831a88f7facdd669a65e5750e267e5b3 (diff) |
A temp fix for crash caused by remove corpse.
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Globals/ObjectAccessor.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/server/game/Globals/ObjectAccessor.cpp b/src/server/game/Globals/ObjectAccessor.cpp index 7c9beb7d656..3a1b81b044d 100755 --- a/src/server/game/Globals/ObjectAccessor.cpp +++ b/src/server/game/Globals/ObjectAccessor.cpp @@ -199,10 +199,17 @@ void ObjectAccessor::RemoveCorpse(Corpse* corpse) { ASSERT(corpse && corpse->GetType() != CORPSE_BONES); - if (corpse->IsInGrid()) + //TODO: more works need to be done for corpse and other world object + if (Map* map = corpse->FindMap()) { corpse->DestroyForNearbyPlayers(); - corpse->GetMap()->RemoveFromMap(corpse, false); + if (corpse->IsInGrid()) + map->RemoveFromMap(corpse, false); + else + { + corpse->RemoveFromWorld(); + corpse->ResetMap(); + } } else corpse->RemoveFromWorld(); |