diff options
-rwxr-xr-x | src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp | 5 | ||||
-rwxr-xr-x | src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h | 5 |
2 files changed, 7 insertions, 3 deletions
diff --git a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp index 122156f165e..a4efd581a4e 100755 --- a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp @@ -82,7 +82,9 @@ bool TargetedMovementGenerator<T, D>::DoUpdate(T* owner, uint32 diff) } if (targetMoved) - SetTargetLocation(owner, targetMoved); + SetTargetLocation(owner, true); + else if (_speedChanged) + SetTargetLocation(owner, false); if (!_targetReached && owner->movespline->Finalized()) { @@ -177,6 +179,7 @@ void TargetedMovementGenerator<T, D>::SetTargetLocation(T* owner, bool updateDes _targetReached = false; _recalculateTravel = false; + _speedChanged = false; AddUnitStateMove(owner); diff --git a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h index 2bd04e292f4..9f4e3712b5c 100755 --- a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h +++ b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h @@ -42,12 +42,12 @@ template<class T, typename D> class TargetedMovementGenerator : public MovementGeneratorMedium< T, D >, public TargetedMovementGeneratorBase { public: - explicit TargetedMovementGenerator(Unit* target, float offset, float angle) : TargetedMovementGeneratorBase(target), _path(nullptr), _timer(0), _offset(offset), _angle(angle), _recalculateTravel(false), _targetReached(false), _interrupt(false) { } + explicit TargetedMovementGenerator(Unit* target, float offset, float angle) : TargetedMovementGeneratorBase(target), _path(nullptr), _timer(0), _offset(offset), _angle(angle), _recalculateTravel(false), _speedChanged(false), _targetReached(false), _interrupt(false) { } ~TargetedMovementGenerator(); bool DoUpdate(T*, uint32); - void UnitSpeedChanged() override { _recalculateTravel = true; } + void UnitSpeedChanged() override { _speedChanged = true; } virtual void ClearUnitStateMove(T*) { } virtual void AddUnitStateMove(T*) { } @@ -65,6 +65,7 @@ class TargetedMovementGenerator : public MovementGeneratorMedium< T, D >, public float _offset; float _angle; bool _recalculateTravel; + bool _speedChanged; bool _targetReached; bool _interrupt; }; |