diff options
| -rw-r--r-- | 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 1e6a01a08f4..107bb80690d 100644 --- 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 6bfb3bbbc28..fd6303db29d 100755 --- a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h +++ b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h @@ -43,12 +43,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*) { } @@ -66,6 +66,7 @@ class TargetedMovementGenerator : public MovementGeneratorMedium< T, D >, public          float _offset;          float _angle;          bool _recalculateTravel; +        bool _speedChanged;          bool _targetReached;          bool _interrupt;  };  | 
