aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp28
1 files changed, 17 insertions, 11 deletions
diff --git a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp
index e0f310fdbff..e93e5e5be5f 100644
--- a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp
@@ -256,16 +256,15 @@ bool WaypointMovementGenerator<Creature>::DoUpdate(Creature* creature, uint32 di
if (!_nextMoveTime.Passed())
{
- _nextMoveTime.Update(diff);
- if (_nextMoveTime.Passed())
- return StartMoveNow(creature);
+ if (creature->movespline->Finalized())
+ {
+ _nextMoveTime.Update(diff);
+ if (_nextMoveTime.Passed())
+ return StartMoveNow(creature);
+ }
}
else
{
- // Set home position at place on waypoint movement.
- if (creature->GetTransGUID().IsEmpty())
- creature->SetHomePosition(creature->GetPosition());
-
if (creature->movespline->Finalized())
{
OnArrived(creature);
@@ -274,14 +273,21 @@ bool WaypointMovementGenerator<Creature>::DoUpdate(Creature* creature, uint32 di
if (_nextMoveTime.Passed())
return StartMove(creature);
}
- else if (_recalculateSpeed)
+ else
{
- if (_nextMoveTime.Passed())
- StartMove(creature);
+ // Set home position at place on waypoint movement.
+ if (creature->GetTransGUID().IsEmpty())
+ creature->SetHomePosition(creature->GetPosition());
+
+ if (_recalculateSpeed)
+ {
+ if (_nextMoveTime.Passed())
+ StartMove(creature);
+ }
}
}
return true;
- }
+}
void WaypointMovementGenerator<Creature>::MovementInform(Creature* creature)
{