aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.cpp
index 28bc55f33bb..76d6f86854b 100644
--- a/src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.cpp
@@ -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);