Daikoku PA: lift mainline over the apron, rebuild both ramps
The PA ring road and the expressway mainline were both at ground level, so the ring parapet stood INSIDE the carriageway (measured -10.0 studs of vertical overlap: a wall in the middle of the road). Reference photos of the real Daikoku Futo PA show the expressway flying OVER the parking apron on pillars, with the PA at ground level and ramps climbing up to meet it. Rebuilt to match: - mainline lifted 38 studs through the junction, eased in/out (max 5.26% grade, within real expressway limits) - PA ring + apron stay at ground level; legacy PARingPillar props removed - both on/off ramps regraded over the full rise with smoothstep easing, segments overlapped 3 studs so wheels can't catch a seam, plus support pillars and edge kerbs where the deck is high Verified in-engine against built parts (tools/diag_daikoku.luau), not just source: clearance now +28.0 studs, both ramps continuous (max step 5.62, no gaps). tools/plot_daikoku.py renders the plan/section for comparison.
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
--[[
|
||||
diag_editstate.luau -- read CarManager in the EDIT datamodel.
|
||||
|
||||
This is the datamodel that PERSISTS (unlike Play, which is a sandbox that
|
||||
is discarded on stop -- the thing that silently ate every previous push).
|
||||
|
||||
Purpose: capture a BEFORE snapshot so that after Rojo connects we can prove
|
||||
the sync actually replaced the source, rather than assuming it did. Records
|
||||
length and the two markers unique to the current fixes:
|
||||
|
||||
SHELL_YAW_OVERRIDE -> facing fix for hatch_junk / hyper_x (NEW, x3 in src)
|
||||
bestVol -> pre-existing var, NOT a freshness signal (x6 in src)
|
||||
|
||||
Note bestVol existed in the old code too (git HEAD line 479), so it proves
|
||||
nothing on its own -- SHELL_YAW_OVERRIDE is the real discriminator.
|
||||
Disk source is 41650 bytes; anything at 30631 is the old pre-fix version.
|
||||
]]
|
||||
|
||||
local ServerScriptService = game:GetService("ServerScriptService")
|
||||
|
||||
local out = {}
|
||||
local function log(...)
|
||||
local parts = {}
|
||||
for i = 1, select("#", ...) do
|
||||
parts[#parts + 1] = tostring((select(i, ...)))
|
||||
end
|
||||
table.insert(out, table.concat(parts, " "))
|
||||
end
|
||||
|
||||
log("=== EDIT datamodel: CarManager state ===")
|
||||
|
||||
local found = {}
|
||||
for _, d in ipairs(ServerScriptService:GetDescendants()) do
|
||||
if d:IsA("ModuleScript") and d.Name == "CarManager" then
|
||||
found[#found + 1] = d
|
||||
end
|
||||
end
|
||||
|
||||
log("instances found: " .. #found)
|
||||
if #found == 0 then
|
||||
log(" !! no CarManager in ServerScriptService at all")
|
||||
log(" Rojo sync will CREATE it under ServerScriptService.Server")
|
||||
end
|
||||
|
||||
for _, m in ipairs(found) do
|
||||
local src = ""
|
||||
pcall(function()
|
||||
src = m.Source
|
||||
end)
|
||||
local hasOverride = src:find("SHELL_YAW_OVERRIDE", 1, true) ~= nil
|
||||
log(string.format(" %s", m:GetFullName()))
|
||||
log(string.format(" len=%d (disk source = 41650, old = 30631)", #src))
|
||||
log(string.format(" SHELL_YAW_OVERRIDE=%s <-- the real freshness marker", tostring(hasOverride)))
|
||||
log(string.format(" verdict: %s", hasOverride and "FIXED source present" or "OLD pre-fix source"))
|
||||
end
|
||||
|
||||
-- Also note whether the stale proof marker survived (it should NOT have --
|
||||
-- it only ever existed in the discarded Play sandbox).
|
||||
local marker = nil
|
||||
for _, d in ipairs(workspace:GetDescendants()) do
|
||||
if d.Name == "HERMES_PROOF_MARKER" then
|
||||
marker = d
|
||||
break
|
||||
end
|
||||
end
|
||||
log("")
|
||||
log(
|
||||
"HERMES_PROOF_MARKER in Edit: "
|
||||
.. (marker and "present (unexpected)" or "absent (expected - Play sandbox discarded)")
|
||||
)
|
||||
|
||||
return table.concat(out, "\n")
|
||||
Reference in New Issue
Block a user