Support Sapho ordering for shared arrivals
Verify and publish checkpoint container / container (push) Canceled after 0s
Verify and publish checkpoint container / container (push) Canceled after 0s
This commit is contained in:
1 parent
b18a767470
commit
e457478f7d
18 files changed
+808
-23
No files matched your search
@@ -5,7 +5,7 @@ import {
|
||||
createSemutaArrivalOverlapFixture as fixture, actSemutaArrivalOverlap as act,
|
||||
player, inventory, passCurrentSemuta as pass, claimOverlapSemuta as claim,
|
||||
openOverlapAmbassadorGrant as grant, openOverlapTerrorDiscard as terrorDiscard,
|
||||
finishOverlapTerror as finishTerror, type SemutaArrivalOverlapFixture,
|
||||
finishOverlapTerror as finishTerror, passArrivalOrder, type SemutaArrivalOverlapFixture,
|
||||
} from './fixture-semuta-arrival-overlap';
|
||||
|
||||
function reject(game: Game, actor: string, action: Action) {
|
||||
@@ -52,7 +52,7 @@ for (const first of ['ambassador', 'terror'] as const)
|
||||
assert.equal(f.game.moritaniTerror!.placementTurn, 1);
|
||||
assert.equal(f.game.ecazAmbassadors!.tokens.find(token => token.id === f.token)!.zone, 'placed');
|
||||
assert.ok(f.game.players.every(p => !Object.keys(p.forces).some(key => key.startsWith(f.territory + ':'))));
|
||||
let game = act(f.game, f.arrivalStep.actor, f.arrivalStep.action);
|
||||
let game = passArrivalOrder(act(f.game, f.arrivalStep.actor, f.arrivalStep.action));
|
||||
const overlap = game.pendingArrivalOverlap; assert.ok(overlap);
|
||||
assert.equal(overlap.first, first); assert.equal(overlap.stage, 'first');
|
||||
assert.equal(overlap.entrant, f.entrant); assert.equal(overlap.cause, arrival);
|
||||
@@ -106,7 +106,7 @@ void test('CHOAM first recovers one private card before Sabotage, pays once and
|
||||
|
||||
void test('Robbery first passes its overflow before a full-hand Ixian claim and one original replacement', () => {
|
||||
const f = fixture({ effect: 'ixians', first: 'terror', terror: 'robbery', fullHand: true });
|
||||
let game = act(f.game, f.arrivalStep.actor, f.arrivalStep.action);
|
||||
let game = passArrivalOrder(act(f.game, f.arrivalStep.actor, f.arrivalStep.action));
|
||||
const top = game.deck[0].id, size = game.deck.length;
|
||||
game = terrorDiscard(game, f);
|
||||
assert.equal(game.pendingTreacheryDiscard?.reaction?.stage, 'offer');
|
||||
@@ -134,7 +134,7 @@ void test('Robbery first passes its overflow before a full-hand Ixian claim and
|
||||
|
||||
void test('Sabotage first spends Semuta on its victim before copied CHOAM creates a distinct discard', () => {
|
||||
const f = fixture({ effect: 'choam', first: 'terror', arrival: 'movement', copied: true });
|
||||
let game = act(f.game, f.arrivalStep.actor, f.arrivalStep.action);
|
||||
let game = passArrivalOrder(act(f.game, f.arrivalStep.actor, f.arrivalStep.action));
|
||||
game = terrorDiscard(game, f);
|
||||
const terrorEvent = game.pendingTreacheryDiscard!.batch.event;
|
||||
assert.equal(game.pendingTreacheryDiscard!.batch.entries[0].card.id, f.entrantCard);
|
||||
|
||||
Reference in new issue
Block a user