openthebox/content/adventures/darkfantasy/intro.lor
Samuel Bouchet c9f8a9566a Add adventure secret branches, Destiny finale, crafting system, and project docs
Integrate stats, resources, and cosmetics into adventures via conditional
branches gated by game state checks. Each of the 9 adventures now has a
secret branch that rewards exploration and encourages replay with subtle
hints on locked choices. The endgame box now triggers a Destiny adventure
that acknowledges all completed adventures and secret branches, with four
ending tiers culminating in an ultimate ending when all 9 secrets are found.

Also adds the crafting engine, CLAUDE.md and specifications.md for faster
onboarding.
2026-03-11 17:50:37 +01:00

272 lines
15 KiB
Text

// Dark Fantasy Adventure - Open The Box
// Theme: Boxes contain souls. Opening them has consequences.
character mordecai
name: Mordecai the Grim
role: Necromancer
character pierrick
name: Pierrick
role: Reluctant Hero
state
souls: 0
corruption: 0
boxesFreed: 0
alliedWithMordecai: false
resistedDarkness: false
beat Intro
The Ashen Wastes stretch before you, gray and lifeless. The sky hasn't seen a color since the Folding. #intro-wastes
They call it the Folding because that's when the world was creased, bent, and tucked into itself like cardboard. #intro-folding
pierrick: I didn't ask for this quest. I was a baker. I made bread. Bread doesn't involve cursed boxes. #pierrick-baker
pierrick: And yet here I am, in a dead land, looking for a necromancer who collects souls in boxes. #pierrick-quest
A raven lands on a nearby rock. It's carrying a small, black box in its talons. #intro-raven
The box whispers. You can't make out the words, but you feel them: cold, sad, and slightly annoyed at being carried by a bird. #intro-whispers
choice
Take the box from the raven #opt-take
souls += 1
-> TakeBox
Follow the raven #opt-follow
-> FollowRaven
Ignore the raven and keep walking #opt-ignore
corruption += 5
-> IgnoreRaven
beat TakeBox
You reach for the box. The raven drops it and flies away, cawing something that sounds like "your problem now." #take-caw
The box is cold. Not cold like ice. Cold like loneliness. Cold like a Tuesday in February. #take-cold
pierrick: There's a soul in here. I can feel it. Someone's entire existence, folded up and boxed. #pierrick-soul
pierrick: Who puts a soul in a box? What kind of person thinks "you know what this soul needs? Cardboard." #pierrick-cardboard
choice
Open the box and free the soul #opt-free-soul
boxesFreed += 1
-> FreeSoul
Keep the box closed -- it might be dangerous #opt-keep-closed
corruption += 10
-> KeepClosed
beat FreeSoul
You open the box. A wisp of pale light rises, hovering before you. #free-wisp
The soul speaks in a voice like wind through empty rooms: "Thank you. I was in there for seven years. No WiFi." #free-speaks
pierrick: Did a liberated soul just complain about WiFi? #pierrick-wifi
The soul drifts upward and vanishes. The box crumbles to dust. Something in the air feels lighter. #free-drifts
souls += 1
boxesFreed += 1
-> ThePath
beat KeepClosed
You tuck the box into your pack. The whispers grow quieter, resigned. #keep-tuck
pierrick: Sorry, box soul. I don't know what happens when I open cursed boxes in cursed lands. #pierrick-sorry
pierrick: And I'd like to keep my current number of curses at its current number, which is already too many. #pierrick-curses
corruption += 5
-> ThePath
beat FollowRaven
The raven flies north, toward the Spine of Boxes -- a mountain range that looks like stacked containers. #follow-north
pierrick: A land so cursed even the geography is box-shaped. Wonderful. Just wonderful. #pierrick-geography
You follow the bird for an hour. It leads you to a clearing filled with hundreds of small black boxes, arranged in neat rows. #follow-clearing
Each one whispers. The combined sound is like a library where every book is complaining. #follow-library
pierrick: A box graveyard. Or a box prison. I'm not sure which is worse. #pierrick-graveyard
souls += 5
-> ThePath
beat IgnoreRaven
You walk past the raven. It stares at you with judgmental bird eyes. #ignore-stare
pierrick: Don't look at me like that. I'm on a quest. I can't stop for every spooky bird with a soul box. #pierrick-spooky
The raven caws once, drops the box, and it shatters on the ground. A soul escapes upward. #ignore-shatters
pierrick: Okay, the bird freed the soul itself. I've been outperformed by a raven. Great start to the quest. #pierrick-outperformed
boxesFreed += 1
-> ThePath
beat ThePath
The path narrows as you approach the Citadel of Folds, Mordecai's fortress. #path-narrows
It's made entirely of dark, interlocking boxes. Some are stone, some are iron, some are... something else. #path-citadel
pierrick: The architecture here is aggressively cubic. Even the doors are just bigger boxes with hinges. #pierrick-architecture
A figure appears at the gate. Tall, gaunt, draped in robes that look like unfolded cardboard. #path-figure
mordecai: Ah. The reluctant hero. You're late. I expected you three chapters ago. #mordecai-late
choice
Demand Mordecai release the souls #opt-demand
-> DemandRelease
Ask Mordecai why he collects souls in boxes #opt-ask-why
-> MordecaiMotivation
Attack immediately #opt-attack
corruption += 10
-> AttackMordecai
beat DemandRelease
pierrick: Release the souls, Mordecai! They don't belong in boxes! #pierrick-release
mordecai: Don't they? Where do YOU think souls go when the body dies? They drift. They scatter. They're LOST. #mordecai-drift
mordecai: I give them a home. A container. A purpose. A BOX. #mordecai-home
mordecai: Is that evil? Or is it... organized? #mordecai-evil
pierrick: It's both. It's organizationally evil. #pierrick-both
-> MordecaiMotivation
beat AttackMordecai
You charge at Mordecai. He raises a hand. A wall of boxes materializes between you. #attack-charge
mordecai: Violence? How unoriginal. Every hero attacks first, asks questions never. #mordecai-violence
The box wall pushes you back. Gently. Like a firm but polite bouncer. #attack-pushed
mordecai: I could trap your soul in a box right now. But where's the narrative satisfaction in that? #mordecai-narrative
mordecai: Sit. Talk. Then you can decide whether to keep fighting. #mordecai-sit
corruption += 5
-> MordecaiMotivation
beat MordecaiMotivation
mordecai: Let me show you something. #mordecai-show
He leads you into the Citadel. The walls are lined with boxes, floor to ceiling. Thousands of them. #motivation-walls
mordecai: Each box contains a soul. Each soul is preserved, protected, REMEMBERED. #mordecai-preserved
mordecai: Before me, souls faded. They dissipated into nothing. No memory. No record. Just gone. #mordecai-faded
mordecai: I built boxes for them. I gave the dead a place to BE. #mordecai-place
pierrick: That's... almost noble. If you ignore the "trapping souls against their will" part. #pierrick-noble
mordecai: "Against their will." Do you ask a book if it wants to be on a shelf? #mordecai-book
choice
Side with Mordecai -- the souls are preserved #opt-side
alliedWithMordecai = true
corruption += 20
-> AllyWithMordecai
Oppose Mordecai -- the souls deserve freedom #opt-oppose
resistedDarkness = true
-> OpposeMordecai
Propose a compromise -- let the souls choose #opt-compromise
-> CompromisePath
beat AllyWithMordecai
pierrick: Maybe you're right. Maybe the boxes are better than nothing. #pierrick-maybe
mordecai: Finally! Someone who understands! #mordecai-finally
mordecai: Here, take this box. It's empty. Fill it with a soul whenever you find one wandering. #mordecai-takebox
mordecai: Think of it as... community service. For the dead. #mordecai-community
corruption += 15
souls += 3
The box is warm in your hands. But not a good warm. The warm of a fever. The warm of something wrong. #ally-warm
pierrick: I'm going to regret this, aren't I? #pierrick-regret
mordecai: Almost certainly. But that's what makes it interesting. #mordecai-certainly
-> TheVault
beat OpposeMordecai
pierrick: No. The souls should be free. Even if freedom means fading. That's their choice, not yours. #pierrick-free
mordecai: Choice? Souls don't CHOOSE. They simply ARE. Or aren't. #mordecai-choice
pierrick: Then I'll choose FOR them. And I choose open. I choose unboxed. #pierrick-unboxed
mordecai: How heroic. How predictable. How IRRITATING. #mordecai-irritating
resistedDarkness = true
Mordecai's eyes darken. The boxes on the walls begin to rattle. The souls inside feel the tension. #oppose-rattle
-> TheVault
beat CompromisePath
pierrick: What if the souls decided? Open the boxes. Let them choose to stay or go. #pierrick-decide
mordecai: Let them CHOOSE? That's-- #mordecai-choose
mordecai: Actually... hm. I never considered asking. #mordecai-asking
mordecai: In my defense, they're in boxes. It's hard to conduct surveys through cardboard. #mordecai-surveys
pierrick: Try. #pierrick-try
mordecai: Fine. But if they all leave, I'm blaming you. And I'm keeping the boxes. They're good boxes. #mordecai-blame
-> TheVault
beat TheVault
Mordecai leads you deeper, to the Soul Vault. The largest collection of boxed souls in the realm. #vault-leads
The room is vast. Boxes glow softly in the darkness -- blue, white, pale gold. Each one a life. #vault-room
pierrick: There must be thousands. #pierrick-thousands
mordecai: Twelve thousand, four hundred and seven. I'm very organized. #mordecai-organized
mordecai: They're sorted alphabetically, by era, and by cause of death. The "eaten by dragon" section is quite large. #mordecai-sorted
if alliedWithMordecai
mordecai: With your help, we'll fill the empty shelves. The dead deserve boxes. ALL of them. #mordecai-fill
A small voice from one of the boxes says: "Actually, I'd rather not." #vault-rather
mordecai: Shh. The living are talking. #mordecai-shh
if resistedDarkness
pierrick: I'm opening them. All of them. #pierrick-opening
mordecai: You'll have to get through me first. And I warn you -- I am VERY attached to my box collection. #mordecai-attached
choice
Open all the boxes at once #opt-open-all
boxesFreed += 100
-> OpenAllBoxes
Open one box and see what happens #opt-open-one
boxesFreed += 1
-> OpenOneBox
Convince Mordecai to open them together #opt-convince if corruption < 30
-> ConvinceMordecai
Press your hand to the boxes and offer your blood as a bridge|||You feel a strange warmth in your veins, as though something ancient recognizes you... #opt-blood [if hasResource("Blood", 20)]
-> BloodCommunion
beat BloodCommunion
markSecretBranch("darkfantasy_blood_communion")
You press your palm against the nearest box. Your blood sings. The box answers. #blood-press
Every box in the vault flickers -- not with light, but with voices. Twelve thousand souls, speaking at once. #blood-voices
pierrick: They're not screaming. They're... introducing themselves. #pierrick-introduce
mordecai: Impossible. I've tried to speak with them for decades. They never answered ME. #mordecai-impossible
pierrick: Maybe they didn't trust you. You're their jailer. I'm just a baker with strange blood. #pierrick-jailer
The souls whisper a consensus: half wish to stay, half wish to leave. They've voted. Through cardboard. Democracy at its most absurd. #blood-consensus
mordecai: They VOTED? Without a suggestion box? Wait -- they ARE the suggestion boxes. #mordecai-voted
boxesFreed += 50
souls += 10
-> FinalChoice
beat OpenOneBox
You pick a box at random. It's small, blue, and warm. The label reads: "Elara. Farmer. Liked cats." #one-pick
You open it. A gentle light rises. A woman's voice, soft and clear: #one-light
The soul speaks: "Oh. Oh my. How long has it been?" #soul-how
pierrick: A while. Are you okay? #pierrick-okay
The soul speaks: "I was dreaming. Of fields, and cats, and sunshine. The box kept me safe. But it also kept me still." #soul-dream
The soul speaks: "I think... I'd like to move again. If that's alright." #soul-move
mordecai: You see? She was SAFE in there. #mordecai-safe
pierrick: Safe isn't the same as free, Mordecai. #pierrick-safefree
souls += 1
-> FinalChoice
beat OpenAllBoxes
You grab boxes and open them. One after another. Light fills the vault. #all-grab
Souls rise like lanterns, hundreds of them, filling the air with whispered thank-yous and confused questions about what year it is. #all-rise
mordecai: No! My collection! My life's work! MY BOXES! #mordecai-collection
pierrick: They were never yours, Mordecai. #pierrick-never
The souls spiral upward, through the ceiling, through the Citadel, into the sky. #all-spiral
For the first time in years, the Ashen Wastes see color. Pale golds and blues streak across the gray. #all-color
mordecai: It's... actually quite pretty. I hate that it's pretty. #mordecai-pretty
boxesFreed += 100
-> FinalChoice
beat ConvinceMordecai
pierrick: Mordecai. Open them with me. Not as an enemy. As someone who cared enough to build the boxes. #pierrick-with
mordecai: I... built them because I was afraid. Of losing people. Of forgetting. #mordecai-afraid
mordecai: Every soul I boxed was a person I didn't want the world to forget. #mordecai-forget
pierrick: Then let them go. Not because you don't care. Because you do. #pierrick-letgo
mordecai: That's the most annoyingly wise thing anyone has said to me. And I've spoken to twelve thousand souls. #mordecai-annoying
Mordecai reaches for a box. His hands shake. He opens it. A light rises, and he smiles. Just barely. #convince-opens
mordecai: Fine. We open them. Together. And then I'm retiring. Maybe I'll take up pottery. Boxes are exhausting. #mordecai-retiring
boxesFreed += 50
alliedWithMordecai = true
-> FinalChoice
beat FinalChoice
The vault is quieter now. Some boxes are open. Some are still closed. The decision hangs in the air. #final-quiet
if alliedWithMordecai
mordecai: I suppose there's something to be said for empty boxes. They have... potential. #mordecai-potential
mordecai: An empty box can become anything. A full box is just... a box. #mordecai-empty
if resistedDarkness
pierrick: The darkness said "stay in the box." I said no. That feels important. #pierrick-darkness
-> Ending
beat Ending
The wind shifts. The Ashen Wastes feel different. Not healed. But healing. #ending-wind
pierrick: I came here to fight a necromancer. Instead I had a philosophical debate about boxes and souls. #pierrick-came
pierrick: This is the weirdest career change from "baker" I could have imagined. #pierrick-career
mordecai: For what it's worth, you're not a bad hero. A bit preachy. But not bad. #mordecai-worth
pierrick: And you're not a bad necromancer. A bit dramatic. But not bad. #pierrick-notbad
mordecai: I CULTIVATE the drama. It's part of the aesthetic. #mordecai-drama
if boxesFreed > 50
The sky clears further. The first sunset in years paints the world in warm colors. #ending-sunset
Souls drift across the sky like lanterns, finding their way home, or wherever souls go when the box is finally opened. #ending-souls
pierrick: Souls freed: $boxesFreed. Corruption level: $corruption. Baker skills still intact: surprisingly yes. #pierrick-stats
mordecai: Empty boxes remaining: too many. Regrets: some. Plans for pottery class: confirmed. #mordecai-stats
pierrick: Some boxes hold treasure. Some hold darkness. Some hold souls. #pierrick-some
pierrick: But every box, eventually, deserves to be opened. Even the scary ones. #pierrick-every
mordecai: Especially the scary ones. That's where the good stuff is. #mordecai-especially
-> .