-- The user hand-edited ramps in Studio. Their work exists ONLY in the live -- workspace, not in MapBuilder source. Before touching anything, measure what -- is actually there now and how it differs from what source would generate. local out = {} local function say(s) table.insert(out, s) end say("place: " .. tostring(game.Name)) local map = workspace:FindFirstChild("Map") if not map then return "workspace.Map MISSING" end local parts = 0 for _, d in ipairs(map:GetDescendants()) do if d:IsA("BasePart") then parts += 1 end end say(("Map parts=%d (source rebuild produced 16820)"):format(parts)) -- Slip deck geometry as it stands RIGHT NOW. local slip = {} 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 slip[s] = slip[s] or {} table.insert(slip[s], { i = tonumber(k), pos = d.Position, size = d.Size, cf = d.CFrame, inst = d, }) end end end end 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].pos.Y, 0 for _, seg in ipairs(g) do if math.abs(seg.pos.Y - topY) < 0.5 then level += 1 else break end end -- widths and gaps tell us if the user reshaped it local wmin, wmax = math.huge, -math.huge local maxGap, gapAt = 0, -1 for j, seg in ipairs(g) do wmin = math.min(wmin, seg.size.X); wmax = math.max(wmax, seg.size.X) if j > 1 then local d2 = (seg.pos - g[j - 1].pos).Magnitude if d2 > maxGap then maxGap = d2; gapAt = seg.i end end end say(("%s: segs=%d idx[%d..%d] startY=%.1f endY=%.1f level=%d width=%.1f..%.1f maxGap=%.1f@%d"):format( s, #g, g[1].i, g[#g].i, topY, g[#g].pos.Y, level, wmin, wmax, maxGap, gapAt)) end end -- What barrier-ish parts exist, and on what? Name survey first so I know the -- real naming scheme before I go hunting for "missing" ones. local kinds = {} for _, d in ipairs(map:GetDescendants()) do if d:IsA("BasePart") then local n = d.Name:gsub("_%d+$", "_#") if n:lower():match("barrier") or n:lower():match("parapet") or n:lower():match("rail") or n:lower():match("wall") or n:lower():match("guard") or n:lower():match("kerb") or n:lower():match("curb") or n:lower():match("fence") then kinds[n] = (kinds[n] or 0) + 1 end end end local list = {} for k, v in pairs(kinds) do table.insert(list, ("%s=%d"):format(k, v)) end table.sort(list) say("BARRIER-LIKE PART NAMES: " .. (#list > 0 and table.concat(list, " ") or "NONE")) return table.concat(out, "\n")