mirror of
https://github.com/mangosfour/server.git
synced 2025-12-14 07:37:01 +00:00
[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.
This commit is contained in:
parent
e97c7ad9c5
commit
8af53064eb
8 changed files with 58 additions and 65 deletions
|
|
@ -1887,12 +1887,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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue