diff options
author | maximius <none@none> | 2009-11-04 17:10:43 -0800 |
---|---|---|
committer | maximius <none@none> | 2009-11-04 17:10:43 -0800 |
commit | 2adb1b8d4c9410fa7da36222152a7b0e21eb79d4 (patch) | |
tree | 729587695b793c9d0e156a38cd3bf65529f461b0 /src | |
parent | 558ceeb9295c4c3d0b351143836cc92ee62e3530 (diff) |
*Revert some (apparently unreliable) asserts.. they're -almost- never false, but 'almost' isn't good enough.
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/game/MovementHandler.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/game/MovementHandler.cpp b/src/game/MovementHandler.cpp index 17002434fd8..d17ad1b8448 100644 --- a/src/game/MovementHandler.cpp +++ b/src/game/MovementHandler.cpp @@ -230,11 +230,7 @@ void WorldSession::HandleMovementOpcodes( WorldPacket & recv_data ) Unit *mover = _player->m_mover; - // vehicles become the mover, so mover->GetVehicle() should never be true - // also, if the mover is a vehicle, it should never be on a transport - assert(mover); - assert(!mover->GetVehicle()); - assert((mover->IsVehicle() && !mover->GetTransport()) || !mover->IsVehicle()); + assert(mover != NULL); // there must always be a mover Player *plMover = mover->GetTypeId() == TYPEID_PLAYER ? (Player*)mover : NULL; @@ -283,7 +279,7 @@ void WorldSession::HandleMovementOpcodes( WorldPacket & recv_data ) } // if we boarded a transport, add us to it - if (plMover && !plMover->GetTransport() && !mover->IsVehicle()) + if (plMover && !plMover->GetTransport()) { // elevators also cause the client to send MOVEMENTFLAG_ONTRANSPORT - just unmount if the guid can be found in the transport list for (MapManager::TransportSet::const_iterator iter = MapManager::Instance().m_Transports.begin(); iter != MapManager::Instance().m_Transports.end(); ++iter) @@ -297,10 +293,10 @@ void WorldSession::HandleMovementOpcodes( WorldPacket & recv_data ) } } - if (!mover->GetTransport() && !mover->IsVehicle()) + if (!mover->GetTransport() && !mover->GetVehicle()) movementInfo.flags &= ~MOVEMENTFLAG_ONTRANSPORT; } - else if (plMover && plMover->m_transport) // if we were on a transport, leave + else if (plMover && plMover->GetTransport()) // if we were on a transport, leave { plMover->m_transport->RemovePassenger(plMover); plMover->m_transport = NULL; @@ -333,6 +329,13 @@ void WorldSession::HandleMovementOpcodes( WorldPacket & recv_data ) mover->m_movementInfo = movementInfo; + // this is almost never true (not sure why it is sometimes, but it is), normally use mover->IsVehicle() + if (mover->GetVehicle()) + { + mover->SetOrientation(movementInfo.o); + return; + } + if (plMover) // nothing is charmed, or player charmed { plMover->SetPosition(movementInfo.x, movementInfo.y, movementInfo.z, movementInfo.o); |