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:
1 parent
6ea691255a
commit
1a505525a8
18 files changed
+977
-59
No files matched your search
@@ -234,7 +234,7 @@ void test('Ghola options are own-hand only and ignore opponents private spice ca
|
||||
assert.deepEqual(viewGame(g, 'p').ghola, a);
|
||||
assert.deepEqual(before.players[0], g.players[0]);
|
||||
});
|
||||
void test('Ghola respects pending table windows while normal revival prevention does not block it', () => {
|
||||
void test('Ghola respects table windows and Revival prevention, which expires outside Revival', () => {
|
||||
const { g, card } = fixture();
|
||||
Object.assign(g.players[0], {
|
||||
tanks: 5,
|
||||
@@ -243,6 +243,13 @@ void test('Ghola respects pending table windows while normal revival prevention
|
||||
leaderRevived: true,
|
||||
});
|
||||
g.revivalPrevention = { player: 'p', turn: 2 };
|
||||
assert.equal(viewGame(g, 'p').ghola.available, false);
|
||||
const blocked = structuredClone(g);
|
||||
assert.throws(() => applyAction(g, 'p', { type: 'card', card, amount: 5 }), /prevented.*Ghola/);
|
||||
assert.deepEqual(g, blocked);
|
||||
// Unit timing branch; the native fixture separately proves actual phase exit.
|
||||
g.phase = 5;
|
||||
g.active = 'p';
|
||||
assert.equal(viewGame(g, 'p').ghola.available, true);
|
||||
const done = applyAction(g, 'p', { type: 'card', card, amount: 5 });
|
||||
assert.equal(done.players[0].reserves, 20);
|
||||
|
||||
Reference in new issue
Block a user