diff options
author | Wilds <ivoselva@gmail.com> | 2012-01-04 11:52:13 +0100 |
---|---|---|
committer | Wilds <ivoselva@gmail.com> | 2012-01-04 11:52:13 +0100 |
commit | 2a38902d2edcf669bcfbda7a0fca868bd3371ba4 (patch) | |
tree | c6cea818e0758ed1bfeed11597ef98a10432ae2a /src | |
parent | ced346076b335a02a5fc8de8e1bd1dc43ae4e838 (diff) |
Core/Battleground: fix re-enter into battleground after disconnect
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Battlegrounds/Battleground.cpp | 2 | ||||
-rwxr-xr-x | src/server/game/Entities/Player/Player.cpp | 6 | ||||
-rwxr-xr-x | src/server/game/Maps/MapInstanced.cpp | 12 |
3 files changed, 13 insertions, 7 deletions
diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 8ca4b73d105..6a758695116 100755 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -1245,8 +1245,6 @@ void Battleground::EventPlayerLoggedOut(Player* player) if (GetAlivePlayersCountByTeam(player->GetTeam()) <= 1 && GetPlayersCountByTeam(GetOtherTeam(player->GetTeam()))) EndBattleground(GetOtherTeam(player->GetTeam())); } - - player->LeaveBattleground(); } // This method should be called only once ... it adds pointer to queue diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 10ec8500923..9ed664bb30a 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -16659,10 +16659,10 @@ bool Player::LoadFromDB(uint32 guid, SQLQueryHolder *holder) if (player_at_bg && currentBg->GetStatus() != STATUS_WAIT_LEAVE) { - BattlegroundQueueTypeId bgQueueTypeId = sBattlegroundMgr->BGQueueTypeId(currentBg->GetTypeID(true), currentBg->GetArenaType()); + BattlegroundQueueTypeId bgQueueTypeId = sBattlegroundMgr->BGQueueTypeId(currentBg->GetTypeID(), currentBg->GetArenaType()); AddBattlegroundQueueId(bgQueueTypeId); - m_bgData.bgTypeID = currentBg->GetTypeID(true); + m_bgData.bgTypeID = currentBg->GetTypeID(); //join player to battleground group currentBg->EventPlayerLoggedIn(this); @@ -16834,7 +16834,7 @@ bool Player::LoadFromDB(uint32 guid, SQLQueryHolder *holder) } // if the player is in an instance and it has been reset in the meantime teleport him to the entrance - if (instanceId && !sInstanceSaveMgr->GetInstanceSave(instanceId)) + if (instanceId && !sInstanceSaveMgr->GetInstanceSave(instanceId) && !map->IsBattlegroundOrArena()) { AreaTrigger const* at = sObjectMgr->GetMapEntranceTrigger(mapId); if (at) diff --git a/src/server/game/Maps/MapInstanced.cpp b/src/server/game/Maps/MapInstanced.cpp index 2dafd44b0d1..fbe609bee23 100755 --- a/src/server/game/Maps/MapInstanced.cpp +++ b/src/server/game/Maps/MapInstanced.cpp @@ -124,9 +124,17 @@ Map* MapInstanced::CreateInstanceForPlayer(const uint32 mapId, Player* player) // the instance id is set in battlegroundid NewInstanceId = player->GetBattlegroundId(); if (!NewInstanceId) return NULL; - map = FindInstanceMap(NewInstanceId); + map = sMapMgr->FindMap(mapId, NewInstanceId); if (!map) - map = CreateBattleground(NewInstanceId, player->GetBattleground()); + { + if (Battleground* bg = player->GetBattleground()) + map = CreateBattleground(NewInstanceId, bg); + else + { + player->TeleportToBGEntryPoint(); + return NULL; + } + } } else { |