diff options
-rw-r--r-- | src/server/game/Handlers/MovementHandler.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp index 4eda5552864..5d40526d315 100644 --- a/src/server/game/Handlers/MovementHandler.cpp +++ b/src/server/game/Handlers/MovementHandler.cpp @@ -293,20 +293,22 @@ void WorldSession::HandleMoveTeleportAck(WorldPackets::Movement::MoveTeleportAck uint32 old_zone = plMover->GetZoneId(); TeleportLocation const& dest = plMover->GetTeleportDest(); + WorldLocation destLocation = dest.Location; - float x, y, z, o; - dest.Location.GetPosition(x, y, z, o); if (dest.TransportGuid) { if (Transport* transport = plMover->GetMap()->GetTransport(*dest.TransportGuid)) { transport->AddPassenger(plMover); - plMover->m_movementInfo.transport.pos.Relocate(dest.Location.GetPosition()); + plMover->m_movementInfo.transport.pos.Relocate(destLocation); + float x, y, z, o; + dest.Location.GetPosition(x, y, z, o); transport->CalculatePassengerPosition(x, y, z, &o); + destLocation.Relocate(x, y, z, o); } } - plMover->UpdatePosition(dest.Location, true); + plMover->UpdatePosition(destLocation, true); plMover->SetFallInformation(0, GetPlayer()->GetPositionZ()); uint32 newzone, newarea; |