OPTION BASE 0
DEFINT b-z
RANDOMIZE TIMER
DIM a(66,90):DIM b(64,80):DIM c(125,11):DIM d1(6,11):DIM 
d2(6,11):DIM poss$(10)
DIM monster(65,81)
DIM We(12):DIM Ar(6)
DIM cursor(33)
FOR i=0 TO 33:READ a$:cursor(i)=VAL("&H"+a$):NEXT i
SETCURSOR VARPTR(cursor(0))
DATA 10,2A8,550,220,410,8A0,1140,2280,4180,A240,4580,2880
DATA 
1440,280,100,0,238,7F8,7F8,7F0,FF0,1FF0,3FE0,7FC0,FFC0,FFC0
DATA FFC0,7FC0,3FC0,1FC0,380,100,0,C

   DATA 5,5,7,10,15,15,100,200,100,200,200
   DATA 5,5,7,10,15,15,100,180,100,200,175
   DATA 3,3,7,6,6,16,50,100,50,200,75
   DATA 4,4,8,8,8,18,20,25,25,200,130
   DATA 5,5,7,8,8,18,100,200,100,40,175
   DATA 4,4,8,8,8,18,20,25,25,40,130
   FOR v=1 TO 6
      FOR h=1 TO 11
         READ d1(v,h)
      NEXT h
   NEXT v
   DATA 10,20,30,40,45,30,50,50,40,300,200
   DATA 5,10,20,30,35,20,40,50,30,200,100
   DATA 1,5,10,5,5,10,80,60,50,100,30
   DATA 2,4,15,15,20,15,25,45,30,200,50
   DATA 10,20,30,40,45,30,50,50,40,50,50
   DATA 2,4,15,15,20,15,25,45,50,50,50
   FOR v=1 TO 6
      FOR h=1 TO 11
         READ d2(v,h)
      NEXT h
   NEXT v
ToolBox "I"
trapno=&HA974
bresult=0
guy=3
GOSUB LoadCityIPictures
GOSUB SetUpScreen
GOSUB MakeMenus
i=DIALOG(0):i=DIALOG(0):i=DIALOG(0):i=DIALOG(0):i=DIALOG(0)
WINDOW 4
CLS
MENU 1,3,0
CALL TEXTSIZE(9)
PRINT"Welcome to GangWars."
PRINT"Please make a selection"
PRINT "in the File menu."
Loop87:
   d=MENU(0)
   IF d<>1 THEN Loop87
   GOTO FileMenu

MainLoop:
   IF y=cityymax THEN GOSUB InitCityII
   IF leaders=3 AND game=1 THEN WINDOW 4:GOTO Win
   x1=0:y1=0
   WINDOW 1
   CLS
   FOR v=y-3 TO y+3
      FOR h=x-3 TO x+3
      IF h<0 OR v<0 OR h>cityxmax OR v>cityymax THEN 
PUT(x1*45+1,y1*45+1)-(x1*45+44,y1*45+44),a(0,80):GOTO GoOn
      IF b(h,v)=100 THEN GoOn
      PUT(x1*45+1,y1*45+1)-(x1*45+44,y1*45+44),a(0,b(h,v))
      GoOn: x1=x1+1
      NEXT h
   x1=0
   y1=y1+1
   NEXT v
   IF fired<>0 THEN GOSUB ExplodeRocket
   IF gren>0 THEN gren=gren+1:IF gren=4 THEN Explode
   IF dyn>0 THEN dyn=dyn+1:IF dyn=4 THEN Explode
   Loop:
      IF possiblerapid=1 THEN ToolBox "B",trapno,bresult:IF bresult 
THEN DoMouse
      possiblerapid=0
      WINDOW 3
      d=DIALOG(0)
      IF d=1 THEN PressedButton
      IF d<>3 THEN CheckMenus
         IF DIALOG(3)<>1 THEN CheckMenus
         WINDOW 1
         possiblerapid=1
         DoMouse: GetMouse pt(0)
         xtemp=pt(1):ytemp=pt(0)
         SELECT CASE ytemp
            CASE IS <135
               butn=2
               IF xtemp<135 THEN butn=1
               IF xtemp>180 THEN butn=3
            CASE 135 TO 180
               butn=10
               IF xtemp<135 THEN butn=4
               IF xtemp>180 THEN butn=5
            CASE IS >180
               butn=7
               IF xtemp<135 THEN butn=6
               IF xtemp>180 THEN butn=8
            CASE ELSE
               possiblerapid=0:GOTO Loop
            END SELECT
            GOTO MoveGuy
      CheckMenus: m=MENU(0):IF m=0 THEN Loop
         IF m=1 THEN GOTO FileMenu
         IF m=2 THEN GOSUB ChangeArmor:GOTO Loop
         IF m=3 THEN GOSUB ChangeWeapon:GOTO Loop


   PressedButton: butn=DIALOG(1)
   IF butn=0 THEN Loop
   WINDOW 3
   BUTTON butn,2
   MoveGuy: flag=0
   ON butn GOSUB NW,N,NE,W,E,SW,S,SE,Shoot,Pass,Use,Inventory
   IF flag=2 THEN Loop
   IF flag THEN MoveGuy
   IF gren>0 AND b(expx,expy)=100 THEN b(expx,expy)=71
   IF dyn>0 AND b(expx,expy)=100 THEN b(expx,expy)=72
   lowx=x-3:IF lowx<1 THEN lowx=1
   lowy=y-3:IF lowy<1 THEN lowy=1
   highx=x+3:IF highx>cityxmax THEN highx=cityxmax
   highy=y+3:IF highy>cityymax THEN highy=cityymax
   FOR h3=lowx TO highx
         FOR v3=lowy TO highy
            IF monster(h3,v3)<1 THEN GoOn5
            monsterflag=1
            i=monster(h3,v3)
            IF c(i,1)>9 AND c(i,1)<13 AND c(i,11)=0 THEN GoOn5
            h=c(i,8):v=c(i,9)
            IF c(i,6)=12 AND RND>.7 THEN IF ABS(h-x)<4 AND ABS(v-y)<4 
THEN GOSUB EnemyFireRocket:IF fired=i THEN GOTO GoOn5
            IF c(i,11)=-1 THEN monsterrun=-1 ELSE monsterrun=1
            IF ABS(h-x)<2 AND ABS(v-y)<2 THEN GOSUB EnemyAttack:IF 
monsterrun=1 GOTO GoOn5
            IF c(i,1)=9 THEN GoOn5
            IF c(i,1)=13 AND c(i,11)=0 THEN GoOn5
            abest=1000
            FOR h2=h-1 TO h+1
               FOR v2=v-1 TO v+1
                  IF b(h2,v2)<>100 AND b(h2,v2)<>74 THEN GoOn19
                  ad=monsterrun*SQR((x-h2)^2+(y-v2)^2):IF ad<abest THEN 
abest=ad:newx=h2:newy=v2
               GoOn19:NEXT v2
            NEXT h2
            IF abest=1000 THEN GoOn5
            monster(h3,v3)=0
            monster(newx,newy)=-i
            c(i,8)=newx:c(i,9)=newy:b(newx,newy)=b(h,v):b(h,v)=100
            IF newx<h THEN b(newx,newy)=c(i,1)+42
            IF newx>h THEN b(newx,newy)=c(i,1)
         GoOn5: NEXT v3
      NEXT h3
      IF monsterflag=0 THEN MainLoop
      monsterflag=0
      FOR h3=lowx-1 TO highx+1
         FOR v3=lowy-1 TO highy+1
            IF monster(h3,v3)<0 THEN monster(h3,v3)=-1*monster(h3,v3)
         NEXT v3
      NEXT h3
   GOTO MainLoop

Pass:
IF health=maxhealth THEN RETURN
health=health+2
IF health>maxhealth THEN health=maxhealth
GOSUB PrintStats
IF RND<.02 THEN MakeWanderingMonster
RETURN

Shoot:
   WINDOW 4
   rocx=x:rocy=y
   IF weapon=12 AND rockets=0 THEN PRINT"You are out of 
rockets.":WINDOW 1:RETURN
   IF weapon<>12 AND bullets<1 THEN bullets=0:PRINT"You are out of 
bullets.":WINDOW 1:RETURN
   IF weapon<>8 AND weapon<>9 AND weapon<>12 THEN PRINT"You 
must use either the":PRINT"shotgun,rifle, or rocket 
launcher.":WINDOW 1:flag=2:RETURN
   PRINT"Press the direction button below"
   PRINT"(N,S,W,E only.)"
   PRINT"Press any other button to cancel."
   WINDOW 3
   Loop19: d=DIALOG(0)
      IF d<>1 THEN Loop19
   d=DIALOG(1)
   IF d=2 THEN ShootNorth
   IF d=7 THEN ShootSouth
   IF d=4 THEN ShootWest
   IF d=5 THEN ShootEast
   flag=2:WINDOW 1
RETURN

ShootNorth:
   IF weapon=12 THEN rockets=rockets-1:GOSUB FireRocketUp:GOTO 
ExplodeRocket
   bullets=bullets-1
   FOR h=y-1 TO y-3 STEP -1
      IF b(x,h)=29 THEN WINDOW 4:PRINT"The bullet hit a 
wall.":WINDOW 1:RETURN
      IF (b(x,h)>8 AND b(x,h)<29) OR (b(x,h)>50 AND b(x,h)<71) THEN 
h2=x:v2=h:distance=ABS(h-y)-1:GOTO HitGuy
   NEXT h
   WINDOW 4:PRINT"You didn't hit anything.":WINDOW 1
RETURN

ShootSouth:
   IF weapon=12 THEN rockets=rockets-1:GOSUB 
FireRocketDown:GOTO ExplodeRocket
   bullets=bullets-1
   FOR h=y+1 TO y+3
      IF b(x,h)=29 THEN WINDOW 4:PRINT"The bullet hit a 
wall.":WINDOW 1:RETURN
      IF (b(x,h)>8 AND b(x,h)<29) OR (b(x,h)>50 AND b(x,h)<71) THEN 
h2=x:v2=h:distance=ABS(h-y)-1:GOTO HitGuy
   NEXT h
   WINDOW 4:PRINT"You didn't hit anything.":WINDOW 1
RETURN

ShootWest:
   IF weapon=12 THEN rockets=rockets-1:GOSUB FireRocketLeft:GOTO 
ExplodeRocket
   bullets=bullets-1
   FOR h=x-1 TO x-3 STEP -1
      IF b(h,y)=29 THEN WINDOW 4:PRINT"The bullet hit a 
wall.":WINDOW 1:RETURN
      IF (b(h,y)>8 AND b(h,y)<29) OR (b(h,y)>50 AND b(h,y)<71) THEN 
h2=h:v2=y:distance=ABS(h-x)-1:GOTO HitGuy
   NEXT h
   WINDOW 4:PRINT"You didn't hit anything.":WINDOW 1
RETURN

ShootEast:
   IF weapon=12 THEN rockets=rockets-1:GOSUB 
FireRocketRight:GOTO ExplodeRocket
   bullets=bullets-1
   FOR h=x+1 TO x+3
      IF b(h,y)=29 THEN WINDOW 4:PRINT"The bullet hit a 
wall.":WINDOW 1:RETURN
      IF (b(h,y)>8 AND b(h,y)<29) OR (b(h,y)>50 AND b(h,y)<71) THEN 
