Resume native Intrusion after final-flight Semuta response

This commit is contained in:
Quintine committed 2026-10-11 17:25:26 +11:00
1 parent 9efa17b2b7
commit 18693b3207
8 files changed
+137 -15

No files matched your search

+1 -1
View File
@@ -40,7 +40,7 @@ export function richeseCardActionBlock(card: VisibleCard): string | null {
if (definition?.card.effect === 'distrans')
return 'Choose a recipient and card in the Distrans transfer panel.';
if (definition?.card.effect === 'semutaDrug')
return 'Use the neutral fresh-discard response in the Semuta development preview. Clean ordinary-card, paid Box, Ornithopter, Distrans, Truthtrance, four Sapho scopes, unready pre-leader Residual Poison, printed Karama canceling CHOAM Charity, Inflation or Bene Gesserit Charity, battle-card and Ix-deck Thumper/Amal discards are connected; pending rewards, other producers and full-hand sequencing remain unfinished.';
return 'Use the neutral fresh-discard response in the Semuta development preview. Clean ordinary-card, paid Box, retired Ornithopter (before native Intrusion), Distrans, Truthtrance, four Sapho scopes, unready pre-leader Residual Poison, printed Karama canceling CHOAM Charity, Inflation or Bene Gesserit Charity, battle-card and Ix-deck Thumper/Amal discards are connected, as are private normal-auction and Black Market Ixian allied replacements. The approved full-hand exchange spends Semuta without increasing the completed hand. Pending rewards, other producers and nested responses remain unfinished.';
return definition && definition.card.effect !== 'karama'
? 'This Richese card’s effect is not implemented yet. You can inspect its rules.'
: null;
+2 -3
View File
@@ -6640,7 +6640,7 @@ function treacheryDiscardIntegrity(g: Game) {
}
/** Bounded public single-card reaction after clean completed effects. Battle
* winner cleanup may resume only without other pending battle rewards; final
* flight arrival excludes factions that open intrusion or entry responses. */
* flight arrival may resume native Intrusion, but other entry responses remain gated. */
function semutaOfferSupported(
g: Game,
continuation: NonNullable<Game['pendingTreacheryDiscard']>['continuation'],
@@ -6674,8 +6674,7 @@ function semutaOfferSupported(
!(continuation.kind === 'ornithopterDiscard' &&
(continuation.source === 'end' ||
(continuation.source === 'move' &&
!g.players.some(p => p.faction === 'beneGesserit' ||
p.faction === 'ecaz' || p.faction === 'moritani') &&
!g.players.some(p => p.faction === 'ecaz' || p.faction === 'moritani') &&
!g.pendingArrivalOverlap))) &&
!(continuation.kind === 'truthtranceDiscard' &&
continuation.consumed.source === undefined &&