diff options
author | megamage <none@none> | 2009-08-13 10:01:00 -0500 |
---|---|---|
committer | megamage <none@none> | 2009-08-13 10:01:00 -0500 |
commit | 284b0063a8b5e49ade31900c92219fe62c13c572 (patch) | |
tree | a27d19f2c5a1cbe18d264edb4a1ab93994ba9933 /src/game/MovementHandler.cpp | |
parent | 5ab3117c0cebd1d1a457e1ae4656ba7c9cbaeec7 (diff) |
*A hacky fix of the crash happening when player is teleported during logout.
--HG--
branch : trunk
Diffstat (limited to 'src/game/MovementHandler.cpp')
-rw-r--r-- | src/game/MovementHandler.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/game/MovementHandler.cpp b/src/game/MovementHandler.cpp index 0b96560f150..72fe205625d 100644 --- a/src/game/MovementHandler.cpp +++ b/src/game/MovementHandler.cpp @@ -67,6 +67,13 @@ void WorldSession::HandleMoveWorldportAckOpcode() GetPlayer()->SetSemaphoreTeleportFar(false); Map * oldMap = GetPlayer()->GetMap(); + assert(oldMap); + if(GetPlayer()->IsInWorld()) + { + sLog.outCrash("Player is still in world when teleported out of map %u! to new map %u", oldMap->GetId(), loc.mapid); + oldMap->Remove(GetPlayer(), false); + } + // 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 |