feat(content): add upper floor slice
This commit is contained in:
@@ -26,3 +26,10 @@
|
||||
- [x] Feature: / brings focus to terminal
|
||||
- [x] Feature: Add "Restart" option to option menu
|
||||
- [x] Bug: gear icon is still wayyyyyyy toooo smallllll it needs to be like 4x larger at least.
|
||||
- [ ] Add a "wait" tile.
|
||||
- [ ] Add a mechanic where after the player waits 3 times or moves six times the light goes out and needs to be relit.
|
||||
- [ ] Add attack options for most encounters. Rarely this will be a good idea though.
|
||||
- [ ] Add a failure condition for attacking at the wrong time. Make the reasons for the failure condition contextual, for example, when they attack the stair sleeper they might trip on the stair and get injured.
|
||||
- [ ] If the user says "light match" or "light match" the response should be "use match with what?"
|
||||
- [ ] If the user says "use match with letter" they should burn the letter.
|
||||
- [ ] There should be a lighter in the smoking room that allows unlimited lighting.
|
||||
|
||||
@@ -16,10 +16,14 @@ describe('assembled world', () => {
|
||||
'music-room',
|
||||
'servants-passage',
|
||||
'laundry',
|
||||
'stair-up',
|
||||
'bedroom',
|
||||
'nursery',
|
||||
'attic',
|
||||
]))
|
||||
})
|
||||
|
||||
it('contains the authored opening and main-floor items', () => {
|
||||
it('contains the authored opening, main-floor, and upper-floor items', () => {
|
||||
expect(Object.keys(world.items)).toEqual(expect.arrayContaining([
|
||||
'broken-cigarette',
|
||||
'lamp',
|
||||
@@ -33,6 +37,9 @@ describe('assembled world', () => {
|
||||
'grandfather-clock',
|
||||
'dinner-place-setting',
|
||||
'covered-cage',
|
||||
'childs-drawing',
|
||||
'music-box',
|
||||
'toy-dog',
|
||||
]))
|
||||
})
|
||||
|
||||
|
||||
@@ -180,4 +180,26 @@ export const encounters: Record<string, EncounterDef> = {
|
||||
onFailed: { narration: narration('linen-shape', 'failed'), retreatTo: 'servants-passage' },
|
||||
defaultWrongVerbNarration: narration('linen-shape', 'wrong-verb'),
|
||||
},
|
||||
'stair-sleeper': {
|
||||
id: 'stair-sleeper',
|
||||
aliases: ['stair sleeper', 'sleeper', 'figure', 'person', 'body'],
|
||||
startsIn: 'stair-up',
|
||||
initialPhase: 'seated',
|
||||
phases: {
|
||||
seated: {
|
||||
description: narration('stair-sleeper', 'seated'),
|
||||
transitions: [
|
||||
{
|
||||
verb: 'wait',
|
||||
chipLabel: 'WAIT',
|
||||
narration: narration('stair-sleeper', 'wait-resolved'),
|
||||
to: 'resolved',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
onResolved: { setFlags: { hallwayShifted: true } },
|
||||
onFailed: { narration: narration('stair-sleeper', 'failed'), retreatTo: 'parlor' },
|
||||
defaultWrongVerbNarration: narration('stair-sleeper', 'wrong-verb'),
|
||||
},
|
||||
}
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
id: stair-sleeper
|
||||
startsIn: "[[stair-up]]"
|
||||
initialPhase: seated
|
||||
---
|
||||
|
||||
## seated
|
||||
Someone sits halfway up the stair with their back to you. Their head rests against the banister. One hand lies open on the runner.
|
||||
|
||||
## wait-resolved
|
||||
You do not speak.
|
||||
|
||||
After a while, the figure leans aside, not waking. The stair above is not the same stair, but it is open.
|
||||
|
||||
## wrong-verb
|
||||
The seated figure draws one breath. The sound is too small for the body that made it.
|
||||
|
||||
## failed
|
||||
The sleeper turns before you see the face. The stair folds down under your feet, and the parlor receives you again.
|
||||
@@ -0,0 +1,15 @@
|
||||
---
|
||||
id: childs-drawing
|
||||
names: ["drawing", "child's drawing", "childs drawing", "crayon drawing", "childs-drawing"]
|
||||
short: "a child's drawing"
|
||||
takeable: false
|
||||
readable: true
|
||||
initialState: {}
|
||||
---
|
||||
|
||||
A child's drawing is pinned to the wall with two black tacks. It shows a hallway with too many doors and a small square room where the house has no room to keep one.
|
||||
|
||||
## read
|
||||
Beneath the drawing, in blunt blue crayon, someone has written:
|
||||
|
||||
NOT THIS HALL
|
||||
@@ -0,0 +1,10 @@
|
||||
---
|
||||
id: music-box
|
||||
names: ["music box", "box", "nursery music box", "music-box"]
|
||||
short: "a bolted music box"
|
||||
takeable: false
|
||||
initialState:
|
||||
wound: false
|
||||
---
|
||||
|
||||
The music box is bolted to the nursery shelf. A tiny keyhole waits below a painted house with all its windows shut.
|
||||
@@ -0,0 +1,20 @@
|
||||
---
|
||||
id: toy-dog
|
||||
names: ["toy dog", "stuffed dog", "dog", "woof", "wolf", "toy-dog"]
|
||||
short: "a stuffed dog"
|
||||
takeable: true
|
||||
initialState: {}
|
||||
---
|
||||
|
||||
The toy dog is several shades darker than it used to be.
|
||||
His fur is matted down in areas and worn from years of handling.
|
||||
|
||||
A name is stitched into one paw in faded blue thread:
|
||||
|
||||
WOOF
|
||||
|
||||
Or perhaps:
|
||||
|
||||
WOLF
|
||||
|
||||
The stitching has begun to loosen.
|
||||
@@ -0,0 +1,23 @@
|
||||
---
|
||||
id: attic
|
||||
title: "[ Attic ]"
|
||||
exitN: null
|
||||
exitS: null
|
||||
exitE: null
|
||||
exitW: null
|
||||
exitU: null
|
||||
exitD: "[[bedroom]]"
|
||||
items: []
|
||||
encounter: null
|
||||
---
|
||||
|
||||
## first-visit
|
||||
The attic is lower than the roof outside promised. Trunks lean together under the beams. A piano note sounds once below you, then once above.
|
||||
|
||||
The bedroom is down.
|
||||
|
||||
## revisit
|
||||
The attic crouches under its own dust.
|
||||
|
||||
## examined
|
||||
Old sheets cover old furniture. The shapes beneath them are all too tall. In the far corner, a child's handprint has been pressed into the dust from underneath.
|
||||
@@ -0,0 +1,24 @@
|
||||
---
|
||||
id: bedroom
|
||||
title: "[ Bedroom ]"
|
||||
exitN: null
|
||||
exitS: null
|
||||
exitE: "[[nursery]]"
|
||||
exitW: null
|
||||
exitU: "[[attic]]"
|
||||
exitD: "[[stair-up]]"
|
||||
items: []
|
||||
encounter: null
|
||||
safe: true
|
||||
---
|
||||
|
||||
## first-visit
|
||||
The bedroom has been prepared for another sleeper. The counterpane is turned down on one side. The pillow holds a shallow dent.
|
||||
|
||||
A nursery opens east. A narrower stair climbs into the ceiling.
|
||||
|
||||
## revisit
|
||||
The bedroom keeps the shape of its absent sleeper.
|
||||
|
||||
## examined
|
||||
The wardrobe stands open a hand's width. A dress hangs inside, dark at the hem. On the bedside table, a dry glass has left a ring in the dust.
|
||||
@@ -0,0 +1,27 @@
|
||||
---
|
||||
id: nursery
|
||||
title: "[ Nursery ]"
|
||||
exitN: null
|
||||
exitS: null
|
||||
exitE: null
|
||||
exitW: "[[bedroom]]"
|
||||
exitU: null
|
||||
exitD: null
|
||||
items:
|
||||
- "[[childs-drawing]]"
|
||||
- "[[music-box]]"
|
||||
- "[[toy-dog]]"
|
||||
encounter: null
|
||||
safe: true
|
||||
---
|
||||
|
||||
## first-visit
|
||||
The nursery is awake. Toys have been arranged in a careful circle on the floorboards, all facing the door.
|
||||
|
||||
A music box is bolted to the shelf. A crayon drawing is pinned beside it.
|
||||
|
||||
## revisit
|
||||
The nursery keeps its circle.
|
||||
|
||||
## examined
|
||||
The small bed has not been slept in. The blanket is folded square enough to hurt the eye. The toys face you now, though none has moved.
|
||||
@@ -5,7 +5,7 @@ exitN: "[[study]]"
|
||||
exitS: null
|
||||
exitE: null
|
||||
exitW: null
|
||||
exitU: null
|
||||
exitU: "[[stair-up]]"
|
||||
exitD: "[[hallway]]"
|
||||
items:
|
||||
- "[[grandfather-clock]]"
|
||||
@@ -18,6 +18,8 @@ The parlor has been arranged for company. No chair faces another. Each one waits
|
||||
|
||||
A stopped clock stands against the north wall. A narrow study opens beyond it. The hallway is below.
|
||||
|
||||
A staircase climbs where the corner of the room should be.
|
||||
|
||||
## revisit
|
||||
The parlor waits with its empty chairs.
|
||||
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
---
|
||||
id: stair-up
|
||||
title: "[ Upper Stair ]"
|
||||
exitN: null
|
||||
exitS: null
|
||||
exitE: null
|
||||
exitW: null
|
||||
exitU: "[[bedroom]]"
|
||||
exitD: "[[parlor]]"
|
||||
items: []
|
||||
encounter: "[[stair-sleeper]]"
|
||||
---
|
||||
|
||||
## first-visit
|
||||
The stair rises from the parlor and turns before it should. The banister is polished by hands that knew the way in the dark.
|
||||
|
||||
Halfway up, someone sits with their back to you.
|
||||
|
||||
## revisit
|
||||
The upper stair waits in its narrow turn.
|
||||
|
||||
## examined
|
||||
The runner is worn thin along the center. Dust gathers at either side, untouched. The figure on the stair is still enough to be furniture, until the house settles and their head settles with it.
|
||||
Reference in New Issue
Block a user