- id: old_man name: Old Caretaker description: A stooped old man with a grey beard, watching from among the shelves. greeting: | "Another lost soul in this house. Get the power running and tend to what waits upstairs — that is the only way out that's worth taking." # First matching line wins; otherwise the greeting is used. dialogue: - when: [{ flag: ghost_banished }] text: | "You laid the poor thing to rest. Bless you. Go now — the night is clear and the house will hold its peace." - when: [{ flag: power_on }, { notFlag: ghost_banished }] text: | "The lights are back — feel how the house has quieted? Climb the stair. In the chapel there's a shrine: give it the locket, then the photograph, in that order." - when: [{ notFlag: cellar_drained }] text: | "Cold down there, isn't it? The cellar's flooded over the fuse. Find the valve wheel — the conservatory, I think — and drain it." reactions: - onReceive: letter response: | "Ah... that letter. I wrote it, long ago, for whoever came after. So someone finally read it. Keep going — you're closer than they ever got." consumes: letter effects: - { setFlag: heard_tale } # ── The lost twins (optional escort side-quest) ────────────────────────────── # Marlon (conservatory) and Malte (boiler room) were separated in the manor. # Give each the other's marble as proof his brother lives, and he follows you; # lead both to the foyer and they escape together. See EscortEngine. - id: marlon name: Marlon description: | A frightened young man pressed into the corner, knuckles white around a blue glass marble. He has his brother's face — minus the brother. greeting: | "Please — have you seen Malte? My twin. We were exploring and the dark just... took him. I can't leave this house without him. I can't." dialogue: - when: [{ hasItem: malte_keepsake }] text: | "That red marble — that's MALTE'S! He's alive? Here, quick: give it to me so I know it's real. Then I'll follow you to him." reactions: - onReceive: malte_keepsake response: | "His marble. His actual marble. Then he's alive — and you've seen him. Lead the way. I'm right behind you, I won't lose him again." consumes: malte_keepsake effects: - { setFlag: marlon_following } - { startQuest: reunite_twins } - id: malte name: Malte description: | A shivering young man clutching a red glass marble in the furnace-dark. The image of his brother, alone. greeting: | "Who's there? Marlon? No... Please, have you seen him — my twin, Marlon? We got split up and I can't find my way back in this dark." dialogue: - when: [{ hasItem: marlon_keepsake }] text: | "A blue marble — Marlon's! You've found him! Give it here so I know it's real, then take me to him, please, before I lose my nerve." reactions: - onReceive: marlon_keepsake response: | "Marlon's marble. He's really here. Don't let go of me — wherever you're going, I'm following. Take me to my brother." consumes: marlon_keepsake effects: - { setFlag: malte_following } - { startQuest: reunite_twins }