Wiz-War sixth edition {#if net.roomId} room {net.roomId} {/if} {net.status === "connected" ? "" : "reconnecting…"}
{#if net.error} {/if} {#if !net.roomId}
Wiz-War
A game of magical combat in a stone labyrinth
or join one
{:else if !net.started}
Room {net.roomId}
Share the code. Two or four wizards enter the maze.
    {#each net.players as p (p)}
  • {p}{p === net.hostId ? " — host" : ""}
  • {/each}
{#if net.you === net.hostId} {:else}

Waiting for {net.hostId} to flip the boards…

{/if}
{:else if view}
{#if selectedDef || youMustDiscard || discardMode || discardSelection.size > 0}
{#if youMustDiscard} Hand over the limit — mark cards and discard. {:else if discardMode && discardSelection.size === 0} Mark the cards to throw away, then confirm. {/if} {#if discardSelection.size > 0} {/if} {#if discardMode || (discardSelection.size > 0 && !youMustDiscard)} {/if} {#if selectedDef} {selectedDef.name} {#if edgeSelectMode}— click a wall line{/if} {#if selectedDef.cardType === "attack" && !edgeSelectMode && !cellSelectMode} — click a target{attachedNumber ? ` (powered by a ${numberTotal})` : " (tap a number card to power it)"} {/if} {#if attachedMods.length > 0} [+ {attachedMods.map((m) => cardDef(m.cardId).name).join(", ")}] {/if} {#if selectedCard?.cardId === "boobytrap"} — place 4 tokens ({trapCells.length}/4; the first is real) {/if} {#if selectedCard && TWO_CELL_CARDS.has(selectedCard.cardId)} {tradeFrom ? "— now the second square" : "— click the first square"} {/if} {#if selectedCard?.cardId === "rotate-sector"} — click the sector {/if} {#if selectedCard?.cardId === "relocate-sector"} {pendingSectorFrom ? "— now the destination area" : "— click the sector to move"} {/if} {#if selectedCard && NAMED_CARDS.has(selectedCard.cardId)} {#if selectedCard.cardId === "deja-vu"} {:else} — then click the target {/if} {/if} {#if selectedCard?.cardId === "waterbolt"} (knockback {numberTotal - wbDamage}) {/if} {#if selectedCard?.cardId === "power-run"} {/if} {#if selectedCard && CONFIRM_CAST.has(selectedCard.cardId)} {/if} {#if selectedCard && isNumberCard(selectedCard.cardId)} {/if} {/if}
{/if}
{#if isYourTurn && onWarpToken} {/if} {#if isYourTurn} {/if}
{#each view.yourHand as card (card.instanceId)} m.instanceId === card.instanceId)} marked={discardSelection.has(card.instanceId)} displayed={view.players.find((p) => p.id === view.you)?.displayed.some((c) => c.instanceId === card.instanceId) ?? false} charges={view.wandCharges[card.instanceId] ?? null} onclick={() => selectCard(card)} /> {/each}
{/if}