Prototype Semuta after Recruits in Basic play
Verify and publish checkpoint container / container (push) Successful in 10m20s
Verify and publish checkpoint container / container (push) Successful in 10m20s
This commit is contained in:
1 parent
0e9209531a
commit
1ba942138d
9 files changed
+311
-18
No files matched your search
@@ -50,6 +50,8 @@ export type RecruitsModulesFixture = {
|
||||
playAction: Action;
|
||||
revivalAction: Action;
|
||||
secondRevivalAction: Action;
|
||||
/** Real ordered-ready and revival actions after playing Recruits. */
|
||||
revivalSteps: RecruitsModulesStep[];
|
||||
battle: {
|
||||
attacker: string; defender: string; territory: string;
|
||||
reviverPlan: RecruitsModulesStep; opponentPlan: RecruitsModulesStep;
|
||||
@@ -275,11 +277,21 @@ export function createRecruitsModulesFixture(
|
||||
const beforeRevival = structuredClone(game);
|
||||
assert.equal(beforeRevival.recruits?.player, owner, 'The physical Recruits activation must be recorded');
|
||||
const revivalAction: Action = { type: 'revive', amount, elite: 0 };
|
||||
act(owner, revivalAction);
|
||||
const afterRevival = structuredClone(game);
|
||||
const secondRevivalAction: Action = { type: 'revive', amount: 1, elite: 0 };
|
||||
act(opponent, secondRevivalAction);
|
||||
const afterSecondRevival = structuredClone(game);
|
||||
const from = steps.length;
|
||||
const remaining = game.revivalOrder?.remaining;
|
||||
const actors = remaining && remaining.indexOf(opponent) < remaining.indexOf(owner)
|
||||
? [opponent, owner] : [owner, opponent];
|
||||
let afterRevival: Game | undefined, afterSecondRevival: Game | undefined;
|
||||
for (const actor of actors) {
|
||||
if (game.revivalOrder)
|
||||
advance(state => state.phase === 4 && state.revivalOrder?.remaining[0] === actor && recruitsModulesClean(state));
|
||||
act(actor, actor === owner ? revivalAction : secondRevivalAction);
|
||||
if (actor === owner) afterRevival = structuredClone(game);
|
||||
else afterSecondRevival = structuredClone(game);
|
||||
}
|
||||
assert.ok(afterRevival && afterSecondRevival);
|
||||
const revivalSteps = structuredClone(steps.slice(from));
|
||||
assert.equal(game.techTokens?.axlotl.spice, accrual,
|
||||
'The accrued income must still be held by the token immediately before the phase ends');
|
||||
advance(state => state.phase === 5 && recruitsModulesClean(state));
|
||||
@@ -294,7 +306,7 @@ export function createRecruitsModulesFixture(
|
||||
afterSecondRevival, afterPhaseEnd, owner, opponent, location,
|
||||
base: { freeRate: baseFreeRate, limit: baseLimit },
|
||||
doubled: { freeRate: doubledFreeRate, limit: 7 },
|
||||
tanks, amount, accrual, playAction, revivalAction, secondRevivalAction,
|
||||
tanks, amount, accrual, playAction, revivalAction, secondRevivalAction, revivalSteps,
|
||||
battle: {
|
||||
attacker: choice.attacker, defender: choice.defender,
|
||||
territory: location.territory, reviverPlan, opponentPlan,
|
||||
|
||||
Reference in new issue
Block a user