So, I'm making an RPG game, and my enemies sometimes break. They don't move at all! There are no errors or anything, they just stop working.

There's a few other things in my code, like the exp on death and stuff, but here's the loop:

while true do
	local low = script.Parent.Detect.Value
	local plr = nil
	
	--check distances
	for _, player in pairs(game.Players:GetPlayers()) do
		dis = player:DistanceFromCharacter(script.Parent.Head.Position)
		if dis <= low then
			plr = player
			low = dis --as soon as I added this line the code started breaking
		end
	end
	
	wait(.01)
	-- if there is a player in range, move to it
	if plr and plr.Character then
		repeat

			if plr.Character:FindFirstChild("HumanoidRootPart") then move(plr.Character.HumanoidRootPart) end
			if plr.Character.Head.Position.Y >= script.Parent.Head.Position.Y + 1 then script.Parent.Humanoid.Jump = true end
				wait(.01)
		until plr:DistanceFromCharacter(script.Parent.Head.Position) >= script.Parent.Detect.Value or not plr.Character:FindFirstChild("HumanoidRootPart")
		if plr.Character:FindFirstChild("HumanoidRootPart") then move(plr.Character.HumanoidRootPart) end
	end
end

Oh, and I should probably add the move function here too:

function move(part)
	if part then
		local to = part.Position
		local p = part.Parent[part.Name]
		script.Parent.Humanoid:MoveTo(to,p)
	end
end

please help