1 GO SUB 9000 10 BORDER 0: PAPER 0: INK 7: CLS 15 LET SWORD=INT (RND*50)+50 20 PRINT AT 5,0;"EPYX PRESENTS...";AT 11,7;"bSWORD OF FARGOALb";AT 10,7;"bbbbbbbbbbbbbbbbbb";AT 12,7;"bbbbbbbbbbbbbbbbbb" 30 PRINT AT 14,6;"COPYRIGHT © 1985 EPYX" 40 RESTORE 50 50 READ a,b: IF a<>-1 THEN BEEP a,b: GO TO 50: DATA .1,0,.2,5,.1,0,.1,5,.2,9,.1,5,.1,9,.2,12,.1,9,.1,5,.2,0,-1,0 60 LET EX=0: LET EL=1: LET MHP=INT (RND*9)+6: LET HP=MHP: LET BS=8: LET DL=1: LET MS=0 70 LET G=0: LET SHS=0: LET LL=0: LET MBS=0: LET PO=1: LET MB=0: LET SH=0: LET TE=1: LET LI=0 100 LET SHS=0: LET MBS=0: CLS : PRINT AT 5,4;"EXPERIENCE POINTS: ";ex;AT 6,4;"EXPERIENCE LEVEL: ";EL;AT 8,4;"MAXIMUM HITPOINTS: ";MHP;AT 9,4;"BATTLE SKILL: ";BS;AT 11,4;"DUNGEON LEVEL: ";DL;AT 12,4;"MONSTERS SLAIN: ";MS 110 PRINT AT 17,1;"WAIT . . ." 120 GO SUB 8000 130 CLS 140 PRINT AT 2,4;"HEALING POTION ";PO;AT 3,4;"MAGIC BAGS ";MB;AT 5,1;"SPELLS...";AT 6,3;"SHIELD ";SH;AT 7,3;"TELEPORT ";TE;AT 8,3;"LIGHT ";LI;AT 10,5;"WAIT..." 150 GO SUB 8100 160 FOR T=1 TO 21: PRINT AT T,0; INK 6;"aaaaaaaaaaaaaaaa";AT 22-t,16;"aaaaaaaaaaaaaaaa": NEXT t 180 LET X=INT (RND*21)+1: LET Y=INT (RND*31)+1: IF A$(X,Y+1)<>" " THEN GO TO 180 190 GO SUB 7900 200 FOR U=1 TO 6 205 IF EX/1000>EL THEN LET EL=EL+1: PRINT AT 0,0;"LEVEL RAISED TO ";EL: PAUSE 10 206 IF HP.65 THEN LET HP=HP+1 210 LET K$=INKEY$: IF INKEY$="" THEN GO TO 300 250 IF K$="7" AND A$(X-1,Y+1)<>"b" THEN PRINT AT X,Y;" ": LET X=X-1: GO SUB 7900: GO TO 7910 251 IF K$="6" AND A$(X+1,Y+1)<>"b" THEN PRINT AT X,Y;" ": LET X=X+1: GO SUB 7900: GO TO 7910 252 IF K$="8" AND A$(X,Y+2)<>"b" THEN PRINT AT X,Y;" ": LET Y=Y+1: GO SUB 7900: GO TO 7910 253 IF K$="5" AND A$(X,Y)<>"b" THEN PRINT AT X,Y;" ": LET Y=Y-1: GO SUB 7900: GO TO 7910 260 IF K$="T" AND TE>0 THEN LET TE=TE-1: PRINT AT X,Y;" ": GO TO 180 261 IF K$="C" AND (A$(X,Y+1)="D" OR A$(X,Y+1)="p") THEN PRINT AT 0,0;"GOING DOWN A LEVEL": LET DL=DL+1: FOR T=0 TO -4 STEP -1: BEEP .1,T: NEXT T: GO TO 100 262 IF K$="C" AND (A$(X,Y+1)="U" OR A$(X,Y+1)="q") THEN PRINT AT 0,0;"GOING UP A LEVEL": LET DL=DL-1: FOR T=-4 TO 0: BEEP .1,T: NEXT T: GO TO 100 263 IF K$="B" AND MB>0 THEN PRINT AT 0,0;"USE MAGIC BAG": LET MB=MB-1: LET MBS=MBS+1 264 IF K$="L" THEN PRINT AT 0,0;"LIGHT SPELL USE": LET LL=1 300 NEXT U 310 FOR T=1 TO MONSTER: IF N(T,1)=0 THEN NEXT T: GO TO 200 320 LET X1=N(T,2)-(N(T,2)>X)+(N(T,2)Y)+(N(T,3)" " THEN NEXT T: GO TO 200 325 IF SCREEN$ (N(T,2),N(T,3))=M$(N(T,1),1) THEN PRINT AT N(T,2),N(T,3);" " 327 IF SCREEN$ (X1,Y1)=" " THEN PRINT AT X1,Y1;M$(N(T,1),1) 330 LET A$(N(T,2),N(T,3)+1)=" ": LET N(T,2)=X1: LET N(T,3)=Y1: LET A$(X1,Y1+1)=M$(N(T,1),1): NEXT T: GO TO 200 340 PRINT AT 0,0;"FIGHT WITH A ";M$(N(T,1),2 TO ): PRINT AT N(T,2),N(T,3);" " 350 LET FIG=N(T,4): LET FIGHT=BS-N(T,4) 355 LET FIGHT=FIGHT-INT (RND*3)+EL 360 IF FIGHT<0 THEN LET HP=HP+FIGHT: LET FIG=FIG-(1 AND RND>.5) 370 IF FIGHT>=0 THEN LET FIG=FIG-FIGHT: LET HP=HP-(1 AND RND>.6) 380 PRINT AT 0,0;" ": PRINT AT 0,0;P$(INT (RND*5)+1);" ";HP: FOR Q=1 TO 3: BEEP .01*RND*3,RND*30+30: NEXT Q 390 IF HP<0 THEN PRINT AT 0,0;"SLAIN BY A ";M$(N(T,1)): STOP 400 IF FIG<0 THEN LET MS=MS+1: PRINT AT 0,0;"YOU SLAINED A ";M$(N(T,1),2 TO ): LET A$(N(T,2),N(T,3)+1)=" ": LET EX=EX+N(T,4)*100:: LET N(T,1)=0: BEEP .1,19: BEEP .3,24: LET A$(X,Y+1)=" ": GO TO 200 410 PAUSE 10: GO TO 355 7700 LET A$(X,Y+1)=" ": LET PRYLAR=INT (RND*100)+1: IF PRYLAR>50 THEN LET PRYL=INT (RND*5)+1: GO TO 7710 7705 LET PRYL=INT (RND*5)+6 7710 IF PRYL<=2 AND DL>=2 THEN PRINT AT X,Y;"q": PRINT AT 0,0;"CEILING TRAP": FOR T=40 TO 0 STEP -2: BEEP .001,T: NEXT T: LET A$(X,Y+1)="q": LET HP=HP-(5+INT (RND*5)): GO TO 7790 7720 IF PRYL<=4 THEN PRINT AT X,Y;"e": PRINT AT 0,0;"FLOOR TRAP": FOR T=40 TO 0 STEP -2: BEEP .001,T: NEXT T: LET A$(X,Y+1)="p": LET HP=HP-(5+INT (RND*5)): GO TO 7790 7730 IF PRYL=5 THEN PRINT AT X,Y; INK 2;"q": PRINT AT 0,0;"EXPLOSION!": FOR T=1 TO 5: BEEP .05,-30: NEXT T: LET A$(X,Y+1)=" ": LET HP=HP-10: GO TO 7790 7740 IF PRYL>=6 AND PRYL<=8 THEN GO TO 7780 7750 IF PRYL=9 THEN PRINT AT 0,0;"EXCHANTED WEAPON": BEEP .1,10: BEEP .1,15: BEEP .1,25: BEEP .1,20: LET BS=BS+1: GO TO 210 7760 IF PRYL=10 THEN PRINT AT 0,0;"HEALING POTION FOUND": FOR T=30 TO 40: BEEP .005,T: BEEP .005,T+1: BEEP .005,T+2: BEEP .005,T+1: BEEP .005,T: NEXT T: LET PO=PO+1: GO TO 210 7770 IF PRYL=11 THEN PRINT AT 0,0;"A MAGIC BAG FOUND!": BEEP .01,40: BEEP .01,45: BEEP .01,55: BEEP .01,50: BEEP .01,30: BEEP .01,25: BEEP .01,30: BEEP .01,0: LET MB=MB+1: GO TO 210 7780 FOR T=1 TO 10: BEEP .01,T: BEEP .01,T+5: NEXT T: IF PRYL=4 THEN LET TE=TE+1: PRINT AT 0,0;"TELEPORT SPELL FOUND!" 7781 IF PRYL=5 THEN LET SH=SH+1: PRINT AT 0,0;"SHIELD SPELL FOUND!" 7782 IF PRYL=6 THEN LET LI=LI+1: PRINT AT 0,0;"LIGHT SPELL FOUND!" 7783 GO TO 210 7790 IF HP>0 THEN GO TO 210 7791 IF PO=0 THEN GO TO 9400 7792 PRINT AT 0,0;"HEALING POTION TAKEN": LET HP=INT (MHP/2): LET PO=PO-1: BEEP 1,-40: GO TO 210 7800 FOR Z=1 TO GOLD: IF SCREEN$ (G(Z,1),G(Z,2))="f" THEN GO TO 7810 7805 NEXT Z: PRINT "BUGG ": GO TO 210 7810 LET G=G+G(Z,3): LET G(Z,3)=0: LET A$(X,Y+1)=" " 7811 IF G>(100*MBS)+100 THEN PRINT AT 0,0;"GOLD TOO HEAVY!": LET G(Z,3)=G-((100*MBS)+100): LET G=(100*MBS)+100:: LET A$(X,Y+1)="d": GO TO 210 7820 IF G<(100*MBS)+100 THEN GO TO 210 7899 STOP 7900 PRINT AT X-1,Y-1;A$(X-1,Y TO Y+2);AT X,Y-1;A$(X,Y);"f";A$(X,Y+2);AT X+1,Y-1;A$(X+1,Y TO Y+2);AT 0,0;" ": IF LL=0 THEN RETURN 7905 PRINT AT X-2,Y-2;A$(X-2,Y-1 TO Y+3);AT X+2,Y-2;A$(X+2,Y-1 TO Y+2): FOR T=-1 TO 1: PRINT AT X+T,Y-2;A$(X+T,Y-1);AT X+T,Y+2;A$(X+T,Y+3): NEXT T: RETURN 7906 RETURN 7910 IF A$(X,Y+1)="c" AND G=0 THEN PRINT AT 0,0;"TEMPLE!": BEEP .05,40: BEEP .05,40.8: NEXT U: GO TO 200 7920 IF A$(X,Y+1)=" " THEN PRINT AT 0,0;"HP: ";HP;" EX: ";EX;" GOLD: ";G;" ": GO TO 300 7930 IF A$(X,Y+1)="c" AND G>0 THEN PRINT AT 0,0;"SACRIFICE OF GOLD!": FOR T=1 TO 5: BEEP .05,RND*30: NEXT T: LET EX=EX+G*5+INT (RND*10): LET G=0: NEXT U: GO TO 200 7940 IF A$(X,Y+1)="r" OR A$(X,Y+1)="d" THEN PRINT AT 0,0;"HIDDEN TREASURE!": FOR T=1 TO 6: BEEP .01,RND*20+40: NEXT T: GO TO 7800 7950 IF A$(X,Y+1)="D" OR A$(X,Y+1)="p" THEN PRINT AT 0,0;"TUNNEL GOING DOWN": FOR T=0 TO -4 STEP -1: BEEP .1,T: NEXT T: NEXT U: GO TO 200 7955 IF A$(X,Y+1)="U" OR A$(X,Y+1)="q" THEN PRINT AT 0,0;"TUNNEL GOING UP": FOR T=-4 TO 0: BEEP .1,T: NEXT T: NEXT U: GO TO 200 7960 IF A$(X,Y+1)="a" THEN GO TO 7700 7965 IF A$(X,Y+1)="o" THEN GO TO 9500 7970 FOR T=1 TO MONSTER: IF SCREEN$ (N(T,2),N(T,3))<>"f" THEN NEXT T: NEXT U: GO TO 200 7971 PRINT AT 0,0;"A ";M$(N(T,1),2 TO ): BEEP .1,30: GO TO 210 7999 STOP 8000 FOR t=1 TO 2: LET A$(t)="bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb": NEXT t 8001 FOR t=20 TO 21: LET A$(t)="bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb": NEXT t 8002 FOR T=3 TO 19: LET A$(T)="bb bb": NEXT t 8005 FOR Z=1 TO 25 8010 LET X=INT (RND*3)+1: LET Y=INT (RND*3)+1: LET XX=INT (RND*18)+4-X: LET YY=INT ((RND*28)+3)-Y 8020 FOR T=XX TO XX+X: FOR U=YY TO YY+Y: LET a$(t,u+1)="b": NEXT U: NEXT T 8025 NEXT z 8030 RETURN 8100 LET MONSTER=INT (RND*4)+2+DL 8110 DIM N(MONSTER,4) 8120 FOR T=1 TO MONSTER 8130 LET MONSTERVAL=INT (RND*20)+1: IF M(MONSTERVAL)>DL+8 THEN GO TO 8130 8140 LET N(T,1)=MONSTERVAL: LET N(T,4)=M(MONSTERVAL) 8150 LET XX=INT (RND*20)+1: LET YY=INT (RND*30)+1: IF A$(XX,YY)<>" " THEN GO TO 8150 8160 LET N(T,2)=XX: LET A$(XX,YY+1)=M$(N(T,1),1): LET N(T,3)=YY: NEXT T 8170 FOR t=1 TO 2 8180 LET XX=INT (RND*21)+1: LET YY=INT (RND*31)+1: IF A$(XX,YY)<>" " THEN GO TO 8180 8190 LET A$(XX,YY)="D": NEXT T 8200 IF DL=1 THEN GO TO 8250 8210 FOR T=1 TO 2 8220 LET XX=INT (RND*21)+1: LET YY=INT (RND*31)+1: IF A$(XX,YY)<>" " THEN GO TO 8220 8230 LET A$(XX,YY)="U": NEXT T 8250 LET XX=INT (RND*21)+1: LET YY=INT (RND*31)+1: IF A$(XX,YY)<>" " THEN GO TO 8250 8260 LET A$(XX,YY)="c" 8270 LET GOLD=INT (RND*7)+1: DIM G(7,3): FOR t=1 TO GOLD 8280 LET XX=INT (RND*21)+1: LET YY=INT (RND*31)+1: IF A$(XX,YY)<>" " THEN GO TO 8280 8290 LET G(T,1)=XX: LET A$(XX,YY+1)="r": LET G(T,2)=YY: LET G(T,3)=INT (RND*25)+25: NEXT T 8300 FOR T=1 TO INT (RND*10)+1+(3*DL) 8310 LET XX=INT (RND*21)+1: LET YY=INT (RND*31)+1: IF A$(XX,YY)<>" " THEN GO TO 8310 8320 LET A$(XX,YY)="a": NEXT T 8330 IF DL<>SWORD THEN RETURN 8340 LET XX=INT (RND*21)+1: LET YY=INT (RND*31)+1: IF A$(XX,YY+1)<>" " THEN GO TO 8340 8350 LET A$(XX,YY+1)="o": RETURN 8999 STOP 9000 RESTORE 9000: DIM M$(20,20): DIM M(20): FOR t=1 TO 20: READ M$(T),M(T): NEXT t 9010 DATA "gSHADOW DRAGON",19,"hMONK",16,"gGARGOYLE",9,"hCLERIC",7,"iDWARF GUARDIAN",8,"iWARLORD",12,"jSNAKE",11,"jSCORPION",13,"kFLOOR SLIME",17,"kWALL CREEPER",12 9020 DATA "lGIANT SPIDER",9,"lWEB SPIDER",11,"mFROGMAN",10,"mGOBLIN",13,"nSMALL DEVIL",9,"nLARGE DEVIL",11 9030 DATA "iHOBGOBLIN",9,"iMURDERER",8,"hDARK WARRIOR",20,"lGREAT ANT",18 9040 DIM A$(21,32) 9050 DIM P$(5,6): FOR T=1 TO 5: READ P$(T): NEXT T 9060 DATA "THUD!","CLINK!","SLAFS","GROWL!","SWISCH" 9070 RETURN 9400 PRINT AT 0,0;"THOU ART SLAIN ": STOP 9500 PRINT AT 0,0;"THE SWORD OF FARGOAL!": FOR T=1 TO 10: BEEP .01,T: BEEP .01,T+2: BEEP .01,T+10: BEEP .01,T+12: NEXT T: PRINT AT 0,0;"BATTLESKILL +3 MAX HITPOINTS +5": LET BS=BS+3: LET MHP=MHP+5: LET SWORD=0: GO TO 210 9900 FOR t=1 TO 21: FOR u=1 TO 32: PRINT AT t,u-1;a$(t,u): NEXT u: NEXT t 9910 FOR T=1 TO MONSTER: PRINT AT N(T,2),N(T,3);M$(N(T,1),1): NEXT T