From a73b1b2269bfb7fac21ef2b07fc6a728748bfea6 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Tue, 26 May 2026 23:10:09 -0300 Subject: [PATCH] fix(Core/Battlefield): pre-clear stale tracking on enter (#25989) Co-authored-by: Claude Opus 4.7 (1M context) --- src/server/game/Battlefield/Battlefield.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/server/game/Battlefield/Battlefield.cpp b/src/server/game/Battlefield/Battlefield.cpp index d0ecf6a516..5a6721c03f 100644 --- a/src/server/game/Battlefield/Battlefield.cpp +++ b/src/server/game/Battlefield/Battlefield.cpp @@ -76,6 +76,18 @@ Battlefield::~Battlefield() void Battlefield::HandlePlayerEnterZone(Player* player, uint32 /*zone*/) { + // Clear any stale entries from a prior visit that did not unwind cleanly. + // Runs before the script hook so scripts see a clean state if they read any + // of these containers. + for (uint8 i = 0; i < PVP_TEAMS_COUNT; ++i) + { + PlayersInWar[i].erase(player->GetGUID()); + InvitedPlayers[i].erase(player->GetGUID()); + PlayersInQueue[i].erase(player->GetGUID()); + PlayersWillBeKick[i].erase(player->GetGUID()); + Players[i].erase(player->GetGUID()); + } + // Allow scripts to adjust the player's effective team or appearance before // any team-based battlefield containers (such as player lists or queues) are updated. sScriptMgr->OnBattlefieldPlayerEnterZone(this, player);