diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Corpse/Corpse.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 11 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.h | 1 | ||||
-rw-r--r-- | src/server/game/Maps/Map.cpp | 2 |
4 files changed, 7 insertions, 9 deletions
diff --git a/src/server/game/Entities/Corpse/Corpse.cpp b/src/server/game/Entities/Corpse/Corpse.cpp index 4294eb57dbd..15e560a8e7e 100644 --- a/src/server/game/Entities/Corpse/Corpse.cpp +++ b/src/server/game/Entities/Corpse/Corpse.cpp @@ -59,7 +59,7 @@ void Corpse::RemoveFromWorld() if (IsInWorld()) GetMap()->GetObjectsStore().Remove<Corpse>(GetGUID()); - Object::RemoveFromWorld(); + WorldObject::RemoveFromWorld(); } bool Corpse::Create(ObjectGuid::LowType guidlow, Map* map) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 109b1a53657..a3a602d2f4a 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -2315,17 +2315,16 @@ void Player::RemoveFromWorld() sBattlefieldMgr->HandlePlayerLeaveZone(this, m_zoneUpdateId); } + // Remove items from world before self - player must be found in Item::RemoveFromObjectUpdate + for (uint8 i = PLAYER_SLOT_START; i < PLAYER_SLOT_END; ++i) + if (m_items[i]) + m_items[i]->RemoveFromWorld(); + ///- Do not add/remove the player from the object storage ///- It will crash when updating the ObjectAccessor ///- The player should only be removed when logging out Unit::RemoveFromWorld(); - for (uint8 i = PLAYER_SLOT_START; i < PLAYER_SLOT_END; ++i) - { - if (m_items[i]) - m_items[i]->RemoveFromWorld(); - } - for (ItemMap::iterator iter = mMitems.begin(); iter != mMitems.end(); ++iter) iter->second->RemoveFromWorld(); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index eeb5a118adc..df08a1b30d4 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1325,7 +1325,6 @@ private: PlayerTalentInfo(PlayerTalentInfo const&); }; - class Player : public Unit, public GridObject<Player> { friend class WorldSession; diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 108b7cadfe1..26a3d38635d 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -2600,7 +2600,7 @@ void Map::SendObjectUpdates() while (!_updateObjects.empty()) { Object* obj = *_updateObjects.begin(); - ASSERT(obj && obj->IsInWorld()); + ASSERT(obj->IsInWorld()); _updateObjects.erase(_updateObjects.begin()); obj->BuildUpdate(update_players); } |