openthebox/content/adventures/contemporary/intro.lor
Samuel Bouchet 04894a4906 Initial project setup: Open The Box CLI game
- .NET 10 console app with Spectre.Console and Loreline integration
- Black Box Sim architecture (simulation separated from presentation)
- Progressive CLI rendering (9 phases from basic to full layout)
- 25+ box definitions with weighted loot tables
- 100+ item definitions (meta, cosmetics, materials, adventure tokens)
- 9 Loreline adventures (Space, Medieval, Pirate, etc.)
- Bilingual content (EN/FR)
- Save/load system
- Game Design Document
2026-03-10 18:24:01 +01:00

241 lines
12 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
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
-> .