h2=h:v2=y:distance=ABS(h-x)-1:GOTO HitGuy
   NEXT h
   WINDOW 4:PRINT"You didn't hit anything.":WINDOW 1
RETURN

Use:
   IF numposs=0 THEN WINDOW 4:PRINT"You have nothing to 
use.":WINDOW 1:RETURN
   WINDOW 1
   butsel=1
   CLS
   CALL TEXTSIZE(12)
   CALL TEXTFACE(1)
   PRINT"        What do you wish to use?"
   CALL TEXTFACE(0)
   PRINT:PRINT
   FOR q=1 TO numposs
      PRINT poss$(q)
      BUTTON q,1,"",(220,32+q*16)-(234,46+q*16),3
   NEXT q
   BUTTON 1,2
   BUTTON 11,1,"OK",(5,270)-(65,295)
   BUTTON 12,1,"Cancel",(70,270)-(130,295)
   CALL TEXTSIZE(9)
   Standby5: m=DIALOG(0)
      IF m<>1 THEN Standby5
   m=DIALOG(1)
   IF m=12 THEN FOR q=1 TO 12:BUTTON CLOSE q:NEXT:CLS:RETURN
   IF m=11 THEN GOTO UseItem
   FOR q=1 TO numposs:BUTTON q,1:NEXT
   butsel=m:BUTTON m,2
   GOTO Standby5
UseItem:
   FOR q=1 TO 12:BUTTON CLOSE q:NEXT
   IF poss$(butsel)="band-aids" THEN GOSUB RemoveItem:GOTO 
BandAids
   IF poss$(butsel)="grenade" THEN GOSUB RemoveItem:GOTO Grenade
   IF poss$(butsel)="dynamite" THEN GOSUB RemoveItem:GOTO 
Dynamite
   STOP

RemoveItem:
   numposs=numposs-1
   FOR q=butsel TO numposs
      poss$(q)=poss$(q+1)
   NEXT q
RETURN

BandAids:
   WINDOW 4
   health=maxhealth
   PRINT"You feel much better."
   GOSUB PrintStats
RETURN

Grenade:
   WINDOW 4:PRINT"You have two moves before the":PRINT"grenade 
goes off."
   gren=1:expx=x:expy=y
RETURN

Dynamite:
   WINDOW 4:PRINT"You have two moves before the":PRINT"dynamite 
explodes."
   dyn=1:expx=x:expy=y
RETURN

Explode:
   i2=81
   FOR v=expy-1 TO expy+1
      FOR h=expx-1 TO expx+1
         i2=i2+1
         IF h=0 OR v=0 OR h=cityxmax OR v=cityymax THEN GoOn11
         IF b(h,v)=29 AND gren>0 THEN GoOn11
         PUT((h-x+3)*45+1,(v-y+3)*45+1)-((h-x+3)*45+44,(v-
y+3)*45+44),a(0,i2),PSET
         IF h=x AND v=y THEN damage=RND*50+150:health=health-
damage:WINDOW 4:PRINT"You were caught in the 
explosion.":PRINT"You lose";damage;"health points.":GOSUB 
PrintStats:WINDOW 1:IF health<0 THEN Dead
         IF (b(h,v)>8 AND b(h,v)<29) OR (b(h,v)>50 AND b(h,v)<71) THEN 
GOSUB BlowUpGuy ELSE b(h,v)=100
      GoOn11: NEXT h
   NEXT v
   gren=0:dyn=0
GOTO Loop

EnemyFireRocket:
   fired=i
   rocx=h:rocy=v
   IF h>x-2 AND h<x+2 AND v<y AND b(h,v+1)<>29 THEN 
FireRocketDown
   IF h>x-2 AND h<x+2 AND v>y AND b(h,v-1)<>29 THEN FireRocketUp
   IF v>y-2 AND v<y+2 AND h<x AND b(h+1,v)<>29 THEN 
FireRocketRight
   IF b(h-1,v)<>29 THEN GOTO FireRocketLeft
   fired=0
   RETURN

FireRocketUp:
   UpLoop: rocy=rocy-1
   IF b(rocx,rocy)<>100 THEN RETURN
   IF rocy=y-4 THEN RETURN
   GOTO UpLoop
FireRocketDown:
   DownLoop: rocy=rocy+1
   IF b(rocx,rocy)<>100 THEN RETURN
   IF rocy=y+4 THEN RETURN
   GOTO DownLoop
FireRocketLeft:
   LeftLoop: rocx=rocx-1
   IF b(rocx,rocy)<>100 THEN RETURN
   IF rocx=x-4 THEN RETURN
   GOTO LeftLoop
FireRocketRight:
   RightLoop: rocx=rocx+1
   IF b(rocx,rocy)<>100 THEN RETURN
   IF rocx=x+4 THEN RETURN
   GOTO RightLoop

ExplodeRocket:
   IF fired<>0 THEN i=fired:WINDOW 4:PRINT"The ";:GOSUB 
EnemyName:PRINT" fires a rocket":PRINT"in your direction."
   fired=0
   i2=81
   WINDOW 1
   FOR v=rocy-1 TO rocy+1
      FOR h=rocx-1 TO rocx+1
         i2=i2+1
         IF h<1 OR v<1 OR h>cityxmax-1 OR v>cityymax-1 THEN GoOn12
         PUT((h-x+3)*45+1,(v-y+3)*45+1)-((h-x+3)*45+44,(v-
y+3)*45+44),a(0,i2),PSET
         IF h=x AND v=y THEN damage=RND*50+150:health=health-
damage:WINDOW 4:PRINT"You are caught in the explosion.":PRINT"You 
lose";damage;"health points.":GOSUB PrintStats:WINDOW 1:IF health<0 
THEN Dead:GOTO GoOn12
         IF (b(h,v)>8 AND b(h,v)<29) OR (b(h,v)>50 AND b(h,v)<71) THEN 
GOSUB BlowUpGuy ELSE b(h,v)=100
      GoOn12: NEXT h
   NEXT v
RETURN

BlowUpGuy:
   IF b(h,v)=guy OR b(h,v)=guy+42 THEN PUT(3*45+1,3*45+1)-
(3*45+44,3*45+44),a(0,guy),PSET:RETURN
   IF (b(h,v)=10 AND game=1) THEN RETURN
   FOR i=1 TO 125
      IF c(i,1)<>0 AND c(i,8)=h AND c(i,9)=v THEN FoundIt6
   NEXT
   STOP
   FoundIt6:
   c(i,11)=1
   WINDOW 4
   damage=RND*50+250
   IF gren>0 THEN damage=RND*50+150
   c(i,2)=c(i,2)-damage
   PRINT"The blast hit the ";:GOSUB EnemyName:PRINT" 
for";damage;"health points."
   IF c(i,2)>0 THEN WINDOW 1:PUT((h-x+3)*45+1,(v-y+3)*45+1)-((h-
x+3)*45+44,(v-y+3)*45+44),a(0,c(i,1)),PSET:RETURN
   PRINT "The ";:GOSUB EnemyName:PRINT" is dead."
   monster(c(i,8),c(i,9))=0
   IF c(i,1)=19 OR c(i,1)=21 OR c(i,1)=24 OR c(i,1)=25 OR c(i,1)=28 
THEN IF game=0 THEN leaders=leaders+1:IF leaders=5 THEN PRINT"A 
gate opens somewhere.":b(1,79)=100
   IF c(i,1)=19 OR c(i,1)=24 OR c(i,1)=25 THEN IF game=1 THEN 
leaders=leaders+1
   c(i,1)=0
   b(h,v)=74
   WINDOW 1
   PUT((h-x+3)*45+1,(v-y+3)*45+1)-((h-x+3)*45+44,(v-
y+3)*45+44),a(0,74),PSET
RETURN

NW:
h2=x-1:v2=y-1
IF b(x-1,y-1)<>100 THEN b(x,y)=guy+42:GOTO Attack
b(x,y)=100
x=x-1:y=y-1
b(x,y)=guy+42
RETURN

N:
h2=x:v2=y-1
IF b(x,y-1)<>100 THEN Attack
b(x,y-1)=b(x,y)
b(x,y)=100
y=y-1
RETURN

NE:
h2=x+1:v2=y-1
IF b(x+1,y-1)<>100 THEN b(x,y)=guy:GOTO Attack
b(x,y)=100
x=x+1:y=y-1
b(x,y)=guy
RETURN

W:
h2=x-1:v2=y
IF b(x-1,y)<>100 THEN b(x,y)=guy+42:GOTO Attack
b(x,y)=100
x=x-1
b(x,y)=guy+42
RETURN

E:
h2=x+1:v2=y
IF b(x+1,y)<>100 THEN b(x,y)=guy:GOTO Attack
b(x,y)=100
x=x+1
b(x,y)=guy
RETURN

SW:
h2=x-1:v2=y+1
IF b(x-1,y+1)<>100 THEN b(x,y)=guy+42:GOTO Attack
b(x,y)=100
x=x-1:y=y+1
b(x,y)=guy+42
RETURN

S:
h2=x:v2=y+1
IF b(x,y+1)<>100 THEN Attack
b(x,y+1)=b(x,y)
b(x,y)=100
y=y+1
RETURN

SE:
h2=x+1:v2=y+1
IF b(x+1,y+1)<>100 THEN b(x,y)=guy:GOTO Attack
b(x,y)=100
x=x+1:y=y+1
b(x,y)=guy
RETURN

Attack:
   IF b(h2,v2)=71 OR b(h2,v2)=72 THEN RETURN
   IF b(h2,v2)=74 THEN b(h2,v2)=100:flag=1:RETURN
   IF b(h2,v2)>28 AND b(h2,v2)<32 THEN RETURN
   IF b(h2,v2)=78 THEN b(h2,v2)=100:flag=1:WINDOW 4:PRINT"You just 
found a 10-pack of bullets.":WINDOW 1:bullets=bullets+10:RETURN
   IF b(h2,v2)=77 THEN b(h2,v2)=100:flag=1:WINDOW 
4:q=RND*51+game*RND*200:PRINT"You just 
found";q;"dollars.":WINDOW 1:money=money+q:GOSUB 
PrintStats:RETURN
   IF b(h2,v2)=79 THEN b(h2,v2)=100:flag=1:WINDOW 4:PRINT"You just 
found some band-aids.":WINDOW 1:IF numposs<10 THEN 
numposs=numposs+1:poss$(numposs)="band-aids"
   IF game=1 AND b(h2,v2)=10 THEN b(h2,v2)=100:flag=1:WINDOW 
4:PRINT"You just found a 10-pack of rockets.":WINDOW 
1:rockets=rockets+10:RETURN
   IF b(h2,v2)=100 THEN RETURN
   IF b(h2,v2)=36 OR b(h2,v2)=37 THEN ArmorStore
   IF b(h2,v2)=32 OR b(h2,v2)=33 THEN GunStore
   IF b(h2,v2)=34 OR b(h2,v2)=35 THEN Hospital
   IF b(h2,v2)=38 OR b(h2,v2)=39 THEN AmmoStore
   IF b(h2,v2)=40 OR b(h2,v2)=41 THEN Bar
   IF weapon>6 AND weapon<10 THEN bullets=bullets-1:IF bullets=-1 
