Support Emperor special Karama truth commitments
Verify and publish checkpoint container / container (push) Canceled after 0s

This commit is contained in:
Quintine committed 2026-10-29 18:12:20 +11:00
1 parent b448144c52
commit add8e1d51a
14 files changed
+345 -20

No files matched your search

+7 -1
View File
@@ -5,7 +5,7 @@ import { parseTravelActionClaim, type TravelClaim } from './travel-expression-pr
import { parseTurnActionLeaf, TURN_ACTION_MAX_DEPTH, TURN_ACTION_MAX_LEAVES,
turnActionPromiseModeSupported, type TurnActionClaim } from './turn-action-promises';
import { battlePowerOf, nativeBattlePowerOpportunity } from './battle-power-question';
import { parseKaramaShipmentSource, parseKaramaBattleCancelSource, parseKaramaHarkonnenSpecialSource, karamaBattleCancelOpportunity, windowCardOpportunity } from './window-card-play';
import { parseKaramaShipmentSource, parseKaramaBattleCancelSource, parseKaramaHarkonnenSpecialSource, parseKaramaEmperorSpecialSource, karamaBattleCancelOpportunity, windowCardOpportunity } from './window-card-play';
import { nativeStormDialOpportunity } from './storm-dial-question';
import { parseTraitorActionClaim, type MixedTraitorClaim } from './mixed-traitor-question';
import { parseBattleActionClaim, MIXED_BATTLE_MAX_NODES, MIXED_BATTLE_MAX_TERMS, MIXED_BATTLE_MAX_DEPTH,
@@ -507,6 +507,10 @@ function parseQuestion(g: Game, asker: string, value: unknown): TruthQuestion {
check(parseKaramaHarkonnenSpecialSource(action.source)?.owner === respondent.id &&
!g.kullPreview && !g.semutaPreview && !g.semutaRecruitsPreview && !g.semutaAdvancedOrdinaryPreview,
'Choose Harkonnen’s own special Karama in a supported clean Bidding profile.');
if (action.effect === 'karamaEmperorSpecial')
check(parseKaramaEmperorSpecialSource(action.source)?.owner === respondent.id &&
!g.kullPreview && !g.semutaPreview && !g.semutaRecruitsPreview && !g.semutaAdvancedOrdinaryPreview,
'Choose Emperor’s own special Karama in a supported clean Revival profile.');
}
if (action.kind === 'battlePlan' || action.kind === 'traitorCall' || action.kind === 'battlePower') {
const battle = g.battle;
@@ -909,6 +913,8 @@ export function truthQuestionText(
if (action.kind === 'windowCardPlay') {
if (action.effect === 'karamaHarkonnenSpecial')
return 'you use Harkonnen’s special Karama after this answer during Bidding';
if (action.effect === 'karamaEmperorSpecial')
return 'you use Emperor’s special Karama after this answer during Revival';
if (action.effect === 'karamaBattleCancel') {
const response = parseKaramaBattleCancelSource(action.source);
return `you spend a printed Karama after this answer to cancel ${response?.kind === 'voice' ? 'Voice' : 'Prescience'} in this original battle response`;