The discard pile lies face-up, and the chronicle names what falls

At the table the discards sit face-up for anyone to leaf through. The
view now carries the pile (deck order stays secret), the "discards N"
count in the rail became a link, and it opens a booklet-styled reader:
every cast-away card newest first, tap any to enlarge. And the
chronicle stops mumbling "discards 1 card(s)" — it names names, so a
wraith's theft reads "bob discards Fireball," exactly what a table
would see as the card hits the pile.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Eric Wagoner
2026-08-16 13:28:55 -04:00
co-authored by Claude Fable 5
parent d1eace9530
commit 0ebae03b1c
3 changed files with 75 additions and 2 deletions
+3
View File
@@ -47,6 +47,8 @@ export interface GameView {
treasures: TreasureState[];
deckCount: number;
discardCount: number;
/** The discard pile, face-up as at the table (last = most recent). */
discardPile: CardInstance[];
/** Cards on the stack are face-up: the whole exchange is public. */
stack: CastStack | null;
pendingDiscard: PlayerId | null;
@@ -121,6 +123,7 @@ export function viewFor(state: GameState, playerId: PlayerId): GameView {
treasures: state.treasures.map((t) => ({ ...t })),
deckCount: state.deck.length,
discardCount: state.discard.length,
discardPile: [...state.discard],
stack: state.stack,
pendingDiscard: state.pendingDiscard,
sustained: state.sustained.map((s) => ({ ...s })),