Stone to water splashes like it means it

The transmutation fired no flourish: its event carried no coordinates
for the wall case and the mapper knew neither it nor the wave it
raises. The event now carries its edge; the burst splashes both sides
of the vanished wall (or the freed square, for a block), and every
wizard the collapsing wave carries leaves a wash streak — which also
gives the plain WATERWALL's wave its motion for free.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Eric Wagoner
2026-08-17 10:47:42 -04:00
co-authored by Claude Fable 5
parent ca55f7d00b
commit 64709f6c9c
2 changed files with 23 additions and 2 deletions
+21
View File
@@ -159,6 +159,27 @@ export function fxForEvents(
push({ kind: "edge-dust", cell: e.edge.cell, side: e.edge.side });
beat++;
break;
case "stoneTurnedToWater": {
// The wall (or block) bursts into water: splash both sides of the
// vanished edge, or the freed square itself.
if (e.at) {
push({ kind: "splash", at: e.at });
} else if (e.edge) {
const n = {
x: e.edge.cell.x + (e.edge.side === "E" ? 1 : e.edge.side === "W" ? -1 : 0),
y: e.edge.cell.y + (e.edge.side === "S" ? 1 : e.edge.side === "N" ? -1 : 0),
};
push({ kind: "splash", at: e.edge.cell });
push({ kind: "splash", at: n }, 120);
}
beat++;
break;
}
case "washedBack":
// The collapsing wave carries them: a streak per victim.
push({ kind: "streak", from: e.from, to: e.to });
beat++;
break;
case "died": {
const at = posOf(e.player);
if (at) { push({ kind: "soul", at }, 250); beat++; }