From 59a406830c0db3ffa321d9e1a43935fadd285a6d Mon Sep 17 00:00:00 2001 From: Quintine <15965533+Quintine@users.noreply.github.com> Date: Thu, 8 Oct 2026 10:14:08 +1100 Subject: [PATCH] Connect source-ordered Advanced Ecaz new-ally Duke grant --- components/ecaz-ambassadors.tsx | 2 +- components/ecaz-entry.tsx | 20 ++++++++++++++++---- docs/CURRENT_STATUS.md | 11 +++++++++++ docs/DUKE_VIDAL_RULES.md | 2 +- docs/ECAZ_DUKE_ACQUISITION.md | 25 ++++++++++++++++++++++++- docs/RULE_DECISIONS.md | 12 ++++++++++++ game/engine.ts | 17 ++++++++++++----- game/reference.ts | 12 ++++++------ tests/ecaz-alliance-engine.test.ts | 16 ++++++++++++---- 9 files changed, 95 insertions(+), 22 deletions(-) diff --git a/components/ecaz-ambassadors.tsx b/components/ecaz-ambassadors.tsx index ad1d23d1..e01d8e9d 100644 --- a/components/ecaz-ambassadors.tsx +++ b/components/ecaz-ambassadors.tsx @@ -23,7 +23,7 @@ import { TERRITORIES } from '@/game/board'; import { faction } from '@/game/catalog'; export const AMBASSADOR_COVERAGE = - 'Development coverage: Ambassador placement, Ecaz’s direct Duke acquisition and consensual alliance, Emperor, Atreides, Harkonnen, CHOAM, Ixian, Richese, Fremen, Guild and Tleilaxu entry effects are supported, plus Bene Gesserit copies. The Tleilaxu effect offers physical force returns or a first-death own-leader revival. Basic Ecaz can optionally lend Duke to a newly accepted ally, with provisional one-battle/turn-end tenure. Ordinary revival accounting, repeat-death/shared-leader cases, Advanced loans and competing arrival reactions remain for refinement; full Ecaz starts remain disabled.'; + 'Development coverage: Ambassador placement, Ecaz’s direct Duke acquisition and consensual alliance, Emperor, Atreides, Harkonnen, CHOAM, Ixian, Richese, Fremen, Guild and Tleilaxu entry effects are supported, plus Bene Gesserit copies. The Tleilaxu effect offers physical force returns or a first-death own-leader revival. Basic offers an optional new-ally Duke loan; Advanced automatically grants the available Duke after accepted alliance consent. One-battle loan tenure is provisional; an unused living loan is set aside at turn end. Ordinary revival accounting, repeat-death/shared-leader cases and competing arrivals remain for refinement; full Ecaz starts remain disabled.'; function tokenLocation(token: AmbassadorToken) { if (token.zone === 'placed') return `Placed in ${TERRITORIES.find((t) => t.id === token.location)?.name ?? 'a stronghold'}`; diff --git a/components/ecaz-entry.tsx b/components/ecaz-entry.tsx index 3db6c2da..931c625b 100644 --- a/components/ecaz-entry.tsx +++ b/components/ecaz-entry.tsx @@ -72,6 +72,13 @@ export function EcazEntry({ {game.players.find((p) => p.id === entry.entrant)?.name} entered this stronghold. {guide.gameplay}
+ {game.advanced && entry.effect === 'ecaz' && ( ++ Advanced source override: supplied rulebook, physical page 30, adds an + available Duke after accepted alliance consent automatically. The + publisher token guide’s optional loan wording above remains Basic guidance. +
+ )} {token &&Both factions must be unallied. The entrant chooses whether to accept. The triggered Ambassador returns to supply even if the - offer is refused. In Basic, an accepted alliance can be followed - by an optional Duke loan when the disc is available. + offer is refused.{' '} + {game.advanced + ? 'In Advanced, accepting also adds an available Duke to the entrant’s pool automatically. The first version uses one-battle tenure and sets an unused living Duke aside at turn end.' + : 'In Basic, an accepted alliance can be followed by an optional Duke loan when the disc is available.'}
> ) : ( @@ -195,8 +204,11 @@ export function EcazEntry({{game.players.find((p) => p.id === entry.owner)?.name} offers you an alliance. Accepting activates both factions’ alliance abilities - immediately. In Basic, Ecaz can then optionally lend an available - Duke Vidal. Your remaining actions resume after those choices. + immediately.{' '} + {game.advanced + ? 'An available Duke Vidal is added to your pool automatically, without a second acknowledgement. One-battle tenure is provisional; an unused living Duke is set aside at turn end.' + : 'In Basic, Ecaz can then optionally lend an available Duke Vidal.'}{' '} + Your remaining actions then resume.