THEN bullets=0:WINDOW 4:PRINT"You are out of bullets.":RETURN
   distance=0
   HitGuy:
   i=monster(h2,v2)
   IF weapon=10 THEN flamepack=flamepack-1:IF flamepack=-1 THEN 
flamepack=0:WINDOW 4:PRINT"You are out of flame packs.":RETURN
   IF weapon=12 THEN rockets=rockets-1:IF rockets=-1 THEN 
rockets=0:WINDOW 4:PRINT"You are out of rockets.":RETURN
   fa1=fa:ma1=ma:ms1=ms:weap=weapon
   fa2=c(i,3):ma2=c(i,5):arm=c(i,7)
   GOSUB Fight
   c(i,11)=1
   WINDOW 4
   IF damage<0 OR damage=0 THEN drawtext"You missed the ":GOSUB 
EnemyName:PRINT".":RETURN
   c(i,2)=c(i,2)-damage
   q=INT(RND*3)+74:IF q=74 THEN q=73
   WINDOW 1
   PUT((h2-x+3)*45+1,(v2-y+3)*45+1)-((h2-x+3)*45+44,(v2-
y+3)*45+44),a(0,q),PSET
   WINDOW 4
   drawtext"You hit the ":GOSUB EnemyName:PRINT" 
for";damage;"health points."
   IF c(i,2)>0 THEN RETURN
   monster(c(i,8),c(i,9))=0
   drawtext "The ":GOSUB EnemyName:PRINT" is dead."
   t=INT(RND*2)+1
   IF (weapon=1 OR weapon=2 OR weapon=4 OR weapon=5 OR 
weapon=11) AND fa>99 THEN fa=fa+1:PRINT"You just gained 1 
fighting ability point."
   IF (weapon=1 OR weapon=2 OR weapon=4 OR weapon=5 OR 
weapon=11) AND fa<100 THEN fa=fa+t:PRINT"You just 
gained";t;"fighting ability points."
   IF (weapon=3 OR weapon=6) AND ma>99 THEN ma=ma+1:PRINT"You 
just gained 1 martial arts point."
   IF (weapon=3 OR weapon=6) AND ma<100 THEN ma=ma+t:PRINT"You 
just gained";t;"martial arts points."
   IF (weapon>6 AND weapon<10) AND ms<90 THEN 
ms=ms+t:PRINT"You just gained";t;"marksmanship points."
   IF (weapon>6 AND weapon<10) AND ms>89 THEN 
ms=ms+1:PRINT"You just gained 1 marksmanship point."
   PRINT"Your max. health increases by 8 
points.":maxhealth=maxhealth+8:health=health+8
   IF c(i,10)>0 AND weapon <>10 THEN PRINT"You find"c(i,10)"dollars 
on the ";:GOSUB EnemyName:PRINT".":money=money+c(i,10)
   IF c(i,10)>0 AND weapon=10 THEN PRINT"You just 
torched"c(i,10)"dollars."
   IF c(i,1)<>17 THEN PRINT"You find ";:weap=c(i,6):GOSUB 
WeaponName:PRINT" on the ";:GOSUB EnemyName:PRINT".":IF 
weapon<>c(i,6) THEN MENU 3,c(i,6),1:We(c(i,6))=1
   IF arm<>1 AND weapon<>10 THEN PRINT"You also find a ";:GOSUB 
ArmorName:PRINT" on the ";:GOSUB EnemyName:PRINT".":IF 
armor<>arm THEN MENU 2,arm,1:Ar(arm)=1
   IF c(i,1)=19 OR c(i,1)=21 OR c(i,1)=24 OR c(i,1)=25 OR c(i,1)=28 
THEN IF game=0 THEN leaders=leaders+1:IF leaders=5 THEN PRINT"A 
gate opens somewhere.":b(1,79)=100
   IF c(i,1)=19 OR c(i,1)=24 OR c(i,1)=25 THEN IF game=1 THEN 
leaders=leaders+1
   c(i,1)=0
   b(c(i,8),c(i,9))=74
   IF RND<.033 THEN b(c(i,8),c(i,9))=78
   IF RND<.033 THEN b(c(i,8),c(i,9))=77
   IF RND<.033 THEN b(c(i,8),c(i,9))=79
   GOSUB PrintStats
RETURN

EnemyAttack:
   IF c(i,11)=-1 THEN monsterrun=-1:RETURN
   IF c(i,2)<40+game*20 AND RND>.9 THEN c(i,11)=-1:monsterrun=-
1:WINDOW 4:drawtext"The ":GOSUB EnemyName:PRINT" decides to run 
away.":RETURN
   distance=0
   fa1=c(i,3):ma1=c(i,5):ms1=c(i,4):weap=c(i,6)
   IF weap=12 THEN weap=2
   arm=armor:fa2=fa:ma2=ma
   GOSUB Fight
   WINDOW 4
   IF damage<0 OR damage=0 THEN drawtext"The ":GOSUB 
EnemyName:PRINT" missed you.":RETURN
   health=health-damage
   q=INT(RND*3)+74:IF q=74 THEN q=73
   WINDOW 1
      PUT((3)*45+1,(3)*45+1)-((3)*45+44,(3)*45+44),a(0,q),PSET
   WINDOW 4
   drawtext"The ":GOSUB EnemyName:PRINT" hit you 
for";damage;"health points."
   IF weap=3 AND RND*100<(ma1-ma2) THEN GOSUB DisArm
   IF weap=6 AND RND*100<(ma1-ma2+20) THEN GOSUB DisArm
   IF weap=11 AND RND*100<(fa1-fa2) THEN GOSUB CutUpArmor
   IF c(i,1)=14 AND RND<.4 THEN GOSUB StealMoney
   GOSUB PrintStats
   IF health<0 THEN Dead
RETURN

DisArm:
   IF weapon=1 OR weapon=2 THEN RETURN
   weap=weapon
   PRINT"He hit your weapon and broke it."
   MENU 3,weapon,0:We(weapon)=0
   m=1:GOTO ChangeWeapon2

CutUpArmor:
   IF armor=1 THEN RETURN
   PRINT"He cut up your armor."
   MENU 2,armor,0:Ar(armor)=0
   MENU 2,1,2
   armor=1
   RETURN

StealMoney:
   c(i,10)=c(i,10)+money
   money=0
   c(i,11)=-1
   RETURN

Fight:
   IF weap=12 THEN weap=3
   IF weap=1 THEN probhit=fa1-fa2+60
   IF weap=2 THEN probhit=fa1-fa2+50
   IF weap=3 THEN probhit=ma1-ma2+30
   IF weap=4 THEN probhit=fa1-fa2+40
   IF weap=5 THEN probhit=fa1-fa2+40
   IF weap=6 THEN probhit=ma1-ma2+20
   IF weap=7 THEN probhit=ms1
   IF weap=8 THEN probhit=ms1-distance*25
   IF weap=9 THEN probhit=ms1-distance*15
   IF weap=10 THEN probhit=80
   IF weap=11 THEN probhit=fa1-fa2+50
   IF RND*100>probhit THEN damage=-1:RETURN
   damage=INT(d1(arm,weap)+d2(arm,weap)*RND)
RETURN

EnemyName:
   IF game=1 THEN Game1Names
   IF c(i,1)=18 THEN drawtext"Coyote"
   IF c(i,1)=19 THEN drawtext"Coyote Chief"
   IF c(i,1)=9 THEN drawtext"bum"
   IF c(i,1)=10 THEN drawtext"businessman"
   IF c(i,1)=11 THEN drawtext"innocent lady"
   IF c(i,1)=12 THEN drawtext"shop keeper"
   IF c(i,1)=13 THEN drawtext"vandal"
   IF c(i,1)=14 THEN drawtext"pickpocket"
   IF c(i,1)=15 THEN drawtext"ninja"
   IF c(i,1)=16 THEN drawtext"Terminator"
   IF c(i,1)=17 THEN drawtext"alley rat"
   IF c(i,1)=20 THEN drawtext"Street King"
   IF c(i,1)=21 THEN drawtext"Street King Leader"
   IF c(i,1)=22 THEN drawtext"Warrior"
   IF c(i,1)=23 THEN drawtext"Warrior"
   IF c(i,1)=24 THEN drawtext"Head Warrior"
   IF c(i,1)=25 THEN drawtext"Top Dawg"
   IF c(i,1)=26 THEN drawtext"Dawg"
   IF c(i,1)=27 THEN drawtext"Alleymaster"
   IF c(i,1)=28 THEN PRINT"Master of the":drawtext"Alleymasters"
RETURN
Game1Names: IF c(i,1)=18 THEN drawtext"Road Master"
   IF c(i,1)=19 THEN PRINT"Supreme Road":drawtext"Master"
   IF c(i,1)=9 THEN drawtext"school boy"
   IF c(i,1)=10 THEN drawtext"businessman"
   IF c(i,1)=11 THEN drawtext"innocent lady"
   IF c(i,1)=12 THEN drawtext"shop keeper"
   IF c(i,1)=14 THEN drawtext"thief"
   IF c(i,1)=15 THEN drawtext"ninja"
   IF c(i,1)=16 THEN drawtext"Terminator"
   IF c(i,1)=17 THEN drawtext"alley rat"
   IF c(i,1)=22 THEN drawtext"Dragon"
   IF c(i,1)=23 THEN drawtext"Lt Mauler"
   IF c(i,1)=24 THEN drawtext"Head Dragon"
   IF c(i,1)=25 THEN drawtext"Captain Mauler"
   IF c(i,1)=26 THEN drawtext"Mauler"
   IF c(i,1)=27 THEN drawtext"robot"
   IF c(i,1)=28 THEN drawtext"droid"
RETURN

ArmorName:
   IF arm=2 THEN drawtext"leather vest"
   IF arm=3 THEN drawtext"metal vest"
   IF arm=4 THEN drawtext"bullet-proof vest"
   IF arm=5 THEN drawtext"flame retardant vest"
   IF arm=6 THEN PRINT"bullet-proof/":drawtext"flame retardant 
vest"
RETURN

TransferFromClipBoard:
STOP
OPEN "clip:picture" FOR INPUT AS 1
image$=INPUT$(LOF(1),1)
CLOSE #1
OPEN "Temporary" FOR OUTPUT AS 1
PRINT #1,image$
CLOSE #1
END

