aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/MovementHandler.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2025-10-13 14:27:39 +0200
committerShauren <shauren.trinity@gmail.com>2025-10-13 14:27:39 +0200
commitd48e97731538b01c4005cd7c73653a0f33015098 (patch)
tree23e838ae1e6b875c46676db3bd176b1e0f9495a5 /src/server/game/Handlers/MovementHandler.cpp
parent22f8015df14bafa05f87e4194d1eeb5209bc5e2e (diff)
Core/Movement: Fix teleports to transports within the same map
Diffstat (limited to 'src/server/game/Handlers/MovementHandler.cpp')
-rw-r--r--src/server/game/Handlers/MovementHandler.cpp10
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;