Not detecting touches properly

I am trying to make an Egg Inc. style game, and trying to make it so the Characters move toward a destination and when they get there, they get a point added to the leaderstat and the character is deleted, but instead the character just stays there and the leaderstat doesn’t change.

Scripts

Pathfinding Script


local path = PathfindingService:CreatePath()
local Noob = script.Parent.Parent
local Humanoid = script.Parent
local destination = game.Workspace.Destination
local destination2 = game.Workspace.Destination2
local destination3 = game.Workspace.Destination3
local destination4 = game.Workspace.Destination4

local path = PathfindingService:CreatePath()

local randomdest = math.random(1,4)
if randomdest == 1 then
	path:ComputeAsync(Noob.Torso.Position, destination.Position)
elseif randomdest == 2 then
	path:ComputeAsync(Noob.Torso.Position, destination2.Position)
elseif randomdest == 3 then
	path:ComputeAsync(Noob.Torso.Position, destination3.Position)
else
	path:ComputeAsync(Noob.Torso.Position, destination4.Position)
end


local waypoints = path:GetWaypoints()

-- Loop through waypoints
for _, waypoint in pairs(waypoints) do
	--local part = Instance.new("Part")
	--part.Shape = "Ball"
	--part.Material = "Neon"
	--part.Size = Vector3.new(0.6, 0.6, 0.6)
	--part.Position = waypoint.Position
	--part.Anchored = true
	--part.CanCollide = false
	--part.Parent = game.Workspace

	-- Move zombie to the next waypoint
	Humanoid:MoveTo(waypoint.Position)
	-- Wait until zombie has reached the waypoint before continuing
	Humanoid.MoveToFinished:Wait()
end

Detection Script [Local Script]

local Noob = script.Parent.Parent
local Humanoid = script.Parent

local destination = game.Workspace.Destination
local destination2 = game.Workspace.Destination2
local destination3 = game.Workspace.Destination3
local destination4 = game.Workspace.Destination4

Noob.Torso.Touched:Connect(function(TouchedPart)
	if TouchedPart == destination then
		game.ReplicatedStorage.Chicken:FireServer()
		Noob:Destroy()
	elseif TouchedPart == destination2 then
		game.ReplicatedStorage.Chicken:FireServer()
		Noob:Destroy()
	elseif TouchedPart == destination3 then
		game.ReplicatedStorage.Chicken:FireServer()
		Noob:Destroy()
	elseif TouchedPart == destination4 then
		game.ReplicatedStorage.Chicken:FireServer()
		Noob:Destroy()
	end
end)

Leaderstats Change Script script

game.ReplicatedStorage.Chicken.OnServerEvent:Connect(function(player)
	player.leaderstats.Chickens += 1
end)

Couldn’t you just make the TouchedPart check for a name? Also, I believe the reason why it isn’t working is cause you’re trying to make it equal to an Instance

if TouchedPart.Name == "Destination" then
    game.ReplicatedStorage.Chicken:FireServer()
    Noob:Destroy()
end

I’d use magnitude instead. Touched is unreliable, especially on the server. Just make the character move towards the first destination with :MoveTo(), then use .MoveToFinished to get the closest destination.

But it doesn’t work either, when it reaches its destination it just stays there and isn’t detected