Prioritize Basic faction prototypes and connect three missing rule paths
This commit is contained in:
1 parent
f36632accc
commit
c28e24b5fa
17 files changed
+152
-110
No files matched your search
@@ -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 of those eight ordinary effects. The Tleilaxu effect returns physical forces only; its printed leader alternative and ordinary revival accounting remain unfinished. Duke loan choices, other effects and some competing arrival reactions remain unfinished; 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. Ordinary allowance and income accounting, repeat-death and shared-leader cases remain for refinement. Duke loan choices and some competing arrival reactions remain unfinished; 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'}`;
|
||||
|
||||
@@ -257,15 +257,20 @@ export function EcazEntry({
|
||||
) : entry.stage === 'revival' ? (
|
||||
<>
|
||||
<p className="m-0 text-sm leading-6">
|
||||
Return up to {entry.revival?.maximum ?? 0} physical{' '}
|
||||
{(entry.revival?.maximum ?? 0) === 1 ? 'force' : 'forces'} from the
|
||||
Tanks to your reserves for free. Ordinary revival allowances,
|
||||
prices and income are unchanged. The printed leader alternative
|
||||
stays unavailable pending its recorded interpretation.
|
||||
Revive one eligible own leader, or return up to {entry.revival?.maximum ?? 0}
|
||||
{' '}physical forces from the Tanks for free. This independent grant
|
||||
leaves ordinary allowances and income unchanged provisionally.
|
||||
Repeat-death and shared-leader interactions remain unfinished.
|
||||
</p>
|
||||
{entry.revival?.blocked && (
|
||||
<p className="m-0 text-sm leading-6">{entry.revival.blocked}</p>
|
||||
)}
|
||||
{!entry.revival?.blocked && entry.revival?.leaders.map(leader => (
|
||||
<Button key={leader.id} variant="outline" className={buttonClass}
|
||||
disabled={busy} onClick={() => send({ leader: leader.id })}>
|
||||
Revive {leader.name} for free
|
||||
</Button>
|
||||
))}
|
||||
{!entry.revival?.blocked &&
|
||||
(entry.revival?.maximum ?? 0) > 0 && (
|
||||
<fieldset
|
||||
|
||||
@@ -20,6 +20,11 @@ export function EcazOccupyLeadChoice({ game, act, busy }: {
|
||||
Treachery cards and spice. With Occupy active, {ally} supplies the variable
|
||||
dialed army regardless of who leads; Ecaz’s contribution is mandatory and free.
|
||||
</p>
|
||||
{!game.advanced && <p className="fine">
|
||||
Basic prototype: Ecaz’s half-force contribution and winning losses round up;
|
||||
survivors round down. The main printed rule is used provisionally because
|
||||
its odd-force FAQ example conflicts.
|
||||
</p>}
|
||||
<p className="fine">
|
||||
Karama may cancel Occupy after this choice, before battle powers and plans.
|
||||
The chosen lead then dials only their own army; the other ally contributes zero.
|
||||
@@ -54,6 +59,9 @@ export function EcazOccupyBattleSummary({ game }: { game: GameView }) {
|
||||
The total dial must include <strong>{profile.fixedEcazDial} fixed Ecaz strength</strong> at full strength,
|
||||
with no spice cost, plus the chosen variable army strength.
|
||||
</p>}
|
||||
{!game.advanced && !profile.canceled && profile.ecazForces.normal % 2 !== 0 &&
|
||||
<p className="fine">Provisional Basic rounding: {profile.fixedEcazDial} Ecaz
|
||||
counters contribute and are lost on an ordinary win; the remainder survive.</p>}
|
||||
{game.response?.kind === 'ecazOccupy' && <p className="fine">
|
||||
Allow this power to keep the combined army, or use an eligible Karama below.
|
||||
Cancellation keeps {lead} as lead and replaces the variable army with {lead}’s own forces before planning.
|
||||
|
||||
Reference in new issue
Block a user