-- Rebuild the map from current source and report what actually landed. -- The workspace snapshot predates today's edits; this regenerates it. local SS = game:GetService("ServerScriptService") local out = {} local function say(s) table.insert(out, s) end local mb for _, d in ipairs(SS:GetDescendants()) do if d:IsA("ModuleScript") and d.Name == "MapBuilder" then mb = d end end if not mb then return "MapBuilder NOT FOUND" end local okReq, M = pcall(require, mb) if not okReq then return "require failed: " .. tostring(M) end local old = workspace:FindFirstChild("Map") if old then old:Destroy() say("destroyed stale Map") end local t0 = os.clock() local okB, err = pcall(function() return M.build() end) say(("build: %s (%.2fs)"):format(okB and "OK" or ("FAILED -> " .. tostring(err)), os.clock() - t0)) if not okB then return table.concat(out, "\n") end local map = workspace:FindFirstChild("Map") if not map then return table.concat(out, "\n") .. "\nMap MISSING after build" end local parts, slip, aux = 0, {}, 0 for _, d in ipairs(map:GetDescendants()) do if d:IsA("BasePart") then parts += 1 for _, s in ipairs({ "PAWestSlip", "PAEastSlip" }) do local k = d.Name:match("^" .. s .. "_Deck_(%d+)$") if k then slip[s] = slip[s] or {} table.insert(slip[s], { i = tonumber(k), y = d.Position.Y }) end end if d.Name:match("^AuxLane_%d+$") then aux += 1 end end end say(("parts=%d auxLaneSegs=%d"):format(parts, aux)) for _, s in ipairs({ "PAWestSlip", "PAEastSlip" }) do local g = slip[s] if not g or #g == 0 then say(s .. ": ABSENT") else table.sort(g, function(a, b) return a.i < b.i end) local topY, level = g[1].y, 0 for _, seg in ipairs(g) do if math.abs(seg.y - topY) < 0.5 then level += 1 else break end end say(("%s: segs=%d startY=%.1f endY=%.1f level-run=%d/%d %s"):format( s, #g, topY, g[#g].y, level, #g, level >= 12 and "<- PARALLEL ASCENT PRESENT" or "<- old diving profile")) end end return table.concat(out, "\n")