From e906a2fe7d71fc17de9f7ea4778970beb3f9265e Mon Sep 17 00:00:00 2001 From: Wyrserth <43747507+Wyrserth@users.noreply.github.com> Date: Sat, 15 Jun 2019 14:19:58 +0200 Subject: Core/Group: implement automatic party/raid leader change when the leader has been offline for two minutes (#23398) * Core/Group: implement automatic party/raid leader change when the leader has been offline for two minutes. * Add #23396 to make testing easier. * Prioritize assistants in raids. * Fix dumb mistake and apply suggested change, thanks VincentVanclef and jackpoz! --- src/server/game/Server/WorldSession.cpp | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'src/server/game/Server') diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index dafb08bd2ce..3c1de96e01b 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -548,16 +548,13 @@ void WorldSession::LogoutPlayer(bool save) ///- If the player is in a group (or invited), remove him. If the group if then only 1 person, disband the group. _player->UninviteFromGroup(); - // remove player from the group if he is: - // a) in group; b) not in raid group; c) logging out normally (not being kicked or disconnected) - if (_player->GetGroup() && !_player->GetGroup()->isRaidGroup() && m_Socket) - _player->RemoveFromGroup(); - //! Send update to group and reset stored max enchanting level - if (_player->GetGroup()) + if (Group* group = _player->GetGroup()) { - _player->GetGroup()->SendUpdate(); - _player->GetGroup()->ResetMaxEnchantingLevel(); + group->SendUpdate(); + group->ResetMaxEnchantingLevel(); + if (group->GetLeaderGUID() == _player->GetGUID()) + group->StartLeaderOfflineTimer(); } //! Broadcast a logout message to the player's friends -- cgit v1.2.3