Files
two-keys/content/games/death-at-the-braai.yaml
T
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

244 lines
9.6 KiB
YAML

id: death-at-the-braai
engine: story
category: murder-mystery
title: Death at the Braai
tagline: A Saturday braai in Pretoria. Boerewors, brandy, and one guest who never got dessert.
estimatedMinutes: 20
difficulty: 2
players: { min: 2, max: 2 }
theme: { primary: "#a23b1d", accent: "#f2a541", background: "#160b07", headingFont: "Playfair Display" }
roles:
A:
name: The Detective
blurb: Off duty, but you were invited. You have the police notes and everyone's statements.
B:
name: The Neighbour
blurb: You live next door and see everything over the wall. Photos, gossip, and the garden.
intro: |
**Waterkloof, Pretoria. Saturday, 18:20.**
Gerrit Botha throws the best braai in the street. Tonight: boerewors, lamb sosaties, and his famous
"never-fail" fire. Then, halfway through dishing up, Gerrit grabs his chest and goes down by the braai stand.
The paramedics can't save him. And the doctor says it wasn't his heart. Not on its own, anyway.
suspects:
- id: marlene
name: Marlene Botha
role: Gerrit's wife
description: Hostess. Running between the kitchen and the salads all evening.
- id: dawie
name: Dawie van Wyk
role: Neighbour on the other side
description: Three-year feud with Gerrit over a boundary wall and a jacaranda.
- id: thandi
name: Thandi Mokoena
role: Business partner
description: Co-owns Botha & Mokoena Butchery with Gerrit. Does the books.
- id: riaan
name: Riaan Botha
role: Nephew
description: Twenty-four, broke, and suspiciously keen to help with the cooking.
- id: annelie
name: Annelie Smit
role: Marlene's sister
description: Never liked Gerrit. Says so often.
chapters:
- id: ch1
title: The Fire
narrative: |
Gerrit collapsed the moment he took the meat off the grid. When exactly was that?
clues:
A:
- id: a1-marlene
title: Marlene's statement
type: transcript
body: |
"Gerrit has rules. The meat goes on the **second the coals are ready**, not a minute later.
Sosaties and wors together, **exactly 20 minutes**. He took them off and then he just... fell."
B:
- id: b1-wall
title: What you saw over the wall
type: note
body: |
- Gerrit lit the fire at **17:10**. You checked your watch because the smoke came straight into your lounge, as usual.
- Gerrit always says his coals take **45 minutes** to be ready. He's never wrong. It's annoying.
lock:
id: lock-time
prompt: What time did Gerrit collapse?
inputType: code
format: "HH:MM"
answers: ["1815", "615", "615PM"]
hints:
- Work out when the coals were ready first.
- 17:10 plus 45 minutes is 17:55. Then the meat cooked for 20 minutes.
- 17:55 + 20 = 18:15.
successText: |
**18:15.** The meat was on the fire from 17:55 to 18:15. Whatever killed Gerrit
was eaten or drunk right at the end of that.
keyName: Tongs Key
- id: ch2
title: Who Turned the Meat?
narrative: |
Gerrit never leaves his fire. Except, it turns out, once tonight.
clues:
A:
- id: a2-riaan
title: Riaan's statement
type: transcript
body: |
"Oom Gerrit ran inside for ice at about six. Someone in the **Bulls apron** took over the tongs for him.
I didn't see who, I was carrying chairs. They swapped the sosaties around a bit, that's all I saw."
- id: a2-annelie
title: Annelie's statement
type: transcript
body: |
"I was in the kitchen with Marlene making the potato salad from half five until he fell. Ask her."
B:
- id: b2-photos
title: Your phone photos (timestamped)
type: photo
body: |
- *17:48:* Gerrit in his **Springbok** shirt, poking the coals.
- *17:50:* Thandi borrowing the **Bulls apron** from the hook "so I don't ruin my white dress".
- *17:58:* Dawie glaring at the jacaranda in his **Stormers** jersey, beer in hand.
- *18:01:* Someone at the braai in the Bulls apron, back to the camera.
lock:
id: lock-apron
prompt: Who was at the braai while Gerrit fetched ice?
inputType: choice
options:
- { id: marlene, label: Marlene Botha }
- { id: dawie, label: Dawie van Wyk }
- { id: thandi, label: Thandi Mokoena }
- { id: riaan, label: Riaan Botha }
- { id: annelie, label: Annelie Smit }
answers: ["thandi"]
hints:
- Riaan saw the apron, not the face. Who was wearing that apron?
- Check who borrowed the Bulls apron at 17:50.
- Thandi.
successText: |
**Thandi** was minding the fire at 18:00, in the Bulls apron, swapping sosaties around.
keyName: Apron Key
- id: ch3
title: The Sosatie Sticks
narrative: |
The paramedic found green leaves stuck to the bottom of Gerrit's plate. The lab rushed his sosatie.
clues:
A:
- id: a3-lab
title: Lab report
type: report
body: |
Poison: **oleandrin**, a heart toxin. Found **in the meat**, soaked in from the **skewer stick**,
not in any sauce or drink. Gerrit's skewer was a fresh green stick, not bamboo.
*Only the plant itself contains oleandrin.*
B:
- id: b3-garden
title: Your garden notes
type: note
body: |
- Gerrit's hedge by the gate is **oleander**: pink flowers, long thin leaves. Everyone in Pretoria
knows you never use oleander sticks for skewers. It's an old warning.
- This afternoon, a few **oleander branches** were freshly cut, stripped of leaves.
- All the other sosaties were on **bamboo** skewers from the shop.
lock:
id: lock-plant
prompt: What were the deadly skewers cut from?
inputType: text
format: One word
answers: ["OLEANDER", "OLEANDERS", "NERIUM", "NERIUMOLEANDER"]
hints:
- The lab names the poison. The neighbour knows the garden.
- Oleandrin comes from one plant.
- Oleander, from the hedge by the gate.
successText: |
**Oleander.** Someone made one special sosatie on an oleander stick and swapped it onto
Gerrit's side of the grid while he was getting ice.
keyName: Skewer Key
- id: ch4
title: Gerrit's Note
narrative: |
On Gerrit's phone, a note to himself from this morning. Just numbers. Marlene says he did that
"so nosy people can't read my business."
clues:
A:
- id: a4-phone
title: Gerrit's phone note
type: note
body: |
## 1·21·4·9·20 · 13·15·14·4·1·25
## 20·8·5 · 20·9·12·12 · 9·19 · 19·8·15·18·20
B:
- id: b4-gossip
title: What you know about the butchery
type: note
body: |
- Gerrit told you last week: *"A=1, B=2... my old army trick. Still works."*
- Thandi does all the books for Botha & Mokoena Butchery. Gerrit "can't read a spreadsheet to save his life."
- Riaan owes Gerrit R20,000. Dawie wants the jacaranda gone. Annelie just doesn't like him.
lock:
id: lock-note
prompt: What did Gerrit's note say?
inputType: text
format: The message
answers: ["AUDITMONDAYTHETILLISSHORT"]
hints:
- Each number is a letter. A=1, B=2, and so on.
- "1-21-4-9-20 = AUDIT."
- AUDIT MONDAY. THE TILL IS SHORT.
successText: |
**"AUDIT MONDAY. THE TILL IS SHORT."** Gerrit had found money missing from the butchery,
and he'd booked an audit. Only one person kept those books.
keyName: Phone Key
finale:
type: accusation
prompt: Make your accusation before the pudding goes cold.
maxAttempts: 2
questions:
- id: who
label: Who killed Gerrit?
options:
- { id: marlene, label: Marlene Botha }
- { id: dawie, label: Dawie van Wyk }
- { id: thandi, label: Thandi Mokoena }
- { id: riaan, label: Riaan Botha }
- { id: annelie, label: Annelie Smit }
answer: thandi
- id: how
label: How?
options:
- { id: brandy, label: Poison in his brandy and Coke }
- { id: skewer, label: "A sosatie on an oleander stick, swapped onto his side while he fetched ice" }
- { id: salad, label: Poison in the potato salad }
- { id: gas, label: Fumes from a tampered gas bottle }
answer: skewer
- id: why
label: Why?
options:
- { id: wall, label: The boundary wall feud }
- { id: debt, label: "To get out of a R20,000 debt" }
- { id: till, label: To stop the audit that would expose her stealing from the butchery }
- { id: sister, label: Family resentment }
answer: till
successEnding: |
Thandi takes off the Bulls apron and folds it, very neatly.
"It was going to be paid back. All of it. He didn't have to call in auditors like I was a criminal."
She cut the oleander that afternoon, threaded one sosatie on it at home, and slipped it onto
Gerrit's side of the grid while he fetched ice.
**Case closed.** Somebody else will have to braai next Saturday. 🔥🔑
failEnding: |
The wrong person is arrested. Monday's audit never happens, and the butchery's money keeps disappearing.
reveal: |
**Thandi Mokoena** swapped a **sosatie on an oleander stick** onto Gerrit's side while he fetched ice,
to stop the **audit that would expose her stealing from the butchery**.