home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib40b.dsk / WARRIORS.2000.bas < prev   
BASIC Source File  |  2023-02-26  |  16KB  |  262 lines

  1. 10  REM  *************************
  2. 20  REM  * WARRIORS.2000         *
  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  PRINT  CHR$(12) CHR$(21): TEXT : HOME : VTAB 8: HTAB 13: PRINT "WARRIORS.2000": VTAB 10: HTAB 13: PRINT "BY: VIVEK PAI"
  9. 90  VTAB 12: HTAB 5: PRINT "(C) 1990 MINDCRAFT PUBL. CORP.": VTAB 18: HTAB 13: PRINT "PLEASE WAIT..."
  10. 100  IF  PEEK(104) < >64  THEN  POKE 103,1: POKE 104,64: POKE 16384,0: PRINT  CHR$(4)"RUN WARRIORS.2000"
  11. 110 STR =  -16384:WT = 128:CL =  -16368
  12. 120  ONERR  GOTO 2350
  13. 130 EC = 1: POKE 232,3: POKE 233,8: PRINT  CHR$(4);"BLOAD WAR.SHAPES,A$803": GOTO 1950
  14. 140  HOME : TEXT : HOME : SPEED= 255:STR =  -16384:WT = 128:CL =  -16368
  15. 150  VTAB 1: INVERSE : PRINT  SPC( 13);"WARRIORS  2000"; SPC( 13): VTAB 2: PRINT  SPC( 11);"BATTLE PREPARATION"; SPC( 11): NORMAL 
  16. 160  VTAB 6: PRINT "(1)  GENERATE NEW TERRAIN"
  17. 170  PRINT "(2)  VIEW TERRAIN"
  18. 180  PRINT "(3)  MODIFY PRESENT TERRAIN"
  19. 190  PRINT "(4)  SAVE TERRAIN"
  20. 200  PRINT "(5)  LOAD TERRAIN"
  21. 210  PRINT "(6)  CREATE NEW CHARACTER"
  22. 220  PRINT "(7)  VIEW CHARACTER"
  23. 230  PRINT "(8)  EQUIP CHARACTER"
  24. 240  PRINT "(9)  TERMINATE A CHARACTER"
  25. 250  PRINT "(10) EXAMINE ROSTER"
  26. 260  PRINT "(11) FORM A PARTY"
  27. 270  PRINT "(12) PLAY WARRIORS 2000"
  28. 280  PRINT "(13) QUIT"
  29. 290  VTAB 20: INPUT "CHOOSE:";A$:A =  VAL(A$)
  30. 300  IF A < > INT(A)  OR A <1  OR A >13  THEN 140
  31. 310  ON A GOTO 320,490,540,550,610,670,1490,1680,2460,1830,2030,1730,1910
  32. 320  HOME : PRINT "CREATING NEW TERRAIN DESTROYS OLD": PRINT "TERRAIN. DO YOU WISH TO CONTINUE ?";: GET A$: IF A$ < >"Y"  AND A$ < >"y" GOTO 140
  33. 330  FOR Y = 3072 TO 3264: POKE Y,0: NEXT Y
  34. 340  HGR : HCOLOR= 5: ROT= 0: SCALE= 1
  35. 350  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 : HCOLOR= 7
  36. 360  PRINT : VTAB 21: PRINT "COMMANDS: I J K M  1(BLANK) 2(WATER)": PRINT "3(FOREST) 4(BRUSH) <ESC>"
  37. 370 P1 = 0:P2 = 0:N1 = 0:N2 = 0
  38. 380  XDRAW 19 AT P1 *14 +7,P2 *16 +8
  39. 390  GET A$
  40. 400  IF A$ = "I"  OR A$ = "i"  THEN N2 = P2 -1 *(P2 >0)
  41. 410  IF A$ = "M"  OR A$ = "m"  THEN N2 = P2 +1 *(P2 <8)
  42. 420  IF A$ = "J"  OR A$ = "j"  THEN N1 = P1 -1 *(P1 >0)
  43. 430  IF A$ = "K"  OR A$ = "k"  THEN N1 = P1 +1 *(P1 <18)
  44. 440  IF A$ =  CHR$(27) GOTO 140
  45. 450  XDRAW 19 AT P1 *14 +7,P2 *16 +8: XDRAW 19 AT (N1) *14 +7,N2 *16 +8:P1 = N1:P2 = N2
  46. 460 A =  VAL(A$): IF A <1  OR A >4 GOTO 390
  47. 470  POKE 3072 +P2 *19 +P1,A -1: HCOLOR= 4: DRAW 20 AT P1 *14 +8,P2 *16 +8: HCOLOR= 7: DRAW A AT P1 *14 +8,P2 *16 +8: XDRAW 19 AT P1 *14 +7,P2 *16 +8
  48. 480  GOTO 390
  49. 490  GOSUB 500: GOTO 530
  50. 500  HOME : HGR : HCOLOR= 5: ROT= 0: SCALE= 1: 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 : HCOLOR= 7
  51. 510 Z% = 3072
  52. 520  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 : RETURN 
  53. 530  POKE CL,0: VTAB 21: PRINT "PRESS RETURN CONTINUE": WAIT STR,WT: POKE CL,0: GOTO 140
  54. 540  GOSUB 500: GOTO 360
  55. 550  HOME : VTAB 10: PRINT "SAVE TERRAIN": VTAB 13: PRINT "(?='CATALOG')": VTAB 11: PRINT "(DO NOT INCLUDE '.TERR')"
  56. 560  VTAB 12: INPUT "FILENAME:";A$
  57. 570  IF A$ = "?"  OR A$ = "/"  THEN EC = 3: PRINT  CHR$(4) LEFT$("CATALOG",7 -4 *( PEEK(48896) = 76)): WAIT STR,WT: POKE CL,0:EC = 0: GOTO 550
  58. 580 EC = 3: IF A$ = "" GOTO 140
  59. 590  PRINT  CHR$(4);"BSAVE ";A$;".TERR,A$C00,L$C8":EC = 0
  60. 600  PRINT "FILE SAVED. PRESS RETURN TO CONTINUE.": POKE CL,0: WAIT STR,WT: POKE CL,0: GOTO 140
  61. 610  HOME : VTAB 10: PRINT "LOAD TERRAIN": VTAB 13: PRINT "(?='CATALOG')": VTAB 11: PRINT "(DO NOT INCLUDE '.TERR')"
  62. 620  VTAB 12: INPUT "FILENAME:";A$: IF A$ = "" GOTO 140
  63. 630  IF A$ = "?"  OR A$ = "/"  THEN EC = 3: PRINT  CHR$(4) LEFT$("CATALOG",7 -4 *( PEEK(48896) = 76)): WAIT STR,WT: POKE CL,0:EC = 0: GOTO 610
  64. 640 A$ = A$ +".TERR":EC = 2
  65. 650  PRINT  CHR$(4);"BLOAD";A$:EC = 0
  66. 660  GOTO 140
  67. 670  HOME : VTAB 12: INPUT "CHARACTER #";A$:A =  VAL(A$): IF (A <1)  OR (A >60)  THEN  PRINT "ILLEGAL #": WAIT STR,WT: POKE CL,0: GOTO 140
  68. 680 A =  INT(A)
  69. 690 A = A -1: PRINT :CH = 25 *A +260: IF ( PEEK(CH +3325))  THEN  PRINT "PLAYER #";A +1;" ALREADY EXISTS.": PRINT "PRESS RETURN TO CONTINUE.": WAIT STR,WT: POKE CL,0: GOTO 140
  70. 700  HOME : PRINT "CHARACTER GENERATION": GOSUB 710: GOSUB 840: GOTO 1460
  71. 710  PRINT : PRINT "NAME:"
  72. 720  PRINT "RACE:"
  73. 730  PRINT "EXPERIENCE: 0"
  74. 740  PRINT "HEALTH: 100"
  75. 750  PRINT "DEXTERITY:"
  76. 760  PRINT "WEAPON SKILL:"
  77. 770  PRINT "WEAPON CAPABILITY:"
  78. 780  PRINT "WEAPON #1:"
  79. 790  PRINT "WEAPON #2:"
  80. 800  PRINT "GRENADES:"
  81. 810  PRINT "CHROMAGRENADES:"
  82. 820  PRINT "ARMOR TYPE:"
  83. 830  RETURN 
  84. 840 V = 3:H = 7: GOSUB 2510:NAME$ = IN$: IF  LEN(NAME$) <1  THEN  GOTO 140
  85. 850  IF  LEN(NAME$) >10 GOTO 840
  86. 860  POKE CH +3337,0: POKE CH +3338,0: POKE CH +3339,100
  87. 870  POKE CH +3347,0: POKE CH +3341,A
  88. 880  FOR Y = CH +3326 TO CH +3335: POKE Y,0: NEXT Y: FOR Y = 1 TO  LEN(NA$): POKE 3325 +CH +Y, ASC( MID$ (NA$,Y,1)): NEXT Y: FOR Y = CH +3326 TO CH +3335: IF ( PEEK(Y) <32)  AND ( PEEK(Y) >0)  THEN  POKE Y, PEEK(Y) +64
  89. 890  NEXT Y
  90. 900  VTAB 16: HTAB 1: PRINT " #  RACE   WEAPON     AVERAGE    WEAPONS": VTAB 17: PRINT  SPC( 10);"SKILL AVG.  DEXTERITY  USABLE"
  91. 910  VTAB 18: PRINT "(1) HUMAN": PRINT "(2) DWARF": PRINT "(3) BANSHEE": PRINT "(4) TORGYOT": PRINT "(5) ELF": PRINT "(6) CYCLOPS"
  92. 920  POKE 33,28: POKE 32,12: VTAB 18: PRINT "+20%": PRINT "AVG.": PRINT "-10%": PRINT "+10%": PRINT "+15%": PRINT "+16%"
  93. 930  POKE 33,17: POKE 32,23: VTAB 18: PRINT 10: PRINT 16: PRINT 18: PRINT 13: PRINT 15: PRINT 6
  94. 940  POKE 33,7: POKE 32,33: VTAB 18: PRINT "LIGHT": PRINT "MEDIUM": PRINT "HEAVY": PRINT "MEDIUM": PRINT "LIGHT": PRINT "HEAVY"
  95. 950  POKE 32,0: POKE 33,40
  96. 960 V = 4:H = 7: GOSUB 2510:A$ = IN$:A =  VAL(A$): IF A <1  OR A >6 GOTO 960
  97. 970  POKE CH +3336,A -1: VTAB 16: FOR Y = 1 TO 8: PRINT  SPC( 40): NEXT 
  98. 980  VTAB 7: HTAB 12
  99. 990 B = 9 +6 *(A = 2) +8 *(A = 3) +3 *(A = 4) +5 *(A = 5) -4 *(A = 6) + INT( RND(1) *3)
  100. 1000  PRINT B: POKE CH +3340,B
  101. 1010 A$(1) = "HUMAN":A$(2) = "DWARF":A$(3) = "BANSHEE":A$(4) = "TORGYOT":A$(5) = "ELF":A$(6) = "CYCLOPS": VTAB 4: HTAB 7: PRINT A$(A)
  102. 1020 B = 14 +20 *(A = 1) -10 *(A = 3) +10 *(A = 4) +15 *(A = 5) +16 *(A = 6) + INT( RND(1) *3): POKE CH +3349,B: VTAB 8: HTAB 15: PRINT B -15;"%"
  103. 1030 A$(1) = "LIGHT":A$(2) = "MEDIUM":A$(3) = "HEAVY":A$(4) = A$(2):A$(5) = A$(1):A$(6) = A$(3): VTAB 9: HTAB 20: PRINT A$(A)
  104. 1040 B = 1:B = B -(A = 5) -(A = 1) +(A = 3) +(A = 6): POKE CH +3348,B
  105. 1050  VTAB 16: HTAB 1
  106. 1060  PRINT " #  WEAPON"; SPC( 10);"RANGE"; SPC( 4);"WEAPON TYPE"
  107. 1070  VTAB 17: PRINT "(1) SOUND CLUB": PRINT "(2) LIGHT GUN": PRINT "(3) DRONE CLUB": PRINT "(4) TOXIRIFLE": PRINT "(5) V-RAY GUN": PRINT "(6) GAMMASTAR"
  108. 1080  POKE 33,20: POKE 32,20: FOR Y = 0 TO 2: VTAB 17 +Y: PRINT "SHORT": VTAB 20 +Y: PRINT "LONG": NEXT 
  109. 1090  POKE 33,7: POKE 32,33: VTAB 17: PRINT "MEDIUM": PRINT "LIGHT": PRINT "HEAVY": PRINT "MEDIUM": PRINT "HEAVY": PRINT "LIGHT"
  110. 1100  POKE 32,0: POKE 33,40
  111. 1110 V = 10:H = 12: GOSUB 2510:B$ = IN$:B =  VAL(B$): IF B = 2  OR B = 6  THEN 1150
  112. 1120  IF (B = 1  OR B = 4)  AND  PEEK(CH +3348)  THEN 1150
  113. 1130  IF (B = 3  OR B = 5)  AND  PEEK(CH +3348) = 2  THEN 1150
  114. 1140  VTAB 10: HTAB 16: PRINT "NOT ALLOWED": GOTO 1110
  115. 1150 A$(1) = "SOUND CLUB":A$(2) = "LIGHT GUN":A$(3) = "DRONE CLUB":A$(4) = "TOXIRIFLE":A$(5) = "V-RAY GUN":A$(6) = "GAMMASTAR"
  116. 1160  VTAB 10: HTAB 12: PRINT A$(B); SPC( 10): POKE CH +3342,B -1
  117. 1170 V = 11:H = 12: GOSUB 2510:B$ = IN$:B =  VAL(B$): IF B = 2  OR B = 6  THEN 1210
  118. 1180  IF (B = 1  OR B = 4)  AND  PEEK(CH +3348)  THEN 1210
  119. 1190  IF (B = 3  OR B = 5)  AND  PEEK(CH +3348) = 2  THEN 1210
  120. 1200  VTAB 11: HTAB 16: PRINT "NOT ALLOWED": GOTO 1170
  121. 1210  VTAB 11: HTAB 12: PRINT A$(B); SPC( 10): POKE CH +3343,B -1
  122. 1220  PRINT : VTAB 16: FOR Y = 1 TO 7: PRINT  SPC( 40): NEXT 
  123. 1230  VTAB 16: PRINT "MISSILES"; SPC( 8);"RANGE"; SPC( 4);"DAMAGE"
  124. 1240  PRINT : PRINT "GRENADE"; SPC( 11);4; SPC( 6);"VARIES"
  125. 1250  PRINT "CHROMAGRENADE"; SPC( 5);8; SPC( 6);"VARIES"
  126. 1260  PRINT "DAMAGE CONTROLLED BY DEXTERITY"
  127. 1270  PRINT "DAMAGE DONE TO ALL ADJACENT SQUARES"
  128. 1280  PRINT "ONLY 4 MISSILES TOTAL ALLOWED"
  129. 1290 V = 12:H = 11: GOSUB 2510:A$ = IN$:A =  VAL(A$): IF A <0  OR A >4 GOTO 1290
  130. 1300  POKE CH +3344,A: POKE CH +3345,4 -A: VTAB 13: HTAB 17: PRINT 4 -A
  131. 1310  VTAB 16: FOR Y = 1 TO 8: PRINT  SPC( 40): NEXT 
  132. 1320  VTAB 17: PRINT " #  ARMOR","MOVEMENT"
  133. 1330  PRINT "(1) HEAVY","2 SPACES"
  134. 1340  PRINT "(2) MEDIUM","4 SPACES"
  135. 1350  PRINT "(3) LIGHT","6 SPACES"
  136. 1360  PRINT "(4) NONE","8 SPACES"
  137. 1370 V = 14:H = 13: GOSUB 2510:A$ = IN$:A =  VAL(A$): IF A <1  OR A >4 GOTO 1370
  138. 1380  POKE CH +3346,A
  139. 1390 A$(1) = "HEAVY"
  140. 1400 A$(2) = "MEDIUM"
  141. 1410 A$(3) = "LIGHT"
  142. 1420 A$(4) = "NONE"
  143. 1430  VTAB 14: HTAB 13: PRINT A$(A)
  144. 1440  VTAB 17: FOR Y = 1 TO 6: PRINT  SPC( 40): NEXT 
  145. 1450  RETURN 
  146. 1460  VTAB 16: PRINT "SATISFACTORY (Y/N)";: GET A$: IF A$ = "Y"  OR A$ =  CHR$(121)  THEN  POKE CH +3325,2
  147. 1470  IF A$ < >"Y"  AND A$ < >"N"  AND A$ < >"y"  AND A$ < >"n"  THEN 1460
  148. 1480  PRINT : GOTO 140
  149. 1490  HOME : VTAB 12: INPUT "CHARACTER #";A$:A =  VAL(A$): IF (A <1)  OR (A >60)  OR (A < > INT(A))  THEN  PRINT "ILLEGAL #": PRINT "PRESS RETURN TO CONTINUE": WAIT STR,WT: POKE CL,0: GOTO 140
  150. 1500 A = A -1:CH = A *25 +260: IF  PEEK(CH +3325) = 0  THEN  PRINT : PRINT "PLAYER #";A +1;" DOES NOT EXIST": PRINT "PRESS RETURN TO CONTINUE": WAIT STR,WT: POKE CL,0: GOTO 140
  151. 1510  HOME : PRINT "VIEW CHARACTER #";A +1: GOSUB 710: GOSUB 1520: GOTO 1610
  152. 1520  VTAB 3: HTAB 7: FOR Y = CH +3326 TO CH +3335: PRINT  CHR$( PEEK(Y));: NEXT : PRINT 
  153. 1530 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(CH +3336) +1)
  154. 1540  VTAB 5: HTAB 13: PRINT  PEEK(CH +3337) *100 + PEEK(CH +3338)
  155. 1550  POKE CH +3339,100
  156. 1560  VTAB 7: HTAB 12: PRINT  PEEK(CH +3340)
  157. 1570  VTAB 8: HTAB 15: PRINT  PEEK(CH +3349) -15;"%"
  158. 1580  VTAB 9: HTAB 20: PRINT "HEAVY":A =  PEEK(CH +3348): VTAB 9: HTAB 20: IF A = 0  THEN  PRINT "LIGHT"
  159. 1590  IF  PEEK(CH +3348) = 1  THEN  PRINT "MEDIUM"
  160. 1600  RETURN 
  161. 1610 A$(1) = "SOUND CLUB":A$(2) = "LIGHT GUN":A$(3) = "DRONE CLUB":A$(4) = "TOXIRIFLE":A$(5) = "V-RAY GUN":A$(6) = "GAMMASTAR"
  162. 1620  VTAB 10: HTAB 12: PRINT A$( PEEK(CH +3342) +1): VTAB 11: HTAB 12: PRINT A$( PEEK(CH +3343) +1)
  163. 1630  VTAB 12: HTAB 11: PRINT  PEEK(CH +3344)
  164. 1640  VTAB 13: HTAB 17: PRINT  PEEK(CH +3345)
  165. 1650 A$(1) = "HEAVY":A$(2) = "MEDIUM":A$(3) = "LIGHT":A$(4) = "NONE"
  166. 1660  VTAB 14: HTAB 13: PRINT A$( PEEK(CH +3346))
  167. 1670  POKE CL,0: PRINT : PRINT "PRESS RETURN TO CONTINUE": WAIT STR,WT: POKE CL,0: GOTO 140
  168. 1680  HOME : VTAB 12: INPUT "CHARACTER #";A$:A =  VAL(A$): IF (A$ = "")  OR (A <1)  OR (A >60)  OR (A < > INT(A)) GOTO 140
  169. 1690 A = A -1:CH = A *25 +260
  170. 1700  IF  PEEK(CH +3325) = 0  THEN  PRINT : PRINT "PLAYER #";A +1" DOES NOT EXIST.": PRINT "PRESS RETURN TO CONTINUE.": WAIT STR,WT: POKE CL,0: GOTO 140
  171. 1710  HOME : PRINT "EQUIP CHARACTER"
  172. 1720  GOSUB 710: GOSUB 1520: GOSUB 1050: VTAB 21: PRINT "PRESS RETURN TO CONTINUE": WAIT STR,WT: POKE CL,0: GOTO 140
  173. 1730  HOME : VTAB 12: IF  PEEK(5104) = 0  THEN  PRINT "NO PARTY FORMED": PRINT "PRESS RETURN TO CONTINUE": WAIT STR,WT: POKE CL,0: GOTO 140
  174. 1740  INVERSE : HTAB 15: PRINT "PLEASE WAIT": NORMAL : POKE 2051,234
  175. 1750  FOR Y = 3325 TO 3524: POKE Y,0: NEXT : FOR Y = 0 TO 7: POKE Y *25 +3341,60: NEXT 
  176. 1760  FOR Y = 0 TO 7:A =  PEEK(Y +5100):CH = A *25 +3560
  177. 1770  IF A = 0  THEN  GOTO 1790
  178. 1780  FOR X = 0 TO 24: POKE Y *25 +3325 +X, PEEK(CH +X): NEXT X
  179. 1790  NEXT Y:EC = 4
  180. 1800  PRINT  CHR$(4);"BSAVE ROSTER,A$E01,L$5DC":EC = 0
  181. 1810  PRINT  CHR$(4);"RUN WAR.BATTLE"
  182. 1820  END 
  183. 1830  HOME : PRINT  SPC( 11);"HALL OF WARRIORS"
  184. 1840 A = 1:B = 1: GOSUB 1860:A = 21:B = 14: GOSUB 1860:A = 41:B = 27: GOSUB 1860
  185. 1850  PRINT "PRESS RETURN TO LEAVE THE HALL": POKE CL,0: WAIT STR,WT: POKE CL,0: GOTO 140
  186. 1860  FOR Y = A -1 TO A +18: VTAB Y -A +4: HTAB B: PRINT Y +1;")";
  187. 1870  IF  PEEK(Y *25 +3585) = 0  THEN  PRINT : GOTO 1890
  188. 1880  FOR X = Y *25 +3586 TO Y *25 +3595: PRINT  CHR$( PEEK(X));: NEXT X
  189. 1890  NEXT Y
  190. 1900  RETURN 
  191. 1910  HOME : VTAB 11: PRINT "PRESS 'Y' TO CONFIRM:";: GET A$: PRINT A$: IF A$ < >"Y"  AND A$ < > CHR$(121)  THEN  GOTO 140
  192. 1920 EC = 4: PRINT  CHR$(4);"BSAVE ROSTER,A$E01,L$5DC"
  193. 1930  VTAB 15: PRINT "YOU MUST REBOOT THE SYSTEM"
  194. 1940  END 
  195. 1950 EC = 0: ONERR  GOTO 2010
  196. 1960  FOR Y = 3072 TO 3524: POKE Y,0: NEXT : FOR Y = 5086 TO 5325: POKE Y,0: NEXT 
  197. 1970  PRINT  CHR$(4);"VERIFY ROSTER"
  198. 1980  PRINT  CHR$(4);"BLOAD ROSTER"
  199. 1990  ONERR  GOTO 2350
  200. 2000  GOTO 140
  201. 2010  FOR Y = 3585 TO 5085: POKE Y,0: NEXT : ONERR  GOTO 2350
  202. 2020  GOTO 140
  203. 2030 B = 0: HOME : PRINT "TEAM #1": PRINT 
  204. 2040  FOR Y = 5100 TO 5107: POKE Y,0: NEXT 
  205. 2050  PRINT "A)": PRINT "B)": PRINT "C)": PRINT "D)"
  206. 2060  PRINT : PRINT : PRINT "TEAM #2": PRINT 
  207. 2070  PRINT "A)": PRINT "B)": PRINT "C)": PRINT "D)"
  208. 2080 PP = 0:NP = 0:C = 3: GOSUB 2180
  209. 2090 C = 4: GOSUB 2180
  210. 2100 C = 5: GOSUB 2180
  211. 2110 C = 6: GOSUB 2180
  212. 2120 PP = 0:B = 4:C = 11: GOSUB 2180
  213. 2130 C = 12: GOSUB 2180
  214. 2140 C = 13: GOSUB 2180
  215. 2150 C = 14: GOSUB 2180
  216. 2160  GOTO 2240
  217. 2170  END 
  218. 2180  IF PP  THEN  RETURN 
  219. 2190  IF NP  THEN  RETURN 
  220. 2200  VTAB C: HTAB 4: INPUT "";A$:A =  VAL(A$): IF A$ = ""  THEN 2230
  221. 2210  IF A <1  OR A >60  OR A < > INT(A)  THEN  GOTO 2180
  222. 2220  GOTO 2290
  223. 2230  IF B <5  THEN  GOTO 2260
  224. 2240  VTAB 16: IF   NOT NP  THEN  PRINT "PARTY CREATION COMPLETE."
  225. 2250  VTAB 18: PRINT "PRESS RETURN TO CONTINUE": WAIT STR,WT: POKE CL,0: GOTO 140
  226. 2260  IF B = 4  THEN 2280
  227. 2270  IF B >0  THEN PP = 1: RETURN 
  228. 2280  VTAB 16: PRINT "NO PARTY FORMED": FOR Y = 5100 TO 5107: POKE Y,0: NEXT :PP = 1:NP = 1: RETURN 
  229. 2290  IF  PEEK((A -1) *25 +3585) = 0  THEN  VTAB C: HTAB 10: PRINT "NOT A PLAYER": GOTO 2180
  230. 2300 X = 0: FOR Y = 0 TO 7: IF A =  PEEK(Y +5100)  THEN X = 1
  231. 2310  NEXT Y
  232. 2320  IF X = 1  THEN 2180
  233. 2330  POKE 5100 +B,A:B = B +1
  234. 2340  RETURN 
  235. 2350 ME =  PEEK(219) *256 + PEEK(218): IF  PEEK(222) = 0  OR  PEEK(222) >15  THEN  POKE 216,0: PRINT "LINE ERROR IN #";ME: STOP 
  236. 2360  VTAB 21: PRINT : VTAB 21: PRINT  CHR$(7);"DISK ERROR- PROBABLE CAUSE:":Y =  PEEK(222)
  237. 2370  VTAB 22: IF Y = 4  THEN  PRINT "DISKETTE IS WRITE PROTECTED"
  238. 2380  IF Y = 6  AND EC = 1  THEN  PRINT "WAR.SHAPES IS NOT ON DISKETTE": PRINT "DRIVE DOOR MAY BE OPEN.": STOP 
  239. 2390  IF Y = 6  AND EC = 2  THEN  PRINT "TERRAIN FILE IS NOT ON DISKETTE": PRINT "DRIVE DOOR MAY BE OPEN."
  240. 2400  IF Y = 8  OR EC = 3  OR EC = 4  THEN  PRINT "INPUT/OUTPUT ERROR:DRIVE DOOR IS OPEN": IF EC = 4  THEN  PRINT "UNABLE TO UPDATE ROSTER FILE.": GOTO 1930
  241. 2410  IF Y = 9  THEN  PRINT "DISKETTE IS FULL"
  242. 2420  IF Y = 10  THEN  PRINT "ROSTER OR TERRAIN FILE IS LOCKED"
  243. 2430  IF Y = 11  THEN  PRINT "TYPING ERROR IN PROGRAM"
  244. 2440  IF Y = 13  THEN  PRINT "INCORRECT FILE TYPE"
  245. 2450  VTAB 23: PRINT "PRESS RETURN TO GO TO THE MAIN MENU": WAIT STR,WT: POKE CL,0: GOTO 140
  246. 2460  HOME : VTAB 12: INPUT "TERMINATE CHARACTER #";A$:A =  VAL(A$): IF A <1  OR A >60  OR A < > INT(A)  THEN  GOTO 140
  247. 2470  PRINT : PRINT "ARE YOU SURE ?";: GET A$: PRINT : IF A$ < >"Y"  THEN  GOTO 140
  248. 2480 A = A -1:CH = A *25 +3585: POKE CH,0
  249. 2490  PRINT "CHARACTER #";A +1;" IS TERMINATED."
  250. 2500  PRINT "PRESS RETURN TO CONTINUE": WAIT STR,WT: POKE CL,0: GOTO 140
  251. 2510 IN$ = ""
  252. 2520  VTAB V: HTAB H: PRINT IN$;" ": VTAB V: HTAB H: PRINT IN$;: GET IG$
  253. 2530  IF IG$ =  CHR$(10)  OR IG$ =  CHR$(27)  OR IG$ =  CHR$(11)  THEN 2520
  254. 2540  IF IG$ =  CHR$(8)  AND  LEN(IN$) = 0  THEN 2520
  255. 2550  IF IG$ =  CHR$(8)  AND  LEN(IN$) = 1  THEN  GOTO 2510
  256. 2560  IF IG$ =  CHR$(8)  THEN IN$ =  LEFT$(IN$, LEN(IN$) -1): GOTO 2520
  257. 2570  IF IG$ =  CHR$(13)  THEN  GOTO 2620
  258. 2580  IF  LEN(IN$) >19  THEN 2520
  259. 2590  IF IG$ =  CHR$(21)  THEN 2520
  260. 2600 IN$ = IN$ +IG$
  261. 2610  GOTO 2520
  262. 2620  RETURN