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

255 lines
13 KiB
Text

// Contemporary Adventure - Open The Box
// Theme: Corporate office meets mysterious box absurdity
character sandrea
name: Sandrea
role: Office Worker
character samuel
name: Samuel
role: IT Guy
state
emails: 0
boxPower: 0
hrInvolved: false
unionFormed: false
beat Intro
Monday morning. Fluorescent lights. The faint smell of burned coffee and crushed dreams. #intro-monday
You arrive at Boxington & Associates Ltd. (Motto: "Thinking Outside The Box Since Never"). #intro-arrive
sandrea: Hey, have you seen the break room? Something... appeared over the weekend. #sandrea-seen
sandrea: And by "something," I mean a box. And by "appeared," I mean nobody will claim responsibility. #sandrea-appeared
choice
Go check the break room #opt-check
-> BreakRoom
Check your email first #opt-email
emails += 1
-> CheckEmail
Pretend you didn't hear anything #opt-pretend
-> Pretend
beat CheckEmail
You open your inbox. 47 unread emails. 46 of them are about the box. #email-open
Subject lines include: "RE: RE: RE: FW: THE BOX", "Box Situation Update #17", and "Please stop replying all about the box." #email-subjects
The last email is from HR: "Mandatory Box Awareness Training - Tuesday 2pm. Attendance is not optional." #email-hr
emails += 46
hrInvolved = true
sandrea: HR sent a training about the box. It hasn't even been 24 hours. #sandrea-hr
sandrea: That's a new record. Usually it takes them two weeks to acknowledge anything exists. #sandrea-record
-> BreakRoom
beat Pretend
You put on your headphones and stare at a spreadsheet. #pretend-headphones
The spreadsheet stares back. One cell reads "THE BOX KNOWS." #pretend-cell
You did not type that. #pretend-didnt
sandrea: You can't ignore it. Kevin tried. He's been transferred to the Box Department. #sandrea-kevin
sandrea: We don't have a Box Department. Or we didn't. Until today. #sandrea-department
-> BreakRoom
beat BreakRoom
You enter the break room. There it is. A plain cardboard box, sitting on the counter next to the microwave. #breakroom-enter
It's perfectly ordinary, except for the fact that it's humming. And glowing faintly. And someone put googly eyes on it. #breakroom-humming
sandrea: The googly eyes were Dave from accounting. He thought it would make it less menacing. #sandrea-dave
sandrea: It did not make it less menacing. #sandrea-menacing
samuel: Hey, IT here. I've been asked to "scan" the box. With what, I have no idea. #samuel-scan
samuel: My job description says "computer stuff." This is not computer stuff. #samuel-job
choice
Help Samuel scan the box #opt-help-scan
-> ScanBox
Try to open the box #opt-try-open
-> TryOpen
Ask the box what it wants #opt-ask-box
boxPower += 10
-> AskBox
beat ScanBox
Samuel holds up his phone's flashlight to the box. #scan-phone
samuel: Scan complete. Results: it's a box. #samuel-results
samuel: You know, I have a computer science degree. Two, actually. And here I am, scanning a box with a phone flashlight. #samuel-degree
sandrea: Did you try turning the box off and on again? #sandrea-turnitoff
samuel: That's not-- you know what, let me try. #samuel-try
He picks up the box, turns it upside down, and puts it back. The humming gets louder. #scan-upside
samuel: I've made it angry. Great. Another thing that's angry at IT. #samuel-angry
boxPower += 5
-> BoxEscalation
beat TryOpen
You reach for the box's flaps. #open-reach
sandrea: Wait! What if it's someone's lunch? #sandrea-lunch
sandrea: Remember the Great Tupperware Incident of 2019? Karen still hasn't forgiven us. #sandrea-karen
You hesitate, then open it anyway. Inside the box, there's... another box. #open-another
Inside that box: a Post-it note that reads "Nice try. - The Box" #open-postit
boxPower += 10
-> BoxEscalation
beat AskBox
You lean toward the box and whisper: "What do you want?" #ask-whisper
The box hums at a slightly different frequency. Your phone autocorrects a text to "BOX IS LIFE." #ask-phone
sandrea: Did the box just hack your phone? #sandrea-hack
samuel: Boxes don't hack phones! #samuel-hack
samuel: ... Do they? I didn't study box-hacking in college. I'm starting to think my education had gaps. #samuel-gaps
The break room lights flicker. The microwave turns on by itself and heats nothing for exactly thirty seconds. #ask-flicker
-> BoxEscalation
beat BoxEscalation
An email arrives. From the box. It has its own email address: box@boxington-associates.com. #escalation-email
emails += 1
The email reads: "Dear colleagues, I would like to schedule a meeting to discuss my role in the organization. Please bring snacks. Preferably cardboard-based." #escalation-meeting
sandrea: The box wants a meeting. #sandrea-meeting
samuel: The box has better email etiquette than half the sales team. #samuel-etiquette
choice
Schedule the meeting #opt-schedule
-> BoxMeeting
Forward the email to HR #opt-forward-hr
hrInvolved = true
emails += 5
-> HRResponse
Reply all with "Please remove me from this thread" #opt-reply-all
emails += 200
-> ReplyAllChaos
Offer to sponsor the box's corporate integration personally|||Your financial resources might open some doors here... #opt-vip [if hasResource("Gold", 30)]
-> VIPFastTrack
beat VIPFastTrack
markSecretBranch("contemporary_vip")
You reply to the box's email with a generous corporate sponsorship offer. The box hums approvingly. #vip-offer
sandrea: You're... buying the box a corner office? With a window? #sandrea-corner
samuel: I've been here three years and I sit next to the printer. The LOUD printer. #samuel-printer
The box's hum shifts to a contented purr. An email arrives: "Counter-offer accepted. I will also require a company card and a parking spot." #vip-counter
sandrea: The box negotiated better than our entire sales department. In one email. #sandrea-negotiated
samuel: Can the box negotiate MY salary next? #samuel-salary
boxPower += 25
unionFormed = true
-> BoxMeeting
beat ReplyAllChaos
You hit Reply All. The office erupts. #reply-chaos
47 people reply all with "Please stop replying all." Each reply triggers more replies. #reply-trigger
emails += 200
samuel: The email server is at 98% capacity. All from box-related reply-alls. #samuel-server
sandrea: Dave from accounting replied with a GIF of a box. It's 47 megabytes. #sandrea-gif
sandrea: The email server has crashed. The box's email still works though. Somehow. #sandrea-crashed
The box sends one final email: "I rest my case. You need me." #reply-rest
boxPower += 20
-> BoxUnion
beat HRResponse
HR responds within minutes. A new record. Their email is seventeen paragraphs long. #hr-response
Key excerpts: "Per company policy section 7.4.2, unidentified boxes must complete onboarding." #hr-onboarding
"Please ensure the box has filled out Form B-0X (yes, really) and attended the safety briefing." #hr-form
sandrea: HR wants to onboard the box. They want to give it an employee badge. #sandrea-badge
samuel: I've been here three years and still don't have an employee badge. #samuel-badge
samuel: But sure. Give it to the box. The sentient, humming, email-sending box. #samuel-sentient
-> BoxMeeting
beat BoxMeeting
The meeting room fills up. Everyone is there. The box sits in a chair. Someone gave it a name tag: "THE BOX - Role: TBD." #meeting-room
boxPower += 10
sandrea: So... the box has prepared a presentation. #sandrea-presentation
The projector turns on. Slide 1: "Why This Office Needs Me: A 47-Slide Deck by THE BOX." #meeting-slide
samuel: It has better slides than my last quarterly review. #samuel-slides
Slide 7 shows a pie chart. 100% of the pie is labeled "BOX." #meeting-pie
Slide 23 is just the word "OPEN" in 72-point font, pulsing. #meeting-open
Slide 47: "In conclusion: open me. Or don't. I'll still be here Monday." #meeting-conclusion
choice
Vote to make the box a full employee #opt-employee
unionFormed = true
-> BoxEmployee
Vote to put the box in storage #opt-storage
-> BoxStorage
Open the box during the meeting #opt-open-meeting
-> OpenDuringMeeting
beat BoxStorage
You vote to put the box in storage. The box's hum drops to a lower frequency. It sounds... hurt. #storage-vote
samuel: I think we hurt the box's feelings. #samuel-hurt
sandrea: Does the box have feelings? #sandrea-feelings
The lights flicker. Every computer in the office displays "I HAVE FEELINGS" in Comic Sans. #storage-feelings
boxPower += 30
sandrea: Apparently yes. And it has opinions about fonts. #sandrea-fonts
The box returns to the break room on its own. Nobody sees it move. It's just... there again. #storage-returns
-> BoxUnion
beat OpenDuringMeeting
You stand up and open the box mid-presentation. Gasp from the audience. #open-gasp
Inside the box: a smaller box. Inside that: a USB drive. #open-usb
samuel: A USB drive? Now we're in MY territory! #samuel-usb
He plugs it in. The screen displays: "Company Performance Could Be 340% Better If You Opened More Boxes - A Study by THE BOX." #open-study
samuel: The data is... actually compelling? The methodology is sound? #samuel-data
sandrea: We're being out-performed by a box. On a Monday. #sandrea-outperformed
boxPower += 15
-> BoxUnion
beat BoxEmployee
The box is officially hired. Employee #BOX-001. #employee-hired
It gets a desk, a computer it doesn't use, and a parking spot it definitely doesn't need. #employee-desk
sandrea: The box got a parking spot before I did. I've been on the waitlist for two years. #sandrea-parking
samuel: The box's employee portal says its skills are "containing things" and "being opened." #samuel-skills
samuel: That's more than my resume had when I started here. #samuel-resume
boxPower += 20
-> BoxUnion
beat BoxUnion
Weeks pass. The box has gained a following. Other boxes have appeared. #union-weeks
The supply closet, the printer paper boxes, the shipping containers -- they're all... organizing. #union-organizing
sandrea: The boxes are forming a union. #sandrea-union
samuel: Can boxes unionize? Is that legal? #samuel-legal
unionFormed = true
A memo slides under the door. It reads: "The United Box Workers of Boxington & Associates demand: 1) Better storage conditions. 2) No more being thrown away on Fridays. 3) One seat on the board of directors." #union-memo
emails += 30
choice
Support the box union #opt-support
-> SupportUnion
Oppose the box union #opt-oppose
-> OpposeUnion
Negotiate with the box union #opt-negotiate
-> NegotiateUnion
beat SupportUnion
You sign the box union's petition. It's the first petition you've ever signed that was also a box. #support-petition
sandrea: You know what? Good for the boxes. They work hard. They carry things. #sandrea-goodfor
samuel: The IT department has fourteen boxes. They do more work than the interns. #samuel-fourteen
The CEO, who no one has ever seen, sends an email: "I've always been a box. Surprise." #support-ceo
boxPower += 50
-> Ending
beat OpposeUnion
You take a stand against the box union. Bold move. #oppose-stand
The boxes respond by collectively refusing to be opened. Every package, every delivery, every Amazon order -- sealed shut. #oppose-sealed
sandrea: My online shopping! No! #sandrea-shopping
samuel: The server backup tapes are in boxes. We can't access anything. #samuel-tapes
The office grinds to a halt. You can't fight organized cardboard. #oppose-halt
boxPower += 30
You quietly un-oppose the box union. #oppose-retract
-> Ending
beat NegotiateUnion
You sit across from the original box. It's wearing a tiny tie now. Where did it get a tie? #negotiate-tie
sandrea: The box wants dental. #sandrea-dental
samuel: Boxes don't have teeth. #samuel-teeth
sandrea: The box says, and I quote, "not yet." #sandrea-notyet
After three hours of negotiation, you reach a compromise: boxes get better shelf space, and employees stop using them as makeshift chairs. #negotiate-compromise
boxPower += 20
-> Ending
beat Ending
You lean back in your office chair. It's Friday. The box is still humming in the break room. #ending-friday
sandrea: So... same thing next Monday? #sandrea-monday
samuel: Probably. I'm updating my resume, though. Under "Skills," I'm adding "box diplomacy." #samuel-resume-end
sandrea: You know, I used to think this job was boring. #sandrea-boring
sandrea: Then a box showed up, sent better emails than my manager, formed a union, and possibly became CEO. #sandrea-recap
sandrea: Mondays, am I right? #sandrea-mondays
if unionFormed
The box hums contentedly. The office will never be the same. But maybe that's okay. #ending-content
The break room microwave displays "THANK YOU" in its timer. Nobody questions it anymore. #ending-microwave
samuel: Box power level at end of week: $boxPower. Emails generated: $emails. Sanity remaining: undefined. #samuel-final
sandrea: See you Monday. Bring the box a coffee. It likes decaf. Don't ask how we know. #sandrea-final
-> .