Prototype Bene Gesserit Nexus Voice betrayal response

This commit is contained in:
Quintine committed 2026-09-27 19:57:26 +10:00
1 parent 22a81c6f7a
commit 8956cf0be7
10 files changed
+384 -11

No files matched your search

+14 -2
View File
@@ -2163,6 +2163,14 @@ export function GameTable({
A private Emperor Nexus Betrayal may suppress it without moving starred forces.
</p>
)}
{g.response.kind === 'voice' &&
g.nexusCards &&
g.players.some((player) => player.id === g.response?.owner && player.faction === 'beneGesserit') && (
<p className="notice">
Every seat may respond to this Voice before plans are sealed.
A private Bene Gesserit Nexus Betrayal may prevent it.
</p>
)}
{g.response.kind === 'revivalIncome' &&
g.response.amount !== undefined && (
<p className="notice">
@@ -2214,8 +2222,12 @@ export function GameTable({
</Button>
))}
{(g.responseControls?.cancelCards.length ||
(g.response.kind === 'eliteStrength' && g.nexusCards &&
g.players.some((player) => player.id === g.response?.owner && player.faction === 'emperor'))) &&
(g.nexusCards && (
(g.response.kind === 'eliteStrength' &&
g.players.some((player) => player.id === g.response?.owner && player.faction === 'emperor')) ||
(g.response.kind === 'voice' &&
g.players.some((player) => player.id === g.response?.owner && player.faction === 'beneGesserit'))
))) &&
!g.responseControls?.hasPassed ? (
actionButton('Allow this power', { type: 'passResponse' })
) : (
+13
View File
@@ -158,6 +158,19 @@ export function NexusCards({ game, act, busy }: { game: GameView; act: (action:
</Button>
</div>
)}
{game.nexusBgBetrayal && offer.card === 'beneGesserit' && (
<div aria-label="Bene Gesserit Nexus Betrayal" className="space-y-2">
<h4>Bene Gesserit Betrayal · Voice</h4>
<p className="fine">
Spend your Nexus card to prevent this declared Voice before battle
plans are sealed. Prescience and other battle powers still proceed.
</p>
<Button className="game-action min-h-11 whitespace-normal" disabled={busy}
onClick={() => act({ type: 'nexusBgBetrayal', event: game.nexusBgBetrayal!.event })}>
Prevent Voice with Betrayal
</Button>
</div>
)}
<NexusEmperorSecretAlly game={game} act={act} busy={busy} />
<NexusFremenRevival game={game} act={act} busy={busy} />
<div aria-label="Your private Nexus card" className="max-w-xl">