Resolve ambiguous Stone battles with sealed physical totals
Add a provisional post-reveal physical-count commitment for new outcome-changing Basic/Advanced Stone and copied Mirror battles. Keep all original sides sealed until complete and retain matching later typed losses. Preserve legacy, ordinary and invariant-winner timing. Carry the same constraint through card cleanup and native casualty consumers. Validation: frozen 16 files146/146, types/lint/build and14 original-action/rendered-control programmes; four minimal policies make both owned choices legally. Source timing is explicitly provisional. Wider combinations, assurance and deployed acceptance remain open. No saved-game, reset, restart or deployment operation.
This commit is contained in:
1 parent
677ad7aa3c
commit
6ccfaa1b4d
22 files changed
+1247
-83
No files matched your search
@@ -1008,6 +1008,7 @@ function plans(g: GameView): Action[] {
|
||||
b.attacker === me.id ? 'attacker' : 'defender',
|
||||
b.tieWinner === b.attacker ? 'attacker' : 'defender',
|
||||
stoneContext,
|
||||
b.stoneBurnerContext?.allowAllocations,
|
||||
),
|
||||
))
|
||||
)
|
||||
@@ -2429,6 +2430,12 @@ function policyActions(g: GameView): Action[] {
|
||||
)[0];
|
||||
return [{ type: 'decision', token }];
|
||||
}
|
||||
if (d.kind === 'stoneAllocation') {
|
||||
const offer = g.battle?.stoneAllocation;
|
||||
const undialed = offer?.totals.at(-1);
|
||||
return offer && offer.owner === me.id && offer.event === d.event && undialed !== undefined
|
||||
? [{type:'decision',event:d.event,undialed}] : [];
|
||||
}
|
||||
if (d.kind === 'stoneBurner') {
|
||||
const b = g.battle!,
|
||||
own = b.plans[me.id];
|
||||
|
||||
Reference in new issue
Block a user