Compose independent cards with Discovery and optional Nexus
Connect original selected-deck Discovery setup, optional Nexus/World/Skills/phase modules and physical card consumers through shared public capabilities. Retain Cunning revealed-location arrival, Sandtrout suppression, paid nested R/Harass and actual later Recruits revival. Preserve native trained-capture and unrelated-preview boundaries. Validation: frozen 15-file118/118, types/lint/build and six finite original-action/rendered-control programmes; four minimal legal policies. External smoke corrections changed no application source. Existing persistent notices also rechecked23/23. Full combinations, assurance and deployed acceptance remain open; no saved-game, restart or deployment operation.
This commit is contained in:
1 parent
b4157aaa9b
commit
677ad7aa3c
21 files changed
+1000
-37
No files matched your search
@@ -40,6 +40,16 @@ function fixture(advanced = false) {
|
||||
g.dukeVidal!.leader.deaths = 1;
|
||||
return g;
|
||||
}
|
||||
void test('independent Discovery without Nexus admits the untrained Advanced Ecaz/Harkonnen revival quote', () => {
|
||||
const g = fixture(true);
|
||||
g.players[1] = newPlayer('h', 'Harkonnen', 'harkonnen');
|
||||
g.ecazTreachery = true;
|
||||
g.discoveryEnabled = true;
|
||||
assert.equal(g.nexusCards, undefined);
|
||||
assert.equal(quoteEcazDukeRevival(g, 'ec', false).cost, 5);
|
||||
const excluded = { ...g, leaderSkills: {} };
|
||||
assert.throws(() => quoteEcazDukeRevival(excluded as Game, 'ec', false), EcazDukeRevivalError);
|
||||
});
|
||||
void test('canonical dead shared Duke resolves without manufacturing or reviving it and always has printed normal price five', () => {
|
||||
for (const advanced of [false, true]) {
|
||||
const g = fixture(advanced);
|
||||
|
||||
Reference in new issue
Block a user