From c12b463439521134f5ca3ee9c00bf0fbd33fbd3b Mon Sep 17 00:00:00 2001 From: Quintine <15965533+Quintine@users.noreply.github.com> Date: Mon, 5 Oct 2026 17:35:51 +1100 Subject: [PATCH] Compose classic Discovery skills and Advanced Orgiz collection --- components/discoveries.tsx | 12 +- docs/CURRENT_STATUS.md | 36 +++ docs/DISCOVERY_PROTOTYPE.md | 119 +++++++- docs/IMPLEMENTATION_STATUS.md | 37 +++ docs/RULE_DECISIONS.md | 4 +- game/bureaucrat-payment.ts | 3 +- game/discovery-collection.ts | 102 ++++--- game/discovery-module-profile.ts | 24 ++ game/engine.ts | 22 +- game/leader-skill-profile.ts | 4 +- game/reference.ts | 11 +- .../discovery-classic-skills-runtime.test.ts | 260 ++++++++++++++++++ tests/discovery-collection.test.ts | 129 ++++++++- tests/discovery-module-profile.test.ts | 21 +- .../discovery-orgiz-advanced-runtime.test.ts | 50 ++++ tests/fixture-discovery-classic-skills.ts | 227 +++++++++++++++ tests/fixture-discovery-orgiz-advanced.ts | 85 ++++++ tests/fixture-skills-tech-battle.ts | 4 +- tools/faction-games.ts | 29 +- tools/prototype-room.ts | 5 + tools/start-prototype.ts | 6 +- 21 files changed, 1107 insertions(+), 83 deletions(-) create mode 100644 tests/discovery-classic-skills-runtime.test.ts create mode 100644 tests/discovery-orgiz-advanced-runtime.test.ts create mode 100644 tests/fixture-discovery-classic-skills.ts create mode 100644 tests/fixture-discovery-orgiz-advanced.ts diff --git a/components/discoveries.tsx b/components/discoveries.tsx index 21199783..0b933ca0 100644 --- a/components/discoveries.tsx +++ b/components/discoveries.tsx @@ -22,7 +22,7 @@ const tokenRules: Record = { ornithopter: 'Take this token. On a later turn, you may spend it to move up to three territories instead of your usual allowance for one movement action. Remove the token after that action.', }; -function DiscoveryRules({ face }: { face: DiscoveryTokenFace }) { +function DiscoveryRules({ face, advanced }: { face: DiscoveryTokenFace; advanced: boolean }) { const definition = DISCOVERY_TOKEN_BY_ID[face]; return (
@@ -30,7 +30,9 @@ function DiscoveryRules({ face }: { face: DiscoveryTokenFace }) { Read {definition.name} rules
-

{tokenRules[face]}

+

{face === 'orgiz-processing-station' && advanced + ? 'During Spice Collection, an occupant takes one of the collected spice each time collection occurs in a territory containing spice.' + : tokenRules[face]}

{definition.kind === 'location' && ( <>

This location is a separate territory inside the surrounding territory. Revealing it leaves it empty. Normal ground movement enters the surrounding territory before entering the location; shipment uses stronghold prices.

@@ -79,7 +81,7 @@ export function DiscoveryPanel({ game, act, busy }: Props) {
{token.territory &&

In {territory(token.territory).name} · sector {token.sector}

} - {token.face && } + {token.face && } {(inspect || reveal) && (
{inspect &&