1 REM QUEST!.BA V2.1 C FRED BROWN 1988 [73267,2450] 2 CLS:CLEAR1000:DEFINTA-Z:SCREEN0,0:CALL20318 3 VP$=CHR$(27)+"p":VQ$=CHR$(27)+"q":CS$=CHR$(27)+"J":CL$=CHR$(27)+"K":PRINTVP$;" QUEST!";SPACE$(33);VQ$ 4 DIMA(606),R(101),C(30),CR$(7),W$(9),A$(9),S$(20),R$(10):POKE63277,PEEK(61983) 5 FORI=1TO7:READCR$(I):NEXT:FORI=1TO9:READW$(I):NEXT:FORI=1TO9:READA$(I):NEXT:K$="ZIEGFRIED" 6 FORI=1TO9:READM$(I):NEXT:FORI=1TO9:READO$(I):NEXT:FORI=1TO20:READS$(I):NEXT:FORI=1TO10:READR$(I):NEXT 7 DATA COMBAT,WISDOM,AGILITY,LUCK,HEALTH,GOLD,SPELLS 8 DATA Cleaver,Dagger,Axe,Club,Staff,Sword,Blade,Saber,Colt 45 9 DATA Wrappings,Buckler,Leather,Helm,Shield,Chainmail,Ringmail,Platemail,Magic Cloak 10 DATA RAT,SKELETON,GOBLIN,GUARD,HOBGOBLIN,ORC,SLIMER,TROLL,HYDRA 11 DATA a boot,old rations,a mirror,blood,a used torch,a footprint,a sack,a skull,a bag 12 DATA XNQ[JW%NX%KNWXY,LTQI%NX%XJHTSI,NWTS%NX%YMNWI,YMJ%YWZJ%HWT\S%NX%XNQ[JW 13 DATA YMJ%KFQXJ%HWT\S%NX%LTQI,INFRTSI%NX%IJFIQ^,ITSY%KJJI%YMJ%IWFLTS 14 DATA MNX%SFRJ%NX%_NJLKWNJI,YMJ%IWFLTS%MFX%F%PJ^,YMJ%PSNLMY%MFX%F%PJ^ 15 DATA YMJ%LTGQNS%PNSL%MFX%F%PJ^,IWNSP%IJJU%YMJ%\FYJW,IWNSP%STY%YMJ%\NSJ 16 DATA YMJ%RFLJ%UTNSYX%YT%IJFYM,YMJ%WJI%QJ[JW%GWNSLX%UFNS,YMJ%LWJJS%QJ[JW%GWNSLX%MJQU 17 DATA YMJ%WJI%GZYYTS%GWNSLX%MJQU,YMJ%LWJJS%GZYYTS%GWNSLX%UFNS,YMWJJ%PJ^X%\NQQ%ZSQTHP%YMJ%HWT\S,FWJ%\J%MF[NSL%KZS%^JYD 18 DATA the Crystal Cave,the Sysop's Corner,the Den of Inequity,the Radio Shack 19 DATA the Ogre's Hole,the Oval Office,the Silver Shaft,the Blue Lagoon,the Mage's Room,the Outhouse 20 X=FRE(A$):PRINT@40,CS$:PRINT"[F1]: LOAD CHARACTER" 21 PRINT"[F2]: NEW CHARACTER":PRINT"[F4]: BEGIN":PRINT"[F5]: SAVE CHARACTER" 22 PRINT"[F8]: MENU":PRINT@565,VP$;" PRESS [CAPS LOCK]! ";VQ$ 23 KEYON:ONKEYGOSUB25,27,,32,30,,,24:GOTO23 24 MENU 25 PRINT@560,CS$;"Loading..." 26 OPEN"CHARSV"FORINPUTAS1:INPUT#1,N$:FORI=1TO30:INPUT#1,C(I):NEXT:CLOSE:GOTO32 27 PRINT@560,CS$;"NAME:";:INPUTN$ 28 FORI=1TO5:C(I)=RND(1)*9+1:NEXT 29 C(5)=C(5)+9:C(6)=C(5):C(7)=100+RND(1)*200:C(11)=1:C(12)=1:GOTO32 30 PRINT@560,CS$;"Saving..." 31 OPEN"CHARSV"FOROUTPUTAS1:PRINT#1,N$:FORI=1TO30:PRINT#1,C(I);",";:NEXT:CLOSE:GOTO20 32 PRINT@40,CS$:GOSUB207:LINE(0,80)-(239,80):LINE(100,0)-(100,80):LINE(150,20)-(200,70),1,B 33 PRINT@229,CHR$(148):PRINT@65,"TAVERN":IFC(16)THEN257 34 PRINT@440," [Q]UIT [G]AMBLE [B]UY"," [R]EST [D]EPART [T]RAIN [P]ACK";CS$ 35 I$=INPUT$(1):PRINT@440,CS$;:ONINSTR("QTGBRPD",I$)GOTO20,37,41,45,76,79,80 36 BEEP:GOTO34 37 PRINT"COST IS 1000 GOLD." 38 PRINT"[C]OMBAT [W]ISDOM [A]GILITY [L]UCK" 39 I$=INPUT$(1):IFC(7)<1000THENBEEP:GOTO34ELSET=INSTR("CWAL",I$) 40 C(7)=C(7)-1000:C(T)=C(T)+1:GOSUB207:GOTO34 41 PRINT@440,CS$;"AMOUNT WAGERED"; 42 INPUTG:IFG>C(7)THENBEEP:GOTO41 43 W=0:IFC(4)/10>RND(1)THENW=G*2*RND(1):ELSEC(7)=C(7)-G 44 PRINT"WINNINGS:";W:C(7)=C(7)+W:GOSUB207:GOSUB219:GOTO34 45 PRINT@440,CS$;C$;" [A]RMOR [W]EAPON [S]CROLL"," [T]ORCH [R]ATION [P]OINTS" 46 I$=INPUT$(1):PRINT@440,CS$;:ONINSTR("AWSTRP",I$)GOTO48,53,59,66,69,72 47 BEEP:GOTO34 48 FORI=1TO4:CT(I)=(I+3)^(3+RND(1)):PRINTI;A$(I);TAB(15);"GOLD:";CT(I),:NEXT 49 PRINT" SELECT ARMOR ";:I$=INPUT$(1):IN=VAL(I$) 50 IFC(7)4THENBEEP:GOTO75 52 C(7)=C(7)-CT(IN):C(9)=IN:GOTO75 53 FORI=1TO4:CT(I)=(I+3)^(3+RND(1)) 54 PRINTI;W$(I);TAB(15);"GOLD:";CT(I),:NEXT 55 PRINT" SELECT WEAPON ";:I$=INPUT$(1):IN=VAL(I$) 56 IFC(7)4THENBEEP:GOTO75 58 C(7)=C(7)-CT(IN):C(10)=IN:GOTO75 59 PRINT"COST IS 250 GOLD PER SCROLL Y/N?" 60 I$=INPUT$(1):IFI$<>"Y"THEN34 61 IFC(7)<250THENBEEP:GOTO34 62 C(7)=C(7)-250:S=RND(1)*20+1:S$=S$(S) 63 FORI=1TOLEN(S$) 64 IFC(2)/8>RND(1)THENX$=CHR$(ASC(MID$(S$,I,1))-5)ELSEX$=MID$(S$,I,1) 65 PRINTX$;:NEXT:GOSUB219:GOTO75 66 PRINT"COST IS 50 GOLD PER TORCH" 67 PRINT"HOW MANY (1-9)";:I$=INPUT$(1):IN=VAL(I$):IF50*IN>C(7)THENBEEP:GOTO34 68 C(7)=C(7)-50*IN:C(11)=C(11)+IN:GOTO75 69 PRINT"COST IS 60 GOLD PER RATION" 70 PRINT"HOW MANY (1-9)";:I$=INPUT$(1):IN=VAL(I$):IF60*IN>C(7)THENBEEP:GOTO34 71 C(7)=C(7)-60*IN:C(12)=C(12)+IN:GOTO75 72 PRINT"COST IS 500 GOLD PER POINT" 73 PRINT"HOW MANY (1-9)";:I$=INPUT$(1):IN=VAL(I$):IF500*IN>C(7)THENBEEP:GOTO34 74 C(7)=C(7)-500*IN:C(8)=C(8)+IN 75 GOSUB207:GOTO34 76 PRINT@440,CS$;"COST IS 50 GOLD PER DAY" 77 PRINT"DAYS? (1-9)";:I$=INPUT$(1):D=VAL(I$):IF50*D>C(7)THENBEEP:GOTO34 78 FORI=1TOD:C(7)=C(7)-50:C(6)=C(6)+1:GOSUB207:NEXTI:GOTO34 79 GOSUB212:GOTO34 80 R=1:PRINT@65,"MAZE ":IFFLTHEN83 81 PRINT@560,CS$;"Loading Maze...":FL=1 82 FORI=1TO606:READA(I):PRINT@580,I:NEXT:CLOSE#1 83 IFC(11)THENTR=20 84 IFC(12)THENRA=30 85 GOTO96 86 PRINT@440,"[P]ACK [M]AGIC ";CHR$(155);CHR$(152);CHR$(154);CHR$(153);CS$ 87 I$=INKEY$:IFI$=""THEN87ELSEIN=ASC(I$) 88 IFIN=80THENGOSUB212:GOTO86 89 IFIN=77THENGOSUB222:GOTO86 90 IFIN=28THENR=A(A+2) 91 IFIN=29THENR=A(A+4) 92 IFIN=30THENR=A(A+1) 93 IFIN=31THENR=A(A+3) 94 IFIN=27THENMENU 95 IFR=0THENBEEP:GOTO86 96 LINE(150,20)-(200,70),1,B:A=R*6-5 97 IFTR<1THEN103 98 IFA(A+1)THENLINE(170,20)-(180,20),0 99 IFA(A+2)THENLINE(200,40)-(200,50),0 100 IFA(A+3)THENLINE(170,70)-(180,70),0 101 IFA(A+4)THENLINE(150,40)-(150,50),0 102 TR=TR-1:IFTR<1THENGOSUB253 103 RA=RA-1:IFRA<1THENGOSUB255 105 IFR(R)THENPRINT@560,"THIS ROOM SEEMS FAMILIAR"ELSEPRINT@480,CS$ 106 IFA(R*6)THEN108ELSEIFRND(1)>.7THEN185 107 R(R)=1:GOTO87 108 PRINT@440,CS$;:IFA(R*6)>20THEN184 109 ONA(R*6)GOTO110,113,116,119,122,125,128,140,144,154,157,159,161,165,168,170,175,176,178,182 110 IFC(16)THEN86 111 PRINT"IN THE ROOM IS A SILVER CROWN","[T]AKE THE CROWN":I$=INPUT$(1):IFI$="T"THENC(16)=1 112 GOTO86 113 IFC(13)THEN86 114 PRINT"IN THE ROOM IS AN IRON KEY","[T]AKE THE KEY":I$=INPUT$(1):IFI$="T"THENC(13)=1 115 GOTO86 116 IFC(14)THEN86 117 PRINT"IN THE ROOM IS A SILVER KEY","[T]AKE THE KEY":I$=INPUT$(1):IFI$="T"THENC(14)=1 118 GOTO86 119 IFC(15)THEN86 120 PRINT"IN THE ROOM IS A GOLD KEY","[T]AKE THE KEY":I$=INPUT$(1):IFI$="T"THENC(15)=1 121 GOTO86 122 PRINT"THERE IS A LOCKED WOODEN DOOR" 123 PRINT"[U]SE A KEY":I$=INPUT$(1):IFI$<>"U"THENR=46:GOTO258 124 GOSUB131:IFK=2THEN86ELSE139 125 PRINT"THERE IS A LOCKED METAL DOOR" 126 PRINT"[U]SE A KEY":I$=INPUT$(1):IFI$<>"U"THENR=46:GOTO258 127 GOSUB131:IFK=3THEN86ELSE139 128 PRINT"THERE IS A LOCKED SILVER DOOR" 129 PRINT"[U]SE A KEY":I$=INPUT$(1):IFI$<>"U"THENR=46:GOTO258 130 GOSUB131:IFK=1THEN86ELSE139 131 PRINT@440,"USE:";CS$ 133 IFC(13)THENPRINT"[I]RON KEY" 134 IFC(14)THENPRINT"[S]ILVER KEY" 135 IFC(15)THENPRINT"[G]OLD KEY" 136 U$=INPUT$(1):IFINSTR("ISG",U$)THEN137ELSE138 137 K=INSTR("ISG",U$):IFC(K+12)THENRETURN 138 SOUND4000,5:PRINT@440,CS$;"YOU DON'T HAVE THAT KEY!":GOSUB219:R=46:GOTO96 139 SOUND2000,10:PRINT@440,CS$;"OOPS...":GOSUB219:C(6)=1:R=46:GOSUB207:GOTO96 140 CT=0:NA$="":PRINT"IN THE ROOM IS A KNIGHT","He asks: What is my name?" 141 INPUTNA$:IFNA$=K$THENPRINT"Pass Friend.":GOTO218 142 FORI=1TOLEN(NA$):IFINSTR(K$,MID$(NA$,I,1))THENCT=CT+1 143 NEXT:CT=CT/9*100:PRINT"Well,"CT"percent correct...";CL$:GOSUB219:R=53:GOTO96 144 IFC(25)THEN86 145 PRINT"IN THE ROOM IS A VERY LARGE DRAGON" 146 PRINT@480,"He asks: what will you give me?" 147 PRINT"GIVE [R]ATION [G]OLD [N]OTHING";CS$; 148 I$=INPUT$(1):ONINSTR("RGN",I$)GOTO149,152,151 149 IFC(12)=0THEN151ELSEC(12)=C(12)-1 150 IFC(4)/10>RND(1)THENPRINT@560,"I'M STILL HUNGRY!":GOSUB219:GOTO146 151 ML=30:MR=20:MW=9999:CR=C(1)+C(9):GOSUB244:C(25)=1:GOTO86 152 C=C(7):C(7)=0:IFC>1000THEN218 153 PRINT@560,"NOT ENOUGH FOOLISH HUMAN!"::GOSUB219:GOTO151 154 IFC(26)THEN86 155 PRINT"IN THE ROOM IS THE GOBLIN KING" 156 ML=20:GOSUB238:C(26)=1:GOTO86 157 PRINT"IN THE ROOM IS A POOL OF WINE","[D]RINK FROM THE POOL":I$=INPUT$(1):IFI$<>"D"THEN86 158 C(6)=C(6)/2:PRINT"OUCH...":GOTO218 159 PRINT"IN THE ROOM IS A POOL OF WATER","[D]RINK FROM THE POOL":I$=INPUT$(1):IFI$<>"D"THEN86 160 C(6)=C(5):GOTO218 161 PRINT"IN THE ROOM ARE THREE BUTTONS","PUSH: [R]ED BUTTON [G]REEN BUTTON"," [Y]ELLOW BUTTON" 162 I$=INPUT$(1):ONINSTR("RGY",I$)GOTO160,158,164 163 BEEP:GOTO86 164 SOUND2000,5:R=82:GOTO96 165 PRINT"IN THE ROOM ARE TWO LEVERS" 166 PRINT"PULL [R]ED LEVER [G]REEN LEVER":I$=INPUT$(1):ONINSTR("RG",I$)GOTO158,160 167 BEEP:GOTO86 168 PRINT"IN THE ROOM IS A GOLDEN CROWN" 169 PRINT"[T]AKE THE CROWN":I$=INPUT$(1):IFI$="T"THEN158ELSE86 170 PRINT"IN THE ROOM IS A WOODEN CHEST" 171 PRINT"[O]PEN THE CHEST":I$=INPUT$(1):IFI$<>"O"THEN86 172 IFC(4)/10"R"THEN86ELSEPRINT@440,CS$ 191 IFC(4)/10RND(1)THENX$=CHR$(ASC(MID$(S$,I,1))-5)ELSEX$=MID$(S$,I,1) 195 PRINTX$;:NEXT:GOTO218 196 PRINT"You find a potion!","[D]RINK":I$=INPUT$(1):IFI$<>"D"THEN86 197 IFC(4)/10"R"THEN86 200 IFC(4)/10C(5)THENC(6)=C(5)ELSEIFC(7)>9999THENC(7)=9999 208 PRINT@40,N$:FORII=1TO5:PRINT@II*40+40,CR$(II);TAB(7);C(II):NEXT 209 PRINTCR$(6);TAB(7);C(7);" ":PRINTCR$(7);TAB(7);C(8):PRINT@250,"/";C(6):IFC(6)<1THEN211 210 RETURN 211 PRINT@440,CS$;"You are dead!","Sorry about that..."," Better luck next time!";:END 212 PRINT@440,CS$;"ARMOR: ";A$(C(9));" WEAPON: ";W$(C(10)):PRINT"TORCHES:";C(11);" RATIONS: ";C(12) 213 IFC(13)THENPRINT"IRON KEY "; 214 IFC(14)THENPRINT"SILVER KEY "; 215 IFC(15)THENPRINT"GOLD KEY "; 216 IFC(16)THENPRINTVP$;" CROWN ";VQ$ 217 GOSUB219:RETURN 218 GOSUB207:GOSUB219:GOTO86 219 FORII=1TO5:PRINT@229,CHR$(255) 220 FORJJ=1TO200:NEXT:PRINT@229,CHR$(148) 221 FORJJ=1TO200:NEXT:NEXT:RETURN 222 PRINT@440,CS$;"SELECT SPELL:" 223 PRINT"[R]OOM: 1 PT [T]RCH: 2 PTS" 224 PRINT"[F]OOD: 3 PTS [H]EAL: 4 PTS" 225 PRINT"[P]ORT: 5 PTS [K]ILL: 6 PTS"; 226 I$=INPUT$(1):SV=INSTR("RTFHPK",I$):IFC(8)101ORRN<1THENRN=R 233 R=RN:SOUND2000,5:GOTO96 234 C(6)=C(5):PRINT"The pause that refreshes!":GOTO236 235 ML=ML/3:PRINT"Prepare to die monster scum!" 236 GOSUB207:GOSUB219:RETURN 237 ML=2*M+RND(1)*3 238 MR=ML-C(10):CR=C(1)+C(9):G=RND(1)*100*ML+RND(1)*100:IFMR<1THENMR=1 239 PRINT@480,"[F]IGHT [E]VADE [M]AGIC";CL$; 240 I$=INPUT$(1):ONINSTR("FEM",I$)GOTO244,252,243 242 BEEP:GOTO239 243 GOSUB222 244 FORI=1TO10:SOUND1000,2 245 PRINT@520,CHR$(148);":";STRING$(C(6),255);CL$ 246 PRINT@560,CHR$(145);":";STRING$(ML,239);CL$ 247 IFCR*RND(1)>MR*RND(1)THENML=ML-1 248 IFMR*RND(1)>CR*RND(1)THENC(6)=C(6)-1:GOSUB207 249 IFML<1THEN251 250 NEXTI:GOTO239 251 PRINT@440,CS$:PRINT"You find";G;"Gold Pieces!":C(7)=C(7)+G:GOSUB207:GOSUB219:RETURN 252 IFC(3)/10>RND(1)THEN218ELSE244 253 PRINT@560,"You use a torch.";CL$:GOSUB219:C(11)=C(11)-1:IFC(11)<1THENC(11)=0:RETURN 254 TR=20:GOSUB219:RETURN 255 IFC(12)=0THENPRINT@560,"You are starving.";CL$:C(6)=C(6)-1:GOTO218 256 C(12)=C(12)-1:RA=30:PRINT@560,"You use a ration.";CL$:GOTO218 257 PRINT@440,CS$;"CONGRATULATIONS!","You have completed the Quest.":END 258 PRINT@440,CS$:GOTO96 300 DATA 1,0,0,2,0,20,2,1,3,12,0,0,3,0,4,0,2,0,4,0,5,0,3,0,5,0,6,15,4,0 301 DATA 6,0,7,0,0,0,7,0,8,0,6,0,8,0,9,18,7,0,9,0,10,0,8,0,10,0,11,0,9,0 302 DATA 11,0,7,0,10,0,12,2,0,22,0,0,13,0,14,0,0,21,14,0,15,0,13,0,15,5,16,25,14,0 303 DATA 16,0,17,0,15,0,17,0,18,27,16,0,18,8,19,0,17,0,19,0,20,0,18,24,20,0,21,0,19,0 304 DATA 21,0,0,31,20,10,22,0,23,32,0,0,23,0,24,0,22,0,24,0,25,34,23,0,25,15,26,0,24,0 305 DATA 26,0,0,36,25,0,27,17,0,37,0,0,28,0,0,38,0,13,29,0,30,39,0,0,30,0,0,40,29,0 306 DATA 31,21,0,0,0,2,32,22,0,0,0,0,33,0,0,43,0,4,34,24,0,44,0,0,35,0,36,0,0,16 307 DATA 36,26,0,0,35,0,37,27,0,0,0,25,38,28,0,48,0,0,39,29,0,0,0,18,40,30,0,50,0,0 308 DATA 41,0,92,0,0,22,42,32,0,52,51,0,43,33,0,53,0,8,44,34,0,54,0,0,45,0,46,55,0,0 309 DATA 46,0,47,56,45,0,47,0,48,0,46,26,48,38,49,0,47,0,49,0,50,0,48,0,50,40,51,0,49,0 310 DATA 51,0,42,0,50,0,52,42,53,0,0,27,53,43,0,0,52,0,54,44,0,64,0,0,55,45,0,65,0,0 311 DATA 56,46,0,66,0,5,57,0,0,67,0,11,58,48,59,0,0,0,59,0,60,0,58,0,60,0,61,0,59,23 312 DATA 61,0,59,71,60,0,62,0,63,72,91,0,63,0,64,0,62,0,64,54,0,0,63,0,65,55,0,75,0,0 313 DATA 66,56,0,76,0,6,67,57,0,77,0,0,68,0,69,78,0,0,69,0,70,79,68,9,70,0,0,0,69,3 314 DATA 71,61,0,81,0,0,72,62,0,82,0,0,73,0,0,83,0,17,74,0,75,0,0,29,75,65,0,85,74,0 315 DATA 76,66,0,86,0,7,77,67,0,87,0,30,78,68,0,88,0,0,79,69,0,0,0,15,80,0,81,90,0,0 316 DATA 81,71,0,0,80,0,82,72,0,0,0,0,83,73,84,0,0,19,84,0,85,0,83,0,85,75,0,95,84,0 317 DATA 86,76,0,96,0,0,87,77,88,97,0,0,88,78,89,0,87,0,89,0,90,99,88,0,90,80,91,0,89,0 318 DATA 91,0,62,0,90,0,92,0,93,0,41,0,93,0,94,0,92,28,94,0,95,0,93,0,95,85,0,0,94,0 319 DATA 96,86,0,0,0,1,97,87,98,0,0,0,98,0,0,0,97,12,99,89,100,0,0,0 320 DATA 100,0,101,0,99,0,101,0,0,0,100,14