aboutsummaryrefslogtreecommitdiff
path: root/src/game/MovementHandler.cpp
diff options
context:
space:
mode:
authorQAston <none@none>2009-08-03 19:48:28 +0200
committerQAston <none@none>2009-08-03 19:48:28 +0200
commit08cd876f368c7bbf4d7a8d9b39c81809e640f99d (patch)
treefb7d68af79b8eae60ab985aa5dcf1250c957ceb9 /src/game/MovementHandler.cpp
parent044b8b44a3efc5332f22be9d34ebdeee1ea49634 (diff)
*Update zone for players after adding to map. - by VladimirMangos
*Skip instance loading for player with flypath/on transport. --HG-- branch : trunk
Diffstat (limited to 'src/game/MovementHandler.cpp')
-rw-r--r--src/game/MovementHandler.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/game/MovementHandler.cpp b/src/game/MovementHandler.cpp
index 85514353152..e41ad2c14b8 100644
--- a/src/game/MovementHandler.cpp
+++ b/src/game/MovementHandler.cpp
@@ -66,6 +66,7 @@ void WorldSession::HandleMoveWorldportAckOpcode()
GetPlayer()->SetSemaphoreTeleportFar(false);
+ Map * oldMap = GetPlayer()->GetMap();
// relocate the player to the teleport destination
Map * newMap = MapManager::Instance().CreateMap(loc.mapid, GetPlayer(), 0);
// the CanEnter checks are done in TeleporTo but conditions may change
@@ -86,6 +87,8 @@ void WorldSession::HandleMoveWorldportAckOpcode()
if(!GetPlayer()->GetMap()->Add(GetPlayer()))
{
sLog.outError("WORLD: failed to teleport player %s (%d) to map %d because of unknown reason!", GetPlayer()->GetName(), GetPlayer()->GetGUIDLow(), loc.mapid);
+ GetPlayer()->ResetMap();
+ GetPlayer()->SetMap(oldMap);
GetPlayer()->TeleportTo(GetPlayer()->m_homebindMapId, GetPlayer()->m_homebindX, GetPlayer()->m_homebindY, GetPlayer()->m_homebindZ, GetPlayer()->GetOrientation());
return;
}