Compose original mixed and paired Nexus optional modules

This commit is contained in:
Quintine committed 2026-10-07 14:12:47 +11:00
1 parent 0e1797d4e0
commit 05ab2c92b0
30 files changed
+2268 -203

No files matched your search

+17
View File
@@ -20,6 +20,7 @@ import {
stageAssassinationBattle,
} from './moritani-assassinate-fixture';
import { createStrongholdFactionsFixture } from './fixture-stronghold-factions';
import { createPairedE3NexusSetup } from './fixture-paired-e3-nexus-modules';
void test('Moritani Skills sample custody checks the physical skill and Traitor inventories after genuine setup', () => {
const game = completedMoritaniSkillsGame();
@@ -37,6 +38,22 @@ void test('Moritani Skills sample custody checks the physical skill and Traitor
assert.throws(() => verifySampleCustody(traitors, inventory), /traitor custody/);
});
for (const skills of [false, true]) void test(`paired native Ecaz loyalty remains one physical Traitor with ${skills ? 'all14 Skills' : 'no Skills'}`, () => {
const fixture = createPairedE3NexusSetup({ skills, homeworlds: false, discovery: false, tech: false, strongholds: false });
const inventory = sampleInventory(fixture.offered);
verifySampleCustody(fixture.afterSetup, inventory);
const loyaltyCard = fixture.afterSetup.ecazLoyalty?.card;
assert.ok(loyaltyCard);
const missing = structuredClone(fixture.afterSetup);
delete missing.ecazLoyalty;
assert.throws(() => verifySampleCustody(missing, inventory));
const duplicated = structuredClone(fixture.afterSetup);
duplicated.traitorReserve!.push(loyaltyCard);
assert.throws(() => verifySampleCustody(duplicated, inventory));
});
void test('Moritani assassination samples conserve retired Traitors after real battle and Mentat replacement', () => {
const start = assassinationGame();
const inventory = sampleInventory(start);