Files
ai.interactive.fiction/data/worlds/example_world.yml

705 lines
22 KiB
YAML

title: The Mysterious Mansion
author: AI Interactive Fiction
version: 1.0.0
introduction: |
::music[crossfade, loop, lead=10](Dark Jodler.mp3)
::chapter[The Mysterious Mansion]
The last thing you remember is the letter: heavy paper, black wax, your name written in a hand you almost recognized.
It asked you to come after dusk, alone, and promised that the house would answer what the sender could not.
Now you stand beyond the wrought iron gate, with rain cooling your face and the hill rising before you.
At its crest waits the old Victorian mansion, every dark window turned toward the path as if the building has been expecting you.
The gate gives under your hand with no protest, though its ironwork is wet enough to shine black.
Gravel shifts beneath your boots as you pass between the pillars, and the garden closes behind you with the soft finality of a curtain.
Halfway up the path, you stop and listen.
The rain has thinned to a whisper, but the house answers with other sounds: timber settling, gutters ticking, and something deep inside the walls that might be machinery or breath.
For a heartbeat you think the mansion is about to speak ... but only the wind moves through the ivy.
It drags the leaves across the brickwork in slow strokes, as if wiping dust from an old name.
# Room definitions
rooms:
# Starting area
front_yard:
name: Front Yard
description: |
You follow the gravel path up the hill.
The rain softens to a drizzle, and moonlight peeks through gaps in the clouds.
Ancient oak trees frame the property, their branches swaying in the gentle breeze.
At the top of three worn stone steps, the mansion's front door waits under a sagging porch roof.
The porch boards are swollen with rain, each one bending under your weight before it remembers its shape.
A brass knocker hangs at eye level, polished bright at the edges where countless hands have touched it and left no warmth behind.
The letter in your pocket presses against your ribs.
You remember the last line now: come before the clocks learn your name.
Somewhere above you, behind a blind upper window, a pale shape passes from left to right and is gone.
You tell yourself it was a reflection, then look back at the path and find no light behind you bright enough to make one.
The house waits.
When you reach for the handle, it turns before your fingers touch it, and the door opens {{sfx:squeaky-door.ogg}} with a long, complaining squeak.
exits:
- direction: north
targetRoomId: entrance_hall
description: large wooden doors lead into the mansion
- direction: south
targetRoomId: street
description: wrought iron gates lead back to the street
objects:
- strange_letter
- garden_statue
characters: []
# Main entrance
entrance_hall:
name: Entrance Hall
description: |
Grand chandeliers hang from the high ceiling, their crystals covered in cobwebs.
A wide staircase curves up to the second floor, and paintings of stern-faced
individuals watch you from ornate frames on the walls.
The floor is polished marble, though dusty from neglect.
exits:
- direction: south
targetRoomId: front_yard
description: the main entrance doors
- direction: north
targetRoomId: grand_staircase
description: the grand staircase
- direction: east
targetRoomId: dining_room
description: an archway leads to what appears to be a dining room
- direction: west
targetRoomId: library
description: a door marked 'Library'
objects:
- dusty_key
- umbrella_stand
characters:
- butler_ghost
# Library
library:
name: Library
description: |
Bookshelves line every wall, reaching from floor to ceiling.
A reading desk sits in the center of the room, a leather-bound book
open upon it. A gentle fire crackles in the fireplace, casting
dancing shadows across the room.
exits:
- direction: east
targetRoomId: entrance_hall
description: the door back to the entrance hall
- direction: north
targetRoomId: secret_study
description: a hidden door in the bookshelf
isLocked: true
keyId: old_brass_key
objects:
- leather_book
- reading_glasses
- old_brass_key
characters: []
# Dining Room
dining_room:
name: Dining Room
description: |
A long table dominates this room, set for a dinner party that never happened.
Fine china and silverware rest atop an elegant tablecloth, now gray with dust.
A chandelier hangs above, and a sideboard against the wall holds various serving dishes.
exits:
- direction: west
targetRoomId: entrance_hall
description: the archway back to the entrance hall
- direction: north
targetRoomId: kitchen
description: a swinging door to what must be the kitchen
objects:
- silver_candlestick
- dusty_plate
characters:
- dining_ghost
# Kitchen
kitchen:
name: Kitchen
description: |
This once-busy kitchen now stands silent. Copper pots and pans hang from hooks,
and an old cast-iron stove sits cold against the wall. A large preparation table
occupies the center of the room, and a pantry door stands ajar.
exits:
- direction: south
targetRoomId: dining_room
description: the swinging door back to the dining room
- direction: east
targetRoomId: pantry
description: the pantry door
objects:
- rusty_knife
- cookbook
characters: []
# Pantry
pantry:
name: Pantry
description: |
Shelves line the walls of this small room, holding preserves in dusty jars
and sacks of long-expired ingredients. A small window provides minimal light,
and a musty smell permeates the air.
exits:
- direction: west
targetRoomId: kitchen
description: the door back to the kitchen
objects:
- dusty_jar
- strange_bottle
characters: []
# Grand Staircase
grand_staircase:
name: Grand Staircase
description: |
The staircase curves gracefully upward, its wooden railings polished to a soft glow
despite the overall neglect of the mansion. Family portraits line the walls,
following your movement with their painted eyes.
exits:
- direction: south
targetRoomId: entrance_hall
description: back down to the entrance hall
- direction: north
targetRoomId: upper_landing
description: up to the second floor
objects:
- family_portrait
characters: []
# Upper Landing
upper_landing:
name: Upper Landing
description: |
The upper landing connects several rooms on the second floor. A faded
carpet runs down the center of the hallway, and doors line both sides.
A large window at the end of the hall shows the rainy night outside.
exits:
- direction: south
targetRoomId: grand_staircase
description: down the grand staircase
- direction: east
targetRoomId: master_bedroom
description: a door marked 'Master Bedroom'
- direction: west
targetRoomId: study
description: a door marked 'Study'
objects: []
characters: []
# Master Bedroom
master_bedroom:
name: Master Bedroom
description: |
A large four-poster bed dominates this room, its once-luxurious hangings
now faded and torn. A vanity sits in the corner, its mirror clouded with age,
and a wardrobe stands against the far wall.
exits:
- direction: west
targetRoomId: upper_landing
description: the door back to the upper landing
objects:
- jewelry_box
- old_diary
characters:
- lady_ghost
# Study
study:
name: Study
description: |
This cozy room contains a large desk covered in papers, a comfortable
armchair, and a globe that seems to rotate slowly on its own. Bookshelves
line the walls, filled with volumes on various esoteric subjects.
exits:
- direction: east
targetRoomId: upper_landing
description: the door back to the upper landing
objects:
- strange_device
- important_letter
characters: []
# Secret Study (hidden room)
secret_study:
name: Secret Study
description: |
Hidden behind the library bookshelf, this small room appears to be a
private study. A desk with a locked drawer sits against one wall, and
shelves hold unusual artifacts and rare books. A single candle provides
dim illumination.
exits:
- direction: south
targetRoomId: library
description: the hidden door back to the library
objects:
- ancient_tome
- crystal_key
characters: []
# Street (exit area)
street:
name: Street
description: |
The quiet street outside the mansion is shrouded in fog. Streetlamps cast
pools of yellow light that barely penetrate the mist. The mansion's gates
loom behind you, while the way back to town lies ahead.
exits:
- direction: north
targetRoomId: front_yard
description: the mansion gates
objects: []
characters: []
# Object definitions
objects:
strange_letter:
name: Strange Letter
description: |
A weathered envelope containing an invitation to visit the mansion.
The handwriting is elegant but unfamiliar, and the letter is signed
simply with the initial "M".
traits:
- takeable
- readable
states: {}
allowedActions:
- take
- read
- examine
garden_statue:
name: Garden Statue
description: |
A weathered stone statue of a weeping angel. Its face is covered by its hands,
and detailed wings spread out from its back. Something about it makes you uneasy.
traits:
- fixed
states: {}
allowedActions:
- examine
dusty_key:
name: Dusty Key
description: |
An old iron key, covered in dust. It looks like it might fit an old door somewhere.
traits:
- takeable
- key
states: {}
allowedActions:
- take
- examine
- use
umbrella_stand:
name: Umbrella Stand
description: |
A brass stand holding several antique umbrellas, all in various states of decay.
traits:
- fixed
- container
states:
open: true
containedObjects: []
allowedActions:
- examine
leather_book:
name: Leather Book
description: |
A thick tome bound in dark leather. The pages are filled with strange symbols
and diagrams that seem to shift slightly when you're not looking directly at them.
traits:
- takeable
- readable
states: {}
allowedActions:
- take
- read
- examine
reading_glasses:
name: Reading Glasses
description: |
A pair of wire-rimmed spectacles. The lenses have a slight blue tint to them.
traits:
- takeable
- wearable
states:
worn: false
allowedActions:
- take
- wear
- examine
old_brass_key:
name: Brass Key
description: |
A small brass key with intricate engravings. It seems to be quite old but well-maintained.
traits:
- takeable
- key
states: {}
allowedActions:
- take
- examine
- use
silver_candlestick:
name: Silver Candlestick
description: |
A tarnished silver candlestick with an unlit candle. It feels heavy in your hand.
traits:
- takeable
- light_source
states:
lit: false
allowedActions:
- take
- light
- examine
dusty_plate:
name: Dusty Plate
description: |
A fine china plate covered in a layer of dust. Despite its age, the painted pattern is still vivid.
traits:
- takeable
states: {}
allowedActions:
- take
- examine
rusty_knife:
name: Rusty Knife
description: |
An old kitchen knife with a rusted blade. It's dull, but still might be useful.
traits:
- takeable
- sharp
states: {}
allowedActions:
- take
- examine
- use
cookbook:
name: Cookbook
description: |
A yellowed cookbook filled with strange recipes. Some ingredients are unusual, and
the instructions sometimes reference phases of the moon or specific star alignments.
traits:
- takeable
- readable
states: {}
allowedActions:
- take
- read
- examine
dusty_jar:
name: Dusty Jar
description: |
A glass jar containing what might once have been fruit preserves, now unidentifiable.
Best not to open it.
traits:
- takeable
- container
states:
open: false
allowedActions:
- take
- examine
strange_bottle:
name: Strange Bottle
description: |
A small bottle containing a glowing blue liquid. The label is written in a language you don't recognize.
traits:
- takeable
- drinkable
states: {}
allowedActions:
- take
- drink
- examine
family_portrait:
name: Family Portrait
description: |
A large painting of a stern-looking family - a husband, wife, and three children.
The father's eyes seem to follow you, and there's something oddly familiar about his face.
traits:
- fixed
states: {}
allowedActions:
- examine
jewelry_box:
name: Jewelry Box
description: |
An ornate wooden box inlaid with mother-of-pearl. Inside are several pieces of
antique jewelry, including a ruby necklace that catches the light strangely.
traits:
- takeable
- container
states:
open: true
containedObjects:
- ruby_necklace
allowedActions:
- take
- open
- close
- examine
ruby_necklace:
name: Ruby Necklace
description: |
A delicate gold chain with a large ruby pendant. The gem seems to glow with an inner light,
and it feels warm to the touch.
traits:
- takeable
- wearable
states:
worn: false
allowedActions:
- take
- wear
- examine
old_diary:
name: Old Diary
description: |
A leather-bound diary with yellowed pages. The entries detail the daily life of
the mansion's former mistress, and hint at a growing fear of something in the house.
traits:
- takeable
- readable
states: {}
allowedActions:
- take
- read
- examine
strange_device:
name: Strange Device
description: |
A brass contraption with gears, dials, and a glass dome. It's purpose isn't clear,
but it occasionally ticks and whirs on its own.
traits:
- takeable
states:
active: false
allowedActions:
- take
- use
- examine
important_letter:
name: Important Letter
description: |
A sealed envelope addressed to "The Heir." The wax seal bears the same crest
that you've seen throughout the mansion.
traits:
- takeable
- readable
states: {}
allowedActions:
- take
- read
- examine
ancient_tome:
name: Ancient Tome
description: |
A massive book bound in what appears to be human skin. The title, "Liber Umbrarum,"
is embossed in gold on the spine. The pages contain rituals and incantations.
traits:
- takeable
- readable
states: {}
allowedActions:
- take
- read
- examine
crystal_key:
name: Crystal Key
description: |
A key made of clear crystal that catches the light in mesmerizing ways. Despite
its appearance, it feels as solid as metal and cool to the touch.
traits:
- takeable
- key
states: {}
allowedActions:
- take
- use
- examine
# Character definitions
characters:
butler_ghost:
name: Ghostly Butler
description: |
The translucent figure of an elderly butler, dressed in formal attire from a bygone era.
He stands with perfect posture, hands clasped behind his back.
dialogue:
greeting: "Welcome to the mansion, sir/madam. We've been expecting you."
mansion: "This estate has belonged to the Montgomery family for generations. Such a shame what happened to them."
family: "The Montgomerys? All gone now, I'm afraid. The master, his wife, and their children. A tragedy."
tragedy: "I'm not at liberty to discuss the details, but the answers you seek may be found in the study."
yourself: "Me? I've served this house for longer than I care to remember. Even death couldn't release me from my duties."
defaultResponse: "I'm afraid I cannot help you with that particular inquiry."
inventory: []
mood: formal
dining_ghost:
name: Dining Guest
description: |
A spectral figure in elegant dinner attire, seated at the table. She appears to be
a young woman, and she plays absently with a spectral fork.
dialogue:
greeting: "Oh, a new guest! How delightful. Will you join us for dinner? It's been so long since we had fresh company."
dinner: "We've been waiting for the main course for... goodness, how long has it been now? Years, I suppose."
herself: "My name? It's... it's strange, I can't quite recall. I remember coming here for a dinner party, but then..."
party: "It was supposed to be a celebration. The master of the house had made some sort of discovery. Something important."
discovery: "In the secret study, I believe. Behind the library. The master was very excited about it."
defaultResponse: "I'm sorry, my mind isn't what it used to be. The years blur together when you're like this."
inventory: []
mood: wistful
lady_ghost:
name: Ghostly Lady
description: |
The elegant apparition of a woman in Victorian dress, her face partly obscured by a veil.
She sits at the vanity, brushing her long hair with a ghostly brush.
dialogue:
greeting: "A visitor? How unusual. Are you lost, or are you here for a purpose?"
purpose: "Everyone who comes to this house has a purpose, whether they know it or not."
herself: "I was the lady of this house once. Now I am bound to it, as are we all."
family: "My husband was obsessed with his research. My children... I tried to protect them. I failed."
research: "The barriers between worlds, the nature of reality itself. He found something, in the end. Something that should have remained hidden."
hidden: "In his secret study. The key is... well, I suppose you'll have to find that yourself. Some secrets reveal themselves only to those who seek them."
defaultResponse: "There are some things I cannot speak of. The house has its rules, even for the dead."
inventory: []
mood: melancholy
# Action definitions
actions:
look:
patterns:
- "look around"
- "look at [object]"
- "examine [object]"
- "check [object]"
- "inspect [object]"
- "observe [object]"
- "view [object]"
handler: "look"
go:
patterns:
- "go [direction]"
- "move [direction]"
- "walk [direction]"
- "head [direction]"
- "travel [direction]"
- "enter [direction]"
requiresObject: true
handler: "go"
take:
patterns:
- "take [object]"
- "get [object]"
- "pick up [object]"
- "grab [object]"
- "collect [object]"
requiresObject: true
handler: "take"
drop:
patterns:
- "drop [object]"
- "put down [object]"
- "discard [object]"
- "leave [object]"
requiresObject: true
handler: "drop"
inventory:
patterns:
- "inventory"
- "check inventory"
- "show inventory"
- "what am I carrying"
- "what do I have"
handler: "inventory"
use:
patterns:
- "use [object]"
- "use [object] on [target]"
- "use [object] with [target]"
- "apply [object] to [target]"
requiresObject: true
requiresTarget: false
handler: "use"
talk:
patterns:
- "talk to [object]"
- "speak to [object]"
- "ask [object] about [topic]"
- "tell [object] about [topic]"
- "converse with [object]"
requiresObject: true
handler: "talk"
read:
patterns:
- "read [object]"
- "read from [object]"
- "examine [object]"
- "look at [object]"
requiresObject: true
handler: "look"
help:
patterns:
- "help"
- "commands"
- "what can I do"
- "show help"
handler: "help"
wear:
patterns:
- "wear [object]"
- "put on [object]"
- "don [object]"
requiresObject: true
handler: "use"
# Initial game state
initialState:
currentRoomId: front_yard
inventory:
- strange_letter
visitedRooms: []
flags:
hasMetButler: false
hasFoundSecret: false
counters:
moveCount: 0