From dfd7a2ff567723bcaadfe28d3b296a46b51c1729 Mon Sep 17 00:00:00 2001 From: Eric Wagoner Date: Mon, 17 Aug 2026 19:31:26 -0400 Subject: [PATCH] Stone to Water's targeting aid honors sight and its wall targets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The cast validation demands LOS to a stone block, but the dimming aid lit every stone square on the map — including ones the caster cannot see. Now only sighted blocks light; and since the card equally targets stone walls (edges the cell-shadow cannot express), no sighted block means no shadow at all rather than a maze dimmed away from its true targets. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_0138A8CjeQRpvzKxuMfz1Bqc --- packages/engine/src/view.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/engine/src/view.ts b/packages/engine/src/view.ts index 3ce34fd..bd62ed0 100644 --- a/packages/engine/src/view.ts +++ b/packages/engine/src/view.ts @@ -328,7 +328,14 @@ export function eligibleCellsFor(view: GameView, cardId: string): Set | } if (cardId === "stone-to-water") { - return new Set(cells.filter((k) => view.squareContents[k]?.kind === "stone")); + // The cast demands sight of the stone block, so only sighted ones light. + // The card equally targets stone WALLS — edges the cell-shadow cannot + // express — so with no stone square in view, dimming would shroud the + // true targets: light everything instead. + const out = new Set( + cells.filter((k) => view.squareContents[k]?.kind === "stone" && sighted.has(k)), + ); + return out.size > 0 ? out : null; } if (cardId === "dispel-creation") { // Anything created — terrain or creature, whoever made it — in sight.