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();