From 4e95a6b4ade3d7079e1b3f3e31146e109d6b0857 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sat, 17 Jun 2017 11:41:57 +0200 Subject: [PATCH] Group creation again (follow-up to 132538d). Groups now only disband if all members reject the invitation (as opposed to if any member rejects the invitation). --- src/server/game/Entities/Player/Player.cpp | 12 ++++++------ src/server/game/Groups/Group.h | 1 + 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 978b499810..3e35d53580 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -2696,7 +2696,6 @@ bool Player::IsInSameRaidWith(Player const* p) const } ///- If the player is invited, remove him. If the group if then only 1 person, disband the group. -/// @todo Shouldn't we also check if there is no other invitees before disbanding the group? void Player::UninviteFromGroup() { Group* group = GetGroupInvite(); @@ -2705,13 +2704,14 @@ void Player::UninviteFromGroup() group->RemoveInvite(this); - if (group->GetMembersCount() <= 1) // group has just 1 member => disband + if (group->IsCreated()) { - if (group->IsCreated()) - { + if (group->GetMembersCount() <= 1) // group has just 1 member => disband group->Disband(true); - } - else + } + else + { + if (group->GetInviteeCount() <= 1) { group->RemoveAllInvites(); delete group; diff --git a/src/server/game/Groups/Group.h b/src/server/game/Groups/Group.h index 75f1ed8f21..56aaf3ba5c 100644 --- a/src/server/game/Groups/Group.h +++ b/src/server/game/Groups/Group.h @@ -259,6 +259,7 @@ class TC_GAME_API Group GroupReference* GetFirstMember() { return m_memberMgr.getFirst(); } GroupReference const* GetFirstMember() const { return m_memberMgr.getFirst(); } uint32 GetMembersCount() const { return m_memberSlots.size(); } + uint32 GetInviteeCount() const { return m_invitees.size(); } GroupType GetGroupType() const { return m_groupType; } uint8 GetMemberGroup(ObjectGuid guid) const;