About: the story of the game, told on the box lid

A handwritten "about this game — a labor of love" link on the box lid
opens a new About tab in the booklet: what Wiz-War is, that Tom Jolly
created it in 1983, that this is a faithful reproduction of the
out-of-print Chessex sixth edition (with its one expansion) that Eric
and his friends played for countless hours in the early nineties —
rebuilt from that very copy, card by photographed card, wall by
verified wall, with the original hand-inked token art. It names Steve
Jackson Games as the current rightsholder, states plainly that this
is an unofficial, non-commercial fan work made with love and
admiration, and closes by pointing anyone the game delights toward
the edition currently in print and a real table.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Eric Wagoner
2026-08-16 09:43:09 -04:00
co-authored by Claude Fable 5
parent 0b6ac25bc3
commit 7a231cbe1b
2 changed files with 71 additions and 6 deletions
+19 -3
View File
@@ -15,6 +15,7 @@
let joinCode = $state("");
let claimPhrase = $state("");
let showHelp = $state(false);
let helpTab = $state<"play" | "rules" | "cards" | "about">("play");
let hotseatCount = $state(2);
let setupName = $state("");
let setupColor = $state(0);
@@ -526,7 +527,7 @@
<button class="mast-leave" onclick={() => net.requestTransferCode()}>transfer seat</button>
<button class="mast-leave" onclick={() => net.leave()}>leave table</button>
{/if}
<button class="mast-leave" class:mast-help-solo={!net.roomId} onclick={() => (showHelp = true)}>
<button class="mast-leave" class:mast-help-solo={!net.roomId} onclick={() => { helpTab = "play"; showHelp = true; }}>
help &amp; rules
</button>
<span class="mast-status" class:offline={net.status !== "connected"}>
@@ -535,7 +536,7 @@
</header>
{#if showHelp}
<Help onclose={() => (showHelp = false)} />
<Help initialTab={helpTab} onclose={() => (showHelp = false)} />
{/if}
{#if net.catchUp && net.catchUp.length > 0}
@@ -608,6 +609,9 @@
<div class="boxlid-inner">
<div class="boxlid-title">Wiz-War</div>
<div class="boxlid-tag">A game of magical combat in a stone labyrinth</div>
<button class="about-link" onclick={() => { helpTab = "about"; showHelp = true; }}>
about this game — a labor of love
</button>
<label class="field">
<span>Your wizard's name</span>
<input bind:value={name} maxlength="20" placeholder="e.g. Mordecai" />
@@ -1144,8 +1148,20 @@
.boxlid-tag {
font-size: 0.95rem;
color: #6b5a41;
margin: 0.5rem 0 1.4rem;
margin: 0.5rem 0 0.4rem;
}
.about-link {
background: none;
border: none;
font-family: "Caveat", cursive;
font-size: 1.05rem;
color: #8a6d3f;
text-decoration: underline;
text-decoration-style: dotted;
cursor: pointer;
margin-bottom: 1.2rem;
}
.about-link:hover { color: #43331f; }
.field { display: block; text-align: left; margin-bottom: 1rem; }
.field span {
display: block;
+52 -3
View File
@@ -3,9 +3,16 @@
import Card from "./Card.svelte";
import { HOW_TO_PLAY, RULES_SECTIONS } from "./rules";
let { onclose }: { onclose: () => void } = $props();
let {
onclose,
initialTab = "play",
}: {
onclose: () => void;
initialTab?: "play" | "rules" | "cards" | "about";
} = $props();
let tab = $state<"play" | "rules" | "cards">("play");
// svelte-ignore state_referenced_locally -- the initial tab is intentionally a one-time value
let tab = $state<"play" | "rules" | "cards" | "about">(initialTab);
let search = $state("");
// The playable pool: every card actually in the 6e game (base + Exp1).
@@ -45,12 +52,54 @@
<button class:current={tab === "play"} onclick={() => (tab = "play")}>How to play</button>
<button class:current={tab === "rules"} onclick={() => (tab = "rules")}>The rules</button>
<button class:current={tab === "cards"} onclick={() => (tab = "cards")}>Card library</button>
<button class:current={tab === "about"} onclick={() => (tab = "about")}>About</button>
</nav>
<button class="close" onclick={onclose} aria-label="close help">×</button>
</header>
<div class="booklet-body">
{#if tab === "play"}
{#if tab === "about"}
<div class="about">
<h3>What this is</h3>
<p>
Wiz-War is a game of magical combat in a stone labyrinth: two to six
wizards prowl a maze, hurling fireballs, walking through walls,
summoning trolls, and stealing each other's treasure. It was created
by <strong>Tom Jolly</strong> in 1983 and first published under his
own Jolly Games label; the edition reproduced here is the
<strong>sixth edition</strong>, published by Chessex in 1993, together
with its one expansion — monsters and magic wands included.
</p>
<h3>Why it exists</h3>
<p>
In the early nineties, a group of friends played this exact edition
for countless hours — the slammed doors, the ambushes around
corners, the goat charges, the laughter. That box is long out of
print, and its cardboard is worn soft at the edges. This digital
table was built from that very copy: every card was photographed and
transcribed word for word, every board layout verified wall by wall,
and the tokens on this screen are the actual hand-inked art from
those counter sheets. It is a faithful reproduction of the game as
it was played at that table, made so the same friends — and their
friends — can keep playing it.
</p>
<h3>Whose game it is</h3>
<p>
Wiz-War is Tom Jolly's design, and the rights to it now rest with
<strong>Steve Jackson Games</strong>, who publish the current
edition. This project is an unofficial, non-commercial fan work,
made with love and admiration for the original — nothing here is
endorsed by or affiliated with Tom Jolly, Chessex, or Steve Jackson
Games. If this game delights you, honor it the right way: buy the
edition currently in print, and deal seven cards to somebody at a
real table.
</p>
<p class="colophon">
Wiz-War © Tom Jolly. Sixth edition published by Chessex, 1993.
Built by Eric and a very enthusiastic AI, 2026.
</p>
</div>
{:else if tab === "play"}
{#each HOW_TO_PLAY as section (section.title)}
<h3>{section.title}</h3>
{#each section.body as p, i (i)}<p>{p}</p>{/each}