Scope Advanced Kull to the attempted Karama effect

Adopt the supplied Advanced specific-effect wording, preserving Basic and legacy phase-wide semantics. Bind signed semantic purposes through ordinary/special activations, counters, feasibility and settlement; retain unrelated human controls and minimal bot actions. Phase expiry remains provisional; prior counter, BG and deferred-overbid choices stay.

Validation: frozen12-file111/111, types/lint/build and two original-action/rendered-table programmes. Explicit unopened deal/auction/spice order supports real paid Baliset and shipments; Advanced retains Karama for Baliset cancellation while Basic stays blocked. Four minimal policies remain legal. Correct stale exchange/phase-market/Fremen fixture assumptions. Recovery schema expectations maintained without running deferred SQL assurance. No full modes, browser/deployed acceptance, saved-game/reset/restart or deployment operation.
This commit is contained in:
Quintine committed 2026-10-18 12:49:23 +11:00
1 parent b82441c834
commit 884a09fa92
24 files changed
+951 -64

No files matched your search

+2 -1
View File
@@ -378,7 +378,8 @@ void test('a canceled BG counter does not release the original card or premature
assert.equal(result.karamaShipping, null);
assert.equal(result.discard.filter(card => card.id === bg).length, 1);
assert.equal(result.discard.filter(card => card.id === 'ix-kull-wahad').length, 1);
assert.equal(viewGame(result, 'e').karamaBlocked !== null, true);
assert.equal(viewGame(result, 'e').karamaBlocked, null);
assert.deepEqual(viewGame(result, 'e').karamaPurposeBlocks.map(rule => rule.purpose), ['shipment-price']);
});
void test('nonopted games keep native Karama execution and no Kull opportunity', () => {