Three slips for a stranger's first game

Two newcomers on announcement day left within minutes at the same
moment: they picked up a treasure, the turn's actions ended as the
rules say, every walk after that was refused, and the status line's
"turn spent" told them nothing about why or what the treasure was for.
Both had stalled over a minute before their first move as well.

Now: on a first turn, a coaching slip says what a turn is — walk this
many squares, a NUMBER card walks farther, tap a card to cast, End
turn — dismissed once with "got it" and remembered in prefs. After a
pickup, the status line says the pickup ended the actions and the
treasure comes along, and to end the turn and carry it home. While
carrying on later turns, a slip names whose treasure it is, how far
home is, and that two scored wins; your own treasure scores nothing
in your arms.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
This commit is contained in:
Eric Wagoner
2026-09-03 14:47:24 -04:00
co-authored by Claude Fable 5.1
parent cf7920e159
commit 6e3e998307
2 changed files with 34 additions and 1 deletions
+30 -1
View File
@@ -2478,11 +2478,38 @@
<div class="slip yours">
Your turn — round {view.turn.round}.
{#if view.turn.actionsEnded}
turn spent — end it when ready
{#if me?.carriedTreasureId}
picking up ended your actions for this turn, and the treasure comes with you —
<strong>End turn</strong> now, then carry it home to score.
{:else}
picking up ended your actions for this turn — <strong>End turn</strong> when ready.
{/if}
{:else}
{view.turn.movementAllowance - view.turn.movementUsed} moves left{view.turn.attackUsed ? " · attack spent" : ""}
{/if}
</div>
{#if !prefs.coached && !view.turn.actionsEnded}
<!-- A stranger's first turn: what a turn is, before they stare at
seven cards and a maze. Dismissed once, remembered forever. -->
<div class="slip coach">
<strong>How a turn works.</strong> Walk up to {view.turn.movementAllowance} squares by tapping
squares beside your wizard (or with the arrow keys); play a NUMBER card first to walk farther.
Tap a card to cast it. When you're done, <strong>End turn</strong>. Stuck? Ask the automatons for hints.
<button class="stamp tiny" onclick={() => setPref("coached", true)}>got it</button>
</div>
{/if}
{#if me?.carriedTreasureId && !view.turn.actionsEnded}
{@const chest = view.treasures.find((t) => t.id === me!.carriedTreasureId)}
{@const away = dreadDistance(view.board, me!.position, me!.home)}
<div class="slip">
💰 Carrying {chest && chest.owner !== view.you ? `${chest.owner}'s treasure` : "your own treasure"} —
{#if chest && chest.owner !== view.you}
your home is {away} square{away === 1 ? "" : "s"} away; drop it there to score. Two scored wins the game.
{:else}
it scores nothing in your arms; drop it on your home to keep it safe.
{/if}
</div>
{/if}
{:else}
<div class="slip">{view.activePlayerId} is taking their turn…</div>
{/if}
@@ -3507,6 +3534,8 @@
transform: rotate(-0.4deg);
}
.slip.yours { border-left: 4px solid #2e7d32; }
.slip.coach { border-left: 4px solid #c9a72a; }
.slip.coach .stamp { margin-left: 0.5rem; }
.slip.urgent { border-left: 4px solid #b3372b; transform: rotate(0.4deg); }
.slip.ambush-note { border-left: 4px solid #43331f; font-size: 0.85rem; }
.slip.catchup { border-left: 4px solid #5b3f9e; display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }