0 REM SUPER QUEST- SQX5.51/CA,1982-2000 JEFF HURLBURT 1 ONERR GOTO 5100 2 LOMEM= 28928 3 GOSUB 7777:QQ% = 16384:C4 = 1:C5 = 2:C6 = 0:OX = 0:OY = 0:X% = 0:Y% = 0:A% = 0:B% = 0:C0 = .001:F% = 0:G% = 0:Z8 = 0:Z9 = 0:WM = 0:V0 = 250:V1 = 251:V2 = 252:V3 = 253:V4 = 254:V5 = 255:T8 = .005 4 DEF FN O(M) = SCRN( X% + M,Y% + Y% - C5) + SCRN( X% + M,Y% + Y% - C4) 5 DEF FN R(X) = INT ( RND (1) * X) 7 TEXT : HOME : GOTO 4085 8 REM QUAR/TP 9 F% = 18:G% = 9: POKE 6,170: POKE 3,39: GOTO 14 10 F% = 0:G% = 2: POKE 6,167: POKE 3,T6: IF ABS (A% - X%) > ABS (B% - Y%) THEN POKE 6,173 14 POKE V0,X%: POKE V1,Y%: POKE V2,A%: POKE V3,B%: FOR I = F% TO 48 STEP 5: & TI,G%: NEXT I: CALL FX:D9 = PEEK (9) + .1: RETURN 17 REM DRAGON 18 HTAB A%: VTAB B%: FLASH : PRINT M$(M%): NORMAL : POKE 6,32: POKE 3,T7: POKE V0,A%: POKE V1,B%: POKE V2,X%: POKE V3,Y%: CALL FX: HTAB X%: VTAB Y%: FLASH : PRINT YY$: NORMAL :OO = OO - ( PEEK (0) < > 32) * O3 * OO / FD%: GOSUB 425: HTAB A%: VTAB B%: PRINT M$(M%): RETURN 300 FOR I = 1 TO 50: NEXT I: RETURN 400 REM QRLS 405 IF NOT RX% THEN VTAB 2: HTAB 1: PRINT "MQ=";A2;" ";: HTAB 8: PRINT "IQ=";A1;" ": RETURN 406 RETURN 410 REM PTNS & TP 415 IF NOT RX% THEN VTAB 2: HTAB 30: PRINT TP;" ";: HTAB 34: PRINT "HE=";PT;" ": RETURN 416 RETURN 420 REM %ST 425 IF NOT RX% THEN VTAB 1: HTAB 34: PRINT INT (OO * 100 + .5) * (OO > 0);"% ": RETURN 426 RETURN 430 REM EXP&GOLD 435 IF NOT RX% THEN VTAB 19: HTAB 1: PRINT GP: VTAB 22: HTAB 34: PRINT INT (EP): RETURN 436 RETURN 445 HOME 450 IF RX% THEN RETURN 451 VTAB 1: HTAB 27: PRINT "STRNG: "; INT (OO * 100 + .5);"%": VTAB 2: HTAB 1: PRINT "MQ=";A2; TAB( 8);"IQ=";A1; TAB( 27);"TP=";TP; TAB( 34);"HE=";PT 452 VTAB 18: HTAB 1: PRINT "DENAR": PRINT GP 455 VTAB 22: HTAB 1: PRINT H$; TAB( 27);"EXPER: "; INT (EP): VTAB 1: HTAB 1: IF RM = PZ THEN PRINT "PUZZLE ROOM": RETURN 475 PRINT "ROOM #";RM: RETURN 600 VTAB 24: HTAB 1: PRINT C7$;: IF N% < C4 THEN RETURN 601 IF WM THEN 605 602 A% = INT ( RND (1) * 8) + 17:B% = INT ( RND (1) * 5) + 11: IF SCRN( A% - C4,B% + B% - C4) < > C8 THEN 602 605 MS = MS(M%):L$ = V$(N%) 610 G$ = MN$(M%): IF N% > C4 THEN G$ = MN$(M%) + "S" 615 L$ = L$ + G$:X = INT ((40 - LEN (L$)) / 2): VTAB 24: HTAB X: PRINT L$;: RETURN 649 REM M% SET 650 POKE V3,M%: POKE V1,U8 + FB: POKE V0,FA: CALL FM: RETURN 659 REM SET N% 660 POKE V3,N%: POKE V1,U8 + FB: POKE V0,FA: CALL FQ: RETURN 669 REM SET T% 670 POKE V3,T%: POKE V1,U9 + FB: POKE V0,FA: CALL FT: RETURN 910 POP : IF RM < > PZ THEN RM = RM + RQ: GOTO 1000 920 IF PEEK (U5 + PZ) = 0 THEN RM = RM + RQ: POKE U3 + PZ,143:PZ = - 1: GOTO 1000 930 OO = OO - .05: IF OO < = T8 THEN 1450 935 GOSUB 425 999 REM MAIN LOOP (NEW RM) 1000 WM = 0:NW = NR + GP / V8: IF NW > .01 THEN NW = .01 1003 IF RM = R1 THEN RM = 399:HQ% = 1: HOME : GOSUB 4400: GOTO 4330 1005 IF RM = R2 THEN RM = 574:HQ% = 1: HOME : GOSUB 4400: GOTO 4330 1010 IF RM = R0 THEN RM = 167:HQ% = 0: HOME : GOSUB 4405: GOTO 4330 1020 FB = INT (RM / CV): POKE V1,FB + U1:FA = RM - CV * FB: POKE V0,FA: CALL ZR%:RX% = PEEK (249): HOME : GOSUB 450: CALL XR%:T% = PEEK (V1):M% = PEEK (V2):N% = PEEK (V3) 1040 IF B1 AND RM = R4 THEN CALL 22931 1050 IF T% > C6 THEN TX = FN R(8) + 17:TY = FN R(5) + C8: HTAB TX: VTAB TY: PRINT "+"; 1110 HTAB X%: VTAB Y%: FLASH : PRINT YY$;: NORMAL 1140 IF WM THEN A% = I%:B% = L% 1150 GOSUB 600 1170 IF N% THEN HTAB A%: VTAB B%: PRINT M$(M%) 1180 V% = C4: IF T% THEN HTAB TX: VTAB TY: PRINT "+" 1200 IF NOT N% AND RND (1) < NW THEN WM = C4: GOSUB 4625:I% = A%:L% = B%: ON Z% + 1 GOTO 1150,2595 1240 CALL 24295:K1% = PEEK (1): IF K1% THEN K0% = K1% 1250 ON K0% GOSUB 2052,2102,2200,2208,2216,2228,2152,2350,2402,2302,2502,2525,2600,2002 1350 IF Z% THEN 1200 1400 IF N% < 1 THEN FOR I = 1 TO 5: NEXT I: GOTO 1140 1405 IF MS < = C6 THEN FOR X = C4 TO LEN (K$): HTAB A%: VTAB B%: PRINT MID$ (K$,X,1);: NEXT X:N% = N% - 1:EP = EP + 10 * MS(M%):WM = WM * (N% > C6): GOSUB 435: GOSUB 660:DE% = DE% + 2 * (M% > C8): GOTO 1140 1410 IF M% > C8 THEN GOSUB 18 1415 MM% = NOT MM%: POKE V0,A%: POKE V1,B%: POKE 4,M%: POKE V2,X%: POKE V3,Y%: CALL MF:A% = PEEK (9):B% = PEEK (C8): HTAB A%: VTAB B%: PRINT M$(M%): IF M% = SX% AND NOT MM% THEN 1415 1438 IF NOT PEEK (0) THEN 1180 1440 MH = RND (1) * MS * O3 * V%: IF MH < .01 THEN MH = .01 1445 OO = OO - MH: IF OO > T8 THEN GOSUB 425: GOTO 1180 1450 OO = 0: GOSUB 425: GOSUB 300: GOTO 4585 1999 REM KEY ROUTINES 2002 K0% = 0: RETURN 2050 REM MAG Q 2052 K0% = 0: IF A2 < 1 THEN RETURN 2054 A2 = A2 - 1 2056 GOSUB 10: IF PEEK (0) = 32 THEN 2068 2057 IF W%(M%,3) = C6 THEN 2068 2058 D9 = 4 / D9: IF D9 > 1.5 THEN D9 = 1.5 2060 IF (.1 + OO * (QE + 2 * D9 + AS) / 3) < RND (1) THEN 2068 2064 HH = (AS * XM + .35 + QE / SX% + (D9 > .5) * .2) / C5 2066 MS = MS - HH 2068 IF NOT RX% THEN VTAB 2: HTAB 1: PRINT "MQ=";A2;" ";: HTAB 8: PRINT "IQ=";A1;" " 2069 RETURN 2100 REM IRON Q 2102 K0% = 0: IF A1 < 1 THEN RETURN 2104 A1 = A1 - 1 2106 GOSUB 10: IF PEEK (0) = 32 OR W%(M%,2) = 0 THEN 2120 2108 D9 = C5 / D9: IF D9 > C4 THEN D9 = C4 2110 IF OO * (3 * D9 + QE + AS) / 4 < RND (1) THEN 2120 2112 X = XI + RND (1) / SX% 2114 IF M% = SX% THEN X = X / C5 2116 IF M% > C8 THEN X = X / SX% 2117 HH = (AS * X + .15 + QE / SX% + (D9 > .5) * .2) / C5 2118 MS = MS - HH 2120 IF NOT RX% THEN VTAB 2: HTAB 11: PRINT A1;" " 2121 RETURN 2150 REM TANA 2152 K0% = 0: IF TP < 1 THEN RETURN 2154 TP = TP - 1:HH = 0 2156 GOSUB 9: IF W%(M%,4) = 0 THEN 2170 2158 IF PEEK (0) = 32 THEN 2170 2159 D9 = 4 / D9: IF D9 > 1.5 THEN D9 = 1.5 2160 IF (OO * (QE + 2 * D9 + MP) / 2) < RND (1) THEN 2170 2165 HH = (MP + RND (1) / 3 + QE / SX%) / 2: IF M% = 9 THEN HH = HH / C8 2168 MS = MS - HH 2170 GOSUB 415: RETURN 2200 REM MV UP 2202 RQ = C9:UB = Y% - C4: IF SCRN( X% - C4,UB + UB - C4) + SCRN( X% - C4,UB + UB - C5) < > C8 THEN RETURN 2204 HTAB X%: VTAB Y%: PRINT " ":Y% = UB: IF Y% > C4 THEN HTAB X%: VTAB Y%: FLASH : PRINT YY$;: NORMAL : RETURN 2206 Y% = 22: GOTO 910 2208 REM MV DOWN 2210 RQ = - C9:UB = Y% + C4: IF SCRN( X% - C4,UB + UB - C4) + SCRN( X% - C4,UB + UB - C5) < > C8 THEN RETURN 2212 HTAB X%: VTAB Y%: PRINT " ":Y% = UB: IF Y% < = 22 THEN HTAB X%: VTAB Y%: FLASH : PRINT YY$;: NORMAL : RETURN 2214 Y% = C5: GOTO 910 2216 REM MV RGT 2218 RQ = C4:HM = C4 2220 IF FN O(0) < > 10 THEN RETURN 2222 IF X% < 39 THEN IF FN O(1) = C8 THEN HM = C5: IF T% THEN IF ABS (X% - TX) + ABS (Y% - TY) < 3 THEN HM = C4 2224 HTAB X%: VTAB Y%: PRINT " ":X% = X% + HM: IF X% < 40 THEN HTAB X%: VTAB Y%: FLASH : PRINT YY$;: NORMAL : RETURN 2226 X% = 2: GOTO 910 2228 REM MV LEFT 2230 RQ = - C4:HM = C4 2232 IF FN O( - 2) < > 10 THEN RETURN 2234 IF X% > C5 THEN IF FN O( - 3) = C8 THEN HM = C5: IF T% THEN IF ABS (X% - TX) + ABS (Y% - TY) < 3 THEN HM = C4 2236 HTAB X%: VTAB Y%: PRINT " ":X% = X% - HM: IF X% > = C5 THEN HTAB X%: VTAB Y%: FLASH : PRINT YY$;: NORMAL : RETURN 2238 X% = 39: GOTO 910 2300 REM HEAL 2302 K0% = 0: IF PT > 0 THEN PT = PT - 1:OO = 1: GOSUB 425: GOSUB 415 2304 RETURN 2350 REM HAND 2352 IF ABS (X% - A%) > C4 OR ABS (Y% - B%) > C4 OR W%(M%,1) = 0 THEN RETURN 2353 OO = OO - T8 * M% * (N% > C6): IF OO < T8 THEN POP : GOTO 1450 2354 V% = .8:X = RND (1): IF M% = SX% THEN X = X + .2 2355 GOSUB 425 2356 IF X > HC * OO THEN RETURN 2358 X = RND (1) * OO * HC 2360 IF M% = 7 THEN X = X / 3 2362 IF M% = 5 THEN X = X / C8 2364 MS = MS - X: RETURN 2400 REM OPEN TREAS 2402 K0% = 0 2404 IF ABS (TX - X%) > 1 THEN RETURN 2406 IF ABS (TY - Y%) > 1 THEN RETURN 2408 HTAB TX: VTAB TY: PRINT " " 2409 IF T% = 21 THEN 6000 2410 UY = TY:UX = TX:TX = 0:TY = 0: IF NOT T% THEN T% = INT ( RND (1) * 5) 2411 IF T% = 1 THEN T% = INT ( RND (1) * 7) 2412 VTAB 24: HTAB 1: PRINT C7$;:L$ = T$(T%): VTAB 24: HTAB INT ((40 - LEN (L$)) / C5): PRINT L$;: FOR X = 1 TO 500: NEXT X 2414 IF T% = 19 THEN PT = PT + 1: GOTO 2428 2416 IF T% = 17 THEN A2 = A2 + 10: GOTO 2428 2418 IF T% = 18 THEN TP = TP + 4: GOTO 2428 2420 IF T% = 16 THEN A1 = A1 + 10: GOTO 2428 2422 IF T% = 20 THEN Z9 = 1 2424 TS(T%) = TS(T%) + 1 2426 GP = GP + GP(T%) 2428 EP = EP + EP(T%) 2430 IF RM < > BZ THEN 2436 2432 IF T% = 19 THEN 2438 2434 T% = T% + 1:TY = UY:TX = UX: VTAB TY: HTAB TX: PRINT "+": GOTO 2440 2436 IF RM = PZ AND T% = 15 THEN T% = 17:TY = UY:TX = UX: VTAB TY: HTAB TX: PRINT "+": GOTO 2442 2438 T% = C6 2440 IF RM = R4 THEN CALL 22928:B1 = 1 2442 GOSUB 670: VTAB 24: HTAB 1: PRINT C7$;: IF N% > C6 THEN GOSUB 605 2444 GOSUB 435: GOSUB 405: GOSUB 415: IF RND (1) * DX > 9 THEN POP : GOTO 1180 2446 RETURN 2500 REM RUB 2502 K0% = 0: IF NOT Z9 THEN RETURN 2505 POKE P4,P3: GOSUB 4620 2510 RM = INT ( RND (1) * 1023): IF RM = R0 OR RM = R1 OR RM = R2 OR RM = R3 OR RM = PZ THEN 2510 2515 G% = 14: FOR I = 0 TO 77 STEP 7: & TI,G%: NEXT I: HOME :FB = INT (RM / CV): POKE V1,FB + U1:FA = RM - CV * FB: POKE V0,FA: CALL ZR%:RX% = PEEK (249): GOSUB 450: CALL XR%:T% = PEEK (V1):M% = 0:N% = 0:WM = 0:NW = .01: POKE V3,0 2517 FOR I = 77 TO F% STEP - 7: & TI,G%: NEXT I:X% = 18:Y% = 12: POP : GOTO 1040 2524 REM INMZ IDRV 2525 K0% = 0: IF N% THEN RETURN 2527 POKE KP,1: GOSUB 2555: VTAB 22: POKE 32,0: HTAB 5 2528 PRINT " PRESS ";: INVERSE : PRINT " RETURN ";: NORMAL : PRINT " TO CONTINUE " 2530 VTAB 22: HTAB 30 2545 POP : GOTO 1200 2550 REM INF DISP 2555 Z% = 1: TEXT : HOME : POKE 32,5: HOME : GOSUB 4025 2565 RETURN 2593 REM WM XINFDISP 2595 TEXT : HOME :Z% = 0: POKE KP,0: GOTO 1020 2599 REM KEY XINFDISP 2600 K0% = 0: IF Z% THEN POP : GOTO 2595 2602 RETURN 2699 REM QE/EM%/DX UPDATE 2700 QE = EP / C1: IF QE > 1 THEN QE = 1 + (EP - C1) / T9% 2705 EM% = INT (GP / T0): GOSUB 4005: RETURN 3999 REM NAME DSP/CARRY/DX 4000 INVERSE : IF X(2) THEN PRINT "PRINCE"; 4002 PRINT " ";H$" THE ";RS$(RC);" ": NORMAL :J = INT (C(RC,4) * ST) 4005 DX = INT (EP / V5) + 1: IF DX > C9 THEN DX = C9 4010 RETURN 4020 POKE 34,0: HOME 4025 GOSUB 4000 4026 PRINT "STRENGTH ..."; TAB( 19);ST: IF Z% THEN VTAB 2: HTAB 24: PRINT "(@ " INT (OO * 100)"%)" 4027 IF NOT FA% THEN PRINT "DRAGON EARS"; TAB( 19);DE%: GOTO 4029 4028 CALL - 868: PRINT "DRAGON FIRE ARMOR":FD% = 60:DE% = 60 4029 PRINT P$(1); TAB( 19);A1: PRINT P$(2); TAB( 19);A2: PRINT P$(3); TAB( 19);TP: PRINT P$(4); TAB( 19);PT 4035 PRINT "EXPERIENCE ..."; TAB( 19); INT (EP) 4040 IF NOT Z% THEN PRINT 4042 PRINT "GOLD DENARS ..."; TAB( 19);GP;" " 4045 IF IT < > 5 OR XP = 0 THEN 4069 4050 FOR X = 1 TO NM: FOR I = ST TO ST + XP:ST = ST + 1 4055 VTAB 2: HTAB 19: PRINT ST: PRINT "" 4060 NEXT I 4065 NEXT X 4069 IF Z% THEN 4072 4070 J = INT (ST * C(RC,4)): VTAB 4: HTAB 26: PRINT CC$;J;")": VTAB 5: HTAB 26: PRINT CC$;J;")": VTAB 11: HTAB 1: RETURN 4072 IF Z9 THEN PRINT "THE MAGIC LAMP" 4073 VTAB 12: PRINT "OPEN A TREASURE": PRINT "STATUS INFORMATION": PRINT : PRINT "MOVEMENT KEYS": PRINT " (ARRANGED ACCORDING": PRINT " TO DIRECTION)": PRINT : PRINT "ROOM #";RM 4074 VTAB 14: HTAB 29: INVERSE : PRINT "W": VTAB 16: HTAB 27: PRINT "A";: HTAB 31: PRINT "D": VTAB 18: HTAB 29: PRINT "X" 4075 POKE 32,0: VTAB 4: PRINT " < ": PRINT " > ": PRINT " P ": PRINT " H ": VTAB 12: PRINT " O ": PRINT " I ": IF Z9 THEN VTAB 10: PRINT " R " 4077 NORMAL 4079 RETURN 4080 REM *** START PROGRAM *** 4085 CALL 23470 4088 ZR% = 24316:XR% = 24479:FX = 23321:FM = 24531:FQ = 24548:FT = 24567:MF = 22560 4090 HOME : VTAB 10: HTAB 9: PRINT "S U P E R Q U E S T" 4095 YY$ = "H":K$ = "*(())<<>>SSZZ+":K$ = K$ + K$ + "--!!-+!+ " 4100 C1$ = " ":C7$ = " ":CC$ = "(CARRY= " 4105 DIM J%(50),K%(50),MN$(15),M$(15),MS(15),T$(25),EP(25),GP(25),TS(25),WE$(5),V$(21),P%(6),R%(12),W%(12,5),C(5,5),RS$(5),RP$(5),X(8) 4110 U1 = 96:U8 = 100:U9 = 104:CV = 256:C9 = 16:C1 = 3000:C2 = 100000:C8 = 10:C3 = 128:U3 = 24576:U4 = 25600:U5 = 26624:T6 = 15:T7 = 34:G8 = 999:G9 = 20000:XI = .25:XM = .4:SX% = 5:R0 = 151:R1 = 383:R2 = 558:R3 = 936:R4 = 262 4115 NR = .0056:V8 = 400000:T0 = 800:AD% = 0:FD% = 10:T9% = 32000:KP = 24414 4120 FOR I = 0 TO 12: FOR J = 1 TO 4: READ W%(I,J): NEXT J: NEXT I 4125 FOR X = 0 TO 21: READ T$(X): NEXT X 4130 FOR X = 0 TO 21: READ GP(X),EP(X): NEXT X 4135 FOR I = 0 TO 3: FOR J = 0 TO 4: READ C(I,J): NEXT J: NEXT I 4140 FOR X = 0 TO 12: READ MN$(X),M$(X),MS(X): NEXT X 4145 Y% = 23:X% = 20:A% = 9:B% = 10: POKE 6,171: GOSUB 10: HTAB 9: VTAB 10: FLASH : PRINT "S":A% = 20: POKE 6,171: NORMAL : GOSUB 10: HTAB 20: VTAB 10: FLASH : PRINT "Q": NORMAL 4150 FOR I = 1 TO 999: NEXT I 4155 GOSUB 4620 4160 FOR I = 1 TO 5: READ P%(I): NEXT I 4165 FOR I = 1 TO 16: READ V$(I): NEXT I 4170 RM = 167: FOR I = 1 TO 5: READ P$(I): NEXT I 4175 FOR I = 0 TO 3: READ RS$(I),RP$(I): FOR J = 1 TO 5: READ RF$(I,J): NEXT J: NEXT I 4180 TEXT : HOME 4185 REM SEL CHAR 4187 HOME : VTAB 10:ZZ = PEEK (49168): PRINT "DO YOU WISH TO VIEW THE HALL OF HEROES?": PRINT TAB( 14);"(Y/N) ";: GET Q$: PRINT Q$: IF Q$ = "Y" THEN HOME : VTAB 10: PRINT "LOADING...": PRINT CHR$ (4)"RUNHHS" 4190 HOME : VTAB 10: PRINT "DO YOU WISH TO REVIEW BASIC COMBAT ","CHARACTERISTICS OF THE FOUR RACES?" 4195 PRINT : PRINT TAB( 14);"(Y/N) ";: GET Q$: PRINT Q$: IF Q$ < > "Y" THEN 4230 4200 SPEED= 180: HOME 4205 FOR I = 0 TO 3: PRINT RP$(I)" ARE "RF$(I,2)" IN SKILL WITH THE BOW,": PRINT " "RF$(I,1)" IN HAND COMBAT, "RF$(I,3)" IN THE USE OF": PRINT " MAGIC, "RF$(I,4)" IN PHYSICAL TOUGHNESS, AND": PRINT " CAN CARRY "RF$(I,5)"X STRENGTH IN QUARRELS.*" 4210 PRINT : GOSUB 5085: NEXT I 4215 PRINT " * (MAX IRON + MAGIC CARRY INTO MAZE)" 4220 SPEED= 255: PRINT 4225 PRINT TAB( 6);"PRESS ANY KEY TO CONTINUE ";: GET Q$ 4230 HOME : VTAB 10: PRINT TAB( 5);"IS THIS A NEW CHARACTER? (Y/N) ";: GET A$:NC% = 0: IF A$ = "Y" THEN NC% = 1 4235 HOME : VTAB 3:OO = 1 4240 PRINT "NAME: ___________";: HTAB 7: INPUT "";H$: GOSUB 4700:RC = 0 4245 PRINT CHR$ (4);"OPEN";H$ 4250 PRINT CHR$ (4);"READ";H$ 4255 INPUT ST: INPUT EP: INPUT GP: INPUT A1: INPUT A2: INPUT TP: INPUT PT: INPUT RC: INPUT DA%: INPUT SP$ 4257 FOR I = 0 TO 6: INPUT X(I): NEXT I 4260 PRINT CHR$ (4);"CLOSE";H$ 4265 IF NC% THEN PRINT : INVERSE : PRINT "THIS CHARACTER ALREADY EXISTS!": NORMAL : GOSUB 5140: GOTO 4230 4270 GOTO 4300: REM ...OLD CHAR 4275 PRINT : PRINT "ARE YOU OF THE RACE OF "; 4280 FOR I = 1 TO 3: VTAB 5: HTAB 24: PRINT RP$(I);"? (Y/N) ";: CALL 64668: GET Q$: IF Q$ = "Y" THEN RC = I: GOTO 4290 4285 NEXT I 4290 ST = 25:A1 = 50:A2 = A1:TP = 15:PT = TP:GP = 20:EP = 0:FA% = 0:DE% = 0: FOR I = 0 TO 6:X(I) = 0: NEXT I 4295 HTAB 1: VTAB 7: INPUT "SPONSOR? (THREE LETTERS) ";SP$: IF LEN (SP$) > 3 THEN SP$ = LEFT$ (SP$,3) 4300 BZ = 548 4305 PZ = 104:P7 = RND (1): IF P7 > .44 THEN PZ = 226 4310 IF P7 > .75 THEN PZ = 29 4315 POKE U3 + PZ,207: POKE U4 + PZ,153: POKE U5 + PZ,15 4320 RM = DA%:HQ% = DA% > 167:DE% = X(0):FA% = X(1) 4325 IF NC% THEN DA% = 167:RM = DA%:HQ% = 0 4330 GOSUB 4020 4335 GOSUB 4910 4338 GOSUB 2700: REM QE/EM%/DX 4340 GG = ST / 235:O3 = (1 / C(RC,3)) - GG: IF O3 < .3 THEN O3 = .3 4345 AS = GG:MP = GG:HC = GG: IF AS > 2 THEN AS = 2 + ST / 1000 4350 AS = C(RC,1) + AS: IF MP > 1 THEN MP = 1 4355 MP = C(RC,2) + MP: IF HC > 1.5 THEN HC = 1.5 + ST / 1000 4360 HC = C(RC,0) + HC 4365 K0% = 3:X% = 20:Y% = 22 4370 POKE 34,0: GOSUB 4500: HOME 4375 A3 = A1:A4 = A2:A1 = INT (C(RC,4) * ST):A2 = A1: IF A1 > A3 THEN A1 = A3 4380 IF A2 > A4 THEN A2 = A4 4385 A3 = A3 - A1:A4 = A4 - A2 4390 GOTO 1000 4395 REM OUT OF MAZE 4400 PRINT " YOU HAVE HAPPENED UPON A REFUGE!": PRINT 4405 DA% = RM: IF Z9 THEN POKE P4,P3: GOSUB 4620 4410 SPEED= 180: PRINT : PRINT "TREASURES RETRIEVED FROM THE MAZE ARE...": PRINT 4415 ZZ = 0:EP = INT (EP): FOR X = 1 TO 15 4420 ZZ = ZZ + TS(X): IF TS(X) THEN PRINT T$(X); TAB( 36);TS(X) 4425 TS(X) = 0: NEXT X 4430 IF NOT ZZ THEN PRINT TAB( 15);"ZILCH!!!" 4435 SPEED= 255 4440 ZZ = PEEK (49168):A1 = A1 + A3:A2 = A2 + A4: PRINT : IF NOT HQ% THEN GOTO 4455 4445 PRINT "WILL YOU TAKE A FEW DAYS REST OR GO ","AHEAD AND START BARGAINING? (R/B) ";: GET A$: IF A$ = "B" THEN RETURN 4450 GOTO 4460 4455 PRINT "RETURN TO THE BAZAAR NOW? (Y/N) ";: GET A$: IF A$ = "Y" THEN RETURN 4460 HOME : VTAB 10 4465 PRINT "OK. SO THAT ";H$: PRINT "MAY RETURN AT SOME TIME IN THE FUTURE": PRINT " ...." 4470 FOR I = 1 TO 1000: NEXT I 4475 IT = 0: GOSUB 4020 4480 GOSUB 4810 4485 GOSUB 4845 4490 END 4495 REM MONSTERS 4500 IF HQ% THEN HQ% = 0 4505 HOME : VTAB 10: PRINT "DO YOU WISH TO REVIEW WHAT IS KNOWN, ","AT PRESENT, ABOUT MONSTER STRENGTHS ","AND WEAPONS EFFECTIVENESS? (Y/N) ";: GET Q$: IF Q$ < > "Y" THEN 4572 4510 HOME : VTAB 2 4515 PRINT : PRINT "KNOWN REL HAND IRON MAG TANA" 4520 PRINT "MONSTER"; TAB( 14);"STR CMBT QRL QRL PDR" 4525 PRINT 4530 FOR I = 0 TO 12: FOR X = 1 TO 4 4535 WE$(X) = "NO ": IF W%(I,X) = 1 THEN WE$(X) = "YES " 4540 IF W%(I,X) = 2 THEN WE$(X) = "NV* " 4545 NEXT X 4550 PRINT MN$(I); TAB( 14); INT (1000 * MS(I) / MS(12)); TAB( 19);WE$(1);WE$(2);WE$(3);WE$(4) 4555 NEXT I 4560 PRINT : PRINT " * NV= 'NOT VERY' EFFECTIVE" 4565 GOSUB 5200: IF Q$ < > "Y" THEN 4565 4572 IF Q$ = "Y" THEN HOME 4573 VTAB 15: HTAB 4: PRINT " REVIEW STATUS ... ? (Y/N) ";: GOSUB 7100: IF Q$ < > "Y" THEN 4578 4574 GOSUB 2555 4575 GOSUB 5200: IF Q$ < > "Y" THEN 4575 4577 Z% = 0 4578 TEXT : HOME : VTAB 10: PRINT "ENTER MAZE? (Y/N) ";: GOSUB 7100: IF Q$ = "N" THEN DA% = RM: GOTO 4460 4579 IF Q$ < > "Y" THEN 4578 4580 RETURN 4584 REM EXIT VIA MONSTER 4585 FOR X = 1 TO LEN (K$): HTAB X%: VTAB Y%: PRINT MID$ (K$,X,1);: NEXT X: FOR X = 1 TO 1000: NEXT X: HOME 4590 VTAB 23: HTAB 15: FLASH : PRINT YY$: NORMAL : SPEED= 160: FOR X = 46 TO 2 STEP - 2: & TX,13: PRINT : NEXT X 4595 HOME : VTAB 10:EP = INT (EP): PRINT "WELCOME TO HEAVEN, ";H$;"!!!": GOSUB 4730 4600 SPEED= 255:ZZ = PEEK (49168):DA% = 0 4610 PRINT CHR$ (4);"DELETE";H$ 4615 GOTO 4485 4620 TT = INT ( RND (1) * 1023): IF TT = R3 OR TT = R1 OR TT = R2 OR TT = R0 THEN 4620 4622 P4 = U5 + TT 4624 P3 = PEEK (P4): POKE P4,20:Z9 = 0: RETURN 4625 HTAB 13: VTAB 24: FLASH : PRINT " ROVING MONSTER! ";:JQ = 0: GOSUB 2700: GOSUB 4645:N% = INT ( FN R(3 + EM%) + 1): IF N% > 15 THEN N% = 15 4628 TT = FRE (0) 4630 JM% = ( ABS (X% - A%) < 3 OR ABS (Y% - B%) < 3):K = 10 - 3 * JM% - 3 * (JQ AND JM%) 4635 M% = FN R(K + (EM% > 0) + (EM% > 2)) + (EM% > 15): HTAB C8: GOSUB 650: GOSUB 660: VTAB 24: HTAB C8: NORMAL : PRINT C1$; 4640 RETURN 4645 FOR K = 1 TO 400: NEXT K: GOSUB 4660: IF SCRN( A% - C4,B% + B% - C4) = C8 THEN RETURN 4650 IF I < 3 THEN A% = 20: RETURN 4655 B% = 10: RETURN 4660 J = 0: FOR I = 235 TO 238:J = J + 1:J(J) = PEEK (I): NEXT I 4665 I = INT ( RND (1) * 5): IF J(I) = 0 THEN 4665 4670 ON I GOTO 4675,4680,4685,4690 4675 A% = 19:B% = 1:JQ = (K0% = 3): RETURN 4680 A% = 19:B% = 22:JQ = (K0% = 4): RETURN 4685 A% = 38:B% = 13:JQ = (K0% = 5): RETURN 4690 A% = 1:B% = 13:JQ = (K0% = 6): RETURN 4695 REM NAME 4700 TT = LEN (H$): IF TT < 3 THEN H$ = "": RETURN 4705 IF TT > 11 THEN TT = 11:H$ = LEFT$ (H$,11) 4710 FOR J = 1 TO TT:K = ASC ( MID$ (H$,J,1)): IF K < 65 OR K > 90 THEN H$ = "": RETURN 4715 NEXT J 4720 IF H$ = "HHS" OR H$ = "HELLO" THEN H$ = H$ + "O" 4725 RETURN 4730 FOR TT = 1 TO 777: NEXT TT: RETURN 4735 POKE 34,19: HOME : VTAB 21: RETURN 4740 DATA 1,0,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,2,1,1,0,1,1,1,1,1,1,1,0,2,1,1,0,0,0,1,2,0,0,0,1,2,2,1,0,2,2,1,0 4745 DATA EMPTY,WORTHLESS JUNK,STRANDS OF COLORED BEADS,A BAG OF OLD COPPER COINS,A POUCH FILLED WITH SUNDRY COINS,A TINY SILVER STATUETTE,A PURSE FULL OF SILVER COINS,A POUCH FILLED WITH OPALS,A LARGE GOLD EARRING,A SMALL BAG OF GOLD COINS 4750 DATA A LARGE RUBY,A $HUGE$ BLACK PEARL,>> A PLATINUM ARMBAND <<,** A GIANT BLUE SAPPHIRE **,$ A FLAWLESS GIANT EMERALD $,$$ AN ENORMOUS ORANGE DIAMOND $$,TEN IRON QUARRELS,TEN MAGIC QUARRELS,FOUR VIALS OF TANA POWDER 4755 DATA A VIAL OF HEALING ELIXIR 4760 DATA THE MAGIC LAMP,TC 4770 DATA 0,0,0,1,2,1,4,2,8,2,12,3,16,4,28,7,40,10,60,15,100,20,160,30,200,40,260,75,300,120,400,180,0,5,0,10,0,11,0,12,0,30,10000,2000 4775 DATA 1,.7,.9,.8,2.5,.7,1,.7,.6,2,.8,.8,.8,1,2.5,.9,.6,1,.9,3 4780 DATA IMP,I,.1,SKELETON,S,.2,GOBLIN,G,.31,ZOMBIE,Z,.44,VAMPIRE,V,.62,GIANT SPIDER,#,.68,MUMMY,M,.78,TROLL,T,.85,OGRE,O,.97,WRAITH,W,1.45,AFREET,A,2,DRAGON,D,4,ROGUE DRAGON,R,8 4785 DATA 1,4,4,40,2000 4790 DATA ONE ,TWO ,THREE ,FOUR ,FIVE ,SIX ,SEVEN ,EIGHT ,NINE ,TEN ,ELEVEN ,TWELVE ,THIRTEEN ,FOURTEEN ,FIFTEEN ,SIXTEEN 4727 DATA IRON QUARRELS,MAGIC QUARRELS,TANA POWDER,HEALING ELIXIR,STRENGTH POTION 4800 DATA HUMAN,HUMANS,1ST,3RD,2ND,3RD,5,ELF,ELVES,4TH,1ST,4TH,4TH,4,DWARF,DWARVES,3RD,2ND,2ND,1ST,5,HOBBIT,HOBBITS,2ND,4TH,1ST,2ND,6 4805 REM 0 4810 PRINT "OPEN";H$ 4815 PRINT "DELETE";H$ 4820 PRINT "OPEN";H$ 4825 PRINT "WRITE";H$ 4830 PRINT ST: PRINT INT (EP): PRINT GP: PRINT A1: PRINT A2: PRINT TP: PRINT PT: PRINT RC: PRINT DA%: PRINT SP$ 4832 GOSUB 4842 4835 PRINT "CLOSE";H$ 4840 RETURN 4842 X(0) = DE%:X(1) = FA%: FOR I = 0 TO 6: PRINT X(I): NEXT I: RETURN 4845 PRINT "OPENEP" 4850 PRINT "DELETEEP" 4855 PRINT "OPENEP" 4860 PRINT "WRITEEP" 4865 PRINT INT (EP) 4870 PRINT H$ 4875 PRINT RC 4880 PRINT DA% 4885 PRINT SP$ 4887 GOSUB 4842 4890 PRINT "CLOSEEP" 4891 IF QT% = 0 THEN 4895 4892 QB% = 16 * INT ( PEEK (49204) / 16) + QB%: IF QS% THEN QS% = PEEK (49206) + 128: POKE 49206,QS% 4894 POKE 49204,QB%: POKE 49186,QT% 4895 PRINT CHR$ (4);"RUN HHS" 4900 RETURN 4905 REM BUY 4910 BI$ = "THE BAZAAR": IF HQ% THEN BI$ = "A HOSPICE " 4915 PRINT : PRINT "YOU ARE AT "BI$". PRICES HERE ARE ":DD% = 1 + HQ% + (RM > 500) 4920 FOR I = 1 TO 5:OF% = DD% * P%(I): PRINT " "I". "P$(I); TAB( 30 - (OF% > 9) - (OF% > 99) - (OF% > 999));OF%" DENAR";:C$ = "S": IF OF% = 1 THEN C$ = " " 4930 PRINT C$: NEXT I 4935 PRINT "OR 6. TO LEAVE" 4940 POKE 34,20: IF X(2) THEN 6500 4941 IF FA% OR (DE% < 60) THEN 4945 4942 FA% = 1 4943 HOME : PRINT "YOU HAVE COMPLETED YOUR ARMOR!!": GOSUB 4730: VTAB 3: HTAB 1: CALL - 868: PRINT "DRAGON FIRE ARMOR":FD% = 60 4945 HOME :P9 = 0: VTAB 21: PRINT " "H$", SIR, WHAT ITEM WOULD YOU": PRINT " LIKE TO PURCHASE? ";: GET A$:IT = VAL (A$): IF IT < 1 OR IT > 6 THEN CALL 65338: GOTO 4945 4950 IF IT = 6 THEN RETURN 4955 P1 = P%(IT) * DD%: HTAB 1: VTAB (13 + IT): PRINT ">>" 4960 HOME : VTAB 21: PRINT "AT ONLY "P1" GOLD APIECE, HOW MANY": INPUT "WILL YOU BUY? ";A$:NM = VAL (A$):NM = INT ( ABS (NM)) 4965 P1 = P1 * NM:OP = P1:XP = 0:O5 = RND (1) * 4: HOME : IF NM = 0 THEN PRINT " PLEASE TRY TO MAKE UP YOUR MIND!! ": GOSUB 5080: GOSUB 4730: GOTO 4945 4970 PRINT "THE USUAL PRICE IS "P1" GOLD." 4975 PRINT "HOW MUCH WILL YOU GIVE ME,": PRINT H$;: INPUT "? ";A$:A = INT ( ABS ( VAL (A$))):JJ$ = "": IF A < .6 * OP THEN JJ$ = "NICE " 4980 IF A = > P9 + (P1 - P9) / 2 THEN P9 = A:O5 = O5 - 1 4985 O5 = O5 + 1 4990 IF A < OP / 2 OR (A < P1 AND O5 > 9) THEN HOME : PRINT : PRINT "FORGET IT!!!": GOSUB 5085: GOTO 5045 4995 NE$ = "TOO LITTLE, " + H$ + ".": IF RND (1) > .6 THEN NE$ = "NOT ENOUGH!" 5000 IF A > = P1 AND GP < P1 THEN HOME : PRINT "SORRY, I DON'T EXTEND CREDIT.": GOSUB 5085: GOTO 5045 5005 IF A > = P1 THEN HOME : PRINT : PRINT "YOU GOT A ";JJ$;"DEAL!!!": GOSUB 5085: GOTO 5025 5010 Y = A / P1: IF RND (1) > Y + .1 THEN HOME : PRINT NE$:P1 = INT ((OP + P1) / 2): GOTO 4975 5015 P1 = INT ((HQ% * 3 * P1 + P1 + A) / (2 + HQ% * 3)): IF A > = P1 THEN 5000 5020 HOME : PRINT "HOW ABOUT ";P1;"? ": GOTO 4975 5025 GOSUB 5080: IF IT = 5 THEN XP = 8 + INT ( RND (1) * 9) 5030 GP = GP - P1 5035 A1 = A1 + NM * (IT = 1):A2 = A2 + NM * (IT = 2):TP = TP + NM * (IT = 3):PT = PT + NM * (IT = 4) 5040 GOSUB 5055: GOTO 4945 5045 GOSUB 5080: GOTO 4945 5050 REM MKT.DISP UPDATE 5055 POKE 32,18: VTAB 4: PRINT A1;" ": PRINT A2;" ": PRINT TP;" ": PRINT PT;" ": POKE 32,0 5060 VTAB 9: HTAB 1: GOSUB 4040 5065 HOME 5070 RETURN 5075 REM >> BLANK 5080 HTAB 1: VTAB 13 + IT: PRINT " ": RETURN 5085 FOR TT = 1 TO 300: NEXT TT: RETURN 5090 REM 5095 REM ONERR 5100 ET% = PEEK (222): IF (ET% < > 5) AND (ET% < > 11) THEN PRINT : PRINT "ERROR #";ET%;" KEY> ";: GET Q$: PRINT : GOTO 5120 5101 IF ET% = 11 THEN PRINT : PRINT "ANCIENT CUSTOM REQUIRES THAT A HERO'S","NAME CONSIST OF 3-11 LETTERS.": GOTO 5120 5105 IF NC% THEN 4275 5110 PRINT : INVERSE : PRINT "THIS CHARACTER DOES NOT EXIST!!!": NORMAL 5115 PRINT CHR$ (4);"DELETE";H$ 5120 GOSUB 5085 5125 ONERR GOTO 5100 5130 IF ET% = 11 THEN PRINT : PRINT "KEY > ";: GOSUB 7100: GOTO 4230 5135 REM CATALOG 5140 PRINT : PRINT "CATALOG? (Y/N) ";: GET A$: IF A$ < > "Y" THEN 4230 5145 PRINT : PRINT CHR$ (4);"CATALOG" 5155 GOTO 4225 5200 VTAB 22: HTAB 1 5204 PRINT TAB( 9 - Z% * 3);"READY TO CONTINUE? (Y/N) ";: GET Q$: RETURN 6000 GR : CALL 23252: HOME 6030 FOR J = 1 TO 9 6050 F% = 18:G% = 9 6060 FOR I = F% TO 48 STEP 6: & TI,G%: NEXT I 6070 NEXT J 6100 VTAB 22: HTAB 7: FLASH : PRINT " T H E C R O W N !!! "; 6110 X(2) = 1 6200 FOR I = 1 TO 1500: NEXT I: HOME 6210 VTAB 23: HTAB 1: SPEED= 120 6220 NORMAL : HOME : PRINT : PRINT H$; 6230 GOSUB 300: PRINT ", YOUR QUEST TO RECOVER": PRINT "THE MEGA-CROWN IS COMPLETED!!": GOSUB 4730: HOME : PRINT : PRINT "THE BALANCE OF TECHNOLOGY & MAGIC IS","RESTORED FOR YET ANOTHER CYCLE.": GOSUB 4730 6240 HOME : PRINT "THE POWER OF THE CROWN WISKS YOU FROM","THE DREAD MAZE TO THE PALACE OF THE","EMPEROR.": GOSUB 4730: HOME 6250 ST = ST + 100: PRINT "HERE THE LEGENDARY WUMPUS OF KIM INVESTS";"YOU INTO THE FRATERNITY OF TECHNOLOGY","AND MAGIC, PRESENTING YOU WITH A WAND","ENCRUSTED WITH ORANGE DIAMONDS!!";: GOSUB 4730: HOME 6260 PRINT "YOUR STRENGTH SURGES TO ";ST;".": GOSUB 5085 6265 PRINT "THE EMPEROR TELLS YOU THAT HENCEFORTH","YOU SHALL BE A PRINCE OF THE REALM AND","GIVES YOU A CONTINENT WITH ALL ITS","WEALTH AS YOUR DEMESNE!!!";:EP = EP + 5000:GP = GP + 10 6270 GOSUB 4730: HOME : PRINT : PRINT "RULE WELL AND LONG PRINCE ";H$;"!!!": GOSUB 4730 6290 SPEED= 255: TEXT : HOME :DA% = 167: GOTO 4480 6500 HOME : SPEED= 120 6505 PRINT "WELCOME BACK TO THE BAZAAR OF THE CROWN","QUEST, PRINCE ";H$;"!": GOSUB 4730 6510 HOME : PRINT "NATURALLY YOU ARE AWARE THAT NO PRINCE","OF THE REALM ENTERS THE CROWN MAZE.": GOSUB 4730 6515 HOME : PRINT "THERE ARE, HOWEVER, CERTAIN SAYINGS IN","STRANGE PLACES THAT A QUEST WORTHY OF","YOUR GREAT POWERS YET AWAITS THE","MIGHTY PRINCE ";H$;"!": GOSUB 4730: GOSUB 4730: SPEED= 255: TEXT : HOME : RUN 1 7000 DA% = 167: GOTO 4480 7100 TT = PEEK (49168): GET Q$: PRINT : RETURN 7777 PRINT CHR$ (4)"OPENG": PRINT CHR$ (4)"READG": INPUT QT%,QB%,QS%: PRINT CHR$ (4)"CLOSE": PRINT CHR$ (4)"BLOADSQX.5 BIN ($5800/$1800)": RETURN