Speak this phrase into your other device (good for 10 minutes, one use):
{net.transferCode.code}
(net.transferCode = null)}>dismiss
{/if}
{#if local.setup}
{#if !local.active && net.missedMoves > 0}
You missed {net.missedMoves} move{net.missedMoves === 1 ? "" : "s"}.
net.requestCatchUp()}>▶ Watch what happened
net.markSeen()}>skip
{/if}
{#if view.phase === "finished"}
🏆 {view.winner} wins!
{:else if youMustRespond}
{#if view.stack?.defenderId === view.you}
Under attack — respond by your hand.
{:else}
Your spell is countered — respond by your hand.
{/if}
{:else if view.stack}
Waiting on {view.stack.waitingOn}…
{:else if view.outOfTurnWindow?.playerId === view.you}
Your interruption — cast now, or waste it
{:else if isYourTurn}
Your turn — round {view.turn.round}.
{view.turn.movementAllowance - view.turn.movementUsed} moves left{view.turn.attackUsed ? " · attack spent" : ""}
{:else}
{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)}
🗡 {cardDef(a.spell.cardId).name} waits —
{a.trigger.kind === "los" ? "when seen" : a.trigger.kind === "near" ? "when approached" : "when treasure is grabbed"}
{#if isYourTurn}
dispatch({ type: "cancelAmbush", ambushId: a.id })}>disarm
{/if}
{/each}
{/if}
life-points
{#each view.players as p (p.id)}
{p.id}{p.id === view.you ? " (you)" : ""}
{p.life}
{p.handCount} cards{#if p.lostTurns > 0} · dazed {p.lostTurns}{/if}{#if p.carriedTreasureId} · 💰{/if}
{@const spellsOn = view.sustained.filter((e) => e.targetId === p.id)}
{#if p.displayed.length > 0 || spellsOn.length > 0}
{#each p.displayed as c (c.instanceId)}
(peekCard = peekCard?.instanceId === c.instanceId ? null : c)}>
{cardDef(c.cardId).name}{#if view.wandCharges[c.instanceId] != null} · {"●".repeat(view.wandCharges[c.instanceId]!)}{/if}
{/each}
{#each spellsOn as e (e.id)}
{
peekCard = { instanceId: `peek-${e.id}`, cardId: e.cardId };
peekCreatureId = null;
}}>
✦ {cardDef(e.cardId).name} · {e.remainingTurns}
{/each}
{/if}
{/each}
draw pile {view.deckCount} · discards {view.discardCount}
{#each (local.active ? local.log : net.log).slice(-60) as line, i (i)}
{line}
{/each}
{/if}