aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortreeston <treeston.mmoc@gmail.com>2017-06-15 13:08:26 +0200
committerCarbenium <carbenium@outlook.com>2020-07-16 22:00:29 +0200
commite3077813d5bf4521fff8be3ea24db231ed00c02f (patch)
treed180011d7b0daf3d70cf6047bd83ff7f6503ac8e /src
parent2d191a668019703cf0e32700c586e94679ea04c7 (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.cpp12
-rw-r--r--src/server/game/Groups/Group.h1
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;