Admit Mirror and Stone in Basic native E3 battles
Reuse original copied-weapon and typed coalition accounting for bare Basic Ecaz/Moritani and selected Ix. Preserve optional-module guards and physical card identity, actual force-owner commitments and native continuations.
This commit is contained in:
1 parent
49992d322f
commit
19e554666e
18 files changed
+566
-23
No files matched your search
@@ -3,6 +3,7 @@ import {applyAction, viewGame, type Action, type Game} from '../game/engine';
|
||||
import {harassWithdrawGame} from './fixture-harass-withdraw';
|
||||
import {stoneHarassCustody, takeStoneHarassCard, STONE_CARD, MIRROR_CARD} from './fixture-stone-harass';
|
||||
import {finishOccupyCardsAftermath} from './fixture-ecaz-occupy-cards';
|
||||
import {finishBattleOutcomeWindow} from './fixture-battle-outcome-window';
|
||||
|
||||
export const IX_TOOTH = 'ix-poison-tooth';
|
||||
export type IxRevealedCase = {
|
||||
@@ -53,6 +54,7 @@ export function finishIxWeaponBattle(state: Game): Game {
|
||||
assert.equal(game.decision, null, 'All native reveal choices must precede traitor calls.');
|
||||
for (const id of viewGame(game, 'a').battle!.traitorVoters)
|
||||
game = applyAction(game, id, {type: 'traitorCall', call: false});
|
||||
game = finishBattleOutcomeWindow(game);
|
||||
game = finishOccupyCardsAftermath(game, {stopAtFaceDance: true});
|
||||
if (game.decision?.kind === 'faceDance') {
|
||||
game = applyAction(game, game.decision.player, {type: 'decision', reveal: false});
|
||||
|
||||
Reference in new issue
Block a user