Files
two-keys/content/games/dead-air.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

341 lines
14 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: dead-air
engine: story
category: murder-mystery
title: Dead Air
tagline: A legendary DJ goes silent live on air. Four minutes of nothing. One killer in the building.
estimatedMinutes: 30
difficulty: 3
players: { min: 2, max: 2 }
theme: { primary: "#d7263d", accent: "#f9c80e", background: "#0c0a12", headingFont: "Playfair Display" }
rules:
hintPenaltySeconds: 180
roles:
A:
name: The Detective
blurb: You have the police file. Lab results, statements, staff records.
B:
name: The Night Intern
blurb: You work the graveyard shift at Night Owl FM. Logs, run sheets, cameras, gossip.
intro: |
**Night Owl FM, Johannesburg. 23:31.**
Rex Daniels has hosted the midnight show for 22 years. Tonight he promised listeners
"the biggest announcement in the history of this station, at midnight sharp."
He never made it. A song ended, and nothing came after it. Just hiss.
The producer found him slumped over the desk, his tea still warm.
Five people were in the building. **Every one of them had a reason.**
⚠️ *Harder case: the locks give you facts, not the answer. You'll have to connect them yourselves in the accusation.*
suspects:
- id: zanele
name: Zanele Dube
role: Producer
description: Runs the desk, makes Rex's tea, knows his every habit. Has been passed over for promotion three times.
- id: kyle
name: Kyle Pretorius
role: Junior DJ
description: Ambitious, loud, and openly waiting for Rex's slot.
- id: marisa
name: Marisa Venter
role: Station manager
description: Co-owns the station with Rex. Was "in meetings" all night.
- id: tumi
name: Tumi Nkosi
role: Sound engineer
description: Keeps the old place running on duct tape and prayer. Rex once got him written up.
- id: owen
name: Owen Hart
role: Superfan
description: Calls in every night. Turned up at the gate tonight with flowers for Rex.
chapters:
- id: ch1
title: Ghost Signal
narrative: |
The automation computer kept playing what it was told. The dead-air alarm caught the silence.
First question: **which song was playing when Rex went quiet for good?**
clues:
A:
- id: a1-automation
title: Automation log, tonight's queue
type: log
body: |
| # | Track | Length | Status |
|---|-----------------------------|--------|----------|
| 1 | Neon Rain | 4:12 | PLAYED |
| 2 | Highveld Heart | 3:48 | PLAYED |
| 3 | Slow Dance in a Fast Car | 5:05 | PLAYED |
| 4 | Paper Moons | 3:55 | PLAYED |
| 5 | Ghost Signal | 6:20 | PLAYED |
| 6 | Last Train Home | 4:40 | NOT PLAYED (needs manual start) |
- id: a1-security
title: Gate security log
type: log
body: |
22:30 · Owen Hart at gate with flowers. Not on guest list. Refused entry.
22:30–23:50 · Owen sits in reception with guard Sipho. "Wouldn't stop talking about Rex."
B:
- id: b1-runsheet
title: Producer's run sheet
type: document
body: |
**Midnight Show, standard format**
- Show opens **23:00:00** sharp. Rex's intro link: **2:00**.
- Rex talks for **exactly 1:30** after every song. He's never late. Ever.
- Songs play straight from automation. Rex must start each song manually.
- id: b1-alarm
title: Dead-air alarm printout
type: log
body: |
```
** DEAD AIR ALARM ** 23:31:35
Trigger: silence > 15 seconds on main output
```
lock:
id: lock-song
prompt: Which song was the last thing listeners heard?
inputType: text
format: Song title
answers: ["GHOSTSIGNAL"]
hints:
- The alarm fires 15 seconds after silence starts. Work out when the silence started, then build the show's timeline.
- Silence started at 23:31:20. Add the intro, each song, and each 1:30 talk break, starting from 23:00:00.
- Ghost Signal ran from 23:25:00 to 23:31:20, and Rex never came back to talk after it.
successText: |
**Ghost Signal**, 23:25:00 to 23:31:20. Rex's last words on air ended at 23:25:00:
*"Longest song of the night, which means it's tea time. Back in six, Joburg."*
He never started Last Train Home. Whatever happened, it happened during Ghost Signal.
keyName: Needle Key
- id: ch2
title: The Last Cup
narrative: |
The paramedics say anaphylactic shock. Rex had a severe peanut allergy and everyone knew it.
His EpiPen was not in his bag. And he'd been drinking tea all night.
clues:
A:
- id: a2-lab
title: Lab report, rushed
type: report
body: |
**Cause of death:** anaphylaxis (peanut protein, Ara h 2).
| Item tested | Peanut protein |
|---------------------------------------|----------------|
| Mug "ON AIR" (in Rex's hand) | **POSITIVE** |
| Mug "WORLD'S OKAYEST DJ" (studio sink)| negative (honey residue present) |
| Jar labelled "REX ONLY" (honey) | **POSITIVE** |
| Tea bags, kettle water, milk | negative |
- id: a2-minutes
title: Boardroom meeting minutes
type: document
body: |
**Quick staff meeting, 23:08–23:20.** Topic: Rex's "midnight announcement".
Present: Zanele Dube, Tumi Nkosi, Kyle Pretorius, Marisa Venter (chair).
*23:11 · Marisa steps out "to take a call from the lawyers". Returns 23:17.*
Nobody else left the room. (Rex on air, Owen in reception.)
B:
- id: b2-camera
title: Kitchen camera log (motion triggered)
type: log
body: |
| Time | Who | What |
|-------|---------|------|
| 22:45 | Rex | Makes himself rooibos. **Black, no honey.** |
| 22:58 | Tumi | Fills water bottle |
| 23:05 | Kyle | Instant coffee |
| 23:06 | Zanele | Makes Rex's tea in the **WORLD'S OKAYEST DJ** mug, honey from **REX ONLY** jar. Takes it to studio. |
| 23:07 | (empty) | · |
| 23:09 | · | **CAMERA OFFLINE** |
| 23:21 | · | Camera back online. Kitchen empty. |
| 23:24 | Zanele | Makes Rex's tea in the **ON AIR** mug, honey from **REX ONLY** jar. Takes it to studio. |
- id: b2-maintenance
title: Tumi's maintenance whiteboard
type: note
body: |
*Generator test TONIGHT 23:09 (booked by M. Venter this afternoon, last minute??).
Cameras + kitchen plugs drop for about 12 min. Studio is on the UPS, stays live.*
lock:
id: lock-safe-honey
prompt: What's the last time the honey was definitely safe?
inputType: code
format: "HH:MM"
answers: ["2306", "1106", "1106PM"]
hints:
- The honey jar is positive now. Was it always? Look at the first mug with honey in it.
- The OKAYEST DJ mug had honey and tested negative. When was that cup made?
- Zanele made the OKAYEST DJ cup at 23:06, and Rex drank it and was fine.
successText: |
**23:06.** The honey was clean at 23:06 and poisoned by 23:24.
The camera was on from 23:06 to 23:09 and from 23:21 to 23:24, and nobody touched the jar then.
So the honey was poisoned **while the camera was off, 23:09 to 23:21.**
keyName: Honey Key
- id: ch3
title: The Studio Door
narrative: |
Rex's EpiPen always lived in the side pocket of his bag, which sits in the studio lounge.
The lounge has a card reader. Someone went in while Rex was live in the booth.
clues:
A:
- id: a3-register
title: Staff access card register
type: table
body: |
| Staff member | Card number |
|-------------------|-------------|
| Rex Daniels | 401 |
| Zanele Dube | 409 |
| Marisa Venter | 412 |
| Kyle Pretorius | 417 |
| Tumi Nkosi | 423 |
- id: a3-kyle
title: Kyle's statement
type: transcript
body: |
"I had a one-on-one with Marisa in the boardroom at half ten. Left my card on the table.
Went back for it at ten to eleven and it was gone. I reported it to security, check the book.
Then I was stuck in that meeting from eight past till twenty past. Ask anyone."
B:
- id: b3-doorlog
title: Studio lounge door reader
type: log
body: |
```
CARD READER v2.1 · IDs IN HEX (Tumi: "don't ask")
22:45:02 ID 0x191 IN
23:12:40 ID 0x1A1 IN
23:13:55 ID 0x1A1 OUT
23:24:31 ID 0x199 IN
23:31:50 ID 0x199 IN (panic button pressed)
```
- id: b3-reception
title: Reception lost-property book
type: note
body: |
*22:52 · Kyle P. reports staff card missing. Says left in boardroom. Card NOT cancelled (system down for generator test prep).*
lock:
id: lock-card
prompt: Whose card opened the studio lounge at 23:12?
inputType: choice
options:
- { id: rex, label: Rex Daniels }
- { id: zanele, label: Zanele Dube }
- { id: marisa, label: Marisa Venter }
- { id: kyle, label: Kyle Pretorius }
- { id: tumi, label: Tumi Nkosi }
answers: ["kyle"]
hints:
- The reader shows hexadecimal. The register is in normal (decimal) numbers.
- "0x1A1 = 1×256 + 10×16 + 1."
- 0x1A1 = 417, which is Kyle's card.
successText: |
**Kyle's card.** 23:12 to 23:13, in and out in 75 seconds, just long enough to empty a bag pocket.
But Kyle reported that card stolen at 22:52... and the minutes put him in the boardroom at 23:12.
keyName: Access Key
- id: ch4
title: The Midnight Announcement
narrative: |
What was Rex going to say at midnight? His notes were in his jacket: a page of crossword-looking
letters, and a piece of card with little windows cut into it.
clues:
A:
- id: a4-grid
title: Page from Rex's notebook
type: diagram
body: |
```
G S C A L C
H C T E B I
D H W W S F
O U R B H B
T G E O E T
D U D T Y F
```
*Scrawled underneath: "Zan knows how to read these. Lay the card on top."*
B:
- id: b4-stencil
title: Cut card from Rex's jacket
type: diagram
body: |
```
■ □ ■ □ □ ■
■ ■ ■ □ ■ □
■ ■ ■ ■ □ □
□ ■ □ ■ ■ ■
■ □ □ ■ ■ ■
■ ■ □ ■ ■ ■
```
■ = solid card · □ = window cut out. Same size as a notebook page, 6 × 6 squares.
Zanele says: "His old trick. Read the windows left to right, top to bottom."
- id: b4-gossip
title: Overheard in the corridor (last week)
type: transcript
body: |
**Tumi:** "Marisa says some media group's buying us. Rex says he never signed anything."
**Zanele:** "He'd never sell. He'd sooner die on air."
lock:
id: lock-stencil
prompt: What did Rex's hidden message say?
inputType: text
format: The message (3 words)
answers: ["SALEISFORGED", "THESALEISFORGED"]
hints:
- The Detective reads out the letters that sit under each □ window.
- "Row 1 windows are columns 2, 4 and 5: S, A, L."
- S-A-L-E-I-S-F-O-R-G-E-D.
successText: |
**"SALE IS FORGED."** The station's sale contract carries Rex's signature. Rex never signed it.
At midnight, he was going to tell the whole city, live.
The only other owner who could sell the station: **Marisa Venter.**
keyName: Microphone Key
finale:
type: accusation
prompt: Four keys. Put it together. Who killed Rex Daniels?
maxAttempts: 2
questions:
- id: who
label: Who killed Rex?
options:
- { id: zanele, label: Zanele Dube }
- { id: kyle, label: Kyle Pretorius }
- { id: marisa, label: Marisa Venter }
- { id: tumi, label: Tumi Nkosi }
- { id: owen, label: Owen Hart }
answer: marisa
- id: how
label: How?
options:
- { id: tea, label: Peanut in the tea Zanele served him at 23:24 }
- { id: honey, label: Peanut oil in the REX ONLY honey during the camera outage, EpiPen taken using Kyle's stolen card }
- { id: epipen, label: Swapped his EpiPen for an empty one earlier in the day }
- { id: lozenge, label: A peanut-laced throat lozenge from a fan's flowers }
answer: honey
- id: why
label: Why?
options:
- { id: slot, label: To take over the midnight slot }
- { id: writeup, label: Revenge for a disciplinary write-up }
- { id: forged, label: Rex was about to reveal on air that she'd forged his signature to sell the station }
- { id: obsession, label: Rejected obsession }
answer: forged
successEnding: |
Marisa doesn't argue. She just looks at the "ON AIR" light, still glowing red.
She booked the generator test so the kitchen camera would drop. She took Kyle's card off
the boardroom table at 22:30. At 23:11 she "stepped out for a call", used Kyle's card to get
into the lounge at 23:12, took the EpiPen from Rex's bag, then slipped peanut oil into his honey.
Back in the meeting by 23:17. Zanele carried the poison in herself, never knowing.
**Case closed.** At midnight, Zanele reads Rex's announcement on air. 📻🔑
failEnding: |
The wrong person is arrested. The sale goes through. Night Owl FM becomes a 24-hour playlist with no DJs.
reveal: |
**Marisa Venter** poisoned the honey with **peanut oil** during the generator test she booked,
and used **Kyle's stolen card** to take Rex's **EpiPen**, because Rex was going to reveal live
that she'd **forged his signature to sell the station**.