diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 9becbc30ca..f04bc00edc 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -13108,6 +13108,11 @@ PartyResult Player::CanUninviteFromGroup(ObjectGuid targetPlayerGUID) const if (InBattleground()) return ERR_INVITE_RESTRICTED; + + // BF raids are owned by the Battlefield system; leaders/assistants must not + // be able to kick members (would drop their team assignment mid-battle). + if (grp->isBFGroup()) + return ERR_NOT_LEADER; } return ERR_PARTY_RESULT_OK; diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp index d3bf30d1fd..13eadd687a 100644 --- a/src/server/game/Handlers/GroupHandler.cpp +++ b/src/server/game/Handlers/GroupHandler.cpp @@ -126,6 +126,16 @@ void WorldSession::HandleGroupInviteOpcode(WorldPacket& recvData) return; } + // Battlefield raids (e.g. Wintergrasp) have their composition managed by the BF + // system based on queue and team balance. Letting raid members recruit outsiders + // bypasses Battlefield::AddOrSetPlayerToCorrectBfGroup, which on WG entry then + // refuses to add the invitee because they are already in a BF group. + if (Group* invitingGroup = invitingPlayer->GetGroup(); invitingGroup && invitingGroup->isBFGroup()) + { + SendPartyResult(PARTY_OP_INVITE, membername, ERR_NOT_LEADER); + return; + } + Group* group = invitingPlayer->GetGroup(); if (group && group->isBGGroup()) group = invitingPlayer->GetOriginalGroup();