mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-29 13:22:48 +01:00
Core/Movement: Don't start a spline with just 1 point in FlightPathMovementGenerator
Don't start a spline with just 1 point in FlightPathMovementGenerator. This happens when teleporting to a BG while on a taxi after second last node but closer to last node.
In this case the Player will be teleported to the last node.
(cherry picked from commit ec49576491)
This commit is contained in:
@@ -75,11 +75,19 @@ void FlightPathMovementGenerator::DoReset(Player* owner)
|
||||
owner->CombatStopWithPets();
|
||||
owner->AddUnitFlag(UnitFlags(UNIT_FLAG_REMOVE_CLIENT_CONTROL | UNIT_FLAG_TAXI_FLIGHT));
|
||||
|
||||
uint32 end = GetPathAtMapEnd();
|
||||
uint32 currentNodeId = GetCurrentNode();
|
||||
|
||||
if (currentNodeId == end)
|
||||
{
|
||||
TC_LOG_DEBUG("movement.flightpath", "FlightPathMovementGenerator::DoReset: trying to start a flypath from the end point. %s", owner->GetDebugInfo().c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
Movement::MoveSplineInit init(owner);
|
||||
// Providing a starting vertex since the taxi paths do not provide such
|
||||
init.Path().push_back(G3D::Vector3(owner->GetPositionX(), owner->GetPositionY(), owner->GetPositionZ()));
|
||||
uint32 end = GetPathAtMapEnd();
|
||||
for (uint32 i = GetCurrentNode(); i != end; ++i)
|
||||
for (uint32 i = currentNodeId; i != end; ++i)
|
||||
{
|
||||
G3D::Vector3 vertice(_path[i]->Loc.X, _path[i]->Loc.Y, _path[i]->Loc.Z);
|
||||
init.Path().push_back(vertice);
|
||||
|
||||
Reference in New Issue
Block a user