Compose classic Nexus with original Discovery modules
This commit is contained in:
1 parent
4672b97417
commit
a2a92bb408
18 files changed
+1458
-28
No files matched your search
@@ -1,6 +1,6 @@
|
||||
import test from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import { createGame, initializeDiscoveryGameForAudit, initializeLeaderSkillsGameForAudit, joinGame, newPlayer, RuleError, type Game } from '../game/engine';
|
||||
import { createGame, initializeDiscoveryGameForAudit, initializeLeaderSkillsGameForAudit, initializeNexusGameForAudit, joinGame, newPlayer, RuleError, type Game } from '../game/engine';
|
||||
import type { FactionId } from '../game/catalog';
|
||||
import { createTechTokens } from '../game/tech-tokens';
|
||||
import { createStrongholdCards } from '../game/stronghold-cards';
|
||||
@@ -70,3 +70,22 @@ void test('Discovery Skills cannot replace already initialized Discovery compone
|
||||
const started = initializeDiscoveryGameForAudit(lobby(['guild', 'emperor', 'harkonnen'], []));
|
||||
assert.throws(() => initializeLeaderSkillsGameForAudit(started), RuleError);
|
||||
});
|
||||
|
||||
void test('Discovery Nexus rejects native families, used components and incompatible prerequisites before redealing', () => {
|
||||
const native = lobby(['ixians', 'guild', 'fremen'], ['ix']);
|
||||
native.nexusCards = { cards: null, phase: null };
|
||||
assert.throws(() => initializeNexusGameForAudit(native), RuleError);
|
||||
const two = lobby(['guild', 'emperor'], []);
|
||||
two.nexusCards = { cards: null, phase: null }; two.techTokens = createTechTokens();
|
||||
assert.throws(() => initializeNexusGameForAudit(two), RuleError);
|
||||
const basic = lobby(['guild', 'emperor', 'fremen'], [], false);
|
||||
basic.nexusCards = { cards: null, phase: null }; basic.strongholdCards = createStrongholdCards();
|
||||
assert.throws(() => initializeNexusGameForAudit(basic), RuleError);
|
||||
const used = lobby(['guild', 'emperor', 'fremen'], []);
|
||||
used.nexusCards = { cards: null, phase: null }; used.techTokens = createTechTokens();
|
||||
used.techTokens.production.owner = used.host;
|
||||
assert.throws(() => initializeNexusGameForAudit(used), RuleError);
|
||||
const started = initializeDiscoveryGameForAudit(lobby(['guild', 'emperor', 'fremen'], []));
|
||||
started.nexusCards = { cards: null, phase: null };
|
||||
assert.throws(() => initializeNexusGameForAudit(started), RuleError);
|
||||
});
|
||||
Reference in new issue
Block a user