home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 351-375 / apd362 / revenge.bak / revenge.amosSourceCode < prev    next >
AMOS Source Code  |  1991-06-13  |  26KB  |  1,422 lines

  1. Double Buffer 
  2. Break Off 
  3. Update Every 2
  4. Reserve Zone 9
  5. Bob Update Off 
  6. Global P1,P2,LA1,RA1,LA2,RA2,LAM1,LAM2,RAM1,RAM2,LRL1,LRL2,RRL1,RRL2,SCRN
  7. Dim WALL(3)
  8. Dim OON(3)
  9. Dim BULL(3)
  10. Global WALL(),NAS,OON(),BULL(),EN1,EN2,EUD1,EUD2,SC1,SC2,SUD1,SUD2,SCORE,NAME$
  11. Global TERMINATE,ENEMYS,SCRN,LEVEL,CSH1,CSH2,NMEUD,MUSIX
  12. Load ":targets.ABK"
  13. Load ":squats.ABK",1
  14. Load ":l1icons.ABK"
  15. Load ":l1sprites.ABK",1
  16. Make Icon Mask 
  17. Flash Off 
  18. Curs Off 
  19. Hide On 
  20. Priority On 
  21. Proc MESSAGE
  22. Procedure MESSAGE
  23. Autoback 2
  24. Cls 0
  25. Palette 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  26. Pen 1 : Paper 0
  27. For T=0 To 2
  28. Cls 0
  29. Read A$
  30. Locate 0,10
  31. Centre A$
  32. Fade 10,$0,$FFF,,,,,,,,,,,,,,
  33. Wait 300
  34. Fade 10
  35. Wait 300
  36. Next T
  37. Data "Mark Potter presents"
  38. Data "An AMOS game"
  39. Data "get ready for..."
  40. End Proc
  41. Cls 0
  42. Get Sprite Palette 
  43. Palette ,,,,,,,,,,,,,,,,$0,$FFF,$F80,$FF0,$0,$FFF,$F80,$FF0,$0,$FFF,$F80,$FF0,$0,$FFF,$F80,$FF0
  44. Autoback 0
  45. For T=10 To 13
  46. Set Bob T,1,,
  47. Next T
  48. For T=17 To 24
  49. Hot Spot T,,32
  50. Next T
  51. Hot Spot 85,$2
  52. Hot Spot 83,$2
  53. For T=42 To 47
  54. Hot Spot T,$12
  55. Next T
  56. Make Mask 
  57. 1
  58. Bob Clear 
  59. Proc TITLE
  60. Procedure TITLE
  61. Music 1
  62. Bob Clear 
  63. Cls 0
  64. Pen 1
  65. Paper 0
  66. Locate 0,1
  67. Print "SQUAT'S REVENGE         "
  68. For T=0 To 40
  69. Screen Copy 0,0,5+(T*2),320,30 To 0,0,6+(T*2)
  70. Screen Copy Logic(0) To Physic(0)
  71. Wait Vbl 
  72. Next T
  73. For T=0 To 120
  74. Screen Copy 0,T*2,0,320,50 To 0,(T*2)+1,0
  75. Screen Copy Logic(0) To Physic(0)
  76. Wait Vbl 
  77. Next T
  78. Locate 0,5
  79. Centre "By Mark Potter"
  80. Locate 0,6
  81. Centre "press fire to play"
  82. Locate 0,12
  83. Centre "press c to continue at same screen"
  84. Locate 0,18
  85. If MUSIX=1
  86. Print "M=toggle:music"
  87. Else 
  88. Print "M=toggle:sound"
  89. End If 
  90. Pen 3
  91. Locate 0,8
  92. Print "best score:";SCORE
  93. Print "by ";NAME$
  94. Locate 0,16
  95. Print "note:this game is 2 player"
  96. Print "use 2 joysticks"
  97. Screen Swap 
  98. Clear Key 
  99. While Fire(1)=0
  100. I$=Inkey$
  101. If Upper$(I$)="C" Then Goto SKIP2
  102. If Upper$(I$)="M"
  103. MUSIX=1-MUSIX
  104. Screen Copy Physic(0) To Logic(0)
  105. Locate 0,18
  106. If MUSIX=1
  107. Print "M=toggle:music"
  108. Else 
  109. Print "M=toggle:sound"
  110. End If 
  111. Screen Copy Logic(0) To Physic(0)
  112. End If 
  113. Wend 
  114. If MUSIX=0 Then Music Off 
  115. If LEVEL>0
  116. Load ":targets.ABK"
  117. Load ":squats.ABK",1
  118. Load ":l1sprites.ABK",1 : Make Mask 
  119. For T=17 To 24
  120. Hot Spot T,,32
  121. Next T
  122. Hot Spot 85,$2
  123. Hot Spot 83,$2
  124. For T=42 To 47
  125. Hot Spot T,$12
  126. Next T
  127. End If 
  128. LEVEL=0
  129. SCRN=0
  130. SKIP2:
  131. If MUSIX=0 Then Music Off 
  132. Screen Swap 
  133. Cls 0
  134. End Proc
  135. LA1=0 : LA2=0 : RA1=1 : RA2=1 : LAM1=0 : LAM2=0 : RAM1=0 : RAM2=0 : P2=0
  136. P1=1 : EN1=25 : EN2=25 : P1=1 : CSH1=0 : CSH2=0
  137. TERMINATE=0
  138. Sprite 8,200,100,1
  139. Channel 0 To Sprite 8
  140. Amal 0,"S:MR0,R1,1;IX<130JL;A:IX>447JR;B:IY>200JD;C:IY<50JU;JS;U:LY=50;JS;D:LY=200;JC;L:LX=130;JA;R:LX=447;JB"
  141. Amal On 0
  142. Bob 0,200,150,15
  143. Channel 1 To Bob 0
  144. Amal 1,"S:IJ1=4JL;IJ1=8JR;JS;N:A0,(15,1);JS;L:IX<10JN;A0,(9,5)(10,5)(9,5)(11,5);A:IX<10JN;M-1,0,1;IJ1<>4JN;JA;R:IX>309JN;A0,(12,5)(13,5)(12,5)(14,5);B:IX>309JN;M1,0,1;IJ1<>8JN;JB"
  145. Amal On 1
  146. LS:
  147. Proc SETUP
  148. Procedure SETUP
  149. Make Mask 
  150. Amal Freeze 
  151. Bob Draw 
  152. Wait 10
  153. For T=0 To 3
  154. WALL(T)=0
  155. Next T
  156. For T=10 To 13
  157. Bob T,-100,-100,5
  158. Bob Off T+6
  159. Next T
  160. Bob Clear 
  161. Cls 0
  162. Bob Draw 
  163. Cls 0
  164. Bob Clear 
  165. Wait 10
  166. Cls 0
  167. Pen 3
  168. Locate 0,0
  169. Centre "GET READY..."
  170. Locate 0,10
  171. If LEVEL=0
  172. A$="the ork encampment"
  173. End If 
  174. If LEVEL=1
  175. A$="the eldar base"
  176. End If 
  177. If LEVEL=2
  178. A$="the evil squat stronghold"
  179. End If 
  180. Print "entering zone ";SCRN;" of level ";LEVEL
  181. Print "(";A$;")"
  182. Screen Swap 
  183. Bob Draw 
  184. Wait 5
  185. Bob Clear 
  186. Wait 5
  187. Cls 0
  188. Restore(100*(LEVEL+1))+SCRN
  189. Read A
  190. Read NAS
  191. If NAS=-1
  192. Paste Bob 150,25,86
  193. End If 
  194. For T=0 To 9
  195. Paste Icon T*32,10,A
  196. Next T
  197. Do 
  198. Read A,B,C
  199. If A=0 and B=0 and C=0
  200. Exit 
  201. Else 
  202. Paste Icon A,B,C
  203. End If 
  204. Loop 
  205. For T=10 To 13
  206. Read A,B,C
  207. If A=0 and B=0 and C=0
  208. Exit 
  209. Else 
  210. Set Bob T,1,,
  211. Bob T,A,B,C
  212. WALL(T-10)=1
  213. If C=83
  214. Set Zone T-9,A,B-64 To A+32,B
  215. End If 
  216. If C=84
  217. Set Zone T-9,A,B-32 To A+32,B
  218. End If 
  219. If C=85
  220. Set Zone T-9,A,B-20 To A+64,B
  221. End If 
  222. End If 
  223. Next T
  224. Wait 50
  225. Read ENEMYS
  226. Pen 3 : Paper 0
  227. Print At(0,20);"Player1:"
  228. Pen 6
  229. Print At(0,21);"ARMOUR"
  230. Pen 8
  231. Print At(0,23);"SCORE"
  232. Pen 3
  233. Print At(30,20);"Player2:"
  234. Pen 6
  235. Print At(30,21);"ARMOUR"
  236. Pen 8
  237. Print At(30,23);"SCORE"
  238. Pen 9
  239. Print At(14,20);"ENEMYS"
  240. Pen 3
  241. Screen Copy Logic(0) To Physic(0)
  242. 100 Data 1,1,0,0,0,0,100,85,256,100,85,0,0,0,30
  243. 101 Data 1,2,0,0,0,100,90,83,200,90,83,0,0,0,35
  244. 102 Data 2,2,0,0,0,100,90,83,200,90,83,110,130,84,190,130,84,35
  245. 103 Data 2,3,128,10,3,0,0,0,150,90,83,0,0,0,40
  246. 104 Data 4,4,0,0,0,50,90,83,250,90,83,80,90,85,188,90,85,50
  247. 105 Data 2,4,0,0,0,0,0,0,50
  248. 106 Data 3,4,0,0,0,50,100,84,200,100,84,200,100,84,284,100,84,55
  249. 107 Data 2,-1,0,0,0,0,0,0,0
  250. 200 Data 1,1,0,0,0,0,90,84,50,100,84,150,90,84,200,100,84,35
  251. 201 Data 1,2,0,0,0,135,90,83,0,0,0,40
  252. 202 Data 2,3,0,0,0,130,90,85,0,0,0,45
  253. 203 Data 2,4,0,0,0,0,0,0,50
  254. 204 Data 4,5,0,0,0,130,80,86,56,80,86,204,80,86,0,0,0,50
  255. 205 Data 4,5,0,0,0,0,90,83,90,90,83,180,90,83,270,90,83,55
  256. 206 Data 2,-1,0,0,0,0,0,0,10
  257. 300 Data 1,1,0,0,0,0,100,85,50,100,85,150,100,85,200,100,85,30
  258. 301 Data 2,2,0,0,0,135,90,83,200,90,86,0,0,0,20
  259. 302 Data 3,3,0,0,0,130,90,85,0,0,0,20
  260. 303 Data 4,4,0,0,0,0,0,0,20
  261. 304 Data 1,5,0,0,0,130,80,86,56,80,86,204,80,86,0,0,0,25
  262. 305 Data 2,5,0,0,0,0,90,83,90,90,83,180,90,83,270,90,83,30
  263. 306 Data 3,-1,0,0,0,0,0,0,10
  264. For T=0 To 3
  265. OON(T)=0
  266. Next T
  267. For T=0 To 3
  268. BULL(T)=0
  269. Next T
  270. EUD1=2 : EUD2=2 : SUD1=2 : SUD2=2
  271. If P1=1 Then Sprite 8,,,Max(RA1,1)
  272. If P2=1 Then Sprite 9,,,Max(RA2,1)
  273. Bob Draw 
  274. Wait 10
  275. Screen Swap 
  276. Bob Draw 
  277. Wait 10
  278. If NAS=-1
  279. Proc BIGNAS
  280. End If 
  281. NMEUD=2
  282. Amal On 
  283. End Proc
  284. Do 
  285. Bob Clear 
  286. If LAM1>1000 Then LAM1=1000
  287. If LAM2>1000 Then LAM2=1000
  288. If RAM1>1000 Then RAM1=1000
  289. If RAM2>1000 Then RAM2=1000
  290. Proc P2SCAN
  291. Procedure P2SCAN
  292. If Fire(0)<>0 and P2=0
  293. P2=1
  294. LAM2=0 : RAM2=0 : LA2=0 : RA2=1 : EN2=25 : SC2=0 : CHS2=0
  295. If MUSIX=0 : Bell : End If 
  296. Sprite 9,200,100,1
  297. Channel 2 To Sprite 9
  298. Amal 2,"S:MR0,R1,1;IX<130JL;A:IX>447JR;B:IY>200JD;C:IY<50JU;JS;U:LY=50;JS;D:LY=200;JC;L:LX=130;JA;R:LX=447;JB"
  299. Amal On 2
  300. Bob 1,200,150,15
  301. Channel 3 To Bob 1
  302. Amal 3,"S:IJ0=4JL;IJ0=8JR;JS;N:A0,(15,1);JS;L:IX<10JN;A0,(9,5)(10,5)(9,5)(11,5);A:IX<10JN;M-1,0,1;IJ0<>4JN;JA;R:IX>309JN;A0,(12,5)(13,5)(12,5)(14,5);B:IX>309JN;M1,0,1;IJ0<>8JN;JB"
  303. Amal On 3
  304. End If 
  305. Amreg(0,0)=Jright(1)*-2+(Jleft(1)*2)
  306. Amreg(0,1)=Jdown(1)*-2+(Jup(1)*2)
  307. If P2=1
  308. Amreg(2,0)=Jright(0)*-2+(Jleft(0)*2)
  309. Amreg(2,1)=Jdown(0)*-2+(Jup(0)*2)
  310. End If 
  311. End Proc
  312. Proc P1SCAN
  313. Procedure P1SCAN
  314. If Fire(1)<>0 and P1=0
  315. P1=1
  316. LAM1=0 : RAM1=0 : LA1=0 : RA1=1 : EN1=25 : SC1=0 : CSH1=0
  317. If MUSIX=0 : Bell : End If 
  318. Sprite 8,200,100,1
  319. Channel 0 To Sprite 8
  320. Amal 0,"S:MR0,R1,1;IX<130JL;A:IX>447JR;B:IY>200JD;C:IY<50JU;JS;U:LY=50;JS;D:LY=200;JC;L:LX=130;JA;R:LX=447;JB"
  321. Amal On 0
  322. Bob 0,200,150,15
  323. Channel 1 To Bob 0
  324. Amal 1,"S:IJ1=4JL;IJ1=8JR;JS;N:A0,(15,1);JS;L:IX<10JN;A0,(9,5)(10,5)(9,5)(11,5);A:IX<10JN;M-1,0,1;IJ0<>4JN;JA;R:IX>309JN;A0,(12,5)(13,5)(12,5)(14,5);B:IX>309JN;M1,0,1;IJ0<>8JN;JB"
  325. Amal On 1
  326. End If 
  327. End Proc
  328. Proc FIRING
  329. Proc WEPANIM
  330. Procedure WEPANIM
  331. If Fire(1)=0 and I Bob(0)>8 and I Bob(0)<15
  332. If Jleft(1)=-1 and LA1>0
  333. A=17+((LA1-1)*2)
  334. Bob 2,X Bob(0)-20,164,A
  335. End If 
  336. If Jright(1)=-1 and RA1>0
  337. A=18+((RA1-1)*2)
  338. Bob 2,X Bob(0),164,A
  339. End If 
  340. End If 
  341. If(Jleft(1)=0 and Jright(1)=0) or I Bob(0)=15
  342. Bob Off 2
  343. End If 
  344. If P2=1
  345. If Fire(0)=0 and I Bob(1)>8 and I Bob(1)<15
  346. If Jleft(0)=-1 and LA2>0
  347. A=17+((LA2-1)*2)
  348. Bob 3,X Bob(1)-20,164,A
  349. End If 
  350. If Jright(0)=-1 and RA2>0
  351. A=18+((RA2-1)*2)
  352. Bob 3,X Bob(1),164,A
  353. End If 
  354. End If 
  355. If(Jleft(0)=0 and Jright(0)=0) or I Bob(1)=15
  356. Bob Off 3
  357. End If 
  358. End If 
  359. End Proc
  360. Proc WALLCOL
  361. Procedure WALLCOL
  362. C=Spritebob Col(10,10 To 13)
  363. If C=-1
  364. If RA1=1
  365. D=1
  366. End If 
  367. If RA1=2
  368. D=2
  369. End If 
  370. If RA1=3
  371. D=8
  372. End If 
  373. If RA1=4
  374. D=1
  375. End If 
  376. For T=10 To 13
  377. If Col(T)=-1 and WALL(T-10)>0
  378. WALL(T-10)=WALL(T-10)+D
  379. End If 
  380. If WALL(T-10)>50
  381. SC1=SC1+10
  382. SUD1=2
  383. Gosub BLOWDOWN
  384. End If 
  385. Next T
  386. End If 
  387. C=Spritebob Col(11,10 To 13)
  388. If C=-1
  389. If LA1=1
  390. D=1
  391. End If 
  392. If LA1=2
  393. D=2
  394. End If 
  395. If LA1=3
  396. D=8
  397. End If 
  398. If LA1=4
  399. D=1
  400. End If 
  401. For T=10 To 13
  402. If Col(T)=-1 and WALL(T-10)>0
  403. WALL(T-10)=WALL(T-10)+D
  404. End If 
  405. If WALL(T-10)>50
  406. SC1=SC1+10
  407. SUD1=2
  408. Gosub BLOWDOWN
  409. End If 
  410. Next T
  411. End If 
  412. C=Spritebob Col(12,10 To 13)
  413. If C=-1
  414. If RA2=1
  415. D=1
  416. End If 
  417. If RA2=2
  418. D=2
  419. End If 
  420. If RA2=3
  421. D=8
  422. End If 
  423. If RA2=4
  424. D=1
  425. End If 
  426. For T=10 To 13
  427. If Col(T)=-1 and WALL(T-10)>0
  428. WALL(T-10)=WALL(T-10)+D
  429. End If 
  430. If WALL(T-10)>50
  431. SC2=SC2+10
  432. SUD2=2
  433. Gosub BLOWDOWN
  434. End If 
  435. Next T
  436. End If 
  437. C=Spritebob Col(13,10 To 13)
  438. If C=-1
  439. If LA2=1
  440. D=1
  441. End If 
  442. If LA2=2
  443. D=2
  444. End If 
  445. If LA2=3
  446. D=8
  447. End If 
  448. If LA2=4
  449. D=1
  450. End If 
  451. For T=10 To 13
  452. If Col(T)=-1 and WALL(T-10)>0
  453. WALL(T-10)=WALL(T-10)+D
  454. End If 
  455. If WALL(T-10)>50
  456. SC2=SC2+10
  457. SUD2=2
  458. Gosub BLOWDOWN
  459. End If 
  460. Next T
  461. End If 
  462. For T=10 To 13
  463. If WALL(T-10)<0
  464. If MUSIX=0 : Boom : End If 
  465. Dec WALL(T-10)
  466. Bob T+6,X Bob(T)+Rnd(64),Y Bob(T)-10+Rnd(10),76
  467. If WALL(T-10)<-20
  468. Bob T,-10,-10,5
  469. Bob Off T+6
  470. Reset Zone T-9
  471. WALL(T-10)=0
  472. End If 
  473. End If 
  474. Next T
  475. Pop Proc
  476. BLOWDOWN:
  477. If MUSIX=0 : Boom : End If 
  478. WALL(T-10)=-1
  479. Return 
  480. End Proc
  481. Proc NASTIES
  482. Procedure NASTIES
  483. For T=4 To 7
  484. If OON(T-4)>0 and OON(T-4)<999
  485. Amreg(T,3)=Zone(X Bob(T),Y Bob(T))
  486. End If 
  487. Next T
  488. Amreg(23)=X Bob(0)
  489. If P2=1
  490. Amreg(21)=X Bob(1)
  491. Else 
  492. Amreg(21)=X Bob(0)
  493. End If 
  494. For T=0 To 3
  495. If OON(T)=0 and ENEMYS>0
  496. N=Rnd(NAS)
  497. If LEVEL=1 and NAS=-1
  498. N=Rnd(5)
  499. End If 
  500. OON(T)=N+1
  501. If LEVEL=0
  502. If N=2
  503. If Rnd(1)=0
  504. N=1 : OON(T)=2
  505. End If 
  506. Y=90+Rnd(20)
  507. A=54
  508. A$="LR0=0;LR2=10;S:IX<160JR;IX>159JL;JS;R:A0,(51,5)(52,5)(53,5)(52,5);A:M1,0,1;IX=RXJF;IX=RVJF;IZ(255)=0JF;IX>320JS;JA;L:A0,(48,5)(49,5)(50,5)(49,5);B:M-1,0,1;IX<0JS;IX=RXJF;IZ(255)=0JF;IX=RVJF;JB"
  509. A$=A$+";F:IR3>0JS;A0,(54,1);FR1=1T50;NR1;LR0=1;A0,(54,3)(55,3);C:IR0=0JS;JC"
  510. End If 
  511. If N=3
  512. If Rnd(1)=0
  513. N=0 : OON(T)=1
  514. End If 
  515. Y=70
  516. A=58
  517. A$="LR0=0;LR2=20;L:LX=-10;A:A0,(58,3)(59,3);R:M1,0,1;IX>330JL;IX=RXJF;IX=RVJF;IZ(255)=0JF;JR"
  518. A$=A$+";F:A1,(60,5)(61,5)(62,5);M0,0,20;A1,(63,4)(62,4);LR0=3;W:IR0=0JX;JW;X:A1,(61,5)(60,5);M0,0,10;JA"
  519. End If 
  520. If N=4
  521. Y=70
  522. A=58
  523. A$="LR0=0;LR2=8;L:LX=330;A:A0,(64,3)(65,3);R:M-2,0,1;IX<-10JL;IX=RXJF;IX=RVJF;LR9=X+1;IR9=RVJF;IR9=RXJF;LR9=X-1;IR9=XJF;IR9=RVJF;IZ(255)=0JF;JR"
  524. A$=A$+";F:IR3>0JR;M0,0,50;A0,(65,4)(66,4);LR0=1;W:IR0=0JA;JW"
  525. End If 
  526. If N=0
  527. Y=98
  528. A=46
  529. A$="LR0=0;LR2=1;S:IX<160JR;IX>159JL;JS;R:A0,(42,5)(43,5);A:M1,0,1;IX=RXJF;IX=RVJF;IX>320JS;IZ(255)=0JF;JA;L:A0,(44,5)(45,5);B:M-1,0,1;IX<0JS;IX=RXJF;IZ(255)=0JF;IX=RVJF;JB"
  530. A$=A$+";F:IR3>0JS;A0,(46,1);FR1=1T50;NR1;LR0=1;A0,(46,3)(47,3);C:IR0=0JS;JC"
  531. End If 
  532. If N=1
  533. Y=120+Rnd(20)
  534. A=40
  535. A$="LR0=0;LR2=1;S:IX<160JR;IX>159JL;JS;R:A0,(32,5)(33,5)(34,5)(35,5);A:M2,0,1;IX=RXJF;IX+1=RXJF;IX+1=RVJF;IX=RVJF;IZ(255)=0JF;IX>320JS;JA;L:A0,(36,5)(37,5)(38,5)(39,5);B:M-2,0,1;IX<0JS;IX=RXJF;IX+1=RXJF;IX+1=RVJF;IX=RVJF;IZ(255)=0JF;JB"
  536. A$=A$+";F:IR3>0JS;IZ(255)<100JE;A0,(40,1);FR1=1T50;NR1;LR0=1;A0,(40,3)(41,3);C:IR0=0JS;JC;E:A0,(56,5)(57,5);M0,0,50;LR0=2;JS"
  537. End If 
  538. End If 
  539. If LEVEL=1
  540. If N=2
  541. If Rnd(1)=0
  542. N=1 : OON(T)=2
  543. End If 
  544. Y=90+Rnd(20)
  545. A=54
  546. A$="LR0=0;LR2=15;S:IX<160JR;IX>159JL;JS;R:A0,(51,5)(52,5)(53,5)(52,5);A:M1,0,1;IX=RXJF;IX=RVJF;IZ(255)=0JF;IX>320JS;JA;L:A0,(48,5)(49,5)(50,5)(49,5);B:M-1,0,1;IX<0JS;IX=RXJF;IZ(255)=0JF;IX=RVJF;JB"
  547. A$=A$+";F:IZ(255)>128JE;IR3>0JS;A0,(54,1);FR1=1T50;NR1;LR0=1;A0,(54,3)(55,3);C:IR0=0JS;JC;E:A1,(54,1);M0,0,20;LR0=3;JS"
  548. End If 
  549. If N=3
  550. If Rnd(1)=0
  551. N=0 : OON(T)=1
  552. End If 
  553. Y=70
  554. A=58
  555. A$="LR0=0;LR2=10;L:LX=-10;A:A0,(58,3)(59,3);R:M1,0,1;IX>330JL;IX=RXJF;IX=RVJF;IZ(255)=0JF;JR"
  556. A$=A$+";F:A1,(60,8)(61,8);M0,0,20;A0,(61,4)(62,4);LR0=1;W:IR0=0JX;JW;X:A1,(61,5)(60,5);M0,0,10;JA"
  557. End If 
  558. If N=4
  559. Y=70
  560. A=58
  561. A$="LR0=0;LR2=3;S:IX<160JR;IX>159JL;JS;R:A0,(63,5)(64,5);A:M1,0,1;IX=RXJF;IX=RVJF;IX>320JS;IZ(255)=0JF;JA;L:A0,(65,5)(66,5);B:M-1,0,1;IX<0JS;IX=RXJF;IZ(255)=0JF;IX=RVJF;JB"
  562. A$=A$+";F:IR3>0JS;A0,(67,1);FR1=1T50;NR1;LR0=6;A0,(67,3)(68,3);C:IR0=0JS;JC"
  563. End If 
  564. If N=0
  565. Y=98
  566. A=46
  567. A$="LR0=0;LR2=2;S:IX<160JR;IX>159JL;JS;R:A0,(42,5)(43,5);A:M1,0,1;IX=RXJF;IX=RVJF;IX>320JS;IZ(255)=0JF;JA;L:A0,(44,5)(45,5);B:M-1,0,1;IX<0JS;IX=RXJF;IZ(255)=0JF;IX=RVJF;JB"
  568. A$=A$+";F:IR3>0JS;A0,(46,1);FR1=1T50;NR1;LR0=1;A0,(46,3)(47,3);C:IR0=0JS;JC"
  569. End If 
  570. If N=1
  571. Y=120+Rnd(20)
  572. A=40
  573. A$="LR0=0;LR2=2;S:IX<160JR;IX>159JL;JS;R:A0,(32,5)(33,5)(34,5)(35,5);A:M2,0,1;IX=RXJF;IX+1=RXJF;IX+1=RVJF;IX=RVJF;IZ(255)=0JF;IX>320JS;JA;L:A0,(36,5)(37,5)(38,5)(39,5);B:M-2,0,1;IX<0JS;IX=RXJF;IX+1=RXJF;IX+1=RVJF;IX=RVJF;IZ(255)=0JF;JB"
  574. A$=A$+";F:IR3>0JS;IZ(255)<100JE;A0,(40,1);FR1=1T50;NR1;LR0=1;A0,(40,3)(41,3);C:IR0=0JS;JC;E:A1,(40,1);M0,0,40;LR0=2;JS"
  575. End If 
  576. If N=5
  577. Y=120+Rnd(20)
  578. A=40
  579. A$="LR0=0;LR2=2;A0,(56,4)(57,4);LX=Z(255)+25;R:LY=0;LR9=RX-X;IZ(255)>128JA;LR9=RV-X;A:MR9,140,100;JF;S:M0,-140,140;JR"
  580. A$=A$+";F:IR3>0JS;IZ(255)<100JE;FR1=1T50;NR1;LR0=1;C:IR0=0JS;JC;E:M0,0,40;LR0=2;JS"
  581. End If 
  582. End If 
  583. If LEVEL=2
  584. If N=2
  585. If Rnd(1)=0
  586. N=1 : OON(T)=2
  587. End If 
  588. Y=90+Rnd(20)
  589. A=54
  590. A$="LR0=0;LR2=20;S:LX=-50;M0,0,100;LA=48;LX=RX;IZ(255)>128JA;LX=RV;A:A1,(48,10)(49,10)(50,10)(51,10)(52,10)(53,10)(54,10);M0,0,70"
  591. A$=A$+";A0,(54,3)(55,3);LR0=6;L:IR0<>0JL;A1,(54,10)(53,10)(52,10)(51,10)(50,10)(49,10)(48,10);M0,0,70;JS"
  592. End If 
  593. If N=3
  594. Y=70
  595. A=58
  596. A$="LR0=0;LR2=25;S:IX<160JR;IX>159JL;JS;R:A0,(58,5)(59,5);A:M1,0,1;IX=RXJF;IX=RVJF;IX>320JS;IZ(255)=0JF;JA;L:A0,(60,5)(61,5);B:M-1,0,1;IX<0JS;IX=RXJF;IZ(255)=0JF;IX=RVJF;JB"
  597. A$=A$+";F:IR3>0JS;A1,(62,1);FR1=1T50;NR1;LR0=7;A1,(62,3);C:IR0=0JS;JC"
  598. End If 
  599. If N=0
  600. Y=98
  601. A=46
  602. A$="LR0=0;LR2=1;S:IX<160JR;IX>159JL;JS;R:A0,(42,5)(43,5);A:M1,0,1;IX=RXJF;IX=RVJF;IX>320JS;IZ(255)=0JF;JA;L:A0,(44,5)(45,5);B:M-1,0,1;IX<0JS;IX=RXJF;IZ(255)=0JF;IX=RVJF;JB"
  603. A$=A$+";F:IR3>0JS;A0,(46,1);FR1=1T40;NR1;LR0=1;A0,(46,3)(47,3);C:IR0=0JS;JC"
  604. End If 
  605. If N=1
  606. Y=120+Rnd(20)
  607. A=40
  608. A$="LR0=0;LR2=1;S:IX<160JR;IX>159JL;JS;R:A0,(32,5)(33,5)(34,5)(35,5);A:M2,0,1;IX=RXJF;IX+1=RXJF;IX+1=RVJF;IX=RVJF;IZ(255)=0JF;IX>320JS;JA;L:A0,(36,5)(37,5)(38,5)(39,5);B:M-2,0,1;IX<0JS;IX=RXJF;IX+1=RXJF;IX+1=RVJF;IX=RVJF;IZ(255)=0JF;JB"
  609. A$=A$+";F:IR3>0JS;IZ(255)<100JE;A0,(40,1);FR1=1T40;NR1;LR0=1;A0,(40,3)(41,3);C:IR0=0JS;JC;E:A1,(40,1);M0,0,40;LR0=2;JS"
  610. End If 
  611. If N=4
  612. Y=70
  613. A=58
  614. A$="LR0=0;LR2=10;L:LX=330;A:A1,(56,1);R:M-2,0,1;IX<-10JL;IX=RXJF;IX=RVJF;LR9=X+1;IR9=RVJF;IR9=RXJF;LR9=X-1;IR9=XJF;IR9=RVJF;IZ(255)=0JF;JR"
  615. A$=A$+";F:IR3>0JR;M0,0,50;A1,(57,1);LR0=7;W:IR0=0JA;JW"
  616. End If 
  617. If N=5
  618. Y=120+Rnd(20)
  619. Y=98
  620. A=46
  621. A$="LR0=0;LR2=1;S:IX<160JR;IX>159JL;JS;R:A0,(63,5)(64,5);A:M1,0,1;IX=RXJF;IX=RVJF;IX>320JS;IZ(255)=0JF;JA;L:A0,(65,5)(66,5);B:M-1,0,1;IX<0JS;IX=RXJF;IZ(255)=0JF;IX=RVJF;JB"
  622. A$=A$+";F:IR3>0JS;A0,(67,1);FR1=1T40;NR1;LR0=6;A0,(67,3)(68,3);C:IR0=0JS;JC"
  623. End If 
  624. End If 
  625. Bob T+4,Rnd(1)*320,Y,A
  626. Channel T+4 To Bob T+4
  627. Amal T+4,A$
  628. Amal On T+4
  629. Dec ENEMYS
  630. NMEUD=2
  631. End If 
  632. Next T
  633. End Proc
  634. Proc HIT
  635. Procedure HIT
  636. For T=0 To 3
  637. If OON(T)=999
  638. If Amreg(T+4,9)=9
  639. OON(T)=0
  640. End If 
  641. End If 
  642. Next T
  643. C=Spritebob Col(10,4 To 7)
  644. If C=-1
  645. For T=4 To 7
  646. If Col(T)=-1 and OON(T-4)<999 and OON(T-4)>0
  647. H=T
  648. If RA1=1 or RA1=4
  649. D=1
  650. End If 
  651. If RA1=2
  652. D=2
  653. End If 
  654. If RA1=3
  655. D=8
  656. End If 
  657. S=10
  658. Gosub HITIT
  659. Exit 
  660. End If 
  661. Next T
  662. End If 
  663. C=Spritebob Col(11,4 To 7)
  664. If C=-1
  665. For T=4 To 7
  666. If Col(T)=-1 and OON(T-4)<999 and OON(T-4)>0
  667. H=T
  668. If LA1=1 or LA1=4
  669. D=1
  670. End If 
  671. If LA1=2
  672. D=2
  673. End If 
  674. If LA1=3
  675. D=8
  676. End If 
  677. S=11
  678. Gosub HITIT
  679. Exit 
  680. End If 
  681. Next T
  682. End If 
  683. C=Spritebob Col(12,4 To 7)
  684. If C=-1
  685. For T=4 To 7
  686. If Col(T)=-1 and OON(T-4)<999 and OON(T-4)>0
  687. H=T
  688. If RA2=1 or RA2=4
  689. D=1
  690. End If 
  691. If RA2=2
  692. D=2
  693. End If 
  694. If RA2=3
  695. D=8
  696. End If 
  697. S=12
  698. Gosub HITIT
  699. Exit 
  700. End If 
  701. Next T
  702. End If 
  703. C=Spritebob Col(13,4 To 7)
  704. If C=-1
  705. For T=4 To 7
  706. If Col(T)=-1 and OON(T-4)<999 and OON(T-4)>0
  707. H=T
  708. If LA2=1 or LA2=4
  709. D=1
  710. End If 
  711. If LA2=2
  712. D=2
  713. End If 
  714. If LA2=3
  715. D=8
  716. End If 
  717. S=13
  718. Gosub HITIT
  719. Exit 
  720. End If 
  721. Next T
  722. End If 
  723. Pop Proc
  724. HITIT:
  725. Z=Hzone(X Sprite(S),Y Sprite(S))
  726. Y=Y Bob(T)
  727. YN=0
  728. For T3=1 To 4
  729. If Z=T3
  730. YN=Y Bob(T3+9)
  731. End If 
  732. Next T3
  733. If Z=0 or(Z>0 and YN<Y)
  734. Amreg(T,2)=Amreg(T,2)-D
  735. If S=10 or S=11
  736. Inc SC1
  737. SUD1=2
  738. Else 
  739. Inc SC2
  740. SUD2=2
  741. End If 
  742. If Amreg(T,2)<1
  743. Locate 0,0
  744. P=6
  745. A$="LR9=0;A1,(74,3)(75,3)(76,3);M0,0,40;LR9=9"
  746. If MUSIX=0 : Boom : End If 
  747. If OON(T-4)=3
  748. P=2
  749. End If 
  750. If OON(T-4)=4
  751. P=2
  752. End If 
  753. If OON(T-4)=1
  754. A$="LR9=0;LA=78;M0,0,100;LR9=9"
  755. If MUSIX=0 : Boom : End If 
  756. End If 
  757. If OON(T-4)=2
  758. A$="LR9=0;LA=77;M0,0,100;LR9=9"
  759. If MUSIX=0 : Boom : End If 
  760. End If 
  761. If Rnd(P*3)=0
  762. If MUSIX=0 : Bell : End If 
  763. A$="LR9=0;LA=25;M0,0-Y,Y;LR9=9"
  764. If S=10
  765. RAM1=RAM1+100
  766. End If 
  767. If S=11
  768. LAM1=LAM1+100
  769. End If 
  770. If S=12
  771. RAM2=RAM2+100
  772. End If 
  773. If S=13
  774. LAM2=LAM2+100
  775. End If 
  776. End If 
  777. If Rnd(P)=0
  778. If MUSIX=0 : Bell : End If 
  779. A$="LR9=0;LA=26;M0,0-Y,Y;LR9=9"
  780. If S=10 or S=11
  781. CSH1=CSH1+100
  782. End If 
  783. If S=12 or S=13
  784. CSH2=CSH2+100
  785. End If 
  786. End If 
  787. Amal T,A$
  788. Amal On T
  789. If BULL(T-4)=1
  790. BULL(T-4)=0
  791. If T=4 or T=5
  792. N=T+4
  793. Else 
  794. N=T+8
  795. End If 
  796. Amal Off N
  797. Bob N,-10,-10,5
  798. End If 
  799. OON(T-4)=999
  800. End If 
  801. End If 
  802. Return 
  803. End Proc
  804. Proc NASTFIRE
  805. Proc UDATE
  806. If ENEMYS<1 and OON(0)=0 and OON(1)=0 and OON(2)=0 and OON(3)=0 Then Goto 2
  807. If TERMINATE=1 Then Exit 
  808. If Lower$(Inkey$)="p"
  809. Amal Freeze 
  810. Clear Key 
  811. Wait Key 
  812. Amal On 
  813. End If 
  814. Bob Draw 
  815. Screen Swap 
  816. Wait Vbl 
  817. Loop 
  818. Procedure FIRING
  819. Sprite Off 10 : Sprite Off 11 : Sprite Off 12 : Sprite Off 13
  820. If I Bob(0)=16 Then Bob 0,,,15
  821. If P2=1
  822. If I Bob(1)=16
  823. Bob 1,,,15
  824. End If 
  825. End If 
  826. If Fire(1)=-1 and P1=1
  827. If RA1>0 and RRL1=0
  828. If RA1>1
  829. If RAM1>0
  830. Dec RAM1
  831. Else 
  832. RA1=1
  833. End If 
  834. End If 
  835. If MUSIX=0 : Shoot : End If 
  836. If LA1>0
  837. X=10
  838. Else 
  839. X=0
  840. End If 
  841. If RA1=1
  842. A=5
  843. RL=2
  844. End If 
  845. If RA1=2
  846. A=6
  847. RL=2
  848. End If 
  849. If RA1=3
  850. A=7
  851. RL=10
  852. End If 
  853. If RA1=4
  854. A=8
  855. RL=0
  856. End If 
  857. RRL1=RL
  858. Sprite 10,X Sprite(8)+X,Y Sprite(8),A
  859. Bob 0,,,16
  860. End If 
  861. If LA1>0 and LRL1=0
  862. If LA1>0
  863. If LAM1>0
  864. Dec LAM1
  865. Else 
  866. LA1=0
  867. Goto SKIP1
  868. End If 
  869. End If 
  870. If MUSIX=0 : Shoot : End If 
  871. If RA1>0
  872. X=-10
  873. Else 
  874. X=0
  875. End If 
  876. If LA1=1
  877. A=5
  878. RL=2
  879. End If 
  880. If LA1=2
  881. A=6
  882. RL=2
  883. End If 
  884. If LA1=3
  885. A=7
  886. RL=10
  887. End If 
  888. If LA1=4
  889. A=8
  890. RL=0
  891. End If 
  892. LRL1=RL
  893. Sprite 11,X Sprite(8)+X,Y Sprite(8),A
  894. Bob 0,,,16
  895. End If 
  896. End If 
  897. SKIP1:
  898. If Fire(0)=-1 and P2=1
  899. If RA2>0 and RRL2=0
  900. If RA2>1
  901. If RAM2>0
  902. Dec RAM2
  903. Else 
  904. RA2=0
  905. End If 
  906. End If 
  907. If MUSIX=0 : Shoot : End If 
  908. If LA2>0
  909. X=10
  910. Else 
  911. X=0
  912. End If 
  913. If RA2=1
  914. A=5
  915. RL=2
  916. End If 
  917. If RA2=2
  918. A=6
  919. RL=2
  920. End If 
  921. If RA2=3
  922. A=7
  923. RL=10
  924. End If 
  925. If RA2=4
  926. A=8
  927. RL=0
  928. End If 
  929. RRL2=RL
  930. Sprite 12,X Sprite(9)+X,Y Sprite(9),A
  931. Bob 1,,,16
  932. End If 
  933. If LA2>0 and LRL2=0
  934. If LA2>0
  935. If LAM2>0
  936. Dec LAM2
  937. Else 
  938. LA2=0
  939. Goto SKIP2
  940. End If 
  941. End If 
  942. If MUSIX=0 : Shoot : End If 
  943. If RA2>0
  944. X=-10
  945. Else 
  946. X=0
  947. End If 
  948. If LA2=1
  949. A=5
  950. RL=2
  951. End If 
  952. If LA2=2
  953. A=6
  954. RL=2
  955. End If 
  956. If LA2=3
  957. A=7
  958. RL=10
  959. End If 
  960. If LA2=4
  961. A=8
  962. RL=0
  963. End If 
  964. LRL2=RL
  965. Sprite 13,X Sprite(9)+X,Y Sprite(9),A
  966. Bob 1,,,16
  967. End If 
  968. End If 
  969. SKIP2:
  970. If RRL1>0
  971. Dec RRL1
  972. End If 
  973. If RRL2>0
  974. Dec RRL2
  975. End If 
  976. If LRL1>0
  977. Dec LRL1
  978. End If 
  979. If LRL2>0
  980. Dec LRL2
  981. End If 
  982. End Proc
  983. Procedure NASTFIRE
  984. For T=4 To 7
  985. If OON(T-4)>0 and OON(T-4)<999
  986. If T=4 or T=5
  987. N=T+4
  988. Else 
  989. N=T+8
  990. End If 
  991. If BULL(T-4)=1
  992. If Amreg(N,1)=2
  993. If MUSIX=0 : Shoot : End If 
  994. Proc SHOT[N,1]
  995. Amreg(N,1)=1
  996. End If 
  997. If Amreg(N,1)=5
  998. If MUSIX=0 : Boom : End If 
  999. Proc SHOT[N,3]
  1000. Amreg(N,1)=1
  1001. End If 
  1002. If Amreg(N,1)=4
  1003. If MUSIX=0 : Boom : End If 
  1004. Proc SHOT[N,5]
  1005. Amreg(N,1)=1
  1006. End If 
  1007. If Amreg(N,1)=3
  1008. Amreg(T,0)=0
  1009. BULL(T-4)=0
  1010. End If 
  1011. End If 
  1012. If Amreg(T,0)=1 and BULL(T-4)=0
  1013. Amreg(T,0)=999
  1014. BULL(T-4)=1
  1015. A$="LR1=1;FR0=0T10;MR2,0,1;LR1=2;FR3=0T10;NR3;NR0;LR1=3;LX=-10;LY=-10"
  1016. Bob N,X Bob(T),140,5
  1017. Channel N To Bob N
  1018. Amal N,A$
  1019. Amal On N
  1020. Amreg(N,2)=Rnd(20)-10
  1021. End If 
  1022. If Amreg(T,0)=2 and BULL(T-4)=0
  1023. Amreg(T,0)=999
  1024. BULL(T-4)=1
  1025. A$="LR1=1;A1,(79,17)(80,18)(81,17)(82,18)(74,3)(75,3)(76,3);MR2,-20,20;MR2,50,50;LR1=4;M0,0,10;LR1=3;LX=-10;LY=-10;LA=5"
  1026. Bob N,X Bob(T),110,79
  1027. Channel N To Bob N
  1028. Amal N,A$
  1029. Amal On N
  1030. Amreg(N,2)=Rnd(60)-30
  1031. End If 
  1032. If Amreg(T,0)=3 and BULL(T-4)=0
  1033. Amreg(T,0)=999
  1034. BULL(T-4)=1
  1035. A$="LR1=1;A1,(79,17)(80,18)(81,17)(82,18)(74,3)(75,3)(76,3);MR2,-30,20;MR2,100,50;LR1=4;M0,0,10;LR1=3;LX=-10;LY=-10;LA=5"
  1036. Bob N,X Bob(T)+10,65,79
  1037. Channel N To Bob N
  1038. Amal N,A$
  1039. Amal On N
  1040. Amreg(N,2)=Rnd(60)-30
  1041. End If 
  1042. If Amreg(T,0)=4 and BULL(T-4)=0
  1043. Amreg(T,0)=999
  1044. BULL(T-4)=1
  1045. A$="LR1=1;FR0=0T10;MR2,0,1;LR1=4;FR3=0T10;NR3;NR0;LR1=3;LX=-10;LY=-10"
  1046. Bob N,X Bob(T),140,74
  1047. Channel N To Bob N
  1048. Amal N,A$
  1049. Amal On N
  1050. Amreg(N,2)=Rnd(20)-10
  1051. End If 
  1052. If Amreg(T,0)=5 and BULL(T-4)=0
  1053. Amreg(T,0)=999
  1054. BULL(T-4)=1
  1055. A$="LR1=1;A1,(79,20)(80,20)(81,20)(82,20)(74,3)(75,3)(76,3);MR2,80,80;LR1=4;M0,0,10;LR1=3;LX=-10;LY=-10;LA=5"
  1056. Bob N,X Bob(T)+10,65,79
  1057. Channel N To Bob N
  1058. Amal N,A$
  1059. Amal On N
  1060. If Rnd(1)=0
  1061. Amreg(N,2)=Amreg(23)-X Bob(T)
  1062. Else 
  1063. Amreg(N,2)=Amreg(21)-X Bob(T)
  1064. End If 
  1065. End If 
  1066. If Amreg(T,0)=6 and BULL(T-4)=0
  1067. Amreg(T,0)=999
  1068. BULL(T-4)=1
  1069. A$="LR1=1;FR0=0T10;MR2,0,1;LR1=5;FR3=0T20;NR3;NR0;LR1=3;LX=-10;LY=-10"
  1070. Bob N,X Bob(T),140,6
  1071. Channel N To Bob N
  1072. Amal N,A$
  1073. Amal On N
  1074. Amreg(N,2)=Rnd(20)-10
  1075. End If 
  1076. If Amreg(T,0)=7 and BULL(T-4)=0
  1077. Amreg(T,0)=999
  1078. BULL(T-4)=1
  1079. A$="LR1=1;FR0=0T40;MR2,0,1;LR1=2;M0,0,1;NR0;LR1=3;LX=-10;LY=-10"
  1080. Bob N,X Bob(T),140,8
  1081. Channel N To Bob N
  1082. Amal N,A$
  1083. Amal On N
  1084. Amreg(N,2)=Rnd(4)-2
  1085. End If 
  1086. If Amreg(T,0)=8 and BULL(T-4)=0
  1087. For M=4 To 7
  1088. If M=4 or M=5
  1089. N=M+4
  1090. Else 
  1091. N=M+8
  1092. End If 
  1093. Amreg(M,0)=999
  1094. BULL(M-4)=1
  1095. A$="LR1=1;A1,(71,30)(72,30)(73,30)(74,3)(75,3)(76,3);MR2,80,90;LR1=4;M0,0,10;LR1=3;LX=-10;LY=-10;LA=5"
  1096. Bob N,X Bob(4),65,79
  1097. Channel N To Bob N
  1098. Amal N,A$
  1099. Amal On N
  1100. If Rnd(1)=0
  1101. Amreg(N,2)=Amreg(23)-X Bob(M)
  1102. Else 
  1103. Amreg(N,2)=Amreg(21)-X Bob(M)
  1104. End If 
  1105. Next M
  1106. End If 
  1107. End If 
  1108. Next T
  1109. End Proc
  1110. Procedure SHOT[N,D]
  1111. C=Bob Col(N,0 To 1)
  1112. If Col(0)=-1 and P1=1
  1113. If MUSIX=0 : Shoot : End If 
  1114. EN1=EN1-D
  1115. EUD1=2
  1116. If EN1<0
  1117. Amal 0,""
  1118. Amal Off 1
  1119. Sprite 8,0,0,
  1120. Amal 1,"A1,(27,5)(28,5)(29,5)(30,5)(31,5);M0,0,100;LX=-50"
  1121. If MUSIX=0 : Boom : End If 
  1122. Amal On 1
  1123. Bob Off 2
  1124. P1=-1
  1125. End If 
  1126. End If 
  1127. If Col(1)=-1 and P2=1
  1128. If MUSIX=0 : Shoot : End If 
  1129. EN2=EN2-D
  1130. EUD2=2
  1131. If EN2<0
  1132. Amal 2,""
  1133. Amal Off 3
  1134. Sprite 9,0,0,
  1135. Amal 3,"A1,(27,5)(28,5)(29,5)(30,5)(31,5);M0,0,100;LX=-50"
  1136. If MUSIX=0 : Boom : End If 
  1137. Amal On 3
  1138. Bob Off 3
  1139. P2=-1
  1140. End If 
  1141. End If 
  1142. If P1<1 and P2<1 Then TERMINATE=1
  1143. End Proc
  1144. Procedure UDATE
  1145. If NMEUD>0
  1146. Dec NMEUD
  1147. Print At(14,22);ENEMYS;"  "
  1148. End If 
  1149. If EUD1>0
  1150. Dec EUD1
  1151. Print At(0,22);EN1;"  "
  1152. End If 
  1153. If EUD2>0
  1154. Dec EUD2
  1155. Print At(30,22);EN2;"  "
  1156. End If 
  1157. If SUD1>0
  1158. Dec SUD1
  1159. Print At(0,24);SC1;"  ";
  1160. End If 
  1161. If SUD2>0
  1162. Dec SUD2
  1163. Print At(30,24);SC2;"  ";
  1164. End If 
  1165. End Proc
  1166. Procedure SHOP
  1167. Amal Freeze 
  1168. If NAS=-1 Then Proc LEVELSOLVED
  1169. P1=Max(P1,0)
  1170. P2=Max(P2,0)
  1171. Bob Clear 
  1172. Cls 0
  1173. Screen Swap 
  1174. Bob Clear 
  1175. Cls 0
  1176. Pen 6
  1177. Locate 0,0
  1178. Centre "Inter-Level Shoppe"
  1179. If MUSIX=0 : Bell : End If 
  1180. Wait 10
  1181. Reset Zone 
  1182. For T=0 To 1
  1183. For T2=1 To 4
  1184. Paste Bob 10+(T*200),20+(T2*20),17+T+((T2-1)*2)
  1185. Set Zone T2+(T*4),10+(T*200),20+(T2*20) To 40+(T*200),40+(T2*20)
  1186. Z=T2+(T*4)
  1187. Gosub DAT
  1188. Locate X Text(40+(T*200)),Y Text(20+(T2*20))
  1189. Print C
  1190. Next T2
  1191. Next T
  1192. Paste Bob 10,120,25
  1193. Locate 3,15
  1194. Print "AMMO:200"
  1195. Set Zone 9,10,120 To 20,130
  1196. Screen Copy Logic(0) To Physic(0)
  1197. Clear Key 
  1198. EN1=25 : EN2=25
  1199. Amal On 
  1200. Do 
  1201. If P1=1
  1202. Amreg(0,0)=Jright(1)*-2+(Jleft(1)*2)
  1203. Amreg(0,1)=Jdown(1)*-2+(Jup(1)*2)
  1204. End If 
  1205. If P2=1
  1206. Amreg(2,0)=Jright(0)*-2+(Jleft(0)*2)
  1207. Amreg(2,1)=Jdown(0)*-2+(Jup(0)*2)
  1208. End If 
  1209. If LAM1>1000 Then LAM1=1000
  1210. If LAM2>1000 Then LAM2=1000
  1211. If RAM1>1000 Then RAM1=1000
  1212. If RAM2>1000 Then RAM2=1000
  1213. Locate 0,20
  1214. Print "PLAYER 1 AMMO:";LAM1;"           ";RAM1;"   ";
  1215. Locate 0,22
  1216. Print "PLAYER 2 AMMO:";LAM2;"           ";RAM2;"   ";
  1217. Locate 0,24 : Print CSH1;"    ";
  1218. Locate 28,24 : Print CSH2;"    ";
  1219. If Fire(1)=-1 and P1=1 and Hzone(X Sprite(8),Y Sprite(8))>0
  1220. Z=Hzone(X Sprite(8),Y Sprite(8))
  1221. Gosub DAT
  1222. PL=1
  1223. If CSH1>=C
  1224. CSH1=CSH1-C
  1225. Gosub BUY
  1226. End If 
  1227. End If 
  1228. If Fire(0)=-1 and P2=1 and Hzone(X Sprite(9),Y Sprite(9))>0
  1229. Z=Hzone(X Sprite(9),Y Sprite(9))
  1230. Gosub DAT
  1231. PL=2
  1232. If CSH2>=C
  1233. CSH2=CSH2-C
  1234. Gosub BUY
  1235. End If 
  1236. End If 
  1237. If Inkey$<>""
  1238. Inc SCRN
  1239. Pop Proc
  1240. End If 
  1241. Screen Swap : Wait Vbl 
  1242. Loop 
  1243. Pop Proc
  1244. DAT:
  1245. If Z=1 Then P=2 : C=500 : N=1
  1246. If Z=2 Then P=2 : C=1500 : N=2
  1247. If Z=3 Then P=2 : C=2000 : N=3
  1248. If Z=4 Then P=2 : C=1000 : N=4
  1249. If Z=5 Then P=1 : C=0 : N=1
  1250. If Z=6 Then P=1 : C=1500 : N=2
  1251. If Z=7 Then P=1 : C=2000 : N=3
  1252. If Z=8 Then P=1 : C=1000 : N=4
  1253. If Z=9 Then P=3 : C=200
  1254. Return 
  1255. BUY:
  1256. If MUSIX=0 : Bell : End If 
  1257. If PL=1
  1258. If P=1
  1259. RA1=N
  1260. RAM1=100
  1261. End If 
  1262. If P=2
  1263. LA1=N
  1264. LAM1=100
  1265. End If 
  1266. If P=3
  1267. LAM1=LAM1+100 : RAM1=RAM1+100
  1268. End If 
  1269. End If 
  1270. If PL=2
  1271. If P=1
  1272. RA2=N
  1273. RAM2=100
  1274. End If 
  1275. If P=2
  1276. LA2=N
  1277. LAM2=100
  1278. End If 
  1279. If P=3
  1280. LAM2=LAM2+100 : RAM2=RAM2+100
  1281. End If 
  1282. End If 
  1283. Wait 5
  1284. Return 
  1285. End Proc
  1286. Proc X
  1287. Procedure X
  1288. For T=0 To 50
  1289. Bob Clear 
  1290. Bob Draw 
  1291. Screen Swap : Wait Vbl 
  1292. Next T
  1293. Bob Clear 
  1294. Cls 0
  1295. Screen Swap 
  1296. Cls 0
  1297. Autoback 1
  1298. If P2=0
  1299. Locate 0,0
  1300. Centre "TOUGH LUCK SUCKER"
  1301. Else 
  1302. Locate 0,0
  1303. Centre "TOUGH LUCK SUCKERS"
  1304. End If 
  1305. Locate 0,2
  1306. Centre "YOU GOT WASTED"
  1307. Locate 0,4
  1308. Print "Player 1 scored ";SC1
  1309. If SC1>SCORE
  1310. Print "a new high score,please enter your name dude "
  1311. Input NAME$
  1312. End If 
  1313. Print 
  1314. If P2=-1
  1315. Print "Player 2 scored ";SC2
  1316. If SC2>Max(SCORE,SC1)
  1317. Print "a new high score,please enter your name dude "
  1318. Input NAME$
  1319. End If 
  1320. End If 
  1321. SCORE=Max(SCORE,Max(SC1,SC2))
  1322. Wait 200
  1323. Bob Clear 
  1324. Autoback 0
  1325. Cls 0
  1326. Screen Swap 
  1327. Cls 0
  1328. Curs Off 
  1329. SC1=0
  1330. SC2=0
  1331. End Proc
  1332. Goto 1
  1333. 2
  1334. Proc SHOP
  1335. Goto LS
  1336. Procedure BIGNAS
  1337. If LEVEL=0
  1338. Bob 4,185,35,67
  1339. Channel 4 To Bob 4
  1340. Amal 4,"LR0=0;LR2=50;A:A1,(67,5)(68,5)(67,5)(69,5)(67,5);M0,0,25;LR0=1;N:IR0=0JA;JN"
  1341. Amal On 4
  1342. OON(0)=9
  1343. Bob 5,180,82,71
  1344. Channel 5 To Bob 5
  1345. Amal 5,"LR0=0;LR2=50;A:A1,(71,5)(72,5)(71,5)(73,5)(71,5);M0,0,50;LR0=4;N:IR0=0JA;JN"
  1346. Amal On 5
  1347. OON(1)=9
  1348. For T=6 To 7
  1349. OON(T-4)=9
  1350. Bob T,150+((T-6)*59),38,70
  1351. Channel T To Bob T
  1352. Amal T,"LR0=0;LR2=20;A:M0,0,50;LR0=5;N:IR0=0JA;JN"
  1353. Amal On T
  1354. Next T
  1355. End If 
  1356. If LEVEL=1
  1357. Bob 4,185,80,67
  1358. Channel 4 To Bob 4
  1359. Amal 4,"LR0=0;LR2=100;L:A0,(70,5)(71,5);M0,0,20;LR9=RX;IZ(255)>128JS;LR9=RV;S:LX=RX;A1,(71,5)(72,5)(69,5);M0,0,30;IZ(255)>128JF;LR0=1;A0,(72,3)(69,3);B:IR0=0JL;JB;F:M0,0,50;A0,(73,3)(69,3);LR0=4;C:IR0=0JL;JC"
  1360. Amal On 4
  1361. OON(0)=9
  1362. End If 
  1363. If LEVEL=2
  1364. Bob 4,0,80,69
  1365. Channel 4 To Bob 4
  1366. Amal 4,"LR0=0;LR2=200;A0,(70,5)(69,5);L:FR1=0T319;M1,0,1;IR0=0JF;A:NR1;FR1=0T319;M-1,0,1;IR0=0JG;B:NR1;JL;F:LR0=8;JA;G:LR0=8;JB"
  1367. Amal On 4
  1368. OON(0)=9
  1369. End If 
  1370. End Proc
  1371. Procedure LEVELSOLVED
  1372. If MUSIX=0 : Boom : End If 
  1373. Fade 8,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF
  1374. Wait 200
  1375. Fade 8
  1376. Wait 200
  1377. Get Sprite Palette 
  1378. Bob Clear 
  1379. Cls 0
  1380. Locate 0,0
  1381. Centre "well done"
  1382. Print 
  1383. A$="level "+Str$(LEVEL)+" solved"
  1384. Centre A$
  1385. Screen Swap 
  1386. Inc LEVEL
  1387. Load ":targets.ABK"
  1388. Load ":squats.ABK",1
  1389. If LEVEL=1 Then Load ":l2sprites.ABK",1
  1390. If LEVEL=2 Then Load ":l3sprites.ABK",1
  1391. If LEVEL=3 Then Load ":l1sprites.ABK",1
  1392. SCRN=-1
  1393. For T=17 To 24
  1394. Hot Spot T,,32
  1395. Next T
  1396. Hot Spot 85,$2
  1397. Hot Spot 83,$2
  1398. For T=42 To 47
  1399. Hot Spot T,$12
  1400. Next T
  1401. Palette ,,,,,,,,,,,,,,,,$0,$FFF,$F80,$FF0,$0,$FFF,$F80,$FF0,$0,$FFF,$F80,$FF0,$0,$FFF,$F80,$FF0
  1402. Make Mask 
  1403. Wait 80
  1404. If LEVEL=3
  1405. LEVEL=0
  1406. Cls 0
  1407. Locate 0,0
  1408. Centre "well done"
  1409. Print 
  1410. Centre "game solved"
  1411. Print 
  1412. Centre "now back to the start"
  1413. Print 
  1414. Centre "you hard dude"
  1415. Screen Copy Logic(0) To Physic(0)
  1416. Wait 100
  1417. For T=0 To 500
  1418. If MUSIX=0 : Boom : End If : Paste Bob Rnd(320),Rnd(200),76
  1419. Screen Swap : Wait Vbl 
  1420. Next T
  1421. End If 
  1422. End Proc