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

+6 -7
View File
@@ -43,25 +43,24 @@ void test('prospective guide does not award an early victory and a normal winner
assert.deepEqual(finishFremenEcazTurn(g).winner, ['gu']);
});
void test('Advanced reciprocal Fremen/Ecaz cooccupation qualifies in both sietches while Basic stays Tabr-only', () => {
void test('reciprocal Fremen/Ecaz cooccupation qualifies in both sietches in Basic and Advanced', () => {
for (const advanced of [false, true])
for (const territory of ['sietch_tabr', 'habbanya_ridge_sietch']) {
const g = fremenEcazFinalTurn(advanced);
const key = territory === 'sietch_tabr' ? 'sietch_tabr:14' : 'habbanya_ridge_sietch:17';
for (const p of g.players.slice(0, 2)) p.forces = { [key]: 3 };
const before = structuredClone(g);
const qualifies = advanced || territory === 'sietch_tabr';
const guide = viewGame(g, 'ec').fremenVictory!;
assert.equal(guide.qualifies, qualifies);
assert.equal(guide.qualifies, true);
const sietch = guide.sietches.find((s) => s.territory === territory)!;
assert.equal(sietch.ecazCooccupation, true);
assert.deepEqual(sietch.blockers, qualifies ? [] : ['ec']);
assert.deepEqual(sietch.blockers, []);
const done = finishFremenEcazTurn(g);
assert.deepEqual(done.winner, qualifies ? ['fr', 'ec'] : ['gu']);
assert.deepEqual(done.winner, ['fr', 'ec']);
assert.deepEqual(g, before);
assert.deepEqual(fremenEcazCustody(done), fremenEcazCustody(g));
if (qualifies) assert.match(done.log.at(-1)!.text, /Fremen special victory/);
else assert.doesNotMatch(done.log.at(-1)!.text, /Fremen special victory/);
assert.match(done.log.at(-1)!.text, /Fremen special victory/);
assert.match(done.log.at(-1)!.text, territory === 'sietch_tabr' ? /Sietch Tabr/ : /Habbanya/);
}
});