LoadCityIPictures:
   WINDOW 1,,(0,20)-(550,45*7+30),4
   OPEN"figures" FOR INPUT AS 1
      image$=INPUT$(LOF(1),1)
   CLOSE #1
   CLS
   PICTURE(0,0), image$
   i=0
   FOR y=0 TO 3
      FOR x=0 TO 8
         GET(x*45+1,y*45+1)-((x+1)*45-1,(y+1)*45-1),a(0,i)
         i=i+1
      NEXT x
   NEXT y
   FOR x=0 TO 5
      GET(x*45+1,4*45+1)-((x+1)*45-1,(4+1)*45-1),a(0,i)
      i=i+1
   NEXT
   OPEN"figures2" FOR INPUT AS 1
      image$=INPUT$(LOF(1),1)
   CLOSE #1
   CLS
   PICTURE(0,0), image$
   FOR y=0 TO 2
      FOR x=8 TO 0 STEP -1
         GET(x*45+1,y*45+1)-((x+1)*45-1,(y+1)*45-1),a(0,i)
         i=i+1
      NEXT x
   NEXT y
   GET(7*45+1,3*45+1)-(8*45-1,4*45-1),a(0,70)
   GET(8*45+1,3*45+1)-(9*45-1,4*45-1),a(0,69)
   i=71
   OPEN"GraveGrid" FOR INPUT AS 1
      image$=INPUT$(LOF(1),1)
   CLOSE #1
   CLS
   PICTURE(0,0), image$
   FOR y=0 TO 1
      FOR x=0 TO 5
         GET(x*45+1,y*45+1)-((x+1)*45-1,(y+1)*45-1),a(0,i)
         i=i+1
      NEXT x
   NEXT y
   i=82
   FOR y=0 TO 2
      FOR x=6 TO 8
         GET(x*45+1,y*45+1)-((x+1)*45-1,(y+1)*45-1),a(0,i)
         i=i+1
      NEXT x
   NEXT y
   image$=""
   WINDOW 1,,(0,20)-(45*7,45*7+20),4
RETURN

SetUpScreen:
   WINDOW 1,,(0,20)-(45*7,45*7+20),4
   WINDOW 2,,(45*7+5,20)-(505,115),4
   WINDOW 4,,(45*7+5,120)-(505,205),4
   WINDOW 3,,(45*7+5,45*7-105)-(505,45*7+20),4
   CLS
   BUTTON 1,1,"NW",(2,2)-(62,24)
   BUTTON 2,1,"N",(64,2)-(124,24)
   BUTTON 3,1,"NE",(126,2)-(184,24)
   BUTTON 4,1,"W",(2,25)-(62,73)
   BUTTON 5,1,"E",(126,25)-(184,73)
   BUTTON 6,1,"SW",(2,74)-(62,96)
   BUTTON 7,1,"S",(64,74)-(124,96)
   BUTTON 8,1,"SE",(126,74)-(184,96)
   BUTTON 9,1,"Shoot",(2,100)-(62,123)
   BUTTON 10,1,"Pass",(64,100)-(124,123)
   BUTTON 11,1,"Use",(126,100)-(184,123)
   BUTTON 12,1,"",(64,25)-(124,73)
   PUT(70,27)-(113,70),a(0,guy),PSET
   WINDOW 1
   RETURN

MakeMenus:
   MENU 1,0,1,"File"
   MENU 1,1,1,"New Game"
   MENU 1,3,1,"Save Game As ..."
   MENU 1,2,1,"Open Old Game ..."
   MENU 1,4,1,"Quit"
   cmdkey 1,3,"S"
   cmdkey 1,2,"O"
   cmdkey 1,4,"Q"
   MENU 3,0,1,"Weapons"
   MENU 3,1,2,"Bare hands"
   MENU 3,2,0,"Brass knuckles"
   MENU 3,3,0,"Staff"
   MENU 3,4,0,"Knife"
   MENU 3,5,0,"Dagger"
   MENU 3,6,0,"Nunchuks"
   MENU 3,7,0,"Pistol"
   MENU 3,8,0,"Sawed-off shotgun"
   MENU 3,9,0,"Sniper rifle"
   MENU 3,10,0,"Flame thrower"
   MENU 3,11,0,"Chain saw"
   MENU 3,12,0,"Rocket launcher"
   MENU 2,0,1,"Armor"
   MENU 2,1,2,"Street clothes"
   MENU 2,2,0,"Leather"
   MENU 2,3,0,"Metal"
   MENU 2,4,0,"Bullet-proof"
   MENU 2,5,0,"Flame retardant"
   MENU 2,6,0,"Bullet-proof & flame retardant"
   cmdkey 3,1,"1"
   cmdkey 3,2,"2"
   cmdkey 3,3,"3"
   cmdkey 3,4,"4"
   cmdkey 3,5,"5"
   cmdkey 3,6,"6"
   cmdkey 3,7,"7"
   cmdkey 3,8,"8"
   cmdkey 3,9,"9"
   cmdkey 3,10,"A"
   cmdkey 3,11,"B"
   cmdkey 3,12,"C"
RETURN

InitCityI:
   changecursor 4
   MENU 1,0,0,""
   MENU 2,0,0,""
   MENU 3,0,0,""
   game=0
   cityxmax=64
   cityymax=79
   WINDOW 1,,(0,20)-(550,45*7+30),4
   OPEN"GangWarsWelcome" FOR INPUT AS 1
      image$=INPUT$(LOF(1),1)
   CLOSE #1
   CLS
   PICTURE(0,0), image$
   image$=""
   FOR h1=1 TO 125
      FOR h2=1 TO 11
         c(h1,h2)=0
   NEXT h2,h1
   FOR h1=1 TO 65
      FOR h2=1 TO 80
         monster(h1,h2)=0
   NEXT h2,h1
   GOSUB GetCity
   guy=3
   x=1:y=1:weapon=1:armor=1:fired=0
   b(x,y)=guy:cnt=0:numposs=1:poss$(1)="grenade"
   bullets=0:flamepack=0:rockets=0
   gren=0:dyn=0:leaders=0
   RESTORE CityIData
   CityIData:
   DATA 
16,31,30,8,33,32,9,33,33,8,62,38,9,62,39,42,57,34,43,57,35,57,52,
38,58,52,39
   DATA 
43,23,32,44,23,33,58,27,34,59,27,35,48,3,36,49,3,37,35,63,36,36,6
3,37
   DATA 
7,27,34,8,27,35,7,24,40,8,24,41,63,66,31,8,16,31,5,78,30,51,2,30
   DATA 
56,12,77,60,63,77,26,78,77,10,75,77,8,47,77,8,6,78,63,51,78,1,43,
78
   DATA 41,66,78,25,78,78,23,24,79,4,78,79,56,4,79,60,78,79,0,0,0
   DATA 
8,13,18,8,9,18,6,22,18,6,20,18,16,27,18,18,28,18,25,29,18,27,26,1
8
   DATA 
23,23,18,23,25,18,29,25,18,31,28,18,43,20,18,45,28,18,36,65,18,2
5,23,19
   DATA 9,25,14,41,38,14,57,37,14,56,47,14,46,57,14,23,61,14
   DATA 
13,23,9,15,29,9,51,22,9,58,1,9,52,47,9,41,67,9,58,70,9,9,76,9,51,1,
9,63,78,15,1,78,16
   DATA 
6,29,17,41,42,17,56,13,17,48,47,17,37,54,17,63,68,17,29,75,17,18,
67,17,10,10,17,52,65,17,57,16,17,40,5,17
   DATA 14,26,13,46,28,13,16,66,13,61,21,13,56,34,13,16,78,13
   DATA 25,35,11,58,46,11,9,61,11,32,10,11,46,1,11,26,44,11
   DATA 32,39,10,57,19,10,47,64,10,5,60,10,1,39,10,20,3,10
   DATA 
6,27,12,6,24,12,7,34,12,44,24,12,59,28,12,58,53,12,35,64,12,41,57
,12,7,62,12,50,3,12
   DATA 
63,40,22,52,50,23,51,55,22,52,61,23,34,59,22,32,57,23,42,64,23,5
6,58,23,60,58,24,61,60,22,56,63,23,63,60,22
   DATA 
20,55,26,7,53,26,28,56,26,8,48,26,32,56,26,7,51,26,29,45,26,5,49,
25,10,40,26,15,45,26,12,46,26,3,46,26
   DATA 
27,75,28,1,71,27,4,76,27,12,76,27,23,75,27,19,72,27,21,74,27,23,7
8,27,31,78,27,32,73,27,41,71,27,46,71,27,50,78,27
   DATA 
56,6,21,57,4,20,54,6,20,62,6,20,62,4,20,59,12,20,61,12,20,63,15,2
0,41,31,20,56,26,20,51,26,20
   DATA 0,0,0
   loop1:
      READ c1,c2,c3
      IF c1=0 THEN GoOn2
      b(c1,c2)=c3
      GOTO loop1
   GoOn2:
   i=0
   loop2:
      READ c1,c2,c3
      IF c1=0 THEN RETURN
      i=i+1
      c(i,1)=c3:c(i,8)=c1:c(i,9)=c2:monster(c1,c2)=i
      b(c1,c2)=c3
      IF c3=18 THEN GOSUB MakeCoyote
      IF c3=9 THEN GOSUB MakeBum
      IF c3=10 OR c3=11 THEN GOSUB MakeCivilian
      IF c3=12 THEN GOSUB MakeShopKeeper
      IF c3=13 THEN GOSUB MakeVandal
      IF c3=14 THEN GOSUB MakePickPocket
      IF c3=15 THEN GOSUB MakeNinja
      IF c3=16 THEN GOSUB MakeTerminator
      IF c3=17 THEN GOSUB MakeRat
      IF c3=19 THEN GOSUB MakeChiefCoyote
      IF c3=20 THEN GOSUB MakeStreetKing
      IF c3=21 THEN GOSUB MakeChiefStreetKing
      IF c3=22 THEN GOSUB MakeWarrior1
      IF c3=23 THEN GOSUB MakeWarrior2
      IF c3=24 THEN GOSUB MakeChiefWarrior
      IF c3=25 THEN GOSUB MakeChiefDawg
      IF c3=26 THEN GOSUB MakeDawg
      IF c3=27 THEN GOSUB MakeAlleyMaster
      IF c3=28 THEN GOSUB MakeChiefAlleyMaster
      GOTO loop2

PrintStats:
   WINDOW 2
   CLS
   CALL TEXTSIZE(9)
   CALL TEXTFACE(1)
   drawtext nme$
   PRINT
   CALL TEXTFACE(0)
   drawtext "Max. Health: "+STR$(maxhealth):PRINT
   drawtext"Actual Health: "+STR$(health):PRINT
   drawtext"Fighting Ability: "+STR$(fa):PRINT
   drawtext"Marksmanship: "+STR$(ms):PRINT
   drawtext"Martial Arts Ability: "+STR$(ma):PRINT
   drawtext"Thieving Ability: "+STR$(ta):PRINT
   drawtext"Money: $"+STR$(money)
RETURN

MakeStats:
   WINDOW 4
   CALL TEXTSIZE(9)
   PRINT"Please enter the name for your":PRINT"character:"
   INPUT nme$
   MakeStats2: maxhealth=INT(75*RND+100)
   health=maxhealth
   money=RND*11+5
   fa=INT(20*RND+40)
   ms=INT(20*RND+40)
   ma=INT(20*RND+40)
   ta=INT(35*RND+10)
   GOSUB PrintStats
   WINDOW 4
   q$=INKEY$:q$=INKEY$:q$=INKEY$
   PRINT"Want these stats (y/n)?";
   loop9: q$=INKEY$:IF q$="" THEN loop9
   PRINT q$
   IF UCASE$(q$)="N" THEN MakeStats2
RETURN

MakeCoyote:
   c(i,2)=INT(50*RND+100)
   c(i,3)=INT(10*RND+50)
   c(i,4)=0
   c(i,5)=INT(10*RND+40)
   c(i,6)=2
   c(i,7)=1
   c(i,10)=INT(6*RND)
RETURN

MakeNinja:
   c(i,2)=INT(400+RND*200)
   c(i,3)=INT(70+RND*20)
   c(i,4)=0
   c(i,5)=INT(90+RND*10)
   c(i,6)=6
   c(i,7)=1
   c(i,10)=INT(10+RND*10)
