From c4dafe1df70e6dfd93fbeeb0557e13d41ca79f08 Mon Sep 17 00:00:00 2001 From: Eric Wagoner Date: Sun, 16 Aug 2026 10:43:13 -0400 Subject: [PATCH] Creatures with orders left announce themselves in the rail MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Summoned monsters act during their controller's turn, but nothing reminded you — a democratic monster in play was invisibly waiting on every single player. Now each creature you may command this turn gets a moss-green slip in the paper rail: name, moves remaining, whether its attack is ready (respecting no-attack-on-creation and the democratic monster's one-attack-per-round), and the tap-to-command hint. The democratic monster reminds every player on their turn, since all players get to move it. Co-Authored-By: Claude Fable 5 --- packages/web/src/App.svelte | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/packages/web/src/App.svelte b/packages/web/src/App.svelte index 7465edf..ebc9a04 100644 --- a/packages/web/src/App.svelte +++ b/packages/web/src/App.svelte @@ -541,6 +541,15 @@ return sighted; }); + /** Creatures awaiting your orders this turn (yours + any democratic monster). */ + const idleCreatures = $derived( + view != null && isYourTurn + ? view.creatures.filter((c) => + (c.controllerId === view!.you || c.kind === "democratic-monster") && + (c.movementUsed < c.movesPerTurn || (!c.attackUsed && !c.justCreated))) + : [], + ); + const objectsHere = $derived( view != null && me != null ? (view.groundObjects[`${me.position.x},${me.position.y}`] ?? []) @@ -913,6 +922,15 @@
{view.activePlayerId} is taking their turn…
{/if} + {#each idleCreatures as c (c.id)} + {@const moves = c.movesPerTurn - c.movementUsed} +
+ 🜲 {c.controllerId === view.you ? "Your" : "The"} {cardDef(c.kind).name} awaits orders — + {#if moves > 0}{moves} move{moves === 1 ? "" : "s"}{/if}{#if moves > 0 && !c.attackUsed && !c.justCreated} · {/if}{#if !c.attackUsed && !c.justCreated}attack ready{/if}. + Tap its token to command it. +
+ {/each} + {#if view.yourAmbushes.length > 0} {#each view.yourAmbushes as a (a.id)}
@@ -1520,6 +1538,7 @@ gap: 0.5rem; height: 1.55rem; } + .slip.creature-note { background: #e7edda; border-color: #7d8a5a; } .score-row.active .score-name { font-weight: 700; } .table-cards { display: flex;