Game pack 3: 22 new games (19-40), 40 in total. - New engines: dial (Wavelength / Mind Meld), twin (Twin Rooms / Spot the Difference, incl. mirror mode) and blueprint (Describe & Draw, incl. peeks, overlap scoring and a rotated Builder canvas) - Labyrinth: items and doors (Hedge Maze) - Defuse: manualFrom, roles swapping every level behind a Ready card, and duplicate wire modules (Tick Tock: Switch) - Generic time limits for the new engines; sync/defuse successEnding - Library: engine-label chips and filters; Noto Color Emoji font - Validation: Appendix A checks ported, with a per-game summary - Quote comma/colon-split labels in five new YAMLs (wording unchanged) - Tests for all new engines and sanitized payloads of all 22 games - Docs: CLAUDE.md, GAMES.md (pack 3 spoiler guide), How to Play Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
363 lines
14 KiB
YAML
363 lines
14 KiB
YAML
id: snowbound-edelweiss
|
||
engine: story
|
||
category: murder-mystery
|
||
title: Snowbound at the Edelweiss
|
||
tagline: Switzerland, 1965. A blizzard, a ski champion, and tracks the snow is slowly erasing.
|
||
estimatedMinutes: 40
|
||
difficulty: 4
|
||
players: { min: 2, max: 2 }
|
||
theme: { primary: "#274c77", accent: "#e7ecef", background: "#070c12", headingFont: "Playfair Display" }
|
||
rules:
|
||
hintPenaltySeconds: 180
|
||
roles:
|
||
A:
|
||
name: The Inspector
|
||
blurb: You came up on the last train before the pass closed. Statements, the doctor's notes, the evidence bag.
|
||
B:
|
||
name: The Concierge
|
||
blurb: You run the Edelweiss. Logs, charts, the switchboard, and every guest's habits.
|
||
intro: |
|
||
**Hotel Edelweiss, above Zermatt. January 1965.**
|
||
|
||
The blizzard closed the pass at nine. By dawn, a metre of snow, and **Bruno Keller**, Olympic champion and
|
||
owner of the Edelweiss, lies dead in the snow beside the old ski hut, 200 metres from the hotel.
|
||
|
||
Two sets of tracks lead to the hut: Bruno's boot prints going out, and a pair of ski tracks that go out
|
||
**and come back**. The snow has been filling them in all night.
|
||
|
||
⚠️ *Expert case: locks give you facts, not the killer. One accusation, four parts. Make it count.*
|
||
|
||
suspects:
|
||
- id: lotte
|
||
name: Lotte Keller
|
||
role: Bruno's wife
|
||
description: Ran the hotel while Bruno chased medals. Inherits everything.
|
||
- id: hans
|
||
name: Hans Brunner
|
||
role: Former rival
|
||
description: Bruno's great rival until a crash at last year's championship ended his career.
|
||
- id: ingrid
|
||
name: Dr Ingrid Falk
|
||
role: Hotel physician
|
||
description: Hands out sleeping pills like sweets. Knows everyone's secrets.
|
||
- id: pierre
|
||
name: Pierre Moreau
|
||
role: Investor
|
||
description: Wants to buy the Edelweiss and turn it into a casino. Bruno said no. Loudly.
|
||
- id: sophie
|
||
name: Sophie Weiss
|
||
role: Ski technician and instructor
|
||
description: Bruno's protégée. Prepares the racers' skis. Adored him.
|
||
|
||
chapters:
|
||
- id: ch1
|
||
title: Snow in the Tracks
|
||
narrative: |
|
||
The ski tracks are partly filled with fresh snow. Measure how much, and you know when they were made.
|
||
clues:
|
||
A:
|
||
- id: a1-measure
|
||
title: Police measurements at 06:00
|
||
type: report
|
||
body: |
|
||
| Tracks | Fresh snow lying inside them |
|
||
|--------|------------------------------|
|
||
| Bruno's boot prints (going out) | **9 cm** |
|
||
| The ski tracks (out and back) | **7 cm** |
|
||
- id: a1-body
|
||
title: Dr Falk's examination
|
||
type: report
|
||
body: |
|
||
One heavy blow to the back of the head, something long and hard. A ski pole basket was
|
||
found pressed into the snow beside him.
|
||
B:
|
||
- id: b1-barometer
|
||
title: Hotel weather log
|
||
type: log
|
||
body: |
|
||
| Time | Snowfall rate |
|
||
|------|---------------|
|
||
| 20:00 – 22:00 | 1 cm per hour |
|
||
| 22:00 – 02:00 | **3 cm per hour** (blizzard peak) |
|
||
| 02:00 – 06:00 | 0.5 cm per hour |
|
||
*Snow settles evenly in tracks and on open ground.*
|
||
lock:
|
||
id: lock-snow
|
||
prompt: At what time were the ski tracks made?
|
||
inputType: code
|
||
format: "HH:MM"
|
||
answers: ["0020", "020", "1220", "1220AM"]
|
||
hints:
|
||
- Work backwards from 06:00. How much snow fell between 02:00 and 06:00?
|
||
- 2 cm fell from 02:00 to 06:00. The ski tracks need 5 cm more, at 3 cm per hour.
|
||
- 5 cm at 3 cm/hour is 1 hour 40 minutes before 02:00, so 00:20. (Bruno walked out at 23:40.)
|
||
successText: |
|
||
**00:20.** Bruno walked out to the hut at 23:40. Someone followed him **on skis at 00:20**,
|
||
and skied back to the hotel.
|
||
keyName: Snowflake Key
|
||
|
||
- id: ch2
|
||
title: The Wax
|
||
narrative: |
|
||
Racing skis are waxed for the temperature. The lab scraped wax from the ski tracks.
|
||
clues:
|
||
A:
|
||
- id: a2-lab
|
||
title: Lab note on the wax residue
|
||
type: report
|
||
body: |
|
||
Hard racing wax. Manufacturer's rating: **−10 °C to −18 °C**.
|
||
Not a rental-ski wax. Applied fresh, within the last day.
|
||
B:
|
||
- id: b2-chart
|
||
title: Ski room wax chart
|
||
type: table
|
||
body: |
|
||
| Wax colour | Temperature range |
|
||
|------------|-------------------|
|
||
| Yellow | 0 to −2 °C |
|
||
| Red | −2 to −6 °C |
|
||
| Violet | −4 to −10 °C |
|
||
| Blue | −8 to −14 °C |
|
||
| **Green** | **−10 to −18 °C** |
|
||
| Polar | −16 to −30 °C |
|
||
- id: b2-log
|
||
title: Ski room wax log, yesterday
|
||
type: log
|
||
body: |
|
||
| Skis | Waxed by | Wax |
|
||
|------|----------|-----|
|
||
| Lotte Keller (touring) | Sophie | Blue |
|
||
| Pierre Moreau (rental) | Sophie | Red |
|
||
| Dr Falk (touring) | herself | Violet |
|
||
| Hans Brunner (racing) | Sophie | Green |
|
||
| Sophie Weiss (racing) | herself | Green |
|
||
| Bruno Keller (racing) | Sophie | Green, *but Bruno walked, not skied* |
|
||
lock:
|
||
id: lock-wax
|
||
prompt: What colour wax was in the tracks?
|
||
inputType: text
|
||
format: One colour
|
||
answers: ["GREEN"]
|
||
hints:
|
||
- Match the lab's temperature rating to the chart exactly.
|
||
- −10 °C to −18 °C.
|
||
- Green.
|
||
successText: |
|
||
**Green.** Only two pairs of skis that could have made those tracks were waxed green: **Hans's** and **Sophie's**.
|
||
keyName: Wax Key
|
||
|
||
- id: ch3
|
||
title: Signals from the Hut
|
||
narrative: |
|
||
The night porter saw a lantern at the ski hut around 00:10, and someone signalling with ski poles.
|
||
He drew what he saw.
|
||
clues:
|
||
A:
|
||
- id: a3-porter
|
||
title: The night porter's sketch, from the lobby window
|
||
type: diagram
|
||
body: |
|
||
```
|
||
Signal Pole on MY left Pole on MY right
|
||
1 Low Down
|
||
2 High Low
|
||
3 High Out
|
||
4 High Down
|
||
5 High Low
|
||
6 High Out
|
||
7 Low Low
|
||
8 High High
|
||
```
|
||
*"He was facing the hotel, waving them about like a madman. Then the lantern went out."*
|
||
B:
|
||
- id: b3-chart
|
||
title: Edelweiss Ski School pole signal chart
|
||
type: table
|
||
body: |
|
||
**Written from the SIGNALLER'S point of view** (their own left and right pole).
|
||
|
||
| Left ↓ \ Right → | Down | Low | Out | High | Up |
|
||
|------------------|------|-----|-----|------|----|
|
||
| **Down** | A | B | C | D | E |
|
||
| **Low** | F | G | H | I | J |
|
||
| **Out** | K | L | M | N | O |
|
||
| **High** | P | Q | R | S | T |
|
||
| **Up** | U | V | W | X | Y |
|
||
- id: b3-hans
|
||
title: Hans's window
|
||
type: note
|
||
body: |
|
||
Room 4, Hans Brunner's, is the only guest room that faces the ski hut.
|
||
Bruno asked you yesterday to "make sure Hans looks out of his window at midnight".
|
||
lock:
|
||
id: lock-signal
|
||
prompt: What word did Bruno signal?
|
||
inputType: text
|
||
format: One word
|
||
answers: ["BINDINGS"]
|
||
hints:
|
||
- The porter was facing Bruno. His left is Bruno's right.
|
||
- Swap each pair. Signal 1 becomes Bruno's left = Down, right = Low.
|
||
- B-I-N-D-I-N-G-S.
|
||
successText: |
|
||
**"BINDINGS."** Bruno was signalling to Hans's window. He wanted to tell Hans something
|
||
about the **bindings** that tore loose in last year's championship crash.
|
||
keyName: Pole Key
|
||
|
||
- id: ch4
|
||
title: Who Was Where
|
||
narrative: |
|
||
Two people had green-waxed skis. Where were they at 00:20?
|
||
clues:
|
||
A:
|
||
- id: a4-rooms
|
||
title: Guest register
|
||
type: table
|
||
body: |
|
||
| Room | Guest |
|
||
|------|-------|
|
||
| 1 | Bruno & Lotte Keller |
|
||
| 2 | Pierre Moreau |
|
||
| 3 | Dr Ingrid Falk |
|
||
| 4 | Hans Brunner |
|
||
| 5 | Sophie Weiss |
|
||
- id: a4-sophie
|
||
title: Sophie's statement
|
||
type: transcript
|
||
body: |
|
||
"Dr Falk gave me a sleeping pill at eleven. I took it and slept like a stone until the screaming at dawn."
|
||
- id: a4-falk
|
||
title: Dr Falk's private note
|
||
type: note
|
||
body: |
|
||
*Gave Sophie a pill at 23:00. She thanked me... then tipped it into the rubber plant when she thought I wasn't looking. Didn't say anything. Not my business.*
|
||
B:
|
||
- id: b4-switchboard
|
||
title: Switchboard log
|
||
type: log
|
||
body: |
|
||
| Time | Room | Call |
|
||
|------|------|------|
|
||
| 23:15 | 2 | Outside line, Paris. 6 min. |
|
||
| 00:05 – 00:40 | **4** | Outside line, Zürich. "A manager. Long call, lots of shouting." |
|
||
| 00:50 | 1 | Room service: hot chocolate, two cups |
|
||
- id: b4-bar
|
||
title: Barman's note
|
||
type: note
|
||
body: |
|
||
Card game in the lounge until 01:00: Madame Keller, Monsieur Moreau, Dr Falk. None of them left the table.
|
||
lock:
|
||
id: lock-where
|
||
prompt: Which green-wax skier has no alibi at 00:20?
|
||
inputType: choice
|
||
options:
|
||
- { id: hans, label: Hans Brunner }
|
||
- { id: sophie, label: Sophie Weiss }
|
||
answers: ["sophie"]
|
||
hints:
|
||
- Match the switchboard's room number to the guest register.
|
||
- Room 4 was on the phone from 00:05 to 00:40. That's Hans.
|
||
- Sophie says she was asleep, but she never took the pill.
|
||
successText: |
|
||
**Sophie.** Hans was shouting down the phone to Zürich the whole time (and missed Bruno's signal).
|
||
Sophie claims she slept, but she poured her sleeping pill into a plant.
|
||
keyName: Switchboard Key
|
||
|
||
- id: ch5
|
||
title: The Paper Strip
|
||
narrative: |
|
||
In Bruno's glove: a long, narrow strip of paper covered in letters. Bruno used to say that a message
|
||
wrapped around a ski pole is "the oldest trick in the Alps."
|
||
clues:
|
||
A:
|
||
- id: a5-strip
|
||
title: The unwound strip
|
||
type: note
|
||
body: |
|
||
## THCHWCEAICSDRNEAONSAT
|
||
*Pencil marks show it was wound tightly around something round.*
|
||
B:
|
||
- id: b5-pole
|
||
title: Bruno's ski pole grip
|
||
type: photo
|
||
body: |
|
||
*A leather grip, thin and worn. A strip of paper wound round it shows **exactly 3 letters per turn**, one under the other.*
|
||
*(Wind the letters down in columns of 3, then read across.)*
|
||
- id: b5-clipping
|
||
title: Newspaper clipping, one year ago
|
||
type: document
|
||
body: |
|
||
**BRUNNER CRASHES OUT. CAREER OVER.**
|
||
*"...his binding tore loose at 90 km/h. The skis had been prepared that morning by
|
||
his young technician, **Mlle S. Weiss**, who was inconsolable."*
|
||
lock:
|
||
id: lock-strip
|
||
prompt: What does the strip say?
|
||
inputType: text
|
||
format: The message
|
||
answers: ["THECRASHWASNOACCIDENT"]
|
||
hints:
|
||
- Write the letters into columns, 3 letters per column, top to bottom.
|
||
- Column 1 is T-H-C, column 2 is H-W-C, column 3 is E-A-I...
|
||
- Read the top row, then the middle, then the bottom. THE CRASH WAS NO ACCIDENT.
|
||
successText: |
|
||
**"THE CRASH WAS NO ACCIDENT."** Bruno knew the binding had been loosened deliberately.
|
||
The person who prepared Hans's skis that morning was Sophie Weiss.
|
||
keyName: Scytale Key
|
||
|
||
finale:
|
||
type: accusation
|
||
prompt: The snowplough is coming up the pass. One accusation, four parts.
|
||
maxAttempts: 1
|
||
questions:
|
||
- id: who
|
||
label: Who killed Bruno Keller?
|
||
options:
|
||
- { id: lotte, label: Lotte Keller }
|
||
- { id: hans, label: Hans Brunner }
|
||
- { id: ingrid, label: Dr Ingrid Falk }
|
||
- { id: pierre, label: Pierre Moreau }
|
||
- { id: sophie, label: Sophie Weiss }
|
||
answer: sophie
|
||
- id: how
|
||
label: How?
|
||
options:
|
||
- { id: skis, label: Followed him to the hut on green-waxed racing skis at 00:20 and struck him with a ski pole }
|
||
- { id: walked, label: Walked out with him at 23:40 and pushed him }
|
||
- { id: pills, label: Drugged his drink so he collapsed in the snow }
|
||
- { id: window, label: Threw something from Room 4's window }
|
||
answer: skis
|
||
- id: why
|
||
label: Why?
|
||
options:
|
||
- { id: inherit, label: To inherit the hotel }
|
||
- { id: casino, label: He refused to sell the hotel }
|
||
- { id: crash, label: He was about to reveal she had loosened Hans's binding before last year's crash }
|
||
- { id: rival, label: Revenge for ending a career }
|
||
answer: crash
|
||
- id: signal
|
||
label: Who was Bruno signalling to?
|
||
options:
|
||
- { id: hans, label: "Hans, to tell him the truth about the crash" }
|
||
- { id: lotte, label: "Lotte, to call for help" }
|
||
- { id: porter, label: "The porter, to send a doctor" }
|
||
- { id: sophie, label: "Sophie, to warn her" }
|
||
answer: hans
|
||
successEnding: |
|
||
Sophie doesn't cry. She just looks out at the hut, half buried now.
|
||
|
||
"I loosened one screw. One. I wanted Hans to lose, not to... and Bruno covered for me. For a year.
|
||
Then he said he couldn't live with it. He was going to tell Hans at midnight, and the federation in the morning."
|
||
|
||
She saw Bruno walk out at 23:40, waxed her racing skis green for the cold, and followed him at 00:20.
|
||
He was still waving his poles at Hans's dark window when she reached him.
|
||
|
||
**Case closed.** 🏔️🔑
|
||
failEnding: |
|
||
The plough arrives, the pass opens, and the wrong person goes down the mountain in handcuffs.
|
||
reveal: |
|
||
**Sophie Weiss** skied out on **green-waxed racing skis at 00:20** and struck Bruno with a ski pole, because he
|
||
was about to reveal she had **loosened Hans's binding** before last year's crash. Bruno was signalling
|
||
**"BINDINGS"** to **Hans's window**.
|