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:
1 parent
61828150b9
commit
eff668b202
25 files changed
+1041
-57
No files matched your search
@@ -32,7 +32,9 @@ void test('a real lost battle reveals one different opposing traitor, kills its
|
||||
void test('an already dead target remains a legal assassination reveal with no bounty or repeated death',()=>{
|
||||
const pending=resolveAssassinationBattle(stageAssassinationBattle(assassinationGame(),'guild-1',true));
|
||||
const before=pending.players[0].spice,dead=structuredClone(pending.players[1].leaders[1]);
|
||||
assert.equal(viewGame(pending,'m').moritaniAssassinate!.pending!.cards[0].bounty,0);
|
||||
const choice=viewGame(pending,'m').moritaniAssassinate!.pending!.cards[0];
|
||||
assert.equal(choice.potentialBounty,dead.strength);
|
||||
assert.equal('dead' in choice,false);assert.equal('bounty' in choice,false);
|
||||
const done=assassinationChoice(pending,'guild-1');
|
||||
assert.equal(done.players[0].spice,before);assert.deepEqual(done.players[1].leaders[1],dead);
|
||||
const next=assassinationToMentat(done);assert.equal(next.moritaniAssassinate!.opportunities[0].stage,'replaced');
|
||||
|
||||
Reference in new issue
Block a user