The clockwork minds the pit, the curse, and the shadow (GDCN)
Kestrel's archmage berserker dug a pit at the far mouth of a warp, then tried to walk through that mouth seven times: each stride landed on its own pit with a thornbush beyond, the maze bounced it back and charged the stride, and on the seventh it rolled the 1 and fell in. Cursed with SLOW DEATH at seven life, it kept drawing two cards a turn at a point apiece, raised a SHADOW that drinks a point a turn, and bled to death in three turns. The path search now refuses a pit it cannot leap beyond — the same test the maze applies — whether the pit is a waypoint or the goal. Under SLOW DEATH the end-of-turn draw keeps four life in hand and draws nothing when it cannot; while bleeding, or at six life or less, no SHADOW is raised. Three tests pin them. The chronicle tells the bounce as what it was: "leaps the pit — nothing to land on beyond it — and teeters back", not a blind blunder into a wall; and the shadow's last drink no longer trails a zero-damage line. Brain and chronicle changes only, ungated; 83 ledgers replay. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
b92016db51
commit
0750fe3f21
@@ -648,7 +648,9 @@ export type GameEvent =
|
||||
| { type: "objectDragged"; caster: PlayerId; what: string; from: Cell; to: Cell }
|
||||
| { type: "spellReused"; player: PlayerId; card: CardInstance }
|
||||
| { type: "castAroundCorner"; caster: PlayerId }
|
||||
| { type: "moveBumped"; player: PlayerId; direction: Side }
|
||||
/** A stride that went nowhere: into a wall while blind, or into a pit
|
||||
* with nothing to land on beyond it. */
|
||||
| { type: "moveBumped"; player: PlayerId; direction: Side; why?: "pit" }
|
||||
| { type: "attackMisdirected"; attacker: PlayerId; intended: PlayerId; rolledDirection: Side; newTarget: PlayerId | null }
|
||||
| { type: "dieRolled"; player: PlayerId | null; roll: number; purpose: string }
|
||||
| { type: "tableTalk"; player: PlayerId; text: string }
|
||||
@@ -4352,7 +4354,7 @@ function doMove(prev: GameState, direction: Side, over = false): CommandResult {
|
||||
// Nowhere to land: teeter back where you started.
|
||||
p.position = from;
|
||||
state.turn.movementUsed++;
|
||||
events.push({ type: "moveBumped", player: p.id, direction });
|
||||
events.push({ type: "moveBumped", player: p.id, direction, why: "pit" });
|
||||
return { ok: true, state, events };
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user