You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
590 lines
14 KiB
Plaintext
590 lines
14 KiB
Plaintext
[
|
|
Drugwar //e beta-5
|
|
(c) 2018 Jay Moore
|
|
Licensed under GPLv3
|
|
]
|
|
goto @instructions {because we're sticking subroutines up here}
|
|
£titlebar {this literally just draws the game title at the top of the screen}
|
|
print " DRUGWAR//e "
|
|
return
|
|
£wait
|
|
print chr$(10)
|
|
input "Press enter to continue.";x$
|
|
return
|
|
£howmuchbuy {some common purchase code}
|
|
print "You can afford ";j
|
|
print "You can carry ";fs
|
|
print chr$(10)
|
|
input "How many? (Enter 0 cancel): ";k
|
|
gosub @nobuysell
|
|
return
|
|
£howmuchsell {common sell code}
|
|
print "You can sell: ";j
|
|
print chr$(10)
|
|
[
|
|
I'm using this to test how some of the logic might work for buying
|
|
in a subroutine. In theory it should only loop if you put in more
|
|
than you can afford; check for 0 with the subroutine; and if that
|
|
condition isn't met...return to the subroutine which carries on
|
|
with the buy/sell. I just have to watch out for cases where
|
|
you do something invalid and it runs the purchase/sell anyway.
|
|
Checking valid freespace for buying can be put here too. But
|
|
lines that reference a specific drug are still in normal code.
|
|
]
|
|
£howmanysell
|
|
input "How many? (Enter 0 to cancel.): ";k
|
|
If k>j then print "You don't have that many!" : goto @howmanysell {this should work according to my testing}
|
|
gosub @nobuysell
|
|
return
|
|
£nobuysell {I'll be reusing this a lot, so let's subroutine it.}
|
|
if K=0 goto @menu
|
|
return
|
|
£statusbar
|
|
inverse:print "DAY: ";D,P$:normal
|
|
print chr$(10)
|
|
return
|
|
£freespace {I'll probably call this from more than the menu}
|
|
fs=int(in-(ci+hi+ai+wi+si+li)+(gn*5))
|
|
return
|
|
£daily {randomizes drug prices, adds a day, calculates interests, checks day number}
|
|
c=int(rnd(1)*12000+16000)
|
|
h=int(rnd(1)*7000+5000)
|
|
a=int((rnd(1)*34+10)*100)
|
|
w=int((rnd(1)*42+33)*10)
|
|
s=int((rnd(1)*15+7)*10)
|
|
l=int((rnd(1)*4+1)*10)
|
|
b=int(rnd(1)*20)
|
|
d=d+1
|
|
ls=int(ls*1.1)
|
|
sa=int(sa*1.06)
|
|
£checkday {so I can check the day by itself}
|
|
if D >= 31 GOTO @endgame
|
|
return
|
|
£subwayevents
|
|
if b=1 then goto @cheapludes
|
|
if b=2 then goto @cheepweed
|
|
if b=3 then goto @pigheroin
|
|
if b=4 then goto @heroinbust
|
|
if b=5 then goto @heroinbust
|
|
if b=6 then goto @cokebust
|
|
if b=7 then goto @cokebust
|
|
if b=8 then goto @mugged
|
|
if b=9 then goto @cops
|
|
if b=10 then goto @cops
|
|
if b=11 then goto @cops
|
|
if b=12 then goto @gunbuy
|
|
if b=13 then goto @gunbuy
|
|
if b=14 then goto @dedweed
|
|
if b=15 then goto @newcoat
|
|
if b=16 then goto @dedguy
|
|
if b=17 then goto @homeacid
|
|
return
|
|
£cheapludes
|
|
print "Rival dealers are selling cheap ludes!"
|
|
l=2
|
|
gosub @wait
|
|
goto @menu
|
|
£cheepweed
|
|
print "Weed prices have bottomed-out!"
|
|
w=122
|
|
gosub @wait
|
|
goto @menu
|
|
£pigheroin
|
|
print "Pigs are selling cheap heroin"
|
|
print "from last week's raid!"
|
|
h=int((rnd(1)*1150)+850)
|
|
gosub @wait
|
|
goto @menu
|
|
£heroinbust
|
|
print "Addicts are buying heroin"
|
|
print "at outrageous prices!"
|
|
h=int((rnd(1)*25000)+18000)
|
|
gosub @wait
|
|
goto @menu
|
|
£cokebust
|
|
print "Pigs made a big coke bust!"
|
|
print "Prices are outrageous!!!!"
|
|
c=int(rnd(1)*60000)+80000)
|
|
gosub @wait
|
|
goto @menu
|
|
£mugged
|
|
print "You got mugged!"
|
|
print chr$(10)
|
|
ms=int(wa/3)
|
|
ms=int(ms*2)
|
|
ml=int(wa-ms)
|
|
print "You lost $";ml
|
|
wa=ms
|
|
gosub @wait
|
|
gosub @menu
|
|
£cops
|
|
we=CI+HI+WI+AI+SI+LI
|
|
[
|
|
my improved revisions will likely add some additional
|
|
conditions on how/when we run cops
|
|
]
|
|
if we<50 then return
|
|
print "It's the cops!"
|
|
print chr$(10)
|
|
print "Just kidding!"
|
|
print "Cops haven't been coded yet."
|
|
gosub @wait
|
|
goto @menu {goto @police}
|
|
£gunbuy
|
|
if wa < 500 THEN return
|
|
gosub @freespace
|
|
if fs < 5 THEN return
|
|
gx=int(rnd(1)*2)
|
|
if gx = 0 then ax$ = "Baretta"
|
|
if gx = 1 then ax$ = "Saturday Night Special"
|
|
if gx = 2 then ax$ = ".44 Magnum"
|
|
print "Will you buy a ";ax$
|
|
input "for $400? (Y/N)";re$
|
|
if re$ <> "Y" then goto @menu
|
|
gn = int(gn+1)
|
|
wa = int(wa-400)
|
|
fs = int(fs-5)
|
|
goto @menu
|
|
£dedweed
|
|
print "There's some weed here that smells"
|
|
print "like good stuff!!"
|
|
print chr$(10)
|
|
input "Will you smoke it? (Y/N)";X$
|
|
If X$ = "Y" THEN GOTO @weedend
|
|
return
|
|
£newcoat
|
|
if wa<300 then return
|
|
print "Will you buy a new trenchcoat"
|
|
input "with more pockets for $200? (Y/N)";X$
|
|
if X$ <> "Y" then goto @menu
|
|
in=int(in+10)
|
|
wa=int(wa-200)
|
|
goto @menu
|
|
£dedguy
|
|
If fs<8 THEN return
|
|
dg=int((rnd(1)*7)+1)
|
|
xg=int(rnd(1)*5)
|
|
if xg=0 THEN li=li+dg : ss$ = "Ludes"
|
|
if xg=1 THEN si=si+dg : ss$ = "Speed"
|
|
if xg=2 THEN wi=wi+dg : ss$ = "Weed"
|
|
if xg=3 THEN ai=ai+dg : ss$ = "Acid"
|
|
if xg=4 THEN hi=hi+dg : ss$ = "Heroin"
|
|
if xg=5 THEN ci=ci+dg : ss$ = "Cocaine"
|
|
print "You found ";dg;" units of"
|
|
print " ";ss$
|
|
print "on a dead dude in the subway!"
|
|
print chr$(10)
|
|
gosub @wait
|
|
goto @menu
|
|
£homeacid
|
|
print "The market has been flooded"
|
|
print "with cheap home-made acid!"
|
|
a=int((rnd(1)*550)+250)
|
|
gosub @wait
|
|
goto @menu
|
|
|
|
£loan
|
|
home
|
|
gosub @titlebar
|
|
print chr$(10)
|
|
print "Loan shark not implemented.
|
|
gosub @wait
|
|
goto @menu
|
|
|
|
£bank
|
|
home
|
|
gosub @titlebar
|
|
print chr$(10)
|
|
print "Bank not implemented."
|
|
gosub @wait
|
|
goto @menu
|
|
|
|
|
|
|
|
£menu
|
|
home
|
|
gosub @titlebar
|
|
gosub @freespace {it might be more efficient to calculate freespace now}
|
|
inverse : print " Day:";D;" ";ph$ : normal
|
|
print "(C)heck Prices"
|
|
print "(I)nventory"
|
|
print "(B)uy"
|
|
print "(S)ell"
|
|
print "(J)et"
|
|
print "See (L)oan shark"
|
|
print "(V)isit Bank"
|
|
input "Please make your selection: ";T$
|
|
if t$ = "C" goto @prices
|
|
if t$ = "I" goto @inventory
|
|
if t$ = "B" goto @buy
|
|
if t$ = "S" goto @sell
|
|
if t$ = "J" goto @jet
|
|
if t$ = "L" goto @loan
|
|
if t$ = "V" goto @bank
|
|
print "Invalid Selection" {This should be enough to catch errors. I should have a loop timer on this.}
|
|
goto @menu
|
|
£prices
|
|
home
|
|
gosub @titlebar {this is literally recycled from the price and gosub demo}
|
|
inverse:print" PRICES ":normal
|
|
print chr$(10)
|
|
print"cocaine:","$"c
|
|
print"heroin:","$"h
|
|
print"acid:","$"a
|
|
print"weed:","$"w
|
|
print"speed:","$"s
|
|
print"ludes:","$"l
|
|
print"wallet:","$"wa
|
|
gosub @wait
|
|
goto @menu
|
|
£inventory
|
|
home
|
|
gosub @titlebar
|
|
inverse:print" INVENTORY ":normal
|
|
print chr$(10)
|
|
print"cocaine:",ci
|
|
print"heroin:",hi
|
|
print"acid:",ai
|
|
print"weed:",wi
|
|
print"speed:",si
|
|
print"ludes:",li
|
|
print"free space:",fs
|
|
gosub @wait
|
|
goto @menu
|
|
£buy
|
|
home
|
|
gosub @titlebar
|
|
inverse:print" BUY ":normal
|
|
print chr$(10)
|
|
print"What do you want to buy?"
|
|
print chr$(10)
|
|
print "(C)ocaine"
|
|
print "(H)eroin"
|
|
print "(A)cid"
|
|
print "(W)eed"
|
|
print "(S)peed"
|
|
print "(L)udes"
|
|
input "Enter Selection: ";db$
|
|
if db$="c" goto @cokebuy
|
|
if db$="h" goto @herbuy
|
|
if db$="a" goto @acidbuy
|
|
if db$="w" goto @weedbuy
|
|
if db$="s" goto @spdbuy
|
|
if db$="l" goto @ludbuy
|
|
goto @menu
|
|
[
|
|
To "save space" the calculation for how much you can afford and carry
|
|
as well as looking for 0 to return to menu are a subroutine. I want to
|
|
subroutine some of the logic...but I'll have to try and organize the
|
|
code to allow that due to the gotos in the IF statements. Otherwise
|
|
it'll screw up. I'll work on that in a revision after the game mostly
|
|
works.
|
|
]
|
|
£cokebuy
|
|
home
|
|
gosub @titlebar
|
|
inverse:print" BUY COCAINE ":normal
|
|
print chr$(10)
|
|
j=int(wa/c)
|
|
gosub @howmuchbuy
|
|
if k>fs THEN inverse : print "You can't carry that much!" : normal : goto @cokebuy
|
|
if k<=j then ci=ci+k : wa=wa-(c*k)
|
|
if k>j THEN inverse : print "You can't afford that much!" : normal : goto @cokebuy
|
|
goto @menu
|
|
£herbuy
|
|
home
|
|
gosub @titlebar
|
|
inverse:print" BUY HEROIN ":normal
|
|
print chr$(10)
|
|
j=int(wa/h)
|
|
gosub @howmuchbuy
|
|
if k>fs THEN inverse : print "You can't carry that much!" : normal : goto @herbuy
|
|
if k<=j then hi=hi+k : wa=wa-(h*k)
|
|
if k>j THEN inverse : print "You can't afford that much!" : normal : goto @herbuy
|
|
goto @menu
|
|
£acidbuy
|
|
home
|
|
gosub @titlebar
|
|
inverse:print" BUY ACID ":normal
|
|
print chr$(10)
|
|
j=int(wa/a)
|
|
gosub @howmuchbuy
|
|
if k>fs THEN inverse : print "You can't carry that much!" : normal : goto @acidbuy
|
|
if k<=j THEN ai=ai+k : wa=wa-(a*k)
|
|
if k>j THEN inverse : print "You can't afford that much!" : normal : goto @acidbuy
|
|
goto @menu
|
|
£weedbuy
|
|
home
|
|
gosub @titlebar
|
|
inverse:print" BUY WEED ":normal
|
|
print chr$(10)
|
|
j=int(wa/w)
|
|
gosub @howmuchbuy
|
|
if k>fs THEN inverse : print "You can't carry that much!" : normal : goto @weedbuy
|
|
if k<=j THEN wi=wi+k : wa=wa-(w*k)
|
|
if k>j THEN inverse : print "You can't afford that much!" : normal : goto @weedbuy
|
|
goto @menu
|
|
£spdbuy
|
|
home
|
|
gosub @titlebar
|
|
inverse:print" BUY SPEED ":normal
|
|
print chr$(10)
|
|
j=int(wa/s)
|
|
gosub @howmuchbuy
|
|
if k>fs THEN inverse : print "You can't carry that much!" : normal : goto @spdbuy
|
|
if k<=j THEN si=si+k : wa=wa-(s*k)
|
|
if k>j THEN inverse : print "You can't afford that much!" : normal : goto @spdbuy
|
|
goto @menu
|
|
£ludbuy
|
|
home
|
|
gosub @titlebar
|
|
inverse:print" BUY LUDES ":normal
|
|
print chr$(10)
|
|
j=int(wa/l)
|
|
gosub @howmuchbuy
|
|
if k>fs THEN inverse : print "You can't carry that much!" : normal : goto @ludbuy
|
|
if k<=j THEN li=li+k : wa=wa-(l*k)
|
|
if k>j THEN inverse : print "You can't afford that much!" : normal : goto @ludbuy
|
|
goto @menu
|
|
£sell
|
|
home
|
|
gosub @titlebar
|
|
inverse:print" SELL ":normal
|
|
print chr$(10)
|
|
print "What would you like to sell?"
|
|
print chr$(10)
|
|
print "(C)ocaine"
|
|
print "(H)eroin"
|
|
print "(A)cid"
|
|
print "(W)eed"
|
|
print "(S)peed"
|
|
print "(L)udes"
|
|
£sellsel
|
|
input "Enter Selection: (0 to cancel)";db$
|
|
if db$="c" goto @cokesell
|
|
if db$="h" goto @hersell
|
|
if db$="a" goto @acidsell
|
|
if db$="w" goto @weedsell
|
|
if db$="s" goto @spdsell
|
|
if db$="l" goto @ludsell
|
|
if db$="0" goto @menu
|
|
print "Invalid Selection!"
|
|
goto @sellsel
|
|
|
|
£cokesell
|
|
home
|
|
gosub @titlebar
|
|
inverse:print" SELL COCAINE ":normal
|
|
print chr$(10)
|
|
j=ci
|
|
gosub @howmuchsell
|
|
ci=ci-k
|
|
wa=wa+(c*k)
|
|
goto @menu
|
|
|
|
£hersell
|
|
home
|
|
gosub @titlebar
|
|
inverse:print" SELL HEROIN ":normal
|
|
print chr$(10)
|
|
j=hi
|
|
gosub @howmuchsell
|
|
hi=hi-k
|
|
wa=wa+(h*k)
|
|
goto @menu
|
|
|
|
£acidsell
|
|
home
|
|
gosub @titlebar
|
|
inverse:print" SELL ACID ":normal
|
|
print chr$(10)
|
|
j=ai
|
|
gosub @howmuchsell
|
|
ai=ai-k
|
|
wa=wa+(a*k)
|
|
goto @menu
|
|
|
|
£weedsell
|
|
home
|
|
gosub @titlebar
|
|
inverse:print" SELL WEED ":normal
|
|
print chr$(10)
|
|
j=wi
|
|
gosub @howmuchsell
|
|
wi=wi-k
|
|
wa=wa+(w*k)
|
|
goto @menu
|
|
|
|
£spdsell
|
|
home
|
|
gosub @titlebar
|
|
inverse:print" SELL SPEED ":normal
|
|
print chr$(10)
|
|
j=si
|
|
gosub @howmuchsell
|
|
si=si-k
|
|
wa=wa+(s*k)
|
|
goto @menu
|
|
|
|
£ludsell
|
|
home
|
|
gosub @titlebar
|
|
inverse:print" SELL COCAINE ":normal
|
|
print chr$(10)
|
|
j=li
|
|
gosub @howmuchsell
|
|
li=li-k
|
|
wa=wa+(l*k)
|
|
goto @menu
|
|
£jet
|
|
home
|
|
gosub @titlebar
|
|
inverse:print" JET ":normal
|
|
print chr$(10)
|
|
print "(B)ronx"
|
|
print "(G)hetto"
|
|
print "(C)entral Park
|
|
print "(M)anhatten"
|
|
print "Coney (I)sland"
|
|
print "Broo(K)lyn"
|
|
print "(O)ops...stay!"
|
|
input "Where to dude? ";jt$
|
|
if jt$="B" then pq$ = "The Bronx" : GOTO @jetb
|
|
if jt$="G" then pq$ = "The Ghetto" : GOTO @jetb
|
|
if jt$="C" then pq$ = "Central Park" : GOTO @jetb
|
|
if jt$="M" then pq$ = "Manhatten" : goto @jetb
|
|
if jt$="I" then pq$ = "Coney Island" : goto @jetb
|
|
if jt$="K" then pq$ = "Brooklyn" : goto @jetb
|
|
if jt$="O" then goto @menu
|
|
goto @jet
|
|
£jetb
|
|
if pq$=ph$ then goto @alreadythere
|
|
ph$ = pq$
|
|
goto @subway
|
|
|
|
£alreadythere
|
|
home
|
|
gosub @titlebar
|
|
inverse:print" JET ":normal
|
|
print chr$(10)
|
|
print "You're already in:"
|
|
print " ";ph$
|
|
gosub @wait
|
|
goto @jet
|
|
|
|
£subway
|
|
home
|
|
gosub @daily
|
|
gosub @titlebar
|
|
inverse:print" SUBWAY ":normal
|
|
print chr$(10)
|
|
gosub @subwayevents
|
|
print chr$(10) {the only way you should wind up here is if nothing happens}
|
|
print "Welcome to ";ph$ {i hope}
|
|
print chr$(10)
|
|
input "Press ENTER to continue. ";X$
|
|
goto @menu
|
|
|
|
|
|
£instructions
|
|
home
|
|
gosub @titlebar
|
|
print chr$(10)
|
|
print "Welcome to DRUGWAR//e"
|
|
print chr$(10)
|
|
print chr$(10)
|
|
input "Would you like instructions? (Y/N): ";Q$
|
|
£inserrorhandler {I'm hoping this will prevent crashes}
|
|
If Q$ = "Y" THEN GOTO @inst
|
|
IF Q$ = "N" THEN GOTO @gamestart
|
|
input "I don't understand you. Y or N only. ";Q$
|
|
goto @inserrorhandler
|
|
£gamestart {set wallet, debt, location, inventory space, zero out inventory}
|
|
wa=2000
|
|
sa=0
|
|
ls=5000
|
|
d=0 {daily subroutine adds a day}
|
|
ph$="The Bronx"
|
|
gn=0
|
|
dp=0
|
|
in=100
|
|
ci=0
|
|
hi=0
|
|
ai=0
|
|
wi=0
|
|
si=0
|
|
li=0
|
|
gosub @daily {the only time we'll call this outside of the subway}
|
|
goto @menu {the real start of the game}
|
|
£inst
|
|
home
|
|
gosub @titlebar
|
|
print chr$(10)
|
|
print "This is a game of buying and selling."
|
|
print "Your goal is to pay off your debt and"
|
|
print "make as much money as possible in a one"
|
|
print "month period. Prices fluctuate every day"
|
|
print "and interest on your loan is calculated"
|
|
print "as well. If you deal too heavily, you'll"
|
|
print "attract the attention of the police.
|
|
print CHR$(10)
|
|
print "Commands are usually the first letter"
|
|
print "of what you want to do. Y = yes and"
|
|
print "N = No."
|
|
Input "Press ENTER to continue.";X$
|
|
goto @gamestart
|
|
£weedend
|
|
home
|
|
gosub @titlebar
|
|
inverse : print " SMOKE WEED " : NORMAL
|
|
print "You hallucinate on the wildest trip"
|
|
print "of your life, stumble on to the tracks,"
|
|
print "and get creamed by a train!"
|
|
print chr$(10)
|
|
print chr$(10)
|
|
print "Just say NO to drugs!"
|
|
gosub @wait
|
|
goto @ironicend
|
|
£endgame
|
|
home
|
|
gosub @titlebar
|
|
inverse : print " GAME OVER " : NORMAL
|
|
print chr$(10)
|
|
print "Thanks for playing."
|
|
print "At this point I'm supposlisted to calculate"
|
|
print "your final score and all that. But this"
|
|
print "is an alpha release. So it's not done."
|
|
print chr$(10)
|
|
print "At least you didn't die from smoking"
|
|
print "that weed in the subway. Good job."
|
|
gosub @anticheat
|
|
end
|
|
|
|
£ironicend
|
|
home
|
|
gosub @titlebar
|
|
inverse : print " GAME OVER " : NORMAL
|
|
print chr$(10)
|
|
print "Oh wow man. You died...from smoking pot"
|
|
print "in a game about drug dealing."
|
|
print chr$(10)
|
|
print "Well, thanks for playing."
|
|
gosub @anticheat
|
|
end
|
|
£anticheat {clears out all variables at endgame to force a start-over}
|
|
wa=2000
|
|
sa=0
|
|
ls=5000
|
|
d=0 {daily subroutine adds a day}
|
|
ph$="The Bronx"
|
|
gn=0
|
|
dp=0
|
|
in=100
|
|
ci=0
|
|
hi=0
|
|
ai=0
|
|
wi=0
|
|
si=0
|
|
li=0
|
|
return
|
|
|