diff --git a/packages/web/src/Board.svelte b/packages/web/src/Board.svelte
index e5f3a4a..6100ab1 100644
--- a/packages/web/src/Board.svelte
+++ b/packages/web/src/Board.svelte
@@ -126,7 +126,12 @@
.map(([key, state]) => {
const [kind, coords] = key.split(":") as [string, string];
const [x, y] = coords.split(",").map(Number) as [number, number];
- return { kind, x, y, state };
+ // A door's lock can be gone for good, jammed shut, or picked open
+ // for the turn — each earns its own look.
+ const lock = state === "door"
+ ? (view.doorStates[key] ?? (view.openDoorEdges.includes(key) ? "ajar" : null))
+ : null;
+ return { kind, x, y, state, lock };
}),
);
@@ -335,19 +340,22 @@
{#each edges as e (`${e.kind}:${e.x},${e.y}`)}
- {@const cls = e.state === "door" ? "door" : e.state === "firewall" ? "firewall" : "wall"}
+ {@const cls = e.state === "door" ? `door${e.lock ? ` ${e.lock}` : ""}` : e.state === "firewall" ? "firewall" : "wall"}
+ {@const lockTitle = e.lock === "removed" ? "lock removed — swings free"
+ : e.lock === "jammed" ? "lock jammed — sealed for good"
+ : e.lock === "ajar" ? "unlocked until end of turn" : null}
{#if e.kind === "V"}