Prototype Tleilaxu special Karama Truthtrance
Verify and publish checkpoint container / container (push) Successful in 11m6s

This commit is contained in:
Quintine committed 2026-10-29 18:35:24 +11:00
1 parent 5b8d510470
commit cfccfe5acb
15 files changed
+391 -20

No files matched your search

+36
View File
@@ -2196,6 +2196,42 @@ void test('Emperor special Karama guide forwards only a current legal force pack
owner.tanks = 3; owner.specialKaramaUsed = true; press(button); assert.equal(sent.length, 1);
});
void test('Tleilaxu special Karama authoring uses only the public Revival opportunity', () => {
const game = projected(4);
game.advanced = true; game.expansions = ['ix'];
const owner = game.players.find(player => player.id === 'p')!;
owner.faction = 'tleilaxu'; owner.specialKaramaUsed = false;
const source = JSON.stringify(['karamaTleilaxuSpecial', game.turn, 'p']);
const initial = windowClaim('karamaTleilaxuSpecial', source), e = editor(initial, false, game);
Object.defineProperty(owner, 'hand', { get() { throw Error('Question authoring read private hand'); }, configurable: true });
assert.equal(e.error(), null);
assert.match(e.html(), /Use Tleilaxu’s special Karama during Revival/);
assert.match(e.html(), /Turn 2 · Tleilaxu special Karama during Revival/);
assert.ok(turnActionInputError(initial, game, 'r'));
owner.specialKaramaUsed = true; assert.ok(e.error());
owner.specialKaramaUsed = false; game.phase = 5; assert.ok(e.error());
});
void test('Tleilaxu special Karama guide requires the current quoted physical card and target', () => {
const source = JSON.stringify(['karamaTleilaxuSpecial', 2, 'p']);
const game = projected(4, { type: 'card', mode: 'special', card: 'controlled-printed-karama', target: 'r' });
game.advanced = true; game.expansions = ['ix'];
const owner = game.players.find(player => player.id === 'p')!;
owner.faction = 'tleilaxu'; owner.specialKaramaUsed = false;
game.tleilaxuSpecialKarama = { blocked: null, cards: ['controlled-printed-karama'],
targets: [{ player: 'r', blocked: null }], pending: false };
game.turnActionPromises[0].mixed = windowClaim('karamaTleilaxuSpecial', source);
const sent: Action[] = [], props = { game, busy: false, act(action: Action) { sent.push(action); } };
const button = guide(props); assert.equal(button.props.disabled, false);
assert.match(renderToStaticMarkup(button), /Tleilaxu’s special Karama/);
press(button); assert.deepEqual(sent, [game.turnActionGuide!.action]);
game.tleilaxuSpecialKarama.targets[0].blocked = 'Unavailable'; press(button); assert.equal(sent.length, 1);
game.tleilaxuSpecialKarama.targets[0].blocked = null;
game.tleilaxuSpecialKarama.cards.length = 0; press(button); assert.equal(sent.length, 1);
game.tleilaxuSpecialKarama.cards.push('controlled-printed-karama');
owner.hand = []; press(button); assert.equal(sent.length, 1);
});
void test('Atreides special Karama authoring uses the public battle window and owner', () => {
const game = combat(false);
game.advanced = true;