RETURN

MakeVandal:
   c(i,2)=INT(60+RND*10)
   c(i,3)=INT(45+RND*10)
   c(i,4)=0
   c(i,5)=INT(40+RND*10)
   c(i,6)=1
   c(i,7)=1
   c(i,10)=INT(RND*3)
RETURN

MakePickPocket:
   c(i,2)=INT(70+RND*10)
   c(i,3)=INT(50+RND*10)
   c(i,4)=0
   c(i,5)=INT(50+RND*10)
   c(i,6)=1
   c(i,7)=1
   c(i,10)=INT(5+RND*5)
RETURN

MakeCivilian:
   c(i,2)=INT(80+RND*10)
   c(i,3)=INT(40+RND*10)
   c(i,4)=0
   c(i,5)=INT(30+RND*10)
   c(i,6)=1
   c(i,7)=1
   c(i,10)=INT(RND*20)
RETURN

MakeBum:
   c(i,2)=INT(65+RND*15)
   c(i,3)=INT(55+RND*10)
   c(i,4)=0
   c(i,5)=INT(50+RND*5)
   c(i,6)=1
   c(i,7)=1
   c(i,10)=0
RETURN

MakeRat:
   c(i,2)=INT(20+RND*10)
   c(i,3)=INT(50+RND*10)
   c(i,4)=0
   c(i,5)=INT(20+RND*20)
   c(i,6)=2
   c(i,7)=1
   c(i,10)=0
RETURN

MakeShopKeeper:
   c(i,2)=INT(625+RND*40)+600*game
   c(i,3)=INT(70+RND*15)
   c(i,4)=INT(85+RND*12)
   c(i,5)=INT(65+RND*20)
   c(i,6)=7+game
   c(i,7)=6
   c(i,10)=INT(150+RND*200)
   c(i,11)=0
RETURN

MakeTerminator:
   c(i,2)=INT(900+RND*100)
   c(i,3)=INT(80+RND*15)
   c(i,4)=INT(85+RND*15)
   c(i,5)=INT(75+RND*15)
   c(i,6)=8
   c(i,7)=4
   c(i,10)=INT(200+RND*10)
RETURN

MakeChiefCoyote:
   c(i,2)=INT(150+RND*75)
   c(i,3)=INT(70+RND*10)
   c(i,4)=0
   c(i,5)=INT(55+RND*10)
   c(i,6)=4
   c(i,7)=2
   c(i,10)=INT(30+RND*25)
RETURN

MakeStreetKing:
   c(i,2)=INT(150+RND*25)
   c(i,3)=INT(80+RND*10)
   c(i,4)=0
   c(i,5)=INT(60+RND*10)
   c(i,6)=4
   c(i,7)=2
   c(i,10)=INT(RND*15)
RETURN

MakeChiefStreetKing:
   c(i,2)=INT(200+RND*50)
   c(i,3)=INT(85+RND*10)
   c(i,4)=0
   c(i,5)=INT(60+RND*10)
   c(i,6)=4
   c(i,7)=3
   c(i,10)=INT(40+RND*25)
RETURN

MakeWarrior1:
   c(i,2)=INT(125+RND*50)
   c(i,3)=INT(65+RND*10)
   c(i,4)=0
   c(i,5)=INT(65+RND*20)
   c(i,6)=3
   c(i,7)=1
   c(i,10)=INT(RND*10)
RETURN

MakeWarrior2:
   c(i,2)=INT(175+RND*75)
   c(i,3)=INT(90+RND*10)
   c(i,4)=0
   c(i,5)=INT(60+RND*10)
   c(i,6)=5
   c(i,7)=3
   c(i,10)=INT(5+RND*25)
RETURN

MakeChiefWarrior:
   c(i,2)=INT(225+RND*50)
   c(i,3)=INT(95+RND*10)
   c(i,4)=0
   c(i,5)=INT(80+RND*15)
   c(i,6)=6
   c(i,7)=3
   c(i,10)=INT(55+RND*20)
RETURN

MakeDawg:
   c(i,2)=INT(210+RND*50)
   c(i,3)=INT(95+RND*5)
   c(i,4)=0
   c(i,5)=INT(80+RND*10)
   c(i,6)=6
   c(i,7)=3
   c(i,10)=INT(15+RND*15)
RETURN

MakeChiefDawg:
   c(i,2)=INT(250+RND*75)
   c(i,3)=INT(90+RND*15)
   c(i,4)=INT(80+RND*10)
   c(i,5)=INT(80+RND*10)
   c(i,6)=7
   c(i,7)=4
   c(i,10)=INT(75+RND*25)
RETURN

MakeAlleyMaster:
   c(i,2)=INT(225+RND*65)
   c(i,3)=INT(85+RND*15)
   c(i,4)=INT(75+RND*15)
   c(i,5)=INT(80+RND*5)
   c(i,6)=7
   c(i,7)=4
   c(i,10)=INT(50+RND*25)
RETURN

MakeChiefAlleyMaster:
   c(i,2)=INT(350+RND*95)
   c(i,3)=INT(95+RND*11)
   c(i,4)=INT(85+RND*15)
   c(i,5)=INT(84+RND*10)
   c(i,6)=8
   c(i,7)=4
   c(i,10)=INT(219+RND*115)
RETURN

MakeGonzales:
   c(i,2)=INT(200+RND*95)
   c(i,3)=INT(75+RND*11)
   c(i,4)=INT(50+RND*15)
   c(i,5)=INT(84+RND*10)
   c(i,6)=8
   c(i,7)=4
   c(i,10)=INT(30+RND*50)
RETURN

MakeChiefGonzales:
   c(i,2)=INT(550+RND*95)
   c(i,3)=INT(90+RND*11)
   c(i,4)=INT(85+RND*15)
   c(i,5)=INT(84+RND*10)
   c(i,6)=10
   c(i,7)=5
   c(i,10)=INT(219+RND*150)
RETURN

MakeBuzzer:
   c(i,2)=INT(450+RND*95)
   c(i,3)=INT(120+RND*16)
   c(i,4)=INT(50+RND*15)
   c(i,5)=INT(50+RND*10)
   c(i,6)=11
   c(i,7)=6
   c(i,10)=INT(111+RND*14)
RETURN

MakeChiefBuzzer:
   c(i,2)=INT(850+RND*95)
   c(i,3)=INT(140+RND*11)
   c(i,4)=INT(85+RND*15)
   c(i,5)=INT(50+RND*10)
   c(i,6)=12
   c(i,7)=6
   c(i,10)=INT(419+RND*115)
RETURN

MakeLtBuzzer:
   c(i,2)=INT(350+RND*95)
   c(i,3)=INT(125+RND*6)
   c(i,4)=INT(85+RND*15)
   c(i,5)=INT(55+RND*10)
   c(i,6)=12
   c(i,7)=6
   c(i,10)=INT(219+RND*115)
RETURN

MakeThief:
   c(i,2)=INT(150+RND*95)
   c(i,3)=INT(60+RND*11)
   c(i,4)=INT(62+RND*15)
   c(i,5)=INT(60+RND*10)
   c(i,6)=9
   c(i,7)=3
   c(i,10)=INT(30+RND*10)
RETURN

MakeRobotII:
   c(i,2)=INT(350+RND*95)
   c(i,3)=INT(30+RND*11)
   c(i,4)=INT(95+RND*5)
   c(i,5)=INT(30+RND*10)
   c(i,6)=10
   c(i,7)=3
   c(i,10)=0
RETURN

MakeRobotI:
   c(i,2)=INT(175+RND*95)
   c(i,3)=INT(60+RND*11)
   c(i,4)=INT(65+RND*15)
   c(i,5)=INT(40+RND*10)
   c(i,6)=8
   c(i,7)=6
   c(i,10)=0
RETURN

MakeSchoolBoy:
   c(i,2)=INT(100+RND*55)
   c(i,3)=INT(80+RND*11)
   c(i,4)=INT(30+RND*15)
   c(i,5)=INT(55+RND*10)
   c(i,6)=4
   c(i,7)=3
   c(i,10)=INT(10+RND*10)
RETURN

MakeGrizzlie:
   c(i,2)=INT(400+RND*155)
   c(i,3)=INT(70+RND*11)
   c(i,4)=INT(30+RND*15)
   c(i,5)=INT(60+RND*16)
   c(i,6)=10
   c(i,7)=3
   c(i,10)=INT(50+RND*50)
RETURN

MakeChiefGrizzlie:
   c(i,2)=INT(300+RND*155)
   c(i,3)=INT(75+RND*15)
   c(i,4)=INT(30+RND*15)
   c(i,5)=INT(65+RND*40)
   c(i,6)=11
   c(i,7)=6
   c(i,10)=INT(200+RND*75)
RETURN

ChangeWeapon:
   m=MENU(1)
   MENU 3,weapon,1
ChangeWeapon2:
   MENU 3,m,2
   weapon=m
   IF m=1 OR m=2 THEN guy=3
   IF m=3 THEN guy=1
   IF m=4 THEN guy=2
   IF m=5 THEN guy=4
   IF m=6 THEN guy=6
   IF m=7 THEN guy=0
   IF m=8 THEN guy=8
   IF m=9 THEN guy=7
   IF m=10 THEN guy=5
   IF m=11 THEN guy=21
   IF m=12 THEN guy=20
   b(x,y)=guy
   WINDOW 3
   CLS
   PUT(70,27)-(113,70),a(0,guy)
   WINDOW 1
   PUT(3*45+1,3*45+1)-(4*45-1,4*45-1),a(0,guy),PSET
RETURN

ChangeArmor:
   m=MENU(1)
   MENU 2,armor,1
   MENU 2,m,2
   armor=m
RETURN

WeaponName:
   IF weap=1 THEN PRINT "no weapon";
   IF weap=2 THEN PRINT"brass knuckles";
   IF weap=3 THEN PRINT"a staff";
   IF weap=4 THEN PRINT"a knife";
   IF weap=5 THEN PRINT"a dagger";
   IF weap=6 THEN PRINT"nunchuks";
   IF weap=7 THEN PRINT"a pistol";
   IF weap=8 THEN PRINT"a shotgun";
   IF weap=9 THEN PRINT"a rifle";
   IF weap=10 THEN PRINT"a flame thrower";
   IF weap=11 THEN PRINT"a chain saw";
   IF weap=12 THEN PRINT"a rocket launcher";
RETURN

Hospital:
   rehealth=money*3
   IF rehealth>maxhealth-health THEN rehealth=maxhealth-health
   WINDOW 1
   BUTTON 1,1,"Less",(5,75)-(55,100),1
   BUTTON 2,1,"More",(60,75)-(115,100),1
   BUTTON 3,1,"OK",(120,75)-(175,100),1
   BUTTON 4,1,"Cancel",(180,75)-(235,100),1
   Hosploop2: CLS
   CALL TEXTSIZE(12)
   CALL TEXTFACE(1)
   PRINT"       Welcome to the Hospital"
   CALL TEXTFACE(0)
   PRINT
   PRINT"Health points regained:"
   PRINT"Price:                           $"
   PRINT:PRINT:PRINT:PRINT
   Hosploop3: price=rehealth/3
      LOCATE 3,20:PRINT rehealth;
      LOCATE 4,20:PRINT price;
   Hosploop1: m=DIALOG(0)
      IF m<>1 THEN Hosploop1
      m=DIALOG(1)
      IF m=4 THEN BUTTON CLOSE 1:BUTTON CLOSE 2:BUTTON CLOSE 
