Added more to game 😊

This commit is contained in:
Starstreak 2025-08-07 09:06:29 +00:00
parent 2a9644b7e8
commit 9d1a0af6fb

596
main.go
View file

@ -1,291 +1,449 @@
package main package main
import ( import (
"bufio"
_ "embed"
"fmt" "fmt"
"math/rand/v2" "math/rand/v2"
"os" "os"
"strconv" "strconv"
"strings" "strings"
"bufio" "github.com/mgutz/ansi"
_ "embed" "github.com/muesli/reflow/wordwrap"
"github.com/charmbracelet/lipgloss"
) )
//go:embed menu.txt var PlayerName string
var menu 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 levels/wifey.txt //go:embed data/intro.txt
var wifey string
//go:embed levels/wife-fucked.txt
var wifeyFucked string
//go:embed officers.txt
var officers string
//go:embed intro.txt
var intro string var intro string
//go:embed levels/propertyRoom.txt //go:embed data/levels/lildick/lildickOffice.txt
var propertyRoom string var lildickOffice string
// other variables - keep these from mixing with above embed strigs - its a weird go thing //go:embed data/levels/lildick/choice1.txt
var stats string var lildickChoice1 string
var PlayerName string
var condoms = 10
var money = 1800
var whores = 1
var cocaines = 0
var fentanyl = 0
var oxies = 0
var LSD = 0
var border = lipgloss.NewStyle(). //go:embed data/levels/lildick/choice2.txt
BorderStyle(lipgloss.NormalBorder()). var lildickChoice2 string
BorderForeground(lipgloss.Color("63"))
var storyBorder = lipgloss.NewStyle(). //go:embed data/genderSelection.txt
BorderStyle(lipgloss.NormalBorder()). var genderSelection string
Width(75).
BorderForeground(lipgloss.Color("228")).
BorderBackground(lipgloss.Color("#0000FF"))
var statsStyle = lipgloss.NewStyle(). //go:embed data/levels/heroine/heroine.txt
BorderStyle(lipgloss.NormalBorder()). var heroine string
Foreground(lipgloss.Color("#ffffffff ")).
Background(lipgloss.Color("#2a2a60ff"))
var red = lipgloss.NewStyle(). //go:embed data/levels/heroine/heroineChoice1.txt
Foreground(lipgloss.Color("#ffffffff ")). var heroineChoice1 string
Background(lipgloss.Color("#f20b0bff"))
var green = lipgloss.NewStyle(). //go:embed data/levels/heroine/heroineChoice2.txt
Foreground(lipgloss.Color("#18e60aff ")). var heroineChoice2 string
Background(lipgloss.Color("#55576aff"))
//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() { func ClearScreen() {
fmt.Print("\033[H\033[2J") fmt.Print("\033[H\033[2J")
} }
func MashEnterKey() { func MashEnterKey() {
fmt.Println(statsStyle.Render("Mash the 'Enter' key!")) fmt.Println(mashkey("Mash the 'Enter' key!"))
bufio.NewReader(os.Stdin).ReadBytes('\n') bufio.NewReader(os.Stdin).ReadBytes('\n')
} }
func breakRoom() { func CheckStaff() {
fmt.Println("Not Implemented") if isRMSdead {
MainMachine() 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 doctorsRoom() { func StatusScreen() {
fmt.Println("Not Implemented") fmt.Println("Your name is ", pink(PlayerName))
MainMachine() fmt.Println("Your rank is ", cyan(rank))
s := strconv.Itoa(score)
fmt.Println("Your score is", green(s))
} }
func hitTheStreets() { func GenderSheet() {
fmt.Println("Not Implemented")
MainMachine()
}
func PropertyRoom() {
ClearScreen() ClearScreen()
gender := 0
i := 0 i := 0
choice := "" x := 0
for i < 1 { for i < 1 {
fmt.Println(storyBorder.Render(propertyRoom)) fmt.Println(genderSelection)
fmt.Println("Your choice,") fmt.Print(red(PlayerName), ">")
fmt.Print(green.Render(PlayerName), ">") fmt.Scan(&gender)
fmt.Scan(&choice) switch x {
if strings.ToUpper(choice) == "C" { case 1, 2:
ClearScreen() TransphobiaToggle = false
fmt.Println(border.Render("Cocaine Menu"))
fmt.Println("Price: ", red.Render("$1000 per gram."))
fmt.Println("Your cash: $", strconv.Itoa(money))
fmt.Println("")
fmt.Println("Buy one gram (Y/N)?")
cokePurchase := ""
fmt.Scan(&cokePurchase)
if strings.ToUpper(cokePurchase) == "Y" {
if money > 1000 {
cocaines = cocaines + 1
money = money - 1000
fmt.Println("You just purchased 1 gram of coke!")
MashEnterKey()
i = 0
} else {
fmt.Println(red.Render("Get some money, broke-ass!"))
MashEnterKey()
i = 0
}
} else {
i = 0
}
} else if strings.ToUpper(choice) == "L" {
ClearScreen()
fmt.Println(border.Render("LSD Menu"))
fmt.Println("Price: ", red.Render("$100 for five tabs."))
fmt.Println("Your cash: $", strconv.Itoa(money))
fmt.Println("")
fmt.Println("Buy six tabs (Y/N)?")
LSDPurchase := ""
fmt.Scan(&LSDPurchase)
if strings.ToUpper(LSDPurchase) == "Y" {
if money > 100 {
LSD = LSD + 5
money = money - 100
fmt.Println("You just purchased 5 tabs of LSD!")
MashEnterKey()
i = 0
} else {
fmt.Println(red.Render("Get some money, broke-ass!"))
MashEnterKey()
i = 0
}
} else {
i = 0
}
} else if strings.ToUpper(choice) == "F" {
ClearScreen()
fmt.Println(border.Render("Fentanyl Menu"))
fmt.Println("Price: ", red.Render("$500 per hundred milligrams."))
fmt.Println("Your cash: $", strconv.Itoa(money))
fmt.Println("")
fmt.Println("Buy 100 milligrams (Y/N)?")
fentyPurchase := ""
fmt.Scan(&fentyPurchase)
if strings.ToUpper(fentyPurchase) == "Y" {
if money > 500 {
fentanyl = fentanyl + 1
money = money - 500
fmt.Println("You just purchased 1 bag of fenty!")
MashEnterKey()
i = 0
} else {
fmt.Println(red.Render("Get some money, broke-ass!"))
MashEnterKey()
i = 0
}
} else {
i = 0
}
} else if strings.ToUpper(choice) == "R" {
i = 1 i = 1
MainMachine() case 3, 4, 5:
} else { 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 i = 0
} }
} }
} }
func redRoom() { func BryansOffice() {
fmt.Println("Not Implemented") ClearScreen()
MainMachine()
}
func ClockOut() {
choice := 0 choice := 0
ClearScreen()
fmt.Println(storyBorder.Render(wifey))
for choice < 1 { for choice < 1 {
fmt.Println(lildickOffice)
fmt.Println("Your choice,") fmt.Println("Your choice,")
fmt.Print(green.Render(PlayerName), ">") fmt.Print(red(PlayerName), ">")
fmt.Scan(&choice) fmt.Scan(&choice)
switch choice { if choice == 1 {
case 1:
chance := rand.IntN(100)
if chance < 50 {
ClearScreen() ClearScreen()
if cocaines < 1 { fmt.Println(lildickChoice1)
fmt.Println(red.Render("You pull out 1kg of cocaine and smash it open all over your face")) score = score + 100
cocaines = cocaines - 1 MashEnterKey()
fmt.Println(red.Render("You shout 'COKE SLAM!'")) } else if choice == 2 {
fmt.Println(red.Render("You bust your wife right in the fucking face!")) ClearScreen()
fmt.Println(red.Render("YARRRRR! (You don't know why you're a pirate now)")) fmt.Println(lildickChoice2)
score = score + 75
MashEnterKey() MashEnterKey()
} else { } else {
fmt.Println(red.Render("You bust your wife right in the fucking face!"))
}
} else {
ClearScreen()
fmt.Println(red.Render("You try to bust your wife in the face but she dodges you and runs out the front door!"))
fmt.Println(red.Render("Oh well.. who is she gonna call bro?"))
MashEnterKey()
}
choice = 1
case 2:
fmt.Println(border.Render(wifeyFucked))
fmt.Println("You fuck your wife like one of your dirty whores!")
MashEnterKey()
choice = 1
case 3:
fmt.Println("You take some of your drugs. You are enjoying your life for once.")
choice = 1
default:
choice = 0 choice = 0
} }
} }
} }
func CheckStats() { func Heroine() {
stats = "PLAYER STATS" + "\n\n" + "Name " + "\n" + PlayerName + "\n" + "Condoms: " + strconv.Itoa(condoms) + "\n" + "Money: $" + strconv.Itoa(money) + "\n" + "Whores:" + strconv.Itoa(whores) + "\n" + "Cocaine (1 gram bags): " + strconv.Itoa(cocaines) + "\n" + "Fentanyl (100/mg bags): " + strconv.Itoa(fentanyl) + "\n" + "Oxycodone (pills): " + strconv.Itoa(oxies) + "\n" + "LSD (tabs): " + strconv.Itoa(LSD) // builds the stats paragraph for the main screen
}
func MainMachine() {
ClearScreen() ClearScreen()
i := 0 choice := 0
choice := "" for choice < 1 {
for i < 1 { fmt.Println(heroine)
ScreenMachine()
fmt.Println("Your choice,") fmt.Println("Your choice,")
fmt.Print(green.Render(PlayerName), ">") fmt.Print(red(PlayerName), ">")
fmt.Scan(&choice) fmt.Scan(&choice)
if strings.ToUpper(choice) == "H" { if choice == 1 {
hitTheStreets() if isRMSdead {
i = 1 fmt.Println("Richard Stallman, our glorious leader, is dead. Heroine won't be effective.")
} else if strings.ToUpper(choice) == "P" { MashEnterKey()
PropertyRoom()
i = 1
} else if strings.ToUpper(choice) == "B" {
breakRoom()
i = 1
} else if strings.ToUpper(choice) == "R" {
redRoom()
i = 1
} else if strings.ToUpper(choice) == "D" {
doctorsRoom()
i = 1
} else if strings.ToUpper(choice) == "G" {
ClockOut()
i = 1
} else { } else {
i = 0 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 ScreenMachine() { func GroundZero() {
CheckStats() choice1 := 0
fmt.Println(border.Render("OPP Wars - Corruption")) for choice1 < 1 {
fmt.Println(lipgloss.JoinHorizontal(lipgloss.Top, border.Render(menu), statsStyle.Render(stats))) // makes a horizontal display joining two paras 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() { func main() {
officerStyle := lipgloss.NewStyle().Foreground(lipgloss.Color("0000FF")) p := fmt.Println
fmt.Println(border.Render("OPP Wars - Corruption"))
fmt.Println(officerStyle.Render(officers))
MashEnterKey()
ClearScreen() ClearScreen()
fmt.Println(border.Render("OPP Wars - Corruption")) fmt.Println(green(intro))
fmt.Println(storyBorder.Render(intro)) fmt.Println()
fmt.Print("Enter your damned name, Constable: ") 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) reader := bufio.NewReader(os.Stdin)
prompt, _ := reader.ReadString('\n') prompt, _ := reader.ReadString('\n')
playerNameMaker := strings.Clone(prompt) 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) PlayerName = strings.TrimRight(playerNameMaker, "\n") // removes a trailing "Return" key that fucks everything up (i dont want the enter key IN the variable)
ClearScreen() ClearScreen()
MainMachine() 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()
} }