home *** CD-ROM | disk | FTP | other *** search
/ 17 Bit Software 1: Collection A / 17Bit_Collection_A.iso / files / 1069.dms / 1069.adf / autoexec.amos / autoexec.amosSourceCode next >
AMOS Source Code  |  1989-08-17  |  24KB  |  904 lines

  1. Rem
  2. Rem Atic Atac (c) Neil Chinnery 1991 
  3. Rem
  4. Dir$="ATIC:"
  5. Close Workbench 
  6. Close Editor 
  7. Get Disc Fonts 
  8. Screen Open 0,320,200,16,Lowres
  9. Rem
  10. Procedure TITES
  11. Dir$="ATIC:"
  12. NEILS=Free
  13. Load Iff "text",0
  14. Rem Load "sptites.abk" 
  15. Screen Open 1,640,200,16,Lowres
  16. Get Palette 0
  17. Screen Hide 0
  18. Hide 
  19. Curs Off 
  20. Flash Off 
  21. For F=0 To 15
  22.    SCO$(F)=Hex$(Colour(F),3)
  23. Next F
  24. Screen 1
  25. Screen To Front 1
  26. Cls 0
  27. Screen Display 1,114,40,640,200
  28. Screen 1
  29. Cls 0
  30. Screen Hide 1
  31. Erase 3
  32. Load "idea.abk"
  33. Music 1
  34. Paper 0
  35. Cls 0
  36. Double Buffer 
  37. LAB1:
  38. Cls 0
  39. Screen Show 1
  40. Set Font 2
  41. Paper 0
  42. Ink 2,0
  43. Text 120,170,"S - Start Game"
  44. Text 120,190,"I - Instructions"
  45. Bob 1,118,50,60
  46. Bob 2,118,100,61
  47. T$="Let R0=1; M: Let X=X+R0; If X<5 Jump A; If X>230 Jump B; Pause; Jump M;"
  48. T$=T$+"A: Let R0=1; Pause; Jump M; B: Let R0=-1; Pause; Jump M"
  49. U$="Let R0=-1; M: Let X=X+R0; If X<5 Jump A; If X>230 Jump B; Pause; Jump M;"
  50. U$=U$+"A: Let R0=1; Pause; Jump M; B: Let R0=-1; Pause; Jump M"
  51. Channel 1 To Bob 1
  52. Channel 2 To Bob 2
  53. Amal 1,T$
  54. Amal 2,U$
  55. Amal On 
  56. YFLAG=0
  57. Repeat 
  58. NI$=Inkey$
  59. If NI$="i" Then YFLAG=1
  60. If NI$="s" Then YFLAG=2
  61. Until YFLAG<>0
  62. If YFLAG=2 Then Goto STRT
  63. Cls 0
  64. Bob Off 1
  65. Bob Off 2
  66. Amal Off 
  67. Text 70,10,"Welcome to Atic Atac"
  68. Text 10,40," The idea of the game is quite simple."
  69. Text 10,50," You are locked in a haunted house "
  70. Text 10,60," and you must find the three parts"
  71. Text 10,70," of a key that unlocks the door. "
  72. Text 10,80," You must find them before you lose"
  73. Text 10,90," all of your energy."
  74. Text 10,100," To help you along the way you will"
  75. Text 10,110," find various coloured keys that will"
  76. Text 10,120," unlock certain doors. You can also"
  77. Text 10,130," throw your weapon at the various"
  78. Text 10,140," nasties that will appear."
  79. Text 10,155," Movement is controlled by the"
  80. Text 10,165," joystick and to pick up or drop "
  81. Text 10,175," objects tap the space bar."
  82. Text 10,195," Music On/Off is the N and M Keys"
  83. While Inkey$=""
  84. Wend 
  85. Goto LAB1
  86. STRT:
  87.    Bob Off 1
  88.    Bob Off 2
  89.    Amal Off 
  90.    Screen Close 1
  91.    Music Off 
  92. End Proc
  93. Rem
  94. Procedure INITGAME
  95.    Erase 3
  96.    Load "happy.abk"
  97.    Led Off 
  98.    Rem Load "sprites.abk" 
  99.    Get Sprite Palette 
  100.    Screen Open 1,640,200,16,Lowres
  101.    Screen Open 3,320,200,16,Lowres
  102.    Screen Display 3,128,100,640,200
  103.    Screen Display 1,128,49,280,200
  104.    Screen 3
  105.    Curs Off 
  106.    Flash Off 
  107.    Hide 
  108.    Screen To Front 1
  109.    Screen 1
  110.    Get Sprite Palette 
  111.    Curs Off 
  112.    Flash Off 
  113.    Cls 0
  114.    Hide 
  115.    Double Buffer 
  116.    Screen 3
  117.    Get Palette 1
  118.    Cls 0
  119. End Proc
  120. Rem
  121. Procedure DRROOM
  122.    F=Free
  123.    For F=0 To 63
  124.    Bob Off(F)
  125.    Next F
  126.    Amal Off 
  127.    R$=Str$(ROOMNO)
  128.    R=Len(R$)
  129.    R$="R"+Right$(R$,R-1)
  130.    Restore R$
  131.    Read STAIRS,TRAP,TRGT,N,NC,S,SC,E,EC,W,WC
  132.    NASTIES=0
  133.    Cls 0
  134.    I=Rnd(15)
  135.    If I=0 or I=3 Then I=4
  136.    Ink(I)
  137.    If STAIRS>0 Then Goto STAIRS
  138.    Box 10,10 To 250,190
  139.    Box 30,30 To 230,170
  140.    Draw 10,10 To 30,30
  141.    Draw 230,170 To 250,190
  142.    Draw 250,10 To 230,30
  143.    Draw 10,190 To 30,170
  144.    If TRAP=1 Then Bob 5,120,80,18
  145.    If ROOMNO=48 Then Bob 59,229,60,53 : Bob 60,229,90,54
  146.    If(N>0) and(NC=1) Then Bob 1,120,0,1
  147.    If(S>0) and(SC=1) Then Bob 2,120,169,4
  148.    If(W>0) and(WC=1) Then Bob 3,0,80,5
  149.    If(E>0) and(EC=1) Then Bob 4,229,80,12
  150.    If(N>0) and(NC=2) Then Bob 1,120,0,2
  151.    If(S>0) and(SC=2) Then Bob 2,120,169,11
  152.    If(W>0) and(WC=2) Then Bob 3,0,80,6
  153.    If(E>0) and(EC=2) Then Bob 4,229,80,13
  154.    If(N>0) and(NC=3) Then Bob 1,120,0,20
  155.    If(S>0) and(SC=3) Then Bob 2,120,169,22
  156.    If(W>0) and(WC=3) Then Bob 3,0,80,23
  157.    If(E>0) and(EC=3) Then Bob 4,229,80,21
  158.    If(N>0) and(NC=4) Then Bob 1,120,0,28
  159.    If(S>0) and(SC=4) Then Bob 2,120,169,30
  160.    If(W>0) and(WC=4) Then Bob 3,0,80,31
  161.    If(E>0) and(EC=4) Then Bob 4,229,80,29
  162.    If(N>0) and(NC=5) Then Bob 1,120,0,24
  163.    If(S>0) and(SC=5) Then Bob 2,120,169,26
  164.    If(W>0) and(WC=5) Then Bob 3,0,80,27
  165.    If(E>0) and(EC=5) Then Bob 4,229,80,25
  166.    If(N>0) and(NC>0) and OPDRS(ROOMNO,1)=1 Then Bob 1,,,14
  167.    If(S>0) and(SC>0) and OPDRS(ROOMNO,2)=1 Then Bob 2,,,16
  168.    If(W>0) and(WC>0) and OPDRS(ROOMNO,3)=1 Then Bob 3,,,17
  169.    If(E>0) and(EC>0) and OPDRS(ROOMNO,4)=1 Then Bob 4,,,15
  170.    Goto ESTAIRS
  171.    STAIRS:
  172.       If STAIRS=1 Then Proc UPSTAIRS
  173.       If STAIRS=2 Then Proc DSTAIRS
  174.    ESTAIRS:
  175.    DRS=2
  176.    Amal Off 
  177.    Bob 63,X,Y,SHAPE
  178.    Channel 3 To Bob 63
  179.    Amal 3,B$
  180.    For F=1 To 10
  181.       If OBJS(F,1)=ROOMNO Then Bob 5+F,OBJS(F,2),OBJS(F,3),OBS(F)
  182.    Next F
  183.    R=Rnd(99)+1
  184.    P=Rnd(3)+1
  185.    Q=Rnd(100)+50
  186.    V=Rnd(50)+50
  187.    If R<20 Then Bob 17,Q,V,(39+P)
  188.    FFLAG=0
  189.    If PERCENT(ROOMNO)=0 Then SCORE=SCORE+1 : PERCENT(ROOMNO)=1
  190.    Amal On 3
  191.    If STAIRS=1 or STAIRS=2 Then Goto EDROOM
  192.    If ROOMNO<51 or ROOMNO>75 Then Goto EDROOM
  193.    R=Rnd(99)+1
  194.    If R<80 Then Pop Proc
  195.    R=Rnd(4)+1
  196.    T=1
  197.    While R>1
  198.       Dec R
  199.       Q=Rnd(150)+50
  200.       V=Rnd(50)+50
  201.       U=Rnd(1)
  202.       Bob 30+T,Q,V,44+U
  203.       T=T+1
  204.    Wend 
  205.  EDROOM:
  206. End Proc
  207. Rem
  208. Procedure UPSTAIRS
  209.    Box 10,10 To 250,190
  210.    TLX=10
  211.    TLY=180
  212.    BLX=250
  213.    BLY=190
  214.    Repeat 
  215.       Box TLX,TLY To BLX,BLY
  216.       Add TLX,5
  217.       TLY=TLY-10
  218.       Dec BLX
  219.       Dec BLX
  220.       Dec BLX
  221.       Dec BLX
  222.       Dec BLX
  223.       BLY=BLY-10
  224.    Until TLY=10
  225.    Bob 1,120,0,1
  226. End Proc
  227. Rem
  228. Procedure DSTAIRS
  229.    Box 10,10 To 250,190
  230.    TLX=95
  231.    TLY=10
  232.    BLX=165
  233.    BLY=20
  234.    Repeat 
  235.       Box TLX,TLY To BLX,BLY
  236.       TLX=TLX-5
  237.       TLY=TLY+10
  238.       BLX=BLX+5
  239.       BLY=BLY+10
  240.    Until TLY=180
  241.    Bob 2,120,169,4
  242. End Proc
  243. Rem
  244. Procedure WEAPON
  245.    FFLAG=1
  246.    Channel 2 To Bob 62
  247.    X=X Bob(63)
  248.    Y=Y Bob(63)
  249.    Bob 62,X,Y,64
  250.    If Jright(1) Then Bob 62,X+20,Y,37
  251.    If Jleft(1) Then Bob 62,X-20,Y,37
  252.    If Jup(1) Then Bob 62,X,Y-20,37
  253.    If Jdown(1) Then Bob 62,X,Y+20,37
  254.    A$="Anim 0,(64,5)(65,5)(66,5)(67,5);"
  255.    A$=A$+"Let R2=0; If J1&1 Jump O; If J1&2 Jump N; L: If J1&4 Jump Q;"
  256.    A$=A$+"If J1&8 Jump P; U: If R1=0 Jump V; M: Let X=X+R0; Let Y=Y+R1;"
  257.    A$=A$+"If R2>3 Jump T;"
  258.    A$=A$+"E: If X>250 Jump A;"
  259.    A$=A$+"F: If X<10 Jump B;"
  260.    A$=A$+"G: If Y>190 Jump C;"
  261.    A$=A$+"H: If Y<10 Jump D;"
  262.    A$=A$+"Pause; Jump M; A: Let R0=-5; Let R2=R2+1; Jump F; B: Let R0=5; Let R2=R2+1; Jump G;"
  263.    A$=A$+"C: Let R1=-5; Let R2=R2+1; Jump H; D: Let R1=5; Let R2=R2+1; Jump M; O: Let R1=-5; Jump L;"
  264.    A$=A$+"N: Let R1=5: Jump L; Q: Let R0=-5; Jump U; P: Let R0=5; Jump U;"
  265.    A$=A$+"V: If R0=0 Jump W; Pause; Jump M; W: Let R1=5; Let R0=5; Pause; Jump M; T: Let R2=0"
  266.    Amal 2,A$
  267.    Amal On 2
  268.    Sam Play 1
  269. End Proc
  270. Rem
  271. Procedure SETUPMAIN
  272.    B$="M: If J1&1 Jump O; If J1&2 Jump N; L: If J1&4 Jump Q;"
  273.    B$=B$+"If J1&8 Jump P;"
  274.    B$=B$+"F: If X>220 Jump A;"
  275.    B$=B$+"G: If X<20 Jump B;"
  276.    B$=B$+"H: If Y>150 Jump C;"
  277.    B$=B$+"K: If Y<10 Jump D;"
  278.    B$=B$+"Jump M; A: Let X=X-1; Jump H; B: Let X=X+1; Jump H;"
  279.    B$=B$+"C: Let Y=Y-1; Jump M; D: Let Y=Y+1; Jump M; O: Let Y=Y-1; Jump L;"
  280.    B$=B$+"N: Let Y=Y+1; Jump L; Q: Let X=X-1;Jump F; P: Let X=X+1;  Jump F;"
  281. End Proc
  282. Rem
  283. Procedure MVEBOB
  284.    If Fire(1) and FFLAG=0 Then Proc WEAPON
  285.    If Inkey$=" " and DROP=0 Then Goto PICKDROP
  286.    If Inkey$="n" and MP=0 Then MP=1 : Music 1 : Tempo 18
  287.    If Inkey$="m" and MP=1 Then MP=0 : Music Stop 
  288.    If DROP>0 Then DROP=DROP-1
  289.    Pop Proc
  290.   PICKDROP:
  291.    DROP=2
  292.    C=Bob Col(63)
  293.    If C=0 Then Proc DROP : Pop Proc
  294.    F=6
  295.    FOUND=0
  296.    Repeat 
  297.       If Col(F) Then FOUND=F
  298.       Inc F
  299.    Until F=17
  300.    If FOUND=0 Then Proc DROP : Pop Proc
  301.    If(FOUND-5)=5 or(FOUND-5)=6 Then Proc DROP : Pop Proc
  302.    F=BAG(3)
  303.    If F=1 Then RKEY=0
  304.    If F=2 Then BKEY=0
  305.    If F=3 Then YKEY=0
  306.    If F=4 Then GKEY=0
  307.    If F=0 Then BAG(3)=BAG(2) : BAG(2)=BAG(1) : Goto DROPPED
  308.    X=X Bob(63)
  309.    Y=Y Bob(63)
  310.    OBJS(F,1)=ROOMNO
  311.    OBJS(F,2)=X
  312.    OBJS(F,3)=Y
  313.    BAG(3)=BAG(2)
  314.    BAG(2)=BAG(1)
  315.    Bob 5+F,X,Y,OBS(F)
  316.    Proc DRBAG
  317.   DROPPED:
  318.    Bob Off FOUND
  319.    F=FOUND-5
  320.    BAG(1)=F
  321.    If F=1 Then RKEY=1
  322.    If F=2 Then BKEY=1
  323.    If F=3 Then YKEY=1
  324.    If F=4 Then GKEY=1
  325.    OBJS(F,1)=9999
  326.    OBJS(F,2)=0
  327.    OBJS(F,3)=0
  328.    Proc DRBAG
  329. End Proc
  330. Rem
  331. Procedure DROP
  332.    F=BAG(3)
  333.    X=X Bob(63)
  334.    Y=Y Bob(63)
  335.    If F=1 Then RKEY=0
  336.    If F=2 Then BKEY=0
  337.    If F=3 Then YKEY=0
  338.    If F=4 Then GKEY=0
  339.    If F=0 Then BAG(3)=BAG(2) : BAG(2)=BAG(1) : BAG(1)=0 : Proc DRBAG : Pop Proc
  340.    OBJS(F,1)=ROOMNO
  341.    OBJS(F,2)=X
  342.    OBJS(F,3)=Y
  343.   EMPTY:
  344.    BAG(3)=BAG(2)
  345.    BAG(2)=BAG(1)
  346.    BAG(1)=0
  347.    Bob 5+F,X,Y,OBS(F)
  348.    Proc DRBAG
  349. End Proc
  350. Rem
  351. Procedure CHWEAP
  352.    C=Bob Col(62)
  353.    If Not Chanmv(2) Then FFLAG=0 : Amal Off 2 : Bob Off 62
  354.    If C=0 Then Pop Proc
  355.    For F=20 To 28
  356.       If Col(F) Then Bob Off F : Amal Off(F-15)
  357.    Next F
  358. End Proc
  359. Rem
  360. Procedure CHECKCOL
  361.    C=Bob Col(63)
  362.    If C=0 Then Pop Proc
  363.    If Col(17) Then Proc FOOD : Pop Proc
  364.    If Col(31) or Col(32) or Col(33) or Col(34) or Col(35) Then Proc ENERGYDOWN : Pop Proc
  365.    If Col(5) and DRS=1 Then Proc WOOSH : DETCOL=1 : X=120 : Y=80
  366.    If Col(20) or Col(21) or Col(22) or Col(23) or Col(24) or Col(25) or Col(26) or Col(27) or Col(28) Then Proc ENERGYDOWN : Pop Proc
  367.    If Col(5) and DRS=0 Then Pop Proc
  368.    If Col(1) and OPDRS(ROOMNO,1)=1 Then DETCOL=1 : Y=144 : X=120 : SHAPE=10 : ROOMNO=N : Pop Proc
  369.    If Col(2) and OPDRS(ROOMNO,2)=1 Then DETCOL=1 : Y=22 : X=120 : SHAPE=10 : ROOMNO=S : Pop Proc
  370.    If Col(3) and OPDRS(ROOMNO,3)=1 Then DETCOL=1 : X=204 : Y=80 : SHAPE=10 : ROOMNO=W : Pop Proc
  371.    If Col(4) and OPDRS(ROOMNO,4)=1 Then DETCOL=1 : X=28 : Y=80 : SHAPE=10 : ROOMNO=E : Pop Proc
  372.    If Col(1) and DRS=1 and NC=1 Then ROOMNO=N : DETCOL=1 : Y=144 : X=120 : SHAPE=10
  373.    If Col(2) and DRS=1 and SC=1 Then ROOMNO=S : DETCOL=1 : Y=22 : X=120 : SHAPE=10
  374.    If Col(3) and DRS=1 and WC=1 Then ROOMNO=W : DETCOL=1 : X=204 : Y=80 : SHAPE=10
  375.    If Col(4) and DRS=1 and EC=1 Then ROOMNO=E : DETCOL=1 : X=28 : Y=80 : SHAPE=10
  376.    If Col(1) and NC=2 and BKEY=1 Then DETCOL=1 : Y=144 : X=120 : SHAPE=10 : OPDRS(ROOMNO,1)=1 : ROOMNO=N
  377.    If Col(1) and NC=3 and RKEY=1 Then DETCOL=1 : Y=144 : X=120 : SHAPE=10 : OPDRS(ROOMNO,1)=1 : ROOMNO=N
  378.    If Col(1) and NC=4 and YKEY=1 Then DETCOL=1 : Y=144 : X=120 : SHAPE=10 : OPDRS(ROOMNO,1)=1 : ROOMNO=N
  379.    If Col(1) and NC=5 and GKEY=1 Then DETCOL=1 : Y=144 : X=120 : SHAPE=10 : OPDRS(ROOMNO,1)=1 : ROOMNO=N
  380.    If Col(2) and SC=2 and BKEY=1 Then DETCOL=1 : Y=22 : X=120 : SHAPE=10 : OPDRS(ROOMNO,2)=1 : ROOMNO=S
  381.    If Col(2) and SC=3 and RKEY=1 Then DETCOL=1 : Y=22 : X=120 : SHAPE=10 : OPDRS(ROOMNO,2)=1 : ROOMNO=S
  382.    If Col(2) and SC=4 and YKEY=1 Then DETCOL=1 : Y=22 : X=120 : SHAPE=10 : OPDRS(ROOMNO,2)=1 : ROOMNO=S
  383.    If Col(2) and SC=5 and GKEY=1 Then DETCOL=1 : Y=22 : X=120 : SHAPE=10 : OPDRS(ROOMNO,2)=1 : ROOMNO=S
  384.    If Col(3) and WC=2 and BKEY=1 Then DETCOL=1 : X=204 : Y=80 : SHAPE=10 : OPDRS(ROOMNO,3)=1 : ROOMNO=W
  385.    If Col(3) and WC=3 and RKEY=1 Then DETCOL=1 : X=204 : Y=80 : SHAPE=10 : OPDRS(ROOMNO,3)=1 : ROOMNO=W
  386.    If Col(3) and WC=4 and YKEY=1 Then DETCOL=1 : X=204 : Y=80 : SHAPE=10 : OPDRS(ROOMNO,3)=1 : ROOMNO=W
  387.    If Col(3) and WC=5 and GKEY=1 Then DETCOL=1 : X=204 : Y=80 : SHAPE=10 : OPDRS(ROOMNO,3)=1 : ROOMNO=W
  388.    If Col(4) and EC=2 and BKEY=1 Then DETCOL=1 : X=28 : Y=80 : SHAPE=10 : OPDRS(ROOMNO,4)=1 : ROOMNO=E
  389.    If Col(4) and EC=3 and RKEY=1 Then DETCOL=1 : X=28 : Y=80 : SHAPE=10 : OPDRS(ROOMNO,4)=1 : ROOMNO=E
  390.    If Col(4) and EC=4 and YKEY=1 Then DETCOL=1 : X=28 : Y=80 : SHAPE=10 : OPDRS(ROOMNO,4)=1 : ROOMNO=E
  391.    If Col(4) and EC=5 and GKEY=1 Then DETCOL=1 : X=28 : Y=80 : SHAPE=10 : OPDRS(ROOMNO,4)=1 : ROOMNO=E
  392.    If(Col(59) or Col(60)) and(BAG(1)=7 and BAG(2)=8 and BAG(3)=9) Then FINISHED=1
  393. End Proc
  394. Rem
  395. Procedure DROC
  396.    Add DRS,1,1 To 2
  397.    If DRS=2 Then Goto CDR
  398.    If NC=1 Then Bob 1,,,3
  399.    If SC=1 Then Bob 2,,,8
  400.    If EC=1 Then Bob 4,,,7
  401.    If WC=1 Then Bob 3,,,9
  402.    If TRAP=1 Then Bob 5,,,19
  403.    Goto EDRS
  404.   CDR:
  405.    If NC=1 Then Bob 1,,,1
  406.    If SC=1 Then Bob 2,,,4
  407.    If EC=1 Then Bob 4,,,12
  408.    If WC=1 Then Bob 3,,,5
  409.    If TRAP=1 Then Bob 5,,,18
  410.   EDRS:
  411. End Proc
  412. Rem
  413. Procedure WOOSH
  414.    For F=1 To 63
  415.    Bob Off(F)
  416.    Next F
  417.    Cls 0
  418.    I=Rnd(15)
  419.    If I=0 or I=3 Then I=4
  420.    Ink(I)
  421.    Draw 130,0 To 130,200
  422.    Draw 190,0 To 190,200
  423.    Bob 63,145,0,SHAPE
  424.    A$="M 0,200,100"
  425.    Channel 1 To Bob 63
  426.    Amal 1,A$
  427.    Sam Play 2
  428.    Amal On 1
  429.    Repeat 
  430.      AMFLAG=Chanmv(1)
  431.    Until AMFLAG=0
  432.    ROOMNO=TRGT
  433. End Proc
  434. Rem
  435. Procedure DRBAG
  436.    Screen 3
  437.    For F=1 To 3
  438.       If BAG(F)>0 Then Paste Bob 70+(F*30),160,OBS(BAG(F))
  439.       If BAG(F)=0 Then Paste Bob 70+(F*30),160,36
  440.    Next F
  441.    Screen 1
  442. End Proc
  443. Rem
  444. Procedure DRLIVES
  445.    Screen 3
  446.    For F=1 To LIVES
  447.       Paste Bob -30+(F*30),170,10
  448.    Next F
  449.    Ink 4
  450.    Polygon 100,193 To 140,193 To 140,195 To 100,195 To 100,193
  451.    Ink 5
  452.    Polygon 140,193 To 300,193 To 300,195 To 140,195 To 140,193
  453.    Screen 1
  454. End Proc
  455. Rem
  456. Procedure ENERGYDOWN
  457.    ENERGY2=12
  458.    Dec ENERGY
  459.    F=ENERGY+101
  460.    Screen 3
  461.    Ink 0
  462.    Draw F,193 To F,195
  463.    If ENERGY=0 Then DEAD=1
  464.    Screen 1
  465. End Proc
  466. Rem
  467. Procedure LOSTLIFE
  468.    Dec LIVES
  469.    Sam Play 3
  470.    If LIVES=0 Then GAMEOVER=1
  471.    ENERGY=200
  472.    ENERGY2=12
  473.    Screen 3
  474.    Paste Bob -30+((LIVES+1)*30),170,36
  475.    Screen 1
  476.    X=X Bob(63)
  477.    Y=Y Bob(63)
  478.    Bob Off 63
  479.    If LIVES=2 Then OBJS(5,1)=ROOMNO : OBJS(5,2)=X : OBJS(5,3)=Y : Paste Bob X,Y,38 : Screen 3 : Paste Bob -30+((LIVES+1)*30),170,38 : Screen 1
  480.    If LIVES=1 Then OBJS(6,1)=ROOMNO : OBJS(6,2)=X : OBJS(6,3)=Y : Paste Bob X,Y,39 : Screen 3 : Paste Bob -30+((LIVES+1)*30),170,39 : Screen 1
  481.    Proc DRLIVES
  482.    ROOMNO=48
  483.    DEAD=0
  484.    Wait 150
  485. End Proc
  486. Rem
  487. Procedure FOOD
  488.    Bob Off 17
  489.    OLDENERGY=ENERGY
  490.    ENERGY=ENERGY+10
  491.    If ENERGY>200 Then ENERGY=200
  492.    Screen 3
  493.    Ink 4
  494.    If ENERGY>40 Then Polygon 100,193 To 140,193 To 140,195 To 100,195 To 100,193
  495.    If ENERGY<40 Then Polygon 100,193 To 100+ENERGY,193 To 100+ENERGY,195 To 100+ENERGY,195 To 100,193
  496.    Ink 5
  497.    If ENERGY>40 Then Polygon 140,193 To 100+ENERGY,193 To 100+ENERGY,195 To 140,195 To 140,193
  498.    Screen 1
  499. End Proc
  500. Rem
  501. Procedure ADSPR
  502.    Dec ADSPR2
  503.    If ADSPR2>0 Then Pop Proc
  504.    ADSPR2=25
  505.    If NASTIES=8 Then Pop Proc
  506.    Inc NASTIES
  507.    Q=Rnd(220)+30
  508.    V=Rnd(150)+30
  509.    T=Rnd(6)+1
  510.    Bob 19+NASTIES,Q,V,T+45
  511.    Channel 4+NASTIES To Bob 19+NASTIES
  512.    If T=1 Then Amal 4+NASTIES,K$
  513.    If T=2 Then Amal 4+NASTIES,E$
  514.    If T=3 Then Amal 4+NASTIES,F$
  515.    If T=4 Then Amal 4+NASTIES,G$
  516.    If T=5 Then Amal 4+NASTIES,H$
  517.    If T=6 Then Amal 4+NASTIES,E$
  518.    If T=7 Then Amal 4+NASTIES,G$
  519.    Amal On 4+NASTIES
  520. End Proc
  521. Rem
  522. Procedure SETUPASTR
  523.    K$="Let R0=2; Let R1=3;"
  524.    K$=K$+"M: Let X=X+R0; Let Y=Y+R1;"
  525.    K$=K$+"If X>240 Jump A;"
  526.    K$=K$+"F: If X<10 Jump B;"
  527.    K$=K$+"G: If Y>170 Jump C;"
  528.    K$=K$+"H: If Y<10 Jump D;"
  529.    K$=K$+"Pause; Jump M; A: Let R0=-2; Pause; Jump G; B: Let R0=2; Pause; Jump G;"
  530.    K$=K$+"C: Let R1=-3; Pause; Jump M; D: Let R1=3; Pause; Jump M"
  531.    E$="Let R0=-2; Let R1=2;"
  532.    E$=E$+"M: Let X=X+R0; Let Y=Y+R1;"
  533.    E$=E$+"If X>240 Jump A;"
  534.    E$=E$+"F: If X<10 Jump B;"
  535.    E$=E$+"G: If Y>170 Jump C;"
  536.    E$=E$+"H: If Y<10 Jump D;"
  537.    E$=E$+"Pause; Jump M; A: Let R0=-2; Pause; Jump G; B: Let R0=2; Pause; Jump G;"
  538.    E$=E$+"C: Let R1=-1; Pause; Jump M; D: Let R1=1; Pause; Jump M"
  539.    F$="Let R0=2; Let R1=-2;"
  540.    F$=F$+"M: Let X=X+R0; Let Y=Y+R1;"
  541.    F$=F$+"If X>240 Jump A;"
  542.    F$=F$+"F: If X<10 Jump B;"
  543.    F$=F$+"G: If Y>170 Jump C;"
  544.    F$=F$+"H: If Y<10 Jump D;"
  545.    F$=F$+"Pause; Jump M; A: Let R0=-1; Pause; Jump G; B: Let R0=1; Pause; Jump G;"
  546.    F$=F$+"C: Let R1=-1; Pause; Jump M; D: Let R1=1; Pause; Jump M"
  547.    G$="Let R0=-1; Let R1=-1;"
  548.    G$=G$+"M: Let X=X+R0; Let Y=Y+R1;"
  549.    G$=G$+"If X>240 Jump A;"
  550.    G$=G$+"F: If X<10 Jump B;"
  551.    G$=G$+"G: If Y>170 Jump C;"
  552.    G$=G$+"H: If Y<10 Jump D;"
  553.    G$=G$+"Pause; Jump M; A: Let R0=-1; Pause; Jump G; B: Let R0=1; Pause; Jump G;"
  554.    G$=G$+"C: Let R1=-1; Pause; Jump M; D: Let R1=1; Pause; Jump M"
  555.    H$="Let R0=1; Let R1=2;"
  556.    H$=H$+"M: Let X=X+R0; Let Y=Y+R1;"
  557.    H$=H$+"If X>240 Jump A;"
  558.    H$=H$+"F: If X<10 Jump B;"
  559.    H$=H$+"G: If Y>170 Jump C;"
  560.    H$=H$+"H: If Y<10 Jump D;"
  561.    H$=H$+"Pause; Jump M; A: Let R0=-1; Pause; Jump G; B: Let R0=1; Pause; Jump G;"
  562.    H$=H$+"C: Let R1=-2; Pause; Jump M; D: Let R1=2; Pause; Jump M"
  563.    I$="Let R0=-1; Let R1=2;"
  564.    I$=I$+"M: Let X=X+R0; Let Y=Y+R1;"
  565.    I$=I$+"If X>240 Jump A;"
  566.    I$=I$+"F: If X<10 Jump B;"
  567.    I$=I$+"G: If Y>170 Jump C;"
  568.    I$=I$+"H: If Y<10 Jump D;"
  569.    I$=I$+"Pause; Jump M; A: Let R0=-1; Pause; Jump G; B: Let R0=1; Pause; Jump G;"
  570.    I$=I$+"C: Let R1=-2; Pause; Jump M; D: Let R1=2; Pause; Jump M"
  571. End Proc
  572. Rem
  573. Procedure SETUPSTART
  574.    DEAD=0
  575.    SPEED=2
  576.    SHAPE=10
  577.    ROOMNO=48
  578.    DRS=2
  579.    BAG(1)=0
  580.    BAG(2)=0
  581.    BAG(3)=0
  582.    OBJS(1,1)=57
  583.    OBJS(1,2)=100
  584.    OBJS(1,3)=100
  585.    OBJS(2,1)=31
  586.    OBJS(2,2)=100
  587.    OBJS(2,3)=100
  588.    OBJS(4,1)=56
  589.    OBJS(4,2)=100
  590.    OBJS(4,3)=100
  591.    OBJS(3,1)=8
  592.    OBJS(3,2)=100
  593.    OBJS(3,3)=100
  594.    OBJS(7,1)=82
  595.    OBJS(7,2)=100
  596.    OBJS(7,3)=100
  597.    OBJS(8,1)=25
  598.    OBJS(8,2)=100
  599.    OBJS(8,3)=100
  600.    OBJS(9,1)=66
  601.    OBJS(9,2)=50
  602.    OBJS(9,3)=100
  603.    RKEY=0
  604.    BKEY=0
  605.    GKEY=0
  606.    YKEY=0
  607.    OBS(1)=32
  608.    OBS(2)=33
  609.    OBS(3)=34
  610.    OBS(4)=35
  611.    OBS(5)=38
  612.    OBS(6)=39
  613.    OBS(7)=55
  614.    OBS(8)=56
  615.    OBS(9)=57
  616.    SCORE=0
  617.    LIVES=3
  618.    ENERGY2=12
  619.    ENERGY=200
  620.    DEAD=0
  621.    X=120
  622.    Y=80
  623.    ADSPR=25
  624.    GAMEOVER=0
  625.    FINISHED=0
  626.    MP=1
  627. End Proc
  628. Rem
  629. Rem main game code 
  630. Rem
  631. Rem
  632. Dim PERCENT(108)
  633. Dim BAG(3)
  634. Dim OPDRS(108,4)
  635. Dim OBJS(10,3)
  636. Dim OBS(10)
  637. Dim SCO$(16)
  638. Global X,Y,SPEED,STAIRS,TRAP,TRGT,N,NC,S,SC,E,EC,W,WC,DETCOL,ROOMNO,SHAPE
  639. Global DRS,RKEY,BKEY,GKEY,YKEY,SCORE,BAG(),LIVES,OPDRS(),OBJS(),OBS()
  640. Global DROP,PERCENT(),FFLAG,B$,ENERGY,ENERGY2,DEAD,GAMEOVER,NASTIES
  641. Global K$,E$,F$,G$,H$,I$,J$,ADSPR2,FINISHED,MP,SCO$()
  642. Rem
  643. STRTGME:
  644. Proc TITES
  645. Proc SETUPSTART
  646. Proc INITGAME
  647. Screen 3
  648. Paper 0
  649. Screen 1
  650. Proc SETUPMAIN
  651. Proc SETUPASTR
  652. Proc DRROOM
  653. Proc DRBAG
  654. Proc DRLIVES
  655. Music 1
  656. Tempo 18
  657. While GAMEOVER=0
  658.    Proc MVEBOB
  659.    Proc ADSPR
  660.    If FFLAG=1 Then Proc CHWEAP
  661.    DETCOL=0
  662.    Proc CHECKCOL
  663.    If FINISHED=1 Then GAMEOVER=1 : Goto ELOP
  664.    If DEAD=1 Then Goto CHDEAD
  665.    If DETCOL=1 Then Proc DRROOM
  666.    R=Rnd(99)+1
  667.    If R>95 Then Proc DROC
  668.    Screen 3
  669.    Locate 1,20
  670.    Print "SCORE:";
  671.    Print SCORE;"%"
  672.    Locate 1,19
  673.    Print "ROOM:"; : Print ROOMNO; : Print "  "
  674.    Screen 1
  675.    Dec ENERGY2
  676.    DEAD=0
  677.    If ENERGY2=0 Then Proc ENERGYDOWN
  678.  CHDEAD:
  679.    If DEAD=1 Then Proc LOSTLIFE : Proc DRROOM
  680.    If FFLAG=1 Then Proc CHWEAP
  681.    Wait Vbl 
  682.  ELOP:
  683. Wend 
  684. If FINISHED=1 Then Goto FINGME
  685. Amal Off 
  686. Music Off 
  687. Set Font 1
  688. For F=0 To 63
  689.    Bob Off(F)
  690. Next F
  691. Screen Close 3
  692. Screen 1
  693. For F=0 To 15
  694.    Colour F,Val(SCO$(F))
  695. Next F
  696. Music 1
  697. Cls 0
  698. Locate 10,10
  699. Bob 1,80,50,58
  700. Bob 2,80,100,59
  701. Ink 2,0
  702. Text 80,170,"(c) NPCSOFT 1991"
  703. T$="M: Move 0,-20,20; Pause; Move 0,20,20; Pause; Jump M"
  704. U$="M: Move 0,20,20; Pause; Move 0,-20,20; Pause; Jump M"
  705. Channel 1 To Bob 1
  706. Channel 2 To Bob 2
  707. Amal 1,T$
  708. Amal 2,U$
  709. Amal On 
  710. Tempo 14
  711. For F=13 To 5 Step -1
  712.    Wait 100
  713.    Tempo F
  714. Next F
  715. While Inkey$=""
  716. Wend 
  717. Amal Off 
  718. Bob Off 1
  719. Bob Off 2
  720. Screen Close 1
  721. Screen Hide 0
  722. Music Off 
  723. F=Free
  724. Goto STRTGME
  725. FINGME:
  726.    Amal Off 
  727.    Screen Close 3
  728.    Cls 0
  729.    Screen Close 1
  730.    Cls 0
  731.    Screen Open 1,640,200,16,Lowres
  732.    Screen Display 1,114,40,640,200
  733.    Screen 1
  734.    Cls 0
  735.    Double Buffer 
  736.    For F=0 To 15
  737.    Colour F,Val(SCO$(F))
  738.    Next F
  739.    Music Off 
  740.    For F=0 To 63
  741.    Bob Off(F)
  742.    Next F
  743.    Cls 0
  744.    Erase 3
  745.    Load "queen.abk"
  746.    Bob 6,30,10,62
  747.    Bob 7,190,10,63
  748.    T$="M: Move 160,0,160; Pause; Move -160,0,160; Pause; Jump M"
  749.    U$="M: Move -160,0,160; Pause; Move 160,0,160; Pause; Jump M"
  750.    Channel 6 To Bob 6
  751.    Channel 7 To Bob 7
  752.    Amal 6,T$
  753.    Amal 7,U$
  754.    Set Font 2
  755.    Ink 2,0
  756.    Text 80,170,"(C) NPCSOFT 1991"
  757.    NPC$=" AUtotest(Let R1=Vu(R0)*1.5 If R1=0 eXit else Direct Start)"
  758.    NPC$=NPC$+"Start: Let R2=R1; Let X=R0*64; Let X=X+60; Let Y=RA-R1; Pause;"
  759.    NPC$=NPC$+" Move 0,R2,RB; Wait;"
  760.    Amreg(0)=150 : Amreg(1)=25
  761.    For N=0 To 3
  762.    Bob N,N*64+60,Amreg(0),49
  763.    Channel N To Bob N
  764.    Amal N,"Let R0="+Str$(N)+NPC$
  765.    Next N
  766.    Amal On 
  767.    Music 1
  768.    Tempo 18
  769. While Inkey$=""
  770. Wend 
  771. Amal Off 
  772. Bob Off 0
  773. Bob Off 1
  774. Bob Off 2
  775. Bob Off 3
  776. Bob Off 6
  777. Bob Off 7
  778. Screen Close 1
  779. Screen Hide 0
  780. Music Off 
  781. F=Free
  782. Goto STRTGME
  783. Rem
  784. Rem Room Data (Map)
  785. Rem  
  786. Rem 1st floor
  787. Rem
  788. R1: Data 0,0,0,2,2,5,1,0,0,8,1
  789. R2: Data 0,0,0,3,1,1,1,0,0,0,0
  790. R3: Data 0,0,0,4,3,2,1,0,0,10,1
  791. R4: Data 1,0,0,108,1,0,0,0,0,0,0
  792. R5: Data 0,0,0,1,1,6,1,0,0,11,1
  793. R6: Data 0,0,0,5,1,7,1,0,0,0,0
  794. R7: Data 0,0,0,6,1,0,0,0,0,13,1
  795. R8: Data 0,0,0,9,1,11,1,1,1,0,0
  796. R9: Data 0,0,0,10,1,8,1,0,0,0,0
  797. R10: Data 0,0,0,0,0,0,0,3,1,14,1
  798. R11: Data 0,0,0,8,1,12,1,5,1,0,0
  799. R12: Data 0,1,40,11,1,13,1,0,0,0,0
  800. R13: Data 0,0,0,12,1,0,0,7,1,0,0
  801. R14: Data 0,0,0,0,0,0,0,10,1,15,1
  802. R15: Data 0,0,0,0,0,16,1,14,1,0,0
  803. R16: Data 0,0,0,15,1,17,1,0,0,0,0
  804. R17: Data 0,0,0,16,1,18,1,0,0,0,0
  805. R18: Data 0,0,0,17,1,20,1,19,1,0,0
  806. R19: Data 0,0,0,21,1,23,1,0,0,0,0
  807. R20: Data 0,0,0,18,1,25,5,0,0,0,0
  808. R21: Data 0,0,0,22,1,19,1,0,0,0,0
  809. R22: Data 0,1,36,0,0,0,0,0,0,0,0
  810. R23: Data 0,0,0,19,1,24,1,0,0,0,0
  811. R24: Data 2,0,0,0,0,32,1,0,0,0,0
  812. R25: Data 2,0,0,0,0,26,1,0,0,0,0
  813. Rem
  814. Rem ground floor 
  815. Rem
  816. R26: Data 0,0,0,27,1,0,0,0,0,0,0
  817. R27: Data 0,0,0,0,0,26,1,33,1,0,0
  818. R28: Data 0,0,0,29,1,0,0,34,1,0,0
  819. R29: Data 0,0,0,30,5,28,1,0,0,0,0
  820. R30: Data 0,0,0,31,1,29,1,36,2,0,0
  821. R31: Data 0,0,0,0,0,30,1,0,0,0,0
  822. R32: Data 2,0,0,0,0,57,1,0,0,0,0
  823. R33: Data 0,0,0,34,1,32,4,40,2,27,1
  824. R34: Data 0,0,0,0,0,0,0,0,0,28,1
  825. R35: Data 0,0,0,36,3,0,0,42,1,0,0
  826. R36: Data 0,0,0,37,5,35,3,43,4,30,2
  827. R37: Data 0,0,0,38,1,36,5,0,0,0,0
  828. R38: Data 0,1,63,0,0,37,1,0,0,0,0
  829. R39: Data 0,0,0,40,2,0,0,45,1,0,0
  830. R40: Data 0,1,65,41,2,39,2,0,0,33,2
  831. R41: Data 0,0,0,42,1,40,2,0,0,0,0
  832. R42: Data 0,0,0,43,1,41,1,48,1,35,1
  833. R43: Data 0,0,0,44,1,42,1,49,1,36,4
  834. R44: Data 0,0,0,0,0,43,1,0,0,37,1
  835. R45: Data 0,1,70,46,1,0,0,0,0,39,1
  836. R46: Data 0,0,0,0,0,45,1,0,0,0,0
  837. R47: Data 0,0,0,0,0,46,1,0,0,0,0
  838. R48: Data 0,0,0,49,1,47,1,0,0,42,1
  839. R49: Data 0,0,0,50,1,48,1,0,0,0,0
  840. R50: Data 1,0,0,4,1,0,0,0,0,0,0
  841. Rem
  842. Rem Basement 
  843. Rem
  844. R51: Data 0,0,0,52,1,0,0,0,0,0,0
  845. R52: Data 0,0,0,53,1,51,1,58,1,0,0
  846. R53: Data 0,0,0,54,1,52,1,72,1,0,0
  847. R54: Data 0,0,0,55,4,53,1,60,1,0,0
  848. R55: Data 0,0,0,56,1,54,1,0,0,0,0
  849. R56: Data 0,0,0,0,0,55,1,0,0,0,0
  850. R57: Data 0,0,0,58,1,0,0,0,0,0,0
  851. R58: Data 0,0,0,0,0,57,1,65,1,52,1
  852. R59: Data 0,0,0,60,1,0,0,66,3,0,0
  853. R60: Data 0,0,0,0,0,59,1,0,0,54,1
  854. R61: Data 0,0,0,0,0,60,1,0,0,0,0
  855. R62: Data 0,0,0,0,0,61,1,0,0,0,0
  856. R63: Data 0,0,0,0,0,62,1,0,0,0,0
  857. R64: Data 0,0,0,65,1,0,0,0,0,0,0
  858. R65: Data 0,0,0,0,0,64,1,71,1,58,1
  859. R66: Data 0,0,0,0,0,0,0,0,0,59,1
  860. R67: Data 0,0,0,68,1,0,0,0,0,0,0
  861. R68: Data 0,0,0,69,1,67,1,74,1,0,0
  862. R69: Data 1,0,0,50,1,0,0,0,0,0,0
  863. R70: Data 0,0,0,71,1,0,0,0,0,0,0
  864. R71: Data 0,0,0,72,1,70,1,0,0,65,1
  865. R72: Data 0,0,0,73,1,71,1,0,0,0,0
  866. R73: Data 0,0,0,74,1,72,1,0,0,0,0
  867. R74: Data 0,0,0,75,1,73,1,0,0,68,1
  868. R75: Data 1,0,0,45,1,0,0,0,0,0,0
  869. Rem
  870. Rem The Atic ! 
  871. Rem  
  872. R76: Data 2,0,0,0,0,13,1,0,0,0,0
  873. R77: Data 0,0,0,0,0,76,1,84,1,0,0
  874. R78: Data 0,0,0,0,0,77,1,0,0,0,0
  875. R79: Data 0,0,0,0,0,78,1,0,0,0,0
  876. R80: Data 0,0,0,81,2,79,1,87,1,0,0
  877. R81: Data 0,0,0,0,0,80,1,0,0,0,0
  878. R82: Data 0,1,97,0,0,0,0,89,4,0,0
  879. R83: Data 2,0,0,0,0,24,1,0,0,0,0
  880. R84: Data 0,0,0,0,0,83,5,0,0,77,1
  881. R85: Data 0,0,0,0,0,0,0,92,1,0,0
  882. R86: Data 0,0,0,87,1,85,1,0,0,0,0
  883. R87: Data 0,1,22,0,0,0,0,94,1,80,1
  884. R88: Data 0,0,0,89,1,0,0,95,1,0,0
  885. R89: Data 0,0,0,0,0,88,1,96,1,82,4
  886. R90: Data 2,0,0,0,0,39,1,0,0,0,0
  887. R91: Data 0,1,12,0,0,90,4,98,1,0,0
  888. R92: Data 0,0,0,93,1,0,0,0,0,0,0
  889. R93: Data 0,0,0,0,0,92,1,0,0,86,1
  890. R94: Data 0,0,0,0,0,0,0,101,5,87,1
  891. R95: Data 0,0,0,0,0,0,0,102,1,88,1
  892. R96: Data 0,0,0,0,0,95,1,103,1,89,2
  893. R97: Data 0,0,0,98,1,0,0,104,3,0,0
  894. R98: Data 0,0,0,99,1,97,1,0,0,91,1
  895. R99: Data 0,0,0,100,1,98,1,0,0,92,1
  896. R100: Data 0,0,0,0,0,99,1,106,1,0,0
  897. R101: Data 0,0,0,102,4,0,0,0,0,94,3
  898. R102: Data 0,0,0,0,0,101,4,0,0,95,1
  899. R103: Data 0,1,10,0,0,0,0,108,1,96,1
  900. R104: Data 0,0,0,105,1,0,0,0,0,97,3
  901. R105: Data 0,0,0,106,1,104,2,0,0,0,0
  902. R106: Data 0,0,0,107,5,105,3,0,0,0,0
  903. R107: Data 0,0,0,108,1,106,4,0,0,0,0
  904. R108: Data 0,0,0,0,0,107,5,0,0,103,1