diff options
author | Shauren <shauren.trinity@gmail.com> | 2025-10-13 14:27:39 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2025-10-13 14:27:39 +0200 |
commit | d48e97731538b01c4005cd7c73653a0f33015098 (patch) | |
tree | 23e838ae1e6b875c46676db3bd176b1e0f9495a5 /src | |
parent | 22f8015df14bafa05f87e4194d1eeb5209bc5e2e (diff) |
Core/Movement: Fix teleports to transports within the same map
Diffstat (limited to 'src')
-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; |