diff options
author | megamage <none@none> | 2009-02-10 01:06:39 -0600 |
---|---|---|
committer | megamage <none@none> | 2009-02-10 01:06:39 -0600 |
commit | 58374f87b4b3eb2f92dfa8f28969b187a544e6b2 (patch) | |
tree | 53d2a174bf3c373c85e1e811c0a9caf8a50a9674 /src/game/Map.cpp | |
parent | ba7a8cc836d614f98f5284205c6504aba4a16067 (diff) |
[7254] Cleanups and batter checking in homebind/bgEntryPoint code.
* Load homebind data early in Player::LoadFromDB and use instead initital race points
in cases need some safe point if current coordinate broken by some reason.
* Store BG entry point in to WorldLocation and simplify calls.
* Set bg entry point at GM teleports to battleground for correct
auto-recall position at battleground end.
Author: VladimirMangos
--HG--
branch : trunk
Diffstat (limited to 'src/game/Map.cpp')
-rw-r--r-- | src/game/Map.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/game/Map.cpp b/src/game/Map.cpp index 805724d49ec..8a05d4d8380 100644 --- a/src/game/Map.cpp +++ b/src/game/Map.cpp @@ -2147,12 +2147,14 @@ void BattleGroundMap::UnloadAll(bool pForce) { while(HavePlayers()) { - Player * plr = m_mapRefManager.getFirst()->getSource(); - if(plr) (plr)->TeleportTo(plr->m_homebindMapId, plr->m_homebindX, plr->m_homebindY, plr->m_homebindZ, plr->GetOrientation()); - // TeleportTo removes the player from this map (if the map exists) -> calls BattleGroundMap::Remove -> invalidates the iterator. - // just in case, remove the player from the list explicitly here as well to prevent a possible infinite loop - // note that this remove is not needed if the code works well in other places - plr->GetMapRef().unlink(); + if(Player * plr = m_mapRefManager.getFirst()->getSource()) + { + plr->TeleportTo(plr->GetBattleGroundEntryPoint()); + // TeleportTo removes the player from this map (if the map exists) -> calls BattleGroundMap::Remove -> invalidates the iterator. + // just in case, remove the player from the list explicitly here as well to prevent a possible infinite loop + // note that this remove is not needed if the code works well in other places + plr->GetMapRef().unlink(); + } } Map::UnloadAll(pForce); |