So I worked for 2 nights making this pathfinding script. It actually worked after I finished it last night, just needed a few bugs worked out. Today, I opened up ROBLOX Studio and there was an update. After updating, I opened my place and clicked "Play" while in "Edit" mode to make sure ROBLOX didn't break anything. Apparently they did.

Script:

wait(10) -- To allow time for Pathing script to name all nodes and for player to load
--Variable Declarations
Nodes = Workspace:findFirstChild("Pathing")
NumNodes = 1
NodeList = {}
NodeCon = {}
z = 1
NodePos = {}
Node = Nodes:findFirstChild("Node"..NumNodes)
Dist = 100
DiagDist = 200
--Functions
function FindNear(Node,Closed,Num)
	x = 1
	ReturnList = {}
	for y = 1, NumNodes do
		if DistTo(NodeList[y],Node) == Dist or DistTo(NodeList[y],Node) == DiagDist then
			Open = true
			for z=1,Num do
				if NodeList[y] == Closed[z] then
					Open = false
				end
			end
			if Open == true then
				ReturnList[x] = NodeList[y]
				x = x + 1
			end
		end
	end
	return ReturnList
end
function NumberNear(Node,Closed,Num)
	x = 0
	for y = 1, NumNodes do
		if DistTo(NodeList[y],Node) == Dist or DistTo(NodeList[y],Node) == DiagDist then
			Open = true
			for z=1,Num do
				if NodeList[y] == Closed[z] then
					Open = false
				end
			end
			if Open == true then
				x = x + 1
			end
		end
	end
	return x
end
function FindMove(Start,End)
	local Current = Start
	local ClosedSet = {}
	local NumClosed = 0
	local Adjacent = {}
	local PossNext = {}
	local CurrentPath = {}
	local PathNum = 1
	local NumPosNex = 0
	local NexDis = 1000
	local Runs = 0
	local Next = nil
	while Current ~= End and Runs <= NumNodes do
		Runs = Runs + 1
		if CurrentPath[PathNum] == nil then
			CurrentPath[PathNum] = Current
			PathNum = PathNum + 1
		end
		Adjacent = FindNear(Current,ClosedSet,NumClosed)
		for x = 1,NumberNear(Current,ClosedSet,NumClosed) do
			if Adjacent[x] ~= nil then
				if DistTo(Adjacent[x],End) < DistTo(Current,End) then
					NumPosNex = NumPosNex + 1
					PossNext[NumPosNex] = Adjacent[x]
				end
			end
		end
		for x = 1,NumPosNex do
			if PossNext[x] ~= End then
				if DistTo(PossNext[x],End) < NexDis then
					NexDis = DistTo(PossNext[x],End)
					Next = PossNext[x]
				end
			else			
				Next = End
				NexDis = -1000
				x = 1000
			end
		end
		for x = NumPosNex,1,-1 do
			PossNext[x] = nil
		end
		NumPosNex = 0
		if Next ~= nil then
			CurrentPath[PathNum] = Next
			PathNum = PathNum + 1
			Current = Next
			NumClosed = NumClosed + 1
			ClosedSet[NumClosed] = Next	
		else
			for x=PathNum,1,-1 do
				CurrentPath[x] = nil
			end
			PathNum = 1
			Current = Start
		end
		Next = nil
		NexDis = 1000
	end
	if CurrentPath[2] ~= nil then
		return CurrentPath
	else
		return nil
	end
end
function DistTo(Start,End)
	Ans = math.sqrt(math.pow(math.abs(Start.Position.x - End.Position.x),2) + math.pow(math.abs(Start.Position.z - End.Position.z),2))
	return Ans	
end
function FindClosest(Target)
	closeDist = 100
	close = nil
	for x=1,NumNodes do
		if DistTo(NodeList[x],Target) < closeDist then
			close = NodeList[x]
			closeDist = DistTo(NodeList[x],Target)
		end
	end
	return close
end
--I do not take credit for findNearestTorso script.
function findNearestTorso(pos)
	local list = game.Workspace:children()
	local torso = nil
	local dist = 1000
	local temp = nil
	local human = nil
	local temp2 = nil
	for x = 1, #list do
		temp2 = list[x]
		if (temp2.className == "Model") and (temp2 ~= script.Parent) then
			temp = temp2:findFirstChild("Right Arm")
			human = temp2:findFirstChild("Humanoid")
			if (temp ~= nil) and (human ~= nil) and (human.Health > 0) then
				if (temp.Position - pos).magnitude < dist then
					torso = temp
					dist = (temp.Position - pos).magnitude
				end
			end
		end
	end
	return torso
end

--Main
while Node ~= nil do
	NodeList[NumNodes] = Node
	NumNodes = NumNodes + 1
	Node = Nodes:findFirstChild("Node"..NumNodes)
end
NumNodes = NumNodes - 1
for x=1,NumNodes-1 do
	for y=x+1,NumNodes do
		D = DistTo(NodeList[x],NodeList[y])
		if D < Dist then
			Dist = D
		end
	end
end
DiagDist = math.sqrt(math.pow(Dist,2) + math.pow(Dist,2))
while true do
	Target = findNearestTorso(script.Parent.Torso.Position)
	TargetMoved = false
	CloseNode = FindClosest(Target)
	PathNum = 1
	while CloseNode ~= nil and TargetMoved == false do
		wait(.1)
		Path = FindMove(FindClosest(script.Parent.Torso),CloseNode)
		if Path ~= nil then
		while TargetMoved == false and CloseNode ~= nil do
			while DistTo(script.Parent.Torso,Path[PathNum]) > 7 do
				wait(.1)
				script.Parent.Humanoid:MoveTo(Path[PathNum].Position, Path[PathNum])
				if FindClosest(Target) ~= CloseNode then
					TargetMoved = true
				end
			end
			if Path[PathNum] == CloseNode then
				CloseNode = nil
			else
				PathNum = PathNum + 1
			end
		end
		else
			print("No Path")
		end
	end
	Closest = FindClosest(Target)
	while Target ~= nil and TargetMoved == false do
		wait(.1)
		script.Parent.Humanoid:MoveTo(Target.Position, Target)
		if Closest ~= FindClosest(Target) and DistTo(Target,script.Parent.Torso) < 20 then
			TargetMoved = true
		end
	end	
end

Output:

12:37:38.299 - Workspace.Pathing.Pathfinder.Script:115: attempt to index local 'End' (a nil value)

12:37:38.299 - Stack Begin

12:37:38.300 - Script 'Workspace.Pathing.Pathfinder.Script', Line 115 - global DistTo

12:37:38.300 - Script 'Workspace.Pathing.Pathfinder.Script', Line 122 - global FindClosest

12:37:38.301 - Script 'Workspace.Pathing.Pathfinder.Script', Line 172

12:37:38.301 - Stack End

Apparently on line 115, "End" is a nil value, but I don't see WHY it's a nil value.

On a side note: There are 120 Nodes on the map.