From 7b0eb70fe76618cc089315b9614a15bc723ea184 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Tue, 22 Feb 2022 14:05:35 -0500 Subject: [PATCH] Core/Movement: followup Port From (https://github.com/TrinityCore/TrinityCore/commit/9fd26c5f09c6c99635a8cd8ac961abe9d0c79e5d) --- .../Game/Movement/Generators/ChaseMovementGenerator.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Source/Game/Movement/Generators/ChaseMovementGenerator.cs b/Source/Game/Movement/Generators/ChaseMovementGenerator.cs index e051ac3bc..1f185184b 100644 --- a/Source/Game/Movement/Generators/ChaseMovementGenerator.cs +++ b/Source/Game/Movement/Generators/ChaseMovementGenerator.cs @@ -77,8 +77,8 @@ namespace Game.Movement if (target == null || !target.IsInWorld) return false; - // the owner might be unable to move (rooted or casting), pause movement - if (owner.HasUnitState(UnitState.NotMove) || owner.IsMovementPreventedByCasting()) + // the owner might be unable to move (rooted or casting), or we have lost the target, pause movement + if (owner.HasUnitState(UnitState.NotMove) || owner.IsMovementPreventedByCasting() || HasLostTarget(owner, target)) { owner.StopMoving(); _lastTargetPosition = null; @@ -246,6 +246,11 @@ namespace Game.Movement public override void UnitSpeedChanged() { _lastTargetPosition = null; } + static bool HasLostTarget(Unit owner, Unit target) + { + return owner.GetVictim() != target; + } + static bool IsMutualChase(Unit owner, Unit target) { if (target.GetMotionMaster().GetCurrentMovementGeneratorType() != MovementGeneratorType.Chase)