diff options
Diffstat (limited to 'src/game/MovementHandler.cpp')
-rw-r--r-- | src/game/MovementHandler.cpp | 3 |
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; } |