home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib40b.dsk / WAR.BATTLE.bas < prev    next >
BASIC Source File  |  2023-02-26  |  19KB  |  312 lines

  1. 10  REM  *************************
  2. 20  REM  * WAR.BATTLE            *
  3. 30  REM  * BY: VIVEK PAI         *
  4. 40  REM  * COPYRIGHT (C) 1990    *
  5. 50  REM  * MINDCRAFT PUBL. CORP. *
  6. 60  REM  * CONCORD, MA 01742     *
  7. 70  REM  *************************
  8. 80  REM 
  9. 90  PRINT  CHR$(12) CHR$(21): ONERR  GOTO 3050
  10. 100  POKE 5118,5: POKE 5119,0: POKE 5120,1: VTAB 1: GOTO 150
  11. 110  HGR : HCOLOR= 4: HPLOT 0,0: CALL 62454: ROT= 0: SCALE= 1: HCOLOR= 5: FOR Y = 1 TO 267  STEP 14: HPLOT Y,0 TO Y,144: NEXT Y: FOR Y = 0 TO 144  STEP 16: HPLOT 0,Y TO 266,Y: NEXT 
  12. 120 Z% = 3072: HCOLOR= 7
  13. 130  FOR Y = 8 TO 136  STEP 16: FOR X = 8 TO 260  STEP 14: DRAW  PEEK(Z%) +1 AT X,Y:Z% = Z% +1
  14. 140  NEXT : NEXT : RETURN 
  15. 150  FOR Y = 3072 TO 3342: POKE Y +2054,0: IF  PEEK(Y) = 1  THEN  POKE Y +2054,1
  16. 160  NEXT Y: IF  PEEK(104) < >64  THEN  TEXT : HOME : VTAB 12: PRINT  TAB( 5);"YOU MUST RUN WARRIORS.2000": END 
  17. 170  IF  PEEK(2051) < >234  THEN  TEXT : HOME : VTAB 12: PRINT "YOU MUST RUN WARRIORS.2000": END 
  18. 180  POKE 2051,20
  19. 190  DIM CH%(7),A%(7): NORMAL : TEXT : HOME :STR =  -16384:WT = 128:CL =  -16368:MS = 5086:ME = MS +1:MU = ME +2
  20. 200 A$ = "13E1:AD DE 13 8D E0 13 AE E0 13 E8 CA CA D0 FB AD 30 C0 EE E0 13 AD E0 13 CD DF 13 D0 EA 60 I F328G"
  21. 210  FOR Y = 1 TO  LEN(A$): POKE 511 +Y, ASC( MID$ (A$,Y,1)) +128: NEXT : POKE 72,0: POKE 223, PEEK(248): CALL  -144
  22. 220  NORMAL : HOME : INVERSE : PRINT  SPC( 13);"WARRIORS  2000"; SPC( 28);"THE BATTLE"; SPC( 15): NORMAL : HTAB 13: PRINT "BY: VIVEK PAI": HTAB 5: PRINT "(C) 1990 MINDCRAFT PUBL. CORP."
  23. 230  VTAB 10: PRINT "1) GO INTO BATTLE"
  24. 240  PRINT : PRINT "2) RETURN TO BATTLE PREPARATIONS"
  25. 250  PRINT : PRINT "3) QUIT"
  26. 260  PRINT : PRINT "4) MODIFY GAME PARAMETERS"
  27. 270  PRINT : PRINT "YOUR OPTION: ";: GET A$: PRINT A$: IF A$ =  CHR$(52)  THEN 2520
  28. 280 A =  VAL(A$): IF A <1  OR A >3 GOTO 230
  29. 290  ON A GOTO 340,320,300
  30. 300  HOME : VTAB 11: PRINT "PRESS 'Y' TO CONFIRM:";: GET A$: PRINT A$: IF A$ < >"Y"  AND A$ < >"y"  THEN  GOTO 220
  31. 310 EC = 1: PRINT  CHR$(4);"BSAVE ROSTER,A$E01,L$5DC": VTAB 13: PRINT "YOU MUST REBOOT THE SYSTEM": END 
  32. 320 EC = 2: PRINT  CHR$(4)"BSAVE ROSTER,A$E01,L$5DC"
  33. 330 EC = 3: PRINT  CHR$(4)"RUN WARRIORS.2000"
  34. 340  GOSUB 110
  35. 350  FOR Y = 0 TO 3
  36. 360  IF  PEEK(Y *25 +3325) < >2  THEN  GOTO 390
  37. 370 Z% =  RND(1) *9:X =  INT( RND(1) *9):Z% = X *19 +Z%: IF ( PEEK(5126 +Z%))  THEN  GOTO 370
  38. 380  POKE Y *10 +6000,Z%: POKE Z% +5126,Y +60
  39. 390  NEXT 
  40. 400  FOR Y = 4 TO 7: IF  PEEK(Y *25 +3325) < >2  THEN  GOTO 430
  41. 410 Z% =  RND(1) *9 +10:X =  INT( RND(1) *9):Z% = X *19 +Z%: IF ( PEEK(5126 +Z%))  THEN  GOTO 410
  42. 420  POKE Y *10 +6000,Z%: POKE Z% +5126,Y +60
  43. 430  NEXT 
  44. 440  REM  PLAYER DRAWING ROUTINE
  45. 450  FOR Y = 0 TO 7: HCOLOR= 4: GOSUB 1370: IF  PEEK(Y *25 +3325) < >2  THEN 470
  46. 460  DRAW 20 AT Z% *14 +8,X *16 +8: HCOLOR= 7: DRAW Y +11 AT Z% *14 +8,X *16 +8
  47. 470  NEXT 
  48. 480  HOME : VTAB 21: PRINT "TEAM #2 PLEASE LEAVE ROOM": VTAB 23: PRINT "PRESS RETURN TO CONTINUE": GOSUB 3040: HOME 
  49. 490  CLEAR :STR =  -16384:WT = 128:CL =  -16368:MS = 5086:ME = MS +1:MU = ME +2
  50. 500  FOR Y = 0 TO 7:CH%(Y) = 5: NEXT :TE = 0: GOSUB 540
  51. 510  HOME : VTAB 21: PRINT "TEAM #1 PLEASE LEAVE ROOM": PRINT "TEAM #2 PLEASE ENTER ROOM":TE = 1
  52. 520  PRINT "PRESS RETURN TO CONTINUE": GOSUB 3040: HOME : GOSUB 540
  53. 530  GOTO 1390
  54. 540  HOME : VTAB 21: PRINT "TEAM CHOICES ARE:": VTAB 22: PRINT "1) OPTIONS" SPC( 3)"2) VIEW" SPC( 3)"3) REVIEW OPTIONS"
  55. 550  VTAB 23: PRINT "4) SURRENDER 5) END TURN"
  56. 560  INPUT "WHICH WOULD YOU LIKE:";A$:A =  INT( VAL(A$)): IF A = 4  THEN  INPUT "DO YOU WISH TO SURRENDER(Y/N):";A$: IF  LEFT$(A$,1) < >"Y"  AND A$ < >"y"  THEN 540
  57. 570  ON A GOTO 580,990,2770,1330,1340: HOME : GOTO 540
  58. 580  HOME 
  59. 590  VTAB 21: PRINT "OPTIONS FOR WHICH PLAYER:";: GET A$: PRINT A$:A =  ASC(A$) -65 -32 *( ASC(A$) >96):PL = A: IF A <0  OR A >3 GOTO 590
  60. 600  IF  PEEK((TE *4 +A) *25 +3325) < >2  THEN  GOTO 580
  61. 610  GOSUB 1360: PRINT PL$;"'S OPTIONS ARE:": PRINT "1) ATTACK" SPC( 3)"2) MOVE" SPC( 3)"3) MOVE & ATTACK": PRINT "4) REST" SPC( 5)"5) CHANGE WEAPONS"
  62. 620  INPUT "WHICH WOULD YOU LIKE:";A$:A =  VAL(A$): IF A$ = ""  THEN  GOTO 540
  63. 630  IF A <1  OR A >5  THEN  GOTO 610
  64. 640 BX(PL +TE *4) = 0
  65. 650  ON A GOTO 660,770,930,970,980: GOTO 610
  66. 660  HOME : VTAB 21: PRINT "TYPES OF ATTACK:"
  67. 670  PRINT "1) NORMAL WEAPON": VTAB 22: HTAB 20: PRINT "2) GRENADE": PRINT "3) CHROMAGRENADE": INPUT "WHICH WOULD YOU LIKE:";A$:A =  VAL(A$): IF A <1  OR A >3 GOTO 660
  68. 680  HOME : VTAB 21
  69. 690  IF A = 1  THEN  GOTO 710
  70. 700  IF  PEEK(PL *25 +TE *100 +3342 +A) = 0  THEN  PRINT "NONE LEFT": PRINT "PRESS RETURN TO CONTINUE": WAIT STR,WT: POKE CL,0: GOTO 660
  71. 710 CH%(PL +TE *4) = A
  72. 720  HOME : VTAB 21: PRINT "ATTACK WHICH PLAYER (A-D):";: GET A$: PRINT A$:A =  ASC(A$) -65 -32 *( ASC(A$) >96): PRINT : IF A <0  OR A >3  THEN  GOTO 720
  73. 730  IF  PEEK(A *25 +(1 -TE) *100 +3325) <2  THEN  VTAB 22: PRINT "PLAYER IS NOT ON BATTLEFIELD": VTAB 23: PRINT "PRESS RETURN TO CONTINUE": GOSUB 3040: GOTO 720
  74. 740 A%(PL +TE *4) = A +4 -TE *4
  75. 750  PRINT "PRESS RETURN TO CONTINUE": GOSUB 3040: IF RET = 15  THEN RET = 0: GOTO 950
  76. 760  GOTO 540
  77. 770 P1 = 1: HOME :Y = TE *4 +PL:A =  PEEK(Y *25 +3346) *2: VTAB 21: PRINT "TOTAL NUMBER OF MOVES:";A
  78. 780  GOSUB 1370
  79. 790  XDRAW 19 AT Z% *14 +8,X *16 +8
  80. 800  VTAB 23: PRINT "MOVEMENT KEYS: I J K M <ESC>": GET A$: XDRAW 19 AT Z% *14 +8,X *16 +8: IF A$ = "I"  OR A$ = "i"  THEN X = X -(X >0)
  81. 810  IF A$ = "M"  OR A$ = "m"  THEN X = X +(X <8)
  82. 820  IF A$ = "J"  OR A$ = "j"  THEN Z% = Z% -(Z% >0)
  83. 830  IF A$ = "K"  OR A$ = "k"  THEN Z% = Z% +(Z% <18)
  84. 840  IF A$ =  CHR$(27)  THEN A = 0: GOTO 860
  85. 850  POKE Y *10 +6000 +P1,X *19 +Z%:A = A -1:P1 = P1 +1
  86. 860  IF A = 0  THEN CH%(Y) = 4: GOTO 880
  87. 870  GOTO 790
  88. 880  XDRAW 19 AT Z% *14 +8,X *16 +8
  89. 890  POKE Y *10 +6000 +P1,255: IF RET = 15  THEN 940
  90. 900  PRINT "PRESS RETURN TO CONTINUE": GOSUB 3040
  91. 910  XDRAW 19 AT Z% *14 +8,X *16 +8
  92. 920  GOTO 540
  93. 930 P1 = 1: HOME :Y = TE *4 +PL:A =  PEEK(Y *25 +3346): VTAB 21: PRINT "TOTAL NUMBER OF MOVES:";A:RET = 15: GOTO 780
  94. 940  GOTO 660
  95. 950 BX(TE *4 +PL) = 2
  96. 960  XDRAW 19 AT Z% *14 +8,X *16 +8: GOTO 540
  97. 970  HOME : VTAB 21: PRINT PL$;" WILL REST":CH%(PL +TE *4) = 5: VTAB 23: PRINT "PRESS RETURN TO CONTINUE": GOSUB 3040: GOTO 540
  98. 980  HOME : VTAB 21: PRINT PL$;" WILL CHANGE WEAPONS":CH%(PL +TE *4) = 6: VTAB 23: PRINT "PRESS RETURN TO CONTINUE": GOSUB 3040: GOTO 540
  99. 990  HOME : VTAB 21: PRINT "VIEW WHICH PLAYER:";: GET A$:A =  ASC(A$) -65: IF A <0  OR A >3 GOTO 990
  100. 1000 PL = A +TE *4:PL = PL *25 +3325
  101. 1010  IF  PEEK(PL) < >2  THEN  GOTO 990
  102. 1020  TEXT 
  103. 1030  HOME : PRINT "PLAYER:"; CHR$(65 +A)
  104. 1040  PRINT : PRINT "NAME:"
  105. 1050  PRINT "RACE:"
  106. 1060  PRINT "EXPERIENCE:"
  107. 1070  PRINT "HEALTH:"
  108. 1080  PRINT "DEXTERITY:"
  109. 1090  PRINT "WEAPON SKILL:"
  110. 1100  PRINT "WEAPON CAPABILITY:"
  111. 1110  PRINT "WEAPON #1:"
  112. 1120  PRINT "WEAPON #2:"
  113. 1130  PRINT "GRENADES:"
  114. 1140  PRINT "CHROMAGRENADES:"
  115. 1150  PRINT "ARMOR TYPE:"
  116. 1160  VTAB 3: HTAB 7: FOR Y = PL +1 TO PL +10: PRINT  CHR$( PEEK(Y));: NEXT : PRINT 
  117. 1170 A$(1) = "HUMAN":A$(2) = "DWARF":A$(3) = "BANSHEE":A$(4) = "TORGYOT":A$(5) = "ELF":A$(6) = "CYCLOPS": VTAB 4: HTAB 7: PRINT A$( PEEK(PL +11) +1)
  118. 1180  VTAB 5: HTAB 13: PRINT  PEEK(PL +12) *100 + PEEK(PL +13)
  119. 1190  VTAB 6: HTAB 9: PRINT  PEEK(PL +14)
  120. 1200  VTAB 7: HTAB 12: PRINT  PEEK(PL +15)
  121. 1210  VTAB 8: HTAB 15: PRINT  PEEK(PL +24) -15;"%"
  122. 1220  VTAB 9: HTAB 20:A =  PEEK(PL +23): IF A = 0  THEN  PRINT "LIGHT"
  123. 1230  IF A = 1  THEN  PRINT "MEDIUM"
  124. 1240  IF A = 2  THEN  PRINT "HEAVY"
  125. 1250 A$(1) = "SOUND CLUB":A$(2) = "LIGHT GUN":A$(3) = "DRONE CLUB":A$(4) = "TOXIRIFLE":A$(5) = "V-RAY GUN":A$(6) = "GAMMASTAR"
  126. 1260  VTAB 10: HTAB 12: PRINT A$( PEEK(PL +17) +1): VTAB 11: HTAB 12: PRINT A$( PEEK(PL +18) +1)
  127. 1270  VTAB 12: HTAB 11: PRINT  PEEK(PL +19)
  128. 1280  VTAB 13: HTAB 17: PRINT  PEEK(PL +20)
  129. 1290 A$(1) = "HEAVY":A$(2) = "MEDIUM":A$(3) = "LIGHT":A$(4) = "NONE"
  130. 1300  VTAB 14: HTAB 13: PRINT A$( PEEK(PL +21))
  131. 1310  PRINT : PRINT "PRESS RETURN TO CONTINUE": GOSUB 3040
  132. 1320  POKE  -16297,0: POKE  -16301,0: POKE  -16300,0: POKE  -16304,0: GOTO 540
  133. 1330  GOTO 2370
  134. 1340  RETURN 
  135. 1350  END 
  136. 1360 PL$ = "": FOR Y = PL *25 +TE *100 +3326 TO PL *25 +TE *100 +3335:PL$ = PL$ + CHR$( PEEK(Y)): NEXT : RETURN 
  137. 1370 Z% =  PEEK(Y *10 +6000):X =  INT(Z%/19):Z% = Z% -X *19: RETURN 
  138. 1380  REM  ACTUAL BATTLE
  139. 1390  HOME : VTAB 21: PRINT "BOTH TEAMS ENTER ROOM": VTAB 23: PRINT "PRESS RETURN TO BEGIN BATTLE": GOSUB 3040
  140. 1400  POKE MS,0: POKE ME,128: FOR Y = 1 TO 4: CALL MU: FOR X = 1 TO 30: NEXT : NEXT 
  141. 1410 Z% = 3072: HCOLOR= 4: HPLOT 0,0: CALL 62454: HCOLOR= 7: FOR Y = 8 TO 136  STEP 16: FOR X = 8 TO 260  STEP 14: DRAW  PEEK(Z%) +1 AT X,Y:Z% = Z% +1: NEXT : NEXT 
  142. 1420  FOR Y = 0 TO 7: IF  PEEK(Y *25 +3325) < >2  THEN 1440
  143. 1430  GOSUB 1370: HCOLOR= 4: DRAW 20 AT Z% *14 +8,X *16 +8: HCOLOR= 7: DRAW  PEEK(Y *25 +3336) +5 AT Z% *14 +8,X *16 +8: XDRAW 1 +19 *(Y >3) AT Z% *14 +8,X *16 +8
  144. 1440  NEXT 
  145. 1450  FOR FD = 0 TO 3:TE = 0: IF CH%(FD) >4  THEN  GOSUB 1640
  146. 1460 TE = 1: IF CH%(FD +4) >4  THEN  GOSUB 1640
  147. 1470  NEXT 
  148. 1480  FOR FD = 0 TO 3:TE = 0: IF CH%(FD) <4  AND BX(FD) = 0  THEN  GOSUB 1640
  149. 1490 TE = 1: IF CH%(FD +4) <4  AND BX(FD +4) = 0  THEN  GOSUB 1640
  150. 1500  NEXT 
  151. 1510  FOR FD = 0 TO 3:TE = 1: IF CH%(FD +4) = 4  THEN  GOSUB 1640
  152. 1520 TE = 0: IF CH%(FD) = 4  THEN  GOSUB 1640
  153. 1530  NEXT 
  154. 1540  FOR FD = 0 TO 3:TE = 1: IF BX(FD +4) = 2  THEN  GOSUB 1640
  155. 1550 TE = 0: IF BX(FD) = 2  THEN  GOSUB 1640
  156. 1560  NEXT 
  157. 1570  HOME : VTAB 21: PRINT "ROUND OVER": VTAB 23: PRINT "PRESS RETURN TO CONTINUE": GOSUB 3040: GOSUB 110
  158. 1580 TE = 0:OUT = 0: FOR Y = 0 TO 3: IF  PEEK(Y *25 +3325) = 2  THEN OUT = 1
  159. 1590  NEXT Y: IF OUT = 0  THEN 2370
  160. 1600 OUT = 0
  161. 1610 TE = 1: FOR Y = 4 TO 7: IF  PEEK(Y *25 +3325) = 2  THEN OUT = 1
  162. 1620  NEXT Y: IF OUT = 0  THEN 2370
  163. 1630  GOTO 450
  164. 1640 PL = FD +TE *4: IF  PEEK(PL *25 +3325) < >2  THEN  RETURN 
  165. 1650 PL$ = "": FOR Y = PL *25 +3326 TO PL *25 +3335:PL$ = PL$ + CHR$( PEEK(Y)): NEXT 
  166. 1660 EN$ = "": FOR Y = A%(PL) *25 +3326 TO A%(PL) *25 +3335:EN$ = EN$ + CHR$( PEEK(Y)): NEXT 
  167. 1670  POKE MS,80: POKE ME,130:Y = PL: GOSUB 1370: FOR Y = 1 TO 3: HCOLOR= 4: DRAW 20 AT Z% *14 +8,X *16 +8: CALL MU
  168. 1680  HCOLOR= 7: DRAW  PEEK(PL *25 +3336) +5 AT Z% *14 +8,X *16 +8: XDRAW 1 +19 *(TE = 1) AT Z% *14 +8,X *16 +8: NEXT : HOME : VTAB 21
  169. 1690  IF BX(PL) = 2  THEN 3020
  170. 1700  ON CH%(PL) GOTO 1720,1970,2190,2200,2340,2350
  171. 1710  RETURN 
  172. 1720  VTAB 21:WE =  PEEK(PL *25 +3342): IF WE >2  THEN  GOTO 1850: REM  LONG RANGE
  173. 1730 Y = A%(PL): GOSUB 1370:E1% = Z%:E2% = X:Y = PL: GOSUB 1370:OUT = 0: IF ( ABS(E1% -Z%) >1)  OR ( ABS(E2% -X) >1)  THEN OUT = 1
  174. 1740  PRINT PL$;" ATTACKS WITH A ";: IF WE = 0  THEN  PRINT "SOUND CLUB"
  175. 1750  IF WE = 1  THEN  PRINT "LIGHT GUN"
  176. 1760  IF WE = 2  THEN  PRINT "DRONE CLUB"
  177. 1770  POKE MS,144: POKE ME,64: CALL MU
  178. 1780  IF OUT = 1  THEN  PRINT EN$;" IS OUT OF RANGE": GOTO 1840
  179. 1790 HIT = 0:PR = 30 +5 *(WE = 0) +15 *(WE = 1) + PEEK(PL *25 +3349):CH =  INT( RND(1) *101): IF CH <PR  THEN HIT = 1
  180. 1800  IF   NOT HIT  THEN  PRINT PL$;" MISSES ";EN$: GOTO 1840
  181. 1810 DM =  INT( RND(1) *5) +1:DM = DM -4 +5 *(WE = 0) +10 *(WE = 2):DM = DM + PEEK(A%(PL) *25 +3346): IF DM <1  THEN DM = 1
  182. 1820 Y = A%(PL): GOSUB 1370
  183. 1830  PRINT PL$;" HITS ";EN$: GOSUB 2700
  184. 1840  FOR HIT = 1 TO  PEEK(5118) *100 + PEEK(5119): NEXT : HOME : RETURN 
  185. 1850 Y = A%(PL): GOSUB 1370:E1% = Z%:E2% = X:Y = PL: GOSUB 1370:OUT =  ABS(E1% -Z%) + ABS(E2% -X)
  186. 1860  HCOLOR= 6: HPLOT E1% *14 +8,E2% *16 +8 TO Z% *14 +8,X *16 +8
  187. 1870  PRINT PL$;" ATTACKS WITH A ";: IF WE = 3  THEN  PRINT "TOXIRIFLE"
  188. 1880  IF WE = 4  THEN  PRINT "V-RAY GUN"
  189. 1890  IF WE = 5  THEN  PRINT "GAMMASTAR"
  190. 1900  POKE MS,0: POKE ME,80: FOR HIT = 1 TO 3: CALL MU: NEXT 
  191. 1910 HIT = 0:PR = 20 +20 *(WE = 5) +5 *(WE = 3) + PEEK(PL *25 +3349) -OUT:CH =  INT( RND(1) *101): IF CH <PR  THEN HIT = 1
  192. 1920  HCOLOR= 4: HPLOT E1% *14 +8,E2% *16 +8 TO Z% *14 +8,X *16 +8
  193. 1930  IF   NOT HIT  THEN  PRINT PL$;" MISSES ";EN$: GOTO 1840
  194. 1940 DM =  INT( RND(1) *5) +1:DM = DM -4 +5 *(WE = 3) +10 *(WE = 4):DM = DM + PEEK(A%(PL) *25 +3346): IF DM <1  THEN DM = 1
  195. 1950 Y = A%(PL): GOSUB 1370
  196. 1960  PRINT PL$;" HITS ";EN$: GOSUB 2700: GOTO 1840
  197. 1970 OUT = 4
  198. 1980  POKE 5326, PEEK(PL *25 +3340):Y = PL: GOSUB 1370: POKE 5327,Z%: POKE 5328,X: POKE 5329,Z%: POKE 5330,X:Y = A%(PL): GOSUB 1370
  199. 1990  VTAB 21: XDRAW 19 AT  PEEK(5329) *14 +8, PEEK(5330) *16 +8
  200. 2000  PRINT PL$;" LAUNCHES A ";: IF OUT = 4  THEN  PRINT "GRENADE"
  201. 2010  IF OUT = 8  THEN  PRINT "CHROMAGRENADE"
  202. 2020  POKE PL *25 +3343 +(OUT/4), PEEK(PL *25 +3343 +(OUT/4)) -1
  203. 2030  POKE MS,0: POKE ME,255: CALL MU
  204. 2040  FOR Y = 1 TO OUT +1: XDRAW 19 AT  PEEK(5329) *14 +8, PEEK(5330) *16 +8: XDRAW 19 AT  PEEK(5327) *14 +8, PEEK(5328) *16 +8
  205. 2050  POKE 5327, PEEK(5329): POKE 5328, PEEK(5330)
  206. 2060  POKE 5329, PEEK(5327) + SGN(Z% - PEEK(5327)): POKE 5330, PEEK(5328) + SGN(X - PEEK(5328)): NEXT 
  207. 2070 Z% =  PEEK(5327):X =  PEEK(5328): FOR A =  PEEK(5327) -1 TO  PEEK(5327) +1: IF A <0 GOTO 2170
  208. 2080  IF A >18 GOTO 2170
  209. 2090  FOR Z =  PEEK(5328) -1 TO  PEEK(5328) +1: IF Z <0 GOTO 2160
  210. 2100  IF Z >8 GOTO 2160
  211. 2110 E1% = Z *19 +A: IF  PEEK(E1% +5126) <60  THEN 2160
  212. 2120 DM =  INT(((12 -OUT) +2 + RND(1) *7) * PEEK(5326)/20)
  213. 2130 Z% = A:X = Z
  214. 2140 A%(PL) =  PEEK(E1% +5126) -60
  215. 2150 EN$ = "": FOR Y = A%(PL) *25 +3326 TO A%(PL) *25 +3335:EN$ = EN$ + CHR$( PEEK(Y)): NEXT : GOSUB 2700
  216. 2160  NEXT Z
  217. 2170  NEXT A
  218. 2180  GOSUB 1840: XDRAW 19 AT  PEEK(5327) *14 +8, PEEK(5328) *16 +8: RETURN 
  219. 2190 OUT = 8: GOTO 1980
  220. 2200  PRINT PL$;" IS MOVING"
  221. 2210 E1% = 0:Y = PL: GOSUB 1370:E2% = PL *10 +6000: HCOLOR= 4: DRAW 20 AT Z% *14 +8,X *16 +8
  222. 2220  POKE 5126 + PEEK(E2%),0: HCOLOR= 7: DRAW  PEEK(3072 + PEEK(E2%)) +1 AT Z% *14 +8,X *16 +8
  223. 2230 E1% = E1% +1: IF E1% = 9  THEN 2300
  224. 2240  IF  PEEK( PEEK(E1% +E2%) +5126)  THEN 2300
  225. 2250  IF  PEEK(E1% +E2%) = 255  THEN 2300
  226. 2260 Z% =  PEEK(E1% +E2%):X =  INT(Z%/19):Z% = Z% -X *19
  227. 2270  POKE MS,200: POKE ME,30: CALL MU
  228. 2280  HCOLOR= 4: DRAW 20 AT Z% *14 +8,X *16 +8: HCOLOR= 7: DRAW  PEEK(PL *25 +3336) +5 AT Z% *14 +8,X *16 +8: XDRAW 1 +19 *(TE = 1) AT Z% *14 +8,X *16 +8: FOR Y = 1 TO 30: NEXT Y
  229. 2290  HCOLOR= 4: DRAW 20 AT Z% *14 +8,X *16 +8: HCOLOR= 7: DRAW  PEEK(3072 + PEEK(E2% +E1%)) +1 AT Z% *14 +8,X *16 +8: GOTO 2230
  230. 2300  POKE 5126 +X *19 +Z%,PL +60: HCOLOR= 4: DRAW 20 AT Z% *14 +8,X *16 +8
  231. 2310  HCOLOR= 7: DRAW  PEEK(PL *25 +3336) +5 AT Z% *14 +8,X *16 +8: XDRAW 1 +19 *(TE = 1) AT Z% *14 +8,X *16 +8
  232. 2320  POKE E2%,X *19 +Z%: GOSUB 1840: IF BX(PL) = 2  THEN  GOTO 3030
  233. 2330  RETURN 
  234. 2340  PRINT PL$;" IS RESTING": GOTO 1840
  235. 2350  PRINT PL$;" CHANGES WEAPONS":Y =  PEEK(PL *25 +3342): POKE PL *25 +3342, PEEK(PL *25 +3343): POKE PL *25 +3343,Y: GOTO 1840
  236. 2360  REM  WIN!
  237. 2370  HOME : VTAB 21: PRINT "TEAM #";TE +1;" LOSES": INVERSE : VTAB 22: PRINT "PLEASE WAIT": NORMAL 
  238. 2380 TE = 1 -TE
  239. 2390  FOR Y = 0 +TE *4 TO 3 +TE *4: IF  PEEK(Y *25 +3325) = 0  THEN 2450
  240. 2400 X =  PEEK(Y *25 +3337) *100 + PEEK(Y *25 +3338):X = X +3: IF  PEEK(Y *25 +3325) = 2  THEN X = X +2
  241. 2410  IF X >9999  THEN X = 9999
  242. 2420  POKE Y *25 +3337, INT(X/100): POKE Y *25 +3338,X - INT(X/100) *100
  243. 2430  FOR E1 = 1 TO 10: IF X > = E1 *10  AND  PEEK(Y *25 +3347) <E1  THEN  POKE Y *25 +3347,E1: POKE Y *25 +3340, PEEK(Y *25 +3340) +1: POKE Y *25 +3349, PEEK(Y *25 +3349) +3
  244. 2440  NEXT 
  245. 2450  NEXT 
  246. 2460  FOR Y = 0 TO 7: IF  PEEK(Y *25 +3325) = 1  THEN  POKE Y *25 +3325,2
  247. 2470  IF  PEEK(Y *25 +3325)  THEN  POKE Y *25 +3339,100
  248. 2480  NEXT 
  249. 2490  FOR Y = 0 TO 7:X =  PEEK(Y *25 +3341): FOR Z = 0 TO 24: POKE Z +X *25 +3585, PEEK(Y *25 +3325 +Z): NEXT : NEXT 
  250. 2500  CLEAR 
  251. 2510  GOTO 320
  252. 2520  HOME : INVERSE : PRINT  SPC( 13);"WARRIORS  2000"; SPC( 13): PRINT  SPC( 12);"GAME  PARAMETERS"; SPC( 12): NORMAL 
  253. 2530  VTAB 8: PRINT "MESSAGE DISPLAY TIME (1-9999)"
  254. 2540  PRINT "DEFAULT VALUE:"; PEEK(5118) *100 + PEEK(5119)
  255. 2550  PRINT "NEW VALUE:"
  256. 2560  VTAB 12: PRINT "SOUND EFFECTS"
  257. 2570  PRINT "DEFAULT VALUE:";: IF  PEEK(5120)  THEN  PRINT "ON"
  258. 2580  IF   NOT  PEEK(5120)  THEN  PRINT "OFF"
  259. 2590  PRINT "SOUND (0=ON,1=OFF):"
  260. 2600  VTAB 10: HTAB 11: INPUT "";A$:A =  VAL(A$): IF A <1  OR A >9999  THEN 2620
  261. 2610  POKE 5118, INT(A/100): POKE 5119,A -( INT(A/100) *100)
  262. 2620  VTAB 10: HTAB 11: PRINT  PEEK(5118) *100 + PEEK(5119)
  263. 2630  VTAB 14: HTAB 20: GET A$: PRINT A$: IF A$ =  CHR$(13)  THEN 2670
  264. 2640  IF A$ = "0"  OR A$ = "1"  THEN 2660
  265. 2650  GOTO 2670
  266. 2660  POKE 5120,1 - VAL(A$): POKE 5089,173: IF A$ = "1"  THEN  POKE 5089,96
  267. 2670  VTAB 14: HTAB 20: PRINT ( PEEK(5089) = 96)
  268. 2680  VTAB 21: PRINT "PRESS RETURN TO CONTINUE": GOSUB 3040
  269. 2690  HOME : GOTO 220
  270. 2700  FOR Y = 1 TO 4: XDRAW 20 AT Z% *14 +8,X *16 +8: NEXT Y
  271. 2710  POKE MS,128: POKE ME,192: FOR Y = 1 TO 3: CALL MU: NEXT 
  272. 2720 Y =  PEEK(A%(PL) *25 +3339):Y = Y -DM: IF Y <0  THEN  POKE A%(PL) *25 +3325,0: POKE A%(PL) *25 +3339,0: PRINT EN$;" IS DEAD": GOTO 2740
  273. 2730  GOTO 2750
  274. 2740  POKE 5126 +X *19 +Z%,0: POKE MS,128: POKE ME,127: CALL MU: RETURN 
  275. 2750  POKE A%(PL) *25 +3339,Y: PRINT EN$;" LOST ";DM;" POINTS OF HEALTH": IF Y <6  THEN  PRINT EN$;" IS WOUNDED": POKE A%(PL) *25 +3325,1: GOTO 2740
  276. 2760  RETURN 
  277. 2770  HOME : VTAB 23: PRINT "PRESS RETURN TO STOP": VTAB 21: PRINT "REVIEW OPTIONS FOR WHICH PLAYER:";: GET A$: PRINT A$: IF A$ =  CHR$(13)  THEN 540
  278. 2780 A =  ASC(A$) -65: IF A <0  OR A >3 GOTO 2770
  279. 2790  IF  PEEK((A +TE *4) *25 +3325) < >2  THEN 2770
  280. 2800 PL = A: GOSUB 1360
  281. 2810  HOME : VTAB 23: PRINT "PRESS RETURN TO CONTINUE": VTAB 21
  282. 2820  IF BX(A +TE *4) = 2  THEN 2990
  283. 2830  ON CH%(A +TE *4) GOSUB 2850,2860,2870,2880,2970,2980
  284. 2840  GOSUB 3040: GOTO 2770
  285. 2850  PRINT PL$;" WILL ATTACK ";: INVERSE : PRINT  CHR$(61 +TE *4 +A%(A +TE *4)): NORMAL : RETURN 
  286. 2860  PRINT PL$;" WILL THROW A GRENADE AT ";: INVERSE : PRINT  CHR$(61 +TE *4 +A%(A +TE *4)): NORMAL : RETURN 
  287. 2870  PRINT PL$;" WILL THROW A C-GRENADE AT ";: INVERSE : PRINT  CHR$(61 +TE *4 +A%(A +TE *4)): NORMAL : RETURN 
  288. 2880  PRINT PL$;" WILL MOVE":E1% = 1:E2% = 6000 +10 *(A +TE *4)
  289. 2890  GOSUB 2900: GOTO 2960
  290. 2900 Z% =  PEEK(E2% +E1%):X =  INT(Z%/19):Z% = Z% -X *19
  291. 2910  IF  PEEK(E1% +E2%) = 255  THEN  RETURN 
  292. 2920  XDRAW 19 AT Z% *14 +8,X *16 +8
  293. 2930 E1% = E1% +1
  294. 2940  IF E1% = 9  THEN  RETURN 
  295. 2950  GOTO 2900
  296. 2960 E1% = 1: WAIT STR,WT: POKE CL,0: GOSUB 2900: POP : GOTO 2770
  297. 2970  PRINT PL$;" WILL REST": RETURN 
  298. 2980  PRINT PL$;" WILL CHANGE WEAPONS": RETURN 
  299. 2990  PRINT PL$;" WILL MOVE AND THEN": ON CH%(A +TE *4) GOSUB 2850,2860,2870:E2% = 6000 +10 *(A +TE *4):E1% = 1: GOSUB 2900
  300. 3000 E1% = 1: WAIT STR,WT: POKE CL,0: GOSUB 2900: GOTO 2770
  301. 3010  GOSUB 2880: PRINT "AND THEN": ON CH%(A +TE *4) GOSUB 2850,2860,2870: GOTO 2770
  302. 3020  GOTO 2200
  303. 3030  ON CH%(PL) GOTO 1720,1970,2190
  304. 3040  POKE CL,0: WAIT STR,WT: POKE CL,0: RETURN 
  305. 3050 ER =  PEEK(222): IF ER = 255  THEN  RESUME 
  306. 3060  TEXT : HOME : VTAB 12
  307. 3070  IF ER = 6  AND EC = 1  THEN  PRINT "COULD NOT UPDATE ROSTER FILE.": PRINT "YOU MUST REBOOT THE SYSTEM.": END 
  308. 3080  IF ER = 6  AND EC = 2  THEN  PRINT "COULD NOT UPDATE ROSTER FILE.": GOTO 330
  309. 3090  IF EC = 3  THEN  PRINT "CAN'T LOCATE THE FILE WARRIORS.2000.": END 
  310. 3100  PRINT "AN ERROR HAS OCCURRED.": PRINT "THE ERROR NUMBER IS ";ER;"."
  311. 3110  PRINT "THE ERROR OCCURRED IN LINE "; PEEK(218) + PEEK(219) *256;"."
  312. 3120  END