Support earlier classic Basic movement promises

Allow current-round classic Basic questions before Movement, with owned Charity, ordinary auction payment and Revival preparation. Reopen readiness, retain combined shipment obligations, reset stale allowances and release forced storm impossibility. Current-phase guidance and minimal bots preserve the route; held Karama now prepares its actual Guild shipment rate.

Validation: affected rules/control tests, types/lint, production build and four gameplay/control/table-rendering programmes. Native early invoices, wider preparations/modules, full rules and deployed acceptance remain open. No saved-game, database, restart or deployment operation.
This commit is contained in:
Quintine committed 2026-10-24 15:49:35 +11:00
1 parent 49586efd2f
commit f995b6f4cd
18 files changed
+708 -46

No files matched your search

+14
View File
@@ -129,3 +129,17 @@ void test('Basic native selected families qualify, while optional modules and un
assert.equal(movementPromiseTargetAvailable(configured, 'target'), false, key);
}
});
void test('earlier current-round movement questions support classic Basic while native early invoices remain unfinished', () => {
for (const phase of [0, 1, 2, 3, 4]) {
const classic = movementBoundary(); classic.phase = phase; classic.movementRemaining = [];
assert.equal(movementPromiseTargetAvailable(classic, 'target'), true);
const native = structuredClone(classic); native.players[0].faction = 'ixians'; native.expansions = ['ix'];
assert.equal(movementPromiseTargetAvailable(native, 'target'), false);
classic.advanced = true; assert.equal(movementPromiseTargetAvailable(classic, 'target'), false);
}
for (const phase of [-1, 6, 8]) {
const g = movementBoundary(); g.phase = phase;
assert.equal(movementPromiseTargetAvailable(g, 'target'), false);
}
});