diff options
-rwxr-xr-x | src/server/game/Server/WorldSession.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 6a2c7e64446..3805f69f927 100755 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -423,10 +423,6 @@ void WorldSession::LogoutPlayer(bool Save) } else if (!_player->getAttackers().empty()) { - _player->CombatStop(); - _player->getHostileRefManager().setOnlineOfflineState(false); - _player->RemoveAllAurasOnDeath(); - // build set of player who attack _player or who have pet attacking of _player std::set<Player*> aset; for (Unit::AttackerSet::const_iterator itr = _player->getAttackers().begin(); itr != _player->getAttackers().end(); ++itr) @@ -438,6 +434,11 @@ void WorldSession::LogoutPlayer(bool Save) aset.insert((Player*)(*itr)); } + // CombatStop() method is removing all attackers from the AttackerSet + // That is why it must be AFTER building current set of attackers + _player->CombatStop(); + _player->getHostileRefManager().setOnlineOfflineState(false); + _player->RemoveAllAurasOnDeath(); _player->SetPvPDeath(!aset.empty()); _player->KillPlayer(); _player->BuildPlayerRepop(); |