Open Tleilaxu special Karama throughout Revival

Permit native Advanced quiet any-player declarations alongside the original target-bound pending request. Preserve completed returns and charges. Adopt explicit provisional Ghola inclusion during the remaining Revival and phase expiry; keep printed Emperor special immunity and the existing low-Homeworld guard. Connect persistent controls and minimal legal bots through the shared quote.

Validation: 14 related files148/148, types/lint/build, six actual native control/engine/GameTable SSR journeys and four existing-profile continuations. Private-driver-only feedback reuses passed source-identical checks. Native111/113-action setup, paid shipment and battle sources earn originals. No saved-room/D1/restart/deployment operation; full modes and browser/deployed acceptance remain open.
This commit is contained in:
Quintine committed 2026-10-24 19:30:21 +11:00
1 parent 6ea691255a
commit 1a505525a8
18 files changed
+977 -59

No files matched your search

+7 -5
View File
@@ -136,7 +136,7 @@ void test('special Karama consumes one card once, aborts payment and prevents re
});
void test('ownership, actual Karama, window, target and decline validation reject immutably', () => {
const idle = beforeRevival();
assert.throws(() => prevent(idle), /declaration/);
assert.throws(() => prevent(idle), /Expected a string/);
const g = declare(idle);
const snapshot = structuredClone(g);
assert.throws(
@@ -245,11 +245,13 @@ void test('allowing Emperor-funded revival preserves separate quota, correct pay
assert.equal(g.players[0].revived, 0);
assert.equal(g.players[0].tanks, 5);
});
void test('Ghola treachery and Emperor special Karama remain separate from blocked normal revivals', () => {
let g = prevent(declare(beforeRevival()));
void test('Ghola is prevented during Revival while Emperor special Karama retains printed immunity', () => {
const g = prevent(declare(beforeRevival()));
placeFixtureHand(g, 0, [ghola]);
g = allow(applyAction(g, 'a', { type: 'card', card: ghola.id, amount: 5 }));
assert.equal(g.players[0].tanks, 3);
const before = structuredClone(g);
assert.throws(() => applyAction(g, 'a', { type: 'card', card: ghola.id, amount: 5 }), /prevented.*Ghola/);
assert.deepEqual(g, before);
assert.equal(g.players[0].tanks, 8);
assert.equal(g.players[0].revived, 0);
let emperor = beforeRevival();
emperor.players[1].tanks = 5;