3:BUTTON CLOSE 4:RETURN
      IF m=1 AND rehealth>0 THEN rehealth=rehealth-3:GOTO Hosploop3
      IF m=2 AND rehealth<maxhealth-health-3 THEN 
rehealth=rehealth+3:GOTO Hosploop3
      IF m<>3 THEN Hosploop3
      IF price>money THEN WINDOW 4:PRINT"You don't have that much 
money.":WINDOW 1:BEEP:GOTO Hosploop2
      money=money-price
      health=health+rehealth
      BUTTON CLOSE 1:BUTTON CLOSE 2:BUTTON CLOSE 3:BUTTON CLOSE 
4
      CLS
      GOSUB PrintStats
      IF rehealth=0 THEN RETURN
      WINDOW 4:PRINT"You just purchased"rehealth"health points."
      PRINT"You feel much better."
RETURN

Inventory:
   flag=2
   WINDOW 3
   PUT(70,27)-(113,70),a(0,guy),PSET
   WINDOW 4
   CALL TEXTSIZE(9)
   PRINT"You are carrying:"
   PRINT"Bullets:";bullets;"     Rockets:";rockets
   PRINT"Flame pack charges:";flamepack
   IF numposs=0 THEN PRINT"no special items.":RETURN
   i=0
   FOR q=1 TO numposs
      drawtext poss$(q)
      IF i<2 AND q<>numposs THEN drawtext", "
      i=i+1:IF i=3 THEN i=0:PRINT
   NEXT q
   PRINT
RETURN

Caught:
   WINDOW 4
   CALL TEXTSIZE(9)
   PRINT"You were caught trying to steal,"
   PRINT"and the shopkeeper isn't happy."
   FOR h=x-3 TO x+3
      FOR v=y-3 TO y+3
         IF h<0 OR v<0 THEN GoOn9
         IF b(h,v)=12 THEN FoundIt2
      GoOn9:NEXT v
   NEXT h
   PRINT"You are lucky, there is no"
   PRINT"shopkeeper around."
   RETURN
   FoundIt2:
      FOR i=1 TO 125
         IF c(i,1)<>0 AND c(i,8)=h AND c(i,9)=v THEN FoundIt3
      NEXT
      STOP
   FoundIt3:
   c(i,11)=1
   PRINT"He's coming after you."
RETURN

ArmorStore:
   WINDOW 1
   butsel=1
   CLS
   CALL TEXTSIZE(12)
   CALL TEXTFACE(1)
   PRINT"        Welcome to the Armor Shop"
   CALL TEXTFACE(0)
   PRINT:PRINT
   PRINT"Leather Vest......................$25.00":PRINT
   PRINT"Metal Vest..........................$45.00":PRINT
   PRINT"Bullet-Proof Vest.........$130.00":PRINT
   PRINT"Flame Retardant Vest....$50.00":PRINT
   BUTTON 1,2,"",(220,48)-(234,62),3
   BUTTON 2,1,"",(220,80)-(234,94),3
   BUTTON 3,1,"",(220,112)-(234,126),3
   BUTTON 4,1,"",(220,144)-(234,158),3
   BUTTON 5,1,"OK",(5,200)-(65,225)
   BUTTON 6,1,"Cancel",(70,200)-(130,225)
   BUTTON 7,1,"Steal",(135,200)-(195,225)
   Standby: m=DIALOG(0)
      IF m<>1 THEN Standby
   m=DIALOG(1)
   IF m=6 THEN FOR q=1 TO 7:BUTTON CLOSE q:NEXT:CLS:RETURN
   IF m=5 THEN PurchaseArmor
   IF m=7 THEN StealArmor
   FOR q=1 TO 4:BUTTON q,1:NEXT
   butsel=m:BUTTON m,2
   GOTO Standby
   PurchaseArmor:
      IF butsel=1 AND money<25 THEN BEEP:GOTO Standby
      IF butsel=2 AND money<45 THEN BEEP:GOTO Standby
      IF butsel=3 AND money<130 THEN BEEP:GOTO Standby
      IF butsel=4 AND money<50 THEN BEEP:GOTO Standby
      IF butsel=1 THEN money=money-25
      IF butsel=2 THEN money=money-45
      IF butsel=3 THEN money=money-130
      IF butsel=4 THEN money=money-50
      IF armor<>butsel+1 THEN MENU 2,butsel+1,1:Ar(butsel+1)=1
      FOR q=1 TO 7:BUTTON CLOSE q:NEXT
      GOSUB PrintStats
      WINDOW 4
      PRINT"Congratulations, you have just ":PRINT"purchased a brand 
new ";:arm=butsel+1:GOSUB ArmorName:PRINT"."
RETURN
   StealArmor:
       FOR h=x-3 TO x+3
         FOR v=y-3 TO y+3
            IF h<0 OR v<0 THEN GoOnArmor
            IF b(h,v)=12 THEN FoundItArmor
         GoOnArmor: NEXT v
      NEXT h
      WINDOW 4
      PRINT"There is no shopkeeper around."
      WINDOW 1
      IF RND>.2 THEN GOSUB MakeNewShopkeeper
      GOTO EasyStealArmor
      FoundItArmor:
      IF RND*100>ta THEN FOR q=1 TO 7:BUTTON CLOSE q:NEXT:GOTO 
Caught
      EasyStealArmor:
      IF armor<>butsel+1 THEN MENU 2,butsel+1,1:Ar(butsel+1)=1
      FOR q=1 TO 7:BUTTON CLOSE q:NEXT
      FOR h=x-3 TO x+3
         FOR v=y-3 TO y+3
            IF h<0 OR v<0 THEN GoOn10
            IF b(h,v)=12 THEN ta=ta+5
         GoOn10: NEXT v
      NEXT h
      GOSUB PrintStats
      WINDOW 4
      PRINT"You just stole a ";:arm=butsel+1:GOSUB 
ArmorName:PRINT"."
      RETURN

GunStore:
   WINDOW 1
   butsel=1
   CLS
   CALL TEXTSIZE(12)
   CALL TEXTFACE(1)
   PRINT"        Welcome to the Weapons Store"
   CALL TEXTFACE(0)
   PRINT
   PRINT"Brass Knuckles.........$10.00":PRINT
   PRINT"Knife..............................$20.00":PRINT
   PRINT"Dagger...........................$30.00":PRINT
   PRINT"Pistol............................$70.00":PRINT
   PRINT"Shotgun......................$100.00":PRINT
   PRINT"Rifle............................$155.00":PRINT
   PRINT"Flame Thrower........$200.00":PRINT
   IF game=1 THEN PRINT"Rocket Launcher...$1200.00":PRINT
   BUTTON 1,2,"",(220,32)-(234,46),3
   BUTTON 2,1,"",(220,64)-(234,78),3
   BUTTON 3,1,"",(220,96)-(234,110),3
   BUTTON 4,1,"",(220,128)-(234,142),3
   BUTTON 5,1,"",(220,160)-(234,174),3
   BUTTON 6,1,"",(220,192)-(234,206),3
   BUTTON 7,1,"",(220,224)-(234,238),3
   IF game=1 THEN BUTTON 8,1,"",(220,256)-(234,270),3
   BUTTON 9,1,"OK",(5,270)-(65,295)
   BUTTON 10,1,"Cancel",(70,270)-(130,295)
   BUTTON 11,1,"Steal",(135,270)-(195,295)
   Standby2: m=DIALOG(0)
      IF m<>1 THEN Standby2
   m=DIALOG(1)
   IF m=10 THEN FOR q=1 TO 11:BUTTON CLOSE q:NEXT:CLS:RETURN
   IF m=9 THEN PurchaseGun
   IF m=11 THEN StealGun
   FOR q=1 TO 7+game:BUTTON q,1:NEXT
   butsel=m:BUTTON m,2
   GOTO Standby2
   PurchaseGun:
      IF butsel=1 AND money<10 THEN BEEP:GOTO Standby2
      IF butsel=2 AND money<20 THEN BEEP:GOTO Standby2
      IF butsel=3 AND money<30 THEN BEEP:GOTO Standby2
      IF butsel=4 AND money<70 THEN BEEP:GOTO Standby2
      IF butsel=5 AND money<100 THEN BEEP:GOTO Standby2
      IF butsel=6 AND money<155 THEN BEEP:GOTO Standby2
      IF butsel=7 AND money<200 THEN BEEP:GOTO Standby2
      IF butsel=8 AND money<1200 THEN BEEP:GOTO Standby2
      IF butsel=1 THEN money=money-10
      IF butsel=2 THEN money=money-20
      IF butsel=3 THEN money=money-30
      IF butsel=4 THEN money=money-70
      IF butsel=5 THEN money=money-100
      IF butsel=6 THEN money=money-155
      IF butsel=7 THEN money=money-200
      IF butsel=8 THEN money=money-1200
      weap=butsel+3
      IF butsel=1 THEN weap=2
      IF butsel=2 THEN weap=4
      IF butsel=3 THEN weap=5
      IF butsel=8 THEN weap=12
      IF weapon<>weap THEN MENU 3,weap,1:We(weap)=1
      FOR q=1 TO 11:BUTTON CLOSE q:NEXT
      GOSUB PrintStats
      WINDOW 4
      PRINT"Congratulations, you have just ":PRINT"purchased ";:GOSUB 
WeaponName:PRINT"."
      IF weap>6 AND weap<10 THEN bullets=bullets+6:PRINT"The 
shopkeeper gives you 6 free bullets."
      IF weap=12 THEN rockets=rockets+5:PRINT"The shopkeeper gives 
you 5 free rockets."
      IF weap=10 THEN flamepack=flamepack+5:PRINT"The shopkeeper 
gives you a free":PRINT"gas filled flame pack."
RETURN
   StealGun:
      FOR h=x-3 TO x+3
         FOR v=y-3 TO y+3
            IF h<0 OR v<0 THEN GoOnGun
            IF b(h,v)=12 THEN FoundItGun
         GoOnGun: NEXT v
      NEXT h
      WINDOW 4
      PRINT"There is no shopkeeper around.":WINDOW 1
      IF RND>.7 THEN GOSUB MakeNewShopkeeper
      GOTO EasyStealGun
      FoundItGun:
      IF RND*100>ta THEN FOR q=1 TO 11:BUTTON CLOSE q:NEXT:GOTO 
Caught
      EasyStealGun:
     weap=butsel+3
      IF butsel=1 THEN weap=2
      IF butsel=2 THEN weap=4
      IF butsel=3 THEN weap=5
      IF butsel=8 THEN weap=12
      IF weapon<>weap THEN MENU 3,weap,1:We(weap)=1
      FOR q=1 TO 11:BUTTON CLOSE q:NEXT
      FOR h=x-3 TO x+3
         FOR v=y-3 TO y+3
            IF b(h,v)=12 THEN ta=ta+5+RND*5
         NEXT v
      NEXT h
      GOSUB PrintStats
      WINDOW 4
      PRINT"You just stole ";:GOSUB WeaponName:PRINT"."
      RETURN

