10 ONERRORREPORT:PRINT;" at ";ERL:END 20 F%=OPENIN"config":H$=FN6:FORK%=1TOLENH$STEP3:VDUEVAL(MID$(H$,K%,3)):NEXT:K%=VAL(FN6):IFK%DIMI%3:?I%=K%:I%?1=VAL(FN6):I%?2=VAL(FN6):K%=1 30 H$=FN6+" ":I$=FN6:CLOSE#F%:PRINT"Bob and Trev: Resurrection+"'"Loading":DIM_%880,A%1785,l%&D,L%&E,m%4,p%6:d%=FALSE:!m%=FALSE:F%=OPENIN"dundat":DIMD%EXT#F%:PROC6(D%,EXT#F%):CLOSE#F%:T%=D%+6:C%=D%+?D%+D%?1*256:M%=D%+D%?2+D%?3*256:S%=D%+D%?4+D%?5*256:INPUT"Name";E$:F%=OPENUPE$ 40 IFF%=FALSEF%=OPENOUTE$:CLOSE#F%:F%=OPENUPE$:PROCeELSEPROCZ 50 ONERRORCOLOUR63:REPORT:PRINT;" at ";ERL;" >>";:ONERROROFF:Z%=GET:PROC1(FALSE,"Error "+STR$ERR+" at "+STR$ERL) 60 REPEATo%=o%+1:IF(o%MODFNJ(FALSE))=FALSEU%=FALSE:PROCh:IF(o%MOD((5+L%?&B)*FNJ(FALSE)))=FALSEL%?&C=L%?&C-1:IFL%?&C<2PROC1(FALSE,"Hunger") 70 IF(o%MOD(20-L%?&B))=FALSEANDA%?68U%=&FEELSEIFA%?(U%*7+4)AND&C0AND(o%MODFNJ(U%))=FALSEPROC_ 90 NEXT:UNTILFALSE 100 DEFPROCePROC0("Initialising"):PROC7(l%,&D,FALSE):PROC7(p%,5,FALSE):PROC7(A%,371,&FF):o%=FALSE:e%=FALSE:s%=FALSE:!L%=FALSE:L%!4=FALSE:L%?8=FALSE:L%?9=RND(2):L%?&A=RND(2):L%?&B=RND(2):L%?&C=&64:L%?&D=FALSE:PROC2(l%,6):PROC2(l%,&D):PROC2(p%,5):PROC2(L%,&E):J%=96:?A%=J%:A%?1=RND(38):A%?2=RND(20):G%=FALSE:O%=1:PROCQ:PROC2(A%,371):H%=PTR#F% 110 PROCO:ENDPROC 120 DEFPROCZPROC0("Restoring game"):PROC6(l%,4):o%=!l%:e%=BGET#F%:s%=BGET#F%:PROC6(l%,&D):PROC6(p%,5):PROC6(L%,&E):PROC6(A%,371):H%=PTR#F%:PROCH:ENDPROC 130 DEFPROCHPROC0("Loading"):PTR#F%=H%+&73E*e%:FORZ%=FALSETO878STEP2:G%=BGET#F%:_%?Z%=G%AND&F:_%?(Z%+1)=G%DIV16:NEXT:PROC6(A%+371,1414):PROC9(A%?1,A%?2):FORZ%=53TO&FE:IFA%?(Z%*7)<&FFANDA%?(Z%*7+1)<40PROC9(A%?(Z%*7+1),A%?(Z%*7+2)) 140 NEXT:PROCD(FALSE):ENDPROC 150 DEFPROCFPROC0("Saving"):PTR#F%=FALSE:Z%=o%:FORG%=FALSETO3:BPUT#F%,Z%:Z%=Z%DIV256:NEXT:BPUT#F%,e%:BPUT#F%,s%:PROC2(l%,&D):PROC2(p%,5):PROC2(L%,&E):PROC2(A%,371):PTR#F%=H%+&73E*e%:G%=FALSE:O%=FALSE:FORZ%=FALSETO878STEP2:BPUT#F%,(_%?Z%AND&F)+_%?(Z%+1)*16:NEXT:PROC2(A%+371,1414):ENDPROC 160 DEFPROC2(Z%,G%)G%=G%+Z%:REPEATBPUT#F%,?Z%:Z%=Z%+1:UNTILZ%=G%:ENDPROC 170 DEFPROC6(Z%,G%)G%=G%+Z%:REPEAT?Z%=BGET#F%:Z%=Z%+1:UNTILZ%=G%:ENDPROC 180 DEFPROC7(Z%,G%,O%)G%=G%+Z%:REPEAT?Z%=O%:Z%=Z%+1:UNTILZ%=G%:ENDPROC 190 DEFFN1(Z%)IFZ%=&FFORA%?(Z%*7)=&FFTHEN=&FFELSE=FN0(A%?(Z%*7),FALSE) 200 DEFFN0(Z%,G%)=G%?(T%+T%?(Z%*2)+((T%?(Z%*2+1))*256)) 210 DEFFNJ(Z%)G%=A%?(Z%*7+4)AND63:G%=INT(FN0(A%?(Z%*7),18)+((G%*(FN0(A%?(Z%*7),23)-&80))/8)):IFG%<1=1ELSE=G% 220 DEFFN3(Z%,G%)=FN0(A%?(Z%*7),G%+&E)+INT((A%?(Z%*7+4)AND63)*(FN0(A%?(Z%*7),G%+19)-&80)/8)+(Z%=FALSEANDG%=1ANDL%?8) 230 DEFFNG(R%,B%)IFR%>B%=R%ELSE=B% 240 DEFFN9(R%,B%)IFR%E%PROCS(`%,E%,FALSE)ELSEPROCS(E%,`%,1) 260 UNTILV%>=G%:FORV%=FALSETO879:_%?V%=FALSE:NEXT:V%=e%>FALSEAND1:IFe%<30PROC8(FALSE,FALSE,1,39,V%):PROC8(FALSE,FALSE,40,21,V%):PROC8(FALSE,21,1,39,V%):PROC8(39,FALSE,40,21,V%) 270 FORV%=FALSETOh%-1:`%=Z%+O%?(-V%*3)*5:E%=Z%+O%?(-V%*3+1)*5:u%=O%?(-V%*3+2):IFh%=FALSEELSEIFu%AND&80J%=FNG(?`%,?E%):PROC8(J%,E%?1,1,FN9(`%?2,E%?2)-J%,u%AND&7F)ELSEJ%=FNG(`%?1,E%?1):PROC8(?E%,J%,40,FN9(`%?3,E%?3)-J%,u%) 280 NEXT:FORV%=1TO9:IFFN4(MID$(".hjklyubn",V%,1))AND_%?(A%?1+N%+40*(A%?2+Q%))=FALSEV%=9 290 NEXT:A%?1=A%?1+N%:A%?2=A%?2+Q%:_%?(A%?1+40*A%?2)=65:V%=RND(G%)-1:IFe%<30REPEATP%=Z%?(V%*5)+RND(Z%?(V%*5+2)-Z%?(V%*5)):W%=Z%?(V%*5+1)+RND(Z%?(V%*5+3)-Z%?(V%*5+1)):UNTIL_%?(P%+40*W%)<>65:_%?(P%+40*W%)=&A 300 PROC7(A%+371,1414,&FF):G%=53:O%=&FE:V%=FALSE:FORZ%=FALSETO99:IFFN0(Z%,&B)<=e%ANDFN0(Z%,&C)>=e%V%=V%+FN0(Z%,&A) 310 NEXT:FORZ%=FALSETO30+e%:P%=RND(38):W%=RND(20):`%=RND(V%)-1:J%=TRUE:REPEATJ%=J%+1:IFFN0(J%,&B)<=e%ANDFN0(J%,&C)>=e%`%=`%-FN0(J%,&A) 320 UNTIL`%40ANDFN1(G%)=FALSEA%?(A%?(G%*7+2)*7+5)=G%ELSEa%=A%?(A%?(G%*7+2)*7+5):IFA%?(G%*7+1)>40ANDFN1(G%)=1ANDa%<&FFANDFN0(A%?(a%*7),&D)=FN0(A%?(G%*7),9)A%?(a%*7+5)=G%:A%?(G%*7+3)=4 390 G%=G%+1:NEXT:d%=FALSE:PROCF:PROCD(FALSE):ENDPROC 400 DEFPROC8(P%,W%,n%,v%,X%)P%=_%+P%+40*W%:FORt%=FALSETOv%*n%STEPn%:IF(X%AND1)=1AND(t%+1)MOD3=FALSEP%?t%=4ELSEP%?t%=&B 410 NEXT:IFX%AND2t%=INT(v%DIV2)*n%:P%?t%=7 420 ENDPROC 430 DEFPROCS(`%,E%,j%)IF`%<=6ORE%<=3V%=V%+1:ENDPROC 440 E%=RND(`%-3-j%)+2:IFE%<3OR`%-E%<3V%=V%+1:ENDPROC 450 Z%?(G%*5)=(1-j%)*E%+Z%?(V%*5):Z%?(G%*5+1)=j%*E%+Z%?(V%*5+1):Z%?(G%*5+2)=Z%?(V%*5+2):Z%?(G%*5+3)=Z%?(V%*5+3):Z%?(G%*5+4)=FALSE:Z%?(V%*5+2+j%)=Z%?(G%*5+j%)-1:G%=G%+1:R%=V%:B%=G%-1:b%=h%:O%?(-b%*3)=R%:O%?(-b%*3+1)=B%:O%?(-b%*3+2)=j%*&80+2:b%=b%+1 460 IFb%=1O%?2=j%*&80+2:h%=1:ENDPROC 470 FORJ%=FALSETOh%-1:IFO%?(-J%*3)=R%AND(O%?(-J%*3+2)AND&80)=j%*&80O%?(-J%*3)=B% 480 FORg%=FALSETO1:c%=O%?(-J%*3+1-g%):IFO%?(-J%*3+g%)=R%ANDZ%?(c%*5+j%)>=Z%?(B%*5+j%)O%?(-J%*3+g%)=B% 490 IFO%?(-J%*3+g%)=R%ANDZ%?(c%*5+2+j%)>=Z%?(B%*5+j%)O%?(-b%*3+g%)=B%:O%?(-b%*3+1-g%)=c%:O%?(-b%*3+2)=(1-j%)*&80:b%=b%+1 500 NEXT,:IFb%-h%>1R%=RND(b%-h%)+h%-1:O%?(-R%*3+2)=(O%?(-R%*3+2)AND&80)+2 510 h%=b%:ENDPROC 520 DEFPROCQ:A=(e%-FN0(J%,&B))*(FN0(J%,&D)-1)/(FN0(J%,&C)-FN0(J%,&B)):A%?(G%*7+4)=A:A=A-A%?(G%*7+4):A%?(G%*7+4)=A%?(G%*7+4)+1+((RND(1)1ANDB%<>2=32 690 B%=M%?(B%*3+1):IFB%<32=32ELSEPROC5(FALSE):=B% 700 DEFFNN(P%,W%,i%)IFP%=FALSEORP%=39=i% 710 P%=_%?(P%+1+W%*40)AND31:IFP%=3ORP%=&BTHEN=i%EOR81ELSE=i% 720 DEFFNH(X%)PROC5(FN0(X%,8)):IFFN0(X%,FALSE)=8=FN0(X%,24)ELSE=C%?(FN0(X%,FALSE)*2) 730 DEFPROC_:N%=A%?1-A%?(U%*7+1):Q%=A%?2-A%?(U%*7+2):IF(A%?(U%*7+4)AND64)=FALSEN%=-N%:Q%=-Q%ELSEIFABSN%<2ANDABSQ%<2PROCM(FALSE):ENDPROC 740 IF(ABSN%=ABSQ%ORN%*Q%=FALSE)ANDA%?(U%*7+5)<&FFTHENa%=A%?(U%*7+5):IFFNG(ABSN%,ABSQ%)<=FN0(A%?(a%*7),&E)ANDA%?(a%*7+5)<&FFN%=SGNN%:Q%=SGNQ%:PROCR:ENDPROC 750 IFA%?(U%*7+4)AND&80N%=SGNN%:Q%=SGNQ%ELSEN%=RND(3)-2:Q%=RND(3)-2:Z%=FN7:ENDPROC 760 IFFN7THENENDPROCELSEIFRND(2)=1N%=FALSEELSEQ%=FALSE 770 IFFN7THENENDPROCELSEN%=RND(3)-2:Q%=RND(3)-2:Z%=FN7:ENDPROC 780 DEFPROC0(C$)PROC5(FALSE):IFC$=""d%=FALSE 790 IFLENC$>37PRINTTAB(d%,FALSE);C$;" >>";:PROC4:d%=GET:PROCD(VPOS):ENDPROC 800 IFd%+LENC$>37PRINTTAB(d%,FALSE)">>";:d%=GET:d%=FALSE 810 PRINTTAB(d%,FALSE);C$;:IFd%=FALSEPROC4 820 d%=d%+LENC$+SGN(LENC$):ENDPROC 830 DEFPROCE(C$)IFU%=FALSEPROC0(C$) 840 ENDPROC 850 DEFFN4(A$)N%=INSTR("yhbk.juln",RIGHT$(A$,1))-1:IFN%U%PROCM(Z%)ELSEZ%=FN7 870 ENDPROC 880 DEFFNS(B%)B%=B%DIV64:IFB%=1="1 item."ELSEIFB%=3="3+ items."ELSE=STR$B%+" items." 890 DEFFN7IFFND=FALSEPROC1(U%,"Falling"):=1ELSEB%=FN8(N%+P%,Q%+W%):IFB%=U%Y%=1:=1ELSEIFB%<&FFPROCE("Blocked"):A$="":=FALSEELSEB%=_%?(N%+P%+(Q%+W%)*40):IF(M%?((B%AND31)*3+2)AND1)=FALSEPROCE("Blocked"):A$="":=FALSE 900 IFU%=FALSEANDB%AND&C0PROC0(FNS(B%)) 910 A%?(U%*7+1)=N%+P%:A%?(U%*7+2)=Q%+W%:PROCG(P%,W%):PROC9(N%+P%,Q%+W%):PROCA(P%,W%):PROCj(U%):Y%=1:=1 920 DEFPROCT(Z%)IFZ%=FALSEOR(_%?(A%?(Z%*7+1)+40*A%?(Z%*7+2))AND32)ENDPROCELSEPROC5(FALSE):PRINTTAB(A%?(Z%*7+1),A%?(Z%*7+2)+1)"I";:ENDPROC 930 DEFFNO(X%,A)X%=FN3(U%,3)-FN3(X%,3):IFX%>FALSEA=(X%+2)/(X%+3)+AELSEIFX%8Z%=510ELSEIFA%?(Z%*7+1)=P%ANDA%?(Z%*7+2)=W%Z%=Z%+&FF 1040 NEXT:IFZ%=&FFTHEN=&FFELSE=Z%-256 1050 DEFPROC1(Z%,F$)IFZ%=FALSEPROC`(F$)ELSEP%=A%?(Z%*7+1):W%=A%?(Z%*7+2):g%=A%?(Z%*7+5) 1060 IFFN1(Z%)=FALSEANDg%<&FFTHENA%?(g%*7+3)=A%?(g%*7+3)AND&FB:PROC1(g%,"")ELSEIFFN1(Z%)=1ANDA%?(Z%*7+3)AND4PROCN(Z%) 1070 IFFN1(Z%)<>8A%?(Z%*7)=&FF:PROCG(P%,W%):PROCA(P%,W%):ENDPROC 1080 IFU%=FALSEL%!4=L%!4+1:PROCP(FN3(Z%,FALSE)*(A%?(Z%*7+4)AND63)) 1090 IF_%?(P%+W%*40)AND32PROC0(FN2(Z%)+" dies!") 1100 g%=53:FORJ%=53TO&FE:IFA%?(J%*7)<&FFANDA%?(J%*7+1)=&FFANDA%?(J%*7+2)=Z%A%?(J%*7+1)=P%:A%?(J%*7+2)=W%:PROC9(P%,W%):`%=A%+(J%*7+5):IFFN1(J%)=FALSEAND?`%<&FFTHENA%?(?`%*7+3)=A%?(?`%*7+3)AND&FB:?`%=&FF 1110 IFFN1(J%)=8g%=J%ELSEIFA%?(J%*7)<&FFANDA%?(J%*7+1)=&FFANDA%?(J%*7+2)=g%A%?(J%*7+2)=Z% 1120 NEXT:IFRND(2)=1A%?(Z%*7+5)=A%?(Z%*7):A%?(Z%*7)=98:A%?(Z%*7+3)=FALSE:A%?(Z%*7+4)=FALSE:A%?(Z%*7+6)=1ELSEA%?(Z%*7)=&FF:PROCG(P%,W%) 1130 PROCB(Z%,g%):PROCA(P%,W%):ENDPROC 1140 DEFPROC`(F$)PROC0(F$+" kills you! >>"):Y%=GET:G$="1":ONERRORG$="" 1150 IFG$="1"G$=" ("+TIME$+")" 1160 ONERROROFF:CLOSE#F%:OSCLIH$+E$ 1170 PROC0("Saving"):A=FALSE:FORU%=1TO52:Z%=A%?(U%*7):IFZ%<&FFTHENA=A+FNA(Z%,2)*FN5(U%):IFFN1(U%)=4ORFN1(U%)=3A=A+A%?(U%*7+5)^2*FNA(Z%,2)*FN5(U%) 1180 NEXT:F%=OPENUP"logfile":IFF%=FALSEF%=OPENOUT"logfile"ELSEPTR#F%=EXT#F% 1190 D$=F$+" killed "+E$+" (Xp"+STR$(A%?4)+"/"+STR$!L%+" HP"+STR$(A%?6)+"/"+STR$(FN3(FALSE,FALSE))+" St"+STR$(FN3(FALSE,2))+" Dx"+STR$(FN3(FALSE,3))+" In"+STR$(L%?9)+" Wi"+STR$(L%?&A)+" Co"+STR$(L%?&B)+") on turn "+STR$o%+" on level "+STR$e%+"/"+STR$s%+". But he got "+STR$(L%!4):@%=&102020A 1200 D$=D$+" kills and looted "+I$+STR$A+"!"+G$:@%=&90A:FORU%=1TOLEND$:BPUT#F%,ASC(MID$(D$,U%,1)):NEXT:BPUT#F%,&A:CLOSE#F%:PRINTTAB(FALSE,FALSE);D$'"(press a key)";:PROC4:U%=GET:PROC7(l%,&D,&FF):PROC7(p%,5,&FF):A%?6=FALSE:PROCL(&FF,FALSE):PRINT:END 1210 DEFPROCN(Z%)FORg%=FALSETO&FE:IFFN1(g%)=FALSEANDA%?(g%*7+5)=Z%A%?(g%*7+5)=&FF:A%?(Z%*7+3)=A%?(Z%*7+3)AND&FB:g%=&FF 1220 NEXT:IFg%=&FFPROC1(FALSE,"Schrodinger's cat")ELSEENDPROC 1230 DEFPROCA(P%,W%)IFP%>39ENDPROC 1240 B%=_%?(P%+40*W%):IFB%AND32PRINTTAB(P%,W%+1);CHR$(FNK(P%,W%)); 1250 ENDPROC 1260 DEFPROCj(Z%)Z%=A%+7*Z%:IF?Z%<&FFAND_%?(Z%?1+40*Z%?2)AND32PRINTTAB(Z%?1,Z%?2+1);CHR$(FNH(?Z%)); 1270 ENDPROC 1280 DEFPROCD(Z%)IFA%?6=FALSEENDPROC 1290 IFZ%=FALSECLS:Z%=21ELSEPRINTTAB(FALSE,FALSE);SPC40;:IFZ%>21Z%=21 1300 E%=_%:FORW%=FALSETOZ%:PRINTTAB(FALSE,W%+1);:FORP%=FALSETO39:d%=?E%:IFd%AND32PRINTCHR$(FNK(P%,W%));ELSEPRINTCHR$(FNL(d%)); 1310 E%=E%+1:NEXT,:d%=FALSE:IFZ%=21PROCV 1320 ENDPROC 1330 DEFFND:P%=A%?(U%*7+1):W%=A%?(U%*7+2):IFP%+N%39ORW%+Q%21=FALSEELSE=1 1340 DEFPROCa:B%=_%?(N%+P%+(Q%+W%)*40):IF(M%?((B%AND31)*3+2)AND4)=FALSEPROCE("Can't open that"):A$=""ELSE_%?(N%+P%+(Q%+W%)*40)=B%+1:Y%=1:PROCA(N%+P%,Q%+W%) 1350 ENDPROC 1360 DEFPROCb:B%=_%?(N%+P%+(Q%+W%)*40):IF(M%?((B%AND31)*3+2)AND8)=FALSEOR(B%AND&C0)PROCE("Can't close that"):A$=""ELSE_%?(N%+P%+(Q%+W%)*40)=B%-1:Y%=1:PROCA(N%+P%,Q%+W%) 1370 ENDPROC 1380 DEFPROCm:J%=_%+?m%+m%?1*40:FORQ%=m%?1TOm%?3:PRINTTAB(?m%,Q%+1);:FORN%=?m%TOm%?2:B%=?J%:PRINTCHR$(FNL(B%));:?J%=B%AND&DF:J%=J%+1:NEXT:J%=J%+39-m%?2+?m%:NEXT:N%=A%?1+1:Q%=A%?2+1:P%=N%-2:W%=Q%-2:REPEATN%=N%-1:UNTILFNI(N%,A%?2):REPEATQ%=Q%-1:UNTILFNI(A%?1,Q%):REPEATP%=P%+1:UNTILFNI(P%,A%?2):REPEATW%=W%+1:UNTILFNI(A%?1,W%) 1390 ?m%=N%:m%?1=Q%:m%?2=P%:m%?3=W%:E%=_%+N%+40*Q%:FORJ%=Q%TOW%:PRINTTAB(N%,J%+1);:FORR%=N%TOP%:B%=?E%OR32:IF(B%AND31)>=&ATHENB%=B%-8 1400 ?E%=B%:PRINTCHR$(FNK(R%,J%));:E%=E%+1:NEXT:E%=E%+39-P%+N%:NEXT:ENDPROC 1410 DEFFNI(P%,W%)IFP%<=FALSEORW%<=FALSEORP%>=39ORW%>=21=1ELSEB%=(_%?(P%+40*W%))AND31:IFB%>=3ANDB%<>&ATHEN=1ELSE=FALSE 1420 DEFPROC9(P%,W%)IFP%<40P%=_%+P%+40*W%:W%=?P%+64:IFW%<256THEN?P%=W% 1430 ENDPROC 1440 DEFPROCG(P%,W%)IFP%>39ENDPROCELSEB%=_%?(P%+40*W%)-64:IFB%&FF:ENDPROC 1480 DEFPROCc:Y%=1:PROCF:e%=e%+1:IFe%>s%PROCOELSEPROCH 1490 ENDPROC 1500 DEFPROCdIFe%>FALSEY%=1:PROCF:e%=e%-1:PROCH:ENDPROC 1510 FORZ%=1TO52:IF(A%?Z%*7)=73PROC0("You escape with the "+FN2(Z%)+"!"):PROC0("You win! >>"):Y%=GET:d%=FALSE:PROC0("But..."):PROC1(FALSE,"Global thermonuclear war") 1520 NEXT:PROC1(FALSE,"Cowardice") 1530 DEFPROCL(P%,W%)IFP%<40AND(_%?(P%+40*W%)AND32)=FALSEPROC0("You can't see that far"):ENDPROC 1540 q%=FALSE:j%=FALSE:d%=&FE:PRINTTAB(FALSE,FALSE);:IFP%<40PRINTFNB(M%?((_%?(P%+40*W%)AND31)*3));:PROC4ELSEPRINT"Inside ";FN2(W%);":";:PROC4:IFW%=FALSEd%=52 1550 FORJ%=FALSETOd%:IFA%?(J%*7)<&FFANDA%?(J%*7+1)=P%ANDA%?(J%*7+2)=W%PRINT'FNM(J%);FN2(J%);:PROC4 1560 NEXT:PRINT'"(press a key)";:PROC4:d%=GET:PROCD(FNG(VPOS,j%)):A$="":ENDPROC 1570 DEFPROC4:`%=40-POS:E%=VPOS:PRINTSPC`%;TAB(40-`%,E%);:ENDPROC 1580 DEFFNB(Z%)LOCALB$,w%:B$="":Z%=S%+Z%*2:w%=S%+Z%?2+256*Z%?3:Z%=S%+?Z%+256*Z%?1:REPEATIF?Z%>&7FTHENB$=B$+FNB(?Z%)ELSEB$=B$+CHR$?Z% 1590 Z%=Z%+1:UNTILZ%=w%:=B$ 1600 DEFFN2(c%)LOCALJ%:IFc%=FALSE=FNB(FN0(96,1))+" "+E$ 1610 X%=A%?(c%*7):J%=FN0(X%,FALSE):IFc%=A%?5B$=" (wielded)"ELSEIFJ%=2ANDA%?(c%*7+3)AND2B$=" (worn)"ELSEIF(J%=6ORJ%=5)ANDA%?(c%*7+3)AND2B$=" (hot)"ELSEB$="" 1620 IFJ%=4IFFNC(p%,FN0(X%,&D)+A%?(c%*7+4))B$=" #"+STR$(A%?(c%*7+4))+FNF(A%?(c%*7+5))ELSEIFA%?(c%*7+5)=3B$=FNF(3) 1630 IFJ%=3IFFNC(l%,X%)B$=FNF(A%?(c%*7+5))ELSEIFA%?(c%*7+5)=3B$=FNF(3) 1640 IFX%=98B$=" ("+FNE(A%?(c%*7+5))+")"+B$ 1650 IFFN0(X%,FALSE)=FALSEANDA%?(c%*7+5)<&FFTHENB$=B$+" (loaded)"ELSEIFFN0(X%,FALSE)=1ANDA%?(c%*7+3)AND4B$=B$+" (loaded)" 1660 =FNE(X%)+FNR(c%)+B$ 1670 DEFFNE(X%)IFFNC(l%,X%)THEN=FNB(FN0(X%,1))ELSE=FNB(FN0(X%,9)) 1680 DEFFNC(R%,B%)=R%?(B%DIV8)AND2^(B%AND7) 1690 DEFPROCC(R%,B%)R%?(B%DIV8)=R%?(B%DIV8)OR2^(B%AND7):ENDPROC 1700 DEFFNF(J%)IFJ%=FALSE=" (illegible)"ELSEIFJ%=1=" (worn)"ELSEIFJ%=2=" (pristine)"ELSE=" (shrink-wrapped)" 1710 DEFFN5(c%)LOCALJ%,b%:b%=C%?(FN1(c%)*2+1):IFb%=FALSE=1 1720 J%=FALSE:c%=A%+c%*7:FORb%=7-b%TO6:J%=J%*256+c%?b%:NEXT:=J% 1730 DEFPROCI(n%,f%,b%)LOCALJ%:J%=FN5(n%)-b%:IFJ%=2^(E%*8)J%=J%+b%-2^(E%*8)-1:b%=2^(E%*8)-1 1760 IFJ%=FALSEPROC1(n%,"")ELSEFOR`%=6TO7-E%STEPTRUE:A%?(n%*7+`%)=J%MOD256:J%=J%DIV256:NEXT 1770 IFf%<&FFFOR`%=6TO7-E%STEPTRUE:A%?(f%*7+`%)=b%MOD256:b%=b%DIV256:NEXT 1780 ENDPROC 1790 DEFFNR(c%)c%=FN5(c%):IFc%<2=""ELSE=" * "+STR$c% 1800 DEFFNM(P%)IFP%=FALSE="" 1810 IFP%<53q%=P%ELSEq%=q%+1 1820 IFVPOS>22PRINT"(more)";:PROC4:P%=GET:j%=21:CLS 1830 IFq%<27q%=q%+58 1840 =CHR$(q%+38)+":" 1850 DEFPROCVPROC5(FALSE):PRINTTAB(FALSE,23)"Floor:";e%;" HP:";A%?6;"/";FN3(FALSE,FALSE);" AC:";FN3(FALSE,1);" Xp:";(A%?4AND63);"/";!L%;SPC3:PRINTTAB(FALSE,24)"St:";FN3(FALSE,2);" Dx:";FN3(FALSE,3);" In:";L%?9;" Wi:";L%?&A;" Co:";L%?&B;:IFL%?&C<20PRINT" Famished";ELSEIFL%?&C<50PRINT" Peckish ";ELSEIFL%?&C>&C8PRINT" Tubby"SPC3;ELSEPRINTSPC9; 1860 ENDPROC 1870 DEFPROC5(Y%)IFK%=FALSEOR(K%EORY%)<64ENDPROC 1880 K%=Y%OR1:COLOURI%?(Y%DIV64):ENDPROC 1890 DEFPROCfPROC0("Move the cursor, press . to identify"):P%=A%?1:W%=A%?2:REPEATPRINTTAB(P%,W%+1);:A$=GET$:IFFN4(A$)=FALSEY%=1:PROC0("")ELSEIFN%=FALSEANDQ%=FALSEPROCL(P%,W%):Y%=1ELSEP%=(P%+N%+40)MOD40:W%=(W%+Q%+22)MOD22 1900 UNTILY%=1:ENDPROC 1910 DEFFNP(Z%)IFZ%>&7ATHEN=FALSEELSEIFZ%>96=Z%-96ELSEIFZ%>90=FALSEELSEIFZ%>64=Z%-38ELSE=FALSE 1920 DEFPROCg:k%=FALSE:FORJ%=52TO1STEPTRUE:IFA%?(J%*7)=&FFk%=J% 1930 NEXT:IFk%=FALSEPROC1(FALSE,"Kleptomania") 1940 IF((_%?(A%?1+A%?2*40))AND&C0)=&80Z%=1ELSEPROC3("Take"):IFZ%=FALSEENDPROC 1950 FORJ%=53TO&FE:IFA%?(J%*7)<&FFANDA%?(J%*7+1)=A%?1ANDA%?(J%*7+2)=A%?2Z%=Z%-1 1960 IFZ%=FALSEPROCB(k%,J%):A%?(k%*7+1)=&FF:A%?(k%*7+2)=FALSE:J%=&FE:Y%=1:PROCG(A%?1,A%?2):PROC0("Taken:"+FNM(k%)+FN2(k%)) 1970 NEXT:ENDPROC 1980 DEFPROCiPROC3("Drop"):IFZ%=FALSEORA%?(Z%*7)=&FFENDPROC 1990 k%=FALSE:FORJ%=53TO&FE:IFA%?(J%*7)=&FFk%=J%:J%=&FE 2000 NEXT:IFk%=FALSEPROC1(FALSE,"Structural collapse") 2010 IFZ%=A%?5A%?5=&FF:PROC0("Now empty handed.") 2020 J%=FN1(Z%):IFJ%=2ANDA%?(Z%*7+3)AND2PROCX(Z%)ELSEIFJ%=FALSEANDA%?(Z%*7+5)<&FFPROCY(Z%)ELSEIFJ%=1ANDA%?(Z%*7+3)AND4PROCN(Z%) 2030 PROCB(k%,Z%):A%?(k%*7+1)=A%?1:A%?(k%*7+2)=A%?2:Y%=1:PROC9(A%?1,A%?2):PROC0("Dropped: "+FN2(k%)):ENDPROC 2040 DEFPROCB(R%,B%)R%=A%+R%*7:B%=A%+B%*7:FORJ%=FALSETO6:f%=R%?J%:R%?J%=B%?J%:B%?J%=f%:NEXT:ENDPROC 2050 DEFPROCk:Y%=1:IFN%=FALSEANDQ%=FALSEPROC1(FALSE,"Angst") 2060 Z%=FN8(A%?1+N%,A%?2+Q%):IFZ%=&FFANDA%?5<&FFZ%=FN0(A%?(A%?5*7),7):IFZ%>1N%=N%*Z%:Q%=Q%*Z%:Z%=FN8(A%?1+N%,A%?2+Q%) 2070 IFZ%<&FFANDZ%>FALSEPROCM(Z%)ELSEPROC0("You flail your arms at nothingness.") 2080 ENDPROC 2090 DEFPROCX(Z%)A%?(Z%*7+3)=A%?(Z%*7+3)-2:L%?8=L%?8-FN0(A%?(Z%*7),&E):PROC0(FN2(Z%)+" removed."):Y%=1:ENDPROC 2100 DEFPROCl(Z%)k%=FN0(A%?(Z%*7),&D):FORJ%=1TO52:IFFN1(J%)=2ANDA%?(J%*7+3)AND2IF(FN0(A%?(J%*7),&D)ANDk%)>1PROC0("Already wearing "+FN2(J%)):J%=55:A$="" 2110 NEXT:IFJ%<55PROC0("Worn: "+FN2(Z%)):A%?(Z%*7+3)=A%?(Z%*7+3)+2:L%?8=L%?8+FN0(A%?(Z%*7),&E):Y%=1 2120 ENDPROC 2130 DEFFN6:D$="":REPEATC%=BGET#F%:D$=D$+CHR$C%:UNTILC%<32:=LEFT$(D$,LEND$-1) 2140 DEFPROCP(Z%)!L%=!L%+Z%:IF2^(A%?4+5)>!L%ENDPROCELSEA%?4=A%?4+1:A%?6=A%?6+(FN0(?A%,19)-&80)/8:Z%=RND(4):L%?(Z%+7)=FN9(L%?(Z%+7)+1,&FF) 2150 IFZ%=2A$="geeky!"ELSEIFZ%=3A$="nerdy!"ELSEA$="tough!" 2160 PROC0("You feel more "+A$):ENDPROC 2170 DEFPROCY(Z%)R%=A%?(Z%*7+5):IFR%<&FFTHENA%?(R%*7+3)=A%?(R%*7+3)AND&FB:A%?(Z%*7+5)=&FF:PROC0("Unloaded: "+FN2(R%)+" from "+FN2(Z%)):Y%=1:ENDPROC 2180 d%=FALSE:PROC0("Load what?"):A$=A$+GET$:R%=FNP(ASC(RIGHT$(A$,1))):IFA%?(R%*7)=&FFORR%=FALSEENDPROCELSEIFFN1(R%)<>1ORFN0(A%?(R%*7),9)<>FN0(A%?(Z%*7),&D)PROC0("It won't fit"):A$="":ENDPROCELSEB%=A%?(R%*7+3):IFB%AND4PROC0("Already in use!"):A$="":ENDPROC 2190 PROC0("Loaded: "+FN2(R%)):A%?(R%*7+3)=B%OR4:A%?(Z%*7+5)=R%:A$="":ENDPROC 2200 DEFPROCR:Y%=1:a%=A%?(U%*7+5):R%=A%?(a%*7+5):r%=FN0(A%?(a%*7),&E):X%=&FF:E%=TIME:REPEATIFFND=FALSEX%=TRUEELSEP%=P%+N%:W%=W%+Q%:PRINTTAB(P%,W%+1);CHR$(FNH(A%?(R%*7)));:B%=_%?(P%+W%*40):IFM%?((B%AND31)*3+2)AND1X%=FN8(P%,W%)ELSEr%=FALSE:N%=N%-SGNN%:Q%=Q%-SGNQ% 2210 REPEATUNTILTIME-E%>&A:E%=TIME:IFB%AND32PROCA(P%,W%)ELSEPRINTTAB(P%,W%+1);CHR$(FNL(B%)); 2220 IFX%<&FFr%=FALSEELSEr%=r%-1:IFr%>FALSEN%=N%+SGNN%:Q%=Q%+SGNQ% 2230 UNTILr%<1:Z%=R%:R%=A%?(R%*7):PROCI(Z%,&FF,1):IFX%=TRUEENDPROCELSEIFX%=&FFPROCJ(P%,W%,FALSE):ENDPROCELSEIFFNO(X%,.1)ENDPROC 2240 a%=A%?(a%*7):A=FNA(R%,4)*FN0(a%,&E)*FN0(R%,6)*2.23:PROCK(X%,A,R%,FNE(R%)+" fired by "+FN2(U%)):ENDPROC 2250 DEFPROCJ(P%,W%,i%)IFP%39ORW%21ENDPROC 2260 PRINTTAB(P%,W%+1);:P%=_%+P%+W%*40:W%=?P%AND31:IFW%>=4ANDW%<=5W%=6ELSEIFW%>=7ANDW%<=8ANDi%W%=9 2270 ?P%=(?P%AND&E0)+W%:IF(?P%AND&E0)=32PRINTCHR$(M%?(W%*3+1)); 2280 ENDPROC 2290 DEFPROCW(a%,A,R%,B%)LOCALN%,Q%,V%,h%:FORV%=1TO9:h%=FN4(MID$(".hjklyubn",V%,1)):h%=FN8(R%+N%,B%+Q%):IFh%<&FFPROCK(h%,A,&FF,FN2(U%)+"'s exploding "+FNE(a%)) 2300 PROCJ(R%+N%,B%+Q%,1):IFV%=1A=SQRA 2310 NEXT:PROCJ(R%,B%,1):ENDPROC 2320 DEFPROCK(X%,A,a%,C$)f%=FN3(X%,1):IFa%<&FFIFFN0(a%,8)AND16ANDRND(1)>.6PROC0("It cuts!"):f%=f%-5 2330 IFa%<&FFIFFN0(a%,8)AND1PROC0("It explodes!"):A=A^2:PROCW(a%,A,A%?(X%*7+1),A%?(X%*7+2)):PROC1(a%,""):ENDPROC 2340 IFf%>FALSEA=A*.95^(f%^1.3) 2350 f%=INTA:IFRND(1)6ANDFN1(Z%)<>5PROC0("Interesting"):Y%=1:ENDPROC 2420 A%?(Z%*7+3)=A%?(Z%*7+3)OR2:PROC0("Toasty!"):ENDPROC 2430 DEFPROCq:J%=FN1(Z%):a%=FALSE:FORG%=1TO52:IFA%?(G%*7)=57ANDA%?(G%*7+3)AND2a%=1:G%=52 2440 NEXT:Y%=1:G%=A%?(Z%*7+5):IFa%=FALSEANDG%<2PROC0("Too worn to read."):ENDPROC 2450 IFG%>FALSEA%?(Z%*7+5)=G%-1 2460 IFFNC(p%,FN0(A%?(Z%*7),&D)+A%?(Z%*7+4))PROC0("Already read."):ENDPROC 2470 PROCC(l%,A%?(Z%*7)):PROCC(p%,FN0(A%?(Z%*7),&D)+A%?(Z%*7+4)):PROC0("You feel smarter!"):IFJ%=3PROCP(FNA(A%?(Z%*7),2)*FN5(Z%)*(G%+1)*L%?9):ENDPROC 2480 G%=G%^L%?&A:FORJ%=1TO52:a%=A%?(J%*7):IFa%<&FFANDFNC(l%,a%)=FALSEPROCC(l%,a%):G%=G%-1:IFG%=FALSEJ%=52 2490 NEXT:IFG%<5ENDPROC 2500 FORJ%=1TOG%STEP5:PROCC(l%,RND(&64)-1):NEXT:ENDPROC 2510 DEFPROC3(J$)PROC0(J$+" what?"):Z%=GET:A$=A$+CHR$Z%:Z%=FNP(Z%):ENDPROC 2520 DEFPROChIF(_%?(A%?1+A%?2*40)AND32)=FALSEPROCm 2530 PROCV:d%=FALSE:Y%=FALSE:REPEATPROC5(FALSE):PRINTTAB(A%?1,A%?2+1);:A$=GET$:IFFN4(A$)PROCnELSEZ%=_%?(A%?1+A%?2*40):IFA$="<"AND(Z%AND31)=2PROCcELSEIFA$=">"AND(Z%AND31)=1PROCdELSEIFA$=","ANDZ%>&7FPROCg 2540 IFA$="m"A$=A$+GET$:IFFN4(A$)Z%=FN7 2550 IFA$="F"A$=A$+GET$:IFFN4(A$)PROCk 2560 IFA$="f"ANDA%?5<&FFANDA%?(A%?5*7+5)<&FFTHENA$=A$+GET$:IFFN4(A$)ANDA$<>"k."PROCR 2570 IFA$="Q"PROC1(FALSE,"Apathy")ELSEIFA$="S"PROCF:CLOSE#F%:CLS:PRINT"Game saved, ";E$:ENDELSEIFA$="i"PROCL(&FF,FALSE)ELSEIFA$="/"PROCfELSEIFA$="d"PROCi 2580 IFA$="o"A$=A$+GET$:IFFN4(A$)ANDFNDPROCa 2590 IFA$="c"A$=A$+GET$:IFFN4(A$)ANDFNDPROCb 2600 IFA$="H"ANDA%?5<&FFTHENA%?5=&FF:PROC0("Now empty handed."):Y%=1ELSEIFA$="w"ANDA%?5=&FFPROC3("Wield"):IFZ%ANDA%?(Z%*7)<&FFPROC0("Now wielding "+FN2(Z%)):A%?5=Z%:Y%=1 2610 IFA$="T"PROC3("Remove"):IFFN1(Z%)=2ANDA%?(Z%*7+3)AND2PROCX(Z%) 2620 IFA$="W"PROC3("Wear"):IFFN1(Z%)=2AND(A%?(Z%*7+3)AND2)=FALSEPROCl(Z%) 2630 IFA$="e"PROC3("Eat"):IFFN1(Z%)=6PROCo(Z%) 2640 IFA$="q"PROC3("Drink"):IFFN1(Z%)=5L%?&C=FN9(L%?&C+FN0(A%?(Z%*7),&D+(A%?(Z%*7+3)AND2)DIV2),&FF):PROC0("Drunk: "+FN2(Z%)):PROCI(Z%,&FF,1):Y%=1 2650 IFA$="L"ANDA%?5<&FFANDFN0(A%?(A%?5*7),&E)PROCY(A%?5)ELSEIFA$="C"ANDA%?5<&FFANDA%?(A%?6*7)=95PROC3("Cook"):IFZ%>FALSEANDZ%<>A%?5PROCp(Z%) 2660 IFA$="r"PROC3("Read"):IFFN1(Z%)=3ORFN1(Z%)=4PROCq 2670 IFA$<>""ANDY%=FALSEPROC0("Bad key '"+A$+"'") 2680 UNTILY%:IFd%=FALSEPROC0("") 2690 ENDPROC