Files
two-keys/content/games/kalahari-expedition.yaml
T
joshuaandClaude Opus 5.5 bbe44e84c4 V1.1.0
Add ten new games (18 in total) and the engine features they need.

Story: Dead Air, The Masquerade at Montague House, The Kalahari Expedition,
The Alchemist's Vault, Submerged: Deep Lab Nereid, The Kestrel Bank Job.
Games can now set their own hint penalty and a hard time limit, shown as a
countdown; running out ends the game with the fail ending.

Defuse: Tick Tock: Overtime. Manuals are now rulesets, so each game has its
own solver. Adds indicator lights, per-level strike limits, and the
Passwords, Morse Light and Say It Back modules.

Sync: In Sync: Deep Cuts. Adds telepathy (typed word) and ranking rounds,
and a per-round bar for the key.

Labyrinth: The Drowned Catacombs and The Mirror Maze. Adds one-way gates, a
relative (no compass) Explorer, a mirrored Navigator map, and mazes with a
lantern count other than three. Validation now rejects a maze where a gate
can leave the Explorer stuck.

Difficulty runs from 1 to 5.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 23:34:11 +02:00

423 lines
18 KiB
YAML
Raw 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: kalahari-expedition
engine: story
category: murder-mystery
title: The Kalahari Expedition
tagline: 1931. A diamond find. Two bodies in the sand. Nobody leaves until the truck comes back.
estimatedMinutes: 60
difficulty: 5
players: { min: 2, max: 2 }
theme: { primary: "#b5651d", accent: "#f4d58d", background: "#140d06", headingFont: "Playfair Display" }
rules:
hintPenaltySeconds: 240
timeLimitMinutes: 75
roles:
A:
name: The Magistrate
blurb: Sent from Upington with the post truck. You have the medical notes, the photographs, and the dead man's papers.
B:
name: The Camp Clerk
blurb: You keep the expedition's books. Rotas, inventories, maps, and every rumour around the fire.
intro: |
**The southern Kalahari, March 1931.**
Professor Edwin Marlowe's expedition has been digging for six weeks. Two weeks ago, the sponsor,
Felix Dunmore, announced a find that made headlines in London: **diamonds**, lying in the sand.
Three nights ago, Marlowe was found dead at the bottom of the excavation pit.
Last night, the camp cook, **Samuel Brink**, was found dead by the water barrels. "A snake," they say.
The post truck won't be back for days. Someone in this camp has killed twice.
☠️ *Nightmare case. One accusation. No second chances. The clock is running.*
suspects:
- id: helena
name: Dr Helena Marlowe
role: Botanist, the professor's wife
description: Calm, clinical, and inheriting everything. Acted as camp doctor.
- id: reyes
name: Captain Arthur Reyes
role: Guide and quartermaster
description: Ex-army. Ran the camp with a sergeant's eye. Smokes a pipe.
- id: dunmore
name: Mr Felix Dunmore
role: Sponsor
description: Financier. His Dunmore Kalahari Diamond Company shares have tripled since the find.
- id: bell
name: Miss Clara Bell
role: Photographer and journalist
description: Sent by a London paper. Up all night photographing the stars.
- id: kessler
name: Dr Otto Kessler
role: Geologist
description: Marlowe's old rival. Said loudly at dinner that "the find makes no geological sense."
- id: pienaar
name: Jan Pienaar
role: Driver and mechanic
description: Keeps the two trucks alive. Quiet. Noticed things.
chapters:
- id: ch1
title: Star Trails
narrative: |
Nobody saw Marlowe leave camp. But Clara Bell left her camera open to the sky all night,
and the dig site is in the corner of her photograph.
clues:
A:
- id: a1-photo
title: Clara's long-exposure photograph
type: photo
body: |
*The night sky drawn into curved white arcs around the south celestial pole.
In the bottom corner, the dig. A small orange streak shows a lantern there.
Measured against the star arcs, the lantern streak **begins 60°** into the arc and **ends 75°** in.*
- id: a1-medical
title: Dr Helena Marlowe's notes on her husband
type: report
body: |
Skull fracture, back of the head. Sand in the wound, but **no sand in the mouth or nose**.
He did not breathe after he fell. He was dead **before** he went into the pit.
B:
- id: b1-photolog
title: Clara's photo log
type: log
body: |
Plate 14 · Star trails, camera facing south.
Shutter **opened 22:00**. Closed 05:00.
*(Note to self: the sky turns **15° every hour**, so a 7-hour plate gives 105° arcs.)*
- id: b1-clara
title: Clara's statement (given privately to you)
type: transcript
body: |
"Arthur, Captain Reyes, sat with me by the camera from ten until four. We were... talking.
Please don't put that in the official report. My editor would have a fit."
lock:
id: lock-lantern
prompt: At what time did the lantern at the dig light up?
inputType: code
format: "HH:MM"
answers: ["0200", "200", "200AM"]
hints:
- The star arcs grow at a steady rate from the moment the shutter opened.
- 60° at 15° per hour is 4 hours.
- 22:00 plus 4 hours = 02:00. (It went out at 03:00.)
successText: |
**02:00.** Someone was at the dig with a lantern from 02:00 to 03:00.
Marlowe was killed then, before he was put in the pit.
keyName: Starlight Key
- id: ch2
title: Footprints
narrative: |
The wind dropped that night. Two sets of prints lead to the pit. One is Marlowe's (size 9, hobnail).
The other set leads there and back again.
clues:
A:
- id: a2-sketch
title: Police sketch of the second set of prints
type: diagram
body: |
```
Print length (heel to toe): 31.5 cm
Tread pattern: >>>> chevron
Stride: even, about 78 cm. No limp.
```
*Note: in loose sand, a print spreads about **1 cm longer** than the sole that made it.*
B:
- id: b2-boots
title: Quartermaster's boot inventory
type: table
body: |
| Person | UK size | Tread |
|-----------------|---------|-------|
| Prof. Marlowe | 9 | hobnail |
| Dr H. Marlowe | 5 | smooth |
| Capt. Reyes | 11 | chevron (army issue) |
| Mr Dunmore | 11 | chevron ("insisted on the same as the Captain's") |
| Miss Bell | 6 | smooth |
| Dr Kessler | 11 | hobnail |
| Mr Pienaar | 10 | chevron |
| Samuel Brink | 8 | smooth |
- id: b2-sizes
title: Bootmaker's size card (sole length)
type: table
body: |
| UK size | Sole length |
|---------|-------------|
| 8 | 27.5 cm |
| 9 | 28.5 cm |
| 10 | 29.5 cm |
| 11 | 30.5 cm |
| 12 | 31.5 cm |
lock:
id: lock-boot
prompt: What size boot made the second set of prints?
inputType: code
format: UK size
answers: ["11"]
hints:
- Don't read the print length straight off the size card. Sand changes it.
- The sole is about 1 cm shorter than the print, so 30.5 cm.
- 30.5 cm is a size 11.
successText: |
**Size 11, chevron tread, even stride.** Only two people in camp own that boot.
Check the inventory again. And remember who has an alibi from ten until four.
keyName: Boot Key
- id: ch3
title: The Watch Rota
narrative: |
The camp keeps a fire watch every night. Whoever was on watch at 02:00 might have seen the lantern leave.
clues:
A:
- id: a3-rule
title: Captain Reyes' standing orders
type: document
body: |
**Fire watch.** Two-hour shifts: 20:00, 22:00, 00:00, 02:00, 04:00.
Watch passes through the six watchkeepers in **alphabetical order of surname**, wrapping round.
Each night, the **first shift** starts with the **next person** after the one who started the night before.
- id: a3-samuel
title: Dr Helena Marlowe on Samuel's death
type: report
body: |
Two puncture marks on the ankle, **4 cm apart**, perfectly parallel.
A puff adder's fangs are under 1.5 cm apart. Whatever this was, it wasn't a snake.
Traces of a sedative in his coffee cup.
B:
- id: b3-roster
title: Watchkeepers and the first night
type: log
body: |
Watchkeepers: **Reyes, Bell, Dunmore, Kessler, H. Marlowe, Pienaar**
(the Professor and the cook were excused).
**Night 1:** first watch taken by Capt. Reyes (he drew the short straw).
Marlowe died on **Night 3**.
lock:
id: lock-watch
prompt: Who was on fire watch at 02:00 on the night Marlowe died?
inputType: choice
options:
- { id: helena, label: Dr Helena Marlowe }
- { id: reyes, label: Captain Arthur Reyes }
- { id: dunmore, label: Mr Felix Dunmore }
- { id: bell, label: Miss Clara Bell }
- { id: kessler, label: Dr Otto Kessler }
- { id: pienaar, label: Jan Pienaar }
answers: ["pienaar"]
hints:
- Put the six watchkeepers in alphabetical order by surname first.
- "Order: Bell, Dunmore, Kessler, Marlowe, Pienaar, Reyes. Night 1 starts with Reyes, Night 2 with Bell, Night 3 with Dunmore."
- "Night 3: Dunmore 20:00, Kessler 22:00, Marlowe 00:00, Pienaar 02:00."
successText: |
**Jan Pienaar.** He tells you:
*"Ten past two, someone walked out to the dig with a lantern. Tall, too far to see a face.
Came back around five past three and went into the **north row** of tents. Samuel was up too,
brought me coffee at half two. He said, 'I know who that is.' I told him to leave it."*
North row tents: **Dunmore, Kessler, Reyes.**
keyName: Firewatch Key
- id: ch4
title: Samuel's Note
narrative: |
In Samuel's recipe tin: a scrap of paper in his careful capitals. It's nonsense. On purpose.
clues:
A:
- id: a4-note
title: Note from Samuel's recipe tin
type: note
body: |
## RS XRMPVSI TN TSDJ XUSUS
*On the back: "Prof taught me the secret way. My word goes under the letters,
over and over. Count back by each letter of my word: A is 0, B is 1, C is 2..."*
- id: a4-alphabet
title: Alphabet strip
type: diagram
body: |
```
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
```
B:
- id: b4-samuel
title: What everyone knew about Samuel
type: note
body: |
Samuel greeted every single person, every single morning, with the same word, and painted it
on his enamel mug: **KOFFIE**. "Everything good starts with it," he'd say.
- id: b4-smokers
title: Camp stores, tobacco issued
type: table
body: |
| Person | Tobacco |
|--------------|---------|
| Capt. Reyes | Pipe tobacco, 2 tins |
| Mr Dunmore | Pipe tobacco, 3 tins (Dutch cherry) |
| Dr Kessler | None ("gave up in '29, doctor's orders") |
| Miss Bell | Cigarettes |
| Mr Pienaar | Cigarettes |
lock:
id: lock-samuel
prompt: What did Samuel's note say?
inputType: text
format: The message (5 words)
answers: ["HESMELLEDOFPIPESMOKE"]
hints:
- The key word is Samuel's word, KOFFIE, repeated under the message and skipping spaces.
- "R − K(10) = H. S − O(14) = E. X − F(5) = S."
- "The message: HE SMELLED OF PIPE SMOKE."
successText: |
**"HE SMELLED OF PIPE SMOKE."** The figure at the dig, returning to the north row, smelled of a pipe.
Samuel knew who, and two nights later he was dead.
keyName: Coffee Tin Key
- id: ch5
title: The Diamonds
narrative: |
Dr Kessler said the find "made no geological sense." Marlowe sent three stones to a gemologist
in Cape Town. The reply arrived in the post bag the day after he died. Nobody had opened it.
clues:
A:
- id: a5-gem
title: Gemologist's report
type: report
body: |
The three stones are genuine diamonds. However:
- They are **sharp-edged octahedra**. Diamonds carried by rivers into the desert sand
are always **water-worn and rounded**. These have never been near water.
- Their trace-element profile matches **reference sample K-3** in our collection exactly.
*Conclusion: these stones were not found where you say they were.*
B:
- id: b5-reference
title: Reference samples (Cape Town Gem Society)
type: table
body: |
| Sample | Source mine |
|--------|-------------|
| K-1 | Jagersfontein |
| K-2 | Koffiefontein |
| K-3 | **Kimberley**, the Big Hole |
| K-4 | Premier Mine |
- id: b5-prospectus
title: Dunmore Kalahari Diamond Co. prospectus
type: document
body: |
*"Alluvial diamonds, discovered personally by our chairman **Mr F. Dunmore** at Site 7.
Shares available now at a very favourable price."*
lock:
id: lock-mine
prompt: Where did the "Kalahari" diamonds really come from?
inputType: text
format: One word
answers: ["KIMBERLEY", "KIMBERLY", "BIGHOLE", "THEBIGHOLE", "KIMBERLEYBIGHOLE"]
hints:
- The report gives a sample code. The clerk has the codes.
- Sample K-3.
- Kimberley.
successText: |
**Kimberley.** Bought stones, scattered in the sand to look like a find.
The "discovery" was a fraud, and the man who found them personally was selling the shares.
keyName: Diamond Key
- id: ch6
title: The Unsent Telegram
narrative: |
Marlowe's last act was a telegram he never got to send. Like Samuel, he didn't trust plain words.
clues:
A:
- id: a6-telegram
title: Marlowe's draft telegram
type: letter
body: |
```
TO: SOUTH AFRICAN POLICE, UPINGTON
1.4 3.3 3.9 5.4 7.1 6.2 5.2 4.5 6.7
```
*Pencilled underneath: "Line, then word. The rules we all signed."*
B:
- id: b6-handbook
title: Expedition Handbook, Rules of Camp (page 1)
type: document
body: |
1. Every member of the expedition shall carry water at all times.
2. The camp fire is never to be left without a guard after dark.
3. Report any find to the leader before it is moved or cleaned.
4. No stone is to be called a diamond until it has been tested.
5. Samples must be salted away in sealed tins, labelled and dated.
6. The police at Upington must be informed of any death in camp.
7. Stop all digging at once if the walls of a trench show cracks.
8. A find that seems too good to be true usually is.
lock:
id: lock-telegram
prompt: What word in Marlowe's telegram explains everything?
inputType: text
format: One word
answers: ["SALTED"]
hints:
- "1.4 means line 1, word 4."
- "The telegram reads: THE FIND IS ___ STOP POLICE MUST BE INFORMED."
- Line 5, word 4 is "salted". A "salted" mine is one where someone has planted stones to fake a find.
successText: |
**"THE FIND IS SALTED. STOP. POLICE MUST BE INFORMED."**
Marlowe knew. He wrote this the night he died. Someone made sure it never left camp.
keyName: Telegraph Key
finale:
type: accusation
prompt: The post truck's dust is on the horizon. One accusation. Get every part right.
maxAttempts: 1
questions:
- id: who
label: Who killed Professor Marlowe?
options:
- { id: helena, label: Dr Helena Marlowe }
- { id: reyes, label: Captain Arthur Reyes }
- { id: dunmore, label: Mr Felix Dunmore }
- { id: bell, label: Miss Clara Bell }
- { id: kessler, label: Dr Otto Kessler }
- { id: pienaar, label: Jan Pienaar }
answer: dunmore
- id: samuel
label: What happened to Samuel?
options:
- { id: snake, label: An accidental puff adder bite }
- { id: same, label: Drugged and killed by the same killer to silence him }
- { id: other, label: Killed by a second, different killer }
- { id: illness, label: Heart failure from the heat }
answer: same
- id: how
label: How did Marlowe die?
options:
- { id: fall, label: He fell into the pit in the dark }
- { id: struck, label: Lured to the dig at 02:00, struck on the head, then put in the pit }
- { id: poison, label: Poisoned at dinner, found dead at the pit }
- { id: shot, label: Shot with the Captain's rifle }
answer: struck
- id: why
label: Why?
options:
- { id: inherit, label: To inherit his estate }
- { id: rival, label: Professional jealousy over the find }
- { id: fraud, label: Marlowe discovered the diamond find was salted and was going to the police }
- { id: affair, label: A love affair gone wrong }
answer: fraud
successEnding: |
Dunmore lights his pipe with steady hands. Dutch cherry. Samuel was right.
"Do you know what those shares are worth? Do you know what I'd have lost?"
He scattered Kimberley stones at Site 7 and "discovered" them himself. When Marlowe found out,
Dunmore asked him to the dig at two in the morning "to explain", struck him with a survey pole,
and rolled him into the pit. He wore the same boots as the Captain on purpose.
When Samuel let slip that he knew, Dunmore drugged his coffee and faked a snakebite.
**Case closed.** The post truck takes one extra passenger back to Upington. 🏜️🔑
failEnding: |
The truck leaves with the wrong person in handcuffs. Dunmore's shares hit a record high the next month.
reveal: |
**Felix Dunmore** lured Marlowe to the dig at **02:00**, **struck him and put him in the pit**,
then **drugged and killed Samuel** to silence him, all to hide that his diamond find was **salted**
with stones from Kimberley.