local selectRoute = function(train, model)
local route = train.PrimaryPart.Values.RouteValue.Value
local given = model:FindFirstChild("GivenPath")
local greenLitPaths = {}
local yellowLitPaths = {}
--some code omitted for this post
local function searchPathOptions()
--Omitted for this post
local function findBestPath()
searchPathOptions()
if #greenLitPaths == 1 then
local array = greenLitPaths[1]
local finalPath = array[1]
print(finalPath)
return(finalPath)
elseif #greenLitPaths > 1 then
sort(greenLitPaths)
local array = greenLitPaths[1]
local finalPath = array[1]
print(finalPath) --this prints what I expect
return(finalPath) --this returns nil. why??????
elseif #greenLitPaths < 1 then
if #yellowLitPaths == 1 then
local array = yellowLitPaths[1]
local finalPath = array[1]
print(finalPath)
return(finalPath)
elseif #yellowLitPaths > 1 then
sort(yellowLitPaths)
local array = yellowLitPaths[1]
local finalPath = array[1]
print(finalPath)
return(finalPath)
end
end
resetTables()
end
if given ~= nil then
if given.Values.BlockingTrain.Value == nil then
findBestPath()
end
else
findBestPath()
end
end
--start the path-choosing process
module.initiateChoice = function(train, model)
print(train, model)
local chooseRoute = selectRoute(train, model)
print(chooseRoute)
repeat
wait()
until chooseRoute ~= nil
local affected = chooseRoute:FindFirstChild("AffectedPaths")
local light = model.Values.Light.Value
local status = model.Values.Status
status.Value = chooseRoute.Values.Status.Value
switchMod.setSwitches(chooseRoute.Switches)
light.TrackDisplay.SurfaceGui.TextLabel.Text = chooseRoute.Values.ToTrack.Value
module.exist(affected, function(object)
module.alertAffected(train, object)
end)
end
note the lines where I say "this prints what I expect". On this line, I ask to print a member of a table, and it prints what I want it to (an object named Path). However, in the next line, I ask to return the exact same value, yet chooseRoute(variable in initiateChoice) always comes out to nil. This is really puzzling me.

1 comment
I got rid of the parentheses in the return lines and I still have the same problem.