-- "Changes were reverted" -- WHERE? Distinguish three separate states that can -- each independently be stale: -- (a) the MapBuilder SOURCE inside Studio (Rojo sync state) -- (b) the BUILT geometry sitting in workspace (may predate the source) -- (c) the place file itself local out = {} local function say(s) table.insert(out, s) end say("place: " .. tostring(game.Name)) -- (a) SOURCE state in Studio local SS = game:GetService("ServerScriptService") 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 say("SOURCE: MapBuilder NOT FOUND in ServerScriptService") else local ok, src = pcall(function() return mb.Source end) if ok and type(src) == "string" then say(("SOURCE: len=%d PARALLEL_RUN=%s PA_DEC_SPAN=%s PA_SLIP=%s"):format( #src, tostring(src:find("PARALLEL_RUN") ~= nil), tostring(src:find("PA_DEC_SPAN") ~= nil), tostring(src:find("local PA_SLIP") ~= nil))) else say("SOURCE: unreadable " .. tostring(src)) end end -- (b) BUILT geometry actually in the workspace right now local map = workspace:FindFirstChild("Map") if not map then say("BUILT: workspace.Map MISSING") return table.concat(out, "\n") end local slipSegs, auxSegs = {}, 0 for _, d in ipairs(map:GetDescendants()) do if d:IsA("BasePart") then for _, s in ipairs({ "PAWestSlip", "PAEastSlip" }) do local k = d.Name:match("^" .. s .. "_Deck_(%d+)$") if k then slipSegs[s] = slipSegs[s] or {} table.insert(slipSegs[s], { i = tonumber(k), p = d.Position }) end end if d.Name:match("^AuxLane_%d+$") then auxSegs += 1 end end end say("BUILT: aux lane segments = " .. auxSegs .. " (expect ~52 with decel+accel)") for _, s in ipairs({ "PAWestSlip", "PAEastSlip" }) do local g = slipSegs[s] if not g or #g == 0 then say(("BUILT: %s -- NO DECK SEGMENTS (ramp absent)"):format(s)) else table.sort(g, function(a, b) return a.i < b.i end) -- How many segments hold deck height before the descent starts? local topY = g[1].p.Y local level = 0 for _, seg in ipairs(g) do if math.abs(seg.p.Y - topY) < 0.5 then level += 1 else break end end local drop = topY - g[#g].p.Y say(("BUILT: %s segs=%d startY=%.1f endY=%.1f drop=%.1f level-run=%d/%d %s"):format( s, #g, topY, g[#g].p.Y, drop, level, #g, level >= 12 and "<- PARALLEL FIX PRESENT" or "<- OLD DIVING PROFILE")) end end return table.concat(out, "\n")