From 7d69ee8b9ca7fda3b64b41bb51caec574f724c46 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Fri, 16 Apr 2021 12:04:56 +0200 Subject: [PATCH] fix(Core/Movement): Make sure pet always follows its master. (#5103) --- .../MovementGenerators/TargetedMovementGenerator.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp index 6fd98b256..529beb24a 100644 --- a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp @@ -151,12 +151,13 @@ bool ChaseMovementGenerator::DoUpdate(T* owner, uint32 time_diff) if (owner->IsHovering()) owner->UpdateAllowedPositionZ(x, y, z); + i_recalculateTravel = true; + bool success = i_path->CalculatePath(x, y, z, forceDest); if (!success || i_path->GetPathType() & PATHFIND_NOPATH) { if (cOwner) cOwner->SetCannotReachTarget(true); - owner->StopMoving(); return true; } @@ -173,7 +174,6 @@ bool ChaseMovementGenerator::DoUpdate(T* owner, uint32 time_diff) } owner->AddUnitState(UNIT_STATE_CHASE_MOVE); - i_recalculateTravel = true; Movement::MoveSplineInit init(owner); init.MovebyPath(i_path->GetPath()); @@ -333,17 +333,18 @@ bool FollowMovementGenerator::DoUpdate(T* owner, uint32 time_diff) target->GetNearPoint(owner, x, y, z, _range, 0.f, target->ToAbsoluteAngle(tAngle)); + i_recalculateTravel = true; + bool success = i_path->CalculatePath(x, y, z, forceDest); if (!success || i_path->GetPathType() & PATHFIND_NOPATH) { - owner->StopMoving(); + if (cOwner) + cOwner->SetCannotReachTarget(true); return true; } owner->AddUnitState(UNIT_STATE_FOLLOW_MOVE); - i_recalculateTravel = true; - Movement::MoveSplineInit init(owner); init.MovebyPath(i_path->GetPath()); init.SetFacing(target->GetOrientation());