From 14c2a7fb92e49265071f36b65fb845ecc6dd4381 Mon Sep 17 00:00:00 2001 From: Ovah Date: Tue, 8 Oct 2019 11:11:24 +0200 Subject: Core/Taxis: teleport players to the destination taxi node location instead of their current ground position (#23835) * Core/Taxis: teleport players to the destination taxi node location instead of straight to their current ground position * fixed a typo (cherry picked from commit 7fcb77ecd12c42b8a468e8f932948c99c249a458) --- .../MovementGenerators/FlightPathMovementGenerator.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src/server') diff --git a/src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.cpp index ea01bcca42f..28bc55f33bb 100644 --- a/src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.cpp @@ -149,6 +149,7 @@ void FlightPathMovementGenerator::DoFinalize(Player* owner, bool active, bool/* if (!active) return; + uint32 taxiNodeId = owner->m_taxi.GetTaxiDestination(); owner->m_taxi.ClearTaxiDestinations(); owner->Dismount(); owner->RemoveUnitFlag(UnitFlags(UNIT_FLAG_REMOVE_CLIENT_CONTROL | UNIT_FLAG_TAXI_FLIGHT)); @@ -159,10 +160,13 @@ void FlightPathMovementGenerator::DoFinalize(Player* owner, bool active, bool/* // this prevent cheating with landing point at lags // when client side flight end early in comparison server side owner->StopMoving(); - float mapHeight = owner->GetMap()->GetHeight(owner->GetPhaseShift(), _path[GetCurrentNode()]->Loc.X, _path[GetCurrentNode()]->Loc.Y, _path[GetCurrentNode()]->Loc.Z); - owner->SetFallInformation(0, mapHeight); - // When the player reaches the last flight point, teleport to destination at map height - owner->TeleportTo(_path[GetCurrentNode()]->ContinentID, _path[GetCurrentNode()]->Loc.X, _path[GetCurrentNode()]->Loc.Y, mapHeight, owner->GetOrientation()); + + // When the player reaches the last flight point, teleport to destination taxi node location + if (TaxiNodesEntry const* node = sTaxiNodesStore.LookupEntry(taxiNodeId)) + { + owner->SetFallInformation(0, node->Pos.Z); + owner->TeleportTo(node->ContinentID, node->Pos.X, node->Pos.Y, node->Pos.Z, owner->GetOrientation()); + } } owner->RemovePlayerFlag(PLAYER_FLAGS_TAXI_BENCHMARK); -- cgit v1.2.3