home *** CD-ROM | disk | FTP | other *** search
/ Softdisk G-S 156 / SGDS 156.2mg / SDGS.156 / A / CT.MAIN.PGM (.txt) < prev    next >
Encoding:
Applesoft BASIC Source Code  |  1994-08-13  |  25.7 KB  |  829 lines  |  [FC] Applesoft BASIC Program (0x0A01)

  1. 45  PRINT D$"READ"ED$",R"R: INPUT A$: PRINT D$
  2. 50 LL = ( LEN(A$) +CP -1)/CP:L = L +LL: GOSUB 58: PRINT A$:L = L +LL *(L = 0)
  3. 51  PRINT 
  4. 52 L = L +1: GOTO 58
  5. 54 L = L +1
  6. 56 L = L +2: PRINT 
  7. 58  IF L <23  THEN  RETURN 
  8. 59  PRINT "PRESS ANY KEY TO CONTINUE         ";: GET Q$: PRINT : VTAB  PEEK(37) -1: PRINT : CALL  -958:L = 0: RETURN 
  9. 60 A$ = "": VTAB  PEEK(37) +1: POKE 1403,H -1
  10. 61  PRINT " " CHR$(8);: IF  PEEK(49152) <128  THEN  PRINT "_" CHR$(8);: GOTO 61
  11. 62 T =  PEEK(49152) -128: POKE 49168,0:T = T -32 *(T >96  AND T <123): IF T = 127  THEN T = 8
  12. 63  IF T = 24  THEN  POKE 1403,H -1: PRINT  SPC(  LEN(A$) +1): POKE 1403,H -1:A$ = "": GOTO 61
  13. 64  IF T = 27  THEN  POKE 1403,H -1: PRINT  SPC(  LEN(A$) +1): POKE 1403,H -1: PRINT :A$ = "": RETURN 
  14. 65  IF T = 8  THEN  IF  LEN(A$) = 1  THEN A$ = "": PRINT  CHR$(8);: GOTO 61
  15. 66  IF T = 8  THEN  IF  LEN(A$)  THEN A$ =  LEFT$(A$, LEN(A$) -1): PRINT  CHR$(8);: GOTO 61
  16. 67  IF T = 13  THEN  PRINT : RETURN 
  17. 68  IF T > = 32  THEN  IF  LEN(A$) <IW  THEN A$ = A$ + CHR$(T): PRINT  CHR$(T);: GOTO 61
  18. 69  PRINT  CHR$(7);: GOTO 61
  19. 70  GET A$:AK =  ASC(A$):AK = AK -32 *((AK >96)  AND (AK <123)):A$ =  CHR$(AK): RETURN 
  20. 88  PRINT "That can't be done now!": GOTO 99
  21. 89  PRINT M$(OF)" can't cast "SP$(S)" on "S$".": GOTO 99
  22. 91  PRINT M$(DF);" isn't carrying it.": GOTO 99
  23. 92  PRINT "Nothing happens.": GOTO 98
  24. 94  PRINT M$(DF);" can't "C$(C)" "S$: GOTO 99
  25. 95  PRINT M$(DF);" isn't holding it.": GOTO 99
  26. 96  PRINT "Nobody here by that name!": GOTO 99
  27. 97  PRINT "Huh?": GOTO 99
  28. 98  GOSUB 56: GOTO 310
  29. 99  GOSUB 56
  30. 100  REM <CTRL-0x0a><CTRL-0x0a>YOU SEE<CTRL-0x0a>
  31. 105  IF LY = 3  THEN  IF V%(RO)  AND T(1)  THEN 130
  32. 110  IF TL  THEN  PRINT "You are "RN$"  ";
  33. 115  PRINT "Light is "TL$(TL)".  ";: IF TL <2  THEN  PRINT : GOSUB 56: GOTO 190
  34. 120  PRINT "Exits: ";:F = 0: GOSUB 8800
  35. 125  IF   NOT V%(RO)  THEN V%(RO) = 1:R = RO: GOSUB 45
  36. 130  IF A%(67,4) = RO  THEN  GOSUB 1300
  37. 135  IF M%(29,5) = RO  THEN  IF M%(29,0) = 1  THEN  GOSUB 1400
  38. 140 M3 = 0:B% = NM:D% = RO: FOR M = 1 TO NM:C% = M: & A,D%,M%(C%,5),C%,B%: IF   NOT C%  THEN M = 999: NEXT : GOTO 160
  39. 145 M = C%:M2 = 0: IF   NOT M%(M,0)  THEN M%(M,0) = 1:R = M +600: GOSUB 45:M2 = 1
  40. 150  IF M <6  THEN  NEXT : GOTO 160
  41. 152 M3 = 1: IF M2  THEN  PRINT "  ";
  42. 154  IF M%(M,3) >1  THEN  PRINT M%(M,3)" "M$(M)"S are here."
  43. 156  IF M%(M,3) = 1  THEN  PRINT M$(M)" is here."
  44. 158  IF M2  THEN M2 = 0: GOSUB 56:M3 = 0: NEXT : GOTO 160
  45. 159  GOSUB 52: NEXT 
  46. 160  IF M3  THEN M3 = 0: GOSUB 51: IF TL < >3  OR (LY >1  AND T(1))  THEN 180
  47. 162 B% = NZ:D% = RO: FOR A = 1 TO NZ:C% = A: & A,D%,A%(C%,4),C%,B%: IF   NOT C%  THEN A = 999: NEXT : GOTO 180
  48. 165 A = C%:M2 = 0: IF   NOT A%(A,0)  THEN A%(A,0) = 1:R = A +200: GOSUB 45:M2 = 1: PRINT " - ";
  49. 170 M3 = 1: PRINT "You see "A$(A)".": GOSUB 52: IF M2  THEN  GOSUB 51:M3 = 0
  50. 175 C% = C% +1: NEXT 
  51. 180  IF M3  THEN M3 = 0: GOSUB 51
  52. 182  IF MD = 5  OR T(2) = 1  OR TL <2  THEN 190
  53. 184  FOR M = 1 TO 5: IF M%(M,5) < >RO  THEN  NEXT : GOTO 190
  54. 186  PRINT M$(M);" ";: ON MD GOSUB 31000,35000,33000,34000:M3 = 1: IF MD < >2  THEN  PRINT P$;".": GOSUB 52
  55. 188  NEXT 
  56. 190  IF M3  THEN M3 = 0: GOSUB 51
  57. 191  IF DI  THEN 300
  58. 192  IF H%(7) >1  THEN  IF RO = 43  THEN  PRINT "'Get off the island!' screams the High Priest from below.": GOSUB 56
  59. 195  IF M%(7,5) = RO  THEN  IF M%(7,3) = 1  AND   NOT H%(1)  AND   NOT DI  THEN  PRINT D$"CHAIN CT.MAIN.PGM.2,@1000"
  60. 196  IF RO = 45  OR RO = 47  THEN  IF   NOT H%(6)  THEN H%(6) = 1: IF M%(3,5) = RO  THEN R = 439: GOSUB 45
  61. 197  IF RO = 42  AND H%(7) >1  THEN RD%(4) = 0: IF H%(7) = 2  THEN H%(7) = 3: FOR R = 445 TO 446: GOSUB 45: NEXT 
  62. 200  IF NL  AND AL  THEN  PRINT "Torches unneeded.  Extinguished.": GOSUB 56:A%(6,8) = 0:A%(9,8) = 0:AL = 0:TL = NL
  63. 205  IF M%(30,5) = RO  AND T(1) = 1  THEN  GOSUB 59:R = 460: GOSUB 45:T(1) = 0: GOTO 100
  64. 206  IF A%(67,4) = RO  THEN  IF HK >4  AND   NOT H%(9)  THEN H%(9) = 1: GOSUB 1998
  65. 207  IF M%(29,5) = RO  THEN  IF (RO = 28  AND KK >14)  OR (RO < >28  AND KK >4)  THEN  GOSUB 1985
  66. 208  IF K%(4) = 1  THEN K%(4) = 2: PRINT "You close the gate.": GOSUB 56
  67. 210 DF = 1:H = 16:IW = 50: PRINT "  Your action? ";: GOSUB 60:L = 0
  68. 220  IF  LEFT$(A$,1) = " "  THEN A$ =  MID$ (A$,2): GOTO 220
  69. 230  IF A$ = ""  THEN A$ = CZ$: VTAB  PEEK(37): HTAB 16: PRINT A$
  70. 235  PRINT : IF A$ = ""  THEN 275
  71. 240 CZ$ = A$: FOR A = 2 TO  LEN(A$): IF  MID$ (A$,A,1) < >" "  THEN  NEXT 
  72. 250 V$ =  LEFT$(A$,A -1):S$ =  MID$ (A$,A +1)
  73. 260  IF  LEFT$(S$,1) = " "  THEN S$ =  MID$ (S$,2): GOTO 260
  74. 270 SL =  LEN(V$): FOR A = 1 TO ND: IF  LEFT$(C$(A),SL) = V$  THEN C = A:A = 999: NEXT : GOTO 290
  75. 272  NEXT :F = 0: FOR A = ND +1 TO NC: IF  LEFT$(C$(A),SL) = V$  THEN C = A:F = F +1: IF C$(A) = V$  THEN F = 1:A = 999
  76. 273  NEXT 
  77. 275  IF F < >1  THEN  PRINT : FOR R = 401 TO 402: GOSUB 45: NEXT : GOTO 210
  78. 280  IF M%(9,5) = RO  THEN M%(9,5) = 0:T(1) = 0: PRINT "The Ghost vanishes!": GOTO 99
  79. 290  ON C GOTO 3000,3000,3000,3000,3000,3000,8000,6500,12000,4000,5000,9000,17000,10000,7000,11000
  80. 295  ON C -16 GOTO 6000,23000,19000,20000,22000,28000,18000,29000,18900,16000,26000
  81. 296  ON C -27 GOTO 30000
  82. 300  REM  MONSTERS ATTACK
  83. 310  IF   NOT T(1)  THEN 500
  84. 315 B% = 39:D% = RO: FOR M = 1 TO 39::C% = M: & A,D%,M%(C%,5),C%,B%: IF   NOT C%  THEN M = 999: NEXT : GOTO 340
  85. 320 M = C%: IF M <6  THEN  NEXT : GOTO 340
  86. 321  IF M%(M,14) = 4  THEN  GOSUB 1100
  87. 322  IF M = 39  AND A%(67,4) = RO  THEN  NEXT : GOTO 340
  88. 323  IF M = 39  THEN  IF M%(39,13)/M%(39,1) >.5  THEN  PRINT "LICH casts a GATE spell!": GOSUB 56:R = 267: GOSUB 45:A%(67,0) = 1:A%(67,4) = RO: NEXT : GOTO 100
  89. 325 M5 = 2 *M%(M,4): IF M5 >M%(M,3)  THEN M5 = M%(M,3)
  90. 330 OF = M: FOR MC = 1 TO M5: GOSUB 2000: GOSUB 7400: NEXT 
  91. 335  NEXT 
  92. 340  IF M%(2,5) < >RO  THEN 360
  93. 345  IF   NOT TL  THEN 500
  94. 350  GOSUB 2500: IF M%(DF,4) = 1  THEN 500
  95. 355 OF = 2: GOSUB 7200: IF M%(DF,4) = 2  AND M%(1,5) = RO  THEN 500
  96. 360  IF M%(3,5) < >RO  THEN 400
  97. 365  IF   NOT T(1)  THEN 500
  98. 370  IF HK >9  THEN  IF   NOT H%(7)  THEN H%(7) = 1: PRINT "The cleric turns to you.": GOSUB 56:R = 444: GOSUB 45
  99. 380  GOSUB 2800: GOSUB 2500: IF   NOT H  THEN OF = 3: GOSUB 7200
  100. 390  IF M%(DF,4) = 2  THEN 500
  101. 400  IF M%(4,5) < >RO  THEN 430
  102. 405  IF   NOT T(1)  THEN 500
  103. 410  GOSUB 2500: IF M%(DF,4) = 3  THEN  IF M%(1,5) = RO  AND M%(2,5) = RO  AND M%(3,5) = RO  THEN 500
  104. 415 OF = 4:M = 4: IF DF = 28  THEN  IF RH%(4) = 15  OR LH%(4) = 15  THEN UH = UH +1: IF UH >1  THEN A = 15:S = 5:C = SP%(S,4): GOSUB 11500: GOTO 500
  105. 420  GOSUB 7200
  106. 425  IF M%(DF,4) = 3  THEN 500
  107. 430  IF M%(5,5) < >RO  THEN 450
  108. 435  IF   NOT T(1)  THEN 500
  109. 440  GOSUB 2500: IF M%(DF,4) = 4  THEN  IF T(2) = 5  THEN 500
  110. 445 OF = 5: GOSUB 7200
  111. 450  REM 
  112. 500  REM <CTRL-0x0a><CTRL-0x0a>SPECIAL EVERY-ROUND STUFF<CTRL-0x0a>
  113. 505  IF TL <3  AND AL <3  THEN  IF A%(9,8) = 0  THEN DF =  ABS(A%(9,4)): IF DF >1  AND DF <6  THEN  IF RH%(DF) = 9  OR LH%(DF) = 9  THEN A = 9: GOSUB 19100
  114. 510  IF T(1)  OR   NOT DI  THEN 600
  115. 520  REM  TRY TO RESURRECT
  116. 530  IF M%(3,5) < >RO  OR A%(14,4) < > -3  THEN Z = 1: GOTO 32000
  117. 540 S = 4:C = SP%(4,4): IF A%(14,7) <C  THEN Z = 1: GOTO 32000
  118. 550 A = 14:DF = 1:M = 3:DI = 0: GOSUB 59: HOME :L = 0: GOTO 11400
  119. 600 LK = 0: FOR M = 1 TO 5: IF M%(M,4) = 0  THEN  NEXT : GOTO 650
  120. 610  IF M%(M,5) < >RO  THEN  NEXT : GOTO 650
  121. 620 M%(M,4) = M%(M,4) +1: IF M%(M,4) <5  OR M%(M,4)/2 < > INT(M%(M,4)/2)  THEN  NEXT : GOTO 650
  122. 630  PRINT M$(M)" is weakening.": GOSUB 52:M%(M,13) = M%(M,13) +1:LK = 1: IF M%(M,13) > = M%(M,1)  OR M%(M,4) >35  THEN DF = M: PRINT : GOSUB 7700
  123. 640  NEXT 
  124. 650  IF LK  THEN  GOSUB 56
  125. 690  IF DI  THEN MD = 5:LY = 3: GOTO 100
  126. 700  IF A%(6,8)  THEN A = 6: GOSUB 900
  127. 710  IF A%(9,8)  THEN A = 9: GOSUB 900
  128. 750  IF A%(20,8) = 5  THEN A%(20,7) = A%(20,7) +1 +(T(1) >0): IF A%(20,7) >3  THEN  IF M%(1,13)  THEN A%(20,7) = 0:D2 =  -1: PRINT " *** You are regenerating!  ";:DF = 1: GOSUB 7650
  129. 800  IF M%(12,5) = RO +100  THEN M%(12,5) = RO: GOSUB 3600
  130. 890  GOTO 100
  131. 900 A%(A,5) = A%(A,5) -1
  132. 910  IF A%(A,5) < >0  THEN  RETURN 
  133. 950  REM  LIGHT GOES OUT
  134. 960  PRINT A$(A);" goes out!":A%(A,8) = 0: GOSUB 56
  135. 970 AL = AL -1 -1 *(A = 6): IF QQ = 2  THEN QQ = 0: RETURN 
  136. 980 TL = NL +AL
  137. 990  RETURN 
  138. 1100  REM  UNDEAD
  139. 1110  IF M%(M,0) = 2  THEN  RETURN 
  140. 1120  PRINT D$"CHAIN CT.MAIN.PGM.2,@1130"
  141. 1200  REM  HEAL BLACK CLOAK
  142. 1210  IF A%(20,8) = 4  THEN  PRINT " *** Holy Light negates Darkness!  Cloak turns grey!":M%(1,7) = M%(1,7) -5:A%(20,8) = 1:CL%(4) = 1: POP : GOTO 56
  143. 1220  RETURN 
  144. 1300  REM  OUT OF GATE
  145. 1310  IF T(1) >8  THEN  RETURN 
  146. 1320  IF T(1) = 1  THEN 1350
  147. 1330  IF  INT( RND(1) *100) >(25 +30 *T(1) = 2)  THEN  RETURN 
  148. 1350 M = 37: IF  INT( RND(1) *100) >65  THEN M = 38
  149. 1360 M%(M,5) = RO:M%(M,3) = M%(M,3) +1
  150. 1370 T(1) = T(1) +1: IF M%(M,0)  THEN  PRINT "ANOTHER "M$(M)" EMERGES THROUGH THE GATE!": GOSUB 56
  151. 1375  IF   NOT M%(M,0)  THEN R = M +600: GOSUB 45:M%(M,0) = 1
  152. 1380  IF T(1) = 2  THEN 1350
  153. 1390  RETURN 
  154. 1400  REM  KOBOLDS
  155. 1410  IF M%(29,3) = 30  OR E9  THEN E9 = 0: RETURN 
  156. 1420 X =  INT( RND(1) *10) +1: PRINT X" MORE KOBOLDS CLOSE IN!"
  157. 1430 M%(29,3) = M%(29,3) +X:T(1) = T(1) +X
  158. 1440  GOTO 56
  159. 1500  IF RH%(3) = 8  OR LH%(3) = 8  THEN A = 8: GOTO 1550
  160. 1510  IF LH%(3) = 14  OR RH%(3) = 14  THEN A = 14: GOTO 1550
  161. 1520  RETURN 
  162. 1550 X = 75 -15 *(OF = 32) -25 *(OF = 34  OR OF = 31) -50 *(OF = 38) -40 *(OF = 39)
  163. 1560  REM  X=INT(X*A%(A,7)/100)
  164. 1570  IF  INT( RND(1) *100) +1 >X  THEN  RETURN 
  165. 1580  PRINT "turned!": POP : GOTO 56
  166. 1985 X = 29 -RO: IF K%(X)  THEN  RETURN 
  167. 1986 K%(X) = 1
  168. 1998  PRINT "'Let's get out of here!'": GOTO 56
  169. 1999  GOSUB 56: PRINT " *** Cloak turns grey!": GOSUB 56:CL%(C1) = 1:A%(20,8) = 1: RETURN 
  170. 2000  REM  TARGETING
  171. 2010  ON M%(OF,4) GOTO 2100,2200,2300,2400,2450
  172. 2100 DF = 1: IF M = 25  THEN M%(25,4) = 5
  173. 2110  IF M%(1,5) = RO  THEN  RETURN 
  174. 2200  IF  INT( RND(1) *100) >55  AND T(2) >1  THEN 2250
  175. 2210 DF = 1
  176. 2220  IF M%(DF,5) < >RO  THEN DF = DF +1: GOTO 2220
  177. 2225  IF M = 16  THEN T(1) = 0:M%(16,5) = 0: RETURN 
  178. 2230  RETURN 
  179. 2250 DF = 2 +(M%(1,5) < >RO)
  180. 2260  IF M%(DF,5) < >RO  THEN DF = DF +1: GOTO 2260
  181. 2270  RETURN 
  182. 2300 R =  INT( RND(1) *10) +1:A = 1 +(R >4) +(R >7)
  183. 2310  ON A GOTO 2210,2320,2350
  184. 2320  IF T(2) = 1  THEN 2210
  185. 2330  GOTO 2250
  186. 2350  IF T(2) = 2  THEN 2250
  187. 2360 DF = 3 +(M%(1,5) < >RO)
  188. 2370  IF M%(DF,5) < >RO  THEN DF = DF +1: GOTO 2370
  189. 2380  RETURN 
  190. 2400 Q = 4 +(T(2) < >5):DF =  INT( RND(1) *Q) +1
  191. 2410  IF M%(DF,5) < >RO  THEN 2400
  192. 2420  RETURN 
  193. 2450 DF =  INT( RND(1) *5) +1: IF M%(DF,5) < >RO  THEN 2450
  194. 2460  RETURN 
  195. 2500  REM  GOOD GUYS TARGET
  196. 2510 B% = NM:D% = RO: FOR M = 6 TO NM:C% = M: & A,D%,M%(C%,5),C%,B%: IF   NOT C%  THEN M = 999: NEXT : RETURN 
  197. 2520 M = C%: IF M <6  THEN  NEXT : RETURN 
  198. 2530 DF = M:M = 999: NEXT : RETURN 
  199. 2800  REM  CLERIC HEALS
  200. 2810 H = 0: IF LH%(3) = 14  OR RH%(3) = 14  THEN  IF A%(14,7) >35  THEN 2900
  201. 2820  IF LH%(3) < >8  AND RH%(3) < >8  THEN  RETURN 
  202. 2830  IF A%(8,7) <36  THEN  RETURN 
  203. 2840 DF = 0: FOR M = 1 TO 5: IF M%(M,5) < >RO  THEN 2860
  204. 2850 V = M%(M,13) *5/M%(M,1) +2 -(M%(M,13) = 0): IF V >4  OR (M = 4  AND V >3)  THEN DF = M:M = 999
  205. 2860  NEXT : IF   NOT DF  THEN  RETURN 
  206. 2870 A = 8:H = 1:S = 1:M = 3:C = SP%(1,4): GOTO 11500
  207. 2900  REM  HOLY SYMBOL
  208. 2920 DF = 0: FOR M = 1 TO 5: IF M%(M,5) < >RO  THEN 2940
  209. 2930  IF M%(M,1) -M%(M,13) <6  THEN DF = M:H = H +1
  210. 2940  NEXT : IF   NOT DF  THEN  RETURN 
  211. 2950  IF H = 1  THEN S = 3:M = 3
  212. 2960  IF H >1  THEN S = 2:M = 3
  213. 2970 A = 14:C = SP%(S,4): GOTO 11500
  214. 3000  REM <CTRL-0x0a><CTRL-0x0a>MOVE<CTRL-0x0a>
  215. 3010  IF DF < >1  THEN  PRINT "He's following YOU!": GOTO 98
  216. 3020 D = C:R2 = RD%(D): IF   NOT TL  THEN 100
  217. 3030  IF   NOT T(1)  THEN 3060
  218. 3040  IF R2 = R3  THEN  PRINT "You'll have to order a retreat!": GOTO 99
  219. 3050  PRINT "Your enemies block the way!": GOTO 99
  220. 3060  IF R2 = 99  THEN  PRINT "Are you ready to abandon the castle?  ";: GOSUB 70: PRINT A$: PRINT :R2 = 0: IF A$ = "Y"  THEN Z = 0:DI = 0: GOTO 32000
  221. 3070  IF R2 >500  THEN 3400
  222. 3080  IF R2 >0  THEN 3500
  223. 3200  IF R2 =  -98  THEN  PRINT "Your torches will go out if you try to swim.": GOTO 98
  224. 3290  PRINT "You can't go that way.":V%(RO) = 0: GOTO 99
  225. 3400  REM <CTRL-0x0a><CTRL-0x0a>GATE/DOOR
  226. 3410 A = R2 -500: IF A%(A,8)  THEN R2 = A%(A,5): GOTO 3500
  227. 3420  IF A%(A,4) < >RO  THEN 3290
  228. 3430  PRINT "The "A$(A)" blocks the way!": GOTO 99
  229. 3500  REM <CTRL-0x0a><CTRL-0x0a>GO<CTRL-0x0a>
  230. 3505  IF M%(39,5) = RO +100  THEN M%(39,5) = RO: GOSUB 3600: GOTO 100
  231. 3510  IF RO = 36  AND R2 = 36  THEN  IF C = 4  THEN H%(3) = H%(3) +1: IF H%(3) = 3  THEN H%(3) = 0:R2 = 37
  232. 3515  IF RO = 36  AND R2 = 36  THEN  IF C < >4  THEN H%(3) = 0
  233. 3520  IF M%(11,5) = RO +100  THEN M%(11,5) = RO: GOSUB 3600: GOTO 140
  234. 3530 R3 = RO:RO = R2: GOSUB 3600
  235. 3532  IF R3 < >50  THEN 3540
  236. 3534  FOR M = 28 TO 39
  237. 3536  IF M%(M,5) <0  THEN M%(M,5) =  ABS(M%(M,5))
  238. 3538  NEXT :A%(51,4) = 0
  239. 3540  PRINT D$;"READ"ER$",R"RO:NX = 0: INPUT RN$: FOR X = 1 TO 6: INPUT RD%(X): NEXT : INPUT RD%(0): PRINT D$
  240. 3550 NL = 3 *(RO <14  OR RO >48):TL = NL +AL *(NL = 0)
  241. 3555  FOR M = 1 TO 5:M%(M,14) = 0: NEXT 
  242. 3560  FOR A = 0 TO 6:SQ%(A) = 0: NEXT 
  243. 3580  IF BT  THEN A%(44,4) = RO
  244. 3585  IF RO = 38  OR RO = 43  THEN BT = 0
  245. 3586  FOR M = 28 TO 30: IF M%(M,5) = RO  THEN LY = 1
  246. 3587  NEXT : IF RO = 44  THEN LY = 1
  247. 3588  IF K%(4) = 1  THEN RD%(6) = 525:A%(25,8) = 0
  248. 3590 X = 1 +(RO = 17  OR   NOT TL): ON X GOTO 500,99
  249. 3600  REM <CTRL-0x0a><CTRL-0x0a>ENEMY?<CTRL-0x0a>
  250. 3610 T(1) = 0:T(2) = 0
  251. 3620  FOR M = 1 TO 39
  252. 3625  IF H%(7) = 2  THEN  IF M = 3  THEN 3670
  253. 3630  IF M <6  THEN  IF M%(M,5) = R3  THEN M%(M,5) = RO
  254. 3640  IF M%(M,5) < >RO  THEN  NEXT : RETURN 
  255. 3650  IF M >5  THEN T(1) = T(1) +M%(M,3): NEXT : RETURN 
  256. 3660 T(2) = T(2) +1
  257. 3670  NEXT : RETURN 
  258. 4000  REM <CTRL-0x0a><CTRL-0x0a>GET<CTRL-0x0a>
  259. 4005  IF T(1)  THEN 88
  260. 4010  GOSUB 4899
  261. 4020 HA = RO: GOSUB 4805: IF   NOT F  THEN 94
  262. 4030  IF A%(A,3) >900  THEN  PRINT A$(A);" can't be moved.": GOTO 98
  263. 4040  IF A%(A,3) +WT%(DF) >MX%(DF)  THEN  PRINT A$(A);" weighs too much for ";M$(DF);".": GOTO 98
  264. 4100  IF A = 38  THEN  IF M%(16,5) = RO +100  THEN M%(16,5) = RO: GOSUB 3600: GOTO 100
  265. 4110  IF A = 43  THEN  IF M%(23,5) = RO +100  THEN M%(23,5) = RO: GOSUB 3600: GOTO 100
  266. 4140  PRINT M$(DF);" picks up ";A$(A);".": GOSUB 56
  267. 4150 WT%(DF) = WT%(DF) +A%(A,3):A%(A,4) =  -DF
  268. 4200 M = DF: IF A%(A,2) = 10  THEN 26020
  269. 4250  GOTO 9180
  270. 4600  REM <CTRL-0x0a><CTRL-0x0a>SYNONYMS<CTRL-0x0a>
  271. 4610 SL =  LEN(S$)
  272. 4615  IF RO = 45  OR RO = 47  THEN SY$ = "NORTH WALL":Q$ = "NORTHERN WALL": GOSUB 4690
  273. 4620  IF RO = 18  THEN SY$ = "ORC CORPSE":Q$ = "IRON KEY": GOSUB 4690
  274. 4630  IF RO = 13  THEN SY$ = "STAINED GLASS WINDOW":Q$ = "LEVER": GOSUB 4690
  275. 4640  IF RO = 22  THEN SY$ = "SKELETONS":SY = 32: GOSUB 4680
  276. 4650  IF RO = 39  THEN SY$ = "POOL":Q$ = "MOUTHSTONE": GOSUB 4690
  277. 4660  IF RO = 12  THEN SY$ = "CLOSET":Q$ = "WARDROBE": GOSUB 4690
  278. 4665  IF RO = 37  THEN SY$ = "IRON BAR":Q$ = "WELL": GOSUB 4690
  279. 4675  RETURN 
  280. 4680  IF  LEFT$(SY$,SL) = S$  OR  RIGHT$(SY$,SL) = S$  THEN S$ = A$(SY): POP 
  281. 4685  RETURN 
  282. 4690  IF  LEFT$(SY$,SL) = S$  OR  RIGHT$(SY$,SL) = S$  THEN S$ = Q$: POP 
  283. 4695  RETURN 
  284. 4700  REM <CTRL-0x0a><CTRL-0x0a>MONS SEARCH<CTRL-0x0a>
  285. 4705 WH = RO:HA = RO
  286. 4710 F = 0:C% = 0:D% = 0: & S,S$,M$,C%: IF   NOT C%  THEN  IF  LEN(A$) >1  AND  RIGHT$(S$,1) = "S"  THEN S$ =  LEFT$(S$, LEN(S$) -1): GOTO 4710
  287. 4715  IF   NOT C%  THEN  RETURN 
  288. 4720 D% = C%:X = C%: IF M%(X,5) < >HA  AND M%(X,5) < >WH  THEN 4770
  289. 4750 F = F +1: IF F = 1  THEN M = X
  290. 4760  IF S$ = M$(X)  THEN M = X: RETURN 
  291. 4770  & R: IF C% < >D%  THEN 4720
  292. 4780  RETURN 
  293. 4800  REM  <CTRL-0x0a><CTRL-0x0a>ARTIF SEARCH<CTRL-0x0a>
  294. 4801 HA =  -DF:WH = HA:EM = HA: GOTO 4810
  295. 4804 HA =  -DF
  296. 4805 WH = RO:EM = RO +300
  297. 4810  GOSUB 4600:F = 0:C% = 0:D% = 0: & S,S$,A$,C%: IF   NOT C%  THEN  RETURN 
  298. 4820  FOR X = 1 TO NA
  299. 4830 D% = C%:A2 = A%(C%,4): IF A2 = WH  OR A2 = HA  OR A2 = EM  THEN F = F +1:A = C%: IF S$ = A$(C%)  THEN X = 999: NEXT : RETURN 
  300. 4850  & R: IF C% < >D%  THEN  NEXT : RETURN 
  301. 4860 X = 999: NEXT : IF F >1  THEN  PRINT : PRINT "Which "S$" do you want?":F = 0: POP : GOTO 99
  302. 4870  RETURN 
  303. 4898  IF TL <3  THEN  RETURN 
  304. 4899  IF TL <2  THEN  RETURN 
  305. 4900  REM <CTRL-0x0a><CTRL-0x0a>GET S$<CTRL-0x0a>
  306. 4905  IF   NOT TL  THEN 100
  307. 4910  IF S$ = ""  THEN  PRINT : PRINT C$(C)" who or what?";:H =  LEN(C$(C)) +15: GOSUB 60:S$ = A$: PRINT : GOTO 4900
  308. 4920  RETURN 
  309. 5000  REM <CTRL-0x0a><CTRL-0x0a>DROP<CTRL-0x0a>
  310. 5010  GOSUB 4910:WH =  -DF:HA = WH:EM = WH: GOSUB 4810: IF   NOT F  THEN 91
  311. 5030  PRINT M$(DF);" drops ";A$(A);".": GOSUB 56: GOSUB 5100: GOTO 300
  312. 5100 A%(A,4) = RO
  313. 5110 WT%(DF) = WT%(DF) -A%(A,3)
  314. 5160  IF A = RH%(DF)  THEN  GOTO 5200
  315. 5170  IF A = LH%(DF)  THEN  GOTO 5400
  316. 5180  RETURN 
  317. 5200  REM  DROP RH
  318. 5210  IF A%(A,2) < >2  THEN 5280
  319. 5220 M%(DF,10) = M%(DF,10) -A%(A,6):M%(DF,9) = 0
  320. 5230 M%(DF,11) = 1:M%(DF,12) = 3 +(DF <3)
  321. 5240 M%(DF,8) = 2:M%(DF,6) = 0
  322. 5280 RH%(DF) = 0
  323. 5290  GOTO 5500
  324. 5400  REM  DROP LH
  325. 5410  IF DF = 2  AND A = 7  THEN M%(2,6) = 0:M%(2,7) = M%(2,7) -10
  326. 5480 LH%(DF) = 0
  327. 5500  IF QQ = 1  THEN QQ = 0: RETURN 
  328. 5510  IF A%(A,2) < >5  OR   NOT A%(A,8)  THEN  RETURN 
  329. 5520  IF QQ  THEN  PRINT "Light from "A$(A)" is fading.": GOSUB 56:A%(A,8) = 0: GOTO 970
  330. 5590  GOTO 950
  331. 6000  REM <CTRL-0x0a><CTRL-0x0a>EXAMINE<CTRL-0x0a>
  332. 6010  GOSUB 4900: GOSUB 4804: IF   NOT F  THEN  PRINT M$(DF);" sees nothing special.": GOTO 98
  333. 6020  IF A%(A,4) = EM  THEN A%(A,4) = RO
  334. 6030  IF DF < >1  THEN  IF A%(A,0) = 1  THEN 6037
  335. 6035 R = A +200: GOSUB 45:A%(A,0) = 1
  336. 6037  IF A%(A,2) = 6  THEN  PRINT A$(A)" has about "A%(A,6)" uses left.": GOSUB 56
  337. 6040  FOR Z = 1 TO NA
  338. 6050  IF A%(Z,4) = A +800  THEN A%(Z,4) = RO:R = Z +200: GOSUB 45:A%(Z,0) = 1
  339. 6060  NEXT 
  340. 6070  IF DF < >3  THEN 6100
  341. 6080  IF A = 13  THEN R = 415: GOSUB 45
  342. 6090  IF A = 14  THEN R = 416: GOSUB 45
  343. 6100  IF DF < >4  THEN 300
  344. 6110  IF A = 12  THEN R = 417: GOSUB 45
  345. 6120  IF A = 15  THEN R = 418: GOSUB 45
  346. 6130  IF A = 20  THEN R = 419: GOSUB 45: FOR R = 429 TO 430: GOSUB 45: NEXT 
  347. 6140  IF A = 52  OR A = 57  THEN R = 453: GOSUB 45
  348. 6150  IF A = 66  THEN R = 431: GOSUB 45:A%(A,8) = 1
  349. 6160  IF A = 64  THEN R = 440: GOSUB 45:A%(A,8) = 1
  350. 6190  GOTO 300
  351. 6500  REM <CTRL-0x0a><CTRL-0x0a>LOOK<CTRL-0x0a>
  352. 6510 V%(RO) = 0: GOTO 300
  353. 7000  REM <CTRL-0x0a><CTRL-0x0a>ATTACK<CTRL-0x0a>
  354. 7005  IF DF < >1  THEN  PRINT M$(DF);" will attack when he can.": GOTO 98
  355. 7010  GOSUB 4900: GOSUB 4700: IF   NOT F  THEN 94
  356. 7020  IF M <6  OR M = 40  THEN 94
  357. 7100  REM  CHAR ATTACKS
  358. 7110  IF M = 39  THEN  IF T(1) >1  THEN  PRINT "You'll have to fight through the gated defenders!": GOTO 99
  359. 7180 OF = 1:DF = M: GOSUB 7200
  360. 7190  GOTO 300
  361. 7200 HT = 100 -M%(DF,7) +M%(OF,10)
  362. 7210  IF DF = 26  THEN  IF A%(49,6) = 1  AND LH%(OF) = 49  THEN HT = 75
  363. 7220 D = M%(OF,11):S = M%(OF,12)
  364. 7250 AC = M%(DF,2): IF OF = 3  AND M%(DF,14) = 4  THEN AC =  INT(AC/2)
  365. 7260 AA = M%(OF,14) *(M%(DF,14) = 4)
  366. 7270  IF AA > =  INT( RND(1) *100) +1  THEN  PRINT M$(OF)" freezes!": GOTO 56
  367. 7280  IF DF = 7  THEN  IF M%(7,3) = 1  AND   NOT H%(1)  THEN H%(1) = 1: IF   NOT DI  THEN H%(1) = 0: POP : GOTO 191
  368. 7285  IF DF = 30  THEN T(1) = 2
  369. 7290  GOTO 7500
  370. 7400  REM  MONSTER PREP
  371. 7410 HT = 100 -M%(DF,7) +M%(OF,10)
  372. 7420 AC = M%(DF,2):AA = 0
  373. 7430 D = M%(OF,11):S = M%(OF,12)
  374. 7500  REM  GENERAL ATTACK
  375. 7510 B$ = BV$(M%(OF,9), INT( RND(1) *3)):Z$ = M$(OF)
  376. 7520  REM  SURPRISE
  377. 7530  PRINT Z$" "B$" "M$(DF)"!": GOSUB 52: PRINT " --- ";
  378. 7540 RR =  INT( RND(1) *100) +1: IF RR >HT  THEN 7550
  379. 7545 HT = HT -AA: IF RR < = HT  THEN 7600
  380. 7546  PRINT "too hesitant!": GOTO 56
  381. 7550 B = M%(OF,8):A = M%(DF,6)
  382. 7560  IF DF = 39  THEN  PRINT "stopped by spell!": GOTO 56
  383. 7580  PRINT DF$(A,B)
  384. 7590  GOTO 56
  385. 7600  REM  HIT
  386. 7605  IF DF = 3  THEN  IF M%(OF,14) = 4  THEN  GOSUB 1500
  387. 7610 D2 = 0
  388. 7615  FOR D3 = 1 TO D:D2 = D2 + INT( RND(1) *S) +1: NEXT :D2 = D2 -AC: IF D2 <0  THEN D2 = 0
  389. 7620  IF D2  AND OF = 1  THEN  IF A%(20,8) = 3  AND DF <31  THEN  PRINT "SIZZLE! ";:D2 = D2 + INT( RND(1) *3) +1
  390. 7625  IF OF = 4  THEN  IF Z$ = "LIGHTNING BOLT"  OR (RH%(4) = 15  AND  INT( RND(1) *100) <A%(15,7))  THEN  PRINT "ZZZAAAPPP! ";: IF Z$ < >"LIGHTNING BOLT"  THEN A%(15,7) = A%(15,7) -1:D2 = D2 + INT( RND(1) *6) +1
  391. 7630  IF OF < >1  AND DF < >1  THEN 7635
  392. 7631 C1 = A%(20,8):C2 = M%(DF,14): IF DF = 1  THEN C2 = M%(OF,14)
  393. 7632  IF C1 = 2  AND C2 = 1  THEN  PRINT "AIR negates EARTH!":M%(1,2) = M%(1,2) -1: GOTO 1999
  394. 7633  IF C1 = 3  AND C2 = 3  THEN  PRINT "WATER douses FIRE!": GOTO 1999
  395. 7634  IF C1 = 5  AND C2 = 4  THEN  PRINT "DEATH banishes LIFE!":RG = 0: GOTO 1999
  396. 7635  IF D2 <1  THEN  PRINT "blow bounces off!": GOTO 56
  397. 7637  IF M%(OF,14) = 2  THEN  IF  RND(1) >.5  THEN  PRINT "POISON!  ";:M%(DF,4) = M%(DF,4) +1
  398. 7640  IF D2 +M%(DF,13) <M%(DF,1)  THEN 7650
  399. 7642  IF D2 <M%(DF,1)  OR DF <6  THEN  PRINT "the mortal blow!": GOSUB 56: GOTO 7699
  400. 7643  IF Z$ = "LIGHTNING BOLT"  OR RH%(OF) = 15  THEN  PRINT : GOSUB 56:Q = 6 -(DF = 31  OR DF = 33  OR DF = 36): GOTO 7645
  401. 7644  PRINT "a mighty stroke!": GOSUB 56:Q = M%(OF,9)
  402. 7645  PRINT " *** "M$(DF)" "CR$(Q)"!": GOSUB 56
  403. 7646  IF M%(5,5) = RO  THEN  IF  RND(1) >.5  AND   NOT SQ%(Q)  THEN SQ%(Q) = 1:R = 447 +Q -(Q = 6): GOSUB 45
  404. 7647  GOSUB 7800
  405. 7648  IF M%(DF,3) = 1  THEN 7720
  406. 7649 M%(DF,3) = M%(DF,3) -1:T(1) = T(1) -1: RETURN 
  407. 7650  PRINT M$(DF)" is ";
  408. 7655 M%(DF,13) = M%(DF,13) +D2
  409. 7660  IF M%(DF,13) <0  THEN M%(DF,13) = 0
  410. 7665  ON M%(DF,13) *5/M%(DF,1) +2 -(M%(DF,13) = 0) GOTO 7670,7675,7680,7685,7690,7695
  411. 7670  PRINT "in perfect health.": GOTO 56
  412. 7675  PRINT "a little banged up.": GOTO 56
  413. 7680  PRINT "hurting.": GOTO 56
  414. 7685  PRINT "in pain.": GOTO 56
  415. 7690  PRINT "gravely injured.": GOTO 56
  416. 7695  PRINT "mortally wounded.": GOTO 56
  417. 7699  PRINT " *** ";: IF OF <6  THEN  GOSUB 7800
  418. 7700  REM  DIES
  419. 7710  PRINT M$(DF)" is DEAD!": GOSUB 56
  420. 7720  IF DF <6  THEN 7750
  421. 7730 T(1) = T(1) -1:M%(DF,13) = 0:M%(DF,3) = M%(DF,3) -1: IF M%(DF,3)  THEN  RETURN 
  422. 7735 M%(DF,5) = 0: IF DF = 8  THEN A%(17,4) = RO
  423. 7740  IF DF = 31  OR DF = 33  THEN M%(DF +1,5) = RO: GOSUB 3600: POP : GOTO 100
  424. 7742  IF A%(67,4) = RO  THEN  IF T(1) = 1  THEN  POP : GOTO 130
  425. 7745 DF = DF +1: RETURN 
  426. 7750 T(2) = T(2) -1:M%(DF,5) = RO +500: IF DF < >1  THEN 7770
  427. 7755  IF OF = 16  THEN  PRINT "GLADIATOR fades away!":T(1) = 0:M%(16,5) = RO +100
  428. 7760 DI = 1: IF   NOT T(2)  OR   NOT T(1)  THEN Z = 3: GOTO 32000
  429. 7765  RETURN 
  430. 7770  IF   NOT T(2)  THEN Z = 2: GOTO 32000
  431. 7780  GOSUB 7900
  432. 7790  RETURN 
  433. 7800  REM  COUNT
  434. 7810  IF DF = 37  OR DF = 38  THEN HK = HK +1
  435. 7820  IF DF = 29  THEN KK = KK +1: IF KK = 15  THEN  PRINT "You've cut through to the other side!": GOSUB 56
  436. 7830 TB%(OF) = TB%(OF) +M%(DF,1):KB%(OF) = KB%(OF) +1
  437. 7840 TB%(0) = TB%(0) +M%(DF,1): RETURN 
  438. 7900  REM  ALLY DROPS STUFF
  439. 7910  FOR A = 1 TO NA
  440. 7920  IF A%(A,4) < > -DF  THEN  NEXT : RETURN 
  441. 7930  IF A%(A,1)  THEN 7980
  442. 7940  IF A%(A,2) = 6  THEN 7980
  443. 7950  IF A%(A,2) = 5  THEN QQ = 2: GOTO 7980
  444. 7960  IF A%(A,2) = 9  THEN  IF A%(A,5) <4  OR A%(A,5) = 7  THEN 7980
  445. 7970  GOTO 7990
  446. 7980  GOSUB 5100
  447. 7990  NEXT : RETURN 
  448. 8000  REM <CTRL-0x0a><CTRL-0x0a>FLEE<CTRL-0x0a>
  449. 8020  IF DF < >1  THEN  PRINT "'We must stay together at all times!'": GOTO 98
  450. 8025  IF M%(39,5) = RO  AND A%(67,4) < >RO  THEN M%(39,13) = M%(39,1) -10: GOTO 300
  451. 8030  IF M%(16,5) = RO  THEN M%(16,5) = RO +100:M%(16,0) = 0
  452. 8200  IF A%(67,4) = RO  THEN 8600
  453. 8220 F = 1: GOSUB 8800: IF BL  THEN 8900
  454. 8300  REM  ORCS
  455. 8400  IF M%(29,5) < >RO  THEN 8500: REM  KOBOLDS
  456. 8420  IF RO = 28  OR RO = 27  THEN KK = 0:R2 = RO -1:M%(29,5) = R2:E9 = 1: PRINT "Some Kobolds catch up with you!":M%(29,3) =  INT(.25 *M%(29,3)): GOSUB 56: GOTO 3500
  457. 8430 R = 455: GOSUB 45: IF M%(4,5) < >RO  OR A%(15,4) < > -4  THEN 8900
  458. 8440  FOR R = 456 TO 457: GOSUB 45: NEXT 
  459. 8450  PRINT "Do you give the (R)etreat order or (S)tay with Tolkien?  ";
  460. 8460  GOSUB 70: IF A$ < >"R"  AND A$ < >"S"  THEN 8460
  461. 8470  PRINT A$: PRINT : IF A$ = "S"  THEN 300
  462. 8480  PRINT "You reluctantly leave Tolkien behind and retreat.": GOSUB 56
  463. 8490 S = 6:M = 4:OF = 4: GOSUB 11510:R2 = 25:K%(4) = 1: GOTO 3500
  464. 8500 R2 = R3: GOTO 3500
  465. 8600  REM  GATE
  466. 8610  IF M%(3,5) < >RO  THEN  PRINT "'THERE IS NO ESCAPE...THEY WILL FOLLOW!' hisses the Lich.": GOTO 98
  467. 8620  IF HK <10  THEN  FOR R = 441 TO 443: GOSUB 45: NEXT : GOTO 100
  468. 8630  PRINT "As you leave, the cleric casts one last spell on you...": GOSUB 56
  469. 8640  FOR DF = 1 TO 5: IF DF < >3  AND M%(DF,5) = RO  THEN D2 =  -99: GOSUB 7650
  470. 8650  NEXT :R2 = 43:H%(7) = 2: GOTO 3500
  471. 8800  REM  EXITS
  472. 8810 BL = 0: IF   NOT T(1)  THEN 8840
  473. 8820  IF M%(11,5) = RO  OR M%(10,5) = RO  OR M%(24,5) = RO  OR M%(36,5) = RO  OR M%(19,5) = RO  THEN BL = 1
  474. 8830  IF M%(29,5) = RO  THEN  IF RO = 28  AND KK <11  THEN BL = 1
  475. 8840  IF F  THEN F = 0: RETURN 
  476. 8850  IF BL  THEN  PRINT "you're trapped!": GOTO 56
  477. 8860  IF T(1)  THEN  PRINT "retreat only.": GOTO 56
  478. 8865 LK = 0: FOR Z = 1 TO 6
  479. 8870  IF RD%(Z) <1  THEN 8895
  480. 8875  IF RD%(Z) >500  THEN A = RD%(Z) -500: IF A%(A,8) < >1  THEN 8895
  481. 8885  IF LK  THEN  PRINT ",";
  482. 8890  PRINT C$(Z);:LK = 1
  483. 8895  NEXT : PRINT ".": GOTO 56
  484. 8900  PRINT "You'll have to win the battle before you can move!": GOTO 99
  485. 8950  PRINT "You haven't cut a path through yet!": GOTO 99
  486. 9000  REM <CTRL-0x0a><CTRL-0x0a>GIVE<CTRL-0x0a>
  487. 9040  PRINT "Give what? ";:H = 12: GOSUB 60
  488. 9050 S$ = A$: GOSUB 4801: IF   NOT F  THEN 91
  489. 9060  PRINT "To whom?   ";: GOSUB 60:B$ = A$:A$ = S$
  490. 9070 S$ = B$: GOSUB 4700: IF   NOT F  THEN 96
  491. 9080  PRINT :L = 1: IF M = 40  AND A = 38  THEN 9130
  492. 9085  IF M >5  THEN  PRINT M$(M)" doesn't want it!": GOTO 98
  493. 9090  IF A%(A,3) +WT%(M) >MX%(M)  THEN  PRINT M$(M);" can't bear its weight.": GOTO 98
  494. 9100  IF A%(A,2) = 5  AND A%(A,8)  THEN  IF LH%(M)  THEN X1 = DF:X2 = A:DF = M:A = LH%(DF): GOSUB 5400:DF = X1:A = X2
  495. 9110  IF A%(A,2) = 5  AND A%(A,8)  THEN LH%(M) = A:QQ = 1
  496. 9130  PRINT M$(DF)" relinquishes "A$(A)".": GOSUB 5100
  497. 9150  IF M = 40  THEN 9900
  498. 9160 A%(A,4) =  -M:WT%(M) = WT%(M) +A%(A,3)
  499. 9170  PRINT M$(M);" takes possession of it.":DF = M
  500. 9180  IF M%(DF,13)/M%(DF,1) <.4  THEN 9190
  501. 9185  IF A%(A,2) = 6  AND A%(A,6) < >0  THEN  IF A%(A,8)  AND (A%(A,5) = 2  OR A%(A,5) = 3)  THEN  GOSUB 56: GOSUB 22050
  502. 9190  IF M%(DF,4)  THEN  IF A = 24  OR A = 66  THEN  IF A%(A,8)  AND A%(A,6)  THEN  GOSUB 56: GOSUB 22050
  503. 9195  GOTO 98
  504. 9900  GOSUB 56:R = 414: GOSUB 45:M%(40,5) = 0
  505. 9910 A%(38,6) = 10:A%(38,7) = 2:A%(38,8) = 4
  506. 9920  PRINT "Perhaps you should name the reforged sword: ";:H = 45:IW = 20: GOSUB 60
  507. 9940 L = 0: PRINT :A$(A) = A$: GOTO 300
  508. 10000  REM <CTRL-0x0a><CTRL-0x0a>INVEN<CTRL-0x0a>
  509. 10100  PRINT M$(DF)" is carrying:": GOSUB 56:LK = 0
  510. 10110 LK = 0: FOR A = 1 TO NA: IF A%(A,4) =  -DF -900  THEN  PRINT " "A$(A);" --> WORN";: GOTO 10180
  511. 10120  IF A%(A,4) < > -DF  THEN 10190
  512. 10130  PRINT " "A$(A);
  513. 10140  IF A%(A,2) = 5  THEN  PRINT " --> ";A%(A,7);" left";
  514. 10150  IF A%(A,2) = 6  THEN  PRINT " --> ";A%(A,6);" uses left";
  515. 10160  IF A = 8  OR A = 14  THEN  PRINT " --> ";A%(A,7);"% power";
  516. 10180 LK = 1: GOSUB 51
  517. 10190  NEXT : IF LK  THEN  GOSUB 51
  518. 10200  PRINT "Right hand: ";A$(RH%(DF)): GOSUB 52
  519. 10300  PRINT "Left hand:  ";A$(LH%(DF)): GOSUB 56
  520. 10400  PRINT "Encumbrance: "; INT(100 *WT%(DF)/MX%(DF));"%."
  521. 10500  GOTO 98
  522. 11000  REM  CAST
  523. 11010  GOSUB 4910:S = 0
  524. 11020  FOR X = 1 TO NS: IF S$ = SP$(X)  THEN S = X:X = 999
  525. 11030  NEXT : IF   NOT S  THEN 94
  526. 11040  IF DF < >SP%(S,1)  THEN 94
  527. 11050  IF S < >1  AND S < >7  THEN 11060
  528. 11052  IF RH%(DF) = 8  OR LH%(DF) = 8  THEN A = 8: GOTO 11070
  529. 11055  IF LH%(DF) = 14  OR RH%(DF) = 14  THEN A = 14: GOTO 11070
  530. 11060 A = SP%(S,2): IF A < >RH%(DF)  AND A < >LH%(DF)  THEN  PRINT M$(DF);" can't cast that with what he's holding.": GOTO 98
  531. 11070 C = SP%(S,4): IF C >A%(A,7)  THEN  PRINT A$(A);" doesn't have enough power.": GOTO 98
  532. 11071  IF S = 5  AND M%(39,5) = RO  THEN  PRINT "Tolkien does not respond.": GOTO 99
  533. 11072  IF S = 6  THEN  PRINT "'That would kill us all!'": GOTO 99
  534. 11075  IF S < >7  THEN 11080
  535. 11077  PRINT "'Are you sure we need to disturb the Gods?'  ";: GOSUB 70: PRINT A$: PRINT : IF A$ < >"Y"  THEN 99
  536. 11080  IF S <6  AND S < >2  THEN  GOTO 11450
  537. 11090  ON S GOTO 11100,11400,11100,11200,11300,11400,11400
  538. 11100  REM  HEAL/HEALTH
  539. 11110  GOSUB 4700: IF F = 0  OR M >5  THEN 89
  540. 11140 DF = M:M = OF: GOTO 11399
  541. 11200  REM  RESURRECT
  542. 11210 WH = RO +500:HA = RO: GOSUB 4710: IF F = 0  OR M >5  THEN 89
  543. 11220 DF = M:M = OF: GOTO 11399
  544. 11300  REM   LIGHTNING
  545. 11310  GOSUB 4700: IF F = 0  OR M = 40  OR M <6  THEN 89
  546. 11320 DF = M:M = OF
  547. 11399  PRINT 
  548. 11400  GOSUB 11500: GOTO 98
  549. 11450  PRINT "'On whom?' ";:H = 16:IW = 20: GOSUB 60:S$ = A$:OF = DF: IF S$ < >"ALL"  THEN 11090
  550. 11460 M = 3: PRINT : FOR DF = 1 TO 5
  551. 11470  IF M%(DF,5) < >RO  OR M%(DF,13) <5  THEN  NEXT : GOTO 300
  552. 11480  IF A%(A,7)  THEN  GOSUB 11500
  553. 11490  NEXT : GOTO 300
  554. 11500  IF   NOT DI  THEN  IF  INT( RND(1) *100) +1 >A%(A,7)  THEN  PRINT M$(M)" tries to cast a spell but fails.": GOTO 56
  555. 11505 A%(A,7) = A%(A,7) -C: IF A%(A,7) <0  THEN A%(A,7) = 0
  556. 11510  PRINT M$(M)" casts a "SP$(S)" spell!": GOSUB 56
  557. 11520  IF   NOT SP%(S,0)  THEN SP%(S,0) = 1:R = 431 +S: GOSUB 45: IF S = 4  THEN  FOR X = 1 TO 3000: NEXT 
  558. 11530  ON S GOTO 11550,11600,11650,11700,11750,11800,11850
  559. 11550  REM  HEAL
  560. 11555  IF DF = 1  THEN  GOSUB 1200
  561. 11560 D2 =  -8: PRINT " *** ";: GOTO 7650
  562. 11600  REM  GROUP HEAL
  563. 11610  FOR DF = 1 TO 5
  564. 11615  IF DF = 1  THEN  IF A%(20,8) = 4  THEN 11630
  565. 11620  IF M%(DF,13)  THEN D2 =  -8: GOSUB 7650: GOSUB 35020
  566. 11630  NEXT : GOTO 56
  567. 11650  REM  HEALTH
  568. 11655  IF DF = 1  THEN  GOSUB 1200
  569. 11660 D2 =  -99: PRINT " *** ";: GOTO 7650
  570. 11700  REM  RESURRECT
  571. 11710  FOR X = 1 TO 2000: NEXT 
  572. 11720  SPEED= 50: PRINT M$(DF)" OPENS HIS EYES!": SPEED= 255: GOSUB 56
  573. 11730  PRINT "'Ughhh...'": GOSUB 56
  574. 11740 M%(DF,13) = M%(DF,1) -1:M%(DF,5) = RO:M%(DF,3) = 1:D2 = 0: GOTO 7650
  575. 11750  REM  LIGHTNING
  576. 11760 HT = 100 *(DF < >26) -50 *(DF = 39):AC = 0
  577. 11770 Z$ = "LIGHTNING BOLT":B$ = "strikes":D = 4:S = 4
  578. 11780  GOTO 7520
  579. 11800  REM  ELECTRICAL STORM
  580. 11810 M%(4,5) = RO +500
  581. 11840  RETURN 
  582. 11850  REM   COMMUNE
  583. 11860  IF   NOT RD%(0)  THEN  PRINT "Your situation is too general for the Gods to offer any specific advice.": GOTO 56
  584. 11870 R = 460 +RD%(0): GOTO 45
  585. 12000  REM  FREE
  586. 12010  GOSUB 4900
  587. 12020  IF RO < >3  THEN 12100
  588. 12030  GOSUB 4700: IF F = 0  OR M < >7  OR M%(7,3) < >1  THEN 94
  589. 12040  REM 
  590. 12050 R = 423: GOSUB 45:T(1) = 0:M%(7,5) = 0: GOTO 300
  591. 12100  IF RO < >22  THEN 94
  592. 12110  GOSUB 4804: IF   NOT F  THEN 94
  593. 12120  IF A < >32  OR A%(32,8)  THEN 94
  594. 12130 A%(32,4) = 0: FOR R = 424 TO 425: GOSUB 45: NEXT 
  595. 12140  PRINT "The man disappears.": GOTO 98
  596. 16000  REM  SAY
  597. 16010  GOSUB 4910: PRINT "'"S$"!'": GOSUB 56: IF S$ = "BLACK"  THEN  IF A%(20,4) <0  THEN 16500
  598. 16020 M = 0:SL =  LEN(S$): FOR A = 2 TO 5
  599. 16030  IF  LEFT$(M$(A),SL) = S$  OR  RIGHT$(M$(A),SL) = S$  THEN M = A:A = 99
  600. 16040  NEXT : IF   NOT M  THEN 16500
  601. 16050  PRINT "   'Your command?' ";:H = 20:IW = 50: GOSUB 60: IF A$ = ""  THEN 300
  602. 16060 DF = M: GOTO 220
  603. 16500  REM 
  604. 16510  IF A%(20,4) < > -DF -900  THEN 16600
  605. 16520 C = 0: FOR Z = 1 TO 5: IF CL$(Z) = S$  THEN C = Z:Z = 999
  606. 16530  NEXT : IF   NOT C  OR CL%(C) = 1  THEN 16600
  607. 16535  IF C = A%(20,8)  THEN 92
  608. 16540 C1 = A%(20,8):A%(20,8) = C: ON C1 GOTO 16550,16542,16550,16546,16548
  609. 16542 M%(1,2) = M%(1,2) -1: GOTO 16550
  610. 16546 M%(1,7) = M%(1,7) -5: GOTO 16550
  611. 16548 RG = 0
  612. 16550  PRINT "The cloak turns "CL$(C);: IF C = 1  THEN  PRINT " and returns to normal.": GOTO 98
  613. 16552  PRINT " and envelopes "M$(DF)"!": GOSUB 56
  614. 16554  IF C = 2  THEN  PRINT "It improves your armour slightly!":M%(1,2) = M%(1,2) +1
  615. 16556  IF C = 3  THEN  PRINT M$(DF)" and his weapons grow scorchingly hot!": REM  DAMAGE
  616. 16558  IF C = 4  THEN  PRINT M$(DF)" becomes a shadow, more difficult to hit!":M%(1,7) = M%(1,7) +5
  617. 16560  IF C = 5  THEN  PRINT M$(DF)" feels more vigorous!":RG = 1
  618. 16570  GOTO 98
  619. 16600  REM 
  620. 16800  IF S$ = WD$  AND RO = 48  THEN  PRINT "The painted portcullis OPENS!  You can go east!":RD%(3) = 49: GOTO 98
  621. 16890  GOTO 300
  622. 17000  REM  HOLD
  623. 17010  GOSUB 4910: GOSUB 4801: IF   NOT F  THEN 91
  624. 17015  IF A = RH%(DF)  AND A%(A,2) = 5  THEN RH%(DF) = 0: GOTO 17030
  625. 17016  IF A = LH%(DF)  AND A%(A,2) = 5  THEN LH%(DF) = 0: GOTO 17030
  626. 17017  IF A = RH%(DF)  THEN  GOSUB 5200
  627. 17018  IF A = LH%(DF)  THEN  GOSUB 5400
  628. 17020  IF A = 2  OR A = 7  OR A = 28  THEN  IF DF < >2  THEN 17999
  629. 17021  IF DF = 3  THEN  IF A = 1  OR A = 38  THEN 17999
  630. 17022  IF DF = 4  THEN  IF (A <9  AND A < >4)  OR A = 38  THEN 17999
  631. 17023  IF DF = 5  THEN  IF A <4  OR A = 38  THEN 17999
  632. 17025  IF A%(A,2) = 2  AND   NOT RH%(DF)  THEN S$ = "R": GOTO 17100
  633. 17030  PRINT "In which hand?  R/L: ";
  634. 17040  GOSUB 70:S$ = A$: IF S$ < >"R"  AND S$ < >"L"  THEN 17040
  635. 17050  PRINT S$: PRINT :L = 0
  636. 17100  IF S$ = "R"  AND RH%(DF)  THEN Z = A:A = RH%(DF): GOSUB 5200:A = Z
  637. 17110  IF S$ = "L"  AND LH%(DF)  THEN Z = A:A = LH%(DF): GOSUB 5400:A = Z
  638. 17120  PRINT M$(DF);" readies ";A$(A);" for use.": GOSUB 56
  639. 17125  IF A = 7  AND DF = 2  THEN M%(2,6) = 2:M%(2,7) = M%(2,7) +10
  640. 17130  IF S$ = "L"  THEN LH%(DF) = A: GOTO 300
  641. 17140 RH%(DF) = A: IF A%(A,2) < >2  THEN 300
  642. 17150  REM  WEAPON
  643. 17160 M%(DF,10) = M%(DF,10) +A%(A,6):M%(DF,9) = A%(A,5)
  644. 17170 M%(DF,11) = A%(A,7):M%(DF,12) = A%(A,8):M%(DF,8) = 1
  645. 17180 M%(DF,6) = 1: IF A = 15  THEN M%(DF,11) = 1
  646. 17190  GOTO 300
  647. 17999  PRINT M$(DF)" can't fight well with "A$(A)".": GOTO 98
  648. 18000  REM <CTRL-0x0a><CTRL-0x0a>SAVE<CTRL-0x0a>
  649. 18005 QT = 0: IF T(1)  THEN  PRINT "Save yourself first!": GOTO 99
  650. 18010  POKE  -16368,0: PRINT "Do you want to save this game? (Y/N):";: GOSUB 70: PRINT A$
  651. 18020  IF A$ < >"Y"  AND A$ < >"N"  THEN 18010
  652. 18030  IF A$ = "N"  THEN  ON QT +1 GOTO 100,18085
  653. 18040  PRINT D$"CLOSE": PRINT D$"FRE": PRINT D$"STORE CT.SAVED.GAME"
  654. 18080  POKE  -16368,0
  655. 18085  IF QT = 1  THEN  PRINT D$"CLOSE": GOTO 18200
  656. 18090  PRINT : PRINT "Resume play? ";
  657. 18100  GOSUB 70: IF A$ < >"Y"  AND A$ < >"N"  THEN 18100
  658. 18110  PRINT A$: PRINT 
  659. 18150  IF A$ = "Y"  THEN  PRINT D$"OPEN"ED$",L242": PRINT D$"OPEN"ER$",L";LR: GOTO 99
  660. 18200  POKE 104, PEEK(770): PRINT  CHR$(4)"BYE"
  661. 18900  REM  QUIT
  662. 18910 QT = 1: GOTO 18010
  663. 19000  REM <CTRL-0x0a><CTRL-0x0a>LIGHT<CTRL-0x0a>
  664. 19010  GOSUB 4910: GOSUB 4804: IF   NOT F  THEN 91
  665. 19020  IF A%(A,2) < >5  THEN 19900
  666. 19025  IF A < >LH%(DF)  AND A < >RH%(DF)  THEN 95
  667. 19030  IF A%(A,8)  THEN  PRINT "It's already lit!": GOTO 100
  668. 19050  GOSUB 19100: GOTO 300
  669. 19100  IF A%(A,5)  THEN  PRINT M$(DF)" re-lights his torch.": GOTO 19150
  670. 19120 A%(A,5) = A%(A,6):A%(A,7) = A%(A,7) -1: IF A%(A,7) = 0  THEN A%(A,5) = 999
  671. 19130  PRINT M$(DF)" lights a new torch."
  672. 19150 A%(A,8) = 1:AL = AL +1 +(A = 6):TL = NL +AL
  673. 19190  GOTO 56
  674. 19900  REM 
  675. 19910  IF A < >23  THEN 19980
  676. 19920  IF A%(RH%(DF),2) = 5  AND A%(RH%(DF),8) = 1  THEN 19990
  677. 19930  IF A%(LH%(DF),2) = 5  AND A%(LH%(DF),8) = 1  THEN 19990
  678. 19980  IF A < >23  THEN 92
  679. 19990  PRINT "The web doesn't burn...however, it melts!":A%(A,8) = 1: GOTO 98
  680. 20000  REM  OPEN
  681. 20010  GOSUB 4900: GOSUB 4804: IF   NOT F  THEN 94
  682. 20020 X = A%(A,2) *.25: IF X =  INT(X)  AND X < >0  THEN 20100
  683. 20090  GOTO 94
  684. 20100  IF A%(A,8)  THEN  PRINT "It is already open.": GOTO 100
  685. 20110  IF A%(A,6)  THEN  PRINT "It's locked!": GOTO 300
  686. 20120  IF   NOT A%(A,7)  THEN  ON X GOTO 20200,20500
  687. 20130  PRINT "It's stuck!": GOSUB 56
  688. 20140  IF DF < >A%(A,7)  THEN  PRINT M$(DF);" can't force it open.": GOTO 98
  689. 20150  PRINT "...but ";M$(DF);" forces it open!": GOSUB 56:A%(A,7) = 0
  690. 20160  IF X = 2  THEN 20500
  691. 20200  REM  CONTAINER
  692. 20210 A%(A,8) = 1
  693. 20220 LK = 0: FOR Z = 1 TO NA
  694. 20230  IF A%(Z,4) = A +500  THEN A%(Z,4) = RO:LK = 1:A%(A,3) = A%(A,3) -A%(Z,3): IF A%(A,4) =  -DF -1  THEN WT%(DF) = WT%(DF) -A%(Z,4)
  695. 20240  NEXT : IF   NOT LK  THEN  PRINT "It was empty.": GOTO 98
  696. 20250  PRINT "There's something inside!": GOTO 98
  697. 20500  REM  GATE
  698. 20510 A%(A,8) = 1: PRINT A$(A);" opened.": GOTO 98
  699. 22000  REM <CTRL-0x0a><CTRL-0x0a>DRINK<CTRL-0x0a>
  700. 22010  GOSUB 4910: GOSUB 4804: IF   NOT F  THEN 94
  701. 22020  IF A%(A,2) < >6  THEN  PRINT "You're not that thirsty.": GOTO 98
  702. 22030  IF   NOT A%(A,8)  THEN  IF DF < >1  THEN  PRINT M$(DF);" says, 'It might be dangerous.'": GOTO 98
  703. 22040  IF   NOT A%(A,6)  THEN  PRINT "There's none left.": GOTO 98
  704. 22045  GOSUB 22050: GOTO 300
  705. 22050 A%(A,6) = A%(A,6) -1: PRINT M$(DF)" drinks from "A$(A)".": GOSUB 56:A%(A,8) = 1
  706. 22060  ON A%(A,5) GOSUB 22200,22300,22400,22100
  707. 22080  IF A%(A,6) = 0  THEN  PRINT "That was the last of it.": GOSUB 56:A%(A,1) = 0
  708. 22090  RETURN 
  709. 22100  PRINT "The first potion you drink from is toxic!": GOSUB 56: GOTO 7699
  710. 22200  IF   NOT M%(DF,4)  THEN 22900
  711. 22210  PRINT "The antidote neutralizes the poison!":M%(DF,4) = 0
  712. 22220  GOTO 56
  713. 22300  REM  LIGHT HEAL
  714. 22305  IF A = 66  AND M%(DF,4)  THEN M%(DF,4) = 0: PRINT "The ORC BREW stops the poison!": GOSUB 56
  715. 22310  PRINT "Some of "M$(DF)"'S wounds heal!":D2 =  -8: GOTO 7650
  716. 22400  REM  FULL HEAL
  717. 22410  PRINT M$(DF)" completely regenerates!":M%(DF,4) = 0:D2 =  -99: GOTO 7650
  718. 22900  PRINT "Nothing happens.": GOTO 56
  719. 23000  REM  READ
  720. 23010  GOSUB 4900: GOSUB 4804: IF   NOT F  THEN 94
  721. 23020  IF A%(A,2) < >7  THEN 94
  722. 23030  IF A%(A,8)  THEN  IF DF < >4  THEN  PRINT M$(DF);" doesn't understand it.": GOTO 98
  723. 23040 X = A%(A,5) +400:Y = A%(A,6) +400: FOR R = X TO Y: GOSUB 45: NEXT 
  724. 23050  IF A = 36  AND A%(A,7) = 99  THEN A%(A,7) = 98:A%(34,4) = RO:A%(35,4) = RO
  725. 23060  IF A = 21  THEN  IF A%(52,4) = RO  OR A%(57,4) = RO  THEN R = 453: GOSUB 45
  726. 23090  GOTO 300
  727. 23500  REM  MINES SCROLL
  728. 23510  IF RO = 26  OR RO = 27  THEN  PRINT "You're in the northern area shown on the map.": GOTO 98
  729. 23520  IF RO = 27  THEN  PRINT "You're in the main tunnel shown on the map.": GOTO 98
  730. 23530  IF RO = 28  THEN R = 427: GOSUB 45:RD%(2) = 29:RD%(4) = 30: GOTO 300
  731. 23540  IF RO >28  AND RO <32  THEN  PRINT "You're in one of the mine tunnels.": GOTO 98
  732. 23550  PRINT "It doesn't help you here.": GOTO 98
  733. 23600  REM  RIVER CHART
  734. 23610  IF RO = 40  THEN  PRINT "Two X's appear on the map roughly where the sandbanks are.": GOTO 98
  735. 23620  IF RO = 38  THEN  PRINT "The river you see here is charted on the map.": GOTO 98
  736. 23630  IF RO = 41  THEN R = 428: GOSUB 45:RD%(2) = 42: GOTO 300
  737. 23640  IF RO = 42  OR RO = 43  THEN  PRINT "You are on the lake charted on the map.": GOTO 98
  738. 23650  GOTO 23550
  739. 23700  REM  BOOKS - DOORS
  740. 23710  IF DF < >4  THEN  PRINT M$(DF);" doesn't know what to do with them!": GOTO 99
  741. 23720 A1 = A%(52,4):A2 = A%(57,4): IF A1 < >RO  AND A2 < >RO  THEN  PRINT "'What for?'": GOTO 99
  742. 23730 A = 52 *(A1 = RO) +57 *(A2 = RO):R = 420: GOSUB 45
  743. 23740 A%(A,8) = 1: GOTO 98
  744. 26000  REM  WEAR
  745. 26010  GOSUB 4910: GOSUB 4801: IF   NOT F  THEN 91
  746. 26020  IF A%(A,5)  THEN  IF A%(A,5) < >DF  THEN  PRINT "It doesn't fit "M$(DF)".": GOTO 98
  747. 26030  PRINT M$(DF);" puts it on.": GOSUB 56
  748. 26040 A%(A,4) =  -DF -900
  749. 26050 M%(DF,2) = M%(DF,2) +A%(A,6)
  750. 26070  IF A = 64  THEN M%(1,1) = M%(1,1) +5: PRINT M$(1)" feels hardier and stronger!": PRINT 
  751. 26080  IF A = 13  THEN M%(DF,10) = M%(DF,10) +20
  752. 26090  GOTO 300
  753. 28000  REM <CTRL-0x0a><CTRL-0x0a>USE<CTRL-0x0a>
  754. 28010  GOSUB 4900: GOSUB 4804: IF   NOT F  THEN 94
  755. 28020  IF A = 16  THEN 23500
  756. 28030  IF A = 30  THEN 23600
  757. 28040  IF A = 21  THEN 23700
  758. 28050  IF A%(A,2) < >9  THEN  PRINT "Try another command.": GOTO 100
  759. 28080  IF A%(A,7) = 0  THEN 92
  760. 28090  ON A%(A,5) GOTO 28100,28200,28300,28400,28500,28700,28700,28800
  761. 28200  REM  SHOVEL
  762. 28210  IF RO = 30  THEN 23550
  763. 28220  PRINT "Digging.....": GOSUB 56: FOR A = 1 TO 2000: NEXT 
  764. 28230 LK = 0: FOR A = 1 TO NA
  765. 28240  IF A%(A,4) = 100 +RO  THEN A%(A,4) = RO:LK = 1
  766. 28250  NEXT : IF   NOT LK  THEN 92
  767. 28260  PRINT M$(DF)" finds something.": GOTO 98
  768. 28300  REM  KEYS
  769. 28310  PRINT "On what? ";:H = 10:IW = 20: GOSUB 60:S$ = A$: IF S$ = ""  THEN 98
  770. 28320  PRINT :Z = A: GOSUB 4804: IF   NOT F  THEN 97
  771. 28330  IF Z < >A%(A,6)  THEN  PRINT A$(Z);" doesn't work on ";A$(A);".": GOTO 98
  772. 28340 A%(A,6) = 0
  773. 28350  IF A = 39  THEN  PRINT "It takes a while, but eventually, a path through the rubble is opened!":A%(39,8) = 1: GOTO 98
  774. 28360  IF A = 68  THEN A%(68,8) = 1:R = 426: GOSUB 45:A = Z: GOSUB 5100:A%(A,4) = 0: GOTO 300
  775. 28380  PRINT M$(DF);" unlocks ";A$(A);"."
  776. 28390  GOTO 98
  777. 28400  REM  LEVER
  778. 28410 R = 412: GOSUB 45:RD%(6) = 21: GOTO 300
  779. 28500  REM  BOAT
  780. 28505  IF BT  THEN  PRINT "You're already using it!": GOTO 98
  781. 28510  PRINT "Are you ready to go east? Y/N: ";: GOSUB 70: PRINT A$: PRINT : IF A$ < >"Y"  THEN 100
  782. 28520 BT = 1: PRINT "You board the boat and cast off...": GOSUB 56:R2 = 40 +2 *(RO = 43): GOTO 3500
  783. 28700  REM  STONES
  784. 28710  IF A < >RH%(DF)  AND A < >LH%(DF)  THEN 95
  785. 28720  IF A = 43  THEN R = 454: GOSUB 45: IF RO < >49  THEN 92
  786. 28730  IF A = 50  THEN  PRINT M$(DF);" holds EARSTONE to his ear.": GOSUB 56: IF RO < >48  THEN 92
  787. 28740  IF A = 49  THEN  PRINT M$(DF);" looks through EYESTONE.": GOSUB 56: IF M%(26,5) < >RO  THEN 92
  788. 28750  IF A = 43  THEN R = 413: GOSUB 45:A%(63,8) = 1: GOTO 300
  789. 28760  IF A = 50  THEN  PRINT M$(DF);" hears something.....": GOSUB 56: HTAB 5: FOR A = 1 TO 4: PRINT "'"WD$"'.....";: NEXT : PRINT : GOTO 98
  790. 28770  IF A = 49  THEN  PRINT M$(DF);" can see GUARDIAN!":A%(49,6) = 1: GOTO 98
  791. 28800  PRINT "It is used to CAST spells.": GOTO 99
  792. 29000  REM <CTRL-0x0a><CTRL-0x0a>RESUME GAME<CTRL-0x0a>
  793. 29005  POKE 216,0
  794. 29010  POKE  -16368,0: PRINT "Do you want to resume the saved game?  Y/N:  ";: GOSUB 70: PRINT A$: PRINT 
  795. 29020  IF A$ < >"Y"  THEN 300
  796. 29040  PRINT D$"RESTORE CT.SAVED.GAME": POKE  -16368,0: PRINT FF$: HOME : GOTO 100
  797. 30000  REM   MODE
  798. 30010 R = 458: GOSUB 45
  799. 30020  PRINT "Enter new mode (1-5): ";
  800. 30030  GET A$:MD =  VAL(A$): IF MD <1  OR MD >5  THEN 30030
  801. 30040  PRINT MD: PRINT : IF RO = 44  OR RO = 28  OR M%(30,5) = RO  THEN 100
  802. 30050 R = 459: GOSUB 45: PRINT "Enter new mode (1-3): ";
  803. 30060  GET A$:LY =  VAL(A$): IF LY <1  OR LY >3  THEN 30060
  804. 30070  PRINT LY: PRINT 
  805. 30080  IF T(1)  THEN 210
  806. 30090  GOTO 100
  807. 31000 P$ = "is here": RETURN 
  808. 32000  REM  DONE
  809. 32010  PRINT D$"CLOSE"
  810. 32020  GOSUB 59: HOME 
  811. 32030  IF Z = 0  THEN  PRINT D$"CHAIN CT.CONCLUSION"
  812. 32040  IF Z = 1  THEN  PRINT D$"CHAIN CT.CONCLUSION,@100"
  813. 32050  IF Z = 2  THEN  PRINT D$"CHAIN CT.CONCLUSION,@200"
  814. 32060  IF Z = 3  THEN  PRINT D$"CHAIN CT.CONCLUSION,@300"
  815. 33000 P$ = "holds ":C = 0:P2$ = ""
  816. 33110  IF RH%(M)  THEN P$ = P$ +A$(RH%(M)):C = 1
  817. 33120  IF LH%(M)  THEN P2$ = A$(LH%(M)):C = C +1
  818. 33130  IF C = 2  THEN P$ = P$ +" and "
  819. 33140  IF C = 0  THEN P2$ = "nothing"
  820. 33150 P$ = P$ +P2$
  821. 33160  RETURN 
  822. 34000 P$ = "is "
  823. 34010 B = WT%(M)/MX%(M):A =  INT(100 *B)
  824. 34020 P$ = P$ + STR$(A) +"% encumbered"
  825. 34030  RETURN 
  826. 35000  REM  HEALTH
  827. 35010 DF = M: PRINT "is ";: IF M%(DF,4)  THEN  PRINT "POISONED and ";
  828. 35015 D2 = 0: GOSUB 7655
  829. 35020  VTAB  PEEK(37): CALL  -958: RETURN