Replace the 5-room demo with a condensed 14-room manor on one spine (restore power -> escape) that stacks all five mechanics, plus an optional spirit thread feeding 3 prioritized endings (no hard-fail). Pure YAML on the existing engines: 14 rooms across 3 levels, ~16 items, 5 combinations, the old_man hint NPC, restore_power + lay_to_rest quests, and 3 endings. Consolidate to one world: remove the toy "Test Manor" test fixture so the loader tests exercise the real shipped world. Adapt WorldLoaderTest and TutorialLoaderTest to form-invariants of the real world, and add WorldSolvableTest, which walks the critical path (light/lock gating + Combinations.tryUse + flags) to guarantee power_on, ghost_banished, and a victory ending are reachable — an unsolvable world now fails the build. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
200 lines
5.7 KiB
YAML
200 lines
5.7 KiB
YAML
# Haunted Manor — 14 rooms across three levels, wired over compass exits.
|
|
# Ground floor (manor-theme), cellar (cellar-drone, dark), upper floor
|
|
# (musicbox / lament). The upward stair is power-locked; everything else is open.
|
|
|
|
# ── Ground floor ──────────────────────────────────────────────────────────
|
|
|
|
- id: foyer
|
|
name: Entrance Foyer
|
|
description: |
|
|
A grand, decaying foyer. The heavy front door stands at your back; an
|
|
oil lamp waits on a side table. A wide archway opens north into the hall.
|
|
music: manor-theme.ogg
|
|
exits:
|
|
north: grand_hall
|
|
items: [front_door, lamp]
|
|
npcs: []
|
|
|
|
- id: grand_hall
|
|
name: Grand Hall
|
|
description: |
|
|
A cavernous hall, the hub of the house. Passages branch in every
|
|
direction: the foyer to the south, a dining room north, the kitchen
|
|
east, and the library west.
|
|
music: manor-theme.ogg
|
|
exits:
|
|
south: foyer
|
|
north: dining_room
|
|
east: kitchen
|
|
west: library
|
|
items: []
|
|
npcs: []
|
|
|
|
- id: kitchen
|
|
name: Old Kitchen
|
|
description: |
|
|
A dusty kitchen. Cobwebs hang from the rafters, a box of matches sits
|
|
by the stove, and a letter lies on the table. A narrow stair descends
|
|
south into darkness.
|
|
music: manor-theme.ogg
|
|
exits:
|
|
west: grand_hall
|
|
south: cellar_stairs
|
|
items: [matches, letter]
|
|
npcs: []
|
|
|
|
- id: library
|
|
name: Library
|
|
description: |
|
|
Tall shelves crammed with mouldering books. A rusty shovel leans in one
|
|
corner and a leather journal lies open on a reading stand. A stooped old
|
|
man keeps watch among the stacks.
|
|
music: manor-theme.ogg
|
|
exits:
|
|
east: grand_hall
|
|
items: [shovel, journal]
|
|
npcs: [old_man]
|
|
|
|
- id: dining_room
|
|
name: Dining Room
|
|
description: |
|
|
A long banquet table under a sheet of dust. An unlit torch rests in a
|
|
wall bracket and a faded portrait hangs above the hearth. A conservatory
|
|
lies north; a grand staircase rises to the east.
|
|
music: manor-theme.ogg
|
|
exits:
|
|
south: grand_hall
|
|
north: conservatory
|
|
east: grand_staircase
|
|
items: [torch, portrait]
|
|
npcs: []
|
|
|
|
- id: conservatory
|
|
name: Conservatory
|
|
description: |
|
|
A glass-roofed room choked with dead ferns. Rusted plumbing lines the
|
|
walls, and a heavy iron valve wheel has been left on a potting bench.
|
|
music: manor-theme.ogg
|
|
exits:
|
|
south: dining_room
|
|
items: [valve_wheel]
|
|
npcs: []
|
|
|
|
- id: grand_staircase
|
|
name: Grand Staircase
|
|
description: |
|
|
A sweeping staircase climbs into the gloom of the upper floor. The dining
|
|
room lies west. Without power, the lift gate at the top is sealed shut.
|
|
music: manor-theme.ogg
|
|
exits:
|
|
west: dining_room
|
|
north: landing
|
|
items: []
|
|
npcs: []
|
|
exitLocks:
|
|
- direction: north
|
|
requires: [{ flag: power_on }]
|
|
blocked: |
|
|
The lift gate at the head of the stairs is bolted by a dead electric
|
|
lock. Until the manor has power, the upper floor stays out of reach.
|
|
|
|
# ── Cellar (dark — needs a carried light source) ────────────────────────────
|
|
|
|
- id: cellar_stairs
|
|
name: Cellar Landing
|
|
description: |
|
|
The bottom of the kitchen stair. The air is wet and close. Passages lead
|
|
east toward the sound of standing water and west toward a cold furnace.
|
|
music: cellar-drone.ogg
|
|
dark: true
|
|
exits:
|
|
north: kitchen
|
|
east: flooded_cellar
|
|
west: boiler_room
|
|
items: []
|
|
npcs: []
|
|
|
|
- id: flooded_cellar
|
|
name: Flooded Cellar
|
|
description: |
|
|
You stand knee-deep in black, freezing water. A drainage valve juts from
|
|
the wall, its wheel long since removed.
|
|
music: cellar-drone.ogg
|
|
dark: true
|
|
exits:
|
|
west: cellar_stairs
|
|
items: [valve]
|
|
npcs: []
|
|
descriptionStates:
|
|
- when: [{ flag: cellar_drained }]
|
|
text: |
|
|
The drained basin has given up its muddy floor. The valve still
|
|
stands open against the wall, water trickling away below.
|
|
|
|
- id: boiler_room
|
|
name: Boiler Room
|
|
description: |
|
|
A cramped stone room behind the furnace. A rusty generator squats in the
|
|
corner, an empty fuse socket gaping in its housing.
|
|
music: cellar-drone.ogg
|
|
dark: true
|
|
exits:
|
|
east: cellar_stairs
|
|
items: [generator]
|
|
npcs: []
|
|
|
|
# ── Upper floor (reachable only once the power is on) ───────────────────────
|
|
|
|
- id: landing
|
|
name: Upper Landing
|
|
description: |
|
|
A railed landing above the hall, lit now by the restored lights. Doors
|
|
open north to the master bedroom, east to a study, and west to a small
|
|
chapel. The staircase falls away to the south.
|
|
music: musicbox.ogg
|
|
exits:
|
|
south: grand_staircase
|
|
north: master_bedroom
|
|
east: study
|
|
west: chapel
|
|
items: []
|
|
npcs: []
|
|
|
|
- id: master_bedroom
|
|
name: Master Bedroom
|
|
description: |
|
|
A grand four-poster bed, its drapes rotted to lace. On the nightstand,
|
|
catching the light, lies a silver locket.
|
|
music: musicbox.ogg
|
|
exits:
|
|
south: landing
|
|
items: [locket]
|
|
npcs: []
|
|
|
|
- id: study
|
|
name: Study
|
|
description: |
|
|
A cluttered writing study. Papers lie scattered across the desk, and a
|
|
framed photograph has fallen face-up among them.
|
|
music: musicbox.ogg
|
|
exits:
|
|
west: landing
|
|
items: [photograph]
|
|
npcs: []
|
|
|
|
- id: chapel
|
|
name: Manor Chapel
|
|
description: |
|
|
A tiny private chapel. A stone shrine stands at the far end beneath a
|
|
narrow window. A cold presence presses against you here.
|
|
music: lament.ogg
|
|
exits:
|
|
east: landing
|
|
items: [shrine]
|
|
npcs: []
|
|
descriptionStates:
|
|
- when: [{ flag: ghost_banished }]
|
|
text: |
|
|
A tiny private chapel. The shrine stands quiet beneath the window,
|
|
and only still moonlight remains. The cold presence is gone.
|