Quick viewing(Text Mode)

Temple of Apshai (DM Program)(ATASCII Listing).Txt

Temple of Apshai (DM Program)(ATASCII Listing).Txt

10 CLR :READ U1,U2,U3,U4,U5,U6,U7,U8,U10,U14,,,HUN,MSTR:DATA 1,2,3,4,5,6,7,8,10,14,26,60,100,7000 12 DIM TM(U5),ZA(U3),ZD(U5),A$(24),$(U1),$(18),(U4),(U4),RF(U3),RN(U3),S$(11),BL$( LS) 13 POKE 1586,U0:FOR I=U0 TO U3:RF(I)=U0:RN(I)=U0:NEXT I:=USR(1580,53248,U8) 14 BL$=" ------":FOR I=U1 TO U5:READ :TM(I)=J:NEXT I:DATA 10,13,2,1,1 16 KA=103*256:NO=KA:NT=U4*Q+KA:D1=U8*Q+KA:D2=12*Q+KA:MT=(U14+U2)*Q+KA:MN=MT+Q:NP= +Q:XP=NP+Q:YP=XP+Q:TR=YP+Q 18 XR=TR+Q:YR=XR+Q:KB=KA+2251:Y2=KA+1800:X=USR(1580,KA-Q,Q) 20 ZD(U0)=U3:ZA(U1)=U0:ZD(U1)=U0:ZA(U2)=U3:ZD(U2)=U3:ZA(U3)=-U6:ZD(U3)=- U2:ZD(U4)=U5:ZD(U5)=U5:GOTO 5000 25 DATA FLAME ,DUST ,MOLD ,PIT ,,SPEAR ,NEEDLE ,XBOW ,CAVEIN ,CEILING , 50 PC=PC-U1:POKE KB+U10+U14,PEEK(KB+U10+U14)-U1:POKE KA-92,PEEK(KA-92)- U1:RETURN 55 YY=W1-W2-U5:IF YM>YY THEN YM=YY:GOTO 57 56 IF YMXX THEN XM=XX:RETURN 58 IF XM

