From fdb44ab09fbb3bab3bc752d8ed831e0e93cf5f6e Mon Sep 17 00:00:00 2001 From: Eric Wagoner Date: Wed, 19 Aug 2026 21:46:44 -0400 Subject: [PATCH] Fear measures as the card says: through walls, never diagonal, no warps MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The FAQ is exact: 'The 3 spaces away is measured as a Wizard walks (if he could walk through walls), not diagonally' — manhattan, at every vintage. The walking-distance detour is reverted (no rev-32 ledger ever recorded under it); the rev-32 gains stand: monsters, warp-steps, and teleports all honor the dread. The aura returns to the true diamond, now as a wash on its member squares. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_0138A8CjeQRpvzKxuMfz1Bqc --- packages/engine/src/game.ts | 15 +++++---------- packages/web/src/Board.svelte | 24 +++++++----------------- 2 files changed, 12 insertions(+), 27 deletions(-) diff --git a/packages/engine/src/game.ts b/packages/engine/src/game.ts index 5ba15ef..86ab12f 100644 --- a/packages/engine/src/game.ts +++ b/packages/engine/src/game.ts @@ -3726,16 +3726,11 @@ function fearRepels(state: GameState, moverId: PlayerId | null, from: Cell, to: for (const other of state.players) { if (!other.alive || other.id === moverId) continue; if (sustainedOn(state, other.id, "fear").length === 0) continue; - // "Spaces" are counted through the maze — warps included, walls - // respected — exactly as feet would walk them (rules rev 32). Earlier - // games measured as the crow flies, and their ledgers replay so. - const walked = (state.config.deckRev ?? 1) >= 32; - const d = walked - ? walkingDistance(state, other.position, to) - : Math.abs(other.position.x - to.x) + Math.abs(other.position.y - to.y); - const dBefore = walked - ? walkingDistance(state, other.position, from) - : Math.abs(other.position.x - from.x) + Math.abs(other.position.y - from.y); + // FAQ: "The 3 spaces away is measured as a Wizard walks (if he could + // walk through walls), not diagonally" — orthogonal steps, walls + // ignored. Warps do not carry the dread; walls do not shield from it. + const d = Math.abs(other.position.x - to.x) + Math.abs(other.position.y - to.y); + const dBefore = Math.abs(other.position.x - from.x) + Math.abs(other.position.y - from.y); if (d <= 3 && d < dBefore) return true; } return false; diff --git a/packages/web/src/Board.svelte b/packages/web/src/Board.svelte index 7a8b606..e08cb5e 100644 --- a/packages/web/src/Board.svelte +++ b/packages/web/src/Board.svelte @@ -1,6 +1,5 @@