aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp5
-rw-r--r--src/server/game/Entities/Player/Player.h2
-rw-r--r--src/server/game/Handlers/GroupHandler.cpp12
3 files changed, 8 insertions, 11 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 9ad7a364fc2..99561741931 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -24585,7 +24585,7 @@ Player* Player::GetNextRandomRaidMember(float radius)
return nearMembers[randTarget];
}
-PartyResult Player::CanUninviteFromGroup() const
+PartyResult Player::CanUninviteFromGroup(ObjectGuid guidMember) const
{
Group const* grp = GetGroup();
if (!grp)
@@ -24627,6 +24627,9 @@ PartyResult Player::CanUninviteFromGroup() const
if (InBattleground())
return ERR_INVITE_RESTRICTED;
+
+ if (grp->IsLeader(guidMember))
+ return ERR_NOT_LEADER;
}
return ERR_PARTY_RESULT_OK;
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 8509ec2bcf1..e0655a39daa 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -2484,7 +2484,7 @@ class Player : public Unit, public GridObject<Player>
uint64 GetAuraUpdateMaskForRaid() const { return m_auraRaidUpdateMask; }
void SetAuraUpdateMaskForRaid(uint8 slot) { m_auraRaidUpdateMask |= (uint64(1) << slot); }
Player* GetNextRandomRaidMember(float radius);
- PartyResult CanUninviteFromGroup() const;
+ PartyResult CanUninviteFromGroup(ObjectGuid guidMember = ObjectGuid::Empty) const;
// Battleground / Battlefield Group System
void SetBattlegroundOrBattlefieldRaid(Group* group, int8 subgroup = -1);
diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp
index 32fb9bd1ee4..c5207941301 100644
--- a/src/server/game/Handlers/GroupHandler.cpp
+++ b/src/server/game/Handlers/GroupHandler.cpp
@@ -416,7 +416,7 @@ void WorldSession::HandleGroupUninviteGuidOpcode(WorldPacket& recvData)
return;
}
- PartyResult res = GetPlayer()->CanUninviteFromGroup();
+ PartyResult res = GetPlayer()->CanUninviteFromGroup(guid);
if (res != ERR_PARTY_RESULT_OK)
{
SendPartyResult(PARTY_OP_UNINVITE, "", res);
@@ -424,14 +424,8 @@ void WorldSession::HandleGroupUninviteGuidOpcode(WorldPacket& recvData)
}
Group* grp = GetPlayer()->GetGroup();
- if (!grp)
- return;
-
- if (grp->IsLeader(guid))
- {
- SendPartyResult(PARTY_OP_UNINVITE, "", ERR_NOT_LEADER);
- return;
- }
+ // grp is checked already above in CanUninviteFromGroup()
+ ASSERT(grp);
if (grp->IsMember(guid))
{