aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;