diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/Player.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 898f0f08f01..a83a17f1f6e 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -15577,7 +15577,9 @@ bool Player::LoadFromDB( uint32 guid, SqlQueryHolder *holder ) if(m_bgData.bgInstanceID) //saved in BattleGround currentBg = sBattleGroundMgr.GetBattleGround(m_bgData.bgInstanceID, BATTLEGROUND_TYPE_NONE); - if(currentBg && currentBg->IsPlayerInBattleGround(GetGUID())) + bool player_at_bg = currentBg && currentBg->IsPlayerInBattleGround(GetGUID()); + + if(player_at_bg && currentBg->GetStatus() != STATUS_WAIT_LEAVE) { BattleGroundQueueTypeId bgQueueTypeId = sBattleGroundMgr.BGQueueTypeId(currentBg->GetTypeID(), currentBg->GetArenaType()); AddBattleGroundQueueId(bgQueueTypeId); @@ -15593,6 +15595,10 @@ bool Player::LoadFromDB( uint32 guid, SqlQueryHolder *holder ) // Bg was not found - go to Entry Point else { + // leave bg + if (player_at_bg) + currentBg->RemovePlayerAtLeave(GetGUID(), false, true); + // Do not look for instance if bg not found const WorldLocation& _loc = GetBattleGroundEntryPoint(); mapId = _loc.GetMapId(); instanceId = 0; |