openthebox/content/adventures/medieval/intro.lor
Samuel Bouchet aeae979d05 Fix adventure parsing, add French accents, fix cosmetic translation bug
- Fix Loreline parsing: escape quotes in dialogue, remove [if] bracket
  syntax, remove # in text conflicting with tags
- Add French accents to all 9 .fr.lor translation files (hundreds of fixes)
- Fix cosmetic equip display: use item nameKey lookup instead of
  constructing key from cosmeticValue (fixes StardustLegendary MISSING)
- Deduplicate cosmetics in appearance menu
- Localize all hardcoded strings (welcome, inventory, adventure, cosmetic)
- Add new tests: Loreline parsing (19), cosmetic slot keys, slot+value
  uniqueness (302 total, 0 failures)
2026-03-11 20:40:07 +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
-> .