Compose classic independent cards with World Nexus rules
Retain independent36, original Homeworlds and Nexus12 through classic fresh setup with optional Skills and phase modules. Resolve own-World Reinforcements fees before computing temporary Sardaukar roles, preserving original Cunning declarations, printed traits and physical counters. Record the provisional ordinary-nonrole-first policy and align human/AI quotes and captions. Validation: types/lint/build, 128 affected tests across 15 files, bounded rule-source review and finite original-action smoke for Recruits, Harass, local-fee Cunning, all four legal policies and rendered source controls. Verified runtime c219ec587a54b44079539168d93835a5af904c8afb4de58bcec0a3d60c809f0c; documentation-only proof update 8ee21598e7be0c89a08fbad50786c346ebc8ae705492d8b31ea00fae0ffefa3c. Full modes, combinations, assurance and deployed acceptance remain open. No saved-room/provider changes.
This commit is contained in:
1 parent
178251ad35
commit
97c2b67650
18 files changed
+737
-30
No files matched your search
@@ -137,7 +137,8 @@ void test('public pending and active notices avoid private hands and identify or
|
||||
const allowed = allowNexusSardaukar(g);
|
||||
const observer = viewGame(allowed, 'q');
|
||||
assert.equal(observer.battle!.opponentForces?.temporaryElite, 5);
|
||||
assert.match(html(observer), /Five ordinary Emperor counters/);
|
||||
assert.match(html(observer), /Cunning declared five ordinary Emperor counters/);
|
||||
assert.match(html(observer), /own-Homeworld reserve fee can reduce that group/);
|
||||
assert.match(html(observer), /ordinary Tanks/);
|
||||
assert.doesNotMatch(html(observer), /<button/);
|
||||
});
|
||||
|
||||
Reference in new issue
Block a user