From 69243c4e5dc91b4c516cf39c589409452d1098e3 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Fri, 8 Oct 2021 15:13:00 +0200 Subject: [PATCH] fix(Core/Movement): Improved player's pet follow movement. (#8217) Fixes #8127 --- src/server/game/Entities/Object/Object.cpp | 15 ++++++++++++--- .../TargetedMovementGenerator.cpp | 2 +- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index d3c3e2a80..d20cce0fd 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -2668,9 +2668,18 @@ void WorldObject::GetNearPoint(WorldObject const* searcher, float& x, float& y, } // still not in LoS, give up and return first position found - x = first_x; - y = first_y; - z = first_z; + if (startPos) + { + x = searcher->GetPositionX(); + y = searcher->GetPositionY(); + z = searcher->GetPositionZ(); + } + else + { + x = first_x; + y = first_y; + z = first_z; + } } void WorldObject::GetVoidClosePoint(float& x, float& y, float& z, float size, float distance2d /*= 0*/, float relAngle /*= 0*/, float controlZ /*= 0*/) const diff --git a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp index bbac2322d..202311528 100644 --- a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp @@ -450,7 +450,7 @@ bool FollowMovementGenerator::DoUpdate(T* owner, uint32 time_diff) owner->UpdateAllowedPositionZ(x, y, z); bool success = i_path->CalculatePath(x, y, z, forceDest); - if (!success || i_path->GetPathType() & PATHFIND_NOPATH) + if (!success || (i_path->GetPathType() & PATHFIND_NOPATH && !followingMaster)) { if (!owner->IsStopped()) owner->StopMoving();