AmmoStore:
   WINDOW 1
   butsel=1
   CLS
   CALL TEXTSIZE(12)
   CALL TEXTFACE(1)
   PRINT"        Welcome to the Ammo Depot"
   CALL TEXTFACE(0)
   PRINT:PRINT
   PRINT"10-Pack of Bullets...............$10.00":PRINT
   PRINT"Grenade......................................$50.00":PRINT
   PRINT"Dynamite...................................$75.00":PRINT
   PRINT"5 Flame Pack Charges.........$40.00":PRINT
   BUTTON 1,2,"",(220,48)-(234,62),3
   BUTTON 2,1,"",(220,80)-(234,94),3
   BUTTON 3,1,"",(220,112)-(234,126),3
   BUTTON 4,1,"",(220,144)-(234,158),3
   BUTTON 5,1,"OK",(5,200)-(65,225)
   BUTTON 6,1,"Cancel",(70,200)-(130,225)
   BUTTON 7,1,"Steal",(135,200)-(195,225)
   Standby3: m=DIALOG(0)
      IF m<>1 THEN Standby3
   m=DIALOG(1)
   IF m=6 THEN FOR q=1 TO 7:BUTTON CLOSE q:NEXT:CLS:RETURN
   IF m=5 THEN PurchaseAmmo
   IF m=7 THEN StealAmmo
   FOR q=1 TO 4:BUTTON q,1:NEXT
   butsel=m:BUTTON m,2
   GOTO Standby3
   PurchaseAmmo:
      CALL TEXTSIZE(9)
      IF butsel=1 AND money<10 THEN BEEP:GOTO Standby3
      IF butsel=2 AND money<50 THEN BEEP:GOTO Standby3
      IF butsel=3 AND money<75 THEN BEEP:GOTO Standby3
      IF butsel=4 AND money<40 THEN BEEP:GOTO Standby3
      IF (butsel=2 OR butsel=3) AND numposs=10 THEN BEEP:WINDOW 
4:PRINT"You cannot carry anymore items.":WINDOW 1:GOTO Standby3
      IF butsel=1 THEN money=money-10
      IF butsel=2 THEN money=money-50
      IF butsel=3 THEN money=money-75
      IF butsel=4 THEN money=money-40
      FOR q=1 TO 7:BUTTON CLOSE q:NEXT
      GOSUB PrintStats
      WINDOW 4
      PRINT"Congratulations,"
      IF butsel=1 THEN bullets=bullets+10:PRINT"you just purchased 
10 bullets."
      IF butsel=2 THEN 
numposs=numposs+1:poss$(numposs)="grenade":PRINT"you just 
purchased a grenade."
      IF butsel=3 THEN 
numposs=numposs+1:poss$(numposs)="dynamite":PRINT"you just 
purchased a stick":PRINT"of dynamite."
      IF butsel=4 THEN flamepack=flamepack+5:PRINT"you just 
purchased some more":PRINT"fuel for your flame thrower."
RETURN
   StealAmmo:
      IF (butsel=2 OR butsel=3) AND numposs=10 THEN BEEP:WINDOW 
4:PRINT"You cannot carry anymore items.":WINDOW 1:GOTO Standby3
      FOR h=x-3 TO x+3
         FOR v=y-3 TO y+3
            IF h<0 OR v<0 THEN GoOnAmmo
            IF b(h,v)=12 THEN FoundItAmmo
         GoOnAmmo: NEXT v
      NEXT h
      WINDOW 4
      PRINT"There is no shopkeeper around.":WINDOW 1
      IF RND>.7 THEN GOSUB MakeNewShopkeeper
      GOTO EasyStealAmmo
      FoundItAmmo:
      IF RND*100>ta THEN  FOR q=1 TO 7:BUTTON CLOSE q:NEXT:GOTO 
Caught
      EasyStealAmmo:
      FOR q=1 TO 7:BUTTON CLOSE q:NEXT
      FOR h=x-3 TO x+3
         FOR v=y-3 TO y+3
            IF b(h,v)=12 THEN ta=ta+5
         NEXT v
      NEXT h
      GOSUB PrintStats
      WINDOW 4
      IF butsel=1 THEN bullets=bullets+10:PRINT"You just stole 10 
bullets."
      IF butsel=2 THEN 
numposs=numposs+1:poss$(numposs)="grenade":PRINT"You just stole 
a grenade."
      IF butsel=3 THEN 
numposs=numposs+1:poss$(numposs)="dynamite":PRINT"You just 
stole a stick":PRINT"of dynamite."
      IF butsel=4 THEN flamepack=flamepack+5:PRINT"You just stole 
some more":PRINT"fuel for your flame thrower."
      RETURN

Bar:
   WINDOW 1
   butsel=1
   CLS
   CALL TEXTSIZE(12)
   CALL TEXTFACE(1)
   PRINT"        Welcome to Joe's Bar"
   CALL TEXTFACE(0)
   PRINT:PRINT
   PRINT"Tonic Water..............$1.00":PRINT
   PRINT"Soda.............................$5.00":PRINT
   PRINT"Gin.............................$10.00":PRINT
   PRINT"Rum...........................$12.00":PRINT
   PRINT"Scotch......................$16.00":PRINT
   PRINT"Red Eye.....................$20.00":PRINT
   BUTTON 1,2,"",(220,48)-(234,62),3
   BUTTON 2,1,"",(220,80)-(234,94),3
   BUTTON 3,1,"",(220,112)-(234,126),3
   BUTTON 4,1,"",(220,144)-(234,158),3
   BUTTON 5,1,"",(220,176)-(234,190),3
   BUTTON 6,1,"",(220,208)-(234,222),3
   BUTTON 7,1,"OK",(5,270)-(65,295)
   BUTTON 8,1,"Cancel",(70,270)-(130,295)
   Standby7: m=DIALOG(0)
      IF m<>1 THEN Standby7
   m=DIALOG(1)
   IF m=8 THEN FOR q=1 TO 8:BUTTON CLOSE q:NEXT:CLS:RETURN
   IF m=7 THEN PurchaseLiquor
   FOR q=1 TO 6:BUTTON q,1:NEXT
   butsel=m:BUTTON m,2
   GOTO Standby7
   PurchaseLiquor:
      IF butsel=1 AND money<1 THEN BEEP:GOTO Standby7
      IF butsel=2 AND money<5 THEN BEEP:GOTO Standby7
      IF butsel=3 AND money<10 THEN BEEP:GOTO Standby7
      IF butsel=4 AND money<12 THEN BEEP:GOTO Standby7
      IF butsel=5 AND money<16 THEN BEEP:GOTO Standby7
      IF butsel=6 AND money<20 THEN BEEP:GOTO Standby7
      IF butsel=1 THEN money=money-1
      IF butsel=2 THEN money=money-5
      IF butsel=3 THEN money=money-10
      IF butsel=4 THEN money=money-12
      IF butsel=5 THEN money=money-16
      IF butsel=6 THEN money=money-20
      FOR q=1 TO 8:BUTTON CLOSE q:NEXT
      GOSUB PrintStats
      WINDOW 4
      PRINT"The bartender leans over and says:"
      ON butsel GOTO Tonic,Soda,Gin,Rum,Scotch,RedEye
   Tonic:
      SELECT CASE game
      CASE 0
      PRINT"The gangs number five,":PRINT"as do their leaders."
      CASE 1
      PRINT"The gangs number four,":PRINT"as do their leaders."
      END SELECT
   RETURN
   Soda:
      SELECT CASE game
      CASE 0
      PRINT"Kill all five to open the door."
      CASE 1
      PRINT"Kill all four to finish."
      END SELECT
   RETURN
   Gin:
      SELECT CASE game
      CASE 0
      PRINT"Stealing from a shop keeper":PRINT"can be your last 
decision."
      CASE 1
      PRINT"A chainsaw can be tough on":PRINT"your clothing."
      END SELECT
   RETURN
   Rum:
      SELECT CASE game
      CASE 0
      PRINT"The chance of stealing is your":PRINT"raw ability.  Failing 
is"
      PRINT"too easy until you get good."
      CASE 1
      PRINT"Us shopkeepers don't just carry":PRINT"pistols anymore."
      END SELECT
   RETURN
   Scotch:
      SELECT CASE game
      CASE 0
      PRINT"The Alley Masters guard the":PRINT"furthest down.  The 
Street Kings"
      PRINT"own the high right, and the":PRINT"Warriors just below."
      PRINT"The Dawgs are left above the":PRINT"Alley Masters--The 
Coyotes own"
      PRINT"right here."
      CASE 1
      PRINT"Do you want it straight or on":PRINT"the rocks."
      END SELECT
   RETURN
   RedEye:
      SELECT CASE game
      CASE 0
      PRINT"Into the hideout--the Master"
      PRINT"is there.  The exit appears in
      PRINT"the Terminator's lair."
      PRINT "Go through the exit,"
      PRINT "and you will find,"
      PRINT "another city"
      PRINT "which is even less kind."
      CASE 1
      PRINT"A low martial arts ability":PRINT"can result in a lot"
      PRINT"of broken weapons."
      END SELECT
   RETURN

Dead:
   WINDOW 1
   PUT(3*45+1,3*45+1)-(4*45-1,4*45-1),a(0,81),PSET
   WINDOW 3
   PUT(70,27)-(113,70),a(0,81),PSET
   WINDOW 4
   PRINT"Sorry, but you are dead."
   PRINT"Please make a selection"
   PRINT"under the File menu."
   MENU 1,3,0
   Loop13: m=MENU(0)
      IF m<>1 THEN Loop13
  GOTO FileMenu

Win:
   WINDOW 4
   PRINT"Congratulations!!!"
   PRINT"You have restored law"
   PRINT"and order to both cities."
   PRINT"Saving two cities is"
   PRINT"hard work.  Go take a break."
   MENU 1,3,0
   Loop23: m=MENU(0)
      IF m<>1 THEN Loop23
  GOTO FileMenu

LoadCityIIPictures:
   WINDOW 1
   RESTORE PictureIIData
   OPEN "Figures3" FOR INPUT AS 1
   image$=INPUT$(LOF(1),1)
   CLOSE #1
   CLS
   PICTURE(0,0), image$
   FOR y=0 TO 3
      FOR x=0 TO 6
         READ i
         GET(x*45+1,y*45+1)-((x+1)*45-1,(y+1)*45-1),a(0,i)
      NEXT x
   NEXT y
PictureIIData: DATA 
18,19,22,24,26,25,28,23,23,20,21,27,9,14,70,67,68,66,64,61,60,56,
51,69,63,62,65,10
image$="":CLS
RETURN

