Offer Semuta on clean early-ended Ornithopter discard

This commit is contained in:
Quintine committed 2026-09-30 07:38:45 +10:00
1 parent 0e9945e333
commit 2ec0422b79
8 files changed
+170 -38

No files matched your search

+5 -4
View File
@@ -5642,16 +5642,17 @@ function treacheryDiscardIntegrity(g: Game) {
'The committed Kaitain discard no longer matches its payment and closing opportunity.');
} else throw new RuleError('Unknown saved discard continuation.');
}
/** Bounded public single-card reaction after a completed ordinary effect or
* paid Box search, without any competing suspended transaction. Other typed
* frames retain automatic continuation until their composition is integrated. */
/** Bounded public single-card reaction after a completed ordinary effect, paid
* Box search, or early-ended Ornithopter flight. A completed flight's arrival
* may open further entry windows, so that continuation remains automatic. */
function semutaOfferSupported(
g: Game,
continuation: NonNullable<Game['pendingTreacheryDiscard']>['continuation'],
entries: FreshDiscardBatch['entries'],
) {
if (continuation.kind !== 'ordinaryCardDiscard' &&
continuation.kind !== 'nullentropyDiscard') return false;
continuation.kind !== 'nullentropyDiscard' &&
!(continuation.kind === 'ornithopterDiscard' && continuation.source === 'end')) return false;
return g.semutaPreview === true && g.status === 'playing' &&
g.players.some(p => p.faction === 'richese') &&
entries.length === 1 && entries[0].publicFace &&