The Flourish Workshop

Every effect replays each beat. Edit a file in src/fx-sprites/ and it hot-reloads here. → the token workshop

{#each SAMPLES as fx (fx.kind)} {@const Sprite = FX_SPRITES[fx.kind] as Component<{ fx: BoardFx }>}
{#each Array.from({ length: isSector(fx.kind) ? 6 : 3 }, (_, cy) => cy) as cy (cy)} {#each Array.from({ length: isSector(fx.kind) ? 6 : 3 }, (_, cx) => cx) as cx (cx)} {/each} {/each} {#key tick} {/key}
{fx.kind}
{/each}

The standing fires

Board furniture that burns as long as its spell holds — these loop by nature, no beat needed. Same components the live board mounts.

{#each [0, 1, 2] as cy (cy)}{#each [0, 1, 2] as cx (cx)} {/each}{/each}
wall of fire (H)
{#each [0, 1, 2] as cy (cy)}{#each [0, 1, 2] as cx (cx)} {/each}{/each}
wall of fire (V)
{#each [0, 1, 2] as cy (cy)}{#each [0, 1, 2] as cx (cx)} {/each}{/each}
illusion shimmer
{#each [0, 1, 2] as cy (cy)}{#each [0, 1, 2] as cx (cx)} {/each}{/each}
sight trace (direct)
{#each [0, 1, 2] as cy (cy)}{#each [0, 1, 2] as cx (cx)} {/each}{/each}
sight trace (through a warp)