InitCityII:
   changecursor 4
   WINDOW 4
   PRINT"You have just saved the first
   PRINT"city and restored law and"
   PRINT"order there."
   PRINT"After a short path through some"
   PRINT"woods you enter the second city."
   PRINT"Good luck.  You'll need it."
   gren=0:dyn=0:game=1
   cityxmax=63
   cityymax=80
   leaders=0
   GOSUB GetCity
   FOR i=1 TO 125:c(i,1)=0:c(i,11)=0:NEXT i
   RESTORE cityIIdata
      loop91:
      READ c1,c2,c3
      IF c1=0 THEN GoOn91
      b(c1,c2)=c3
      GOTO loop91
   GoOn91:
   FOR c1=1 TO cityxmax
      FOR c2=1 TO cityymax
         monster(c1,c2)=0
   NEXT c2,c1
   i=0
   Loop12:
      READ c1,c2,c3
      IF c1=0 THEN GoOn92
      i=i+1
      monster(c1,c2)=i
      c(i,1)=c3:c(i,8)=c1:c(i,9)=c2
      b(c1,c2)=c3
      IF c3=18 THEN GOSUB MakeGonzales
      IF c3=9 THEN GOSUB MakeSchoolBoy
      IF c3=12 THEN GOSUB MakeShopKeeper
      IF c3=14 THEN GOSUB MakeThief
      IF c3=15 THEN GOSUB MakeNinja
      IF c3=16 THEN GOSUB MakeTerminator
      IF c3=17 THEN GOSUB MakeRat
      IF c3=19 THEN GOSUB MakeChiefGonzales
      IF c3=22 THEN GOSUB MakeGrizzlie
      IF c3=23 THEN GOSUB MakeLtBuzzer
      IF c3=24 THEN GOSUB MakeChiefGrizzlie
      IF c3=25 THEN GOSUB MakeChiefBuzzer
      IF c3=26 THEN GOSUB MakeBuzzer
      IF c3=27 THEN GOSUB MakeRobotI
      IF c3=28 THEN GOSUB MakeRobotII
      GOTO Loop12
cityIIdata:
DATA 
3,2,100,51,19,30,52,20,30,35,13,30,49,34,30,44,34,30,50,56,30,55,
62,30
DATA 
14,34,31,36,78,31,34,53,31,38,44,31,61,64,31,17,28,31,1,39,31,6,5
5,30,7,55,31
DATA 
45,32,38,46,32,39,15,14,38,16,14,39,10,20,32,11,20,33,6,20,40,7,2
0,41,8,14,34,9,14,35,16,20,36,17,20,37
DATA 
42,44,10,59,13,77,52,59,77,59,12,79,49,58,79,35,56,32,36,56,33,2
6,46,40,27,46,41
DATA 
35,69,34,36,69,35,51,64,36,52,64,37,53,75,10,11,75,10,10,36,10,3
7,33,77,53,76,77
DATA 
37,32,78,52,74,78,5,66,78,33,36,79,53,74,79,40,72,38,41,72,39,40,
61,34,41,61,35,0,0,0

DATA 
59,60,18,40,53,26,11,44,22,4,35,22,25,19,22,12,25,22,18,44,22,25,
46,22,1,47,22,32,44,22,1,28,22,3,23,22,30,32,22,11,49,22,26,38,22
,20,54,22,38,52,22,37,38,22
DATA 
31,35,24,58,71,27,33,65,27,14,38,14,38,57,14,31,59,14,15,58,9,6,2
8,9,4,44,9,25,33,9,61,62,23
DATA 
38,78,17,6,27,17,1,43,17,6,31,17,33,75,17,24,46,12,34,56,12,35,70
,12,50,64,12
DATA 20,26,28,14,53,28,27,53,28,61,70,28,58,73,15
DATA 
56,12,19,57,30,18,42,24,18,59,18,18,29,17,18,62,17,18,40,50,18,5
2,17,18,48,24,18,49,13,18,42,8,18,54,6,18,29,14,18
DATA 
62,29,26,46,50,26,44,57,26,56,38,26,50,49,26,40,34,26,40,40,26,4
2,61,26,42,63,26,54,58,26,57,62,26,40,78,26,45,45,23,46,59,25
DATA 14,14,12,5,20,12,15,20,12,10,14,12,12,20,12,47,32,12
DATA 23,12,27,50,23,27,58,58,27,47,74,27,44,62,28
DATA 
2,15,14,52,25,14,40,47,14,44,68,14,1,3,9,30,6,9,62,21,9,52,55,9
DATA 
46,45,17,3,6,17,5,23,17,52,19,17,44,46,17,30,8,17,7,23,17,51,21,1
7,56,8,17,51,20,17
DATA 41,63,12,40,73,12,53,69,15,30,71,15,0,0,0
GoOn92: GOSUB LoadCityIIPictures:x=1:y=1:SETCURSOR 
VARPTR(cursor(0))
RETURN

GetCity:
   IF game=0 THEN OPEN"City" FOR INPUT AS #1 ELSE OPEN "CityII" 
FOR INPUT AS #1
      FOR h=0 TO cityxmax
         FOR v=0 TO cityymax
            INPUT #1,b(h,v)
            IF b(h,v)=0 THEN b(h,v)=100
         NEXT v
      NEXT h
   CLOSE #1
RETURN

MakeNewShopkeeper:
   FOR h6=125 TO 1 STEP -1
      IF c(h6,1)=0 THEN FoundIt11
   NEXT h6
   RETURN
   FoundIt11:
      FOR h7=x-1 TO x+1
         FOR h8=y-1 TO y+1
            IF b(h7,h8)>31 AND b(h7,h8)<41 THEN GoOn39
      NEXT h8,h7
      GoOn39:
            FOR h9=h7-1 TO h7+1
               FOR h10=h8-1 TO h8+1
                  IF b(h9,h10)=100 THEN h7=h9:h8=h10:GOTO MakeIt
            NEXT h10,h9
      RETURN
      MakeIt:
      b(h7,h8)=12
      c(h6,1)=12
      c(h6,8)=h7
      c(h6,9)=h8
      monster(h7,h8)=h6
      i=h6
      GOSUB MakeShopKeeper
      c(h6,11)=0
      WINDOW 4:PRINT"Another shop keeper has come"
      PRINT"to help tend the store.":WINDOW 1
RETURN

MakeWanderingMonster:
   FOR i=125 TO 1 STEP -1
      IF c(i,1)=0 THEN FoundIt12
   NEXT i
   RETURN
   FoundIt12:
   IF x>4 THEN IF b(x-3,y)=100  THEN h8=x-3:h9=y:GOTO FoundIt13
   IF x<cityxmax-5 THEN IF b(x+3,y)=100 THEN h8=x+3:h9=y:GOTO 
FoundIt13
   IF y>4 THEN IF b(x,y-3)=100 THEN h8=x:h9=y-3:GOTO FoundIt13
   IF y<cityymax-5 THEN IF b(x,y+3)=100 THEN h8=x:h9=y+3:GOTO 
FoundIt13
   RETURN
   FoundIt13:
   SELECT CASE game
      CASE 0
         IF leaders=0 OR leaders=1 THEN c(i,1)=18:GOSUB MakeCoyote
         IF leaders=2 THEN c(i,1)=20:GOSUB MakeStreetKing
         IF leaders=3 THEN c(i,1)=22:GOSUB MakeWarrior1
         IF leaders=4 THEN c(i,1)=26:GOSUB MakeDawg
         IF leaders=5 THEN c(i,1)=27:GOSUB MakeAlleyMaster
      CASE 1
         c(i,1)=28:GOSUB MakeRobotII
         IF RND<.5 THEN c(i,1)=27:GOSUB MakeRobotI
      CASE ELSE
         STOP
   END SELECT
   c(i,8)=h8:c(i,9)=h9:c(i,11)=1
   monster(h8,h9)=i
   b(h8,h9)=c(i,1)
   WINDOW 4:drawtext"An angry ":GOSUB EnemyName:PRINT" appears."
   RETURN

FileMenu:
   changecursor 4
   m=MENU(1)
   IF m=4 THEN END
   IF m=2 THEN GOSUB LoadGame
   IF m=3 THEN GOSUB SaveGame
   IF m=1 THEN GOSUB LoadCityIPictures:GOSUB InitCityI:GOSUB 
SetUpScreen:GOSUB MakeStats:GOSUB MakeMenus
   GOSUB PrintStats
   i=DIALOG(0):i=DIALOG(0):i=DIALOG(0):i=DIALOG(0):i=DIALOG(0)
   MENU 1,3,1
   SETCURSOR VARPTR(cursor(0))
   GOTO MainLoop

SaveGame:
      f$=FILES$(0,"Enter a name:")
      IF f$="" THEN RETURN
      changecursor 4
      WINDOW 4:PRINT"Saving game..."
      OPEN f$ FOR OUTPUT AS #1
         PRINT #1,nme$
         PRINT #1,maxhealth
         PRINT #1,health
         PRINT #1,money
         PRINT #1,fa
         PRINT #1,ms
         PRINT #1,ma
         PRINT #1,ta
         PRINT#1,game
         PRINT#1,x
         PRINT #1,y
         PRINT #1,bullets
         PRINT #1,flamepack
         PRINT #1,rockets
         PRINT #1,leaders
         FOR i=1 TO 12:PRINT #1,We(i):NEXT i
         FOR i=1 TO 6:PRINT #1,Ar(i):NEXT i
         PRINT #1,numposs
         FOR i=1 TO numposs:PRINT #1,poss$(i):NEXT i
         FOR h=0 TO cityxmax
         FOR v=0 TO cityymax
            PRINT #1,b(h,v)
            PRINT #1,monster(h,v)
         NEXT v
      NEXT h
      FOR i=1 TO 125
         FOR i2=1 TO 11
            PRINT #1,c(i,i2)
         NEXT i2
      NEXT i
      CLOSE #1
RETURN

LoadGame:
      currentgame=game
      f$=FILES$(1)
      IF f$="" THEN RETURN
      changecursor 4
      WINDOW 4:PRINT"Loading old game..."
      FOR h1=1 TO 125
         FOR h2=1 TO 11
            c(h1,h2)=0
      NEXT h2,h1
      FOR h1=1 TO 65
         FOR h2=1 TO 80
            monster(h1,h2)=0
      NEXT h2,h1
      OPEN f$ FOR INPUT AS #1
         INPUT #1,nme$
         INPUT #1,maxhealth
         INPUT #1,health
         INPUT #1,money
         INPUT #1,fa
         INPUT #1,ms
         INPUT #1,ma
         INPUT #1,ta
         INPUT#1,game
         cityxmax=64:cityymax=79
         IF game=1 THEN cityxmax=63:cityymax=80
         INPUT #1,x
         INPUT #1,y
         INPUT #1,bullets
         INPUT #1,flamepack
         INPUT #1,rockets
         INPUT #1,leaders
         FOR i=1 TO 12:INPUT #1,We(i):MENU 3,i,We(i):NEXT i
         FOR i=1 TO 6:INPUT #1,Ar(i):MENU 2,i,Ar(i):NEXT i
         MENU 2,1,2:MENU 3,1,2
         weapon=1:armor=1
         INPUT #1,numposs
         FOR i=1 TO numposs:INPUT #1,poss$(i):NEXT i
         FOR h=0 TO cityxmax
         FOR v=0 TO cityymax
            INPUT #1,b(h,v)
            INPUT #1,monster(h,v)
         NEXT v
      NEXT h
      FOR i=1 TO 125
         FOR i2=1 TO 11
            INPUT #1,c(i,i2)
         NEXT i2
      NEXT i
      CLOSE #1
      guy=3:b(x,y)=guy
      IF currentgame=game THEN RETURN
      tempx=x:tempy=y
      IF game=0 THEN GOSUB LoadCityIPictures ELSE GOSUB 
LoadCityIIPictures
      x=tempx:y=tempy
RETURN

