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;