WM THEN AK=WM 5437 IF AKU2 OR (PEEK(KB+U10)>U0 AND IAPEEK(D1+K) AND P(KF)U3 THEN NS=NS-U4 5607 POKE NT+LR+NS*Q,U1:NS=U5:GOSUB 3000:GOTO MSTR 5620 XX=V2-XB-U2 5630 COLOR U5+59*(IJ=U0)-32*(RF(KF-U1)=U1 AND IJ=U0) 5632 I1=U3+IJ:YY=YB-W2-PEEK(D2+K):L=PEEK(D2+K)-PEEK(D1+K):GOSUB 101:RETURN 5640 XX=V1-XB:GOTO 5630 5660 YY=YB-W1 5670 COLOR U4+Q*(IJ=U0)-32*(RF(KF-U1)=U1 AND IJ=U0) 5672 I1=U1+IJ/U2:XX=V1-XB+PEEK(D1+K):L=(PEEK(D2+K)-PEEK(D1+K)):GOSUB 141:RETURN 5680 YY=YB-W2-U2:GOTO 5670 5700 K=KR+(KF-U1)*Q:IF PEEK(K+NT)=U3 AND 39*RND(U0)+U1<20+PEEK(KB+21) THEN POKE K+NT,U2:RF(KF-U1)=U1:GOTO 5710 5702 POSITION LS,U10:? "NOTHING":GOTO MSTR 5710 POSITION LS,U10:? "A SECRET DOOR";:IJ=-U2:LR=KR:ON KF GOSUB 5660,5620,5680,5640 5720 FOR J=U10 TO U0 STEP -U1:SOUND U0,J,U10,J:SOUND U1,U2*J,U10,U6:SOUND U2,J+U4,U10,J:SOUND U3,U10-J,U10,J+U4 5730 NEXT J:SOUND U3,U0,U0,U0:GOTO MSTR 5800 N=PEEK(TR+KR):POSITION LS,U10 5801 IF N=U0 OR ABS(XL-PEEK(XR+KR))>U3 OR ABS(YL-PEEK(YR+KR))>U3 THEN ? "YOU CAN'T";:GOTO MSTR 5802 POKE TR+KR,U0:POSITION LS,U10:? "TREASURE #";N;:POKE KA+N-81,PEEK(KA+N- 81)+U1 5803 WC=WC+PEEK(Y2+160+N):POSITION LS,U7:? "WGT:";WC;" LBS ":IN=U0 5804 GOSUB 680:I=PEEK(Y2+180+N):IF I>HUN THEN J=KB+I-81:POKE J,PEEK(J)+U1:J=KA+I-197:POKE J,PEEK(J)+U1:GOTO MSTR 5805 ON I+U1 GOTO MSTR,5810,5815,5820,5825,5830,5835,5806,5840,5845,5846,12000 5806 POKE KA-89,U1:GOTO MSTR 5810 J=INT(U5*RND(U0)+U1):POSITION LS,11:? J;" ITEM";:IF J>U1 THEN ? "S"; 5812 POKE KB+U6,PEEK(KB+U6)+J:GOTO MSTR 5815 PS=U4:GOTO MSTR 5820 POSITION LS,11:? "USE SWORD?";:GOSUB 500:IF L=U0 THEN 5820 5821 ? C$;:IF C$="Y" THEN PB=PB+SM:SM=U3*RND(U0)+U3*RND(U0)-U2:PB=PB- SM:WM=AS*(U7+SM)+0.5:IF SM<=U0 THEN 5823 5822 IF C$="Y" THEN SM=SM-INT(U2-PEEK(KA)/U2):IF SM>U1 THEN POSITION LS,11:? BL$;"IT GLOWS"; 5823 IF C$<>"Y" THEN POKE KA+N-81,PEEK(KA+N-81)-U1:WC=WC-PEEK(Y2+160+N) 5824 POSITION LS,U1:? BL$:GOTO MSTR 5825 J=19*RND(U0)+U1:GOSUB Q:POKE KB+13,PEEK(KB+13)+J:GOSUB 72:GOTO MSTR 5830 J=9*RND(U0)+U1:GOSUB Q:POKE KB+14,PEEK(KB+14)+J:GOSUB 74:GOTO MSTR 5835 POKE KA-90,U1:PA=PA+U1:GOTO MSTR 5840 POKE KA-88,U1:GOTO MSTR 5845 POKE KA-87,U1:GOTO MSTR 5846 PW=75:POKE KA+2235,PW:GOTO MSTR 5850 POSITION LS,U10:? "DROP WHAT?"; 5860 GOSUB 70:JJ=U10*J:GOSUB 70:JJ=JJ+J:IF JJ<21 THEN I=PEEK(KA+JJ-81):IF I>U0 THEN POKE KA+JJ-81,I-U1:GOTO 5864 5862 GOTO 5870 5864 WC=WC-PEEK(Y2+160+JJ):POSITION LS,U7:? "WGT:";WC;" LBS " 5866 IF PEEK(TR+KR)=U0 AND PEEK(Y2+180+JJ)=U0 THEN POKE TR+KR,JJ 5868 POKE XR+KR,XL:POKE YR+KR,YL:GOSUB 680 5869 SOUND U0,250,12,14:SOUND U1,U5,HUN,U5:FOR I=U1 TO U2:NEXT I:SOUND U0,U0,U0,U0:SOUND U1,U0,U0,U0 5870 POSITION LS,U0:? BL$:GOTO MSTR 5900 IF 99*RND(U0)+U1<0.3*(PEEK(KB+20)+PEEK(KB+22))*PEEK(Y2+284+MQ) THEN IN=U1:GOTO 5910 5902 GOTO MSTR 5910 POSITION LS,U10:? "PASS BY";:GOTO MSTR 6100 IF PEEK(KB+11)>U0 THEN POKE KB+11,PEEK(KB+11)-U1:J=U0:GOTO 6110 6102 GOTO 6150 6110 PC=PC+U1+J:IF PC>PH THEN PC=PH 6130 POSITION 33,U5:? INT(HUN*PC/PH);"% ";:GOTO MSTR 6140 I=KB+U6:IF PEEK(I)>U0 THEN POKE I,PEEK(I)-U1:J=U5*RND(U0)+U2:GOTO 6110 6150 POSITION LS,U10:? "NONE LEFT";:GOTO 5044 6200 JJ=PEEK(KB+21):POSITION LS,U0:? BL$:I=PEEK(NO+KR+Q*KF-Q) 6202 IF I=U0 OR PEEK(MN+I)=U0 OR 1000*RND(U0)>JJ*JJ+PEEK(KA-89)*700 THEN POSITION LS,U10:? "NOTHING";:GOTO MSTR 6210 J=MQ:MQ=PEEK(MT+I):C$=A$:GOSUB 880:POSITION LS,U10:? BL$;A$;:MQ=J:A$=C$:GOTO MSTR 6300 IF PEEK(NP+KR)>U0 AND 19*RND(U0)+U1U0 THEN 7005 7001 GOSUB 4850:IF NB=U0 THEN 5044 7002 POSITION LS,U10:? BL$;A$:POSITION LS,11:? "APPEARS":GOSUB 300:POSITION LS,U0:? A$:GOTO 5044 7005 IF IN>U0 THEN 7500 7010 IF ABS(X0-XM)>U5 OR ABS(Y0-YM)>U5 THEN 7300 7015 IM=MA 7017 IM=IM-U1:IF IMPEEK(KB+21)/U2+PEEK(KA-81) AND PEEK(KA-88)=U0 THEN 7038 7036 GOTO 7040 7038 GOSUB 50:POSITION LS,U10+U1:? "A CHILL"; 7040 K=K+INT((MD*(R-P))/U10-AA-PEEK(KB+16)):IF KU0 THEN 7017 7062 GOTO 5044 7250 IF NB=U0 THEN 5044 7252 XO=XM:YO=YM:L=U2:ON U3*RND(U0)+U1 GOTO 7260,7270,7280,7290 7260 YM=YM+L:GOTO 7490 7270 XM=XM+L:GOTO 7490 7280 YM=YM-L:GOTO 7490 7290 XM=XM-L:GOTO 7490 7300 XX=XL-XM:YY=YL-YM:IF ABS(XX)U0 THEN MF=U2 7304 GOTO 7310 7306 MF=U3:IF YY>U0 THEN MF=U1 7310 XO=XM:YO=YM:L=MS:ON MF GOTO 7320,7360,7400,7440 7320 IF YM+L>YL-U3 THEN YM=YL-U3:GOTO 7330 7322 YM=YM+L 7330 GOTO 7490 7360 IF XM+L>XL-U3 THEN XM=XL-U3:GOTO 7370 7362 XM=XM+L 7370 GOTO 7490 7400 IF YM-LU0 THEN GOSUB 350:GOSUB 450:EX=EX+20*ML*ML+15:KC=KC+U1:POSITION LS,11:? "MONSTER ";:GOTO 7503 7502 GOTO 7510 7503 ? "SLAIN":POSITION LS,17:? KC:M=PEEK(MN+KR):IF M>U0 THEN POKE MN+KR,M- U1:IF M>U1 THEN GOSUB 4500:GOTO 7505 7504 GOTO 7510 7505 POSITION LS,U10:? BL$;"AND ANOTHER":POSITION LS,U10+U1:? BL$;"APPEARS";:GOSUB 300 7510 IF MP255 THEN L6=U1:POKE 764,255 8020 NEXT L6:NEXT L5:GOTO MSTR 9000 ? "?";:POKE 764,255:CLOSE #U1:OPEN #U1,U4,U0,"K" 9010 GET #U1,A:C$=CHR$(A):IF C$<>"Y" AND C$<>"N" THEN 9010 9020 YEA=U0:IF C$="N" THEN ? "Nay":RETURN 9030 YEA=U1:? "Yea":RETURN 9500 POKE 53248,U0:POKE 53249,U0:GRAPHICS U0:POKE 709,U0:POKE 710,30:POKE 712,30:POKE 756,112:RETURN 10000 GOSUB 9500:? "Thou leavest the Dunjon" 10002 POKE 764,255:? :? "Experience:";EX:? :? "Dost wish to reenter";:GOSUB 9000:IF NOT YEA THEN 10006 10004 WC=PEEK(KB+12):KR=U1:PC=PH:XA=PEEK(KA+2236):YA=PEEK(KA+2237):KF=PEEK(KA+2238):T A=HUN:GOSUB 80:GOTO 5020 10006 A$=":LEVEL":? :? "Dost wish to save the Dunjon";:GOSUB 9000:IF NOT YEA THEN 10018 10012 TRAP 10012:? :? "What level wouldst call it";:INPUT I:A$(U8)=STR$(I) 10013 ? "Insert disk on which to save Dunjon, and hit ";:INPUT C$:TRAP 10015:CLOSE #U1:OPEN #U1,U4,U0,A$ 10014 ? :? A$;" already exists.":? "Art thou sure thou wouldst change it";:GOSUB 9000:IF NOT YEA THEN 10006 10015 TRAP 10020:? "Saving ";A$:POKE 881,U0:CLOSE #U3:OPEN #U3,U8,U0,A$ 10016 POKE 884,U0:POKE 885,120:POKE 888,U1:POKE 889,U4:POKE 882,11:I=USR(ADR("hhhªLVä"),48):POKE 884,U0 10017 POKE 885,KA/256:POKE 888,193:POKE 889,U8:POKE 882,11:I=USR(ADR("hhhªLVä"),48):CLOSE #3:? "Level Saved!" 10018 J=INT(EX/256):POKE KB+U1,EX-J*256:JJ=INT(J/256):POKE KB+U2,J-JJ*256:POKE KB+U3,JJ:IF SMU1 THEN FOR I=U2 TO LEN(S$):IF S$(I,I)<>" " THEN S$(I,I)=CHR$(ASC(S$(I))-32):NEXT I 11014 TRAP 11016:A$="D:":A$(U3)=S$:CLOSE #U1:XIO 33,#U1,U0,U0,A$ 11016 RUN "D:INN" 11020 ? "Benedic the Cleric found Thee":GOTO 10002 11030 ? "Lowenthal the Mage found Thee":FOR I=81 TO 90:POKE KA-I,U0:NEXT I:GOTO 10002 11040 ? "Olias the Dwarf found Thee":FOR I=61 TO 90:POKE KA-I,U0:NEXT I:SM=U0:POKE KB+U10,U0:POKE KB+16,U0 11042 POKE KB+14,U0:POKE KB+U6,U0:GOTO 10002 20000 ? :? "Wouldst Thou save Thy character beforereturning to the Inn";:GOSUB 9000:IF NOT YEA THEN 10050 20001 ? :? "Insert disk on which to save Characterand hit ";:INPUT C$ 20002 GOSUB 20005:GOTO 20010 20005 S$="":FOR I=U0 TO U10:J=PEEK(KB-11+I):IF J>64 AND J<123 THEN S$(LEN(S$)+U1)=CHR$(J):GOTO 20008 20006 S$(LEN(S$)+U1)=" " 20008 NEXT I:RETURN 20010 ? :? "Storing the Adventurer hight ";S$:A$="D:":A$(U3)=S$:CLOSE #U1 20011 IF LEN(A$)>U3 THEN FOR I=U4 TO LEN(A$):A$(I,I)=CHR$(ASC(A$(I))-32):NEXT I:OPEN #U1,U8,U0,A$ 20012 FOR I=61 TO 96:J=PEEK(KA-I):? #U1,J:NEXT I:J=PEEK(KA):? #U1;J:FOR I=U0 TO 37:? #U1;PEEK(KB-12+I):NEXT I 20014 CLOSE #U1:GOTO 10050