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>
92 lines
3.4 KiB
YAML
92 lines
3.4 KiB
YAML
id: twin-cafes
|
|
engine: twin
|
|
category: co-op
|
|
title: "Twin Rooms: The Twin Cafés"
|
|
tagline: Two cafés on opposite corners, run by identical twins who copy everything. Almost everything.
|
|
estimatedMinutes: 15
|
|
difficulty: 2
|
|
players: { min: 2, max: 2 }
|
|
theme: { primary: "#6f4e37", accent: "#e9c46a", background: "#120c08", headingFont: "Playfair Display" }
|
|
roles:
|
|
A:
|
|
name: Partner A
|
|
blurb: You're in Café Uno.
|
|
B:
|
|
name: Partner B
|
|
blurb: You're in Café Due, across the street.
|
|
intro: |
|
|
The Bianchi twins opened identical cafés on opposite corners of the same square. They copy each other's
|
|
menus, chairs, even the cat. But each twin secretly changed a few things to see if anyone would notice.
|
|
|
|
You'll notice. Describe your café square by square, then **both tap the same square** within 15 seconds to claim a difference.
|
|
Wrong claims cost 20 seconds. No coordinates on the grid this time; you'll have to describe positions yourselves.
|
|
twin:
|
|
claimWindowSeconds: 15
|
|
wrongClaimPenaltySeconds: 20
|
|
mirrorB: false
|
|
showCoordinates: false
|
|
|
|
scenes:
|
|
- id: counter
|
|
title: "The Counter"
|
|
timeSeconds: 240
|
|
keyName: Espresso Key
|
|
differences: 6
|
|
grid: # shown to A (and to B with changes applied)
|
|
- "🫖 🍰 🫖 🍪 🍩 🍰 🫖 🥪"
|
|
- "🍩 🫖 🧇 🥯 🥪 🍪 🍪 🥖"
|
|
- "🍰 🍫 🍰 ☕ ☕ 🥐 🍩 🥤"
|
|
- "🥯 🥪 🫖 🥯 🧁 🥖 🍰 🧇"
|
|
- "🥯 🥯 🫖 🥪 🍫 🥯 🥪 🍪"
|
|
- "🫖 🍩 ☕ 🍫 🍰 🧁 🥯 🥪"
|
|
changes: # SERVER ONLY: B's version differs at these cells
|
|
- { x: 6, y: 0, to: "🍶" }
|
|
- { x: 0, y: 2, to: "🧁" }
|
|
- { x: 4, y: 3, to: "🍰" }
|
|
- { x: 0, y: 4, to: "🍩" }
|
|
- { x: 4, y: 5, to: "🧁" }
|
|
- { x: 6, y: 5, to: "🍩" }
|
|
- id: terrace
|
|
title: "The Terrace"
|
|
timeSeconds: 240
|
|
keyName: Terrace Key
|
|
differences: 6
|
|
grid: # shown to A (and to B with changes applied)
|
|
- "☂ 🌞 🌼 🎨 🛵 🪑 🧑🎨 🚲"
|
|
- "🛵 🌸 🪑 🕊 🎨 🌼 🌞 ☂"
|
|
- "🛵 🌿 🪑 🌿 🛵 🌳 🐈 🌼"
|
|
- "🪑 🌳 📰 🕊 🕊 🪑 🌳 🌿"
|
|
- "📰 🐈 🚲 🧑🎨 📰 🧑🎨 🌸 ☂"
|
|
- "🌿 🌸 🧑🎨 🌳 🌳 📰 🌼 🛵"
|
|
changes: # SERVER ONLY: B's version differs at these cells
|
|
- { x: 0, y: 1, to: "🏍" }
|
|
- { x: 6, y: 1, to: "🌝" }
|
|
- { x: 6, y: 3, to: "🌲" }
|
|
- { x: 2, y: 4, to: "🛴" }
|
|
- { x: 4, y: 5, to: "🌲" }
|
|
- { x: 6, y: 5, to: "🌻" }
|
|
- id: window
|
|
title: "The Window Seat"
|
|
timeSeconds: 240
|
|
keyName: Window Key
|
|
differences: 6
|
|
grid: # shown to A (and to B with changes applied)
|
|
- "💌 🕯 💌 🍵 🧸 🧣 📚 📖"
|
|
- "🖋 🕯 🕯 🌙 🌙 💌 🧣 🧸"
|
|
- "📖 📖 🌙 🕯 🧸 🌙 🌧 📖"
|
|
- "🪟 📚 📖 📚 🪟 ⭐ 🎧 🖋"
|
|
- "🎧 🌙 🪟 🪟 🧸 🍂 🎧 🖋"
|
|
- "🧣 🍂 🎧 📚 🍂 🍂 💌 💌"
|
|
changes: # SERVER ONLY: B's version differs at these cells
|
|
- { x: 1, y: 1, to: "🪔" }
|
|
- { x: 2, y: 1, to: "🪔" }
|
|
- { x: 5, y: 1, to: "✉" }
|
|
- { x: 3, y: 3, to: "🗂" }
|
|
- { x: 1, y: 4, to: "🌛" }
|
|
- { x: 5, y: 4, to: "🍁" }
|
|
|
|
successEnding: |
|
|
Every difference found. You blink, and you're both back on the same side of the screen, looking at each other.
|
|
|
|
**Same wavelength. Same room.** 🪞🔑
|