Connect Fremen Nexus protection before original worm devouring

This commit is contained in:
Quintine committed 2026-10-15 01:58:23 +11:00
1 parent 8ab827b902
commit 82f1aae51b
17 files changed
+1425 -12

No files matched your search

+24 -1
View File
@@ -2784,7 +2784,7 @@ export function GameTable({
: g
.decision
.kind ===
'wormProtection'
'wormProtection' || g.decision.kind === 'nexusFremenProtection'
? 'Protection of Shai-Hulud'
: g
.decision
@@ -3590,6 +3590,29 @@ export function GameTable({
<DiscoveryDiscardDecision game={g} act={act} busy={transportBusy || (!!g.roomControl?.paused || !!g.roomControl?.closed) || !!me.autopilot} />
) : g.decision.kind === 'greatMakerVote' || g.decision.kind === 'greatMakerRide' ? (
<GreatMakerDecision game={g} act={act} busy={transportBusy || (!!g.roomControl?.paused || !!g.roomControl?.closed) || !!me.autopilot} />
) : g.decision.kind === 'nexusFremenProtection' ? (
<section aria-label="Fremen Nexus worm protection" className="space-y-3">
<p className="muted">
Shai-Hulud has appeared in {combatName(g.nexusFremenProtection?.territory ?? '')}.
Threatened unallied seats with a held Nexus acknowledge in storm order
before any forces are devoured, regardless of the secret card.
</p>
{g.nexusFremenProtection?.blocked ? (
<p className="notice">{g.nexusFremenProtection.blocked}</p>
) : <>
{g.nexusFremenProtection?.canUse && <>
<p className="notice">Provisional policy: protect only your forces from this worm.
Spice and other factions remain exposed. This independent protection
has no additional Karama response and grants no worm ride.</p>
{actionButton('Spend Nexus · Protect my forces', {
type: 'nexusFremenProtection', event: g.nexusFremenProtection.event, use: true,
})}
</>}
{g.nexusFremenProtection && actionButton('Continue without worm protection', {
type: 'nexusFremenProtection', event: g.nexusFremenProtection.event, use: false,
})}
</>}
</section>
) : g.decision.kind === 'wormProtection' ? (
<>
<p className="muted">
+1 -1
View File
@@ -121,7 +121,7 @@ export function NexusCards({ game, act, busy }: { game: GameView; act: (action:
<div>
<h3>Nexus cards</h3>
<p className="fine">{offer.deckCount} in deck · {offer.discardCount} discarded · {Object.values(offer.held).filter((held) => held === true).length} held</p>
<p>Playable effects include Atreides inspections, Harkonnen exchanges, and Tleilaxu, Ixian, Bene Gesserit, Emperor, CHOAM, Moritani and bounded Ecaz Duke Cunning, plus Emperor Secret Ally’s bank-auction purchase and three extra free revivals, Fremen Secret Ally’s ordinary three free revivals, Richese Secret Ally reserve shipping and Guild Cunning’s second shipment or absent-Guild Secret Ally shipping. Use the controls shown at each effect’s timing. {game.nexusKullPreview ? 'CHOAM Nexus Kull is reactive: choose its fuel at the Karama opportunity.' : 'CHOAM Nexus Kull is unavailable outside its explicit preview.'} Moritani Cunning relocation and Grumman combinations, and other unfinished effects remain unavailable.</p>
<p>Connected controls include Atreides inspections, Harkonnen exchanges, native Cunning, bounded Ecaz Duke acquisition, Emperor bank purchases and extra revivals, Tleilaxu free-leader/paid-force revival, Fremen ordinary free revival or worm protection, Bene Gesserit borrowed Voice, and Richese/Guild shipment effects. Use only the controls offered at each effect’s timing; provisional interpretations are labelled there. {game.nexusKullPreview ? 'CHOAM Nexus Kull is reactive: choose its fuel at the Karama opportunity.' : 'CHOAM Nexus Kull is unavailable outside its explicit preview.'} Moritani Cunning enhances supply placement, not relocation. Unsupported combinations and complete public modes remain gated.</p>
</div>
{game.nexusAtreides && offer.card === 'atreides' && (
<div aria-label="Atreides Nexus effect" className="space-y-2">