NPC pathfinding not going to correct destination

so I am making a pathfinding script. The NPC is supposed to go to the well, then the table, then back and forth like that forever. It worked fine until for some random reason it just kept going to the table. EVEN though it printed going to the well.
code is very long.
code

local PathfindingService = game:GetService("PathfindingService")
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")

local path = PathfindingService:CreatePath({
	AgentRadius = 3,
	
	Costs = {Water = 10,
		
		
	}
})

wait(2)
local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")



local waypoints
local nextWaypointIndex
local reachedConnection
local blockedConnection


	
local TEST_DESTINATION = game.Workspace.Well.Main.Position
local TEST_DESTINATION2 = game.Workspace.Table.Main.Position
while true do
	task.wait(5)
	if not character:FindFirstChild("Bucket") then
		local function followPath(destination)
			print("going to well...")

			-- Compute the path
			local success, errorMessage = pcall(function()
				path:ComputeAsync(character.PrimaryPart.Position, destination)
			end)

			if success and path.Status == Enum.PathStatus.Success then
				-- Get the path waypoints
				waypoints = path:GetWaypoints()
print("got well waypoints...")
				-- Detect if path becomes blocked
				blockedConnection = path.Blocked:Connect(function(blockedWaypointIndex)
					-- Check if the obstacle is further down the path
					if blockedWaypointIndex >= nextWaypointIndex then
						-- Stop detecting path blockage until path is re-computed
						blockedConnection:Disconnect()
						-- Call function to re-compute new path
						followPath(destination)
					end
				end)

				-- Detect when movement to next waypoint is complete
				if not reachedConnection then
					reachedConnection = humanoid.MoveToFinished:Connect(function(reached)
						if reached and nextWaypointIndex < #waypoints then
							-- Increase waypoint index and move to next waypoint
							nextWaypointIndex += 1
							humanoid:MoveTo(waypoints[nextWaypointIndex].Position)
							print("moving to well sloowwwllllyyy...")



						else

							reachedConnection:Disconnect()
							print("at well")
							blockedConnection:Disconnect()
							print("well blocked")
						end

					end)
				end

				-- Initially move to second waypoint (first waypoint is path start; skip it)

				nextWaypointIndex = 2
				humanoid:MoveTo(waypoints[nextWaypointIndex].Position)


			else
				warn("Path not computed!", errorMessage)
			end
		end

		followPath(TEST_DESTINATION)
	end
	if  character:FindFirstChild("Bucket") then
		print("going to table...")
local function followPath2(destination2)

	-- Compute the path
	local success, errorMessage = pcall(function()
		path:ComputeAsync(character.PrimaryPart.Position, destination2)
	end)

	if success and path.Status == Enum.PathStatus.Success then
		-- Get the path waypoints
		waypoints = path:GetWaypoints()

		-- Detect if path becomes blocked
		blockedConnection = path.Blocked:Connect(function(blockedWaypointIndex)
			-- Check if the obstacle is further down the path
			if blockedWaypointIndex >= nextWaypointIndex then
				-- Stop detecting path blockage until path is re-computed
				blockedConnection:Disconnect()
				-- Call function to re-compute new path
				followPath2(destination2)
			end
		end)

		-- Detect when movement to next waypoint is complete
		if not reachedConnection then
			reachedConnection = humanoid.MoveToFinished:Connect(function(reached)
				if reached and nextWaypointIndex < #waypoints then
					-- Increase waypoint index and move to next waypoint
					nextWaypointIndex += 1
						humanoid:MoveTo(waypoints[nextWaypointIndex].Position)
					
						
					
					else
						
					reachedConnection:Disconnect()
					blockedConnection:Disconnect()
					end
					
			end)
		end

		-- Initially move to second waypoint (first waypoint is path start; skip it)
		
		nextWaypointIndex = 2
			humanoid:MoveTo(waypoints[nextWaypointIndex].Position)
			
			
	else
		warn("Path not computed!", errorMessage)
	end
end

	followPath2(TEST_DESTINATION2)
	end
end

Also, lately if statements don’t work sometimes if it has an and.
Examples below
works.

local a1 = nil
local a2 = nil
if a1 == nil then
if a2 == nil then
print("Works")
end
end

Does not work or gives error

local a1 = nil
local a2 = nil
if a1 == nil and a2 == nil  then

print("Works")

end

maybe the pathfinding issue has something to do with that?