From 39efbb736f375abc2ad052f00dbc4646e555b056 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Mon, 23 Aug 2021 20:18:36 +0200 Subject: [PATCH] fix(Core/Arenas): correct BG status on Arena leave (#7323) - Closes #7278 --- src/server/game/Battlegrounds/Battleground.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 324cce43b..e91f87363 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -1105,6 +1105,9 @@ void Battleground::RemovePlayerAtLeave(Player* player) player->RemoveAurasByType(SPELL_AURA_MOUNTED); + // GetStatus might be changed in RemovePlayer - define it here + BattlegroundStatus status = GetStatus(); + // BG subclass specific code RemovePlayer(player); @@ -1116,7 +1119,7 @@ void Battleground::RemovePlayerAtLeave(Player* player) player->ClearAfkReports(); //left a rated match in progress, consider as loser - if (isArena() && isRated() && GetStatus() == STATUS_IN_PROGRESS && teamId != TEAM_NEUTRAL) + if (isArena() && isRated() && status == STATUS_IN_PROGRESS && teamId != TEAM_NEUTRAL) { ArenaTeam* winnerArenaTeam = sArenaTeamMgr->GetArenaTeamById(GetArenaTeamIdForTeam(GetOtherTeamId(teamId))); ArenaTeam* loserArenaTeam = sArenaTeamMgr->GetArenaTeamById(GetArenaTeamIdForTeam(teamId)); @@ -1139,7 +1142,7 @@ void Battleground::RemovePlayerAtLeave(Player* player) // cast deserter if (isBattleground() && !player->IsGameMaster() && sWorld->getBoolConfig(CONFIG_BATTLEGROUND_CAST_DESERTER)) - if (GetStatus() == STATUS_IN_PROGRESS || GetStatus() == STATUS_WAIT_JOIN) + if (status == STATUS_IN_PROGRESS || status == STATUS_WAIT_JOIN) player->ScheduleDelayedOperation(DELAYED_SPELL_CAST_DESERTER); }