package main import ( "fmt" "math/rand/v2" "os" "strconv" "strings" "bufio" _ "embed" "github.com/charmbracelet/lipgloss" ) // =-=-=-=-=-= These are variables for embeding files as hardcoded strings - dont remove them, they just LOOK like comments =-=-=-=-=-=-= //go:embed menu.txt var menu string //go:embed levels/wifey.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 //go:embed levels/propertyRoom.txt var propertyRoom string //go:embed levels/redRoom.txt var redRoom string //go:embed levels/hitTheStreets.txt var hitTheStreets string //go:embed levels/doctorsRoom.txt var doctorsRoom string // =-=-=-=-=-=-= End File String Embeds =-=-=-=-=-=-= // Game Variables - Core Gameplay var stats string // variable for stats generation output var statsCombat string // variable used for combat stats generation during fights var PlayerName string // player's name... var condoms = 0 // its better to have them and not need them var std = false // what happens if you have connies var money = 1800 // not specific currency var days = 30 // total number of days (default 30) var experience = 0 // your experience from combat battle fights (starts at 0) var level = 1 // your level from combat battle fights (starts at 1) var whores = 0 // number of sex slaves you own var cocaines = 0 // cocaine in 1/gram units var fentanyl = 0 // fentanyl in 500 miligram units var LSD = 0 // LSD in pills var bumfights = 25 // default number of homeless bum fights per day const bumfightsTotal = 25 // total bumfights const taxes = 500 // skimming off the top var childsupport = 0 // if you get a hoe preggers // Lipgloss - Props to var border = lipgloss.NewStyle(). BorderStyle(lipgloss.NormalBorder()). BorderForeground(lipgloss.Color("63")) var titleStyle = lipgloss.NewStyle(). BorderStyle(lipgloss.NormalBorder()). BorderForeground(lipgloss.Color("#f20b0bff")). Foreground(lipgloss.Color("#ffffffff ")). Background(lipgloss.Color("#f20b0bff")) var storyStyle = lipgloss.NewStyle(). BorderStyle(lipgloss.NormalBorder()). Width(75). BorderForeground(lipgloss.Color("228")). BorderBackground(lipgloss.Color("#0000FF")). Foreground(lipgloss.Color("#ffffffff ")). Background(lipgloss.Color("#0000FF")) var slutStyle = lipgloss.NewStyle(). BorderStyle(lipgloss.NormalBorder()). Width(75). BorderForeground(lipgloss.Color("228")). BorderBackground(lipgloss.Color("#ff00a2ff")). Foreground(lipgloss.Color("#ffffffff ")). Background(lipgloss.Color("#ff00a2ff")) var statsStyle = lipgloss.NewStyle(). BorderStyle(lipgloss.NormalBorder()). Foreground(lipgloss.Color("#ffffffff ")). Background(lipgloss.Color("#2a2a60ff")) var red = lipgloss.NewStyle(). Foreground(lipgloss.Color("#f20b0bff")) var green = lipgloss.NewStyle(). Foreground(lipgloss.Color("#18e60aff ")) // why the fuck does golang not do this - should work on win10/11 (yes it does support ansi escape codes *now*) func ClearScreen() { fmt.Print("\033[H\033[2J") } // Cool stylized Enter key masher func MashEnterKey() { fmt.Println(statsStyle.Render("Mash the 'Enter' key!")) bufio.NewReader(os.Stdin).ReadBytes('\n') } func breakRoom() { fmt.Println("Not Implemented") MainMachine() } func HitTheStreets() { ClearScreen() i := 0 choice := "" for i < 1 { ClearScreen() CombatStats() fmt.Println(storyStyle.Render(hitTheStreets)) fmt.Println(statsStyle.Render(statsCombat)) fmt.Println("Your choice,") fmt.Print(green.Render(PlayerName), ">") fmt.Scan(&choice) if strings.ToUpper(choice) == "B" { ClearScreen() fmt.Println(storyStyle.Render("Bum Fight!")) fmt.Println() fmt.Println("You encounter a ", red.Render("homeless piece of shit!")) fmt.Println("") fmt.Println("What do you do?") fmt.Println("") CombatStats() fmt.Println(border.Render(statsCombat)) fmt.Println("(A)ttack") fmt.Println("(E)scape") homelessPunch := "" fmt.Scan(&homelessPunch) if strings.ToUpper(homelessPunch) == "A" { chance := rand.IntN(100) if chance > 40 { ClearScreen() fmt.Println("You just hit the homeless bum with your police baton, it cracked his skull!") fmt.Println("You sprinkle some crack on him and move along.") MashEnterKey() experience = experience + 250 money = money + 20 bumfights = bumfights - 1 i = 0 } else { ClearScreen() fmt.Println(red.Render("You missed, and he got away!")) fmt.Println() fmt.Println("Perhaps you should lay off the donuts...") bumfights = bumfights - 1 MashEnterKey() i = 0 } } else { fmt.Println("You escape successfully.") bumfights = bumfights - 1 MashEnterKey() i = 0 } } else { i = 1 } } MainMachine() } func RedRoom() { ClearScreen() i := 0 choice := "" for i < 1 { fmt.Println(slutStyle.Render(redRoom)) fmt.Println("Your choice,") fmt.Print(green.Render(PlayerName), ">") fmt.Scan(&choice) // buy whore if strings.ToUpper(choice) == "B" { ClearScreen() fmt.Println(slutStyle.Render("Sex Slave Menu")) fmt.Println("Price: ", red.Render("$2000 per whore.")) fmt.Println("Your cash: $", strconv.Itoa(money)) fmt.Println("") fmt.Println("Buy one sex slave (Y/N)?") slavePurchase := "" fmt.Scan(&slavePurchase) if strings.ToUpper(slavePurchase) == "Y" { if money > 2000 { whores = whores + 1 money = money - 5000 ClearScreen() fmt.Println(slutStyle.Render("You just purchased 1 whore to be a sex slave!")) MashEnterKey() i = 0 } else { ClearScreen() fmt.Println(slutStyle.Render("Get some money, broke-ass!")) MashEnterKey() i = 0 } } else { i = 0 } } else if strings.ToUpper(choice) == "P" { ClearScreen() fmt.Println(slutStyle.Render("$10 to buy a five pack of connies?")) fmt.Println("Price: ", red.Render("$10 for a five pack.")) fmt.Println("Your cash: $", strconv.Itoa(money)) fmt.Println("") fmt.Println("Buy connies (Y/N)?") lapPurchase := "" fmt.Scan(&lapPurchase) if strings.ToUpper(lapPurchase) == "Y" { if money > 10 { money = money - 10 ClearScreen() fmt.Println(slutStyle.Render("You just purchased a five pack of connies.")) fmt.Println() MashEnterKey() ClearScreen() i = 0 } else { ClearScreen() fmt.Println(slutStyle.Render("Get some money, broke-ass!")) MashEnterKey() ClearScreen() i = 0 } } else { i = 0 } } else if strings.ToUpper(choice) == "L" { ClearScreen() fmt.Println(slutStyle.Render("Get a fucking lap dance!")) fmt.Println("Price: ", red.Render("$20 for a 3 minute song.")) fmt.Println("Your cash: $", strconv.Itoa(money)) fmt.Println("") fmt.Println("Buy a lap dance (Y/N)?") lapPurchase := "" fmt.Scan(&lapPurchase) if strings.ToUpper(lapPurchase) == "Y" { if money > 20 { money = money - 20 ClearScreen() fmt.Println(slutStyle.Render("That slut grinds on your dick to the song 'I like it that way' by Backstreet Boys.")) fmt.Println() fmt.Println("That shit was so hot, you came in your pants.") MashEnterKey() i = 0 } else { ClearScreen() fmt.Println(slutStyle.Render("Get some money, broke-ass!")) MashEnterKey() i = 0 } } else { i = 0 } // Fuck Whore } else if strings.ToUpper(choice) == "F" { ClearScreen() fmt.Println(border.Render("Get your Dick Wet at OPP McDick's")) fmt.Println("Price: ", red.Render("$100 to fuck a dirty whore for an hour.")) fmt.Println("Your cash: $", strconv.Itoa(money)) fmt.Println("") fmt.Println("Buy an hour with a whore (Y/N)?") fuckPurchase := "" fmt.Scan(&fuckPurchase) if strings.ToUpper(fuckPurchase) == "Y" { if money > 100 { money = money - 100 if condoms == 0 { stdChance := rand.IntN(100) preggoChance := rand.IntN(100) if stdChance > 25 { std = true } else { } if preggoChance > 15 { fmt.Println(border.Render("You got the whore pregnant! Do you want to sell the kid to")) fmt.Println(border.Render("Pakistan for $500 up front to sew soccer balls?")) soccerBalls := "" fmt.Scan(&soccerBalls) if strings.ToUpper(soccerBalls) == "Y" { money = money + 500 fmt.Println(border.Render("Bonus! You just made $500!")) } else { } } } else { condoms = condoms - 1 } ClearScreen() fmt.Println(slutStyle.Render(wifeyFucked)) fmt.Println("You just fucked a dirty whore! Oh... shit, it's your cousin!") MashEnterKey() ClearScreen() i = 0 } else { ClearScreen() fmt.Println(red.Render("Get some money, broke-ass!")) MashEnterKey() ClearScreen() i = 0 } } else { i = 0 } // Return to HQ } else if strings.ToUpper(choice) == "R" { i = 1 MainMachine() } else { i = 0 } } } func DoctorsOffice() { ClearScreen() i := 0 choice := "" for i < 1 { ClearScreen() fmt.Println(storyStyle.Render(doctorsRoom)) fmt.Println("Your choice,") fmt.Print(green.Render(PlayerName), ">") fmt.Scan(&choice) if strings.ToUpper(choice) == "C" { ClearScreen() fmt.Println(storyStyle.Render("Doctor's Miracle STD/STI Cures")) fmt.Println() fmt.Println("You encounter ", red.Render("the doctor.")) fmt.Println("") fmt.Println("Do you want to cure you or your 'friends' STD/STI for $100?") fmt.Println("") fmt.Println("(Y)es") fmt.Println("(N)o") stdCure := "" fmt.Scan(&stdCure) if strings.ToUpper(stdCure) == "Y" { if money > 100 { fmt.Println("You pay the doctor $100 and you and/or your 'friends' are cured.") money = money - 100 std = false i = 1 MashEnterKey() } else { fmt.Println("You're too poor to cure your disease.") i = 1 if std { fmt.Println("But you still have a disease.") MashEnterKey() } else { fmt.Println() MashEnterKey() } } } else { ClearScreen() fmt.Println("No cure for you. I guess.") if std { fmt.Println("But you still have a disease.") MashEnterKey() } else { fmt.Println() MashEnterKey() } i = 0 } } else { ClearScreen() fmt.Println("You head back to HQ.") MashEnterKey() i = 0 } i = 1 } MainMachine() } func PropertyRoom() { ClearScreen() i := 0 choice := "" for i < 1 { fmt.Println(storyStyle.Render(propertyRoom)) fmt.Println("Your choice,") fmt.Print(green.Render(PlayerName), ">") fmt.Scan(&choice) if strings.ToUpper(choice) == "C" { ClearScreen() 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 ClearScreen() fmt.Println("You just purchased 1 gram of coke!") MashEnterKey() i = 0 } else { ClearScreen() 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 ClearScreen() fmt.Println("You just purchased 5 tabs of LSD! Fuck yeah!") MashEnterKey() i = 0 } else { ClearScreen() fmt.Println(red.Render("You don't have the greenbacks, loser! 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 ClearScreen() fmt.Println("You just purchased 1 bag of fenty!") MashEnterKey() i = 0 } else { ClearScreen() fmt.Println(red.Render("Get some money, broke-ass!")) MashEnterKey() i = 0 } } else { i = 0 } } else if strings.ToUpper(choice) == "R" { i = 1 MainMachine() } else { i = 0 } } } func ClockOut() { choice := 0 ClearScreen() fmt.Println(storyStyle.Render(wifey)) for choice < 1 { fmt.Println("Your choice,") fmt.Print(green.Render(PlayerName), ">") fmt.Scan(&choice) switch choice { case 1: chance := rand.IntN(100) if chance < 50 { ClearScreen() if cocaines > 1 { fmt.Println(red.Render("You pull out 1kg of cocaine and smash it open all over your face")) cocaines = cocaines - 1 fmt.Println(red.Render("You shout 'COKE SLAM!'")) fmt.Println(red.Render("You bust your wife right in the fucking face!")) fmt.Println(red.Render("YARRRRR! (You don't know why you're a pirate now)")) MashEnterKey() ClearScreen() } 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")) fmt.Println(red.Render("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 successfully hate fucked your wife.") fmt.Println() fmt.Println("She apologizes for the cold dinner while she wipes the semen and blood from her butthole.") 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 } ClearScreen() fmt.Println(border.Render("It is a new day!")) if days == 0 { fmt.Println("You have run out of days...") MashEnterKey() GameOver() } else { days = days - 1 if std { bumfights = bumfightsTotal - 15 } else { bumfights = bumfightsTotal } prostituteIncome := whores*500 - childsupport money = money + taxes + prostituteIncome fmt.Println("Cha ching! You now have ", money) MainMachine() } } } func GameOver() { fmt.Println(border.Render("Game Over, Bitch!!!")) CheckStats() CombatStats() fmt.Println(statsStyle.Render(stats)) fmt.Println(statsStyle.Render(statsCombat)) fmt.Println() fmt.Println("The game will exit now...") MashEnterKey() os.Exit(0) } func CheckStats() { 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" + "LSD (tabs): " + strconv.Itoa(LSD) + "\n" + "Days Left: " + strconv.Itoa(days) // builds the stats paragraph for the main screen } func CombatStats() { if experience == 1000 { level = 2 } else if experience == 4000 { level = 3 } else if experience == 8000 { level = 4 } else if experience == 25000 { level = 5 } else if experience == 75000 { level = 6 } else if experience == 120000 { level = 7 } else if experience == 175000 { level = 8 } else if experience == 250000 { level = 9 } else if experience == 1000000 { level = 10 } else { fmt.Println() } statsCombat = "Name: " + PlayerName + "\n" + "Level :" + strconv.Itoa(level) + "\n" + "Money: $" + strconv.Itoa(money) + "\n" + "Experience :" + strconv.Itoa(experience) + "\n" + "Bum Fights Left: " + strconv.Itoa(bumfights) // builds Combat Stats } func MainMachine() { ClearScreen() i := 0 choice := "" for i < 1 { ScreenMachine() fmt.Println("Your choice,") fmt.Print(green.Render(PlayerName), ">") fmt.Scan(&choice) if strings.ToUpper(choice) == "H" { HitTheStreets() i = 1 } else if strings.ToUpper(choice) == "P" { 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" { DoctorsOffice() i = 1 } else if strings.ToUpper(choice) == "G" { ClockOut() i = 1 } else { i = 0 } } } func ScreenMachine() { CheckStats() fmt.Println(storyStyle.Render("OPP Wars - Corruption")) fmt.Println(lipgloss.JoinHorizontal(lipgloss.Top, border.Render(menu), statsStyle.Render(stats))) // makes a horizontal display joining two paras } func main() { officerStyle := lipgloss.NewStyle().Foreground(lipgloss.Color("0000FF")) fmt.Println(titleStyle.Render("OPP Wars - Corruption")) fmt.Println(officerStyle.Render(officers)) MashEnterKey() ClearScreen() fmt.Println(storyStyle.Render("OPP Wars - Corruption")) fmt.Println(storyStyle.Render(intro)) fmt.Print("Enter your damned name, Constable: ") 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() MainMachine() }