Anyone Have any clue why my script won't work with r6?

For some reason, my code won’t work with an r6 dummy and I can;'t figure out why…

local NPC = game.Workspace.LocalNPC
local pathfinding_service = game:GetService("PathfindingService")

function getClosestPlayer()
	local closest_player, closest_distance = nil, 200
	for i, player in pairs(workspace:GetChildren()) do
		if player:FindFirstChild("Humanoid") and player ~= NPC then
			local distance = (NPC.PrimaryPart.Position - player.PrimaryPart.Position).Magnitude
			if distance < closest_distance then
				closest_player = player
				closest_distance = distance
			end
		end
	end
	return closest_player, closest_distance
end

while true do
	local path = pathfinding_service:CreatePath()
	local player, distance = getClosestPlayer()
	if player and distance > 10 then
		path:ComputeAsync(NPC.HumanoidRootPart.Position, player.PrimaryPart.Position)
		local waypoints = path:GetWaypoints()
		for _, waypoint in pairs(waypoints) do  
			NPC.Humanoid:MoveTo(waypoint.Position)
			while true do
				local distance = (NPC.PrimaryPart.Position - waypoint.Position).Magnitude
				local distance_from_player = (NPC.PrimaryPart.Position - player.PrimaryPart.Position).Magnitude
				if distance < 5 then
					break
				end
				if distance_from_player < 10 then
					NPC.Humanoid:MoveTo((NPC.HumanoidRootPart.CFrame*CFrame.new(0,0,-3)).p)
					break
				end
				wait()
			end
		end
	end
	wait()
end

The script is supposed to make the dummy follow the player but when the dummy is in r6 and the avatar type of the game is r6, the dummy won’t move. Can anyone help?