Files
two-keys/content/games/snowbound-edelweiss.yaml
joshuaandClaude Opus 5.5 52745935ee V1.3.0
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>
2026-10-15 10:21:24 +02:00

363 lines
14 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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**.