Powerstone blesses a number already played this turn

On the table the stone and the number land together; digitally the
display can come a beat late and the +1 silently vanished. Displaying
POWERSTONE now grants the stride retroactively when a number was
already played for movement this turn, with a chronicle line so the
gain is visible. Pure widening — no rev needed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015RCWSTnb1KYTPyL4GmhGnF
This commit is contained in:
Eric Wagoner
2026-08-28 10:22:59 -04:00
co-authored by Claude Fable 5
parent ca0a4ef2e3
commit ca9b09c029
2 changed files with 11 additions and 1 deletions
+10 -1
View File
@@ -715,6 +715,7 @@ export type GameEvent =
| { type: "treasureTorn"; attacker: PlayerId; defender: PlayerId; treasureId: string; toFloor: boolean }
| { type: "tearResisted"; attacker: PlayerId; defender: PlayerId }
| { type: "treasureTearAttempted"; attacker: PlayerId; defender: PlayerId }
| { type: "powerstoneBoost"; player: PlayerId; newAllowance: number }
| { type: "treasureDropped"; player: PlayerId; treasureId: string; at: Cell; onHomeOf: PlayerId | null }
| { type: "playerEliminated"; player: PlayerId; reason: "killed" | "treasuresLost" }
| { type: "cardsDiscarded"; player: PlayerId; cards: CardInstance[] }
@@ -1652,7 +1653,15 @@ const CARD_EFFECTS: Record<string, AttackEffect | NeutralEffect | CounterEffect>
},
// --- Magic stones ---------------------------------------------------------
bloodstone: stoneEffect(),
powerstone: stoneEffect(),
// "Add 1 to any NUMBER card played." On the table the stone and the
// number land together; digitally the display may come a beat late, so
// it blesses a number already played for movement this turn.
powerstone: stoneEffect((state, events, caster) => {
if (activePlayer(state).id === caster.id && state.turn.numberPlayedForMovement) {
state.turn.movementAllowance += 1;
events.push({ type: "powerstoneBoost", player: caster.id, newAllowance: state.turn.movementAllowance });
}
}),
shadowstone: stoneEffect(),
soulstone: stoneEffect(),
speedstone: stoneEffect((state, _events, caster) => {