Compose native Ecaz Betrayal and Moritani Atomics
Retain original selected modules, typed native returns, advisors and hidden No-Field recall. Preserve a full unspent Guild/Sapho opening, paid ordered arrivals, capped provisional No-Field destruction and native World Sneak withdrawal. Bind desert Aftermath to its original Moritani Cunning placement. Validation: frozen 16-file115/115, types/lint/build, eight finite original-action and GameTable SSR programmes, four minimal legal policies. Document provisional overlaps and corrected genuine recipes. No stored-game change or deployment; full combinations, comprehensive assurance and deployed acceptance remain required.
This commit is contained in:
1 parent
8793e23d6b
commit
bb9d292c4c
23 files changed
+1824
-88
No files matched your search
@@ -601,7 +601,9 @@ export function MoritaniEntry({
|
||||
does too, if you have one. Each hand over its new limit
|
||||
discards one random card per excess card. Under the provisional
|
||||
persistent-target interpretation, later alliance changes do not
|
||||
move this penalty to a new ally.
|
||||
move this penalty to a new ally. A caught concealed No-Field
|
||||
provisionally reveals and places only its available reserve
|
||||
forces before those forces go to the Tanks.
|
||||
</p>
|
||||
)}
|
||||
{entry.kind === 'sneakAttack' && sneak && (
|
||||
|
||||
@@ -21,7 +21,7 @@ export function NexusEcazBetrayal({ game, act, busy }: Props) {
|
||||
<section aria-label="Ecaz Nexus Betrayal" className="space-y-3 rounded-lg border border-[#a88b60]/50 p-3">
|
||||
<h3>Ecaz Nexus · Betrayal</h3>
|
||||
<p>{nexusCardReference('ecaz').betrayal}</p>
|
||||
{ally && <p className="fine">Ecaz’s ally: {ally.name}. Their entire physical group in the selected territory returns to reserves after the Karama response.</p>}
|
||||
{ally && <p className="fine">Ecaz’s ally: {ally.name}. Their entire group in the selected territory returns to reserves if the Karama response allows Betrayal.</p>}
|
||||
{offer.territories.length > 1 && <label className="block space-y-1">
|
||||
<span>Shared territory</span>
|
||||
<select className="min-h-11 w-full" value={choice?.territory ?? ''} disabled={busy || !!offer.blocked}
|
||||
@@ -29,7 +29,8 @@ export function NexusEcazBetrayal({ game, act, busy }: Props) {
|
||||
{offer.territories.map(candidate => <option key={candidate.territory} value={candidate.territory}>{boardTerritory(candidate.territory).name}</option>)}
|
||||
</select>
|
||||
</label>}
|
||||
{choice && <p>Selected: {boardTerritory(choice.territory).name} · {choice.total.normal} normal · {choice.total.elite} elite forces</p>}
|
||||
{choice && <p>Selected: {boardTerritory(choice.territory).name} · {choice.total.normal} visible normal · {choice.total.elite} visible elite forces{choice.concealed ? ' · one concealed No-Field' : ''}</p>}
|
||||
{choice?.concealed && <p className="fine">The No-Field returns face-down without revealing its value. Cancellation leaves the marker and all forces in place.</p>}
|
||||
{offer.blocked && <p className="notice">{offer.blocked}</p>}
|
||||
<Button className="game-action min-h-11 whitespace-normal" disabled={busy || !action}
|
||||
onClick={() => { if (!busy && action) act(action); }}>
|
||||
|
||||
Reference in new issue
Block a user