Three more cautions: the un-grabbed chest, the biting ground, the starved draw
Ending a turn on a treasure nobody picked up now asks first (unless the auto-grab preference is about to take it, or the grab would be refused — laden arms, weakness, spent actions, glue, a locked safe, or your own home where the chest already scores; the view learns gluedCells and openSafes so the check is honest). Stepping onto ground that bites — thornbush, tacks, pit, ooze — warns with the exact price, unless you are mist. And the sticky draw picker no longer quietly starves anyone: a draw below what would fit asks too. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
6e1ccb0195
commit
ef921a0c2b
@@ -57,6 +57,10 @@ export interface GameView {
|
||||
/** Duration spells in play (public knowledge). */
|
||||
sustained: SustainedEffect[];
|
||||
squareContents: Record<string, SquareContent>;
|
||||
/** Cells whose contents are glued down (public: the cast was seen). */
|
||||
gluedCells: Record<string, true>;
|
||||
/** Safes standing open (their combination entered this turn). */
|
||||
openSafes: string[];
|
||||
groundObjects: Record<string, CardInstance[]>;
|
||||
doorStates: Record<string, "jammed" | "removed">;
|
||||
/** Accumulated attack damage per edge (public — cracks show). */
|
||||
@@ -144,6 +148,8 @@ export function viewFor(state: GameState, playerId: PlayerId): GameView {
|
||||
pendingDiscard: state.pendingDiscard,
|
||||
sustained: state.sustained.map((s) => ({ ...s })),
|
||||
squareContents: { ...state.squareContents },
|
||||
gluedCells: { ...state.gluedCells },
|
||||
openSafes: [...state.openSafes],
|
||||
groundObjects: Object.fromEntries(
|
||||
Object.entries(state.groundObjects).map(([k, v]) => [k, [...v]]),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user