From 585f4317c129214f852cf182b9a963f89ed9f1e8 Mon Sep 17 00:00:00 2001 From: n0n4m3 Date: Sat, 16 Jan 2010 19:27:15 +0300 Subject: Auto-leave player at login back to bg/arena when bg/arena finished. by VladimirMangos. --HG-- branch : trunk --- src/game/Player.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/game/Player.cpp') 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; -- cgit v1.2.3