Marching the Democratic Monster onto yourself takes two taps

Its card claws WHOEVER's square it enters, mover included — the owner
learned this standing beside a troll it could not touch. The client now
warns on the first tap ('it will claw YOU') and commits on the second;
no warning when its round's claw is already spent, when the walk is
safe.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0138A8CjeQRpvzKxuMfz1Bqc
This commit is contained in:
Eric Wagoner
2026-08-19 20:39:42 -04:00
co-authored by Claude Fable 5
parent 75d3d44c6c
commit 172fbc6ff8
+15
View File
@@ -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<string | null>(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}
<span>Commanding <strong>{cardDef(sc.kind).name}</strong> — {creatureStats(sc)}.
Tap a square beside it to march, a target in its square to attack.</span>
{#if dmWarnCell}
<span class="hint-alert">⚠ it will claw YOU the moment it enters your square — tap again if you mean it</span>
{/if}
<button class="hint-cancel" onclick={() => (selectedCreature = null)}>done</button>
{/if}
{/if}