Compare commits
3 commits
oppwars-wi
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 8b25a1f5e0 | |||
| d1e63b3e83 | |||
| 88a006407e |
2 changed files with 149 additions and 84 deletions
20
README.md
20
README.md
|
|
@ -4,15 +4,23 @@ A satirical take on drug wars, except you are a police officer.
|
|||
|
||||
The irony is that you do the same stuff.
|
||||
|
||||
Features:
|
||||
- Buy Drugs.
|
||||
- Purchase Whores / Fuck Whores.
|
||||
- Buy Condoms.
|
||||
- Diseases.
|
||||
- Beat up homeless people.
|
||||
## Features
|
||||
- Drugs: Increase XP gain, attack power or rewards from combat.
|
||||
- Whores: Fuck to regain health. Buy to earn an income.
|
||||
- Condoms: Protect your sexual health and prevent unwanted kids.
|
||||
- Combat: Beat up homeless people to earn cash and experience points.
|
||||
|
||||
## Drug Manual
|
||||
Cocaine: Boosts XP gain.
|
||||
Fentanyl: Boosts Attack power.
|
||||
LSD: Not implemented - Just costs money.
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
## Special Thanks
|
||||
|
||||
Props go out to [Lipgloss](https://github.com/charmbracelet/lipgloss)
|
||||
213
main.go
213
main.go
|
|
@ -49,7 +49,7 @@ 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 diseases = 0 // 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)
|
||||
|
|
@ -59,9 +59,11 @@ 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 bumfightsTotal = 25 // total bumfights used to reset bum fights per day
|
||||
const taxes = 500 // skimming off the top
|
||||
var childsupport = 0 // if you get a hoe preggers
|
||||
var offspring = 0 // number of children you have by default
|
||||
var childsupport = 0 // default 0 but changes if you get a hoe preggers
|
||||
var playerHP = 200 // default hit points for the player
|
||||
|
||||
// Lipgloss - Props to
|
||||
var border = lipgloss.NewStyle().
|
||||
|
|
@ -87,8 +89,8 @@ var slutStyle = lipgloss.NewStyle().
|
|||
Width(75).
|
||||
BorderForeground(lipgloss.Color("228")).
|
||||
BorderBackground(lipgloss.Color("#ff00a2ff")).
|
||||
Foreground(lipgloss.Color("#ffffffff ")).
|
||||
Background(lipgloss.Color("#ff00a2ff"))
|
||||
Background(lipgloss.Color("#ffffffff ")).
|
||||
Foreground(lipgloss.Color("#ff00a2ff"))
|
||||
|
||||
var statsStyle = lipgloss.NewStyle().
|
||||
BorderStyle(lipgloss.NormalBorder()).
|
||||
|
|
@ -103,7 +105,7 @@ var green = lipgloss.NewStyle().
|
|||
|
||||
// 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")
|
||||
fmt.Print("\033[H\033[2J") // this does appear to work on windows pe liveiso from win11 (tested in qemu)
|
||||
}
|
||||
|
||||
// Cool stylized Enter key masher
|
||||
|
|
@ -119,60 +121,95 @@ func breakRoom() {
|
|||
|
||||
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" {
|
||||
bumHP := 100
|
||||
i := 1
|
||||
for playerHP > 0 {
|
||||
for i > 0 {
|
||||
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 {
|
||||
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" {
|
||||
bumHP = 100 * level
|
||||
outerLoop:
|
||||
for bumHP > 0 {
|
||||
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(storyStyle.Render("Bum Fight!"))
|
||||
fmt.Println()
|
||||
fmt.Println("Perhaps you should lay off the donuts...")
|
||||
bumfights = bumfights - 1
|
||||
MashEnterKey()
|
||||
i = 0
|
||||
fmt.Println("You are staring at a ", red.Render("homeless piece of shit!"), "with", bumHP, " HP")
|
||||
fmt.Println("")
|
||||
fmt.Println("What do you do?")
|
||||
fmt.Println("")
|
||||
CombatStats()
|
||||
fmt.Println(border.Render(statsCombat))
|
||||
fmt.Println("(F)ight")
|
||||
fmt.Println("(G)o back to HQ")
|
||||
fmt.Println("Your choice,")
|
||||
fmt.Print(green.Render(PlayerName), ">")
|
||||
homelessFight := ""
|
||||
fmt.Scan(&homelessFight)
|
||||
if strings.ToUpper(homelessFight) == "F" {
|
||||
chance := rand.IntN(100)
|
||||
if chance > 40 {
|
||||
attack := 20 // default attack power
|
||||
|
||||
switch {
|
||||
case fentanyl <= 0:
|
||||
attack = 20
|
||||
default:
|
||||
modifier := attack * fentanyl // default attack power multiplied by amount of fentanyl
|
||||
attack = attack + modifier
|
||||
}
|
||||
|
||||
bumHP = bumHP - attack
|
||||
ClearScreen()
|
||||
fmt.Println(red.Render("You smash the bum for "), attack, "hit points!")
|
||||
fmt.Println("The bum has ", bumHP, " HP left")
|
||||
MashEnterKey()
|
||||
|
||||
switch {
|
||||
|
||||
case bumHP <= 0:
|
||||
money = money + 200
|
||||
bumfights = bumfights - 1
|
||||
experienceGain := cocaines * 100
|
||||
levelGain := level * 100
|
||||
experience = experience + levelGain + experienceGain + 100
|
||||
break outerLoop
|
||||
}
|
||||
} else {
|
||||
ClearScreen()
|
||||
fmt.Println(red.Render("You missed, he dodged your attack!"))
|
||||
fmt.Println()
|
||||
homelessAttack := 20
|
||||
playerHP = playerHP - homelessAttack
|
||||
fmt.Println(red.Render("The homeless thug attacks you with a broken whiskey bottle for"), homelessAttack, " HP")
|
||||
fmt.Println("Perhaps you should lay off the donuts...")
|
||||
if playerHP < 0 {
|
||||
bumHP = 100
|
||||
break outerLoop
|
||||
}
|
||||
MashEnterKey()
|
||||
}
|
||||
} else {
|
||||
fmt.Println("You go back to HQ.")
|
||||
bumfights = bumfights - 1
|
||||
bumHP = 0
|
||||
MashEnterKey()
|
||||
MainMachine()
|
||||
}
|
||||
}
|
||||
} else {
|
||||
fmt.Println("You escape successfully.")
|
||||
bumfights = bumfights - 1
|
||||
MashEnterKey()
|
||||
i = 0
|
||||
} else if strings.ToUpper(choice) == "R" {
|
||||
MainMachine()
|
||||
}
|
||||
} else {
|
||||
i = 1
|
||||
}
|
||||
}
|
||||
|
||||
MainMachine()
|
||||
}
|
||||
|
||||
|
|
@ -193,6 +230,7 @@ func RedRoom() {
|
|||
fmt.Println("Your cash: $", strconv.Itoa(money))
|
||||
fmt.Println("")
|
||||
fmt.Println("Buy one sex slave (Y/N)?")
|
||||
fmt.Print(green.Render(PlayerName), ">")
|
||||
slavePurchase := ""
|
||||
fmt.Scan(&slavePurchase)
|
||||
if strings.ToUpper(slavePurchase) == "Y" {
|
||||
|
|
@ -219,6 +257,7 @@ func RedRoom() {
|
|||
fmt.Println("Your cash: $", strconv.Itoa(money))
|
||||
fmt.Println("")
|
||||
fmt.Println("Buy connies (Y/N)?")
|
||||
fmt.Print(green.Render(PlayerName), ">")
|
||||
lapPurchase := ""
|
||||
fmt.Scan(&lapPurchase)
|
||||
if strings.ToUpper(lapPurchase) == "Y" {
|
||||
|
|
@ -251,12 +290,13 @@ func RedRoom() {
|
|||
lapPurchase := ""
|
||||
fmt.Scan(&lapPurchase)
|
||||
if strings.ToUpper(lapPurchase) == "Y" {
|
||||
if money > 20 {
|
||||
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.")
|
||||
fmt.Println("That shit was so hot, you shot a hot load in your pants.")
|
||||
playerHP = playerHP + 100
|
||||
MashEnterKey()
|
||||
i = 0
|
||||
} else {
|
||||
|
|
@ -272,50 +312,66 @@ func RedRoom() {
|
|||
|
||||
} else if strings.ToUpper(choice) == "F" {
|
||||
ClearScreen()
|
||||
fmt.Println(border.Render("Get your Dick Wet at OPP McDick's"))
|
||||
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)?")
|
||||
fmt.Print(green.Render(PlayerName), ">")
|
||||
fuckPurchase := ""
|
||||
fmt.Scan(&fuckPurchase)
|
||||
if strings.ToUpper(fuckPurchase) == "Y" {
|
||||
if money > 100 {
|
||||
if money >= 100 {
|
||||
money = money - 100
|
||||
if condoms == 0 {
|
||||
stdChance := rand.IntN(100)
|
||||
preggoChance := rand.IntN(100)
|
||||
if stdChance > 25 {
|
||||
std = true
|
||||
} else {
|
||||
|
||||
ClearScreen()
|
||||
fmt.Println(slutStyle.Render(wifeyFucked))
|
||||
fmt.Println("You just fucked a dirty whore! Oh... shit, it's your cousin!")
|
||||
MashEnterKey()
|
||||
|
||||
switch {
|
||||
case stdChance <= 50:
|
||||
diseases = diseases + 1
|
||||
ClearScreen()
|
||||
fmt.Println(red.Render("Uh oh!"))
|
||||
fmt.Println(slutStyle.Render("You got a disease!"))
|
||||
MashEnterKey()
|
||||
}
|
||||
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?"))
|
||||
|
||||
switch {
|
||||
case preggoChance <= 25:
|
||||
ClearScreen()
|
||||
fmt.Println(red.Render("Uh oh!"))
|
||||
fmt.Println(slutStyle.Render("You got the whore pregnant! Do you want to sell the kid to Pakistan for $500?"))
|
||||
fmt.Print(green.Render(PlayerName), "(Y/N) >")
|
||||
soccerBalls := ""
|
||||
fmt.Scan(&soccerBalls)
|
||||
if strings.ToUpper(soccerBalls) == "Y" {
|
||||
money = money + 500
|
||||
fmt.Println(border.Render("Bonus! You just made $500!"))
|
||||
fmt.Println(red.Render("Bonus! You just made $500... The kid is great at sewing soccer balls!"))
|
||||
MashEnterKey()
|
||||
} else {
|
||||
|
||||
fmt.Println(red.Render("You have too much of a heart to sell your kid. Now you have to pay child support!"))
|
||||
offspring = offspring + 1
|
||||
fmt.Println("")
|
||||
fmt.Println(red.Render("Fuck!"))
|
||||
MashEnterKey()
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
condoms = condoms - 1
|
||||
playerHP = playerHP + 200
|
||||
}
|
||||
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 {
|
||||
|
|
@ -357,14 +413,14 @@ func DoctorsOffice() {
|
|||
if money > 100 {
|
||||
fmt.Println("You pay the doctor $100 and you and/or your 'friends' are cured.")
|
||||
money = money - 100
|
||||
std = false
|
||||
diseases = 0
|
||||
i = 1
|
||||
MashEnterKey()
|
||||
} else {
|
||||
fmt.Println("You're too poor to cure your disease.")
|
||||
fmt.Println("You're too poor to cure your diseases.")
|
||||
i = 1
|
||||
if std {
|
||||
fmt.Println("But you still have a disease.")
|
||||
if diseases >= 1 {
|
||||
fmt.Println("But you still have a diseases.")
|
||||
MashEnterKey()
|
||||
} else {
|
||||
fmt.Println()
|
||||
|
|
@ -374,7 +430,7 @@ func DoctorsOffice() {
|
|||
} else {
|
||||
ClearScreen()
|
||||
fmt.Println("No cure for you. I guess.")
|
||||
if std {
|
||||
if diseases >= 0 {
|
||||
fmt.Println("But you still have a disease.")
|
||||
MashEnterKey()
|
||||
} else {
|
||||
|
|
@ -493,7 +549,7 @@ func PropertyRoom() {
|
|||
func ClockOut() {
|
||||
choice := 0
|
||||
ClearScreen()
|
||||
fmt.Println(storyStyle.Render(wifey))
|
||||
fmt.Println(slutStyle.Render(wifey))
|
||||
for choice < 1 {
|
||||
fmt.Println("Your choice,")
|
||||
fmt.Print(green.Render(PlayerName), ">")
|
||||
|
|
@ -505,7 +561,6 @@ func ClockOut() {
|
|||
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)"))
|
||||
|
|
@ -513,6 +568,7 @@ func ClockOut() {
|
|||
ClearScreen()
|
||||
} else {
|
||||
fmt.Println(red.Render("You bust your wife right in the fucking face!"))
|
||||
MashEnterKey()
|
||||
}
|
||||
} else {
|
||||
ClearScreen()
|
||||
|
|
@ -543,11 +599,12 @@ func ClockOut() {
|
|||
GameOver()
|
||||
} else {
|
||||
days = days - 1
|
||||
if std {
|
||||
bumfights = bumfightsTotal - 15
|
||||
if diseases >= 1 {
|
||||
bumfights = bumfightsTotal - 15 - diseases
|
||||
} else {
|
||||
bumfights = bumfightsTotal
|
||||
}
|
||||
childsupport = offspring * 100
|
||||
prostituteIncome := whores*500 - childsupport
|
||||
money = money + taxes + prostituteIncome
|
||||
fmt.Println("Cha ching! You now have ", money)
|
||||
|
|
@ -569,7 +626,7 @@ func GameOver() {
|
|||
}
|
||||
|
||||
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
|
||||
stats = "PLAYER STATS" + "\n\n" + "Name " + "\n" + PlayerName + "\n" + "Hit Points: " + strconv.Itoa(playerHP) + "\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() {
|
||||
|
|
@ -594,7 +651,7 @@ func CombatStats() {
|
|||
} 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
|
||||
statsCombat = "Name: " + PlayerName + "\n" + "Hit Points: " + strconv.Itoa(playerHP) + "\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() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue