The die rolls in the open
Every player-facing D4 roll now lands in the chronicle as pips with its purpose: "🎲 alice rolls a 3 — aiming at the unseen — only a 1 finds them." A shared rollD4 helper threads the generic dieRolled event through blind staggers and swings, pit leaps, ooze and pit struggles, and the invisible/shrink miss rolls — the table sees the die land, exactly as it would in person. Rolls whose numbers already showed (the troll's swing, the misdirection direction, the opening roll-off) keep their lines. And the physical die's other job — "any 50-50 call" — gets its button: 🎲 beside the say-box in online games (server-rolled, published through the chat ledger so it persists, replays, and counts toward unread badges) and under the chronicle in hotseat, rolled on the device. Chronicle only; no game state touched. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
d6d34887e3
commit
ef661c79ad
@@ -1189,6 +1189,12 @@
|
||||
<div class:table-talk={line.startsWith("\u{1F4AC}")}>{line}</div>
|
||||
{/each}
|
||||
</div>
|
||||
{#if local.active && local.viewerId}
|
||||
<div class="say-box">
|
||||
<button class="stamp tiny" type="button" title="roll the die (house calls)"
|
||||
onclick={() => local.rollTableDie()}>🎲 roll the die</button>
|
||||
</div>
|
||||
{/if}
|
||||
{#if !local.active && net.roomId}
|
||||
<form class="say-box" onsubmit={(e) => {
|
||||
e.preventDefault();
|
||||
@@ -1199,6 +1205,8 @@
|
||||
<input class="say-input" bind:value={chatDraft} maxlength="300"
|
||||
placeholder="say something to the table…" aria-label="table talk" />
|
||||
<button class="stamp tiny" type="submit" disabled={!chatDraft.trim()}>say</button>
|
||||
<button class="stamp tiny" type="button" title="roll the die (house calls)"
|
||||
onclick={() => net.rollTableDie()}>🎲</button>
|
||||
</form>
|
||||
{/if}
|
||||
</aside>
|
||||
|
||||
Reference in New Issue
Block a user