From b5da3363f1f0fc77b8f1643963c6bc881caa2352 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Sun, 22 Mar 2026 13:13:35 -0300 Subject: [PATCH] fix(Core/Battlefield): fix stale queue/invite entries and wrong-team kicks (#25168) Co-authored-by: Claude Opus 4.6 --- src/server/game/Battlefield/Battlefield.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/server/game/Battlefield/Battlefield.cpp b/src/server/game/Battlefield/Battlefield.cpp index 2edfa3fa4..a7494f1e6 100644 --- a/src/server/game/Battlefield/Battlefield.cpp +++ b/src/server/game/Battlefield/Battlefield.cpp @@ -130,6 +130,7 @@ void Battlefield::HandlePlayerLeaveZone(Player* player, uint32 /*zone*/) cp->HandlePlayerLeave(player); InvitedPlayers[player->GetTeamId()].erase(player->GetGUID()); + PlayersInQueue[player->GetTeamId()].erase(player->GetGUID()); PlayersWillBeKick[player->GetTeamId()].erase(player->GetGUID()); Players[player->GetTeamId()].erase(player->GetGUID()); SendRemoveWorldStates(player); @@ -290,7 +291,8 @@ void Battlefield::KickAfkPlayers() void Battlefield::KickPlayerFromBattlefield(ObjectGuid guid) { if (Player* player = ObjectAccessor::FindPlayer(guid)) - if (player->GetZoneId() == GetZoneId() && !player->IsGameMaster()) + if (player->GetZoneId() == GetZoneId() && !player->IsGameMaster() + && !PlayersInWar[player->GetTeamId()].count(guid)) player->TeleportTo(KickPosition); } @@ -416,7 +418,7 @@ void Battlefield::PlayerAcceptInviteToWar(Player* player) { player->GetSession()->SendBfEntered(BattleId); PlayersInWar[player->GetTeamId()].insert(player->GetGUID()); - InvitedPlayers[player->GetTeamId(true)].erase(player->GetGUID()); + InvitedPlayers[player->GetTeamId()].erase(player->GetGUID()); if (player->isAFK()) player->ToggleAFK();