All six rooms are now flux_local matte paintings quantized by the engine (basement, gig, alley, office, Roskilde, field), with rooms reduced to invisible sim ops: walkability, depth, water, the footlight chases, and the NO MEANS NO! spray painted OVER the brick painting. The office desk gets a real walk-behind from the priority bands. Soundtrack: tools/gen_music.py synthesizes five loop-safe mood overrides (music/*.wav) in the band's own meters — 7/4 walking bass for the basement, the 9/8 riff floored for gig and Roskilde, chromatic noir for the alley, puck-rock bounce for the office, a 5/4 drone for the field. Fixed the office east-door lane (crates pinched the exit trigger) and removed the alley's unreachable north exit. Playthrough: 60/60, won, byte-identical twice, one intentional death. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
367 lines
6.3 KiB
JSON
367 lines
6.3 KiB
JSON
{
|
|
"name": "The Basement, 1979",
|
|
"enter_text": "Wood panel, concrete, one bare bulb. John's kit crowds the rug; the 180-pound Portastudio owns the workbench. Through the wall, Mom's washer keeps better time than most drummers.",
|
|
"background": "basement",
|
|
"ops": [
|
|
{
|
|
"Rect": {
|
|
"x": 0,
|
|
"y": 0,
|
|
"w": 320,
|
|
"h": 118,
|
|
"ink": {
|
|
"color": null,
|
|
"pri": "Keep",
|
|
"ctl": {
|
|
"Set": 1
|
|
},
|
|
"hot": null
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"Rect": {
|
|
"x": 0,
|
|
"y": 118,
|
|
"w": 320,
|
|
"h": 72,
|
|
"ink": {
|
|
"color": null,
|
|
"pri": "Band",
|
|
"ctl": {
|
|
"Set": 0
|
|
},
|
|
"hot": null
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"Rect": {
|
|
"x": 0,
|
|
"y": 118,
|
|
"w": 84,
|
|
"h": 44,
|
|
"ink": {
|
|
"color": null,
|
|
"pri": "Keep",
|
|
"ctl": {
|
|
"Set": 1
|
|
},
|
|
"hot": null
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"Rect": {
|
|
"x": 240,
|
|
"y": 118,
|
|
"w": 80,
|
|
"h": 24,
|
|
"ink": {
|
|
"color": null,
|
|
"pri": "Keep",
|
|
"ctl": {
|
|
"Set": 1
|
|
},
|
|
"hot": null
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"Rect": {
|
|
"x": 244,
|
|
"y": 36,
|
|
"w": 26,
|
|
"h": 36,
|
|
"ink": {
|
|
"color": 30,
|
|
"pri": "Keep",
|
|
"ctl": {
|
|
"Set": 1
|
|
},
|
|
"hot": null
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"Rect": {
|
|
"x": 247,
|
|
"y": 40,
|
|
"w": 20,
|
|
"h": 9,
|
|
"ink": {
|
|
"color": 176,
|
|
"pri": "Keep",
|
|
"ctl": {
|
|
"Set": 1
|
|
},
|
|
"hot": null
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"Rect": {
|
|
"x": 247,
|
|
"y": 53,
|
|
"w": 20,
|
|
"h": 3,
|
|
"ink": {
|
|
"color": 19,
|
|
"pri": "Keep",
|
|
"ctl": {
|
|
"Set": 1
|
|
},
|
|
"hot": null
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"Rect": {
|
|
"x": 247,
|
|
"y": 59,
|
|
"w": 14,
|
|
"h": 3,
|
|
"ink": {
|
|
"color": 19,
|
|
"pri": "Keep",
|
|
"ctl": {
|
|
"Set": 1
|
|
},
|
|
"hot": null
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"Rect": {
|
|
"x": 247,
|
|
"y": 65,
|
|
"w": 17,
|
|
"h": 3,
|
|
"ink": {
|
|
"color": 19,
|
|
"pri": "Keep",
|
|
"ctl": {
|
|
"Set": 1
|
|
},
|
|
"hot": null
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"scale": {
|
|
"horizon_y": 100,
|
|
"min_scale": 0.72,
|
|
"full_y": 186
|
|
},
|
|
"spawn": [
|
|
180,
|
|
160
|
|
],
|
|
"exits": [
|
|
null,
|
|
1,
|
|
3,
|
|
null
|
|
],
|
|
"exit_flags": [
|
|
"",
|
|
"",
|
|
"demo_done",
|
|
""
|
|
],
|
|
"exit_blocked": [
|
|
"",
|
|
"",
|
|
"No demo, no destiny. The Portastudio is right there.",
|
|
""
|
|
],
|
|
"hotspots": [
|
|
{
|
|
"name": "gig poster",
|
|
"rect": [
|
|
242,
|
|
34,
|
|
30,
|
|
40
|
|
],
|
|
"msgs": {
|
|
"look": "D.O.A. — TONIGHT — UVic. Vancouver's finest, one ferry away. John already circled it.",
|
|
"do": "You're going. Obviously you're going. (Up the stairs, east.)"
|
|
}
|
|
},
|
|
{
|
|
"name": "washer",
|
|
"rect": [
|
|
0,
|
|
84,
|
|
84,
|
|
76
|
|
],
|
|
"msgs": {
|
|
"look": "Mom's washing machine, mid-cycle. A wet 4/4 that never rushes and never drags.",
|
|
"listen": "Chunk. Chunk. Chunk. Honestly? Tighter than most bands you've seen.",
|
|
"do": "It's Mom's. Some things are sacred."
|
|
}
|
|
},
|
|
{
|
|
"name": "window",
|
|
"rect": [
|
|
186,
|
|
34,
|
|
46,
|
|
36
|
|
],
|
|
"msgs": {
|
|
"look": "Grey Victoria daylight through glass that hasn't been washed since the Diefenbaker administration."
|
|
}
|
|
},
|
|
{
|
|
"name": "workbench",
|
|
"rect": [
|
|
116,
|
|
88,
|
|
82,
|
|
28
|
|
],
|
|
"msgs": {
|
|
"look": "The workbench holds the TEAC four-track like an altar holds a relic."
|
|
}
|
|
},
|
|
{
|
|
"name": "stairs",
|
|
"rect": [
|
|
244,
|
|
60,
|
|
76,
|
|
56
|
|
],
|
|
"msgs": {
|
|
"look": "Up to daylight, dinner, and — tonight — a ferry to a D.O.A. show."
|
|
}
|
|
}
|
|
],
|
|
"props": [
|
|
{
|
|
"name": "portastudio",
|
|
"sprite": "portastudio",
|
|
"x": 156,
|
|
"y": 101,
|
|
"synonyms": "four-track teac tascam recorder deck",
|
|
"msgs": {
|
|
"look": "The TEAC Portastudio. 180 pounds of overdubbing possibility. It wants tape and it wants a reason.",
|
|
"do": "It powers up with a hum like a small appliance dreaming big.",
|
|
"listen": "Tape hiss. The sound of potential."
|
|
}
|
|
},
|
|
{
|
|
"name": "castle box",
|
|
"sprite": "castlebox",
|
|
"x": 218,
|
|
"y": 154,
|
|
"synonyms": "box junk castle",
|
|
"msgs": {
|
|
"look": "A box of gear from Castle, the cover band you both did time in. Cables, setlists nobody needs, and — is that a fresh reel of tape?"
|
|
},
|
|
"solid": true
|
|
},
|
|
{
|
|
"name": "drum kit",
|
|
"sprite": "drumkit",
|
|
"x": 112,
|
|
"y": 150,
|
|
"synonyms": "drums kit",
|
|
"msgs": {
|
|
"look": "John's kit, tuned like a jazz kit because he IS a jazz kid. The high school band has no idea what it's incubating.",
|
|
"play": "You are a bassist. There are laws."
|
|
},
|
|
"solid": true
|
|
}
|
|
],
|
|
"npcs": [
|
|
{
|
|
"name": "John",
|
|
"sprite": "john",
|
|
"x": 152,
|
|
"y": 164,
|
|
"portrait": "john-face",
|
|
"wander": 10,
|
|
"msgs": {
|
|
"look": "Your kid brother. Eight years younger, already swings harder than drummers twice his age."
|
|
},
|
|
"dialogue": [
|
|
{
|
|
"says": "Sticks spin in his fingers. “So? Are we a band, or are we two guys who own instruments?”",
|
|
"choices": [
|
|
{
|
|
"text": "We need a sound of our own first.",
|
|
"goto": 1
|
|
},
|
|
{
|
|
"text": "Heard D.O.A. play UVic tonight.",
|
|
"goto": 2
|
|
},
|
|
{
|
|
"text": "Later, John.",
|
|
"goto": -1
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"says": "“No guitar player, eh? Fine. You be the guitar. I'll be the horn section.” He plays a bar of 9/8 like it's nothing.",
|
|
"choices": [
|
|
{
|
|
"text": "That. Exactly that.",
|
|
"goto": -1
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"says": "“Then what are we still doing in the basement? GO. Take notes. Loud ones.”",
|
|
"choices": [
|
|
{
|
|
"text": "On it.",
|
|
"goto": -1
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Mom",
|
|
"sprite": "mom",
|
|
"x": 98,
|
|
"y": 146,
|
|
"portrait": "mom-face",
|
|
"wander": 6,
|
|
"msgs": {
|
|
"look": "Mom, running the laundry room like mission control."
|
|
},
|
|
"dialogue": [
|
|
{
|
|
"says": "“Play all you like, love — the whites are done at eight.” She pauses. “The loud one in 7/4 was nice.”",
|
|
"choices": [
|
|
{
|
|
"text": "You could tell it was 7/4?",
|
|
"goto": 1
|
|
},
|
|
{
|
|
"text": "Thanks, Mom.",
|
|
"goto": -1
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"says": "“I've been listening to that washer for twenty years, Robert. I know time when I hear it.”",
|
|
"choices": [
|
|
{
|
|
"text": "...Mom might be the best musician in the house.",
|
|
"goto": -1
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"music": 1,
|
|
"script": "room0.rhai"
|
|
} |