From b750a3d3eb253dbb402425ee6b33dc5ba891b3a4 Mon Sep 17 00:00:00 2001 From: Quintine <15965533+Quintine@users.noreply.github.com> Date: Tue, 27 Oct 2026 22:05:43 +1100 Subject: [PATCH] Expose Advanced printed Kull preview in lobbies --- components/game-table.tsx | 23 ++-- components/ruleset-controls.tsx | 2 +- docs/ADVANCED_PREVIEW.md | 4 + docs/CHOAM_KULL_DESIGN.md | 17 +++ docs/CURRENT_STATUS.md | 8 ++ docs/IMPLEMENTATION_STATUS.md | 9 ++ game/engine.ts | 8 +- game/faction-reference.ts | 2 +- game/kull-advanced-profile.ts | 34 ++++++ game/reference.ts | 2 +- tests/advanced-kull-lobby-controls.test.tsx | 87 ++++++++++++++++ tests/advanced-kull-lobby-runtime.test.ts | 110 ++++++++++++++++++++ tests/advanced-preview-controls.test.ts | 2 +- tests/fixture-advanced-kull-lobby.ts | 57 ++++++++++ tests/kull-advanced-profile.test.ts | 67 ++++++++++++ tests/public-choam-kull-controls.test.tsx | 8 +- tests/public-choam-kull-runtime.test.ts | 2 +- 17 files changed, 422 insertions(+), 20 deletions(-) create mode 100644 game/kull-advanced-profile.ts create mode 100644 tests/advanced-kull-lobby-controls.test.tsx create mode 100644 tests/advanced-kull-lobby-runtime.test.ts create mode 100644 tests/fixture-advanced-kull-lobby.ts create mode 100644 tests/kull-advanced-profile.test.ts diff --git a/components/game-table.tsx b/components/game-table.tsx index b4206ab5..52319719 100644 --- a/components/game-table.tsx +++ b/components/game-table.tsx @@ -1360,6 +1360,7 @@ export function GameTable({

Kull Wahad development preview · provisional interception timing, not complete CHOAM or certified expansion rules.{' '} + {g.advanced && 'Advanced Kull prevents the attempted specific Karama effect; its phase duration is provisional. '} Preview rules and limits

)} @@ -2207,15 +2208,21 @@ export function GameTable({ act({ type: 'moduleOption', module: 'kullPreview', enabled: e.target.checked })} /> - Kull Wahad · Basic development preview + Kull Wahad · {g.advanced ? 'Advanced' : 'Basic'} development preview {g.lobbyModules?.kullPreview &&

- Requires Basic CHOAM with the CHOAM and Ix decks plus each faction’s deck, and no other optional modules. - This preview does not support phase-wide bid or combined turn-action Truthtrance questions, and it defers - unfunded non-CHOAM Karama-dependent bids. It does not represent complete - CHOAM rules. Every player must ready again after changing it. - When Richese is seated, structured bid, alliance, Revival and bribe commitments are unavailable, - and some Kull reactions may be unavailable in complex response windows. + {g.advanced ? <> + Requires Advanced CHOAM with only classic factions, the CHOAM and Ix decks, and no other optional modules. + This preview prevents the attempted specific Karama effect; phase duration is provisional. + Structured bid, alliance, Revival, bribe and combined turn-action questions are unavailable. + : <> + Requires Basic CHOAM with the CHOAM and Ix decks plus each faction’s deck, and no other optional modules. + Phase-wide bid and combined turn-action Truthtrance questions are unavailable. + When Richese is seated, structured bid, alliance, Revival and bribe commitments are also unavailable, + and some Kull reactions may be unavailable in complex response windows. + }{' '} + Unfunded non-CHOAM Karama-dependent bids remain deferred. This does not represent complete CHOAM rules. + Every player must ready again after changing it.

} {g.lobbyModules?.kullDefault &&

{g.lobbyModules.kullPreview @@ -2225,7 +2232,7 @@ export function GameTable({ {!g.lobbyModules?.kullDefault && !g.lobbyModules?.kullPreview && g.expansions.includes('choam') && g.expansions.includes('ix') && g.players.some(player => player.faction === 'choam') &&

- Printed Kull is inactive in this lobby. Its preview requires the supported Basic configuration and may need different module selections. + Printed Kull is inactive in this lobby. Its preview requires a supported {g.advanced ? 'Advanced' : 'Basic'} configuration and may need different module selections.

}