From 8777efd03cbad7036c371c88b0212e8425c5bf59 Mon Sep 17 00:00:00 2001 From: QAston Date: Mon, 3 Aug 2009 12:52:31 +0200 Subject: *Add some crash prevention checks. --HG-- branch : trunk --- src/game/MovementHandler.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/game/MovementHandler.cpp') diff --git a/src/game/MovementHandler.cpp b/src/game/MovementHandler.cpp index 5ec73f9cb48..85514353152 100644 --- a/src/game/MovementHandler.cpp +++ b/src/game/MovementHandler.cpp @@ -66,8 +66,6 @@ void WorldSession::HandleMoveWorldportAckOpcode() GetPlayer()->SetSemaphoreTeleportFar(false); - GetPlayer()->ResetMap(); - // 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 @@ -75,19 +73,21 @@ void WorldSession::HandleMoveWorldportAckOpcode() if (!newMap || !newMap->CanEnter(GetPlayer())) { sLog.outError("Map %d could not be created for player %d, porting player to homebind", loc.mapid, GetPlayer()->GetGUIDLow()); - GetPlayer()->RelocateToHomebind(loc.mapid); - newMap = MapManager::Instance().CreateMap(loc.mapid, GetPlayer(), 0); + GetPlayer()->TeleportTo(GetPlayer()->m_homebindMapId, GetPlayer()->m_homebindX, GetPlayer()->m_homebindY, GetPlayer()->m_homebindZ, GetPlayer()->GetOrientation()); + return; } else GetPlayer()->Relocate(loc.coord_x, loc.coord_y, loc.coord_z, loc.orientation); + GetPlayer()->ResetMap(); GetPlayer()->SetMap(newMap); GetPlayer()->SendInitialPacketsBeforeAddToMap(); 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); - assert(false); + GetPlayer()->TeleportTo(GetPlayer()->m_homebindMapId, GetPlayer()->m_homebindX, GetPlayer()->m_homebindY, GetPlayer()->m_homebindZ, GetPlayer()->GetOrientation()); + return; } // battleground state prepare (in case join to BG), at relogin/tele player not invited -- cgit v1.2.3