diff --git a/packages/web/src/App.svelte b/packages/web/src/App.svelte index 3e6a71f..30906fe 100644 --- a/packages/web/src/App.svelte +++ b/packages/web/src/App.svelte @@ -615,6 +615,15 @@ const n = { x: creature.position.x + (side === "E" ? 1 : side === "W" ? -1 : 0), y: creature.position.y + (side === "S" ? 1 : side === "N" ? -1 : 0) }; if (cellKey(n) === cellKey(cell)) { + // The Democratic Monster claws WHOEVER's square it enters — its + // own mover included. Walking it onto yourself takes two taps. + const mover = view.players.find((p) => p.id === view.you); + if (creature.kind === "democratic-monster" && !creature.attackUsed && mover && + cellKey(cell) === cellKey(mover.position) && dmWarnCell !== cellKey(cell)) { + dmWarnCell = cellKey(cell); + return; + } + dmWarnCell = null; dispatch({ type: "moveCreature", creatureId: selectedCreature, direction: side }); return; } @@ -954,6 +963,9 @@ /** The preferences slip (client-side taste, saved on this device). */ let prefsOpen = $state(false); + /** First tap of marching the Democratic Monster onto YOURSELF: warn once. */ + let dmWarnCell = $state(null); + // In a lobby before the deal: claim the preferred color when it is free // and this seat has not chosen. One quiet attempt per availability change. $effect(() => { @@ -1870,6 +1882,9 @@ {#if sc} Commanding {cardDef(sc.kind).name} — {creatureStats(sc)}. Tap a square beside it to march, a target in its square to attack. + {#if dmWarnCell} + ⚠ it will claw YOU the moment it enters your square — tap again if you mean it + {/if} {/if} {/if}