From 05fa551cd34126cd9f466c4db0df5b67eb6651a4 Mon Sep 17 00:00:00 2001 From: Britney Lozza Date: Thu, 31 Jul 2025 01:06:18 -0400 Subject: [PATCH] VSCodium suggestions --- data/genderSelection.txt | 9 + data/intro.txt | 6 + data/levels/cocaine/cocaine.txt | 9 + data/levels/cocaine/cocaineChoice1.txt | 7 + data/levels/cocaine/cocaineChoice2.txt | 11 + data/levels/cocaine/cocaineChoice3.txt | 15 + data/levels/groundZero/groundZero.txt | 14 + data/levels/groundZero/groundZeroChoice1.txt | 11 + data/levels/groundZero/groundZeroChoice2.txt | 7 + data/levels/groundZero/groundZeroChoice2A.txt | 8 + .../levels/groundZero/groundZeroChoice2B1.txt | 7 + .../levels/groundZero/groundZeroChoice2B2.txt | 9 + data/levels/groundZero/groundZeroChoice3.txt | 15 + data/levels/groundZero/groundZeroChoice4A.txt | 12 + data/levels/groundZero/groundZeroChoice4B.txt | 7 + data/levels/heroine/heroine.txt | 8 + data/levels/heroine/heroineChoice1.txt | 4 + data/levels/heroine/heroineChoice2.txt | 3 + data/levels/heroine/heroineChoice3.txt | 4 + data/levels/lildick/choice1.txt | 15 + data/levels/lildick/choice2.txt | 9 + data/levels/lildick/lildickOffice.txt | 14 + data/levels/punchnazi/nazi.txt | 5 + data/levels/punchnazi/naziMissed.txt | 6 + data/levels/punchnazi/naziPunched.txt | 6 + fourfreedoms.txt | 4 + go.mod | 13 + go.sum | 18 + main.go | 449 ++++++++++++++++++ 29 files changed, 705 insertions(+) create mode 100644 data/genderSelection.txt create mode 100644 data/intro.txt create mode 100644 data/levels/cocaine/cocaine.txt create mode 100644 data/levels/cocaine/cocaineChoice1.txt create mode 100644 data/levels/cocaine/cocaineChoice2.txt create mode 100644 data/levels/cocaine/cocaineChoice3.txt create mode 100644 data/levels/groundZero/groundZero.txt create mode 100644 data/levels/groundZero/groundZeroChoice1.txt create mode 100644 data/levels/groundZero/groundZeroChoice2.txt create mode 100644 data/levels/groundZero/groundZeroChoice2A.txt create mode 100644 data/levels/groundZero/groundZeroChoice2B1.txt create mode 100644 data/levels/groundZero/groundZeroChoice2B2.txt create mode 100644 data/levels/groundZero/groundZeroChoice3.txt create mode 100644 data/levels/groundZero/groundZeroChoice4A.txt create mode 100644 data/levels/groundZero/groundZeroChoice4B.txt create mode 100644 data/levels/heroine/heroine.txt create mode 100644 data/levels/heroine/heroineChoice1.txt create mode 100644 data/levels/heroine/heroineChoice2.txt create mode 100644 data/levels/heroine/heroineChoice3.txt create mode 100644 data/levels/lildick/choice1.txt create mode 100644 data/levels/lildick/choice2.txt create mode 100644 data/levels/lildick/lildickOffice.txt create mode 100644 data/levels/punchnazi/nazi.txt create mode 100644 data/levels/punchnazi/naziMissed.txt create mode 100644 data/levels/punchnazi/naziPunched.txt create mode 100644 fourfreedoms.txt create mode 100644 go.mod create mode 100644 go.sum create mode 100644 main.go diff --git a/data/genderSelection.txt b/data/genderSelection.txt new file mode 100644 index 0000000..59c3615 --- /dev/null +++ b/data/genderSelection.txt @@ -0,0 +1,9 @@ +=-=-= Gender Selection =-=-= + +What is your gender? +1) Cis Man +2) Cis Woman +3) Trans Man +4) Trans Woman +5) Non Binary +6) Create your own gender \ No newline at end of file diff --git a/data/intro.txt b/data/intro.txt new file mode 100644 index 0000000..9f700b1 --- /dev/null +++ b/data/intro.txt @@ -0,0 +1,6 @@ +______ ___________ ___ _ _ +| ___/ ___| ___| / _ \ | | | | +| |_ \ `--.| |_ / /_\ \ __| __ _____ _ __ | |_ _ _ _ __ ___ ___ +| _| `--. | _| | _ |/ _` \ \ / / _ | '_ \| __| | | | '__/ _ / __| +| | /\__/ | | | | | | (_| |\ V | __| | | | |_| |_| | | | __\__ \ +\_| \____/\_| \_| |_/\__,_| \_/ \___|_| |_|\__|\__,_|_| \___|___/ diff --git a/data/levels/cocaine/cocaine.txt b/data/levels/cocaine/cocaine.txt new file mode 100644 index 0000000..9ca8d82 --- /dev/null +++ b/data/levels/cocaine/cocaine.txt @@ -0,0 +1,9 @@ +Matthew Garrett runs up to you with a huge grin... + +'Use this giant bag of cocaine to get them high! Cocaine is cruise control for cool.' + +Who do you want to share this generous portion of COCAINE with? + +1) Richard Stallman +2) Alexandre Oliva +3) Eric S. Raymond \ No newline at end of file diff --git a/data/levels/cocaine/cocaineChoice1.txt b/data/levels/cocaine/cocaineChoice1.txt new file mode 100644 index 0000000..0aba9cd --- /dev/null +++ b/data/levels/cocaine/cocaineChoice1.txt @@ -0,0 +1,7 @@ +You take some cocaine out of the bag and put some of that fantastic powder onto a mirror. You setup a line for Richard, but he grabs the bag out of your hand. + +'That line is for you, THIS one is for me!' he yells. + +RMS shoves his head in the bag of cocaine and starts inhaling like Kirby from a Nintendo game. + +What a fucking hog! \ No newline at end of file diff --git a/data/levels/cocaine/cocaineChoice2.txt b/data/levels/cocaine/cocaineChoice2.txt new file mode 100644 index 0000000..1186983 --- /dev/null +++ b/data/levels/cocaine/cocaineChoice2.txt @@ -0,0 +1,11 @@ +You take some cocaine out of the bag and put some of that fantastic powder onto a mirror. + +You setup a line for LXO, he rolls up a dollar bill and snorts the line. + +'This is teh shit' he says. + +For the next hour an a half... LXO rambles about Free Software while harassing the Libreboot project over its name. + +'Bruh, the only true free computer is your mind maaaaaaan' he says. + +LXO is tripping. \ No newline at end of file diff --git a/data/levels/cocaine/cocaineChoice3.txt b/data/levels/cocaine/cocaineChoice3.txt new file mode 100644 index 0000000..83dc475 --- /dev/null +++ b/data/levels/cocaine/cocaineChoice3.txt @@ -0,0 +1,15 @@ +You take some cocaine out of the bag and try to put some of that fantastic powder onto a mirror but ESR stops you. + +"Let me show you a little trick! It's time for a software update!" he says. + +ESR grabs you by the hand and brings you into the FSF HQ kitchen and starts going through the cupboards. + +'Aha! Here it is!' he says. + +'Baking soda! We're gonna turn that cocaine into crack!' + +After the two of you make crack, he pulls out a pipe. He starts smoking the crack. + +ESR IS FUCKED UP ON CRACK! + +ESR is now paranoid, he is checking the room for surveillance equipment. \ No newline at end of file diff --git a/data/levels/groundZero/groundZero.txt b/data/levels/groundZero/groundZero.txt new file mode 100644 index 0000000..c3ec643 --- /dev/null +++ b/data/levels/groundZero/groundZero.txt @@ -0,0 +1,14 @@ +Richard Stallman invites you to a Free Software party at the new HQ! + +You barely make it past the wall of body odor as a bunch of 40 year old virgins are dressed in authentic vintage clothing and are sporting neckbeards. + +Alexandre Oliva enters the room while rolling a tire full of nitrous oxide. + +"We're having a laughing gas party!" he says. + +What do you do? + +1) Take a hit of nitrous. +2) Replace tire of nitrous with a tire of mustard gas. +3) Call the cops. +4) Suggest ketamine instead. diff --git a/data/levels/groundZero/groundZeroChoice1.txt b/data/levels/groundZero/groundZeroChoice1.txt new file mode 100644 index 0000000..a85f566 --- /dev/null +++ b/data/levels/groundZero/groundZeroChoice1.txt @@ -0,0 +1,11 @@ +You take a hit of nitrous oxide from the spare tire. + +As soon as the gas hits your lungs, you feel a sudden and intense sensation of weightlessness, as if you're floating on a cloud of pure bliss. +The world around you becomes distorted, like a funhouse mirror reflection of reality. +The rush of nitrous oxide is like a tidal wave of pure pleasure, crashing over you with such force that it's almost impossible to resist. +It's a feeling that's hard to describe, but it's like being on top of the world, with nothing but the wind in your hair and the sun on your face. +Colors become more vivid, sounds more amplified, and time itself seems to slow down. +It's as if the very fabric of space-time has been warped in your favour, allowing you to experience the universe in a way that's both exhilarating and terrifying. + +Alexandre walks over to you, still laughing like a lunatic. +'That wasn't nitrous oxide! It was aerosolized lysergic acid diethylamide!' he says while continuing to laugh. \ No newline at end of file diff --git a/data/levels/groundZero/groundZeroChoice2.txt b/data/levels/groundZero/groundZeroChoice2.txt new file mode 100644 index 0000000..61f28d9 --- /dev/null +++ b/data/levels/groundZero/groundZeroChoice2.txt @@ -0,0 +1,7 @@ +You decide that you've had enough of these people already. You carefully watch them take a few hits of the nitrous oxide. + +They are behaving erratically, this isn't just laughing gas. It's something else. + +Ain't you glad you didn't take a hit? + +Alexandre Oliva calls everyone over to his laptop. Now is your chance to swap the tire with your surprise, so you sneak off to the tire. diff --git a/data/levels/groundZero/groundZeroChoice2A.txt b/data/levels/groundZero/groundZeroChoice2A.txt new file mode 100644 index 0000000..b910d05 --- /dev/null +++ b/data/levels/groundZero/groundZeroChoice2A.txt @@ -0,0 +1,8 @@ +You attempt to switch the tires... You carefully remove the tire full of nitrous oxide... You carefully put the tire of mustard gas in its place...... + +but fail! + +Zoë Kooyman confronts you, but you casually explain to her that you were actually getting rid of the tires. +She gives you a big hug and you walk off with both tires. + +Fuck! diff --git a/data/levels/groundZero/groundZeroChoice2B1.txt b/data/levels/groundZero/groundZeroChoice2B1.txt new file mode 100644 index 0000000..b68980c --- /dev/null +++ b/data/levels/groundZero/groundZeroChoice2B1.txt @@ -0,0 +1,7 @@ +You attempt to switch the tires... You carefully remove the tire full of nitrous oxide... You carefully put the tire of mustard gas in its place...... + +You succeed! + +Alexandre Olivia starts taking hits from the tire. You distract everyone else by pointing out that a homeless person is trying to break into Zoë's car. + +You go outside and discover that there actually is a homeless person, and he is trying to break into her car. diff --git a/data/levels/groundZero/groundZeroChoice2B2.txt b/data/levels/groundZero/groundZeroChoice2B2.txt new file mode 100644 index 0000000..25c384f --- /dev/null +++ b/data/levels/groundZero/groundZeroChoice2B2.txt @@ -0,0 +1,9 @@ +Oh... It's just Richard Stallman. + +He does kind of look like a homeless Santa Claus. + +Well then... + +You go back inside, Alexandre Oliva is dead. Zoë Kooyman inspects his body and she notices redness, signs of irritation around his neck, and blistering. + +One less person in the way of your goals. \ No newline at end of file diff --git a/data/levels/groundZero/groundZeroChoice3.txt b/data/levels/groundZero/groundZeroChoice3.txt new file mode 100644 index 0000000..fece100 --- /dev/null +++ b/data/levels/groundZero/groundZeroChoice3.txt @@ -0,0 +1,15 @@ +You quietly slip away from the partygoers and make your way to a relatively quiet corner of the room, trying not to draw attention to yourself. + +You quickly pull out your phone and dial 911, trying to speak as softly as possible so as not to alert anyone else to what you're doing. + +As soon as you hang up the phone, the lights in the room begin to flicker and a loudspeaker announcement comes through the party's sound system: + +GNU/LibertyWatch Alert Level: SEVERE. + +'Law enforcement is en route. Please remain calm and follow instructions from the authorities.' + +The music stops, and the partygoers begin to murmur amongst themselves, sensing that something is amiss. + +Alexandre Oliva looks at you with a mixture of confusion and suspicion while he disposes of the tire, while Richard Stallman merely raises an eyebrow in curiosity. You're not sure what's going to happen next, but it's clear that the party has just taken a dramatic turn for the worse.") + +The party is over. \ No newline at end of file diff --git a/data/levels/groundZero/groundZeroChoice4A.txt b/data/levels/groundZero/groundZeroChoice4A.txt new file mode 100644 index 0000000..9408359 --- /dev/null +++ b/data/levels/groundZero/groundZeroChoice4A.txt @@ -0,0 +1,12 @@ +You suggest ketamine instead, and Alexandre Oliva's eyes light up with excitement. + +'Ah, yes! Ketamine would be perfect for this party!' he exclaims, rummaging through his bag to find a vial of liquid. +'It'll give us all a whole new level of...freedom.' + +The other party attendees start to murmur among themselves, some looking intrigued and others clearly apprehensive. + +Richard Stallman, however, looks unconvinced. + +'I'm not sure this is such a good idea,' he says, frowning. 'We don't want anyone getting hurt here.' + +As Alexandre Oliva starts preparing the ketamine equipment, a loud, booming voice echoes through the party area. diff --git a/data/levels/groundZero/groundZeroChoice4B.txt b/data/levels/groundZero/groundZeroChoice4B.txt new file mode 100644 index 0000000..cdd3385 --- /dev/null +++ b/data/levels/groundZero/groundZeroChoice4B.txt @@ -0,0 +1,7 @@ +'Hey, what's going on here?' Eric S. Raymond asks, his eyes scanning the room with a mixture of curiosity and suspicion. + +'You're just in time for the ketamine party!' Alexandre exclaims, holding up the vial of liquid. + +ESR looks at you, then back at Alexandre, and raises an eyebrow. + +'Ketamine? I thought this was a sex party' he says while looking disappointed. \ No newline at end of file diff --git a/data/levels/heroine/heroine.txt b/data/levels/heroine/heroine.txt new file mode 100644 index 0000000..8a59540 --- /dev/null +++ b/data/levels/heroine/heroine.txt @@ -0,0 +1,8 @@ +Matthew Garrett runs up to you excitedly +'Use this heroine needle to your advantage! It'll be funny as hell!' he says. + +Who do you want to share this beautiful HEROINE with? + +1) Richard Stallman +2) Alexandre Oliva +3) Eric S. Raymond \ No newline at end of file diff --git a/data/levels/heroine/heroineChoice1.txt b/data/levels/heroine/heroineChoice1.txt new file mode 100644 index 0000000..f5df614 --- /dev/null +++ b/data/levels/heroine/heroineChoice1.txt @@ -0,0 +1,4 @@ +You inject Richard Stallman in the arm with heroine. +He starts freaking out about being forced to use passwords. +He looks at the clock, and starts to rage about the source code not being available. +Holy shit! RMS is tripping balls! \ No newline at end of file diff --git a/data/levels/heroine/heroineChoice2.txt b/data/levels/heroine/heroineChoice2.txt new file mode 100644 index 0000000..2786e2f --- /dev/null +++ b/data/levels/heroine/heroineChoice2.txt @@ -0,0 +1,3 @@ +You inject Alexandre Oliva in the arm with heroine. +His eyes roll and he falls to the ground in pure ecstacy. +He is drooling. \ No newline at end of file diff --git a/data/levels/heroine/heroineChoice3.txt b/data/levels/heroine/heroineChoice3.txt new file mode 100644 index 0000000..5637539 --- /dev/null +++ b/data/levels/heroine/heroineChoice3.txt @@ -0,0 +1,4 @@ +You inject Eric S. Raymond in the arm with heroine. +He starts to sweat profusely, and freaks out. +He starts ranting about an alleged 2nd amendment right to own nuclear weapons. +Holy shit! \ No newline at end of file diff --git a/data/levels/lildick/choice1.txt b/data/levels/lildick/choice1.txt new file mode 100644 index 0000000..ca64cf7 --- /dev/null +++ b/data/levels/lildick/choice1.txt @@ -0,0 +1,15 @@ +You decide to try and diffuse the tension by making a penis joke at Bryan Lunduke's expense. + +'Hey, I've heard that men like you need to use a magnifying glass to find their own dicks,' you say with a smile. + +Bryan Lunduke's face turns beet red with rage. 'How dare you!' he spits out. 'I'll have you know, I'm a respected member of the Trump Administration!' + +He leans forward, his eyes blazing with anger. 'You're just trying to distract me from the real issue at hand - your own incompetence as a woke libtard!' + +The air in the room seems to thicken with tension as Bryan Lunduke's face gets redder and redder. + +You know, I've always wondered,' you continue, trying to keep from laughing, 'what kind of dildos your wife must use to finish herself off with after a sad session with you.' + +Bryan Lunduke's expression doesn't change, but his eyes seem to flicker with anger. He takes a deep breath and tries to compose himself. + +'Get out of my office!' \ No newline at end of file diff --git a/data/levels/lildick/choice2.txt b/data/levels/lildick/choice2.txt new file mode 100644 index 0000000..7f76e2b --- /dev/null +++ b/data/levels/lildick/choice2.txt @@ -0,0 +1,9 @@ +You decide to try and flirt with Bryan Lunduke, hoping to catch him off guard. 'So, Bryan,' you say with a smile, 'I've heard that the best way to get ahead in this organization is to kiss up to the right people.' + +Bryan Lunduke's expression doesn't change, but his eyes seem to flicker with interest. 'Ah, yes,' he says dryly. 'That's certainly true. But I'm afraid I'm not interested in someone so mentally ill - least of all someone as...' + +The air in the room seems to vibrate with tension as Bryan Lunduke's gaze lingers on yours. + +'Can you send nudes? My e-mail is bryan@lildick.com' + +You leave the office. \ No newline at end of file diff --git a/data/levels/lildick/lildickOffice.txt b/data/levels/lildick/lildickOffice.txt new file mode 100644 index 0000000..b1e671d --- /dev/null +++ b/data/levels/lildick/lildickOffice.txt @@ -0,0 +1,14 @@ +You stand before the nondescript door, labeled 'Bryan Lunduke, Director of Anti-DEI' in Comic Sans. +The air around you seems to thicken with unease as you reach out and turn the handle. +A faint whiff of stale cigarettes wafts out, mingling with the scent of yesterday's coffee. + +'Ah, you must be the new volunteer,' he says, his voice dripping with sarcasm. + +He leans back in his chair, steepling his fingers together in a gesture that's more about concealing his hands than showing any sign of interest. + +'So, I hear you're here to discuss the new Trump mandated Anti-DEI department,' he says, a hint of venom creeping into his voice. +'Yes, well, because of that I wanted you to know that you're a mentally ill weirdo.' +'How big is it? Oh... nevermind' + +1) Make a sexist joke at his expense +2) Flirt with him diff --git a/data/levels/punchnazi/nazi.txt b/data/levels/punchnazi/nazi.txt new file mode 100644 index 0000000..4fe81d1 --- /dev/null +++ b/data/levels/punchnazi/nazi.txt @@ -0,0 +1,5 @@ +Bryan Lunduke walks up to you, slaps you on the ass and then proceeds to call you a mentally ill pedophile. + +How will you respond? +1) Punch the nazi fuck right in the face! +2) Walk away without doing anything \ No newline at end of file diff --git a/data/levels/punchnazi/naziMissed.txt b/data/levels/punchnazi/naziMissed.txt new file mode 100644 index 0000000..cf2211a --- /dev/null +++ b/data/levels/punchnazi/naziMissed.txt @@ -0,0 +1,6 @@ +You swing your fist at the nazi but he dodges it. + +'So much for the tolerant left' he says, while winking at you. + +You notice he has a boner. +You leave in disgust. \ No newline at end of file diff --git a/data/levels/punchnazi/naziPunched.txt b/data/levels/punchnazi/naziPunched.txt new file mode 100644 index 0000000..3309946 --- /dev/null +++ b/data/levels/punchnazi/naziPunched.txt @@ -0,0 +1,6 @@ +You swing your first and punch that nazi piece of shit in the face! +He falls to the floor and starts to cry like a little baby. + +'So much for the tolerant left' he says while sniffling. + +Bryan gets up and runs away back to his office. \ No newline at end of file diff --git a/fourfreedoms.txt b/fourfreedoms.txt new file mode 100644 index 0000000..6d2e85f --- /dev/null +++ b/fourfreedoms.txt @@ -0,0 +1,4 @@ +The freedom to run the program as you wish, for any purpose (freedom 0). +The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this. +The freedom to redistribute copies so you can help others (freedom 2). +The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this. diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..bde9b72 --- /dev/null +++ b/go.mod @@ -0,0 +1,13 @@ +module fsfadventures + +go 1.24.4 + +require ( + github.com/mattn/go-colorable v0.1.14 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-runewidth v0.0.12 // indirect + github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d + github.com/muesli/reflow v0.3.0 + github.com/rivo/uniseg v0.2.0 // indirect + golang.org/x/sys v0.29.0 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..d9eb518 --- /dev/null +++ b/go.sum @@ -0,0 +1,18 @@ +github.com/eidolon/wordwrap v0.0.0-20161011182207-e0f54129b8bb h1:ioQwBmKdOCpMVS/bDaESqNWXIE/aw4+gsVtysCGMWZ4= +github.com/eidolon/wordwrap v0.0.0-20161011182207-e0f54129b8bb/go.mod h1:ZAPs+OyRzeVJFGvXVDVffgCzQfjg3qU9Ig8G/MU3zZ4= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.12 h1:Y41i/hVW3Pgwr8gV+J23B9YEY0zxjptBuCWEaxmAOow= +github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= +github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d h1:5PJl274Y63IEHC+7izoQE9x6ikvDFZS2mDVS3drnohI= +github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= +github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= +github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= +github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= diff --git a/main.go b/main.go new file mode 100644 index 0000000..9affc6f --- /dev/null +++ b/main.go @@ -0,0 +1,449 @@ +package main + +import ( + "bufio" + _ "embed" + "fmt" + "math/rand/v2" + "os" + "strconv" + "strings" + + "github.com/mgutz/ansi" + "github.com/muesli/reflow/wordwrap" +) + +var PlayerName string +var TransphobiaToggle bool +var rank = "Volunteer" +var isRMSdead bool +var isLXOdead bool +var isESRdead bool +var isRMShigh bool +var isLXOhigh bool +var isESRhigh bool +var score int +var pink = ansi.ColorFunc("magenta") +var green = ansi.ColorFunc("green") +var cyan = ansi.ColorFunc("cyan") +var red = ansi.ColorFunc("red") +var mashkey = ansi.ColorFunc("white+h:blue") + +//go:embed data/intro.txt +var intro string + +//go:embed data/levels/lildick/lildickOffice.txt +var lildickOffice string + +//go:embed data/levels/lildick/choice1.txt +var lildickChoice1 string + +//go:embed data/levels/lildick/choice2.txt +var lildickChoice2 string + +//go:embed data/genderSelection.txt +var genderSelection string + +//go:embed data/levels/heroine/heroine.txt +var heroine string + +//go:embed data/levels/heroine/heroineChoice1.txt +var heroineChoice1 string + +//go:embed data/levels/heroine/heroineChoice2.txt +var heroineChoice2 string + +//go:embed data/levels/heroine/heroineChoice3.txt +var heroineChoice3 string + +//go:embed data/levels/cocaine/cocaine.txt +var cocaine string + +//go:embed data/levels/cocaine/cocaineChoice1.txt +var cocaineChoice1 string + +//go:embed data/levels/cocaine/cocaineChoice2.txt +var cocaineChoice2 string + +//go:embed data/levels/cocaine/cocaineChoice3.txt +var cocaineChoice3 string + +//go:embed data/levels/punchnazi/nazi.txt +var nazi string + +//go:embed data/levels/punchnazi/naziMissed.txt +var naziMissed string + +//go:embed data/levels/punchnazi/naziPunched.txt +var naziPunched string + +//go:embed data/levels/groundZero/groundZero.txt +var groundZero string + +//go:embed data/levels/groundZero/groundZeroChoice1.txt +var groundZeroChoice1 string + +//go:embed data/levels/groundZero/groundZeroChoice2.txt +var groundzeroChoice2 string + +//go:embed data/levels/groundZero/groundZeroChoice2A.txt +var groundZeroChoice2A string + +//go:embed data/levels/groundZero/groundZeroChoice2B1.txt +var groundZeroChoice2B1 string + +//go:embed data/levels/groundZero/groundZeroChoice2B2.txt +var groundZeroChoice2B2 string + +//go:embed data/levels/groundZero/groundZeroChoice3.txt +var groundZeroChoice3 string + +//go:embed data/levels/groundZero/groundZeroChoice4A.txt +var groundZeroChoice4A string + +//go:embed data/levels/groundZero/groundZeroChoice4B.txt +var groundZeroChoice4B string + +func ClearScreen() { + fmt.Print("\033[H\033[2J") +} + +func MashEnterKey() { + fmt.Println(mashkey("Mash the 'Enter' key!")) + bufio.NewReader(os.Stdin).ReadBytes('\n') +} + +func CheckStaff() { + if isRMSdead { + fmt.Println("Richard... Stallman... is dead. Our glorious leader is dead...") + } else { + fmt.Println("Richard Stallman is doing a silly dance with his favourite parrot.") + } + if isLXOdead { + fmt.Println("Alexandre Oliva is baking cookies and muffins without an oven. Because he is in hell. Ding dong, Oliva is dead.") + } else { + fmt.Println("Alexandre Oliva is currently hanging out on Techrights IRC with nazis and hate speech activists.") + } + if isESRdead { + fmt.Println("Eric S. Raymond has died, and a team of government agents have absconded with his body.\nPerhaps he was right about the Illuminti?") + } else { + fmt.Println("Eric S.Raymond is hoarding guns and working on his latest manifesto. \nThis one ain't too much about software.") + } + if TransphobiaToggle { + fmt.Println("Bryan Lunduke wants to fuck you, but hes too busy masterbating to femboys.") + } else { + } +} + +func StatusScreen() { + fmt.Println("Your name is ", pink(PlayerName)) + fmt.Println("Your rank is ", cyan(rank)) + s := strconv.Itoa(score) + fmt.Println("Your score is", green(s)) +} + +func GenderSheet() { + ClearScreen() + gender := 0 + i := 0 + x := 0 + for i < 1 { + fmt.Println(genderSelection) + fmt.Print(red(PlayerName), ">") + fmt.Scan(&gender) + switch x { + case 1, 2: + TransphobiaToggle = false + i = 1 + case 3, 4, 5: + TransphobiaToggle = true + i = 1 + case 6: + fmt.Print("Enter your gender: ") + reader := bufio.NewReader(os.Stdin) + prompt, _ := reader.ReadString('\n') + prompt2 := strings.TrimRight(prompt, "\n") + fmt.Println("You are a", prompt2) + TransphobiaToggle = true + i = 1 + default: + i = 0 + } + } +} + +func BryansOffice() { + ClearScreen() + choice := 0 + for choice < 1 { + fmt.Println(lildickOffice) + fmt.Println("Your choice,") + fmt.Print(red(PlayerName), ">") + fmt.Scan(&choice) + if choice == 1 { + ClearScreen() + fmt.Println(lildickChoice1) + score = score + 100 + MashEnterKey() + } else if choice == 2 { + ClearScreen() + fmt.Println(lildickChoice2) + score = score + 75 + MashEnterKey() + } else { + choice = 0 + } + } +} + +func Heroine() { + ClearScreen() + choice := 0 + for choice < 1 { + fmt.Println(heroine) + fmt.Println("Your choice,") + fmt.Print(red(PlayerName), ">") + fmt.Scan(&choice) + if choice == 1 { + if isRMSdead { + fmt.Println("Richard Stallman, our glorious leader, is dead. Heroine won't be effective.") + MashEnterKey() + } else { + chance := rand.IntN(100) + if chance < 20 { + fmt.Println(heroineChoice1) + MashEnterKey() + isRMShigh = true + score = score + 500 + } else { + fmt.Println("Richard Stallman dodges your attempt and starts to scream and cry. \nHe runs into a closet and cuddles with his parrot.") + MashEnterKey() + } + } + } else if choice == 2 { + if isLXOdead { + fmt.Println("Alexandre Oliva is fucking dead. Heroine won't be effective.") + MashEnterKey() + } else { + chance := rand.IntN(100) + if chance < 50 { + fmt.Println(heroineChoice2) + MashEnterKey() + isLXOhigh = true + score = score + 100 + } else { + fmt.Println("Alexandre Oliva dodges your attempt to give him a dose of heroine.") + MashEnterKey() + } + } + } else if choice == 3 { + if isESRdead { + fmt.Println("ESR is fucking dead. Heroine won't be effective.") + MashEnterKey() + } else { + chance := rand.IntN(100) + if chance < 50 { + fmt.Println(heroineChoice3) + MashEnterKey() + isESRhigh = true + score = score + 100 + } else { + fmt.Println("ESR slaps the needle out of your hand.") + MashEnterKey() + } + } + } else { + choice = 0 + } + + } +} + +func Cocaine() { + ClearScreen() + choice := 0 + for choice < 1 { + fmt.Println(cocaine) + fmt.Println("Your choice,") + fmt.Print(red(PlayerName), ">") + fmt.Scan(&choice) + if choice == 1 { + if isRMSdead { + fmt.Println("Richard Stallman, our glorious leader, is dead. \nNot even cocaine can restart his heart at this point.") + MashEnterKey() + choice = 0 + } else { + chance := rand.IntN(100) + if chance < 20 { + fmt.Println(cocaineChoice1) + MashEnterKey() + isRMShigh = true + score = score + 100 + choice = 1 + } else { + fmt.Println("Richard Stallman tells you that drugs are bad. \nNot because they are harmful to your body, but because the recipes are not GPLv3.") + MashEnterKey() + } + } + } else if choice == 2 { + if isLXOdead { + fmt.Println("Alexandre Oliva is fucking dead. \nYou sprinkle some of the cocaine on his corpse... It does nothing.") + MashEnterKey() + choice = 0 + } else { + chance := rand.IntN(100) + if chance < 50 { + fmt.Println(cocaineChoice2) + MashEnterKey() + isLXOhigh = true + score = score + 50 + choice = 1 + } else { + fmt.Println("Alexandre Oliva casually avoids you when you pull out the bag. Shit!") + MashEnterKey() + choice = 1 + } + } + } else if choice == 3 { + if isESRdead { + fmt.Println("ESR is fucking dead. Cocaine won't be effective.") + MashEnterKey() + choice = 0 + } else { + chance := rand.IntN(100) + if chance < 40 { + fmt.Println(cocaineChoice3) + MashEnterKey() + isESRhigh = true + score = score + 75 + } else { + fmt.Println("ESR slaps the bag of coke out of your hand, picks it up and throws it into the trash.") + fmt.Println("'You know that stuff was invented by the CIA right?'") + MashEnterKey() + } + } + } else { + choice = 0 + } + + } +} + +func PunchNazi() { + choice := 0 + ClearScreen() + for choice < 1 { + fmt.Println(nazi) + fmt.Println("Your choice,") + fmt.Print(red(PlayerName), ">") + fmt.Scan(&choice) + if choice == 1 { + chance := rand.IntN(100) + if chance < 50 { + fmt.Println(naziPunched) + score = score + 100 + MashEnterKey() + } else { + fmt.Println(naziMissed) + MashEnterKey() + } + } else if choice == 2 { + fmt.Println("You don't have time for that piece of shit. You simply walk away.") + MashEnterKey() + } else { + choice = 0 + } + } +} + +func GroundZero() { + choice1 := 0 + for choice1 < 1 { + ClearScreen() + fmt.Println(groundZero) + fmt.Println("Your choice,") + fmt.Print(red(PlayerName), ">") + fmt.Scan(&choice1) + if choice1 == 1 { + ClearScreen() + fmt.Println(groundZeroChoice1) + score = score + 100 + fmt.Println() + } else if choice1 == 2 { + ClearScreen() + fmt.Println(groundzeroChoice2) + MashEnterKey() + ClearScreen() + chance := rand.IntN(100) + if chance < 50 { + fmt.Println(groundZeroChoice2A) + MashEnterKey() + } else { + fmt.Println(groundZeroChoice2B1) + MashEnterKey() + ClearScreen() + fmt.Println(groundZeroChoice2B2) + isLXOdead = true + MashEnterKey() + score = score + 200 + ClearScreen() + } + } else if choice1 == 3 { + ClearScreen() + fmt.Println(groundZeroChoice3) + MashEnterKey() + score = score + 50 + } else if choice1 == 4 { + ClearScreen() + fmt.Println(groundZeroChoice4A) + MashEnterKey() + ClearScreen() + fmt.Println(groundZeroChoice4B) + MashEnterKey() + score = score + 75 + } else { + choice1 = 0 + } + } +} + +func main() { + p := fmt.Println + ClearScreen() + fmt.Println(green(intro)) + fmt.Println() + fmt.Println("Richard Stallman walks over to you. He starts doing a weird dance while he molests a parrot.") + fmt.Println() + fmt.Println("'Who the fuck are you? A Microsoft Spy?' he demands.") + fmt.Println() + fmt.Print("Enter your damned name: ") + reader := bufio.NewReader(os.Stdin) + prompt, _ := reader.ReadString('\n') + playerNameMaker := strings.Clone(prompt) + PlayerName = strings.TrimRight(playerNameMaker, "\n") // removes a trailing "Return" key that fucks everything up (i dont want the enter key IN the variable) + ClearScreen() + fmt.Println("Welcome to the ", red("Free Software Foundation!")) + fmt.Println() + p(wordwrap.String("The year is 2028, our glorious leader, Dr. Richard Stallman, saved the Free Software Foundation from the brink of financial collapse.\n\nThe invention of a new form of nutritional yeast was discovered in his toes, and it is so powerful it can cure some forms of cancer.", 80)) + fmt.Println() + fmt.Println("You are the latest recruit to enter the brand new FSF HQ.") + fmt.Println() + fmt.Println("You actually are a spy for Microsoft. Your mission is to take over the organization by any means necessary.") + fmt.Println() + StatusScreen() + fmt.Println() + fmt.Println("Are you ready for a GNU Dawn?") + fmt.Println() + MashEnterKey() + GenderSheet() + if TransphobiaToggle { + BryansOffice() + } else { + } + GroundZero() + Cocaine() + Heroine() + CheckStaff() + fmt.Println() + StatusScreen() +}