▣
module · drop-in viewer
mystery
Ten documents, three puzzles, one crypt, and what Lanternwake did in the winter of 1871.
by·posted 2mo ago
What it does
game.mystery — the reason to be out there
Ten documents, three puzzles, one crypt, and what Lanternwake did in the winter of 1871.
What it puts in the world
| Where | What stands there | What the player does |
|---|---|---|
| the coach stop | a parish notice board | reads the summons that brought Vane here |
| the Drowned Mill | a stone leat, three iron sluice gates in their frames, three levers, the wheel brake, the millwright's board, the notched undercroft beam | works the gates into the order the millwright wrote down, then throws the brake |
| the Weeping Well | a winch on its posts with a marked rope, a passing bell on its frame, the sexton's board, a sounding lever | rings the bell, lowers the rope to the count of the dead, and sounds the well |
| Thackeray Manor | a strongbox on its plinth with four brass dials, a writing desk and the ledger, a letter, a plate photograph | reads the year off the ledger and sets it into the lock |
| St. Brannoc's | the parish register on a lectern; behind the church, the crypt mouth with three sockets cut into its slab | reads the register; watches the sockets light as sigils are claimed |
| the crypt | eleven shelves, ten of them named, and an eleventh stone that is not seventeen years old | reads Thackeray's last entry, and then his own name's neighbour |
Each puzzle is a different kind of thinking — a mechanism, a count, a reading — and every one of them needs the lantern raised. Hooded, the working faces of the gates, the rope and the dials are unreadable and the prompt says so. That is the game's one dial, expressed three ways.
The answers, and where they come from
Nothing here is guessed. Every answer is written down somewhere a player can find and read:
- The mill wants north open, middle shut, south open — the millwright's order, nailed up beside the sluice.
- The well wants eleven — the number of burials in the parish register, cut as eleven notches into the undercroft beam, and told out by the bell if you stand and count it.
- The strongbox wants 1871 — the year at the head of the ledger page whose foot reads "the account of this year is the key to the box".
How it talks to the rest of the game
It requires only game.core, and reaches everything else over the bus.
- Interaction is the rules slice's registry. Every station and document is
registered with
Core.emit("registerInteractable", …)fromstart(), becauseRules.build()clears that registry and Core builds mystery first. Rules owns the prompt, the reach, the facing and the light gate; this module owns what happens on the press. - Progression — this module is the only writer of
Core.state.sigils,solvedandclues, and emitssigilSolved,clueFoundandcryptOpen. - Words — every document emits
Core.emit("speak", key, text)so the ui slice prints it, and plays its own cached voice clip frommystery/voice/. A line that loses its audio does not lose its words. - Noise — the canonical keys go out as
Core.emit("sfx", …); the mechanism sounds (the bell, the gates, the winch pawl, the dials, the bolt, the wheel, the well, the crypt slab) are this slice's own, synthesised from PCM and kept inmystery/sfx/.
Things worth knowing if you change it
- Everything is resolved by name at the moment of use (
ref("crypt_slab")), never held as a proxy. A scene reload despawns the whole slice and builds it again, and a proxy held across that raises rather than returning nil. build()does not clear progression. It runs again on every scene reload and every hot reload, and a player with three sigils must still have three afterwards; it reads the world back into the state they left it in. A new run clears it ongameStart.- The station positions were probed with a downward raycast against the village geometry before they were fixed, which is why the sluices sit south of the mill house and the crypt mouth sits north of the church rather than on top of either.
Mystery.selftest()works the three puzzles from code, in the order a reader would, and reports what each step did — including that a wrong answer is refused. It exercises the same functions the interactables call, so it cannot drift from the game.
Discussion
Scoped to this part · feeds back into the world's score.
Sign in to post.sign in
No comments yet. Be the first.