Support Moritani assassination of captured and foreign-ghola targets

Retain printed native identity and valid original custody while projecting only
uniform potential bounty before commitment. Resolve living/dead targets once,
clear selected capture/concealment and retain ordinary Ghola return custody.
Selected concealed-outcome disclosure is explicitly provisional.

Verified: 14 affected offline files100/100, types/lint and production build;
six actual choice/gameplay/GameTable SSR journeys and twelve profile paths.
Native capture source47 actions; actual paid Ghola prefix140 actions followed
by explicit conserved seven-action battle. No saved-room/D1/reset/restart or
deployment operation. Runtime-only driver fixes reused unchanged passed checks.
This commit is contained in:
Quintine committed 2026-10-24 19:03:03 +11:00
1 parent 61828150b9
commit eff668b202
25 files changed
+1041 -57

No files matched your search

+2 -2
View File
@@ -35,7 +35,7 @@ void test('an original surviving Auditor2 win opens native CHOAM assassination,
assert.ok(ownChoice, 'The actual owner receives the real private opportunity.');
assert.equal(ownChoice.blocked, null);
assert.deepEqual(ownChoice.cards.map(c => c.card), [f.target]);
assert.equal(ownChoice.cards[0].bounty, printedTarget.strength);
assert.equal(ownChoice.cards[0].potentialBounty, printedTarget.strength);
assert.deepEqual(viewGame(pending, f.native).moritaniAssassinate!.pending!.cards, []);
const targetBefore = mixedE3MoritaniPlayer(pending, f.native).leaders.find(l => l.id === f.target)!;
@@ -79,7 +79,7 @@ void test('a different surviving CHOAM disc permits the actual Auditor Traitor t
const f = createMoritaniAuditorWinnerFixture({ auditorTarget: true });
const pending = pendingMoritaniAuditorAssassination(f);
const own = viewGame(pending, f.moritani).moritaniAssassinate!.pending!;
assert.deepEqual(own.cards.map(c => ({ card: c.card, bounty: c.bounty })), [
assert.deepEqual(own.cards.map(c => ({ card: c.card, bounty: c.potentialBounty })), [
{ card: CHOAM_AUDITOR_ID, bounty: 2 },
]);
const beforeSpice = mixedE3MoritaniPlayer(pending, f.moritani).spice;