aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 7a237dd1830..efe74ad4180 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -24298,7 +24298,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)
@@ -24340,6 +24340,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 a714353830e..d319c12fb03 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -2258,7 +2258,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 f42919486a5..b9433b719fe 100644
--- a/src/server/game/Handlers/GroupHandler.cpp
+++ b/src/server/game/Handlers/GroupHandler.cpp
@@ -288,7 +288,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);
@@ -296,14 +296,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))
{