Files
Jander_Semester2/Semesterprojekt/src/main/resources/world/rooms.yaml
Jean-Luc Makiola 41c79c3b96 feat(world): add the Lost Twins optional escort side-quest
Two separated brothers, Marlon (conservatory) and Malte (boiler room), can be
reunited as optional content. Carry each twin's marble to the other as proof
he's alive and that twin follows you; lead both to the foyer and they escape
together, granting a Brass Compass keepsake and unlocking a new top-priority
"No One Left Behind" ending. Purely optional — no main win condition depends
on it.

The new EscortEngine drives following and the foyer reunion from flags alone,
so save/load needs no format change (it reconciles follower placement on the
first tick after loading). Adds Room.removeNpc, one tick call in the game loop,
and a follower note appended by LookCommand. descriptionStates swap the twins'
home-room prose once they leave.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 10:31:25 +02:00

214 lines
6.5 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.
A frightened young man cowers among the planters, a blue marble in his fist.
music: manor-theme.ogg
exits:
south: dining_room
items: [valve_wheel, marlon_keepsake]
npcs: [marlon]
descriptionStates:
- when: [{ flag: marlon_following }]
text: |
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.
The corner where the frightened young man crouched is empty now.
- 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. A shivering young man
huddles against the cold iron, a red marble clenched in his hand.
music: cellar-drone.ogg
dark: true
exits:
east: cellar_stairs
items: [generator, malte_keepsake]
npcs: [malte]
descriptionStates:
- when: [{ flag: malte_following }]
text: |
A cramped stone room behind the furnace. A rusty generator squats in
the corner, an empty fuse socket gaping in its housing. The cold spot
by the iron where the shivering man huddled is empty now.
# ── 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.