openthebox/content/adventures/medieval/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

252 lines
12 KiB
Text

// Medieval Adventure - Open The Box
// Theme: A kingdom where everything is suspiciously box-shaped
character knight
name: Sir Boxalot
role: Knight of the Square Table
character wizard
name: Malkith
role: Dark Wizard of the Cubic Order
state
honor: 50
boxesOpened: 0
savedPrincess: false
dragonFriendly: false
beat Intro
You stand before Castle Cardboard, its square towers rising into the overcast sky. #intro-castle
Everything here is box-shaped. The drawbridge is a flattened box. The moat is a long, wet box. #intro-everything
knight: Halt! Who goes there? I am Sir Boxalot, Knight of the Square Table! #knight-halt
knight: State your business, or I shall smite thee with my box-shaped sword! #knight-smite
You notice his sword is, indeed, a rectangular prism. Not very sharp. #intro-sword
choice
Declare yourself a hero #opt-hero
honor += 10
-> HeroIntro
Declare yourself a box inspector #opt-inspector
-> InspectorIntro
Ask why everything is box-shaped #opt-why
-> WhyBoxes
beat WhyBoxes
knight: Why is everything box-shaped? Why is the SKY blue? Why do birds sing? #knight-why
knight: Some questions have no answers. Others have box-shaped answers. #knight-answers
knight: The real question is: can you open the Box of Destiny? #knight-destiny
You feel like this is the kind of game that asks you rhetorical questions and then gives you exactly one path forward. #why-meta
-> HeroIntro
beat HeroIntro
knight: A hero! Wonderful! We haven't had one of those since Sir Unboxington fell into the Box Pit. #knight-hero
knight: The kingdom is in peril! The dark wizard Malkith has captured Princess Rectangula! #knight-peril
knight: She's being held in the Tall Tower, which is basically just a really tall box. #knight-tower
choice
Vow to rescue the princess #opt-rescue
honor += 10
-> QuestBegins
Ask what the princess looks like #opt-princess-look
-> PrincessDescription
Suggest they just tip the tower over #opt-tip
-> TipTower
beat InspectorIntro
knight: A box inspector?! By the Square Gods, we've been expecting you! #knight-inspector
knight: The kingdom's boxes have been malfunctioning. Some open from the wrong side. #knight-malfunction
knight: One box started opening OTHER boxes. It was chaos. Beautiful, beautiful chaos. #knight-chaos
honor += 5
-> QuestBegins
beat PrincessDescription
knight: The princess? She's... well... she's a box. #knight-princess
knight: A very PRETTY box. With a tiara taped to the top. #knight-pretty
knight: Don't judge. Love is love, and boxes are boxes. #knight-love
You decide not to question the romantic standards of this kingdom. #princess-standards
-> QuestBegins
beat TipTower
knight: Tip the-- that's the most brilliant and idiotic thing I've ever heard! #knight-tip
knight: We can't tip the tower. It's load-bearing. The entire castle is just boxes stacked on boxes. #knight-loadbearing
knight: Tip one and the whole kingdom collapses like a house of... boxes. #knight-collapse
-> QuestBegins
beat QuestBegins
You set off toward the Tall Tower with Sir Boxalot. #quest-setoff
The path leads through the Forest of Flat-Pack, where the trees are unassembled boxes with confusing instructions. #quest-forest
knight: Stay close. These woods are full of bandits and IKEA references. #knight-ikea
A rustling sound comes from behind a bush-shaped box. #quest-rustling
choice
Draw your weapon #opt-draw
-> Ambush
Hide inside a nearby box #opt-hide
-> HideInBox
Yell "I know you're there!" #opt-yell
-> YellAtBush
beat HideInBox
You climb inside a conveniently person-sized box and close the flaps above you. #hide-climb
knight: Brilliant strategy! If you can't see the enemy, the enemy can't see you! #knight-strategy
knight: That's not how that works but I admire the commitment. #knight-commitment
From inside the box, you hear the bandit trip over a root and knock himself out. #hide-bandit
boxesOpened += 1
You emerge victorious, technically. #hide-victory
-> DragonApproach
beat Ambush
A bandit leaps out! He's wearing a box as armor. It's not very effective. #ambush-leap
knight: Have at thee, villain! #knight-haveatthee
Sir Boxalot swings his box-sword. It makes a cardboard "thwap" sound. #ambush-thwap
The bandit looks confused, then disappointed, then falls over out of politeness. #ambush-falls
boxesOpened += 1
-> DragonApproach
beat YellAtBush
You yell into the forest. Your voice echoes off the box-trees. #yell-echo
A small rabbit hops out. It's wearing a tiny box as a shell. A box turtle, if you will. #yell-rabbit
knight: False alarm. Just a box bunny. They're everywhere this time of year. #knight-bunny
knight: Breeding season. They multiply like... well, like boxes in this game. #knight-breeding
-> DragonApproach
beat DragonApproach
You reach the Tall Tower. A dragon circles overhead. #dragon-tower
knight: That's Scorchtangle, the Box Dragon! He hoards boxes instead of gold! #knight-dragon
The dragon lands before you. He's... also somewhat box-shaped. You're sensing a pattern. #dragon-lands
knight: His weakness is that he can't resist opening boxes. It's like catnip for dragons. #knight-weakness
choice
Offer the dragon a box to open #opt-offer-box
dragonFriendly = true
-> DragonFriendly
Fight the dragon #opt-fight-dragon
-> DragonFight
Try to sneak past while the dragon is distracted #opt-sneak
-> SneakPast
Flash your most dazzling smile at the dragon|||Something about your magnetic personality might work here... #opt-charm [if hasStat("Charisma", 10)]
-> DragonCharmer
beat DragonCharmer
markSecretBranch("medieval_dragon_charmer")
You step forward, lock eyes with Scorchtangle, and deliver the most radiant smile in the kingdom's history. #charm-smile
The dragon blinks. Then blushes. Can dragons blush? This one can. His scales turn a gentle pink. #charm-blush
knight: By the Square Gods... the dragon is SWOONING. I've never seen a box-dragon swoon before. #knight-swoon
Scorchtangle rolls over like a puppy and presents his belly, which is covered in tiny box-shaped scales. #charm-belly
knight: You've charmed a dragon with nothing but raw charisma. That's either very brave or very weird. #knight-brave
dragonFriendly = true
-> DragonFriendly
beat DragonFight
You charge at Scorchtangle with your definitely-not-adequate weapon. #fight-charge
The dragon yawns and a small flame singes your eyebrows. #fight-singe
knight: Perhaps a more... diplomatic approach? #knight-diplomatic
knight: I once saw a hero try to fight him. He got boxed. Literally. Put in a box. #knight-boxed
The dragon looks at you expectantly, as if waiting for you to do something smarter. #fight-expectant
-> DragonFriendly
beat SneakPast
You tiptoe past the dragon. Your sneaking skills are impeccable. #sneak-tiptoe
Unfortunately, you step on a bubble wrap moat. The popping is deafening. #sneak-bubble
The dragon looks at you with what can only be described as secondhand embarrassment. #sneak-embarrassment
knight: Bubble wrap. The natural enemy of stealth. #knight-bubble
-> DragonFriendly
beat DragonFriendly
You pull out a beautifully wrapped box from your inventory. #friendly-box
You don't remember putting it there, but this is a game, so inventory logic doesn't apply. #friendly-inventory
The dragon's eyes widen. He opens the box with surprisingly delicate claws. #friendly-opens
Inside: a smaller box. The dragon is DELIGHTED. #friendly-smaller
boxesOpened += 1
He opens the smaller box. Inside: an even smaller box. He's in heaven. #friendly-heaven
The dragon steps aside, too busy with his recursive box gift to guard anything. #friendly-aside
choice
Enter the tower #opt-enter-tower
-> TowerClimb
Pet the dragon first #opt-pet-dragon
dragonFriendly = true
The dragon purrs. It sounds like cardboard being rubbed together. #pet-purr
-> TowerClimb
beat TowerClimb
You climb the tower stairs. Each step is a small box. It's like climbing a staircase of shoeboxes. #climb-stairs
At the top, you find Malkith standing before a large ornate box. #climb-malkith
wizard: Ah, the hero arrives! You're late. I've been monologuing to myself for twenty minutes. #wizard-late
wizard: Behold! The Box of Destiny! Within it lies Princess Rectangula! #wizard-behold
wizard: And with her, the power to fold reality itself into a BOX! #wizard-power
choice
Challenge Malkith to a duel #opt-duel
-> WizardDuel
Ask Malkith why he wants box-folding power #opt-ask-why
-> WizardMotivation
Just open the Box of Destiny while he's talking #opt-just-open if boxesOpened > 0
-> JustOpenIt
beat WizardMotivation
wizard: Why? WHY?! Have you seen this kingdom? Everything is already a box! #wizard-whykingdom
wizard: But they're DISORGANIZED boxes! Boxes within boxes with no structure! #wizard-disorganized
wizard: I want to SORT them. By size. By color. By emotional significance. #wizard-sort
wizard: I'm not evil. I'm a box organizer. The kingdom just doesn't appreciate good filing. #wizard-filing
knight: That... actually sounds reasonable? #knight-reasonable
wizard: THANK you. #wizard-thanks
choice
Help Malkith organize the boxes #opt-help-organize
-> HelpMalkith
Insist on freeing the princess first #opt-free-first
-> WizardDuel
beat HelpMalkith
You spend the next three hours sorting boxes with Malkith. #help-sorting
wizard: Small boxes go LEFT. Medium boxes go RIGHT. Large boxes go in the LARGE BOX. #wizard-instructions
knight: This is surprisingly therapeutic. #knight-therapeutic
wizard: Right? I keep telling people. Box organization is self-care. #wizard-selfcare
savedPrincess = true
boxesOpened += 1
Malkith releases Princess Rectangula as a thank you. She is, in fact, a box with a tiara. #help-princess
She's lovely. #help-lovely
-> Ending
beat WizardDuel
wizard: A duel? Fine! I choose... BOX MAGIC! #wizard-duel
Malkith shoots a beam of cubic energy at you. You dodge. Barely. #duel-dodge
knight: Hit him with the thing! The box thing! #knight-boxthing
You're not sure what "the box thing" is, but you grab the nearest box and throw it. #duel-throw
It hits Malkith square in the face. Square. Because it's a box. #duel-square
wizard: Ow! That was my favorite face! #wizard-ow
boxesOpened += 1
Malkith stumbles back into the Box of Destiny, accidentally opening it. #duel-stumble
Princess Rectangula tumbles out. She kicks Malkith with her box-corner. It looks painful. #duel-kick
savedPrincess = true
-> Ending
beat JustOpenIt
While Malkith is mid-monologue, you casually walk up and open the Box of Destiny. #just-walk
wizard: --and furthermore, the cubic nature of-- wait, what are you doing? #wizard-wait
wizard: You can't just OPEN it! I had a whole speech prepared! #wizard-speech
wizard: There were DRAMATIC PAUSES! A CALLBACK to act one! #wizard-pauses
Princess Rectangula tumbles out and bonks Malkith on the head. #just-bonk
savedPrincess = true
boxesOpened += 1
knight: That was incredibly anticlimactic. I loved it. #knight-anticlimactic
-> Ending
beat Ending
if savedPrincess
The kingdom celebrates! Princess Rectangula is safe! #ending-celebrate
knight: You've saved the kingdom! The Square Table shall sing of your deeds! #knight-saved
knight: Well, they'll sing in monotone. Everything here is a bit... flat. #knight-flat
else
The kingdom is mildly concerned but ultimately fine. Boxes don't hold grudges. Usually. #ending-fine
if dragonFriendly
Scorchtangle the dragon joins the celebration, bringing his collection of nested boxes as party favors. #ending-dragon
knight: Until next time, hero. There are always more boxes to open. #knight-nexttime
knight: And more fourth walls to break. Yes, I know this is a game. I've always known. #knight-fourthwall
knight: The real box was the friends we made along the way. #knight-realbox
knight: Actually, no. The real box is a box. That's the whole point. #knight-point
-> .