Allow allied Ecaz in both Fremen sietches
Verify and publish checkpoint container / container (push) Successful in 11m6s

This commit is contained in:
Quintine committed 2026-10-29 03:33:03 +11:00
1 parent bc0db31134
commit 7552bb5394
9 files changed
+90 -42

No files matched your search

+31 -10
View File
@@ -80,23 +80,44 @@ void test('solitary, nonallied and third-party Ecaz presence do not receive the
assert.equal(fremenSpecialVictory(third)!.qualifies, false);
});
void test('Basic Ecaz co-occupation at Habbanya remains a blocker', () => {
void test('Basic allied Ecaz co-occupation at Habbanya permits Fremen victory', () => {
const g = fixture();
place(g, 'f', 'habbanya_ridge_sietch:17');
place(g, 'e', 'habbanya_ridge_sietch:17');
const result = fremenSpecialVictory(g)!;
assert.equal(result.sietches[1].ecazCooccupation, true);
assert.deepEqual(result.sietches[1].blockers, ['e']);
assert.equal(result.qualifies, false);
assert.deepEqual(result.sietches[1].blockers, []);
assert.equal(result.qualifies, true);
});
void test('supplied Advanced Ecaz cooccupation permits Habbanya while preserving Basic and solitary Ecaz blockers', () => {
const g = fixture(true);
place(g, 'f', 'habbanya_ridge_sietch:17');
place(g, 'e', 'habbanya_ridge_sietch:17');
assert.equal(fremenSpecialVictory(g)!.qualifies, true);
seat(g, 'f').forces = {};
assert.deepEqual(fremenSpecialVictory(g)!.sietches[1].blockers, ['e']);
void test('both rulesets keep solitary Ecaz as a Habbanya blocker', () => {
for (const advanced of [false, true]) {
const g = fixture(advanced);
place(g, 'f', 'habbanya_ridge_sietch:17');
place(g, 'e', 'habbanya_ridge_sietch:17');
assert.equal(fremenSpecialVictory(g)!.qualifies, true);
seat(g, 'f').forces = {};
assert.deepEqual(fremenSpecialVictory(g)!.sietches[1].blockers, ['e']);
}
});
void test('nonallied Ecaz and third-party fighters still block Habbanya in both rulesets', () => {
for (const advanced of [false, true]) {
const nonallied = fixture(advanced);
seat(nonallied, 'f').ally = null;
seat(nonallied, 'e').ally = null;
place(nonallied, 'f', 'habbanya_ridge_sietch:17');
place(nonallied, 'e', 'habbanya_ridge_sietch:17');
assert.deepEqual(fremenSpecialVictory(nonallied)!.sietches[1].blockers, ['e']);
assert.equal(fremenSpecialVictory(nonallied)!.qualifies, false);
const third = fixture(advanced);
place(third, 'f', 'habbanya_ridge_sietch:17');
place(third, 'e', 'habbanya_ridge_sietch:17');
place(third, 'r', 'habbanya_ridge_sietch:17');
assert.deepEqual(fremenSpecialVictory(third)!.sietches[1].blockers, ['r']);
assert.equal(fremenSpecialVictory(third)!.qualifies, false);
}
});
void test('accompanied BG advisors do not block, while mandatory lone-advisor release restores fighter presence', () => {