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); }