-- East slip kinks hard at segs 6,7,11,12 (27.8/17.5/58.2/50.1 deg). The slip -- follows the mainline via centreAt(f), so either (a) the mainline bends -- viciously at those samples, or (b) the slip's own path math misbehaves. -- East runs join=551 -> land=539 (backwards, span=-12); west runs 525 -> 537. -- Sample the mainline heading across BOTH spans to tell which. local out = {} local function say(s) table.insert(out, s) end local map = workspace:FindFirstChild("Map") if not map then return "Map MISSING" end local deck = {} for _, d in ipairs(map:GetDescendants()) do if d:IsA("BasePart") then local k = d.Name:match("^Road_(%d+)$") or d.Name:match("^Deck_(%d+)$") or d.Name:match("^RoadDeck_(%d+)$") if k then table.insert(deck, { i = tonumber(k), p = d.Position, cf = d.CFrame }) end end end table.sort(deck, function(a, b) return a.i < b.i end) local byIdx = {} for _, d in ipairs(deck) do byIdx[d.i] = d end say(("mainline parts=%d idx %d..%d"):format(#deck, deck[1].i, deck[#deck].i)) local function report(lo, hi, label) say(("--- mainline heading, samples %d..%d (%s) ---"):format(lo, hi, label)) local prev, acc = nil, 0 local worst, worstAt = 0, -1 for i = lo, hi do local d = byIdx[i] if d then local h = d.cf.LookVector if prev then local dth = math.deg(math.acos(math.clamp(prev:Dot(h), -1, 1))) acc += dth if dth > worst then worst = dth; worstAt = i end if dth > 4 then say((" sample %d: turn %.1fdeg at (%.0f,%.0f,%.0f)"):format(i, dth, d.p.X, d.p.Y, d.p.Z)) end end prev = h end end say((" total=%.1fdeg worst=%.1fdeg@%d"):format(acc, worst, worstAt)) end report(525, 537, "WEST slip span - smooth one") report(539, 551, "EAST slip span - ugly one") -- Also: does the east span cross the sample-wrap boundary or reverse direction? say("--- endpoint geometry ---") for _, pair in ipairs({ { 525, 537, "west" }, { 551, 539, "east" } }) do local a, b = byIdx[pair[1]], byIdx[pair[2]] if a and b then local straight = (Vector3.new(a.p.X, 0, a.p.Z) - Vector3.new(b.p.X, 0, b.p.Z)).Magnitude say(("%s: join@%d=(%.0f,%.0f) land@%d=(%.0f,%.0f) straightDist=%.0f"):format( pair[3], pair[1], a.p.X, a.p.Z, pair[2], b.p.X, b.p.Z, straight)) end end return table.concat(out, "\n")