A sprung Ward says its bite is coming, not that it missed
The bite rides a counteraction stack, so the batch that springs the Ward carries no damage; the notice read that as a bite with no purchase and the three points landed later unannounced. It now says the bite waits on the taker's answer, and the counteractions follow. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
34d76d9feb
commit
3d4bf1fa6d
@@ -89,7 +89,10 @@
|
||||
/** A trap drawn by YOU earns a modal; buried log lines get missed. */
|
||||
let trapNotice = $state<string | null>(null);
|
||||
/** A Ward sprung on YOU earns the same courtesy. */
|
||||
let wardBite = $state<{ owner: string; amount: number } | null>(null);
|
||||
/** A sprung WARD. The bite rides a counteraction stack, so the batch
|
||||
* that springs it carries no damage: `pending` means the three points
|
||||
* wait on the taker's answer rather than having found no purchase. */
|
||||
let wardBite = $state<{ owner: string; amount: number; pending: boolean } | null>(null);
|
||||
/** Cards revealed to YOU alone (a read mind, plunder, spoils): the
|
||||
* glimpse arrives once, in an event — hold it up until dismissed, or it
|
||||
* is lost to the scrollback. */
|
||||
@@ -196,7 +199,8 @@
|
||||
}
|
||||
if (e.type === "wardSprung" && e.victim === view.you) {
|
||||
const dmg = events.find((d) => d.type === "damaged" && d.player === e.victim && d.source === "warded treasure");
|
||||
wardBite = { owner: e.owner, amount: dmg?.type === "damaged" ? dmg.amount : 0 };
|
||||
const pending = view.stack?.defenderId === view.you && view.stack.sourceName === "warded treasure";
|
||||
wardBite = { owner: e.owner, amount: dmg?.type === "damaged" ? dmg.amount : 0, pending };
|
||||
}
|
||||
}
|
||||
if (view) fpBatch = { n: (fpBatch?.n ?? 0) + 1, events, view };
|
||||
@@ -1951,11 +1955,13 @@
|
||||
<div class="attack-headline">The treasure bites back!</div>
|
||||
<div class="attack-card"><Card card={{ instanceId: "ward-notice", cardId: "ward" }} /></div>
|
||||
<div class="attack-power">
|
||||
{wardBite.amount > 0
|
||||
{wardBite.pending
|
||||
? `${wardBite.owner}'s treasure was warded — it bites for 3 unless you answer it. Your counteractions come next.`
|
||||
: wardBite.amount > 0
|
||||
? `${wardBite.owner}'s treasure was warded — it bites you for ${wardBite.amount} point${wardBite.amount === 1 ? "" : "s"}.`
|
||||
: `${wardBite.owner}'s treasure was warded — but its bite finds no purchase.`}
|
||||
</div>
|
||||
<button class="stamp big" onclick={() => (wardBite = null)}>Grit your teeth</button>
|
||||
<button class="stamp big" onclick={() => (wardBite = null)}>{wardBite.pending ? "Face it" : "Grit your teeth"}</button>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
Reference in New Issue
Block a user