diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 5 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.h | 2 | ||||
-rw-r--r-- | src/server/game/Handlers/GroupHandler.cpp | 12 |
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)) { |