Resume worm rides after advanced Sneak arrivals
Verify and publish checkpoint container / container (push) Successful in 10m40s

This commit is contained in:
Quintine committed 2026-10-29 19:53:42 +11:00
1 parent b79e448deb
commit 57321c2c8d
8 files changed
+363 -36

No files matched your search

+25 -6
View File
@@ -69,20 +69,39 @@ function ready(state: Game) {
}
const queuedRide = { kind: 'wormRide', player: 'in', territory: 'hagga_basin' } as const;
void test('Advanced worm Sneak shows the temporary positive-entry guard and preserves the ride on zero', () => {
void test('Advanced worm Sneak preserves the original and child entries before the ride', () => {
const { g } = table('sneakAttack');
let state = wormRide(g);
assert.match(viewGame(state, 'm').terrorEntry?.sneakAttack?.blocked ?? '', /worm ride/);
assert.equal(viewGame(state, 'm').terrorEntry?.sneakAttack?.blocked, null);
state = action(state, 'm', {type:'decision', reveal:true});
const before = structuredClone(state);
assert.throws(() => action(state, 'm', {type:'decision', amount:1}), /worm ride/);
assert.deepEqual(state, before);
state = action(state, 'm', {type:'decision', amount:0});
state = action(state, 'm', {type:'decision', amount:1});
assert.equal(state.pendingArrivalOverlap?.stage, 'second');
state = action(state, 'ec', {type:'decision', event:state.pendingAmbassador!.event, decline:true});
assert.equal(state.pendingAmbassador?.entrant, 'm');
state = action(state, 'ec', {type:'decision', event:state.pendingAmbassador!.event, decline:true});
assert.deepEqual(state.decision, queuedRide);
});
void test('a summoned worm during a held Sneak arrival keeps its Nexus before the next ride', () => {
const { g } = table('sneakAttack');
const karama = g.deck.find(card => card.effect === 'karama')!;
g.deck = g.deck.filter(card => card.id !== karama.id);
seat(g, 'in').hand = [karama];
let state = wormRide(g);
state = action(state, 'm', {type:'decision', reveal:true});
state = action(state, 'm', {type:'decision', amount:1});
assert.equal(state.pendingAmbassador?.entrant, 'in');
state = action(state, 'in', {type:'card', mode:'special', card:karama.id, territory:'the_great_flat'});
assert.equal(state.summonedNexusBeforeRides, true);
state = action(state, 'ec', {type:'decision', event:state.pendingAmbassador!.event, decline:true});
assert.equal(state.pendingAmbassador?.entrant, 'm');
state = action(state, 'ec', {type:'decision', event:state.pendingAmbassador!.event, decline:true});
assert.equal(state.pendingSneakWorm ?? null, null);
assert.equal(state.nexus, true);
assert.deepEqual(state.wormRides, ['hagga_basin']);
assert.equal(state.decision ?? null, null);
});
void test('Terror first keeps Robbery overflow custody and the ordered arrival intact', () => {
const { g, terror } = table('robbery');
seat(g, 'm').hand = g.deck.splice(0, 4);