BETA 1
parent
44612ea63c
commit
1cbc515587
@ -0,0 +1,571 @@
|
||||
[
|
||||
Drugwar //e beta-1
|
||||
(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 to return to menu.)";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 return to menu.)";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%=in%-((ci%+hi%+ai%+wi%+si%+li%)+(gn%*5))
|
||||
return
|
||||
£daily {randomizes drug prices, adds a day, calculates interests, checks day number}
|
||||
c%=rnd(1)*12000+16000
|
||||
h%=rnd(1)*7000+5000
|
||||
a%=(rnd(1)*34+10)*100
|
||||
w%=(rnd(1)*42+33)*10
|
||||
s%=(rnd(1)*15+7)*10
|
||||
l%=(rnd(1)*4+1)*10
|
||||
b%=rnd(1)*20
|
||||
d%=d%+1
|
||||
ls%=ls%*1.1
|
||||
sa%=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%=(rnd(1)*1150)+850)
|
||||
gosub @wait
|
||||
goto @menu
|
||||
£heroinbust
|
||||
print "Addicts are buying heroin"
|
||||
print "at outrageous prices!"
|
||||
h%=(rnd(1)*25000)+18000
|
||||
gosub @wait
|
||||
goto @menu
|
||||
£cokebust
|
||||
print "Pigs made a big coke bust!"
|
||||
print "Prices are outrageous!!!!"
|
||||
c%=rnd(1)*60000)+80000
|
||||
gosub @wait
|
||||
goto @menu
|
||||
£mugged
|
||||
print "You got mugged!"
|
||||
print chr$(10)
|
||||
ms%=wa%/3
|
||||
ms%=ms%*2
|
||||
ml%=wa%-ms%
|
||||
print "You lost $";ml%
|
||||
wa%=ms%
|
||||
gosub @wait
|
||||
gosub @menu
|
||||
£cops
|
||||
we%=C%+H%+W%+A%+S%+L%
|
||||
[
|
||||
my improved revisions will likely add some additional
|
||||
conditions on how/when we run cops
|
||||
]
|
||||
if we%<50 then return {no return since last gosub means this should work}
|
||||
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% = gn%+1
|
||||
wa% = wa%-400
|
||||
fs% = 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%=in%+10
|
||||
wa%=wa%-200
|
||||
goto @menu
|
||||
£dedguy
|
||||
If fs%<8 THEN return
|
||||
dg%=(rnd(1)*7)+1
|
||||
xg%=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%=(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%=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%=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%=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%=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%=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%=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
|
||||
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."
|
||||
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."
|
||||
end
|
||||
|
Loading…
Reference in New Issue