10 ' ADV 20 ' 26 Nov 83 30 ' By Mike Berro 35 MAXFILES=1 40 CLEAR1500:DEFINT D,H,I,J,K,L,P,R,S,T 50 DIM A$(15),P$(2),EK$(2),EX$(2),D(9),IR(45),I(5),IT$(5),IS$(5),IP(5),PS(45),RA$(4) 60 KEY 1,"NORTH"+CHR$(13):KEY2,"SOUTH"+CHR$(13):KEY3,"EAST"+CHR$(13):KEY4,"WEST"+CHR$(13) 70 KEY5,"EXAMINE ":KEY6,"USE ":KEY7,"GET ":KEY8,"QUIT"+CHR$(13) 80 D$(0)="NORTH":D$(1)="SOUTH":D$(2)="EAST":D$(3)="WEST":D$(4)="NE":D$(5)="NW":D$(6)="SE":D$(7)="SW":D$(8)="UP":D$(9)="DOWN" 90 RA$(0)="Beginner":RA$(1)="Novice":RA$(2)="Amateur":RA$(3)="Experienced":RA$(4)="Dungeon Master" 100 RN=1:R=1:GOSUB1520:PF=100+RN:P$(2)="Welcome to the Dungeon of the Absurd!":GOTO490 110 OPEN"ADV"+RIGHT$(STR$(INT(RN/10)),1)+".DO"FORINPUTAS1 120 INPUT#1,I:IFI=RNTHEN140 130 SOUND1,1:LINEINPUT#1,A$:IFA$<>"="THEN130ELSE120 140 RN=I:INPUT#1,RT$:I=0 150 SOUND1,1:LINEINPUT#1,A$(I):IFA$(I)<>"-"THENSOUND1,1:I=I+1:GOTO150 160 ED=I-1:FORI=0TO9:INPUT#1,D(I):NEXTI 170 LINEINPUT#1,WY$ 180 INPUT#1,PW$,PS,PF 190 INPUT#1,IT$,IS$,IP,IE 200 IFIR(RN)=1THENIT$="" 210 IFIR(RN)=2THENIP=0 220 IFPS(RN)=2THENP=1 230 FORI=0TO2:LINEINPUT#1,EK$(I):LINEINPUT#1,EX$(I):NEXTI 240 LINEINPUT#1,RK$:LINEINPUT#1,RD$:INPUT#1,HP:LINEINPUT#1,HP$ 250 FORI=0TO2:LINEINPUT#1,P$(I):NEXTI 260 CLOSE:RETURN 270 PRINT"You can't go that way!":GOTO590 280 PRINTA$;"?":GOTO590 290 PRINTA$;" what?":GOTO590 300 PRINT"Be more specific!":GOTO590 310 PRINT"===>>> Press ENTER for more..."; 320 A$=INKEY$:IFA$<>CHR$(13)THEN320ELSERETURN 330 PRINTUSING"You scored +### points in ### turns.";SC,TU 340 IFTU>0THENZ=2.4*SC/TUELSEZ=0 350 IFZ<0THENZ=0 360 IFZ>4THENZ=4 370 IFZ>3ANDSC<200THENZ=3 380 PRINT"Rank = ";RA$(Z) 390 RETURN 400 CALL16959:CALL16954:CALL17001:IFRT$=""THEN440 410 PRINT@280,SPACE$(40);:PRINT@280," ";RT$;" ";:PRINT@310,USING" +###";SC;:PRINT"/";:PRINTUSING"###";TU; 420 IFINT(RN/4)*4=RNTHENPRINT@308,CHR$(129); 430 CALL16949 440 CALL16964:CALL17006:RETURN 450 IFITTHENPRINT"You are carrying the following:"ELSEPRINT"You aren't carrying anything!":GOTO480 460 J=5:IFIT-1RNTHENPRINT@130,"Trundle, trundle..." 500 IFPF-100=RNTHENPRINT@140-LEN(P$(2))/2,P$(2) 510 P=0:GOSUB110 520 GOSUB400:CLS 530 FORI=0 TO ED:IFA$(I)="+"THENGOSUB310:CLS:GOTO550 540 PRINTA$(I) 550 NEXT I 560 IFP=1ANDP$(2)<>""THENPRINTP$(2) 570 IFP=0ANDP$(0)<>""THENPRINTP$(0) 580 IFIT$<>""ANDIE<>1THENPRINT"There is a ";IS$;" here!" 590 ONPI+1GOTO630,600,610,620 600 SOUND6269,1:PI=2:GOTO630 610 SOUND3134,1:PI=3:GOTO630 620 IFINT(RN/4)*4<>RNTHEN1560ELSEPI=0:GOSUB1520 630 IFSC=200THEN1610 640 Z%=CSRLIN*40:GOSUB400:PRINT@Z%,"";:A$="":INPUT"--->";A$:IFA$=""THEN590 650 I=INSTR(A$," THE "):IFI=0THEN660ELSEB$=LEFT$(A$,I):A$=B$+RIGHT$(A$,LEN(A$)-LEN(B$)-4) 660 I=INSTR(A$,"ERN"):IFI=0OR(INSTR(A$,"WALL")=0ANDINSTR(A$,"DOOR")=0)THEN680 670 B$=LEFT$(A$,I-1):A$=B$+RIGHT$(A$,LEN(A$)-LEN(B$)-3) 680 TU=TU+1:I=INSTR(A$," "):IFI=0THENA1$=A$:A2$="":GOTO700 690 A1$=LEFT$(A$,I-1):A2$=RIGHT$(A$,LEN(A$)-LEN(A1$)-1) 700 IFA1$="TAKE"THENA1$="GET" 710 L1=LEN(A1$):L2=LEN(A2$) 730 IFA1$="SAY"THENPRINTCHR$(34);A2$;CHR$(34):IFA$<>PW$THEN590 740 IFA1$<>"USE"THEN810 750 IFL2<3THEN280 760 J=0:FORI=0 TO IT-1:IFINSTR(A2$,I$(I))>0ANDI$(I)<>""THENJ=1 770 NEXT I:IFJ=0THENA$=A2$:GOTO280 780 IFPW$=""THEN800 790 IFLEFT$(PW$,4)="USE "ANDINSTR(A2$,RIGHT$(PW$,LEN(PW$)-4))<>0THEN820 800 PRINT"No effect.":GOTO590 810 IFPW$=""ORINSTR(A$,PW$)=0THEN880 820 IFPS<-99THEN1460 830 IFPS(RN)=1ORP=1THENPRINT"You've already done that!":GOTO590 840 P=1 850 PRINTP$(1):IFPS(RN)=0THENPS(RN)=PF:SC=SC+PS 860 IFPF=3THENDR=1:GOTO1290 870 IFPF<100THENGOTO590ELSERN=PF-100:GOSUB310:GOTO490 880 IFA1$="LOOK"ORA1$="L"ORA$="EXAMINE ROOM"THEN520 890 IFA1$="GO"THENA1$=A2$ 900 I=0 910 IFA1$<>D$(I)ANDA1$<>LEFT$(D$(I),1)THENI=I+1:IFI<10THEN910ELSE980 920 IFD(I)<0ANDP=1THENRN=-D(I):GOTO490 930 IFD(I)>0THEN970 940 IFD(I)=0ORWY$=""THEN270 950 PRINTWY$:GOTO590 960 IFPF=2ORPF=3THEN270 970 RN=D(I):GOTO490 980 IFA1$<>"HELP"THEN1020 990 IFHP$=""THENPRINT"There is no hint for you here!":GOTO590 1000 PRINTUSING"It will cost you ## points.";HP:INPUT"Do you want the hint(Y/N)";A$ 1010 IFA$="Y"THENPRINTHP$:SC=SC-HP:GOTO590ELSEIFA$="N"THEN1200ELSEGOTO1402 1020 IFA1$="QUIT"THEN1620 1030 IFA1$="READ"ANDL2=0THEN290 1040 IFA1$<>"READ"ORRK$=""THEN1070 1050 IFINSTR(A2$,RK$)>0THENPRINT"It says:":PRINTRD$:GOTO590 1060 A$=A2$:GOTO280 1070 IFA1$="EXAMINE"ANDL2=0THEN290 1080 IFA1$<>"EXAMINE"THEN1170 1090 IFA2$="WALL"ORA2$="DOOR"THEN300 1100 J=0:FORI=0 TO 2:IFEK$(I)=""THEN1140 1110 IFIE=1ANDI=0ANDIT$=""THEN1140 1120 IFINSTR(A2$,EK$(I))>0THENPRINTEX$(I):J=1 1130 IFIE=1ANDI=0THENI=1 1140 NEXT I 1150 IFJ=1THEN590 1160 PRINT"I see nothing special":PRINT"about the ";A2$:GOTO590 1170 IFA1$<>"GET"THEN1230 1180 IFINSTR(A2$,IT$)=0ORIT$=""ORL2<3THENPRINT"Can't get that!":GOTO590 1190 IFIT=5THENPRINT"You can't carry any more!":GOTO590 1200 PRINT"Taken!"; 1210 PRINT:IP(IT)=IP:I(IT)=RN:I$(IT)=IT$:IS$(IT)=IS$:IT=IT+1:IT$="":IR(RN)=1 1220 GOTO590 1230 IFA1$="KILL"THENPRINT"How?":GOTO590 1240 IFA1$="GO"THENPRINT"Where?":GOTO590 1250 IFA1$="OPEN"THENPRINT"It won't open.":GOTO590 1260 IFLEFT$(A1$,1)="I"THENGOSUB450:GOTO590 1270 IFA1$<>"DROP"THEN1370 1280 DR=0 1290 I=0:IFL2=0THEN300 1300 IFINSTR(A2$,I$(I))<>0ANDI$(I)<>""THEN1320 1310 I=I+1:IFI<5THEN1300ELSEA$=A2$:GOTO280 1320 IR(I(I))=0:IFRN=1THENIR(I(I))=1:GOTO1340 1330 IFI(I)=RNTHENIT$=I$(I) 1340 L=IP(I):IT=IT-1:FORJ=I TO 4:I$(J)=I$(J+1):IS$(J)=IS$(J+1):I(J)=I(J+1):IP(J)=IP(J+1):NEXT J:IFDR<>0THEN1360 1350 PRINT"Dropped.":IFRN=1THENSC=SC+L 1360 GOTO590 1370 RESTORE:READDR:I=0 1380 READA$:IFA$=A1$THEN1400 1390 I=I+1:IFI<>DRTHEN1380ELSE1420 1400 PRINT"Not interested!":GOTO590 1410 DATA 7,JUMP,READ,EAT,KICK,PULL,PUSH,SHIT 1420 TU=TU-1 1430 IFRND(1)<.65THENPRINT"What?":GOTO590 1440 IFRND(0)<.70THENPRINT"Don't be an idiot!!":GOTO590 1450 PRINT"I don't understand.":GOTO590 1460 ' Died 1470 PRINTP$(1):GOSUB310:PRINT:PRINT:PRINTP$(2) 1480 INPUT"Do you wish to start over(Y/N)";A$:IFA$="Y"THENRUN 1490 IFA$="N"THENMENUELSE1480 1500 IFIT=0THEN1520 1510 SOUND12538,2:PI=1 1520 TM$=TIME$:I=VAL(MID$(TM$,4,2)):J=VAL(LEFT$(TM$,2)):I=I+8:IFI<60THEN1540 1530 I=I-60:J=J+1:IFJ>23THENJ=0 1540 A1$=RIGHT$("0"+RIGHT$(STR$(I),LEN(STR$(I))-1),2):A2$=RIGHT$("0"+RIGHT$(STR$(J),LEN(STR$(J))-1),2) 1550 MID$(TM$,1)=A2$+":"+A1$:ON TIME$=TM$ GOSUB1500:TIME$ ON:RETURN 1560 SOUND783,1 1570 IFIT=0THENPI=0:GOTO590 1580 PRINT"<<<<<<< The Pirate has come! <<<<<<<" 1590 PI=RND(1)*IT:A2$=I$(PI):PI=0:L2=1:DR=1 1600 GOTO1290 1610 GOSUB400:CLS:PRINT@50,"<<< YOU HAVE WON! >>>":PRINT:GOSUB330:PRINT:GOSUB320:GOTO1640 1620 CALL16954:CLS:PRINT:GOSUB330:PRINT 1630 INPUT"Do you really want to quit(Y/N)";A$:IFA$="Y"THEN1640ELSEIFA$="N"THENPRINT:GOTO590ELSE1630 1640 KEY1,"List"+CHR$(13):KEY2,"Load"+CHR$(34):KEY3,"Save"+CHR$(34):KEY4,"Run"+CHR$(13) 1650 KEY5,"Cls"+CHR$(13)+"List":KEY6,"Llist"+CHR$(13):KEY7,"Cls "+CHR$(13)+"List ":KEY8,"Menu"+CHR$(13) 1660 MAXFILES=0:MENU