diff options
author | treeston <treeston.mmoc@gmail.com> | 2017-06-15 13:08:26 +0200 |
---|---|---|
committer | Carbenium <carbenium@outlook.com> | 2020-07-16 22:00:29 +0200 |
commit | e3077813d5bf4521fff8be3ea24db231ed00c02f (patch) | |
tree | d180011d7b0daf3d70cf6047bd83ff7f6503ac8e /src | |
parent | 2d191a668019703cf0e32700c586e94679ea04c7 (diff) |
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).
(cherry picked from commit 250e8d998bca7f239e2393b6d002441f70d4daf0)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 12 | ||||
-rw-r--r-- | 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 35cfba6fbaa..4568dcecece 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -2252,7 +2252,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(); @@ -2261,13 +2260,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 14ad431f96c..e05e6b3a582 100644 --- a/src/server/game/Groups/Group.h +++ b/src/server/game/Groups/Group.h @@ -328,6 +328,7 @@ class TC_GAME_API Group GroupReference* GetFirstMember() { return m_memberMgr.getFirst(); } GroupReference const* GetFirstMember() const { return m_memberMgr.getFirst(); } uint32 GetMembersCount() const { return uint32(m_memberSlots.size()); } + uint32 GetInviteeCount() const { return m_invitees.size(); } GroupFlags GetGroupFlags() const { return m_groupFlags; } uint8 GetMemberGroup(ObjectGuid guid) const; |