An editing pass over the words around the game, and three corrections in the guide
The guide, the hall, the room page and the explanations after a turn lose their closing aphorisms, most of their semicolons, the statement-colon-example lines and the page narrating itself. The tagline is one sentence, and 'a labor of love' is gone from the about link. The chronicle's imagery and the in-world names stay. Corrected along the way: a counter-spell does stop wound spells and lightning (the guide said it did not); a shield is not the only defence against a newly summoned creature; on the first turn a knife can hurt you; a palm is no defence against a fireball; a goblin needs five turns to match one; and only the offline duel lives in the browser. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0141G6xqLeNRYEtviLWSB5Up
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
673f7c84d9
commit
6f9d4de92d
@@ -238,7 +238,7 @@
|
|||||||
{#if duel.surrendering}
|
{#if duel.surrendering}
|
||||||
<p class="warning">Both palms at once is surrender. You will lose the duel.</p>
|
<p class="warning">Both palms at once is surrender. You will lose the duel.</p>
|
||||||
{:else if duel.loneClap && !duel.moved}
|
{:else if duel.loneClap && !duel.moved}
|
||||||
<p class="warning">A clap needs both hands; one hand clapping does nothing. Clap with both, or rest the other hand.</p>
|
<p class="warning">A clap needs both hands, and one hand clapping does nothing. Clap with both, or rest the other hand.</p>
|
||||||
{/if}
|
{/if}
|
||||||
{#if duel.conflict}
|
{#if duel.conflict}
|
||||||
<p class="warning">Those two spells share a gesture, and a gesture can finish only one spell. Let one of them pass.</p>
|
<p class="warning">Those two spells share a gesture, and a gesture can finish only one spell. Let one of them pass.</p>
|
||||||
|
|||||||
@@ -211,9 +211,9 @@
|
|||||||
<section class="lid">
|
<section class="lid">
|
||||||
<div class="lid-head">
|
<div class="lid-head">
|
||||||
<h1>Waving Hands</h1>
|
<h1>Waving Hands</h1>
|
||||||
<p class="pitch">Duelling wizards. Two hands each. The right run of gestures is a spell.</p>
|
<p class="pitch">Wizards duel with their hands, and the right run of gestures is a spell.</p>
|
||||||
<p class="tag">Richard Bartle's 1977 pencil-and-paper duel, free in your browser. Each turn every wizard chooses a gesture per hand and all reveal together; a Fireball is F-S-S-D-D on one hand, a Shield is a single palm. Play the bot, or open a table for up to a dozen wizards and play by turns.</p>
|
<p class="tag">Richard Bartle's 1977 pencil-and-paper duel, free in your browser. Each turn every wizard chooses a gesture for each hand, and all are shown together. A Fireball is F-S-S-D-D on one hand, and a Shield is a single palm. Play the bot, or open a table for up to a dozen wizards and play by turns.</p>
|
||||||
<p class="links"><a href="/guide">how to play</a> · <a href="/rules">the rules</a> · <a class="about-link" href="#about" onclick={() => (aboutOpen = true)}>about this game — a labor of love</a></p>
|
<p class="links"><a href="/guide">how to play</a> · <a href="/rules">the rules</a> · <a class="about-link" href="#about" onclick={() => (aboutOpen = true)}>about this game</a></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="lid-play">
|
<div class="lid-play">
|
||||||
@@ -237,7 +237,7 @@
|
|||||||
<button type="submit" class="quiet" disabled={!ready || code.trim().length < 4}>Join</button>
|
<button type="submit" class="quiet" disabled={!ready || code.trim().length < 4}>Join</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<p class="muted small">A code opens the door either way: take a seat if one is free, or watch from the Peanut Gallery.</p>
|
<p class="muted small">With a code you can take a seat if one is free, or watch from the Peanut Gallery.</p>
|
||||||
<form class="joinform claimform" onsubmit={claim}>
|
<form class="joinform claimform" onsubmit={claim}>
|
||||||
<span class="or">or bring a seat from another device</span>
|
<span class="or">or bring a seat from another device</span>
|
||||||
<input type="text" bind:value={phrase} placeholder="the four-word phrase" autocomplete="off" aria-label="transfer phrase" />
|
<input type="text" bind:value={phrase} placeholder="the four-word phrase" autocomplete="off" aria-label="transfer phrase" />
|
||||||
@@ -325,8 +325,8 @@
|
|||||||
{#snippet aboutGame()}
|
{#snippet aboutGame()}
|
||||||
<div class="about-body">
|
<div class="about-body">
|
||||||
<p>Waving Hands is Richard Bartle's game from 1977, played with pencil, paper and two hands. It was later known as Spellbinder and Spellcaster, and Andrew Plotkin's <em>Spellcast</em> brought it to university X terminals in 1993, which is where the maker of this page first met it.</p>
|
<p>Waving Hands is Richard Bartle's game from 1977, played with pencil, paper and two hands. It was later known as Spellbinder and Spellcaster, and Andrew Plotkin's <em>Spellcast</em> brought it to university X terminals in 1993, which is where the maker of this page first met it.</p>
|
||||||
<p>This version keeps the game as written: all forty spells, the same simultaneous resolution, the same ledger of letters. The rules text it follows is the fanzine transcription, kept in full on the <a href="/rules">rules page</a>. The bot reads your gestures as you would read its; the hand silhouettes on the buttons are adapted from Plotkin's bitmaps, with his notice retained.</p>
|
<p>This version keeps the game as written, with all forty spells, the same simultaneous turns and the same ledger of letters. The rules text it follows is the fanzine transcription, kept in full on the <a href="/rules">rules page</a>. The bot reads your gestures as you would read its. The hand silhouettes on the buttons are adapted from Plotkin's bitmaps, with his notice retained.</p>
|
||||||
<p>It is free and keeps no accounts. A duel against the bot lives in your own browser. A duel between people lives on a small server as an append-only ledger of moves, so it can be replayed from its first gesture, and each wizard is shown only what the rules let them see.</p>
|
<p>It is free and keeps no accounts. An offline duel stays in your own browser. Every other duel, against the bot or between people, lives on a small server as an append-only ledger of moves, so it can be replayed from its first gesture, and each wizard is shown only what the rules let them see.</p>
|
||||||
</div>
|
</div>
|
||||||
{/snippet}
|
{/snippet}
|
||||||
{#snippet aboutTally()}
|
{#snippet aboutTally()}
|
||||||
@@ -346,15 +346,15 @@
|
|||||||
</ul>
|
</ul>
|
||||||
{/if}
|
{/if}
|
||||||
<p class="hosting">
|
<p class="hosting">
|
||||||
The games of Kestrel's Hall are free and will stay free. They run on small servers that cost a few dollars a month; anyone who wants to chip in toward the hosting can at
|
The games of Kestrel's Hall are free and will stay free. They run on small servers that cost a few dollars a month, and anyone who wants to chip in toward the hosting can do so at
|
||||||
<a href="https://ko-fi.com/kestrelsnest" target="_blank" rel="noreferrer">ko-fi.com/kestrelsnest</a>. Nothing is unlocked by it and nothing is withheld without it.
|
<a href="https://ko-fi.com/kestrelsnest" target="_blank" rel="noreferrer">ko-fi.com/kestrelsnest</a>. Every game stays whole either way.
|
||||||
</p>
|
</p>
|
||||||
<p class="made">Waving Hands is Richard Bartle's, 1977.</p>
|
<p class="made">Waving Hands is Richard Bartle's, 1977.</p>
|
||||||
</div>
|
</div>
|
||||||
{/snippet}
|
{/snippet}
|
||||||
{#snippet aboutWord()}
|
{#snippet aboutWord()}
|
||||||
<div class="about-body">
|
<div class="about-body">
|
||||||
<p>A rule read wrong, a bug, a duel you would like to tell of: write to <a href="mailto:eric@ericwagoner.com">eric@ericwagoner.com</a>, <a href="https://bsky.app/profile/kestrelsnest.social" target="_blank" rel="noreferrer">@kestrelsnest.social</a> on Bluesky, or <a href="https://toots.kestrelsnest.social/@eric" target="_blank" rel="noreferrer">@eric@toots.kestrelsnest.social</a> on Mastodon. The keeper of this hall roosts at <a href="https://kestrelsnest.social" target="_blank" rel="noreferrer">kestrelsnest.social</a>.</p>
|
<p>If a rule reads wrong, something breaks, or you have a duel to tell of, write to <a href="mailto:eric@ericwagoner.com">eric@ericwagoner.com</a>, <a href="https://bsky.app/profile/kestrelsnest.social" target="_blank" rel="noreferrer">@kestrelsnest.social</a> on Bluesky, or <a href="https://toots.kestrelsnest.social/@eric" target="_blank" rel="noreferrer">@eric@toots.kestrelsnest.social</a> on Mastodon. The keeper of this hall roosts at <a href="https://kestrelsnest.social" target="_blank" rel="noreferrer">kestrelsnest.social</a>.</p>
|
||||||
</div>
|
</div>
|
||||||
{/snippet}
|
{/snippet}
|
||||||
<About bind:open={aboutOpen} title="About Waving Hands" tabs={[{ id: 'game', label: 'Origins', body: aboutGame }, { id: 'tally', label: 'Duels so far', body: aboutTally }, { id: 'family', label: 'More games', body: aboutFamily }, { id: 'word', label: 'Send word', body: aboutWord }]} />
|
<About bind:open={aboutOpen} title="About Waving Hands" tabs={[{ id: 'game', label: 'Origins', body: aboutGame }, { id: 'tally', label: 'Duels so far', body: aboutTally }, { id: 'family', label: 'More games', body: aboutFamily }, { id: 'word', label: 'Send word', body: aboutWord }]} />
|
||||||
|
|||||||
@@ -61,7 +61,7 @@
|
|||||||
<form class="slip" aria-labelledby="report-heading" onsubmit={send}>
|
<form class="slip" aria-labelledby="report-heading" onsubmit={send}>
|
||||||
<h2 id="report-heading">Something amiss?</h2>
|
<h2 id="report-heading">Something amiss?</h2>
|
||||||
{#if sent}
|
{#if sent}
|
||||||
<p class="thanks">Recorded beside the room's ledger, with the turn. Thank you; the keeper will study the moment.{#if error} {error}{/if}</p>
|
<p class="thanks">Recorded beside the room's ledger, with the turn. Thank you. The keeper will look into it.{#if error} {error}{/if}</p>
|
||||||
{:else}
|
{:else}
|
||||||
<label class="field">
|
<label class="field">
|
||||||
<span>What happened?</span>
|
<span>What happened?</span>
|
||||||
@@ -76,7 +76,7 @@
|
|||||||
<input type="file" accept="image/png,image/jpeg,image/webp" onchange={pickImage} />
|
<input type="file" accept="image/png,image/jpeg,image/webp" onchange={pickImage} />
|
||||||
{#if preview}<img class="preview" src={preview} alt="The screenshot you chose" />{/if}
|
{#if preview}<img class="preview" src={preview} alt="The screenshot you chose" />{/if}
|
||||||
</label>
|
</label>
|
||||||
<p class="muted small">The room code and the turn ride along; the keeper can replay the duel to this moment.</p>
|
<p class="muted small">The room code and the turn are sent with it, so the keeper can replay the duel to this moment.</p>
|
||||||
{#if error}<p class="warning">{error}</p>{/if}
|
{#if error}<p class="warning">{error}</p>{/if}
|
||||||
<div class="actions">
|
<div class="actions">
|
||||||
<button type="submit" class="reveal small" disabled={!happened.trim() || busy}>{busy ? 'Sending' : 'Send it'}</button>
|
<button type="submit" class="reveal small" disabled={!happened.trim() || busy}>{busy ? 'Sending' : 'Send it'}</button>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
<details class="sheet" id="spell-sheet" bind:open={duel.sheetOpen}>
|
<details class="sheet" id="spell-sheet" bind:open={duel.sheetOpen}>
|
||||||
<summary>Spell sheet</summary>
|
<summary>Spell sheet</summary>
|
||||||
<p class="muted intro">Gestures you have already made light up; select a spell to read what it does. A bracketed lower-case letter, such as (w, is that gesture made with both hands at once; C, the clap, is always two-handed. Surrender is both palms at once: never a spell. <a href="/rules">Full rules</a>.</p>
|
<p class="muted intro">Gestures you have already made light up. Select a spell to read what it does. A bracketed lower-case letter, such as (w, is that gesture made with both hands at once; C, the clap, is always two-handed. Surrender is both palms at once: never a spell. <a href="/rules">Full rules</a>.</p>
|
||||||
{#each groups as g (g.category)}
|
{#each groups as g (g.category)}
|
||||||
<h3>{g.title}</h3>
|
<h3>{g.title}</h3>
|
||||||
<ul>
|
<ul>
|
||||||
|
|||||||
@@ -59,7 +59,7 @@
|
|||||||
<button type="submit" class="quiet" disabled={!draft.trim() || !galleryName.trim() || sending}>Say</button>
|
<button type="submit" class="quiet" disabled={!draft.trim() || !galleryName.trim() || sending}>Say</button>
|
||||||
</form>
|
</form>
|
||||||
{:else if remote.spectating}
|
{:else if remote.spectating}
|
||||||
<p class="muted small">The gallery listens; the host has not let it talk.</p>
|
<p class="muted small">The host has not let the gallery talk at this table.</p>
|
||||||
{:else}
|
{:else}
|
||||||
<form onsubmit={say}>
|
<form onsubmit={say}>
|
||||||
<input type="text" bind:value={draft} maxlength="300" placeholder="Say something to the table" aria-label="Say something to the table" autocomplete="off" />
|
<input type="text" bind:value={draft} maxlength="300" placeholder="Say something to the table" aria-label="Say something to the table" autocomplete="off" />
|
||||||
|
|||||||
@@ -1028,7 +1028,7 @@ export function resolveTurn(previous: GameState, inputs: Record<WizardId, TurnIn
|
|||||||
if (facts.counterAimedAway) {
|
if (facts.counterAimedAway) {
|
||||||
lessons.push({
|
lessons.push({
|
||||||
key: 'counter-aim',
|
key: 'counter-aim',
|
||||||
text: `A counter-spell protects its subject, not its caster: ${facts.counterAimedAway} cancelled spells aimed at them and shielded them from creatures, missiles and stabs. To stop what the other wizard casts at you, cast the counter-spell on yourself.`
|
text: `A counter-spell protects its subject, not its caster. This one guarded ${facts.counterAimedAway}, cancelling spells aimed at them and shielding them from creatures, missiles and stabs. To stop what the other wizard casts at you, cast the counter-spell on yourself.`
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (facts.fingerThroughCounter) {
|
if (facts.fingerThroughCounter) {
|
||||||
@@ -1037,11 +1037,11 @@ export function resolveTurn(previous: GameState, inputs: Record<WizardId, TurnIn
|
|||||||
lessons.push({ key: 'counter-scope', text: 'A counter-spell stops every other spell cast at its subject that turn, even the subject\'s own, and shields them as well. It cannot stop finger of death or dispel magic.' });
|
lessons.push({ key: 'counter-scope', text: 'A counter-spell stops every other spell cast at its subject that turn, even the subject\'s own, and shields them as well. It cannot stop finger of death or dispel magic.' });
|
||||||
}
|
}
|
||||||
if (facts.loneClap.length > 0) {
|
if (facts.loneClap.length > 0) {
|
||||||
lessons.push({ key: 'lone-clap', text: `A clap needs both hands at once. ${facts.loneClap[0]}'s single-handed clap counts as nothing, and that hand's spells start from scratch.` });
|
lessons.push({ key: 'lone-clap', text: `A clap needs both hands at once, so ${facts.loneClap[0]}'s one-handed clap counted as nothing, and that hand's spells start from scratch.` });
|
||||||
}
|
}
|
||||||
if (facts.overlaps.length > 0) {
|
if (facts.overlaps.length > 0) {
|
||||||
const o = facts.overlaps[0];
|
const o = facts.overlaps[0];
|
||||||
lessons.push({ key: 'overlap', text: `A gesture can serve more than one spell as long as each run is unbroken: ${o.name}'s ${o.spell} reused gestures from the earlier ${o.earlier}.` });
|
lessons.push({ key: 'overlap', text: `${o.name}'s ${o.spell} reused gestures from the earlier ${o.earlier}. A gesture can serve more than one spell as long as each run is unbroken.` });
|
||||||
}
|
}
|
||||||
if (facts.broken.length > 0) {
|
if (facts.broken.length > 0) {
|
||||||
const b = facts.broken[0];
|
const b = facts.broken[0];
|
||||||
@@ -1049,10 +1049,10 @@ export function resolveTurn(previous: GameState, inputs: Record<WizardId, TurnIn
|
|||||||
}
|
}
|
||||||
if (facts.curedAndHurt.length > 0) {
|
if (facts.curedAndHurt.length > 0) {
|
||||||
const c = facts.curedAndHurt[0];
|
const c = facts.curedAndHurt[0];
|
||||||
lessons.push({ key: 'cure-timing', text: `Cures land in the same turn as the damage: ${c.name} lost ${c.hurt} and regained ${c.healed} at once.` });
|
lessons.push({ key: 'cure-timing', text: `${c.name} lost ${c.hurt} and regained ${c.healed} in the same turn. Cures land together with the damage.` });
|
||||||
}
|
}
|
||||||
if (facts.newMonsterAttacked) {
|
if (facts.newMonsterAttacked) {
|
||||||
lessons.push({ key: 'monster-same-turn', text: `A creature attacks on the very turn it is summoned: ${facts.newMonsterAttacked} struck at once. A shield that turn is the only defence.` });
|
lessons.push({ key: 'monster-same-turn', text: `${facts.newMonsterAttacked} struck on the very turn it was summoned. Only a shield, a counter-spell or protection from evil cast that same turn would have stopped it.` });
|
||||||
}
|
}
|
||||||
for (const l of lessons) {
|
for (const l of lessons) {
|
||||||
if (state.lessonsShown.includes(l.key) || summary.lessons.length >= 2) continue;
|
if (state.lessonsShown.includes(l.key) || summary.lessons.length >= 2) continue;
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<header>
|
<header>
|
||||||
<a class="back" href="/">Back to the hall</a>
|
<a class="back" href="/">Back to the hall</a>
|
||||||
<h1>How to play</h1>
|
<h1>How to play</h1>
|
||||||
<p class="lede">You are a wizard with two hands and a rival across the table. Every turn each of you writes down a gesture for each hand, and all are revealed at once. The right run of gestures on one hand is a spell. This page walks the room.</p>
|
<p class="lede">You are a wizard with two hands and a rival across the table. Every turn each of you chooses a gesture for each hand, and all of them are shown at once. The right run of gestures on one hand is a spell. This guide goes through the screen from the hall to your first duel.</p>
|
||||||
<nav aria-label="Sections">
|
<nav aria-label="Sections">
|
||||||
<a href="#hall">The hall</a>
|
<a href="#hall">The hall</a>
|
||||||
<a href="#table">The table</a>
|
<a href="#table">The table</a>
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
<img src="/guide/hall.png" alt="The hall: the title, a field for your name, a button to play the bot, and buttons to open a table or join one by code." />
|
<img src="/guide/hall.png" alt="The hall: the title, a field for your name, a button to play the bot, and buttons to open a table or join one by code." />
|
||||||
</figure>
|
</figure>
|
||||||
<p>Write your name and choose your company. <strong>Play now against the bot</strong> seats you across from a construct that reads your gestures as you read its. <strong>Open a table</strong> lays a table for up to a dozen wizards and hands you a link and a four-letter code to send. <strong>Join one</strong> takes a code someone sent you.</p>
|
<p>Write your name and choose your company. <strong>Play now against the bot</strong> seats you across from a construct that reads your gestures as you read its. <strong>Open a table</strong> lays a table for up to a dozen wizards and hands you a link and a four-letter code to send. <strong>Join one</strong> takes a code someone sent you.</p>
|
||||||
<p>Beneath, <em>your duels</em> lists every table this browser holds a seat at, and whose move it is. A duel waits for you as long as you like; nothing is lost by closing the page.</p>
|
<p>Beneath, <em>your duels</em> lists every table this browser holds a seat at, and whose move it is. A duel waits for you as long as you like, and nothing is lost by closing the page.</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="table">
|
<section id="table">
|
||||||
@@ -35,8 +35,8 @@
|
|||||||
<figure>
|
<figure>
|
||||||
<img src="/guide/table.png" alt="A table being laid: the invite link, a roster of seated wizards, an empty-seat count, and the host's button to begin." />
|
<img src="/guide/table.png" alt="A table being laid: the invite link, a roster of seated wizards, an empty-seat count, and the host's button to begin." />
|
||||||
</figure>
|
</figure>
|
||||||
<p>A table fills as wizards open the link. Whoever laid it is the host: they may seat a bot in any empty chair or send one away, and they begin the duel when the company suits them, from two wizards to twelve; a full table waits for them too. Once begun, the seats are closed and the ledger opens.</p>
|
<p>A table fills as wizards open the link. Whoever laid it is the host. The host may seat a bot in any empty chair or send one away, and begins the duel when the company suits them, with anywhere from two wizards to twelve. Even a full table waits for the host. Once the duel begins, the seats are closed and the ledger opens.</p>
|
||||||
<p>A duel between people is played by turns, whenever each of you has a moment. The page keeps watch and fills itself in when the others have moved; the masthead's <em>room</em> button copies the invite for latecomers who wish to watch.</p>
|
<p>A duel between people is played by turns, whenever each of you has a moment. When the others move, their turns appear without a reload. The <em>room</em> button at the top copies the invite link for anyone who arrives late and wants to watch.</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="ledger">
|
<section id="ledger">
|
||||||
@@ -44,8 +44,8 @@
|
|||||||
<figure>
|
<figure>
|
||||||
<img src="/guide/ledger.png" alt="The ledger: a table with a turn number down the left, two letter columns for each wizard, and spells named in ember beneath the gesture that finished them." />
|
<img src="/guide/ledger.png" alt="The ledger: a table with a turn number down the left, two letter columns for each wizard, and spells named in ember beneath the gesture that finished them." />
|
||||||
</figure>
|
</figure>
|
||||||
<p>This is the game, as Bartle drew it: one row a turn, two columns a wizard, one letter a hand. <strong>F</strong> wriggled fingers, <strong>P</strong> proffered palm, <strong>S</strong> snap, <strong>W</strong> wave, <strong>D</strong> pointed digit, <strong>C</strong> clap. A dagger is a stab; a dash, a hand that rested. A gesture written in ember finished a spell, and the spell is named beneath it.</p>
|
<p>The ledger is the game as Bartle drew it on paper. Each row is a turn, each wizard has two columns, and each letter is one hand's gesture. <strong>F</strong> is wriggled fingers, <strong>P</strong> a proffered palm, <strong>S</strong> a snap, <strong>W</strong> a wave, <strong>D</strong> a pointed digit and <strong>C</strong> a clap. A dagger is a stab, and a dash is a hand that rested. A gesture written in ember finished a spell, and the spell is named beneath it.</p>
|
||||||
<p>The bottom row is the turn being written. Your letters appear as you choose them; your rivals' show as <strong>?</strong> until the reveal. A question mark in an older row means a gesture you were not allowed to see: you were blind, or they were invisible. With many wizards the ledger runs sideways; the turn and your own two columns stay pinned while you slide across to the rest, and a row of names above it turns the ledger toward any wizard. Pressing a warning or choosing a target does the same. Each wizard keeps one colour in the ledger, the warnings and the rail, so a name met in one place is known in the next.</p>
|
<p>The bottom row is the turn being written. Your letters appear as you choose them, and your rivals' show as <strong>?</strong> until every hand is shown. A question mark in an older row is a gesture you were not allowed to see, because you were blind or they were invisible. With many wizards the ledger runs sideways. The turn number and your own two columns stay put while you slide across to the rest, and the row of names above the ledger jumps to any wizard. Pressing a warning or choosing a target jumps there too. Each wizard has one colour, used in the ledger, the warnings and the list of wizards alike.</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="hands">
|
<section id="hands">
|
||||||
@@ -53,9 +53,10 @@
|
|||||||
<figure>
|
<figure>
|
||||||
<img src="/guide/hands.png" alt="Two panels of gesture buttons, left hand and right, each with a list beneath of spells under way and the gesture that continues them." />
|
<img src="/guide/hands.png" alt="Two panels of gesture buttons, left hand and right, each with a list beneath of spells under way and the gesture that continues them." />
|
||||||
</figure>
|
</figure>
|
||||||
<p>Press a gesture for each hand, or type them: the first letter you type goes to your left hand and the second to your right, with K for a stab, a dash to rest, Backspace to take one back and Enter to seal the turn. The two letters wait in a row at the foot of the hands, beside the button, however far the page has scrolled. Beneath each hand is what that hand is part-way through: <em>D → F-W, Cure light wounds</em> means the digit you made last turn is the first gesture of that spell, and F then W would finish it. Press a line to make its next gesture; the diamond pins a spell so it stays at the top while you work toward it.</p>
|
<p>Press a gesture for each hand, or type them. The first letter you type goes to your left hand and the second to your right. K is a stab and a dash rests the hand. Backspace takes the last letter back, and Enter seals the turn. Your two letters wait beside the button in a row that stays in view however far you scroll.</p>
|
||||||
<p>When a gesture finishes a spell, <em>Finishes</em> appears with the spell chosen and <em>at</em> naming the likeliest subject. Change either. A gesture can belong to more than one spell so long as each run is unbroken, which is how F-F-F followed by S-S-D-D casts a Paralysis and then a Fireball; but one gesture may finish only one spell, and the page will tell you when two of your choices would share one.</p>
|
<p>Under each hand is a list of the spells that hand is part of the way through. <em>D → F-W, Cure light wounds</em> means the digit you made last turn starts that spell, and F then W would finish it. Press a line to make its next gesture. The diamond pins a spell to the top of the list while you work toward it.</p>
|
||||||
<p>Some hands are not yours to move. A hand paralysed or charmed by a rival, or a turn under amnesia, shows its forced gesture locked. Both palms at once is surrender, and the page warns before you do it.</p>
|
<p>When a gesture finishes a spell, <em>Finishes</em> shows which spell, and <em>at</em> shows the likeliest target. You can change either. A gesture can belong to more than one spell as long as each run is unbroken, which is how F-F-F followed by S-S-D-D casts a Paralysis and then a Fireball. But one gesture can finish only one spell, and you will be warned if two of your choices would share one.</p>
|
||||||
|
<p>Some hands are not yours to move. A hand paralysed or charmed by a rival, or a turn under amnesia, shows its forced gesture locked. Both palms at once is surrender, and you are warned before you commit to it.</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="threats">
|
<section id="threats">
|
||||||
@@ -63,8 +64,8 @@
|
|||||||
<figure>
|
<figure>
|
||||||
<img src="/guide/threats.png" alt="Warnings above the hands: a rival's hand, the gestures already made, an arrow, and the gesture that would finish a hostile spell." />
|
<img src="/guide/threats.png" alt="Warnings above the hands: a rival's hand, the gestures already made, an arrow, and the gesture that would finish a hostile spell." />
|
||||||
</figure>
|
</figure>
|
||||||
<p>Above the hands the page reads your rivals' ledgers for you. <em>Lucan, left: S → D, Missile</em> means Lucan's left hand snapped last turn, and one pointed digit would send a missile this turn. <em>Two gestures away</em> lists what could land the turn after. Press a warning to light those gestures in the ledger.</p>
|
<p>Above your hands is a list of what your rivals could cast soon, read from their gestures so far. <em>Lucan, left, S → D, Missile</em> means Lucan's left hand snapped last turn, and one pointed digit would send a missile this turn. <em>Two gestures away</em> lists what could land the turn after. Press a warning to light those gestures in the ledger.</p>
|
||||||
<p>This is the whole art. A shield, a single palm, stops missiles, creatures and knives this turn. A counter-spell on yourself, W-W-S or W-P-P, stops every other spell aimed at you this turn and shields you besides. Neither stops a wound spell or a lightning bolt, and nothing but dispel magic stops the finger of death; against those, break their run with an anti-spell before it ends.</p>
|
<p>Answering these warnings is most of the skill. A shield, a single palm, stops missiles, creatures and knives this turn, but not wound spells, lightning or fire. A counter-spell on yourself, W-W-S or W-P-P, stops every other spell cast at you this turn and shields you as well. Only finger of death and dispel magic get past it. Finger of death is stopped only by dispel magic, so the better answer is to break its run with an anti-spell before it ends.</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="reveal">
|
<section id="reveal">
|
||||||
@@ -72,8 +73,8 @@
|
|||||||
<figure>
|
<figure>
|
||||||
<img src="/guide/result.png" alt="The result strip: each wizard's health before and after the turn, then the events of the turn in a line each." />
|
<img src="/guide/result.png" alt="The result strip: each wizard's health before and after the turn, then the events of the turn in a line each." />
|
||||||
</figure>
|
</figure>
|
||||||
<p><strong>Seal the turn</strong> commits your two gestures; nobody else sees them until every wizard has sealed theirs, and then all hands are shown at once. Against the bot the turn resolves at once; at a table it resolves when the last wizard has moved, and until then the button reads <em>Waiting</em>. Everything happens together: a shield made this turn stops a missile made this turn, a creature summoned this turn strikes this turn, and a cure lands in the same breath as the wound.</p>
|
<p><strong>Seal the turn</strong> commits your two gestures. Nobody sees them until every wizard has sealed theirs, and then all the hands are shown at once. Against the bot this happens straight away. At a table it happens when the last wizard moves, and until then your button reads <em>Waiting</em>. Everything in a turn happens together. A shield made this turn stops a missile made this turn, a creature summoned this turn strikes this turn, and a cure lands in the same breath as the wound.</p>
|
||||||
<p>The strip above the hands says what changed: each wizard's health, then the events worth knowing, and the first time a rule surprises you, a line explaining it. The chronicle in the rail keeps the whole story.</p>
|
<p>The strip above your hands sums up the turn. It gives each wizard's health and the events worth knowing, and the first time a rule comes up it adds a line explaining it. The chronicle at the side keeps the whole story, turn by turn.</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="rail">
|
<section id="rail">
|
||||||
@@ -86,7 +87,7 @@
|
|||||||
<img src="/guide/sheet.png" alt="The spell sheet, open at Fireball: its gestures, what it does, and buttons to plan it with the left or right hand." />
|
<img src="/guide/sheet.png" alt="The spell sheet, open at Fireball: its gestures, what it does, and buttons to plan it with the left or right hand." />
|
||||||
</figure>
|
</figure>
|
||||||
</div>
|
</div>
|
||||||
<p>The rail shows every wizard: fifteen marks of health, the enchantments on them and for how long, and the creatures that serve them with hits left and damage dealt. Past three wizards the rail lists the others on a line each, with their health, what matters about their condition, and whether they have written their turn; press a line to open it out. Your own creatures take orders beneath your hands each turn and keep attacking what they last attacked until told otherwise.</p>
|
<p>The column at the side shows every wizard's fifteen marks of health, the enchantments on them and for how long, and the creatures that serve them. At a table of more than three, the other wizards get one line each, showing their health, anything important about their condition, and whether they have moved yet. Press a line to see the rest. Your own creatures take orders beneath your hands each turn and keep attacking what they last attacked until told otherwise.</p>
|
||||||
<p>The spell sheet lists all forty spells. Gestures you have already made light up along each sequence. Open a spell to read it, then <strong>Plan with left hand</strong> or <strong>right hand</strong> to pin it and make its next gesture, which is how a duel begins when nothing is yet under way.</p>
|
<p>The spell sheet lists all forty spells. Gestures you have already made light up along each sequence. Open a spell to read it, then <strong>Plan with left hand</strong> or <strong>right hand</strong> to pin it and make its next gesture, which is how a duel begins when nothing is yet under way.</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
@@ -95,21 +96,22 @@
|
|||||||
<figure class="narrow">
|
<figure class="narrow">
|
||||||
<img src="/guide/phone.png" alt="The duel on a phone: the ledger, the result, the hands, and a bar fixed at the foot with every wizard's health, the chosen gestures and the button that seals the turn." />
|
<img src="/guide/phone.png" alt="The duel on a phone: the ledger, the result, the hands, and a bar fixed at the foot with every wizard's health, the chosen gestures and the button that seals the turn." />
|
||||||
</figure>
|
</figure>
|
||||||
<p>Everything is here, in one column. The bar at the foot keeps every wizard's health, your two chosen gestures and the button that seals the turn in reach; after each turn the page brings the ledger's last rows and the result into view. Lists are shorter, and <em>More spells</em> opens the rest.</p>
|
<p>On a phone everything sits in one column. A bar at the bottom of the screen keeps the wizards' health, your two gestures and the button that seals the turn within reach. After each turn the screen scrolls back to the ledger's last rows and the result. Lists are shorter, and <em>More spells</em> opens the rest.</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="gallery">
|
<section id="gallery">
|
||||||
<h2>The Peanut Gallery and table talk</h2>
|
<h2>The Peanut Gallery and table talk</h2>
|
||||||
<p>A room's link is an invitation to sit while the table is laid and to watch once the duel has begun. Anyone who opens it without a seat takes a place in the Peanut Gallery: they see the ledger, the result of each turn and the chronicle, and the table is told how many are watching. The gallery is shown only what every wizard at the table could see; a gesture hidden from any one of them is a question mark to everyone in the gallery, and the turn being written shows nothing at all.</p>
|
<p>A room's link is an invitation to sit while the table is laid and to watch once the duel has begun. Anyone who opens it without a seat takes a place in the Peanut Gallery. They see the ledger, the result of each turn and the chronicle, and the table can see how many are watching. The gallery is shown only what every wizard at the table could see. A gesture hidden from any one wizard is a question mark to the whole gallery, and the turn being written shows nothing at all.</p>
|
||||||
<p><em>Table talk</em>, in the rail, is for the wizards seated. A line goes to everyone at the table and everyone in the gallery, and it is kept with the duel; when you come back to a table, the hall says how many lines were said while you were away. The gallery listens, unless the host lets it talk; then a watcher signs a name and their lines read <em>Name (gallery)</em>.</p>
|
<p><em>Table talk</em>, in the rail, is for the wizards seated. A line goes to everyone at the table and in the gallery, and it is kept with the duel. When you come back, the hall says how many lines were said while you were away. The gallery only listens unless the host lets it talk. Then a watcher signs a name, and their lines read <em>Name (gallery)</em>.</p>
|
||||||
<p>Three more things a table can do. While it is laid, any seated wizard may <strong>challenge the keeper</strong>: a seat is held under the keeper's name, the keeper's phone rings, and the note beside the button says what hour it is where they live, so you know whether to wait or come back. When a duel is over, anyone at the table may call for <strong>a rematch</strong>: a new table of the same size with the same bots, seats held for everyone who was here. And <strong>Transfer seat</strong> in the masthead mints four words that bring your seat to another device, good for ten minutes; the hall on that device has a place to claim them.</p>
|
<p>Before a duel begins, any seated wizard may <strong>challenge the keeper</strong>, who looks after this site. A seat is held under the keeper's name and the keeper's phone rings. The note beside the button gives the hour where the keeper lives, so you know whether to wait or come back later.</p>
|
||||||
|
<p>When a duel is over, anyone at the table may call for <strong>a rematch</strong>. That opens a new table of the same size with the same bots, and holds a seat for everyone who played. <strong>Transfer seat</strong> at the top of the page gives you four words that move your seat to another device. They work for ten minutes, and you enter them in the hall on the other device.</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="first">
|
<section id="first">
|
||||||
<h2>A first duel</h2>
|
<h2>A first duel</h2>
|
||||||
<p>Open with a wave on each hand. From W-W you may turn either hand into a counter-spell (W-W-S), a protection from evil (W-W-P) or resist heat (W-W-F-P), and nobody can hurt you on the first turn. Watch the warnings: when a missile is one gesture away, a palm costs you one hand for one turn; when a fireball is one gesture away, only a counter-spell, a resistance, or a counter of your own will do.</p>
|
<p>Open with a wave on each hand. From W-W either hand can go on to a counter-spell (W-W-S), protection from evil (W-W-P) or resist heat (W-W-F-P). On the first turn only a knife can hurt you. Then watch the warnings. When a missile is one gesture away, a palm on one hand stops it. When a fireball is one gesture away, a palm will not help, but a counter-spell on yourself or resist heat will.</p>
|
||||||
<p>Then choose a spell from the sheet and pin it to a hand, and keep the other hand for answering. Cause light wounds is three gestures, a fireball five, and summoning a goblin three; a goblin that lives for four turns has done a fireball's work. Read the rival's ledger every turn as they read yours. Both of you are bluffing, and the whole page is the paper.</p>
|
<p>Next, choose a spell from the sheet and pin it to one hand, and keep the other hand free for answering. Cause light wounds takes three gestures, a fireball five, and summoning a goblin three. A goblin left alone strikes every turn, so in five turns it does a fireball's damage. Read your rival's ledger every turn, because they are reading yours, and both of you can feint.</p>
|
||||||
<p>The full rules are on the <a href="/rules">rules page</a>, with Bartle's text. If a rule here reads wrong to you, or the page misbehaves, <a href="mailto:eric@ericwagoner.com">send word</a>; the hall's <em>about this game</em> has the other ways to reach the keeper.</p>
|
<p>The full rules are on the <a href="/rules">rules page</a>, with Bartle's text. If a rule here reads wrong to you, or something misbehaves, <a href="mailto:eric@ericwagoner.com">send word</a>. The hall's <em>about this game</em> lists the other ways to reach the keeper.</p>
|
||||||
</section>
|
</section>
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
|
|||||||
@@ -199,7 +199,7 @@
|
|||||||
<a href={`/join/${r.rematch.to}`}>Take your seat</a>
|
<a href={`/join/${r.rematch.to}`}>Take your seat</a>
|
||||||
{:else}
|
{:else}
|
||||||
<button type="button" class="quiet" disabled={rematching} onclick={rematch}>Duel again with this table</button>
|
<button type="button" class="quiet" disabled={rematching} onclick={rematch}>Duel again with this table</button>
|
||||||
<span>the same company, at a new table; seats are held for everyone here.</span>
|
<span>The same company sits down at a new table, with a seat held for everyone here.</span>
|
||||||
{/if}
|
{/if}
|
||||||
</p>
|
</p>
|
||||||
{/if}
|
{/if}
|
||||||
@@ -208,7 +208,7 @@
|
|||||||
<section class="lobby">
|
<section class="lobby">
|
||||||
<p class="eyebrow">room {roomId}</p>
|
<p class="eyebrow">room {roomId}</p>
|
||||||
<h2>Take a seat</h2>
|
<h2>Take a seat</h2>
|
||||||
<p>A wizard has opened this table and is gathering opponents. Choose a name and sit; the duel begins when the host says.</p>
|
<p>A wizard has opened this table and is gathering opponents. Choose a name and sit down. The duel begins when the host says.</p>
|
||||||
<form class="rename" onsubmit={takeSeat}>
|
<form class="rename" onsubmit={takeSeat}>
|
||||||
<label class="field">
|
<label class="field">
|
||||||
<span>Your name</span>
|
<span>Your name</span>
|
||||||
@@ -229,12 +229,12 @@
|
|||||||
{#if seatFree}
|
{#if seatFree}
|
||||||
<p>{hostName} is gathering wizards. Sit down above, or watch from the gallery until the duel begins.</p>
|
<p>{hostName} is gathering wizards. Sit down above, or watch from the gallery until the duel begins.</p>
|
||||||
{:else}
|
{:else}
|
||||||
<p>The table is full. You watch from the Peanut Gallery; the duel begins when {hostName} says.</p>
|
<p>The table is full, so you watch from the Peanut Gallery. The duel begins when {hostName} says.</p>
|
||||||
{/if}
|
{/if}
|
||||||
{:else}
|
{:else}
|
||||||
<p class="eyebrow">room {roomId}</p>
|
<p class="eyebrow">room {roomId}</p>
|
||||||
<h2>The table is laid</h2>
|
<h2>The table is laid</h2>
|
||||||
<p>Send this link, or the code. Whoever opens it takes a seat; the table holds a dozen, and the duel begins when you say. Anyone who arrives once it has begun watches from the Peanut Gallery.</p>
|
<p>Send this link, or the code. Whoever opens it takes a seat, up to a dozen, and the duel begins when you say. Anyone who arrives once it has begun watches from the Peanut Gallery.</p>
|
||||||
<p class="link-row"><code>{link}</code><button type="button" class="quiet" onclick={copyLink}>{copied ? 'Copied' : 'Copy link'}</button></p>
|
<p class="link-row"><code>{link}</code><button type="button" class="quiet" onclick={copyLink}>{copied ? 'Copied' : 'Copy link'}</button></p>
|
||||||
{/if}
|
{/if}
|
||||||
<ul class="roster">
|
<ul class="roster">
|
||||||
@@ -254,7 +254,7 @@
|
|||||||
<li class="empty muted">{r.size - r.seats.length - r.expected.length} of {r.size} seats empty{#if r.audience > 0}; {r.audience} in the gallery{r.galleryTalk ? ', allowed to talk' : ''}{/if}</li>
|
<li class="empty muted">{r.size - r.seats.length - r.expected.length} of {r.size} seats empty{#if r.audience > 0}; {r.audience} in the gallery{r.galleryTalk ? ', allowed to talk' : ''}{/if}</li>
|
||||||
</ul>
|
</ul>
|
||||||
{#if r.rematchOf}
|
{#if r.rematchOf}
|
||||||
<p class="muted">A rematch of table {r.rematchOf}: the same company, seats held for those not yet back.</p>
|
<p class="muted">This is a rematch of table {r.rematchOf}, with seats held for those not yet back.</p>
|
||||||
{/if}
|
{/if}
|
||||||
{#if !watching}
|
{#if !watching}
|
||||||
<div class="ways">
|
<div class="ways">
|
||||||
@@ -280,7 +280,7 @@
|
|||||||
<p class="muted small">{r.keeper} keeps this site and answers every call, sometimes within the minute, sometimes after a night's sleep.{#if keeperHour} It is {keeperHour} where {r.keeper} lives.{/if} The seat is held either way.</p>
|
<p class="muted small">{r.keeper} keeps this site and answers every call, sometimes within the minute, sometimes after a night's sleep.{#if keeperHour} It is {keeperHour} where {r.keeper} lives.{/if} The seat is held either way.</p>
|
||||||
</div>
|
</div>
|
||||||
{:else if r.challenge}
|
{:else if r.challenge}
|
||||||
<p class="muted small">{r.keeper} has been called to the table by {room.speaker(r.challenge.by)}.{#if keeperHour} It is {keeperHour} there.{/if} A seat is held: if they can come now they will take it; if they are asleep or away they will leave a word below when they can. Meanwhile the table is yours: seat a bot, invite a friend, or open another duel in a new tab and play on. This table keeps its place in your hall until you come back.</p>
|
<p class="muted small">{r.keeper} has been called to the table by {room.speaker(r.challenge.by)}.{#if keeperHour} It is {keeperHour} there.{/if} A seat is held for them. If they can come now, they will take it. If they are asleep or away, they will leave a word below when they can. In the meantime you can seat a bot, invite a friend, or play another duel in a new tab. This table keeps its place in your hall until you come back.</p>
|
||||||
{/if}
|
{/if}
|
||||||
{/if}
|
{/if}
|
||||||
{#if r.error}<p class="notice">{r.error}</p>{/if}
|
{#if r.error}<p class="notice">{r.error}</p>{/if}
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
<header>
|
<header>
|
||||||
<a class="back" href="/">Back to the hall</a> · <a class="back" href="/guide">How to play</a>
|
<a class="back" href="/">Back to the hall</a> · <a class="back" href="/guide">How to play</a>
|
||||||
<h1>How to duel</h1>
|
<h1>How to duel</h1>
|
||||||
<p class="lede">Waving Hands is Richard Bartle's 1977 game of two wizards trading spells made of hand gestures. This page is a working reference; the original transcription is at the end.</p>
|
<p class="lede">Waving Hands is Richard Bartle's 1977 game of two wizards trading spells made of hand gestures. This page is a working reference, and the original transcription is at the end.</p>
|
||||||
<nav aria-label="Sections">
|
<nav aria-label="Sections">
|
||||||
<a href="#turn">A turn</a>
|
<a href="#turn">A turn</a>
|
||||||
<a href="#gestures">Gestures</a>
|
<a href="#gestures">Gestures</a>
|
||||||
@@ -79,19 +79,19 @@
|
|||||||
|
|
||||||
<section id="gestures">
|
<section id="gestures">
|
||||||
<h2>Gestures</h2>
|
<h2>Gestures</h2>
|
||||||
<p>Six magical gestures: <strong>F</strong> wriggled fingers, <strong>P</strong> proffered palm, <strong>S</strong> snap, <strong>W</strong> wave, <strong>D</strong> pointed digit and <strong>C</strong> clap. A clap needs both hands; a clap with one hand is nothing. A hand may instead <strong>stab</strong> with the knife (one point of damage, one stab a turn) or do <strong>nothing</strong>. Neither belongs to any spell, so a hand that stabs or rests starts its next spell from scratch.</p>
|
<p>There are six magical gestures. <strong>F</strong> is wriggled fingers, <strong>P</strong> a proffered palm, <strong>S</strong> a snap, <strong>W</strong> a wave, <strong>D</strong> a pointed digit and <strong>C</strong> a clap. A clap needs both hands, and a clap with one hand counts as nothing. A hand may instead <strong>stab</strong> with the knife (one point of damage, one stab a turn) or do <strong>nothing</strong>. Neither belongs to any spell, so a hand that stabs or rests starts its next spell from scratch.</p>
|
||||||
<p>A spell is a run of gestures made on consecutive turns by one hand. In the notation, a bracketed lower-case letter such as <strong>(w</strong> means that gesture made with both hands at once.</p>
|
<p>A spell is a run of gestures made on consecutive turns by one hand. In the notation, a bracketed lower-case letter such as <strong>(w</strong> means that gesture made with both hands at once.</p>
|
||||||
<p>Both palms at once is <strong>surrender</strong>. It is not a spell and it ends the duel.</p>
|
<p>Both palms at once is <strong>surrender</strong>. It is not a spell and it ends the duel.</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="overlap">
|
<section id="overlap">
|
||||||
<h2>Overlapping spells</h2>
|
<h2>Overlapping spells</h2>
|
||||||
<p>A gesture can belong to more than one spell as long as each spell's run is unbroken. F-F-F is Paralysis; follow it with S-S-D-D and the last five gestures, F-S-S-D-D, are a Fireball. Another F after F-F-F is a second Paralysis. Each gesture can finish only one spell, so if two spells would end on the same gesture you choose one. Any finished spell may be let go harmlessly, except the storms, which rage wherever they are released.</p>
|
<p>A gesture can belong to more than one spell as long as each spell's run is unbroken. F-F-F is Paralysis. Follow it with S-S-D-D, and the last five gestures, F-S-S-D-D, are a Fireball. Another F after F-F-F is a second Paralysis. Each gesture can finish only one spell, so if two spells would end on the same gesture you choose one. Any finished spell may be let go harmlessly, except the storms, which rage wherever they are released.</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="targets">
|
<section id="targets">
|
||||||
<h2>Targets and timing</h2>
|
<h2>Targets and timing</h2>
|
||||||
<p>Every spell has a subject. Protection and summons are usually cast on yourself; attacks and enchantments on your opponent; but any spell may be aimed at any wizard or monster, and a spell aimed at something that no longer exists is lost.</p>
|
<p>Every spell has a subject. Protection and summons are usually cast on yourself, and attacks and enchantments on your opponent, but any spell may be aimed at any wizard or monster, and a spell aimed at something that no longer exists is lost.</p>
|
||||||
<p>Because everything is simultaneous, a monster killed the turn it appears still attacks that turn, a Resist heat cast in the same turn as a Fireball saves you, and a Remove enchantment cast in the same turn as a Fireball leaves you burned. <strong>Counter-spell</strong> stops every other spell cast at its subject that turn, except Finger of death and Dispel magic. <strong>Dispel magic</strong> stops every spell on the field, ends every enchantment and unmakes every monster after it attacks.</p>
|
<p>Because everything is simultaneous, a monster killed the turn it appears still attacks that turn, a Resist heat cast in the same turn as a Fireball saves you, and a Remove enchantment cast in the same turn as a Fireball leaves you burned. <strong>Counter-spell</strong> stops every other spell cast at its subject that turn, except Finger of death and Dispel magic. <strong>Dispel magic</strong> stops every spell on the field, ends every enchantment and unmakes every monster after it attacks.</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user