D DON'T GET SICK":GOTO292 458 GOSUB545:IFR>=0THENPRINT"IT JUST HAD ITS SHOTS":GOTO292 459 PRINT"IT CATCHES THE BLACK PLAGUE":DA=RND(6)+RND(6):HM=HM-2:CH=CH+2 460 IFRND(100)<=30-L*5AND(CC(11)<1)GOSUB541:IFR<0THENPRINT"YOU CATCH IT TOO!":CC(11)=RND(50)+50:PRINT"IF YOU CAN'T GET OUT OF THE","DUNGEON IN"CC(11)-1" TURNS YOU","WILL DIE" 461 GOTO334 462 PRINT"BY THE "STRING$(5,128)" DIE!":IFQ2=1THEN438 463 GOSUB545:IFR>=2*(MN/5<>INT(MN/5))THEN437ELSE341 464 PRINT"DIE VILE CREATURE!","ZZAPP!!":IFQ2=1THEN438 465 GOSUB546:IFR>=2*(MN/5=INT(MN/5))THEN437 466 IFRND(100)<30-L*5THENPRINT"THE SPELL BACKFIRED":GOSUB542:IFR>=0THENPRINT"YOU RESISTED IT"ELSE66ELSE341 467 IFQ2=1THEN438 468 PRINT"A WALL OF STEEL ENCIRCLES YOU" 469 Q=RND(5):IFMN=99THENQ=2 470 IFQ=1ORMN=0ORMN=22THENPRINT"THE "MN$" TRIES TO","REACH YOU":DA=0:FORR=1TOINT(L/5.1+1):DA=DA+RND(6)+4:NEXT:GOTO530 471 IFQ>2THENPRINT"THE "MN$" GETS BORED","AND ";:GOTO352 472 PRINT"THE "MN$" IS PATIENT","YOUR SPELL WEARS OFF":GOTO292 473 IFQ2=1THEN438 474 DA=0:FORR=1TO2*INT(L/5.1)+1:DA=DA+RND(4)+3:NEXT:GOTO334 475 IFQ2=1THEN438 476 IFMN/5=INT(MN/5)THENPRINT"YOU CAN'T CHARM THE UNDEAD"GOTO292 477 GOSUB545:IFR>=2*(ML-4)*(ML>4)ORMN=9ORMN=99THENPRINT"IT DOESN'T THINK YOU'RE","CHARMING":GOTO292 478 PRINT"THE "MN$" IS CHARMED":DA=1:GOTO484 479 CC(5)=CC(5)+2:GOTO427 480 IFQ2=1THEN438 481 IFMN/5=INT(ML/5)THENPRINT"THE UNDEAD DON'T SLEEP":GOTO292 482 GOSUB545:IFR>=0ORMN=11ORMN=99ORML>5THENPRINT"IT'S NOT SLEEPY":GOTO292 483 PRINT"THE "MN$" IS ASLEEP":DA=0 484 PRINT"KILL OR EVADE" 485 GOSUB22 486 IFQ$<>"K"THENQ=-1:GOTO354 487 PRINT"KILL":IFRND(100)<10*(L-ML)*(DA=0)-(RND(11)+9)*(DA=1)THENPRINT"IT WOKE UP!":GOTO292ELSE449 488 IFQ2=1THEN438 489 GOSUB545:IFR>=0ORMN>24THENPRINT"THE "MN$" IS UNEFFECTED":GOTO292 490 DA=0:FORR=1TOMA:DA=DA+RND(MD):NEXT:PRINT"THE "MN$" BELIEVES","IT IS BEING ATTACKED","IT DOES"DA" DAMAGE TO ITSELF":GOTO337 491 IFQ2=1THEN438 492 IFRND(100)>90ORMN=15THENPRINT"YOU MISSED THE "MN$:GOTO292ELSEPRINT"THE "MN$" IS WEBBED":DA=0:GOTO445 493 IFQ2=1THEN438 494 DA=0:FORR=1TOL:DA=DA+RND(4)+2-2*(Q1=1):NEXT:GOSUB545:DA=INT(DA/(1-(R>=0))+1):GOTO334 495 CC(10)=CC(10)+6+L:GOTO427 496 CC(8)=CC(8)+6+L:GOTO427 497 CC(6)=999:GOTO427 498 IFQ2=1THEN438ELSEC9=12:GOTO292 499 GOSUB501 500 IFD=0THENPRINT"THAT IS SOLID ROCK":GOTO429ELSE90 501 PRINT"DIRECTION?":D=5 502 Q$=INKEY$ 503 IFQ$="^"THEND=1:IFY=15THEND=0 504 IFQ$=CHR$(9)THEND=2:IFX=15THEND=0 505 IFQ$=CHR$(10)THEND=3:IFY=1THEND=0 506 IFQ$=CHR$(8)THEND=4:IFX=1THEND=0 507 IFD=5THEN502ELSERETURN 508 CC(9)=CC(9)+6+L:IFQ1=1THEN44ELSE489 509 GOSUB501 510 PRINT"UP OR DOWN?" 511 Q$=INKEY$:IFQ$<>"U"ANDQ$<>"D"THEN511ELSEPRINTQ$ 512 IF RN=1THENPRINT"THE SPELL ACTS STRANGELY":Q$="":IFRND(3)=1THENQ$="D" 513 X=X+RND(5)*((D=4)-(D=2)):Y=Y+RND(5)*((D=3)-(D=1)) 514 Z=Z+RND(5)*((Q$="U")-(Q$="D")) 515 Z=Z+(Z-20)*(Z>20)+(Z-1)*(Z<1) 516 X=X+(X-15)*(X>15)+(X-1)*(X<1) 517 Y=Y+(Y-15)*(Y>15)+(Y-1)*(Y<1) 518 GOTO36 519 IFQ2=1THEN438 520 Q$="":FORDA=1TO5:Q$=Q$+CHR$(RND(26)+96):NEXT:PRINTTAB(5);Q$ 521 GOSUB546:IFR<0THEN341ELSEGOSUB546:IFR<0THEN437 522 PRINT"THE SPELL BACKFIRED":GOSUB542:IFR>=0THENPRINT"YOU RESISTED IT":GOTO292ELSE66 523 IFQ2=1THEN438ELSEPRINT"YOU ARE SURROUNDED BY A WALL OF ICE" 524 IFML<4THENQ=3:GOTO471 525 Q=RND(5):IFMN=99ORQ=2THEN472 526 IFQ>2ANDMN>0ANDMN<>22THEN471ELSEPRINT"THE "MN$" TRIES TO REACH YOU" 527 IFQ1=3AND(MN/5=INT(MN/5)ORMN=19)THENPRINT"UNFORTUNATELY "MN$"S DON'T","MIND THE COLD":GOTO292 528 IFQ1=5AND(MN=23ORMN=24ORMN=50)THENPRINT"UNFORTUNATELY "MN$"S ARE","FIREPROOF":GOTO292 529 DA=0:FORR=1TO(1+(Q1=5)*((MN/5=INT(MN/5)+(MN=19))-(Q1=3)*(MN>22)*(MN<99)))*INT(L/3.1+1):DA=DA+RND(6):NEXT 530 PRINT"IT SUFFERS"DA "DAMAGE POINTS":GOTO337 531 CC(2)=CC(2)+6+L:GOTO429 532 IFQ2=1THEN438ELSEPRINT"FLAMES SURROUND YOU":GOTO524 533 IFRND(100)>=5*(ML+4-L)THEN536 534 PRINT"THE DEMON IS ";:IFRND(2)=1THENPRINT"TAKING A BATH"ELSEPRINT"ASLEEP" 535 GOTO429 536 PRINT"THE DEMON APPEARS" 537 IFQ2=1ORMN=99THENA$="01112DEMON":MN=50:GOTO276ELSEPRINT"THE DEMON DEMOLISHES THE",MN$ 538 IFRND(100)>=5*(ML+2-L)THENPRINT"YOU DISPELL THE DEMON":GOTO145ELSEQ2=1:GOTO537 539 PRINT"YOU MADE IT OUT OF THE MINES":FORQ=0TO200:NEXT:EP=EP+G:GOSUB29:GOSUB34:G=0:FORX=0TO11:CC(X)=0:NEXT:HC=HP:GOSUB28:IFRN=0THEN16 540 PRINT"AND YOU RECOVERED THE RING!","YOU, "NA$", JOIN THE RANKS","OF THE HEROES OF OLD!":POKE65496,0:END 541 R=15-INT((2.5-(CT=0)+.5*(CT=2))*INT(L/(5.1-CT)))-(CT=2)-(C(2)<4)-(C(2)<6)-(C(2)<9)+(C(2)>12)+(C(2)>15)+(C(2)>17):GOSUB547:R=R-(CC(7)>0):RETURN 542 R=12-INT((2.5+.5*(CT=2))*INT(L/(5.1-CT)))+(CT=1)-(CT=0):GOSUB547:R=R-(CC(7)>0):RETURN 543 R=14-INT((2.5+.5*(CT=2))*INT(L/(5.1-CT))PRINT"+"T1 370 IF(T<3ANDT<>CT)OR(T>11ANDT<>CT+12)OR(T=6ANDCT=0)THENPRINT"TOO BAD YOU CAN'T USE IT":RETURN 371 IFP(T2)<0ORT1<=P(T2)THENPRINT"YOU LIKE THE ONE YOU HAVE":RETURN 372 PRINT"DO YOU WANT TO KEEP IT?":IFRND(25)=1ANDT2>2THENT1=-RND(3):IFCC(4)>0THENPRINT"'BEWARE' A VOICE WHISPERS":CC(4)=CC(4)-1 373 GOSUB22 374 IFQ$<>"Y"ANDQ$<>"K"THENPRINT"LEAVE IT":RETURN 375 PRINT"KEEP":P(T2)=T1:RETURN 376 IFT=7THENPRINT"A MAGIC "T$(7):CC(1)=CC(1)+RND(10)+20:RETURN 377 IFT>8THEN388 378 DA=0:IFRND(Z+10)>9THENDA=1 379 PRINT"A CHEST. OPEN OR IGNORE IT?" 380 IFCC(4)>0ANDDA=1THENPRINT"'BEWARE THE CHEST'","A VOICE WHISPERS":CC(4)=CC(4)-1 381 GOSUB22 382 IFQ$="O"THEN384 383 PRINT"IGNORE":RETURN 384 PRINT"OPEN":B9=B9+100:IFDA=0THEN387 385 IFRND(C(1)+C(4))>5*INT(Z/5+1)THENPRINT"YOU DEFUSE THE CHEST":GOTO387 386 Q2=RND(2*Z):HC=HC-Q2:PRINT"KABOOM! THE CHEST EXPLODES","YOU LOSE"Q2"HIT POINTS":IFHC<1THEN66 387 FORQ2=1TORND(4):GOSUB361:NEXT:RETURN 388 IFT>9THEN397 389 PRINT"A BOOK","READ OR IGNORE?" 390 GOSUB22 391 IFQ$<>"R"THEN383 392 DA=RND(3)*SGN(C(1)+C(2)-2*FND(X)-(Z>L)) 393 IFRND(3)=1ORDA=0THENPRINT"YOU CAN'T READ IT":RETURN 394 Q3=RND(6)-1:DA=DA+(4+DA)*(C(Q3)<3)*(DA<1):PRINT"YOUR"MID$(Q1$,Q3*4+1,4)" JUST WENT ";:D=C(Q3)+DA-20:IFD>0ANDRND(D)>1THENDA=-ABS(DA) 395 IFDA>0THENPRINT"UP";ELSEPRINT"DOWN"; 396 PRINTABS(DA):C(Q3)=C(Q3)+DA:RETURN 397 DA=-INT(Z^RND(2)*5^RND(2)*RND(T-6))*(B9>0):PRINTT$(T),"WORTH"DA:G=G+DA:B9=B9-DA:IFDA>0THENRETURNELSEIFT=11THENPRINT"THEY'RE GLASS"ELSEPRINT"IT'S REALLY GILDED LEAD" 398 RETURN 399 Q1=1-(MN=20):L=L-Q1:PRINT"THE "MN$" DRAINS"Q1," ENERGY LEVEL(S)":CP=1-(CT=0)+(CT=1):EP=INT(FNP(L+1)*.9):FORQ1=1TOQ1:FORQ=0TO3:S(Q)=S(Q)+(S(Q)>0):NEXTQ:HP=HP-RND(2)-CT:NEXTQ1:IFL<1ORHP<1THEN66ELSE317 400 PRINT"THE "MN$" SINGS HER SONG OF","DEATH":GOSUB541:IFR>=0THENPRINT"YOU IGNORE IT":GOTO317ELSEPRINT"YOU FALL UNDER HER SPELL":GOTO304 401 PRINT"THE "MN$" LOOKS JUST","LIKE YOU":IFRND(C(2))>FND(X)THENPRINT"YOU SEE THROUGH HIS DISGUISE":GOTO317ELSEPRINT"YOU'RE CONFUSED":GOTO304 402 PRINT"THE "MN$" USES ITS WHIP":DA=INT(ML/2)+RND(6)+RND(6)*2:GOTO306 403 PRINT"THE "MN$" BREATHES FIRE AT YOU":DA=MH:B9=B9-1:R=16-INT(2.5*INT(L/(5.1-CT)))+(CT=2):IFR<2THENR=2ELSEIFR>20THENR=20 404 IFR<=RND(20)THENDA=INT(DA/2)+1 405 GOTO306 406 Q=RND(4):ONQ GOTO407,408,409,411 407 PRINT"HIS EYES SHOOT FIRE AT YOU":DA=0:FORR=1TOINT(ML/5.1+1):DA=DA+RND(6)+1:NEXT:GOTO306 408 PRINT"HE THROWS LIGHTNING AT YOU":DA=0:FORR=1TOML:DA=DA+RND(4):NEXT:GOTO410 409 PRINT"HE THROWS A FIREBALL AT YOU":DA=0:FORR=1TOML:DA=DA+RND(6):NEXT 410 GOSUB541:DA=INT(DA/(1-(R>=0))+1):GOTO306 411 PRINT"HE SUMMONS A DEMON":A$="01112DEMON":MN=50:GOTO276 412 PRINT"YOU BITE OFF HIS FINGER AND","TAKE THE RING":RN=1:POKE 15*Y+X+485,0:! FNPK(Q),!(FNPK(Q))AND16:TR=0:GOTO42 413 PRINT"LEVEL";:GOSUB22 414 Q=VAL(Q$):PRINTQ:IFQ=0THEN427 415 IFQ<0ORQ>4THEN413 416 IFS(Q-1)<1THENPRINT"YOU HAVE NO LEVEL"Q,"SPELLS LEFT":GOTO427 417 PRINT"SPELL#";:GOSUB22 418 Q1=VAL(Q$):PRINTQ1:IFQ1>-1ANDQ1<7+2*(CT=1)THEN423 419 PRINT"SPELLS FOR THAT LEVEL ARE:" 420 FORQ1=0TO5+2*(CT=1) 421 PRINTQ1+1":";:IFCT=1THENPRINTSC$(Q1,Q-1)ELSEPRINTSM$(Q1,Q-1) 422 NEXT:PRINT:GOTO417 423 IFQ1=0THEN427 424 S(Q-1)=S(Q-1)-1:DA=0 425 IFCT=1THENPRINTSC$(Q1-1,Q-1):ON4*Q-4+Q1 GOTO428,430,431,433,439,440,441,442,450,451,455,456,462,464,467,438 426 PRINTSM$(Q1-1,Q-1):ON6*Q-6+Q1 GOTO473,475,479,480,428,430,488,491,493,495,496,497,493,498,499,442,508,455,509,519,523,531,532,533 427 IFQ2=1THEN44ELSE320 428 CC(7)=CC(7)+6-6*(CT=1)-L*(CT=2):GOTO427 429 IFQ2=1THEN44ELSE292 430 CC(1)=CC(1)+16-6*(CT=1)-L*(CT=2):GOTO427 431 HC=HC+RND(4)+3:IFHC>HP THENHC=HP 432 GOTO427 433 PRINT"BEGONE VILE CREATURE!" 434 IFQ2=1THENPRINT"THERE'S NOTHING THERE":GOTO438ELSES(0)=S(0)+1 435 IFMN/5<>INT(MN/5)THEN437 436 IFL-ML>2THEN454ELSEIFL-ML>0ORRND(6)+RND(6)>=2*(ML-L)+7THEN285 437 PRINT"THE "MN$" SCORNS YOUR WORDS":GOTO292 438 PRINT"YOU JUST WASTED A LEVEL"Q,"SPELL":GOTO429 439 CC(4)=CC(4)+2:GOTO427 440 CC(0)=CC(0)+12:GOTO427 441 CC(3)=CC(3)+12:GOTO427 442 IFQ2=1THEN438 443 GOSUB545:IFMN/5=INT(MN/5)ORR>=2THENPRINT"SPELL FAILED":GOTO292 444 PRINT"THE "MN$" IS HELD":DA=1 445 PRINT"KILL OR EVADE?" 446 GOSUB22 447 IFQ$<>"K"THENQ=-1:GOTO354ELSEIFCT=1THENDA=RND(3)+RND(3)+RND(3)+9+P(5):GOTO334 448 GOSUB545:IF(R>=2ANDDA=1)OR(RND(0)<=.125-.125*((ML>4)-(ML>7)-(MN=24))ANDDA=0)THENPRINT"IT BROKE FREE":GOTO292 449 PRINT"YOU SLIT IT'S THROAT":GOTO341 450 HC=HC+RND(4)+3:GOTO431 451 IFQ2=1THEN438 452 IFMN/5<>INT(MN/5)THEN437 453 GOSUB545:IFR>=2THEN437 454 PRINT"THE "MN$" IS DISPELLED INTO","THIN AIR":GOTO341 455 CC(1)=999:GOTO427 456 IFQ2=1THEN438 457 IFMN/5=INT(MN/5)THENPRINT"THE UNDEAF MN=99THENIFRND(3)>1THENPRINT"'darkness take you'":GOTO406ELSEPRINT"HE ATTACKS YOU WITH A KNIFE":GOTO304 288 IFB9>20THEN301 289 IFMN<25AND(CC(0)>0ORRND(P(1)+15)>15)THENPRINT"IT DOESN'T HEAR YOU":Q=-1:GOTO317 290 IFRND(P(2)+10)>10THEN295 291 C7=RND(6)+RND(6)+(C(5)<9)+(C(5)<4)-(C(5)>12)-(C(5)>17):IFC7>8THENPRINT"IT LOOKS GUARDEDLY AT YOU, BUT","DOESN'T ATTACK":GOTO317 292 IFCC(2)>0THENPRINT"TIME IS STOPPED":GOTO359 293 IFMH2GOSUB545:IFR>=0THEN301 298 PRINT"THE "MN$" IS CONFUSED":R=RND(6)+RND(6):IFR<6THEN301 299 IFR>8THENDA=0:FORR=1TOMA:DA=DA+RND(MD):NEXT:PRINT"IT DOES"DA" DAMAGE TO ITSELF":MH=MH-DA:IFMH<1THEN341 300 GOTO317 301 PRINT"IT ATTACKS YOU":IFRND(3)>1THEN304 302 IFMN=23THEN402 303 IFMN=99THEN406 304 DA=0:FORR=1TOMA:PRINT"STRIKE..":IFRND(20)-2*(Q$="L")>=CH-3*(CC(5)>0)-(CC(7)>0)-2*(Q$="P")+2*(CC(11)>0)THENDA=DA+RND(MD) 305 NEXT:IFDA=0THEN311 306 Q=DA:GOSUB272:IFHC<1THEN66 307 IFMN=10GOSUB543:IFR<0THENPRINT"ITS TOUCH PARALYZES YOU":GOTO297 308 IF(MN=15ORMN=20)ANDRND(2)=1ANDL>1THEN399 309 IFMN=18THENGOSUB542:IFR<0THENPRINT"IT POISONED YOU":Q=INT(ML/100*HP):GOSUB272:IFHC<1THEN65 310 GOTO315 311 IFQ$="P"ANDRND(20)1THEN314ELSEPRINT"IT MISSED ";:IFMH1ANDCT>0THENPRINT"YOU BLOCK WITH YOUR SHIELD"ELSEPRINT"YOUR ARMOR PROTECTS YOU" 315 IFRND(3)=1ANDMN=6THEN400 316 IFRND(3)=1ANDMN=11THEN401 317 PRINT"ATTACK, PARRY, LUNGE,":IFQ=0THENPRINT"BRIBE,"; 318 IFCT<2THENPRINT"CAST,"; 319 PRINT"OR EVADE":Q2=2 320 Q$=INKEY$ 321 IFQ$="A"THENPRINT"ATTACK":GOTO328 322 IFQ$="L"THENPRINT"LUNGE!":GOTO328 323 IFQ$="B"ANDQ=0THEN345 324 IFQ$="P"THENPRINT"PARRY":GOTO292 325 IFQ$="C"THEN413 326 IFQ$="E"THEN354 327 GOTO320 328 DA=0:CP=1-(L>15)*INT(L/5-3):CP=CP-(4-CP)*(CP>4) 329 FORR=1TOCP:PRINT"SWING..":IFRND(20)-P(5)-2*(Q$="L")-(Q=-1)>=HM+2*(CC(10)>2)-2*(CC(11)>0)THENDA=DA+RND(2*CT+4)+P(5)+(C(0)<4)+(C(0)<6)+(C(0)<9)-(C(0)>12)-(C(0)>15)-(C(0)>17)-2*(CC(10)>0) 330 NEXT:Q=1:DA=INT((1-.25*(Q$="L"))*DA):IFDA>0THEN333 331 PRINT"YOU MISSED ";:IFHC25ORMN=8ORMN=15ORMN=16ORMN=20)ANDP(5)21ANDMH-DA<1THENPRINT"THE "MN$" CHANGES SHAPE!":B9=B9-1:MN=RND(4)+5*(B9-21):DA=ML-1:GOTO275 337 MH=MH-DA:IFMH<1THEN341 338 IFCC(6)>0THENPRINT"'KNRSH' SAYS THE "MN$:CC(6)=0 339 IFRND(2)=1THENPRINT"IT BITES BACK" 340 GOTO292 341 Q=ML+1+(MLL+1)-(ML>L+2)-(MN=10)-(MN=15)-(MN=20)-(MN=6)-(MN=11)-(MN=8)-(MN=21)-(MN=18)-3*(MN>23):Q=-Q*(Q<21)*(10+10*(-(Q>3)-(Q>5)-(Q>6))+20*(-(Q>4)-(Q>7)-(Q>8)))-(Q>20)*(125*Q-1500) 342 CP=CT+1+3*(CT=2):Q=INT(Q*(1+.1*((C(CP)<6)+(C(CP)<9))-.05*((C(CP)>12)+(C(CP)>15)))) 343 EP=EP+Q:PRINT"IT DIED. YOU GAIN"Q" EP'S":GOSUB29:IF(MN=0ORMN=5ORMN=12ORMN=50)AND(TR=0ORTR=3)THEN145 344 IFMN=99THEN412ELSE359 345 A$="":PRINT"BRIBE/BLUFF",,"HOW MUCH OF YOUR"G"GOLD","WILL YOU GIVE THE "MN$,"TO LEAVE?","(0=BLUFF)":GOSUB23:IFQ<0THEN349 346 IFQ>G THENPRINT"YOU DON'T HAVE THAT MUCH":GOTO297 347 IFMN/5=INT(MN/5)ORMN=22ORMN=99THENPRINT"IT WON'T LISTEN":GOTO297 348 IFQ=0ANDMLL)))+10*(CC(9)>0)THENPRINT"IT IS INSULTED":GOTO297 350 G=G-Q:IFC7>11THENPRINT"THE "MN$" WHISPERS","'he IS BELOW LEVEL"Z1-1"'" 351 PRINT"IT TAKES YOUR GOLD AND" 352 PRINT"IT LEAVES" 353 POKE 15*Y+X+485,0:TR=0:GOTO145 354 DA=0:PRINT"EVADE":IFQ=-1GOSUB501:IFD=0OR(W(D)>0ANDW(D)<4)THENPRINT"YOU RAN INTO A WALL":GOTO292ELSETR=0:GOTO87 355 FORQ=1TO4:D=RND(4):IFW(D)<4ANDW(D)>0THENNEXT 356 IFW(D)>0AND W(D)<4THEN358 357 IFCC(6)>0ORC(4)+P(1)>=FND(X)THENTR=0:IFMH/M9-.2+((Q=0)/10)>=RND(0)ANDCC(6)<1THENPRINT"IT FOLLOWS YOU!":TR=-2:POKE15*Y+X+485,0:GOTO87ELSE87 358 PRINT"YOU'RE ROOTED TO THE SPOT!":GOTO292 359 POKE15*Y+X+485,0:Q=RND((ML/5+1)*(TR/2+.5))+2+(TR<>1):TR=0:IFQ=0THEN145 360 B9=INT(Z^RND(2)*5^RND(2)*RND(5))*2:FORQ1=1TOQ:Q2=0:GOSUB361:NEXT:B9=0:FORQ1=1TO100:NEXT:GOTO145 361 PRINT"YOU HAVE FOUND "; 362 T=RND(25)-1:IFQ2>0ANDT=8THEN362 363 IFT>14THENT=RND(2)+9 364 IFT<3THENT2=5ELSEIFT>11THENT2=4ELSEIFT=6THENT2=3ELSET2=T-3 365 IFT>6ANDT<12THEN376 366 T1=INT(Z/1.3)+RND(5)-3:IFT1<1THENT1=1 367 IFT<>4ANDT<12THENPRINT"A "; 368 PRINT"MAGIC "T$(T);:IFT>11THENPRINT,"ARMOR"; 369 LOOK IN, SMASH, OR TOUCH IT?":GOSUB22 216 IFQ$="S"THENPRINT"YOU SMASH IT INTO TINY SHARDS":GOSUB271:Q=RND(5):IFQ<3THEN42ELSEIFQ=2ORQ=3THENF=RND(3):Q=FNPK(Q):!Q,(!(Q)AND16)+F*16:GOTO97ELSEQ=RND(6)-1:P(Q)=(P(Q)>0):GOTO42 217 IFQ$="T"THENPRINT"YOU TOUCH IT":IFRND(2)=1THENPRINT"IT'S SO COLD IT BURNS":Q=INT(RND(5)*Z/3):GOTO202ELSEPRINT"ZAPP! YOU ARE TRANSPOSED":Q=16-X:X=16-Y:Y=Q:GOTO91 218 IFQ$<>"L"THEN167 219 Q=RND(7)+3*(RN=1):IFQ<5THENPRINT"YOU SEE YOURSELF":GOTO42 220 IFQ>5ANDZ"Y"ANDQ$<>"E"THEN167 228 Q=RND(24):IFQ<13THENPRINT"IT'S JUST STONE":GOTO42 229 PRINT"IT COMES TO LIFE!":GOSUB271:IFQ>16THENMN=RND(25)-1:GOTO275 230 ONQ-12GOTO231,232,233,236 231 PRINT"IT'S DIONYSUS! TOGETHER YOU GET","DRUNK. WHEN YOU COME TO, YOU","FIND SOMETHING HAS BEEN STOLEN FROM YOU AND YOUR HEAD HURTS.":P(RND(6)-1)=0:G=0:HC=INT(HC/2)+1:GOTO44 232 Q=RND(3)+P(0):PRINT"IT'S APOLLO! HE GIVES YOU","A RING +"Q:P(0)=Q:GOTO42 233 Q=RND(2):Q1=RND(3)+P(Q):MN$="":IFQ=2THENMN$="A" 234 PRINT"IT'S HERMES! HE GIVES YOU "MN$,T$(3+Q)"+"Q1:P(Q)=Q1:GOTO42 235 P(Q)=Q1:GOTO42 236 Q=RND(3):Q=Q+(CT=0)*(Q=1):Q1=P(Q+2)+RND(3):IFQ=1THENMN$="A SHIELD"ELSEIFQ=2THENMN$="ARMOR"ELSEMN$="A "+T$(CT) 237 PRINT"IT'S ATHENA! SHE GIVES YOU",MN$"+"Q1:P(Q+2)=Q1:GOTO42 238 PRINT"YOU HAVE FOUND AN ALTAR. YOU","CAN PRAY,IGNORE OR DESECRATE IT" 239 GOSUB22 240 IFQ$="P"THEN245 241 IFQ$="D"THEN262 242 PRINT"IGNORE" 243 IFRND(Z+20)<16ORCC(3)>0THEN42 244 FORQ=0TO10:CC(Q)=0:NEXT:GOTO42 245 PRINT"PRAY",,"OFFER GOLD, OR JUST PRAY" 246 GOSUB22 247 IFQ$="O"THEN252 248 IFQ$<>"P"ANDQ$<>"J"THEN246 249 PRINT"JUST PRAY":Q=RND(5):IFQ=1ANDCC(3)<1THENPRINT"CHEAPSKATE":GOTO244 250 IFQ<5THEN42ELSEQ1=RND(10)+5 251 PRINT"YOUR PRAYER HAS BEEN ANSWERED":Q=RND(11)-1:CC(Q)=CC(Q)+Q1:GOTO42 252 A$="":PRINT"HOW MUCH OF YOUR"G"GOLD ";:GOSUB23:IFQ<0ORQ>G THENPRINT"TRY AGAIN":GOTO252 253 IFG=0THEN249ELSEG=G-Q 254 IFP(3)>-1ANDP(4)>-1ANDP(5)>-1THEN259 255 PRINT"LEAVE YOUR CURSED (1)ARMOR","(2)SHIELD, OR (3) WEAPON":GOSUB22:Q1=VAL(Q$):IFQ1>3ORQ1<1THEN259 256 IF-Z>P(Q1+2)*5THENPRINT"TRY AN ALTAR BELOW"-P(Q1+2)*5:GOTO42 257 IF-Q>P(Q1+2)*1E3THENPRINT"TRY BEING MORE GENEROUS","SAY"-1E3*P(Q1+2):GOTO42 258 IFP(Q1+2)>-1THENPRINT"THAT ITEM IS NOT CURSED":GOTO42ELSEP(Q1+2)=0:GOTO42 259 IFQ<(RND(50)+50)*Z ANDQ0THENPRINT"YOU HAVE"HC"LEFT":RETURNELSERETURN 273 B9=0:MN=RND(5*(3+(Z<5)+(Z>16)))+5*INT(Z/4.1+(Z>4))-1:IFCC(7)>0ANDINT(MN/5)=MN/5ANDRND(3)>2THEN273 274 IFTR=4THENMN=24:B9=3 275 A$="":FORQ=1TO!(455680+32*MN):A$=A$+CHR$(!(455680+32*MN+Q)):NEXT 276 MN$=MID$(A$,6):IFMN=21THENB9=24 277 ML=INT((RY+Z)/2)+Z+3-(Z>10)-RND(5-2*(Z>10)):ML=ML+(ML<1)*(ML-1):ML=ML-(L>Z+1)-(Z=1)*(ML>1):Q=0:ML=ML+3*(ML<5)*(MN>18):IFMN=24ANDTR>1THENMN$=MN$+"LORD " 278 IFB9>21ANDMN<>21THENML=DA 279 IF RIGHT$(MN$,1)=" "THENML=ML+2 280 IFMN<99THENPRINT"YOU HAVE ENCOUNTERED A LEVEL",ML;MN$:IFRND(6)+(C(4)<9)+(C(4)<4)-(C(4)>12)-(C(4)>17)>RND(6)ORMN=5THENDA=-9 281 IFCC(2)>0THEN292 282 MH=0:FORR=1TOML:MH=MH+RND(8):NEXT:MA=VAL(MID$(A$,3,1)):MD=VAL(MID$(A$,4,2)):IFMN=1ANDMH>5THENMH=MH-4 283 M9=MH:MA=MA+(MA=1)*((ML>5)+(ML>10)):HM=19-INT(L/(5-CT))-VAL(LEFT$(A$,2))-2*(CC(11)>0):IFHM>20THENHM=20ELSEIFHM<2THENHM=2 284 HM=HM-(C(0)<9)-(C(0)<6)-(C(0)<4)+(C(0)>13)+(C(0)>15)+(C(0)>17)*(RND(2)-1)-P(5):IFCC(9)<1ORMN/5=INT(MN/5)ORMN>21ORRND(C(5))+L-ML<=FND(X)THEN286 285 PRINT"IT RUNS AWAY IN TERROR":GOTO359 286 CH=14-ML+2*CT+P(4)+P(3)+(CT=0)+(C(4)<4)+(C(4)<6)+(C(4)<9)-(C(4)>12)-(C(4)>15)-(C(4)>17)+2*(CC(11)>0):IFCH<2THENCH=2ELSEIFCH>20THENCH=20 287 I(TR>1)*RND(9)-RN*RND(9)ORTR=4 THEN273 143 IFTR=1ORTR=3THENMN=RND(6)*3:GOTO359 144 PRINT@233,F$(F);:PRINT@Q,""; 145 IFF>3THENONF-3GOTO153,157,162,180,194,198,206,207,215,225,238,270 146 GOTO42 147 Q=-(RND(Z+10)>9):PRINT"OPEN OR IGNORE IT?":IFCC(4)>0ANDQ=1THENPRINT"'BEWARE THE DOOR'","A VOICE WHISPERS":CC(4)=CC(4)-1 148 GOSUB22 149 IFQ$<>"O"THEN167 150 IFQ=0THENW(D)=4:D=Q1:GOTO97 151 IFRND(C(1))+RND(C(4))>5*INT(Z/5+1)THENPRINT"YOU DEFUSE THE DOOR"ELSEPRINT"KABOOM! THE DOOR EXPLODES":Q=RND(2*Z):HC=HC-Q:PRINT"YOU LOSE"Q"HIT POINTS":IFHC<1THEN66 152 PRINT"OPENED":FORQ=0TO300:NEXT:Q=0:GOTO150 153 IFRN=1ORCC(2)>0THENPRINT"THE TELEPORTER DOESN'T WORK":GOTO42 154 PRINT"ZZAPP!! YOU'VE BEEN TELEPORTED":FORQ=0TO100:NEXT:IFMI>1THEN156 155 IFZ/2<>INT(Z/2)THENZ=Z+RND(3)ELSEZ=Z-RND(3):Z=Z-(Z<1)+(Z>20) 156 X=RND(15):Y=RND(15):IFMI>1THEN91ELSE36 157 IFCC(4)>0THEN160 158 IF(CC(1)>0ANDRND(3)>1)ORRND(C(4)+P(1))>6THEN161 159 PRINT"YOU FALL THROUGH THE TRAP DOOR":FORQ=1TO200:NEXT:GOTO214 160 PRINT"'BEWARE THE FLOOR'","A VOICE WHISPERS":CC(4)=CC(4)-1 161 PRINT"YOU NOTICE A TRAP DOOR NEAR","YOUR FEET":GOTO211 162 PRINT"YOU HAVE FOUND A RUNE COVERED","JEWEL ENCRUSTED THRONE" 163 PRINT,,"SIT, PRY, READ RUNES, OR IGNORE":RY=RY+.5:IFRY/2=INT(RY/2)GOSUB58 164 GOSUB22 165 IF RND(100)"I"THEN168 167 PRINT"IGNORE":GOTO42 168 IFQ$="S"THEN176 169 IFQ$="P"THEN174 170 IFQ$="R"THEN172 171 GOTO163 172 PRINT"READ RUNES!":IFRND(C(1)+C(2))0)L)THENPRINT"THEY WON'T COME OFF":GOTO163 175 Q=RND(5)*RND(Z)*25*Z:PRINT"THEY POP INTO YOUR GREEDY HANDS THEY'RE WORTH"Q:G=G+Q:GOTO163 176 PRINT"SIT ON THE THRONE":Q=RND(10):IFQ=1THENPRINT"THE THRONE ELECTROCUTES YOU","YOU LOSE A LEVEL":FORQ=0TO3:S(Q)=INT(S(Q)/2):NEXT:Q=RND(HP/L):GOSUB272:L=L-1:HP=HP-Q:EP=INT(EP-EP/(L-(L=0))):IFHC<1ORL=0THEN66ELSE163 177 IFQ>8THENPRINT"A BELL RINGS":Q=1:CP=1-(CT=0)+(CT=1):EP=INT(FNP(L+1)+1):GOSUB29:GOTO163 178 IFQ=8ANDRN=0THEN153 179 PRINT"NOTHING HAPPENS":GOTO163 180 PRINT"IN THE WALL THERE IS A SMALL","DOOR WITH FOUR BUTTONS NUMBERED 1,2,3,4 AND FOUR LIGHTS.":FORMN=1TO4:PRINTCHR$(128);" ";:NEXT:PRINT:TV$="":FORMN=1TO4:TV$=TV$+STR$(RND(4)):NEXT 181 MN$="":PRINT"PRESS FOUR BUTTONS OR IGNORE" 182 GOSUB22 183 IFQ$<>"P"THEN167 184 PRINT"PRESS THEM":MN$="":FORQ=1TO4 185 Q$=INKEY$:IFQ$=""ORVAL(Q$)<1THEN185 186 PRINTQ$" ";:MN$=MN$+" "+Q$:NEXT:PRINT:DA=0:CP=0:FORQ=1TO4:IFMID$(TV$,2*Q-1,2)=MID$(MN$,2*Q-1,2)THENCP=CP+1:DA=DA-1 187 NEXT:FORQ=1TO4:FORQ1=1TO4:IFMID$(TV$,2*Q-1,2)=MID$(MN$,2*Q1-1,2)THENDA=DA+1:MID$(MN$,2*Q1-1,2)=" ":Q1=4 188 NEXTQ1,Q:IFDA>0THENFORQ=1TODA:PRINTCHR$(191);" ";:NEXT 189 IFCP>0THENFORQ=1TOCP:PRINTCHR$(207);" ";:NEXT 190 IFCP+DA<4THENFORQ=1TO4-CP-DA:PRINTCHR$(128);" ";:NEXT 191 PRINT:IFCP=4THEN193 192 PRINT"ZZAPP!! YOU ARE ELECTROCUTED!":Q=RND(Z)+1:GOSUB272:IFHC<1THEN66ELSE181 193 PRINT"THE DOOR OPENS!":TV$="":TR=3:ML=24:GOSUB271:GOTO359 194 PRINT"YOU HAVE FOUND AN EXCELSIOR","TRANSPORTER!":IFRN=1ORCC(2)>0THENPRINT"BUT IT DOESN'T WORK":GOTO42 195 A$="":PRINT"WHAT LEVEL DO YOU WANT TO GO TO ";:GOSUB23:IFQ=0ORQ>20THEN42 196 Q1=ABS(Z-Q)*100:IFQ1>G THENPRINT"YOU CAN'T AFFORD IT":GOTO195 197 PRINT"THAT WILL COST"Q1:G=G-Q1:Q1=-1:Z=Q:Q=Z*226+450573:Y=!(Q)AND15:X=INT(!(Q)/16):GOTO36 198 Q=RND(4):Q$="WHITEGREENBLACKRED":Q$=MID$(Q$,Q*5-4,5):PRINT"YOU SEE A FOUNTAIN WITH "Q$,"WATER. DRINK OR IGNORE":Q1=(X+Y+Z)AND7:Q1=Q1+4*(Q1>4):GOSUB22 199 IFQ$<>"D"THEN167ELSEPRINT"DRINK" 200 IFQ=Q1 THEN205ELSEONRND(5)GOTO201,203,204,204,205 201 PRINT"AAARRRGH! IT'S POISONED WATER":Q=RND(Z/2+1):GOSUB542:IFR>=0THENPRINT"YOU RESIST IT":GOTO42 202 GOSUB272:IFHC<1THEN66ELSE43 203 DA=RND(3)*SGN(C(5)-FND(X)):IFDA=0THEN42ELSEGOSUB394:GOTO44 204 PRINT"IT'S JUST WATER":GOTO42 205 PRINT"IT TINGLES":HC=HC+INT((HP-HC)/2):Q=RND(4)-1:S(Q)=S(Q)+RND(2):GOTO42 206 PRINT"YOU FEEL HEAVY FOR A MOMENT":Z=Z-1:FORQ=1TO300:NEXT:GOTO36 207 IFCC(1)>0ORRND(C(4)+P(1))>RND(Z)+5THEN210ELSEIFCC(8)>0THEN209 208 PRINT"YOU FALL INTO THE PIT":Q=RND(Z)+RND(Z):GOSUB272:FORQ=1TO200:NEXT:IFHC<1THEN66ELSE214 209 PRINT"AS YOU HOVER ACROSS THE ROOM" 210 PRINT"YOU NOTICE A PIT IN THE FLOOR":IFZ=20THENPRINT"IT'S BOTTOMLESS!" 211 PRINT"DO YOU WANT TO GO DOWN":GOSUB22 212 IFQ$<>"Y"ANDQ$<>"D"THENPRINT"NO":GOTO42 213 IFF=11ANDC(4)+RND(P(1))<=FND(X)+RND(Z)THENPRINT"YOU SLIP":GOTO208 214 Z=Z+1:GOTO36 215 PRINT"YOU SEE A MIRROR. DO YOU WANT TOO67 69 C(3)=C(3)-RND(1-(C(3)>2)):PRINT"YOU ARE ALIVE WITH A","CONSTITUTION OF"C(3):Q=4:L=L+(L>1)-(L=0):FORQ1=1TOL:Q=Q+RND(C(3)/2):NEXT:CP=1-(CT=0)+(CT=1):EP=INT(FNP(L)):PRINT"AND"Q"HIT POINTS":HC=Q:HP=Q:GOTO43 70 GOSUB28:POKE65496,0:KILLLEFT$(NA$,8)+".CHR" 71 POKE65496,0:RUN"CONTROL 72 PRINT"HELP!!!!!":IFRND(6+2*(CC(3)>0))>1THEN44 73 PRINT"O.K.,BUT IT'S GOING TO COST YOU":Q=RND(7)-1:IFQ=6THENG=0ELSEIFP(Q)>0THENP(Q)=0 74 PRINT"DO YOU WANT:":IFP(3)<0ORP(4)<0ORP(5)<0THENPRINT"aDVICE ON CURSES" 75 PRINT"dIRECTIONS","lIGHT","pROTECTION OR","rELOCATION?":GOSUB22 76 IFQ$="A"THENPRINT"TRY PRAYING AT AN ALTAR","(AND BE GENEROUS)" 77 IFRN=0ANDQ$="R"THENFORQ=0TO10:CC(Q)=0:NEXT:Z=Z-INT(RND(Z/2)):GOTO36 78 IFQ$="P"THEN428ELSEIFQ$="L"THEN430 79 IFQ$="D"THENPRINT"YOU ARE ON LEVEL"Z", AT"X","Y" AND THE ENTRANCE IS AT"EX","EY"." 80 GOTO 44 81 PRINT"INVENTORY:"NA$" THE "CT$(CT):PRINT"LEVEL"L,,"HIT POINTS"HC,"EP'S"EP,"GOLD"G:IFRN=1THENPRINT"YOU HAVE THE RING!" 82 FORQ=3TO5:PRINTT$(Q)"+"P(Q-3);:NEXT:PRINT 83 IFCT>0THENPRINTT$(6)"+"P(3) 84 PRINTT$(CT+12)" ARMOR+"P(4),T$(CT)"+"P(5) 85 IFCT<2THENFORQ=0TO3:PRINT"SPELLS LEVEL"Q+1"=";-S(Q)*(S(Q)>0):NEXT 86 PRINTQ1$:FORQ=0TO5:PRINTUSING"####";C(Q);:NEXT:PRINT"":RETURN 87 LG=0:IFW(D)=2THENIFCC(1)ORRND(3)>2THENPRINT"YOU HAVE FOUND A SECRET DOOR.":LG=5ELSELG=-5 88 IFW(D)=1ORLG=-5THENPRINT"IT'S ONLY A WALL":Q$="W":GOTO53 89 IFW(D)=3ORLG=5THEN147 90 X=X-(D=2)+(D=4):Y=Y-(D=1)+(D=3) 91 FORRY=-2TO1:FORRX=-2TO1:R(RX+2,RY+2,0)=!(FNPK(Q)+15*RY+RX)AND3:R(RX+2,RY+2,1)=(!(FNPK(Q)+15*RY+RX)AND12)/4:NEXT:NEXT:F=INT(!(FNPK(Q))/16):Q=PEEK(15*Y+X+485):IFTR>-1THENTR=Q 92 IFX=1THENFORQ=1TO3:R(1,Q,1)=1:NEXT 93 IFX=2THENFORQ=1TO3:R(0,Q,1)=1:NEXT 94 IFY=1THENFORQ=1TO3:R(Q,1,0)=1:NEXT 95 IFY=2THENFORQ=1TO3:R(Q,0,0)=1:NEXT 96 W(1)=R(2,2,0):W(2)=R(2,2,1):W(3)=R(2,1,0):W(4)=R(1,2,1):RY=0 97 CLS:Q1=53:PRINT@Q1,"";:FORQ=0TO11:IFCC(Q)>0THENPRINT" "CC$(Q); 98 IFPOS(0)>28THENQ1=Q1+64:PRINT@Q1,""; 99 NEXTQ 100 Q$=STRING$(7,175):A$=CHR$(175):LG=-(CC(1)<1):Q1=0:Q2=0:D=1:N=1 101 IFW(1)>0ORLG=1THEN115 102 IFR(1,3,1)>0ORR(1,2,0)>0ORW(4)>0THEN105 103 IFFNAA(14)>0THENPRINT@68,"?"; 104 Q1=1:R9=R(1,3,0):IFR9>0THENPRINT@1,Q$;:IFR9=3THENPRINT@4,W$(1); 105 IFFNAA(15)>0THENPRINT@74,"?"; 106 R9=R(2,3,0):IFR9>0THENPRINT@7,Q$;:IFR9=3THENPRINT@10,W$(1); 107 IFW(2)>0ORR(2,3,1)>0ORR(3,2,0)THEN112 108 IFFNAA(16)>0THENPRINT@80,"?"; 109 R9=R(3,3,0):Q2=1:IFR9>0THENPRINT@13,Q$;:IFR9=3THENPRINT@16,W$(1); 110 R9=R(3,3,1):IFR9>0THENFORQ=0TO4:PRINT@19+32*Q,A$;:NEXT:IFR9=3THENPRINT@83,W$(1); 111 GOTO113 112 R9=R(2,3,1):IFR9>0THENFORQ=0TO4:PRINT@13+32*Q,A$;:NEXT:IFR9=3THENPRINT@77,W$(1); 113 R9=R(1,3,1):IFR9>0THENFORQ=0TO4:PRINT@7+32*Q,A$;:NEXT:IFR9=3THENPRINT@71,W$(1); 114 IFQ1=0THEN115ELSER9=R(0,3,1):IFR9>0THENFORQ=0TO4:PRINT@1+32*Q,A$;:NEXT:IFR9=3THENPRINT@65,W$(1); 115 IFW(4)>0ORLG=1THEN118 116 IFFNAA(-1)>0THENPRINT@196,"?"; 117 R9=R(1,2,0):IFR9>0THENPRINT@129,Q$;:IFR9=3THENPRINT@132,W$(1); 118 IFW(1)>0THENPRINT@135,Q$;:IFW(1)>LG+1THENPRINT@138,W$(W(1)-2); 119 IFW(2)>0ORLG=1THEN121ELSEIFFNAA(1)>0THENPRINT@208,"?"; 120 R9=R(3,2,0):IFR9>0THENPRINT@141,Q$;:IFR9=3THENPRINT@144,W$(1); 121 IFW(2)=0ANDLG=0THENR9=R(3,2,1):IFR9>0THENFORQ=0TO4:PRINT@147+32*Q,A$;:NEXT:IFR9=3THENPRINT@211,W$(1); 122 IFW(2)>0THENN=0:FORQ=0TO4:PRINT@141+32*Q,A$;:NEXT:IFW(2)>LG+1THENPRINT@205,W$(W(2)-2); 123 IFW(4)>0THEND=0:FORQ=0TO4:PRINT@135+32*Q,A$;:NEXT:IFW(4)>LG+1THENPRINT@199,W$(W(4)-2); 124 IFW(4)>0ORLG=1THEN126ELSER9=R(0,2,1):IFR9>0THENFORQ=0TO4:PRINT@129+32*Q,A$;:NEXT:IFR9=3THENPRINT@193,W$(1); 125 R9=R(1,1,0):IFR9>0THEND=0:PRINT@257,Q$;:IFR9=3THENPRINT@260,W$(1); 126 Q=288:IFW(3)>0THENPRINT@263,Q$;:IFW(3)>LG+1THENPRINT@266,W$(W(3)-2); 127 IFLG=1THEN140 128 IFW(2)=0THENR9=R(3,1,0):IFR9>0THENN=0:PRINT@269,Q$;:IFR9=3THENPRINT@272,W$(1); 129 IFW(3)>0THEN140 130 IFN=1ANDR(2,1,1)=0THENR9=R(3,1,1):IFR9>0THENFORQ=0TO4:PRINT@275+32*Q,A$;:NEXT:IFR9=3THENPRINT@339,W$(1); 131 R9=R(2,1,1):IFR9>0THENN=0:FORQ=0TO4:PRINT@269+32*Q,A$;:NEXT:IFR9=3THENPRINT@333,W$(1); 132 R9=R(1,1,1):IFR9>0THEND=0:FORQ=0TO4:PRINT@263+32*Q,A$;:NEXT:IFR9=3THENPRINT@327,W$(1); 133 IFD=0THEN136ELSER9=R(0,1,1):IFR9>0THENFORQ=0TO4:PRINT@257+32*Q,A$;:NEXT:IFR9=3THENPRINT@321,W$(1); 134 IFFNAA(-16)>0THENPRINT@324,"?"; 135 R9=R(1,0,0):IFR9>0THENPRINT@385,Q$;:IFR9=3THENPRINT@388,W$(1); 136 IFFNAA(-15)>0THENPRINT@330,"?"; 137 R9=R(2,0,0):IFR9>0THENPRINT@391,Q$;:IFR9=3THENPRINT@394,W$(1); 138 Q=416:IFN=0THEN140ELSEIFFNAA(-14)>0THENPRINT@336,"?"; 139 R9=R(3,3,0):IFR9>0THENPRINT@397,Q$;:IFR9=3THENPRINT@400,W$(1); 140 PRINT@202,"X";:PRINT@169,TR$(ABS(TR));:PRINT@Q,""; 141 IFTR<0THEN292 142 IFRND(Z+30)<=Z+RY-(Z<5)-(TR=3)*RND(9)- 0 CLEAR160:CLS:DEFUSR0=490:Q=RND(-TIMER):'ON BRK GOTO4360 1 EX=!(450569):EY=!(450570):X1=!(450571):Y1=!(450572):Z1=!(450573):X=USR0(Y) 2 DEFFNSS(Q)=RND(10)+RND(10)-18-2*INT((Q-1)/3):DIMF$(15),T$(14),W$(2),CC(11),CT$(2),TR$(4),CC$(11),SM$(5,3),SC$(3,3),C(5),S(3),W(4),P(5),R(3,3,1) 3 DEFFND(Q)=RND(6)+RND(6)+RND(6):DEFFNAA(V)=INT(!(FNPK(Q)+V)/16)+ABS(PEEK(15*Y+X+V+485)):DEFFNPK(Q)=226*Z+15*Y+X+450332:DEFFNP(N)=(750+CP*250)*(-(N<8)*2^(N-1))-(N>7)*(1E5-2E4*(CP>0)-3E4*(CP>1))*(N-7) 4 Q1$=" STR INT WIS CON DEX CHA":FORX=0TO15:READF$(X):NEXT:DATA" ","U/ ","D/ ",U/D,TPT,TRP,THR,TVR,EXC,FNT,ELV,PIT,MIR,STA,ALT,DRK 5 FORX=0TO14:READT$(X):NEXT:DATADAGGER,MACE,SWORD,RING,BOOTS,CLOAK,SHIELD,TORCH,CHEST,BOOK,GOLD,JEWELS,LEATHER,MAIL,PLATE 6 FORX=0TO2:READCT$(X):NEXT:DATAMAGE,CLERIC,WARRIOR 9 FORX=0TO11:READCC$(X):NEXT:DATASLNC,LGHT,TMST,PRAY,DTRP,SHLD,INVS,PROT,LEVT,FEAR,STRG,PLAG 10 FORX=0TO2:READQ:W$(X)=CHR$(Q):NEXT:DATA128,207,143 11 FORX=0TO4:READTR$(X):NEXT:DATA""," $"," #"," #$","DGN" 12 FORY=0TO3:FORX=0TO5:READSM$(X,Y):NEXTX,Y:DATA MAGIC MISSLE,CHARM,SHIELD,SLEEP,PROTECT FROM EVIL,LIGHT,PHANTASMAL FORCES,WEB,LIGHTNING BOLT,STRENGTH,LEVITATE,INVISIBILITY,FIREBALL,CONFUSE,PASSWALL,HOLD MONSTER,FEAR,CONTINUAL LIGHT 13 DATA TELEPORT,POWER WORD KILL,WALL OF ICE,TIMESTOP,WALL OF FIRE,SUMMON DEMON 14 FORY=0TO3:FORX=0TO3:READSC$(X,Y):NEXTX,Y:DATAPROTECT FROM EVIL,LIGHT,CURE LIGHT WOUNDS,TURN UNDEAD,DETECT TRAPS,SILENCE,PRAY,HOLD MONSTER,CURE SERIOUS WOUNDS,DISPELL UNDEAD,CONTINUAL LIGHT,PLAGUE,HOLY WORD,FINGER OF DEATH,BLADE BARRIER,RAISE DEAD 15 GOSUB27:RENAME"^IN^USE^.CHT"TO LEFT$(NA$,8)+".CHR":POKE65497,0:IFZ=0THEN35ELSE36 16 CLS:MI=0:PRINT"QUIT,RE-ENTER MINES, INVENTORY,","AND POINTS FOR LEVEL 'N'":GOSUB22 17 IF Q$="Q"THENMZ$="":GOSUB28:GOTO71 18 IF Q$="R"THEN35 19 IFQ$="I"THENCLS:GOSUB81 20 IFQ$="P"THENCLS:GOSUB26 21 PRINT"PRESS ANY KEY TO CONTINUE":GOSUB22:GOTO16 22 Q$=INKEY$:IFQ$=""THEN22ELSERETURN 23 GOSUB22:PRINTQ$;:IFQ$>CHR$(31)THENA$=A$+Q$ 24 IFQ$=CHR$(8)ANDLEN(A$)>0THENA$=LEFT$(A$,LEN(A$)-1):GOTO23 25 IFQ$<>CHR$(13)THEN23ELSEQ=VAL(A$):RETURN 26 PRINT"CHARACTER TYPE",,"MAGE, CLERIC, OR WARRIOR":GOSUB22:CP=-1-(Q$="C")-2*(Q$="W")-3*(Q$="M"):IFCP<0THEN26ELSEA$="":PRINT"LEVEL ";:GOSUB23:N=Q:PRINT"POINTS FOR THAT LEVEL ARE",INT(FNP(N)):RETURN 27 POKE65496,0:CLS:OPEN"I",1,"^IN^USE^.CHT":INPUT#1,NA$,MZ$,X,Y,Z,CT,L,HP,HC,EP,G,RN:FORQ=0TO5:INPUT#1,P(Q),C(Q):NEXT:FORQ=0TO3:INPUT#1,S(Q):NEXT:FORQ=0TO11:INPUT#1,CC(Q):NEXT:CLOSE1:POKE65497,0:RETURN 28 IFHP=0THENRETURNELSEPOKE65496,0:OPEN"O",1,LEFT$(NA$,8)+".CHR":WRITE#1,NA$,MZ$,X,Y,Z,CT,L,HP,HC,EP,G,RN:FORQ=0TO5:WRITE#1,P(Q),C(Q):NEXT:FORQ=0TO3:WRITE#1,S(Q):NEXT:FORQ=0TO11:WRITE#1,CC(Q):NEXT:CLOSE1:POKE65497,0:RETURN 29 Q=L+1:Q1=1:CP=1-(CT=0)+(CT=1) 30 IFEP>FNP(Q)THENQ=Q+1:GOTO30 31 IFQ=L+1THEN33 32 Q=Q-L-1:PRINT"YOU HAVE GAINED"Q"LEVELS!":FORQ2=1TOQ:Q1=Q1+RND(C(3)/2):NEXT:PRINT"YOU HAVE GAINED"Q1"HIT POINTS":HP=HP+Q1:HC=HC+Q1:L=L+Q:IFCT<2THENFORDA=0TO3:S(DA)=S(DA)+Q:NEXT 33 FORDA=1TO300:NEXT:RETURN 34 S(0)=1.5:S(1)=-.5*(CT=0):S(2)=.5*(CT=1):S(3)=-.5:FORQ=0TO3:S(Q)=INT(S(Q)+L*(.5-.25*(C(5)>15))+10*(CT=2)):NEXT:RETURN 35 CLS:PRINT"YOU ENTER THE MINES OF MORIA":X=EX:Y=EY:Z=1 36 IFZ=0THEN539 37 IFZ>20THENPRINT"YOU'RE FALLING...":FORQ=1TO200:NEXT:PRINT"SPLAT!",,"YOU ARE DEAD.":GOTO70 38 Q=USR0(Q1):FORQ=0TO30+Z 39 Q1=RND(8):TR=-2*(Q1<5)+(Q1>4)*(Q1<7)-3*(Q1>6) 40 Q1=RND(225):IFRND(90)=1THENTR=4 41 POKEQ1+500,TR:NEXT:OL=Z:GOTO91 42 RY=RY+1:IFHC0)*(RND(2)=1):IFHC>HP THENHC=HP 43 GOSUB58:PRINT">>":IFCC(11)=1THEN65 44 Q2=1:GOSUB22 45 IFVAL(Q$)<5THEND=VAL(Q$) 46 IFQ$="^"THEND=1ELSEIFQ$=CHR$(9)THEND=2ELSEIFQ$=CHR$(10)THEND=3ELSEIFQ$=CHR$(8)THEND=4 47 IFQ$="U"ORQ$="D"THEN59 48 IFQ$="I"THENGOSUB81:GOTO44 49 IFQ$="H"THEN72 50 IFQ$="K"THEN64 51 IFQ$="P"GOSUB26:GOTO44 52 IFQ$="C"THEN413 53 IFQ$="W"THENIFRND(Z+15)>RY+Z-(TR=3)*RND(9)-(TR>1)*RND(9)-RND(4)*(RN=1)THEN42ELSE273 54 IFQ$="L"THEN97 55 IFQ$="Q"THENPRINT"QUIT... ARE YOU SURE (Y/N)?":GOSUB22:IFQ$<>"Y"THEN44ELSEGOSUB28:GOTO71 56 IFD>0THEN87 57 PRINT"LEGAL COMMANDS ARE:","A DIRECTION","INVENTORY","HELP","CAST","WAIT","LOOK","KILL SELF","QUIT","POINTS FOR LEVEL 'N'":GOTO44 58 FORQ=0TO11:CC(Q)=CC(Q)-(CC(Q)>0)*(Q<>4):NEXT:RETURN 59 F=INT(!(FNPK(Q))/16):IFQ$="U"THEN63 60 IFF=2ORF=3THENZ=Z+1:GOTO36 61 IFF=11 THEN213 62 PRINT"THERE'S NO WAY "Q$:GOTO44 63 IFF=1ORF=3THENZ=Z-1:GOTO36ELSE62 64 PRINT"LET ME DIE!!!":INPUT"ARE YOU SURE";Q$:IFQ$<>"YES"THEN44 65 PRINT"AARRRGGGHHH!" 66 PRINT"YOU DIE" 67 IFCT<>1ORQ$="YES"ORS(3)<1THEN70 68 PRINT"RAISE DEAD!!":S(3)=S(3)-1:GOSUB541:IFR<2*(L<13)+2*(L<9)ORC(3)=1THENPRINT"SPELL FAILED":GOT:Q$qA RN1"THE SPELL ACTS STRANGELY":Q$"":(3)1Q$"D"quXX(5)((D4)(D2)):YY(5)((D3)(D1))qZZ(5)((Q$"U")(Q$"D"))qZZ(Z20)(Z20)(Z1)(Z1)qXX(X15)(X15)(X1)(X1)qYY(Y15)(Y15)(Y1)(Y1)r36rQ21438rDQ$"":DA15:Q$Q$((26)96)::5);Q$rg 546:R0341:546:R0437r "THE SPELL BACKFIRED":542:R0"YOU RESISTED IT":292:66r Q21438:"YOU ARE SURROUNDED BY A WALL OF ICE"r ML4Q3:471s Q(5):MN99Q2472sJQ2MN0MN22471:"THE "MN$" TRIES TO REACH YOU"sQ13(MN5(MN5)MN19)"UNFORTUNATELY "MN$"S DON'T","MIND THE COLD":292sQ15(MN23MN24MN50)"UNFORTUNATELY "MN$"S ARE","FIREPROOF":292tNDA0:R1(1(Q15)((MN5(MN5)(MN19))(Q13)(MN22)(MN99)))(L3.11):DADA(6):tx"IT SUFFERS"DA "DAMAGE POINTS":337tCC(2)CC(2)6L:429tQ21438:"FLAMES SURROUND YOU":524t(100)5(ML4L)536u"THE DEMON IS ";:(2)1"TAKING A BATH":"ASLEEP"u 429u9"THE DEMON APPEARS"uQ21MN99A$"01112DEMON":MN50:276:"THE DEMON DEMOLISHES THE",MN$u(100)5(ML2L)"YOU DISPELL THE DEMON":145:Q21:537v5"YOU MADE IT OUT OF THE MINES":Q0200::EPEPG:29:34:G0:X011:CC(X)0::HCHP:28:RN016v"AND YOU RECOVERED THE RING!","YOU, "NA$", JOIN THE RANKS","OF THE HEROES OF OLD!":65496,0:w!R15((2.5(CT0).5(CT2))(L(5.1CT)))(CT2)(C(2)4)(C(2)6)(C(2)9)(C(2)12)(C(2)15)(C(2)17):547:RR(CC(7)0):wqR12((2.5.5(CT2))(L(5.1CT)))(CT1)(CT0):547:RR(CC(7)0):wR14((2.5.5(CT2))(L(5.1CT))):547:RR(CC(7)0):w R16(2.5(L(5.1CT)))(CT2):547:RR(CC(7)0):x7!R162(ML(1(MN11)(MN16)(MN21))3.1):547:RR2(MN6):xU"R122(ML3.1):547:xn#R2R2:R20R20x$R(20)R:.5(CT2))(L(5.1CT))):547:RR(CC(7)0):w R16(2.5(L(5.1CT)))(CT2):547:RR(CC(7)0):x7!R162(F":337oQ21438oj(100)90MN15"YOU MISSED THE "MN$:292:"THE "MN$" IS WEBBED":DA0:445oxQ21438oDA0:R1L:DADA(4)22(Q11)::545:DA(DA(1(R0))1):334oCC(10)CC(10)6L:427oCC(8)CC(8)6L:427p 1 CLEAR200,&H6000:CLS:PRINTTAB(10);"DND-GEN" 10 INPUT"NAME OF DUNGEON";MZ$:IFLEN(MZ$)>8THENPRINT"8 CHAR MAX":GOTO10 20 CU=RND(-TIMER):MZ$=MZ$+".DAT" 50 C9=24590 60 N=15:M=15 70 EX=RND(15)-1:EY=RND(15)-1 80 XD=RND(15)-1:YD=RND(15)-1:ZD=RND(3)+17 90 POKE24585,EX+1:POKE24586,15-EY:POKE24587,XD+1:POKE24588,15-YD:POKE24589,ZD 100 DIMA(N-1,M-1),F(3*(M+N),1),SO(14,14),SN(14,14) 110 FORL=1TO20 120 C=0:PRINT@203," "; 130 POKE65497,0 140 FORQQ=0TO14:FORQW=0TO14:A(QW,QQ)=0:NEXTQW,QQ 150 CU=0:A=-99 160 X=RND(N)-1:Y=RND(M)-1 170 X1=X:Y1=Y:A(X,Y)=16 180 GOSUB610 190 A=RND(CU)-1 200 MD=CU:CU=A 210 X1=F(A,0):Y1=F(A,1) 220 B1=RND(4) 230 FORBT=B1 TO B1+3:B=BT+4*(BT>4):X2=(B=4)-(B=2):Y2=(B=1)-(B=3) 240 IFX1+X2<0ORX1+X2>N-1ORY1+Y2<0ORY1+Y2>M-1THEN NEXTBT 250 IFA(X1+X2,Y1+Y2)<1THEN NEXTBT 260 A(X1,Y1)=INT(2^(B-1)) 270 B=B+2:B=B+4*(B>4):A(X1+X2,Y1+Y2)=A(X1+X2,Y1+Y2)+INT(2^(B-1)) 280 C=C+1:PRINT@203,L;C;:IFC=INT(N*M-1)THEN310 290 GOSUB610 300 GOTO190 310 A(X,Y)=A(X,Y)-16 320 'POKE65496,0 330 X1=RND(15)-1:Y1=RND(15)-1:IFL=1ANDX1=EX ANDY1=EY THEN330 340 IFL=ZD AND X1=XD ANDY1=YD THEN330 350 FORD=0TO14:FORD1=0TO14:SO(D1,D)=SN(D1,D):NEXTD1,D 360 FORY=14TO0STEP-1:FORX=0TO14 370 C=A(X,Y) AND 3 380 CN=-((C AND 1)=0) 390 CE=-(SGN(C AND 2)=0) 400 IF RND(5)=1 AND Y>0 THENCN=RND(5)-2:CN=CN-(CN<0) 410 IFRND(5)=1 AND X<14 THENCE=RND(5)-2:CE=CE-(CE<0) 420 C=CN+4*CE 430 OB=0:IFRND(11-L/3.5)>1THEN470 440 OB=RND(14) 445 IF OB=4 AND(RND(3)=1 OR L<3) THEN440 450 IF OB=8AND(X<>X1 ORY<>Y1)THEN440 460 IFOB>3ANDSO(X,Y)=1ANDRND(3)>1THENOB=RND(3) 470 IFL=1GOSUB565 480 IFX=X1 ANDY=Y1 THEN OB=8:GOTO510 490 IFOB>0ANDOB<4THENSN(X,Y)=1 500 IFL=ZD GOSUB590 510 C=C+16*OB 520 POKEC9,C:C9=C9+1 530 NEXT X,Y 550 NEXTL 555 POKE65496,0 560 SAVEM MZ$,24585,29109,24585:RUN"CONTROL 565 IFOB>0ANDOB<4THENOB=RND(10)+4 570 IF X=EX AND Y=EY THEN OB=RND(2)*2-1 580 RETURN 590 IFX=XD AND Y=YD THEN OB=15 600 RETURN 610 Y2=0:FORX2=-1TO1STEP2:GOSUB690:NEXT 620 X2=0:FORY2=-1TO1STEP2:GOSUB690:NEXT 630 IFCU<>A THEN680 640 CU=MD 650 F(A,0)=F(CU-1,0):F(A,1)=F(CU-1,1) 660 CU=CU-1 680 RETURN 690 IFX1+X2<0ORX1+X2>N-1THEN740 700 IFY1+Y2<0ORY1+Y2>M-1THEN740 710 IFA(X1+X2,Y1+Y2)<>0THEN740 720 A(X1+X2,Y1+Y2)=-1:F(CU,0)=X1+X2:F(CU,1)=Y1+Y2 730 IFCU=A THEN CU=MD ELSE CU=CU+1 740 RETURN =MD 650 F(A,0)=F(CU-1,0):F(A,1)=F(CU-1,1) 660 CU=CU-1 680 RE "MN$" SINGS HER SONG OF","DEATH":541:R0"YOU IGNORE IT":317:"YOU FALL UNDER HER SPELL":304_"THE "MN$" LOOKS JUST","LIKE YOU":(C(2))D(X)"YOU SEE THROUGH HIS DISGUISE":317:"YOU'RE CONFUSED":304`"THE "MN$" USES ITS WHIP":DA(ML2)(6)(6)2:306`"THE "MN$" BREATHES FIRE AT YOU":DAMH:B9B91:R16(2.5(L(5.1CT)))(CT2):R2R2:R20R20`R(20)DA(DA2)1`306`Q(4):Q 407,408,409,411a "HIS EYES SHOOT FIRE AT YOU":DA0:R1(ML5.11):DADA(6)1::306ac"HE THROWS LIGHTNING AT YOU":DA0:R1ML:DADA(4)::410a"HE THROWS A FIREBALL AT YOU":DA0:R1ML:DADA(6):a541:DA(DA(1(R0))1):306a"HE SUMMONS A DEMON":A$"01112DEMON":MN50:276bf"YOU BITE OFF HIS FINGER AND","TAKE THE RING":RN1: 15YX485,0: PK(Q),(PK(Q))16:TR0:42by"LEVEL";:22bQ(Q$):Q:Q0427bQ0Q4413bS(Q1)1"YOU HAVE NO LEVEL"Q,"SPELLS LEFT":427b"SPELL#";:22cQ1(Q$):Q1:Q11Q172(CT1)423c<"SPELLS FOR THAT LEVEL ARE:"cQQ1052(CT1)cQ11":";:CT1SC$(Q1,Q1):SM$(Q1,Q1)c::417cQ10427cS(Q1)S(Q1)1:DA0dCT1SC$(Q11,Q1):4Q4Q1 428,430,431,433,439,440,441,442,450,451,455,456,462,464,467,438dSM$(Q11,Q1):6Q6Q1 473,475,479,480,428,430,488,491,493,495,496,497,493,498,499,442,508,455,509,519,523,531,532,533dQ2144:320dCC(7)CC(7)66(CT1)L(CT2):427dQ2144:292eCC(1)CC(1)166(CT1)L(CT2):427e2HCHC(4)3:HCHP HCHPe<427eY"BEGONE VILE CREATURE!"eQ21"THERE'S NOTHING THERE":438:S(0)S(0)1eMN5(MN5)437eLML2454:LML0(6)(6)2(MLL)7285f"THE "MN$" SCORNS YOUR WORDS":292f3"YOU JUST WASTED A LEVEL"Q,"SPELL":429fKCC(4)CC(4)2:427fdCC(0)CC(0)12:427f}CC(3)CC(3)12:427fQ21438f545:MN5(MN5)R2"SPELL FAILED":292f"THE "MN$" IS HELD":DA1f"KILL OR EVADE?"f22g=Q$"K"Q1:354:CT1DA(3)(3)(3)9P(5):334g545:(R2DA1)((0).125.125((ML4)(ML7)(MN24))DA0)"IT BROKE FREE":292g"YOU SLIT IT'S THROAT":341gHCHC(4)3:431gÅQ21438gąMN5(MN5)437hŁ545:R2437hCƇ"THE "MN$" IS DISPELLED INTO","THIN AIR":341hWCC(1)999:427heȅQ21438hɅMN5(MN5)"THE UNDEAD DON'T GET SICK":292hʁ545:R0"IT JUST HAD ITS SHOTS":292i ˇ"IT CATCHES THE BLACK PLAGUE":DA(6)(6):HMHM2:CHCH2i̅(100)30L5(CC(11)1)541:R0"YOU CATCH IT TOO!":CC(11)(50)50:"IF YOU CAN'T GET OUT OF THE","DUNGEON IN"CC(11)1" TURNS YOU","WILL DIE"í334i·"BY THE "(5,128)" DIE!":Q21438jρ545:R2(MN5(MN5))437:341j2Ї"DIE VILE CREATURE!","ZZAPP!!":Q21438jVс546:R2(MN5(MN5))437j҅(100)30L5"THE SPELL BACKFIRED":542:R0"YOU RESISTED IT":66:341jӅQ21438jԇ"A WALL OF STEEL ENCIRCLES YOU"jQ(5):MN99Q2kUօQ1MN0MN22"THE "MN$" TRIES TO","REACH YOU":DA0:R1(L5.11):DADA(6)4::530kׅQ2"THE "MN$" GETS BORED","AND ";:352k؇"THE "MN$" IS PATIENT","YOUR SPELL WEARS OFF":292kمQ21438kDA0:R12(L5.1)1:DADA(4)3::334l ۅQ21438lA܅MN5(MN5)"YOU CAN'T CHARM THE UNDEAD"292l݁545:R2(ML4)(ML4)MN9MN99"IT DOESN'T THINK YOU'RE","CHARMING":292lއ"THE "MN$" IS CHARMED":DA1:484lCC(5)CC(5)2:427lQ21438mMN5(ML5)"THE UNDEAD DON'T SLEEP":292mP⁦545:R0MN11MN99ML5"IT'S NOT SLEEPY":292mp"THE "MN$" IS ASLEEP":DA0m"KILL OR EVADE"m偦22mQ$"K"Q1:354m"KILL":(100)10(LML)(DA0)((11)9)(DA1)"IT WOKE UP!":292:449nQ21438n=遦545:R0MN24"THE "MN$" IS UNEFFECTED":292nDA0:R1MA:DADA(MD)::"THE "MN$" BELIEVES","IT IS BEING ATTACKED","IT DOES"DA" DAMAGE TO ITSELF":337nQ21438o(100)90MN15"YOU MISSED THE "MN$:292:"THE "MN$" IS WEBBED":DA0:445o Q21438olDA0:R1L:DADA(4)22(Q11)::545:DA(DA(1(R0))1):334oCC(10)CC(10)6L:427oCC(8)CC(8)6L:427oCC(6)999:427oQ21438:C912:292o501pD0"THAT IS SOLID ROCK":429:90p"DIRECTION?":D5p$Q$p>Q$"^"D1:Y15D0pZQ$(9)D2:X15D0pvQ$(10)D3:Y1D0pQ$(8)D4:X1D0pD5502:pCC(9)CC(9)6L:Q1144:489p501p"UP OR DOWN?"qQ$:Q$"U"Q$"D"511 ITSELF":MHMHDA:MH1341M$,317MG-"IT ATTACKS YOU":(3)1304MV.MN23402Me/MN99406M0DA0:R1MA:"STRIKE..":(20)2(Q$"L")CH3(CC(5)0)(CC(7)0)2(Q$"P")2(CC(11)0)DADA(MD)M1:DA0311M2QDA:272:HC166N23MN10543:R0"ITS TOUCH PARALYZES YOU":297NU4(MN15MN20)(2)1L1399N5MN18542:R0"IT POISONED YOU":Q(ML100HP):272:HC165N6315N7Q$"P"(20)CH2"IT SLIPPED":Q1:317O,8(6)1314:"IT MISSED ";:MHMLANDRND(2)1"DUE TO ITS WEAKENED CONDITION"O89:315O:(3)1CT0"YOU BLOCK WITH YOUR SHIELD":"YOUR ARMOR PROTECTS YOU"O;(3)1MN6400O<(3)1MN11401O="ATTACK, PARRY, LUNGE,":Q0"BRIBE,";O>CT2"CAST,";P?"OR EVADE":Q22P@Q$P-AQ$"A""ATTACK":328PIBQ$"L""LUNGE!":328P]CQ$"B"Q0345PxDQ$"P""PARRY":292PEQ$"C"413PFQ$"E"354PG320PHDA0:CP1(L15)(L53):CPCP(4CP)(CP4)QIR1CP:"SWING..":(20)P(5)2(Q$"L")(Q1)HM2(CC(10)2)2(CC(11)0)DADA(2CT4)P(5)(C(0)4)(C(0)6)(C(0)9)(C(0)12)(C(0)15)(C(0)17)2(CC(10)0)QJ:Q1:DA((1.25(Q$"L"))DA):DA0333RK"YOU MISSED ";:HCC(3)2(C(3))D(X)"DUE TO YOUR WEAKENED","CONDITION"RL:292RmM(MN25MN8MN15MN16MN20)P(5)ML5"A GOOD BLOW",,"BUT IT HAS NO EFFECT!":DA0RN"YOU DO"DA"DAMAGE TO THE",MN$ROMN18MAMA1RPB921MHDA1"THE "MN$" CHANGES SHAPE!":B9B91:MN(4)5(B921):DAML1:275SQMHMHDA:MH1341S?RCC(6)0"'KNRSH' SAYS THE "MN$:CC(6)0S]S(2)1"IT BITES BACK"SgT292T3UQML1(MLL1)(MLL2)(MLL1)(MLL2)(MN10)(MN15)(MN20)(MN6)(MN11)(MN8)(MN21)(MN18)3(MN23):QQ(Q21)(1010((Q3)(Q5)(Q6))20((Q4)(Q7)(Q8)))(Q20)(125Q1500)TVCPCT13(CT2):Q(Q(1.1((C(CP)6)(C(CP)9)).05((C(CP)12)(C(CP)15))))TWEPEPQ:"IT DIED. YOU GAIN"Q" EP'S":29:(MN0MN5MN12MN50)(TR0TR3)145TXMN99412:359UfYA$"":"BRIBE/BLUFF",,"HOW MUCH OF YOUR"G"GOLD","WILL YOU GIVE THE "MN$,"TO LEAVE?","(0=BLUFF)":23:Q0349UZQG "YOU DON'T HAVE THAT MUCH":297U[MN5(MN5)MN22MN99"IT WON'T LISTEN":297U\Q0MLL2(2)1352V8]Q(10(MN31)((MLL)ML(MLL)))10(CC(9)0)"IT IS INSULTED":297V{^GGQ:C711"THE "MN$" WHISPERS","'he IS BELOW LEVEL"Z11"'"V_"IT TAKES YOUR GOLD AND"V`"IT LEAVES"Va 15YX485,0:TR0:145W"bDA0:"EVADE":Q1501:D0(W(D)0W(D)4)"YOU RAN INTO A WALL":292:TR0:87WFcQ14:D(4):W(D)4W(D)0W^dW(D)0 W(D)4358WeCC(6)0C(4)P(1)D(X)TR0:MHM9.2((Q0)10)(0)CC(6)1"IT FOLLOWS YOU!":TR2:15YX485,0:87:87Wf"YOU'RE ROOTED TO THE SPOT!":292X@g15YX485,0:Q((ML51)(TR2.5))2(TR1):TR0:Q0145XhB9(Z(2)5(2)(5))2:Q11Q:Q20:361::B90:Q11100::145Xi"YOU HAVE FOUND ";XjT(25)1:Q20T8362XkT14T(2)9YlT3T25:T11T24:T6T23:T2T3YmT6T12376Y;nT1(Z1.3)(5)3:T11T11YQoT4T12"A ";Yvp"MAGIC "T$(T);:T11,"ARMOR";Yq"+"T1Yr(T3TCT)(T11TCT12)(T6CT0)"TOO BAD YOU CAN'T USE IT":ZsP(T2)0T1P(T2)"YOU LIKE THE ONE YOU HAVE":Zmt"DO YOU WANT TO KEEP IT?":(25)1T22T1(3):CC(4)0"'BEWARE' A VOICE WHISPERS":CC(4)CC(4)1Zvu22ZvQ$"Y"Q$"K""LEAVE IT":Zw"KEEP":P(T2)T1:ZxT7"A MAGIC "T$(7):CC(1)CC(1)(10)20:ZyT8388[ zDA0:(Z10)9DA1[,{"A CHEST. OPEN OR IGNORE IT?"[u|CC(4)0DA1"'BEWARE THE CHEST'","A VOICE WHISPERS":CC(4)CC(4)1[~}22[~Q$"O"384["IGNORE":["OPEN":B9B9100:DA0387[(C(1)C(4))5(Z51)"YOU DEFUSE THE CHEST":387\SQ2(2Z):HCHCQ2:"KABOOM! THE CHEST EXPLODES","YOU LOSE"Q2"HIT POINTS":HC166\mQ21(4):361::\zT9397\"A BOOK","READ OR IGNORE?"\22\Q$"R"383\DA(3)(C(1)C(2)2D(X)(ZL))](3)1DA0"YOU CAN'T READ IT":]Q3(6)1:DADA(4DA)(C(Q3)3)(DA1):"YOUR"(Q1$,Q341,4)" JUST WENT ";:DC(Q3)DA20:D0(D)1DA(DA)]DA0"UP";:"DOWN";](DA):C(Q3)C(Q3)DA:^?DA(Z(2)5(2)(T6))(B90):T$(T),"WORTH"DA:GGDA:B9B9DA:DA0:T11"THEY'RE GLASS":"IT'S REALLY GILDED LEAD"^E^Q11(MN20):LLQ1:"THE "MN$" DRAINS"Q1," ENERGY LEVEL(S)":CP1(CT0)(CT1):EP(P(L1).9):Q11Q1:Q03:S(Q)S(Q)(S(Q)0):Q:HPHP(2)CT:Q1:L1HP166:317_g"THSH IT INTO TINY SHARDS":271:Q(5):Q342:Q2Q3F(3):QPK(Q):Q,((Q)16)F16:97:Q(6)1:P(Q)(P(Q)0):42<مQ$"T""YOU TOUCH IT":(2)1"IT'S SO COLD IT BURNS":Q((5)Z3):202:"ZAPP! YOU ARE TRANSPOSED":Q16X:X16Y:YQ:91<څQ$"L"167%Q(24):Q13"IT'S JUST STONE":42>\"IT COMES TO LIFE!":271:Q16MN(25)1:275>wQ12231,232,233,236?!"IT'S DIONYSUS! TOGETHER YOU GET","DRUNK. WHEN YOU COME TO, YOU","FIND SOMETHING HAS BEEN STOLEN FROM YOU AND YOUR HEAD HURTS.":P((6)1)0:G0:HC(HC2)1:44?gQ(3)P(0):"IT'S APOLLO! HE GIVES YOU","A RING +"Q:P(0)Q:42?Q(2):Q1(3)P(Q):MN$"":Q2MN$"A"?"IT'S HERMES! HE GIVES YOU "MN$,T$(3Q)"+"Q1:P(Q)Q1:42?P(Q)Q1:42@IQ(3):QQ(CT0)(Q1):Q1P(Q2)(3):Q1MN$"A SHIELD":Q2MN$"ARMOR":MN$"A "T$(CT)@"IT'S ATHENA! SHE GIVES YOU",MN$"+"Q1:P(Q2)Q1:42@"YOU HAVE FOUND AN ALTAR. YOU","CAN PRAY,IGNORE OR DESECRATE IT"@22@Q$"P"245@Q$"D"262A"IGNORE"A(Z20)16CC(3)042A7Q010:CC(Q)0::42A_"PRAY",,"OFFER GOLD, OR JUST PRAY"Ah22AxQ$"O"252AQ$"P"Q$"J"246A"JUST PRAY":Q(5):Q1CC(3)1"CHEAPSKATE":244AQ542:Q1(10)5B("YOUR PRAYER HAS BEEN ANSWERED":Q(11)1:CC(Q)CC(Q)Q1:42BqA$"":"HOW MUCH OF YOUR"G"GOLD ";:23:Q0QG "TRY AGAIN":252BG0249:GGQBP(3)1P(4)1P(5)1259C"LEAVE YOUR CURSED (1)ARMOR","(2)SHIELD, OR (3) WEAPON":22:Q1(Q$):Q13Q11259C8ZP(Q12)5"TRY AN ALTAR BELOW"P(Q12)5:42CQP(Q12)1E3THENPRINT"TRY BEING MORE GENEROUS","SAY"1E3P(Q12):42CP(Q12)1"THAT ITEM IS NOT CURSED":42:P(Q12)0:42CQ((50)50)Z QG 42C(2)142D Q1(20)10:251Dn"YOU DO VILE AND UNSPEAKABLE","THINGS TO THE ALTAR":C(5)D(X)3Z5"NOTHING HAPPENS":243D"THE ALTAR CRUMBLES INTO DUST":271DQ(5):Q242D Q1F11:QPK(Q): Q,((Q)16)176:207D Q3244E Q4"THERE'S SOMETHING LEFT BEHIND":TR4:359EO "A VOICE BOOMS OUT","'I SHALL BE AVENGED!'"E} A$"01112DEMON PRINCE ":MN50:271:276E"CRUEL LAUGHTER RINGS OUT","'PREPARE TO DIE, MORTAL'","THE DARK ONE SNEERS":A$"00114DARK ONE":MN99:CC(6)0:276F PK(Q),(PK(Q))15:F0:FZHCHCQ:"YOU LOSE"Q"HIT POINTS":HC0"YOU HAVE"HC"LEFT"::FB90:MN(5(3(Z5)(Z16)))5(Z4.1(Z4))1:CC(7)0(MN5)MN5(3)2273FTR4MN24:B93GA$"":Q1(45568032MN):A$A$((45568032MNQ)):G&MN$(A$,6):MN21B924GML((RYZ)2)Z3(Z10)(52(Z10)):MLML(ML1)(ML1):MLML(LZ1)(Z1)(ML1):Q0:MLML3(ML5)(MN18):MN24TR1MN$MN$"LORD "GB921MN21MLDAG (MN$,1)" "MLML2H^MN99"YOU HAVE ENCOUNTERED A LEVEL",ML;MN$:(6)(C(4)9)(C(4)4)(C(4)12)(C(4)17)(6)MN5DA9HoCC(2)0292HMH0:R1ML:MHMH(8)::MA((A$,3,1)):MD((A$,4,2)):MN1MH5MHMH4I3M9MH:MAMA(MA1)((ML5)(ML10)):HM19(L(5CT))((A$,2))2(CC(11)0):HM20HM20:HM2HM2IHMHM(C(0)9)(C(0)6)(C(0)4)(C(0)13)(C(0)15)(C(0)17)((2)1)P(5):CC(9)1MN5(MN5)MN21(C(5))LMLD(X)286I"IT RUNS AWAY IN TERROR":359JaCH14ML2CTP(4)P(3)(CT0)(C(4)4)(C(4)6)(C(4)9)(C(4)12)(C(4)15)(C(4)17)2(CC(11)0):CH2CH2:CH20CH20J MN99(3)1"'darkness take you'":406:"HE ATTACKS YOU WITH A KNIFE":304J B920301K!MN25(CC(0)0(P(1)15)15)"IT DOESN'T HEAR YOU":Q1:317K&"(P(2)10)10295K#C7(6)(6)(C(5)9)(C(5)4)(C(5)12)(C(5)17):C78"IT LOOKS GUARDEDLY AT YOU, BUT","DOESN'T ATTACK":317K$CC(2)0"TIME IS STOPPED":359L%MHM9 ((MN12B920)MN20)DA1(MN20)(MH1M9):"IT REGENERATES"DA"!":MHMHDAL.&CC(6)1296LS'"IT DOESN'T SEE YOU":Q1:317Lb(DA9317L)C91301:C9C91:ML2545:R0301L*"THE "MN$" IS CONFUSED":R(6)(6):R6301M+R8DA0:R1MA:DADA(MD)::"IT DOES"DA" DAMAGE TO0N0:@269,Q$;:R93@272,W$(1);)2W(3)0140)N1R(2,1,1)0R9R(3,1,1):R90Q04:@27532Q,A$;::R93@339,W$(1);)R9R(2,1,1):R90N0:Q04:@26932Q,A$;::R93@333,W$(1);* R9R(1,1,1):R90D0:Q04:@26332Q,A$;::R93@327,W$(1);*XD0136:R9R(0,1,1):R90Q04:@25732Q,A$;::R93@321,W$(1);*sAA(16)0@324,"?";*R9R(1,0,0):R90@385,Q$;:R93@388,W$(1);*AA(15)0@330,"?";*R9R(2,0,0):R90@391,Q$;:R93@394,W$(1);+Q416:N0140:AA(14)0@336,"?";+RR9R(3,3,0):R90@397,Q$;:R93@400,W$(1);+|@202,"X";:@169,TR$((TR));:@Q,"";+TR0292+(Z30)ZRY(Z5)(TR3)(9)(TR1)(9)RN(9)TR4 273+TR1TR3MN(6)3:359, @233,F$(F);:@Q,"";,IF3F3153,157,162,180,194,198,206,207,215,225,238,270,R42,Q((Z10)9):"OPEN OR IGNORE IT?":CC(4)0Q1"'BEWARE THE DOOR'","A VOICE WHISPERS":CC(4)CC(4)1,22,Q$"O"167,Q0W(D)4:DQ1:97-(C(1))(C(4))5(Z51)"YOU DEFUSE THE DOOR":"KABOOM! THE DOOR EXPLODES":Q(2Z):HCHCQ:"YOU LOSE"Q"HIT POINTS":HC166-"OPENED":Q0300::Q0:150-RN1CC(2)0"THE TELEPORTER DOESN'T WORK":42."ZZAPP!! YOU'VE BEEN TELEPORTED":Q0100::MI1156.KZ2(Z2)ZZ(3):ZZ(3):ZZ(Z1)(Z20).nX(15):Y(15):MI191:36.CC(4)0160.(CC(1)0(3)1)(C(4)P(1))6161."YOU FALL THROUGH THE TRAP DOOR":Q1200::214/"'BEWARE THE FLOOR'","A VOICE WHISPERS":CC(4)CC(4)1/Q"YOU NOTICE A TRAP DOOR NEAR","YOUR FEET":211/"YOU HAVE FOUND A RUNE COVERED","JEWEL ENCRUSTED THRONE"/,,"SIT, PRY, READ RUNES, OR IGNORE":RYRY.5:RY2(RY2)58/220D (100)ZRY9"WOOOSH!!KABOOM!!","THE THRONES' OWNER RETURNS!":A$"04110DWARFLORD ":MN3:2760UQ$"I"1680h"IGNORE":420xQ$"S"1760Q$"P"1740Q$"R"17201630"READ RUNES!":(C(1)C(2))D(X)3"YOU CAN'T READ THEM!":1631A"THE LETTERS BLUR BEFORE YOU":Q(4(Z5)(Z10)(Z15))1:S(Q)S(Q)(2):1631"PRY OFF JEWELS":C(0)(12)(CC(10)0)D(X)4(ZL)(ZL)"THEY WON'T COME OFF":1631Q(5)(Z)25Z:"THEY POP INTO YOUR GREEDY HANDS THEY'RE WORTH"Q:GGQ:1632"SIT ON THE THRONE":Q(10):Q1"THE THRONE ELECTROCUTES YOU","YOU LOSE A LEVEL":Q03:S(Q)(S(Q)2)::Q(HPL):272:LL1:HPHPQ:EP(EPEP(L(L0))):HC1L066:1632Q8"A BELL RINGS":Q1:CP1(CT0)(CT1):EP(P(L1)1):29:1633 Q8RN01533*"NOTHING HAPPENS":1633"IN THE WALL THERE IS A SMALL","DOOR WITH FOUR BUTTONS NUMBERED 1,2,3,4 AND FOUR LIGHTS.":MN14:(128);" ";:::TV$"":MN14:TV$TV$((4)):3MN$"":"PRESS FOUR BUTTONS OR IGNORE"3224 Q$"P"1674+"PRESS THEM":MN$"":Q144IQ$:Q$""(Q$)11854Q$" ";:MN$MN$" "Q$:::DA0:CP0:Q14:(TV$,2Q1,2)(MN$,2Q1,2)CPCP1:DADA15:Q14:Q114:(TV$,2Q1,2)(MN$,2Q11,2)DADA1:(MN$,2Q11,2)" ":Q145,Q1,Q:DA0Q1DA:(191);" ";:5NCP0Q1CP:(207);" ";:5xCPDA4Q14CPDA:(128);" ";:5:CP41935"ZZAPP!! YOU ARE ELECTROCUTED!":Q(Z)1:272:HC166:1816"THE DOOR OPENS!":TV$"":TR3:ML24:271:3596\‡"YOU HAVE FOUND AN EXCELSIOR","TRANSPORTER!":RN1CC(2)0"BUT IT DOESN'T WORK":426A$"":"WHAT LEVEL DO YOU WANT TO GO TO ";:23:Q0Q20426Q1(ZQ)100:Q1G "YOU CAN'T AFFORD IT":1957+Ň"THAT WILL COST"Q1:GGQ1:Q11:ZQ:QZ226450573:Y(Q)15:X((Q)16):367Q(4):Q$"WHITEGREENBLACKRED":Q$(Q$,Q54,5):"YOU SEE A FOUNTAIN WITH "Q$,"WATER. DRINK OR IGNORE":Q1(XYZ)7:Q1Q14(Q14):227DžQ$"D"167:"DRINK"8ȅQQ1 205:(5)201,203,204,204,2058Sɇ"AAARRRGH! IT'S POISONED WATER":Q(Z21):542:R0"YOU RESIST IT":428jʁ272:HC166:438DA(3)(C(5)D(X)):DA042:394:448̇"IT'S JUST WATER":428͇"IT TINGLES":HCHC((HPHC)2):Q(4)1:S(Q)S(Q)(2):4295·"YOU FEEL HEAVY FOR A MOMENT":ZZ1:Q1300::369jυCC(1)0(C(4)P(1))(Z)5210:CC(8)02099Ї"YOU FALL INTO THE PIT":Q(Z)(Z):272:Q1200::HC166:2149ч"AS YOU HOVER ACROSS THE ROOM":҇"YOU NOTICE A PIT IN THE FLOOR":Z20"IT'S BOTTOMLESS!"::Ӈ"DO YOU WANT TO GO DOWN":22:ZԅQ$"Y"Q$"D""NO":42:ՅF11C(4)(P(1))D(X)(Z)"YOU SLIP":208:ZZ1:36:ׇ"YOU SEE A MIRROR. DO YOU WANT TOLOOK IN, SMASH, OR TOUCH IT?":22;}؅Q$"S""YOU SMA1:65497,0:.QL1:Q11:CP1(CT0)(CT1)GEPP(Q)QQ1:30UQL133 QQL1:"YOU HAVE GAINED"Q"LEVELS!":Q21Q:Q1Q1(C(3)2)::"YOU HAVE GAINED"Q1"HIT POINTS":HPHPQ1:HCHCQ1:LLQ:CT2DA03:S(DA)S(DA)Q:!DA1300::o"S(0)1.5:S(1).5(CT0):S(2).5(CT1):S(3).5:Q03:S(Q)(S(Q)L(.5.25(C(5)15))10(CT2))::#:"YOU ENTER THE MINES OF MORIA":XEX:YEY:Z1$Z0539%Z20"YOU'RE FALLING...":Q1200::"SPLAT!",,"YOU ARE DEAD.":70&Q0(Q1):Q030ZC'Q1(8):TR2(Q15)(Q14)(Q17)3(Q16)a(Q1(225):(90)1TR4|)Q1500,TR::OLZ:91*RYRY1:HCHP HCHCP(0):P(0)P(0)(P(0)0)((2)1):HCHP HCHP+58:">>":CC(11)165,Q21:22-(Q$)5D(Q$)E.Q$"^"D1:Q$(9)D2:Q$(10)D3:Q$(8)D4[/Q$"U"Q$"D"59q0Q$"I"81:441Q$"H"722Q$"K"643Q$"P"26:444Q$"C"4135Q$"W"(Z15)RYZ(TR3)(9)(TR1)(9)(4)(RN1)42:273 6Q$"L"97T7Q$"Q""QUIT... ARE YOU SURE (Y/N)?":22:Q$"Y"44:28:71`8D0879"LEGAL COMMANDS ARE:","A DIRECTION","INVENTORY","HELP","CAST","WAIT","LOOK","KILL SELF","QUIT","POINTS FOR LEVEL 'N'":44 :Q011:CC(Q)CC(Q)(CC(Q)0)(Q4)::0;F((PK(Q))16):Q$"U"63H"THERE'S NO WAY "Q$:44?F1F3ZZ1:36:62@"LET ME DIE!!!":"ARE YOU SURE";Q$:Q$"YES"44A"AARRRGGGHHH!"B"YOU DIE"CCT1Q$"YES"S(3)170^D"RAISE DEAD!!":S(3)S(3)1:541:R2(L13)2(L9)C(3)1"SPELL FAILED":67EC(3)C(3)(1(C(3)2)):"YOU ARE ALIVE WITH A","CONSTITUTION OF"C(3):Q4:LL(L1)(L0):Q11L:QQ(C(3)2)::CP1(CT0)(CT1):EP(P(L)):"AND"Q"HIT POINTS":HCQ:HPQ:43=F28:65496,0:(NA$,8)".CHR"TG65496,0:"CONTROL}H"HELP!!!!!":(62(CC(3)0))144I"O.K.,BUT IT'S GOING TO COST YOU":Q(7)1:Q6G0:P(Q)0P(Q)0J"DO YOU WANT:":P(3)0P(4)0P(5)0"aDVICE ON CURSES"BK"dIRECTIONS","lIGHT","pROTECTION OR","rELOCATION?":22}LQ$"A""TRY PRAYING AT AN ALTAR","(AND BE GENEROUS)"MRN0Q$"R"Q010:CC(Q)0::ZZ((Z2)):36NQ$"P"428:Q$"L"430 !OQ$"D""YOU ARE ON LEVEL"Z", AT"X","Y" AND THE ENTRANCE IS AT"EX","EY"." +P 44 Q"INVENTORY:"NA$" THE "CT$(CT):"LEVEL"L,,"HIT POINTS"HC,"EP'S"EP,"GOLD"G:RN1"YOU HAVE THE RING!" RQ35:T$(Q)"+"P(Q3);:: SCT0T$(6)"+"P(3) TT$(CT12)" ARMOR+"P(4),T$(CT)"+"P(5)!/UCT2Q03:"SPELLS LEVEL"Q1"=";S(Q)(S(Q)0):!VVQ1$:Q05:"####";C(Q);::"":!WLG0:W(D)2CC(1)(3)2"YOU HAVE FOUND A SECRET DOOR.":LG5:LG5!XW(D)1LG5"IT'S ONLY A WALL":Q$"W":53 !YW(D)3LG5147 "ZXX(D2)(D4):YY(D1)(D3)"[RY21:RX21:R(RX2,RY2,0)(PK(Q)15RYRX)3:R(RX2,RY2,1)((PK(Q)15RYRX)12)4:::F((PK(Q))16):Q(15YX485):TR1TRQ"\X1Q13:R(1,Q,1)1:"]X2Q13:R(0,Q,1)1:#^Y1Q13:R(Q,1,0)1:#_Y2Q13:R(Q,0,0)1:#_`W(1)R(2,2,0):W(2)R(2,2,1):W(3)R(2,1,0):W(4)R(1,2,1):RY0#a:Q153:@Q1,"";:Q011:CC(Q)0" "CC$(Q);#b(0)28Q1Q164:@Q1,"";#cQ#dQ$(7,175):A$(175):LG(CC(1)1):Q10:Q20:D1:N1$ eW(1)0LG1115$/fR(1,3,1)0R(1,2,0)0W(4)0105$HgAA(14)0@68,"?";$|hQ11:R9R(1,3,0):R90@1,Q$;:R93@4,W$(1);$iAA(15)0@74,"?";$jR9R(2,3,0):R90@7,Q$;:R93@10,W$(1);$kW(2)0R(2,3,1)0R(3,2,0)112%lAA(16)0@80,"?";%8mR9R(3,3,0):Q21:R90@13,Q$;:R93@16,W$(1);%wnR9R(3,3,1):R90Q04:@1932Q,A$;::R93@83,W$(1);%o113%pR9R(2,3,1):R90Q04:@1332Q,A$;::R93@77,W$(1);%qR9R(1,3,1):R90Q04:@732Q,A$;::R93@71,W$(1);&GrQ10115:R9R(0,3,1):R90Q04:@132Q,A$;::R93@65,W$(1);&\sW(4)0LG1118&vtAA(1)0@196,"?";&uR9R(1,2,0):R90@129,Q$;:R93@132,W$(1);&vW(1)0@135,Q$;:W(1)LG1@138,W$(W(1)2);'wW(2)0LG1121:AA(1)0@208,"?";':xR9R(3,2,0):R90@141,Q$;:R93@144,W$(1);'yW(2)0LG0R9R(3,2,1):R90Q04:@14732Q,A$;::R93@211,W$(1);'zW(2)0N0:Q04:@14132Q,A$;::W(2)LG1@205,W$(W(2)2);({W(4)0D0:Q04:@13532Q,A$;::W(4)LG1@199,W$(W(4)2);(e|W(4)0LG1126:R9R(0,2,1):R90Q04:@12932Q,A$;::R93@193,W$(1);(}R9R(1,1,0):R90D0:@257,Q$;:R93@260,W$(1);(~Q288:W(3)0@263,Q$;:W(3)LG1@266,W$(W(3)2);(LG1140)"W(2)0R9R(3,1,0):R9 4` 0 ` a 4 u @\`   iu  @$1t   i#!4 a AA a   e0$4#  $W1 `P S#p a QaQ '1 uh 1$$e  \ 4$=D U  4$!54p e  Ep   QE EtT X ! t!6$1 a!  12q   a!t"D 5t 0Aj! D4q   cq P=e d   G D   44F A4y1$a1%A  uP$1p   P-5P4u p   !d1 *t m  4t1  e  ! 0  0 =U1  qTA6 0a! (Q!a @ %=z12T@%%"    q UP !5! l 5l 57 p !5aq ` %=z12T@%j1160::0490:Q()::ON BRK GOTO4360EX(450569):EY(450570):X1(450571):Y1(450572):Z1(450573):X0(Y)SS(Q)(10)(10)182((Q1)3):F$(15),T$(14),W$(2),CC(11),CT$(2),TR$(4),CC$(11),SM$(5,3),SC$(3,3),C(5),S(3),W(4),P(5),R(3,3,1)D(Q)(6)(6)(6):AA(V)((PK(Q)V)16)((15YXV485)):PK(Q)226Z15YX450332:P(N)(750CP250)((N8)2(N1))(N7)(1E52E4(CP0)3E4(CP1))(N7)BQ1$" STR INT WIS CON DEX CHA":X015:F$(X)::" ","U/ ","D/ ",U/D,TPT,TRP,THR,TVR,EXC,FNT,ELV,PIT,MIR,STA,ALT,DRKX014:T$(X)::DAGGER,MACE,SWORD,RING,BOOTS,CLOAK,SHIELD,TORCH,CHEST,BOOK,GOLD,JEWELS,LEATHER,MAIL,PLATEX02:CT$(X)::MAGE,CLERIC,WARRIOR/ X011:CC$(X)::SLNC,LGHT,TMST,PRAY,DTRP,SHLD,INVS,PROT,LEVT,FEAR,STRG,PLAGX X02:Q:W$(X)(Q)::128,207,143 X04:TR$(X)::""," $"," #"," #$","DGN"b Y03:X05:SM$(X,Y):X,Y: MAGIC MISSLE,CHARM,SHIELD,SLEEP,PROTECT FROM EVIL,LIGHT,PHANTASMAL FORCES,WEB,LIGHTNING BOLT,STRENGTH,LEVITATE,INVISIBILITY,FIREBALL,CONFUSE,PASSWALL,HOLD MONSTER,FEAR,CONTINUAL LIGHT TELEPORT,POWER WORD KILL,WALL OF ICE,TIMESTOP,WALL OF FIRE,SUMMON DEMONY03:X03:SC$(X,Y):X,Y:PROTECT FROM EVIL,LIGHT,CURE LIGHT WOUNDS,TURN UNDEAD,DETECT TRAPS,SILENCE,PRAY,HOLD MONSTER,CURE SERIOUS WOUNDS,DISPELL UNDEAD,CONTINUAL LIGHT,PLAGUE,HOLY WORD,FINGER OF DEATH,BLADE BARRIER,RAISE DEAD27:"^IN^USE^.CHT" (NA$,8)".CHR":65497,0:Z035:36*:MI0:"QUIT,RE-ENTER MINES, INVENTORY,","AND POINTS FOR LEVEL 'N'":22H Q$"Q"MZ$"":28:71X Q$"R"35kQ$"I":81~Q$"P":26"PRESS ANY KEY TO CONTINUE":22:16Q$:Q$""22:22:Q$;:Q$(31)A$A$Q$Q$(8)(A$)0A$(A$,(A$)1):230Q$(13)23:Q(A$):"CHARACTER TYPE",,"MAGE, CLERIC, OR WARRIOR":22:CP1(Q$"C")2(Q$"W")3(Q$"M"):CP026:A$"":"LEVEL ";:23:NQ:"POINTS FOR THAT LEVEL ARE",(P(N)):n65496,0::"I",1,"^IN^USE^.CHT":#1,NA$,MZ$,X,Y,Z,CT,L,HP,HC,EP,G,RN:Q05:#1,P(Q),C(Q)::Q03:#1,S(Q)::Q011:#1,CC(Q)::1:65497,0: HP0:65496,0:"O",1,(NA$,8)".CHR":#1,NA$,MZ$,X,Y,Z,CT,L,HP,HC,EP,G,RN:Q05:#1,P(Q),C(Q)::Q03:#1,S(Q)::Q011:#1,CC(Q)::A$,B$8jA$A$(B$,127)8't N0 78?~NM$(A$,N321,8)8WET$(A$,N329,3)8 CM1 ET$TE$ (NM$,1)(0) 12408 TE$"DAT" NM$: 12708 "I",1,NM$".CHR"8#1,NA$,MZ$,X,Y,Z,CT,L,HP8NA$" THE "CT$(CT):RP29/ć"LEVEL"L,HP"HIT POINTS": MZ$"""IN DUNGEON "MZ$9?·(31,"-")9؅ CM1 NM$(TN$" ",8) ET$TE$ RP1:X211:N79 (NM$,1)(255) X211:N799 N,X299',NA$,MZ$,X,Y,Z,CT,L,HP8NA$" THE "CT$(CT):RP29/ć"LE`   0U q Ud    etP tT a Qu  P d`  t  eU%      !   5%5  `=     !       $ 4aA0q $ q1u p 1 !h 1  t Q Q D q U T 1 a10U  ! da `  A1$  0R !    d  qi<qUW   H  T    q  qa%<     ` (q     Q z@1t      @ppV0q ! w   %U& : MORIA CONTROL PROGRAM&800,&H6000: : TEMP(6,5)::@106,"MORIA V",,,8)"BY GREG OLSON",8)"COPYRIGHT 1985":X490500:Q:X,Q:: 142,1,245,111,128,140,2,213,38,249,57& 9999&2X0300::0490':4H:LIST AVAIL CHARACTERS4RTE$"CHR":CM0:1070:4\:5f:LIST AVAIL DUNGEONS5pTE$"DAT":CM0:1070:5%z:5_:RUN INSYTRUCTIONS PROGRAM WHICH RETURNS TO CONTROL5k"INSTR5r:5"DELETE WHICH CHARACTER?":2905RP0"CHARACTER DOES NOT EXIST":850: RP2930:5"ARE YOU SURE (Y/N)?":2706 Q$"Y" (NA$,8)".CHR"6ʐ6 :6އ"GENERATING A NEW RANDOM MAZE","TAKES CONSIDERABLE TIME. WHILE THE PROGRAM RUNS IT WILL","SHOW WHAT FLOOR IT IS ON AND HOWMANY ROOMS IT HAS CREATED"6,,"DO YOU WISH TO CONTINUE (Y/N)":2707 Q$"Y" "DND-GEN77:7:QUIT7 7}$:SUBROUTINE SCANS DISK DIRECTRORY FOR FILE OF TYPE TN$=TARGET NAME TE$=TARGET EXTENSION7.A$"DUNGEON": TE$"CHR" A$"CHARACTER"78"AVAILABLE "A$"S ARE:"7B(31,"-")7LRP07V X23 118` 0,17,X2,k 512 LP1:A$5A$"ZZZ""CONTROLD(CP32:CK0b2(A$)32A$A$" ":CK1v"'WE$(1)(124)6 X1300:r:"(1) LOAD EXISTING DUNGEON","(2) CREATE NEW DUNGEON"9999: A$"1"A$"2"30(,,"ENTER THE NAME OF ";2 A$"1" "AN EXISTING":"THE NEW"<"DUNGEON (8 CHAR MAX)";MZN$F (MZN$)1(MZN$)840uP A$"2",,"INITIALIZING...PLEASE WAIT":CC57353 61877:CC,0::10000:M MZN$".DAT"Z:"(1) EDIT ROOMS"," (2) LIST ROOMS","(3) PRINT FLOORS (4) QUIT"d9999:A$"1"A$"4"100x (A$) 150,700,800, 90:EDIT ROOMS':"EDIT ROOMS",,T10510 :STARTING AT, ENDING AT ROUTINEe NNST EN 12010 :LIST CONTENTS OF ROOM SUBROUTINE"O.K.(Y/N)?"ȁ9999҅ A$"N"650܇"NORTH WALL IS ";W$(N)恦13010 :ROOM CHANGE SUBROUTINE RN4 R1N : R1RN;"EAST WALL IS ";W$(E)H 13010c RN4 R2E : R2RN""ROOM CONTAINS",,CO$(CO),"CHANGE?"69999@ A$"Y" A$"C"C1CO: 600J"ENTER A NUMBER 0 TO 15";C1^ C10 C115 V0 15:V"=";CO$(V)::330"rC18510Q|QFL22657357:XT((Q)16):YT(Q)15t(Q)9 (YYT XXT) 600,,"WARNING! THERE ALREADY IS AN","'EXC' ON THIS FLOOR AT",XT","YT"IF YOU ADD THIS NEW ONE THE OLD ONE WILL 'TRANSMIT' ONLY""IS THIS ACCEPTABLE?"!99993 A$"Y"290s"DO YOU WISH THE PREVIOUS 'EXC","TO BE BLANKED OUT (Y/N)?"~9999̅ A$"Y" "THE PREVIOUS 'EXC' WILL BECOME TRANSMIT ONLY.": 600CNFL226XT15YT57116CN,(CN)15'"PREVIOUS 'EXC' LOCATION NOW A","BLANK ROOM"2 600S C115 (57357)0 600 X(57355)Y(57356)FL(57357)600"THE DARK ONE WAS PREVIOUSLY","PLACED AT LEVEL"(57357),"X="(57355)",Y="(57356)"DO YOU WISH TO MOVE HIM (Y/N)?" &9999 0 A$"Y" 290[:"THE OLD LOCATION OF THE DARK ONEWILL BE BLANKED OUT"DCN(57357)226(57356)15(57355)57116:CN,(CN)15N57355,X:57356,Y:57357,FLXFL226NN57131,C116R24R1YFL1(C11C13)610Z X(57353)Y(57354)610Q["DO YOU WISH THIS STAIRWAY TO BE THE ENTRANCE?"\9999:A$"N""YOU MUST HAVE AN ENTRANCE":610]X","Y" WILL BE THE ENTRANCE":57353,X:57354,Yb12010 :LIST ROOM CONTENTS SUBROUTINE l"O.K. (Y/N OR 'A' TO ABORT)?"v9999/{ A$"A"NNEN: 650@ A$"N"220HNNY:LIST ROOMS 10510 :STARTING AT, ENDING ATƀ NNST ENЁ 12010 : LIST ROOMSڇ"PRESS ANY KEY TO CONTINUE (A TO ABORT)"䁦9999: A$"A" NNENNN  ':PRINT FLOOR ON PRINTER ROUTINE X :"PRINT FROM LEVEL 'N' TO LEVEL 'M'";N,M * N1 N20 M1 M20 NM "ABORTING!",,"PRESS ANY KEY":9999: 4"SET PRINTER TO TOP OF PAGE,","PRESS A KEY WHEN READY" > 9999 H FLN M! R#2:#2!'\#2,30)"DUNGEON ";MZN$!@f#2,35)"LEVEL ";FL!SpX13:#2:X!lz1260 :PRINT INDEX! Y15 1 1!#2," +";! X1 15!1280 :RETURNS 'N'!#2,"% %!";WN$(N 3),"+";! X!#2"ʇ#2, "##!";Y,(124);"Ԁ X1 15"/ށ 1280 :RETURNS 'N'"k#2,"% %!";(CO$((N16)),2,3),WE$(((N 12)4));"s X"#2,"##";Y" Y"#2," +";" X1 15:#2,"---+";::#2"$1260 :PRINT INDEX". X1 3:#2:#8#2,30)"ROOM CONTENTS CODES"#$B#2,(79,"-")#2L X0 5#@V Y0 2#\`#2,Y26);CO$(X3Y);#re X5 Y0 Y2#zj Y#t#2#~ X##2:#2##2,10);"HORIZONTAL WALLS";50);"VERTICAL WALLS"##2,(79,"-")# X0 3$#2,10);"'";WN$(X);"'";"<==>";W$(X);$G#2,50);"'";WE$(X);"'";"<==>";W$(X)$Oċ X$e΀ X1 7:#2:X$nӋ FL$tؐ$:PRINT INDEX$#2," ";:X115:#2,"###!";X," ";::#2:$:RETURN 'N'= VALUE OF ROOM$N(FL22615YX57116):%:QUIT%5:"QUIT",,"CHECKING DUNGEON","PLEASE WAIT"%B( 10000%2 (57355)(57356)(57357)0"THE DARK ONE IS NOT IN THIS","DUNGEON"%< FL1 20%F (FL22657357)0"FLOOR"FL" DOES NOT HAVE","AN 'EXC'"%P&Z"SAVE THIS DUNGEON?"& d 9999&+n A$"Y" A$"N" 1380&<x A$"N" &_"UNDER THE SAME NAME",MZN$"?"&k 9999& A$"Y" A$"N" 1420& A$"Y" 1470&"ENTER NEW NAME";MZN$& (MZN$)1 (MZN$)8 1450& ' M MZN$".DAT",57353,61877,57353'҇"SAVED AS "MZN$'%܊'>'A$:A$""9999:'J'Z120'V'X115'k'$NN226ZX57341'~'.NN,(NN)253''8X''BY115''LNN226Z15Y57131''VNN,(NN)247''`Y''jZ''t'):ENTER START, END ROOM NUMBERS()"WHAT FLOOR (0 TO ABORT";FL(0) FL0 FL20 10510(?)" FL0 (j),"STARTING AT ROOM 'X:Y' OR '#' ";RM$()6 11010: RM0 10540 : STRM()@"ENDING AT ROOM 'X:Y' OR '#' ";RM$()J 11010: RMST ENRM:()T"END EQUALS START?"()^9999))h A$"Y" A$"N"10590)7)r A$"Y" ENST : 10560)=)|)c*:TRANSLATES STRING INTO A ROOM #)x+LC(1,RM$,":"))+ LC0 RM(RM$): 11040)+RM((RM$,LC1))15(((RM$,LC1))1))+ RM0 RM226 *3+*"BAD ROOM LOCATION","1 <= X <= 15, AND 1 <= Y <= 15","OR 1 <= ROOM # <= 225"*>+4RM0:*b.:LIST ROOM CONTENTS SUBROUTINE*.Y(NN15.05)1:XNN15(Y1)*.:"CONTENTS OF ROOM AT","Z="FL;"X="X;"Y="Y*."ROOM #";NN*/CC(FL226NN57131)+ /NCC 3:E((CC 12)4):CO(CC16)+&/"NORTH WALL=";W$(N)+>/&"EAST WALL=";W$(E)+g/0(32,"-");"ROOM CONTAINS:",CO$(CO)+m/:+2:ROOM CHANGE SUBROUTINE+2҇"CHANGE (Y/N)?"+2܁9999+2 A$"Y" A$"C" RN4:+2"0, 1, 2, OR 3?"+2 9999,"3 A$"0" A$"3" V03:V"="W$(V)::13040,23RN(A$):L=";W$(E)+g/0(32,"-");"ROOM CONTAINS:",CO$(CO)+m/:+2:ROOM CHANGE SUBROUTINE+2҇"CHANGE (Y/N)?"+2܁9999+2 A$"Y" A$"C" RN4:+2"0, 1, 2, OR 3?"+2 9999,"3 A$"0" A$| :START:1(:CLEARS TO PCLEAR 0 ANDJ-:USES ONLY 1 BUFFERUF25,14aP3584,0mU 1,256{Z"CONTROLF25,14P3584,0U 1,256Z"CONTROLCOULD BE RUN"FILE- d:NAME" TO LINK TO NEW FILE n 1 CLEAR512 10 LP=1:CLS 20 READA$ 30 IFA$="ZZZ"THENRUN"CONTROL 40 CP=32:CK=0 50 IFLEN(A$)<32THENA$=A$+" ":CK=1 60 B=INSTR(CP,A$," ") 70 IFB=0ORB>32THENCP=CP-2:GOTO60 80 B$=LEFT$(A$,B-1) 90 PRINTB$ 100 LP=LP+1 110 A$=MID$(A$,CP+1) 120 IF LEFT$(A$,1)=" "THENA$=MID$(A$,2):GOTO120 130 IFLP=15GOSUB150 140 IFCK=1THEN20ELSE40 150 PRINTSTRING$(32,"-");" PRESS ANY KEY TO CONTINUE"; 160 Y$=INKEY$:IFY$=""THEN160 170 CLS:LP=1:RETURN 210 DATA " m BY"," o"," r GREG"," i"," a OLSON"," "," V"," "," ",COPYRIGHT,1983," "," "," "," " 230 DATA"THE FOLLOWING FILES ARE ON THE DISK:",START.BAS,MORIA.BAS, DND-GEN.BAS,MON-GEN.BAS,DUNGEON.DAT,MONSTERS.DAT,AND,INSTR.BAS," " 240 DATA EACH '.BAS' FILE HAS A '.BAK' BACKUP COPY 250 DATA MORIA REQUIRES 128K RAM AND ONE DISK DRIVE.,START.BAS PUTS THE COMPUTER IN PCLEAR 0 MODE. START.BAS MUST BE RUN FOR EITHER MORIA.BAS OR DND-GEN.BAS TO WORK. 270 DATA DND-GEN.BAS IS A DUNGEON GENERATOR. WHEN RUN IT WILL RANDOMLY CREATE A DUNGEON OF 15X15X20 ROOMS. DUNGEON.DAT IS A SAMPLE OUTPUT OF THIS PROGRAM. THE DATA IS STORED AS A BINARY FILE WHICH 'LOADM'S INTO HIGH RAM. 280 DATA MORIA.BAS CONTAINS THE ACTUAL GAME PROGRAM. LIKE DND-GEN.BAS IT CAN ONLY BE RUN AFTER START.BAS AND IT REQIRES A DATA FILE GENERATED BY DND-GEN.BAS.," "," " 290 DATA O.K. READY TO PLAY THE GAME?," ",RUN START.BAS ...RUN MORIA.BAS ...ANSWER 'DUNGEON' (NO .DAT) WHEN ASKED FOR A DUNGEON NAME. YOU ARE NOW READY TO GO.,* LEAVE THE DISK IN THE DRIVE *," " 300 DATA "MORIA USES 'DUNGEONS AND DRAGONS' - (C) TSR HOBBIES INC. - TYPE CHARATERS WHERE EACH CHARACTER HAS THE SIX ATTRIBUTES OF STRENGTH, INTELLIGENCE, WISDOM, CONSTITUTION, DEXTERITY, AND CHARISMA." 310 DATA "THERE ARE THREE TYPES OF CHARACTERS: 0= MAGE, 1= CLERIC, AND 2= WARRIOR. EACH TYPE HAS ITS ADVANTAGES AND DISADVANTAGES. EXPERIMENT AND SEE WHICH ONES YOU LIKE BEST."," " 320 DATA "TO CREATE A CHARACTER TYPE 'C' TO THE MAIN MENU. YOU WILL BE ASKED TO CHOOSE A CHARACTER TYPE. RESPOND WITH '0', '1', OR '2' (CHARACTER TYPES WILL ALWAYS BE REFERENCED BY A NUMBER)." 330 DATA YOU WILL THEN 'ROLL' THREE DIE FOR EACH OF THE CHARACTER'S ATTRIBUTES. YOU MAY 'ROLL' AS MANY TIMES AS YOU LIKE (ALTHOUGH THIS GETS REALLY BORING) BY PRESSING ANY KEY EXCEPT 'A'. 340 DATA "ONCE YOU HAVE CREATED A CHARACTER, YOU CAN VIEW HIS/HER/ITS ATTRIBUTES, POSSESSIONS AND EXPERIENCE POINTS BY PRESSING 'I' FOR INVENTORY" 350 DATA " ",EXPERIENCE POINTS (EP'S) ARE GRANTED TO A CHARACTER FOR KILLING MONSTERS AND TAKING GOLD (AND JEWELS) OUT OF THE DUNGEON. UPON GAINING SUFFICIENT E.P.'S A CHARACTER WILL 'GAIN A LEVEL' AND WILL BE GIVEN GREATER ABILITIES. 360 DATA "ALL CHARACTERS START AT LEVEL ONE, AND GAINING LEVELS IS THE KEY TO SURVIVAL IN THE LOWER LEVELS OF THE DUNGEON.",TO FIND THE POINTS NESSESSARY TO 'GAIN LEVELS' PUSH 'P' ON THE MAIN MENU. 365 DATA A KEY NUMBER TO KEEP TRACK OF IS THE CHARACTER'S HIT POINTS (HP'S). THIS NUMBER REPRESENTS THE AMOUNT OF DAMAGE A CHARACTER CAN TAKE. SHOULD THIS NUMBER REACH ZERO YOUR CHARACTER WILL DIE. A HURT CHARACTER CAN BE HEALED BY 366 DATA "MAKING IT OUT OF THE DUNGEON OR BY MAGIC (RINGS, SPELLS, ETC.)." 370 DATA " ",ONCE A CHARACTER HAS BEEN CREATED OR RECALLED FROM THE DISK YOU CAN HAVE THAT CHARACTER ENTER THE CURRENT DUNGEON BY PRESSING 'E' FOR ENTER.,AN OVERHEAD VIEW OF THE DUNGEON WILL APPEAR. 380 DATA THE CHARACTER IS MARKED BY AN 'X' AND THE STAIRWAY UP (AND OUT) BY 'U/' OR 'U/D'.,OTHER SYMBOLS DENOTE OTHER OBJECTS AND YOU WILL HAVE TO DISCOVER THESE ON YOUR OWN. 390 DATA ONCE IN THE DUNGEON THE CHARACTER CAN BE MOVED BY PRESSING AN ARROW KEY OR 'U' OR 'D' (FOR STAIRWAYS).,"IN ADDITION A CHARACTER CAN (L)OOK AT THE CURRENT LOCATION, (C)AST A SPELL, (I)NVENTORY POSSESSIONS, (W)AIT OR REST," 400 DATA "(Q)UIT PLAYING, FIND THE (P)OINTS FOR THE NEXT LEVEL, YELL FOR (H)ELP, OR (K)ILL HIS OR HER SELF [SUICIDE]"," ",PRESS THE ( )'ED LETTER TO USE THAT COMMAND. 410 DATA OTHER CHOCES WILL ARISE WILL IN THE DUNGEON AND THESE ALSO CAN BE MADE BY PRESSING ONE OR MORE KEYS. 420 DATA A WORD ABOUT SPELL CASTING. MAGES AND CLERICS CAN CAST SPELLS BY PRESSING 'C'. YOU WILL BE ASKED FOR THE LEVEL OF THE SPELL AND THE SPELL NUMBER. SPELLS FALL INTO ONE OF FOUR LEVELS EACH OF WHICH WILL HAVE FOUR (CLERIC) OR SIX (MAGE) 430 DATA SPELLS IN IT. EACH CHARACTER WILL HAVE A GIVEN NUMBER OF SPELLS TO CAST IN EACH LEVEL. THESE NUMBERS ARE SHOWN IN THE INVENTORY. THESE NUMBERS WILL BE REPLENISHED WHEN THE CHARACTER LEAVES THE DUNGEON (AS WELL AS AT CERTAIN PLACES IN IT) 440 DATA "TO CAST A SPELL PRESS 'C', THEN A LEVEL FROM '1' TO '4' ('0' ABORTS), AND THEN A SPELL NUMBER ('0' ABORTS, AND '9' PRESENTS A LIST OF VALID SPELLS). SOME SPELLS ARE OFFENSIVE, SOME DEFENSIVE, AND SOME BEST LEFT ALONE." 450 DATA THE ONLY WAY YOU CAN FIND OUT IS TO TRY.," "," ",NOW THAT YOU KNOW HOW TO PLAY THE GAME IT IS TIME TO LEARN THE RULES. LONG AGO AN EVIL WIZARD CALLED THE DARK ONE (SOUND FAMILIAR) ACQUIRED A RING OF POWER AND INVADED 460 DATA THE DWARVEN MINES OF MORIA. HE KILLED OR SUBVERTED ALL OF THE DWARFS AND ASSEMBLED A HORDE OF VILE CREATURES TO SERVE HIM. THESE CREATURES GET THEIR JOLLIES BY LAYING WASTE THE COUNTRYSIDE. AN ARMY COULD NOT BUDGE THEM FROM THE MINES. 470 DATA "BUT, BEING EVIL AND WICKED CREATURES, WHEN ARMIES AREN'T ABOUT BEING SLAUGHTERED, THEY LEAD SOLITARY (THEY HATE EACH OTHER) LIVES IN THE MINES. THUS A LONE ADVENTURER (YOU) COULD ENTER THE MINES, FIGHT THE CREATURES ONE BY ONE," 480 DATA "FIND AND KILL THE WIZARD, AND RETURN HIS RING TO THE SURFACE (THEREBY SAVING THE WORLD AND GETTING A CUSHY JOB ON THE LECTURE CIRCUIT FOR THE REST OF YOUR LIFE.)" 490 DATA " ","THE BEST WAY TO SUCCEED IN THIS QUEST, (AND AVOID BECOMING A MEAL), IS TO START SLOW, RUN AWAY FROM TOUGH MONSTERS (UNTIL YOU ARE TOUGHER), AND TRY AND COLLECT GOOD MAGIC ARMOR, SHIELDS, BOOTS, ETC. YOU'LL NEED THEM. 500 DATA " "," ",GOOD LUCK 9999 DATA ZZZ BEST WAY TO SUCCEED IN THIS QUEST, (AND AVOID BECOMING A MEAL), IS TO START SLOW, RUN AWAY FROM TOUGH MONSTERS (UNTIL YOU ARE TOUGHER), AND TRY AND COLLECT GOOD MAGIC ARMOR, SHIELDS, BOOTS, ETC. YOU'LL NEED THEM. 500 DATA " "," ",GOOD LU #200,&H6000::10);"DND-GEN" \ "NAME OF DUNGEON";MZ$:(MZ$)8"8 CHAR MAX":10 zCU():MZ$MZ$".DAT" 2C924590 770CUMDBA CU2F(B,0)F(B1,0):F(B,1)F(B1,1):CUCU1 X1X20X1X2N1830Y1Y20Y1Y2M1 1 CLS:PRINT" DUNGEON MASTER",,," BY GREG OLSON"," COPYRIGHT 1984" 2 DIM CO$(15),W$(3),WN$(3),WE$(3):FORX=0TO15:READCO$(X):NEXT:FORX=0TO3:READW$(X):NEXT 3 DATA ' ' NOTHING,'U/ ' STAIRWAY UP,'D/ ' STAIRWAY DOWN,'U/D' STAIRWAY UP AND DOWN,'TPT' TELEPORT,'TRP' TRAP DOOR,'THR' THRONE,'TVR' THRONE VAULT RESERVE,'EXC' EXCELLSIOR TRANSPORTER,'FNT' FOUNTAIN 4 DATA 'ELV' ELEVATOR,'PIT' PIT,'MIR' MIRROR,'STA' STATUE,'ALT' ALTAR,'DRK' DARK ONE,OPEN,ROCK,SECRET DOOR,DOOR 5 FOR X=0 TO 3:READ WN$(X),WE$(X):NEXT 6 DATA " "," ","---","C","-=-",":","-^-",">" 7 WE$(1)=CHR$(124) 10 FORX=1TO300:NEXT 20 CLS:PRINT"(1) LOAD EXISTING DUNGEON","(2) CREATE NEW DUNGEON" 30 GOSUB9999:IF A$<"1"ORA$>"2"THEN30 40 PRINT,,"ENTER THE NAME OF "; 50 IF A$="1" THENPRINT"AN EXISTING"ELSEPRINT"THE NEW" 60 INPUT"DUNGEON (8 CHAR MAX)";MZN$ 70 IF LEN(MZN$)<1ORLEN(MZN$)>8THEN40 80 IF A$="2"THENPRINT,,"INITIALIZING...PLEASE WAIT":FORCC=57353 TO 61877:POKECC,0:NEXT:GOSUB10000ELSELOADM MZN$+".DAT" 90 CLS:PRINT"(1) EDIT ROOMS"," (2) LIST ROOMS","(3) PRINT FLOORS (4) QUIT" 100 GOSUB9999:IFA$<"1"ORA$>"4"THEN100 120 ON VAL(A$) GOSUB 150,700,800, 130 GOTO 90 140 'EDIT ROOMS 150 CLS:PRINT"EDIT ROOMS",, 160 GOSUB10510 'STARTING AT, ENDING AT ROUTINE 170 FOR NN=ST TO EN 180 GOSUB 12010 'LIST CONTENTS OF ROOM SUBROUTINE 190 PRINT"O.K.(Y/N)?" 200 GOSUB9999 210 IF A$<>"N"THEN650 220 PRINT"NORTH WALL IS ";W$(N) 230 GOSUB13010 'ROOM CHANGE SUBROUTINE 240 IF RN=4 THEN R1=N ELSE R1=RN 260 PRINT"EAST WALL IS ";W$(E) 270 GOSUB 13010 280 IF RN=4 THEN R2=E ELSE R2=RN 290 PRINT"ROOM CONTAINS",,CO$(CO) 300 PRINT"CHANGE?" 310 GOSUB9999 320 IF A$<>"Y" AND A$<>"C"THENC1=CO:GOTO 600 330 INPUT"ENTER A NUMBER 0 TO 15";C1 350 IF C1<0 OR C1>15 THENFORV=0TO 15:PRINTV"=";CO$(V):NEXT:GOTO330 370 IFC1<>8THEN510 380 Q=FL*226+57357:XT=INT(PEEK(Q)/16):YT=PEEK(Q)AND15 390 IFPEEK(Q)=9 OR (Y=YT AND X=XT) THEN 600 400 PRINT,,"WARNING! THERE ALREADY IS AN","'EXC' ON THIS FLOOR AT",XT","YT 410 PRINT"IF YOU ADD THIS NEW ONE THE OLD ONE WILL 'TRANSMIT' ONLY" 420 PRINT"IS THIS ACCEPTABLE?" 430 GOSUB9999 440 IF A$<>"Y"THEN290 445 PRINT"DO YOU WISH THE PREVIOUS 'EXC","TO BE BLANKED OUT (Y/N)?" 450 GOSUB9999 460 IF A$<>"Y" THENPRINT"THE PREVIOUS 'EXC' WILL BECOME TRANSMIT ONLY.":GOTO 600 470 CN=FL*226+XT+15*YT+57116 480 POKECN,PEEK(CN)AND15 490 PRINT"PREVIOUS 'EXC' LOCATION NOW A","BLANK ROOM" 500 GOTO 600 510 IF C1<>15 OR PEEK(57357)=0 THEN 600 520 IF X=PEEK(57355)ANDY=PEEK(57356)ANDFL=PEEK(57357)THEN600 530 PRINT"THE DARK ONE WAS PREVIOUSLY","PLACED AT LEVEL"PEEK(57357),"X="PEEK(57355)",Y="PEEK(57356) 540 PRINT"DO YOU WISH TO MOVE HIM (Y/N)?" 550 GOSUB9999 560 IF A$<>"Y" THEN290 570 PRINT"THE OLD LOCATION OF THE DARK ONEWILL BE BLANKED OUT" 580 CN=PEEK(57357)*226+PEEK(57356)*15+PEEK(57355)+57116:POKECN,PEEK(CN)AND15 590 POKE57355,X:POKE57356,Y:POKE57357,FL 600 POKEFL*226+NN+57131,C1*16+R2*4+R1 601 IFFL>1OR(C1<>1ANDC1<>3)THEN610 602 IF X=PEEK(57353)ANDY=PEEK(57354)THEN610 603 PRINT"DO YOU WISH THIS STAIRWAY TO BE THE ENTRANCE?" 604 GOSUB9999:IFA$="N"THENPRINT"YOU MUST HAVE AN ENTRANCE":GOTO610 605 PRINTX","Y" WILL BE THE ENTRANCE":POKE57353,X:POKE57354,Y 610 GOSUB12010 'LIST ROOM CONTENTS SUBROUTINE 620 PRINT"O.K. (Y/N OR 'A' TO ABORT)?" 630 GOSUB9999 635 IF A$="A"THENNN=EN:GOTO 650 640 IF A$="N"THEN220 650 NEXTNN 690 'LIST ROOMS 700 GOSUB 10510 'STARTING AT, ENDING AT 710 FOR NN=ST TO EN 720 GOSUB 12010 ' LIST ROOMS 730 PRINT"PRESS ANY KEY TO CONTINUE (A TO ABORT)" 740 GOSUB9999:IF A$="A"THEN NN=EN 750 NEXTNN 760 RETURN 790 'PRINT FLOOR ON PRINTER ROUTINE 800 CLS:INPUT"PRINT FROM LEVEL 'N' TO LEVEL 'M'";N,M 810 IF N<1 OR N>20 OR M<1 OR M>20 OR N>M THENPRINT"ABORTING!",,"PRESS ANY KEY":GOSUB9999:RETURN 820 PRINT"SET PRINTER TO TOP OF PAGE,","PRESS A KEY WHEN READY" 830 GOSUB 9999 840 FOR FL=N TO M 850 PRINT#-2:PRINT#-2 860 PRINT#-2,TAB(30)"DUNGEON ";MZN$ 870 PRINT#-2,TAB(35)"LEVEL ";FL 880 FORX=1TO3:PRINT#-2:NEXTX 890 GOSUB1260 'PRINT INDEX 900 FOR Y=15 TO 1 STEP -1 910 PRINT#-2," +"; 920 FOR X=1 TO 15 930 GOSUB1280 'RETURNS 'N' 940 PRINT#-2,USING"% %!";WN$(N AND 3),"+"; 950 NEXT X 960 PRINT#-2 970 PRINT#-2, USING"##!";Y,CHR$(124); 980 FOR X=1 TO 15 990 GOSUB 1280 'RETURNS 'N' 1000 PRINT#-2,USING"% %!";MID$(CO$(INT(N/16)),2,3),WE$(INT((N AND 12)/4)); 1010 NEXT X 1020 PRINT#-2,USING"##";Y 1030 NEXT Y 1040 PRINT#-2," +"; 1050 FOR X=1 TO 15:PRINT#-2,"---+";:NEXT:PRINT#-2 1060 GOSUB1260 'PRINT INDEX 1070 FOR X=1 TO 3:PRINT#-2:NEXT 1080 PRINT#-2,TAB(30)"ROOM CONTENTS CODES" 1090 PRINT#-2,STRING$(79,"-") 1100 FOR X=0 TO 5 1110 FOR Y=0 TO 2 1120 PRINT#-2,TAB(Y*26);CO$(X*3+Y); 1125 IF X=5 AND Y=0 THEN Y=2 1130 NEXT Y 1140 PRINT#-2 1150 NEXT X 1160 PRINT#-2:PRINT#-2 1170 PRINT#-2,TAB(10);"HORIZONTAL WALLS";TAB(50);"VERTICAL WALLS" 1180 PRINT#-2,STRING$(79,"-") 1190 FOR X=0 TO 3 1200 PRINT#-2,TAB(10);"'";WN$(X);"'";"<==>";W$(X); 1210 PRINT#-2,TAB(50);"'";WE$(X);"'";"<==>";W$(X) 1220 NEXT X 1230 FOR X=1 TO 7:PRINT#-2:NEXTX 1235 NEXT FL 1240 RETURN 1250 'PRINT INDEX 1260 PRINT#-2," ";:FORX=1TO15:PRINT#-2,USING"###!";X," ";:NEXT:PRINT#-2:RETURN 1270 'RETURN 'N'= VALUE OF ROOM 1280 N=PEEK(FL*226+15*Y+X+57116):RETURN 1300 'QUIT 1310 CLS:PRINT"QUIT",,"CHECKING DUNGEON","PLEASE WAIT" 1320 GOSUB 10000 1330 IF PEEK(57355)+PEEK(57356)+PEEK(57357)=0THENPRINT"THE DARK ONE IS NOT IN THIS","DUNGEON" 1340 FOR FL=1 TO 20 1350 IF PEEK(FL*226+57357)=0THENPRINT"FLOOR"FL" DOES NOT HAVE","AN 'EXC'" 1360 NEXT 1370 PRINT"SAVE THIS DUNGEON?" 1380 GOSUB 9999 1390 IF A$<>"Y" AND A$<>"N" THEN 1380 1400 IF A$="N" THEN END 1410 PRINT"UNDER THE SAME NAME",MZN$"?" 1420 GOSUB 9999 1430 IF A$<>"Y" AND A$<>"N" THEN 1420 1440 IF A$="Y" THEN1470 1450 INPUT"ENTER NEW NAME";MZN$ 1460 IF LEN(MZN$)<1 OR LEN(MZN$)>8 THEN 1450 1470 VERIFY ON 1480 SAVEM MZN$+".DAT",57353,61877,57353 1490 PRINT"SAVED AS "MZN$ 1500 END 9999 A$=INKEY$:IFA$=""THEN9999ELSERETURN 10000 FORZ=1TO20 10010 FORX=1TO15 10020 NN=226*Z+X+57341 10030 POKENN,PEEK(NN)AND253 10040 NEXTX 10050 FORY=1TO15 10060 NN=226*Z+15*Y+57131 10070 POKENN,PEEK(NN)AND247 10080 NEXTY 10090 NEXTZ 10100 RETURN 10500 'ENTER START, END ROOM NUMBERS 10510 INPUT"WHAT FLOOR (0 TO ABORT";FL 10520 IF FL<0 OR FL>20 THEN 10510 10530 IF FL=0 THEN RETURN 10540 INPUT"STARTING AT ROOM 'X:Y' OR '#' ";RM$ 10550 GOSUB 11010:IF RM=0 THEN 10540 ELSE ST=RM 10560 INPUT"ENDING AT ROOM 'X:Y' OR '#' ";RM$ 10570 GOSUB 11010:IF RM>ST THEN EN=RM:RETURN 10580 PRINT"END EQUALS START?" 10590 GOSUB9999 10600 IF A$<>"Y"AND A$<>"N"THEN10590 10610 IF A$="Y"THEN EN=ST ELSE 10560 10620 RETURN 11000 'TRANSLATES STRING INTO A ROOM # 11010 LC=INSTR(1,RM$,":") 11020 IF LC=0 THEN RM=VAL(RM$):GOTO 11040 11030 RM=VAL(LEFT$(RM$,LC-1))+15*(VAL(MID$(RM$,LC+1))-1) 11040 IF RM>0 AND RM<226 THEN RETURN 11050 PRINT"BAD ROOM LOCATION","1 <= X <= 15, AND 1 <= Y <= 15","OR 1 <= ROOM # <= 225" 11060 RM=0:RETURN 12000 'LIST ROOM CONTENTS SUBROUTINE 12010 Y=INT(NN/15.05)+1:X=NN-15*(Y-1) 12020 CLS:PRINT"CONTENTS OF ROOM AT","Z="FL;"X="X;"Y="Y 12030 PRINT"ROOM #";NN 12040 CC=PEEK(FL*226+NN+57131) 12050 N=CC AND 3:E=INT((CC AND 12)/4):CO=INT(CC/16) 12060 PRINT"NORTH WALL=";W$(N) 12070 PRINT"EAST WALL=";W$(E) 12080 PRINTSTRING$(32,"-");"ROOM CONTAINS:",CO$(CO) 12090 RETURN 13000 'ROOM CHANGE SUBROUTINE 13010 PRINT"CHANGE (Y/N)?" 13020 GOSUB9999 13030 IF A$<>"Y" AND A$<>"C" THEN RN=4:RETURN 13040 PRINT"0, 1, 2, OR 3?" 13050 GOSUB 9999 13060 IF A$<"0" OR A$>"3" THEN FOR V=0TO3:PRINTV"="W$(V):NEXT:GOTO13040 13070 RN=VAL(A$):RETURN 0 'ROOM CHANGE SUBROUTINE 13010 PRINT"CHANGE (Y/N)?" 13020 GOSUB9999 13030 IF A$<>"Y" AND A$<>"C" THEN RN=4:RETURN 13040 PRINT"0, 1, 2, OR 3?" 13050 GOSUB 9999 13060 IF A$<"0" OR A$>"3" THEN FOR V=0TO3:PRINTV"="W$(V):NEXT:GOTO13040 13070EEP" "PROTECT FROM EVIL" "LIGHT" "PHANTASMAL FORCES" "WEB" "LIGHTNING BOLT" "STRENGTH" "LEVITATE" "INVISIBILITY" "FIREBALL" "CONFUSE" "PASSWALL" "HOLD MONSTER" "FEAR" "CONTINUAL LIGHT" "TELEPORT" "POWER WORD KILL" "WALL OF ICE" "TIMESTOP" "WALL OF FIRE" "SUMMON DEMON" "PROTECT FROM EVIL" "LIGHT" "CURE LIGHT WOUNDS" "TURN UNDEAD" "DETECT TRAPS" "SILENCE" "PRAY" "HOLD MONSTER" "CURE SERIOUS WOUNDS" "DISPELL UNDEAD" "CONTINUAL LIGHT" "PLAGUE" "HOLY WORD" "FINGER OF DEATH" "BLADE BARRIER" "RAISE DEAD" FIRE" "S" "CC$(Q);%)k(0)28Q1Q164:@Q1,"";%0lQ%lmQ$(7,175):A$(175):LG(CC(1)1):Q10:Q20:D1:N1%nW(1)0LG1124%oR(1,3,1)0R(1,2,0)0W(4)0114%pAA(14)0@68,"?";%qQ11:R9R(1,3,0):R90@1,Q$;:R93@4,W$(1);& rAA(15)0@74,"?";&=sR9R(2,3,0):R90@7,Q$;:R93@10,W$(1);&atW(2)0R(2,3,1)0R(3,2,0)121&zuAA(16)0@80,"?";&vR9R(3,3,0):Q21:R90@13,Q$;:R93@16,W$(1);&wR9R(3,3,1):R90Q04:@1932Q,A$;::R93@83,W$(1);&x122'8yR9R(2,3,1):R90Q04:@1332Q,A$;::R93@77,W$(1);'vzR9R(1,3,1):R90Q04:@732Q,A$;::R93@71,W$(1);'{Q10124:R9R(0,3,1):R90Q04:@132Q,A$;::R93@65,W$(1);'|W(4)0LG1127'}AA(1)0@196,"?";(!~R9R(1,2,0):R90@129,Q$;:R93@132,W$(1);(TW(1)0@135,Q$;:W(1)LG1@138,W$(W(1)2);(W(2)0LG1130:AA(1)0@208,"?";(R9R(3,2,0):R90@141,Q$;:R93@144,W$(1);)W(2)0LG0R9R(3,2,1):R90Q04:@14732Q,A$;::R93@211,W$(1) 10 ' MORIA CONTROL PROGRAM 20 CLEAR800,&H6000:VERIFY ON:DIM TEMP(6,5):CLS:PRINT@106,"MORIA V",,,TAB(8)"BY GREG OLSON",TAB(8)"COPYRIGHT 1985":FORX=490TO500:READQ:POKEX,Q:NEXT:DATA 142,1,245,111,128,140,2,213,38,249,57 30 ON ! GOTO 9999 50 FORX=0TO300:NEXT:DEFUSR0=490 60 Q=RND(-TIMER):DEF FND(Q)=RND(6)+RND(6)+RND(6) 70 DIM T$(14),CT$(2),C(5),S(3),P(5),CC(11) 80 DEFFNP(N)=(750+CP*250)*(-(N<8)*2^(N-1))-(N>7)*(100000-20000*(CP>0)-30000*(CP>1))*(N-7) 90 Q1$=" STR INT WIS CON DEX CHA" 100 FORX=0TO14:READT$(X):NEXT:DATADAGGER,MACE,SWORD,RING,BOOTS,CLOAK,SHIELD,TORCH,CHEST,BOOK,GOLD,JEWELS,LEATHER,MAIL,PLATE 110 FORX=0TO2:READCT$(X):NEXT:DATAMAGE,CLERIC,WARRIOR 120 CLS 130 PRINT"(1) CREATE A CHARACTER" 140 PRINT"(2) RECALL A CHARAACTER" 150 PRINT"(3) INVENTORY OF A CHARACTER" 160 PRINT"(4) LIST OF AVAIL. CHARACTERS" 170 PRINT"(5) LIST OF AVAIL. DUNGEONS" 180 PRINT"(6) POINTS NEEDED FOR LEVEL 'N'" 190 PRINT"(7) INSTRUCTIONS" 200 PRINT"(8) DELETE A CHARACTER" 210 PRINT"(9) GENERATE NEW MAZE" 220 PRINT"(0) QUIT" 230 GOSUB270:IFQ$="0"THENQ$="10" 240 Q=VAL(Q$):IF Q<1 OR Q>10 THEN 230 250 CLS:ON Q GOSUB 280,590,800,850,880,440,910,930,990,1050 260 PRINT"PRESS ANY KEY TO CONTINUE":GOSUB270:GOTO120 270 Q$=INKEY$:IFQ$=""THEN270ELSERETURN 280 PRINT"CREATE A CHARACTER":GOSUB290:GOTO340 290 NA$="":PRINT,,"ENTER THE CHARACTER'S NAME","(10 CHARACTERS MAXIMUM)" 300 GOSUB270:PRINTQ$;:IFQ$>CHR$(31)THENNA$=NA$+Q$:GOTO300 305 IFQ$=CHR$(8)ANDLEN(NA$)>0THENNA$=LEFT$(NA$,LEN(NA$)-1):GOTO300 310 IFQ$<>CHR$(13)THEN300 ELSEPRINT 320 IF LEN(NA$)>10 THEN 290 330 TN$=LEFT$(NA$,8):TE$="CHR":CM=1:GOSUB1100:RETURN 340 IF RP=1 THEN PRINT"THE CHARACTER ALREADY EXISTS","ABORT CREATE (Y/N)":GOSUB270:IF Q$="Y"THEN PRINT"YES":GOTO120 ELSE PRINT"NO":GOTO290 350 CLS:PRINT"PRESS NUMBER OF ROLL TO ACCEPT":PRINT@35,Q1$:EP=0:G=0:RN=0:FORQ=0TO5:P(Q)=0:NEXT:FORQ=0TO3:S(Q)=0:NEXT 360 FORQ=0TO6:PRINTUSING"#";Q+1;:PRINT") "; 370 FORQ2=0TO11:CC(Q2)=0:NEXT:FORQ1=0TO5:TEMP(Q,Q1)=FND(Q1):PRINTUSING"####";TEMP(Q,Q1);:NEXTQ1:PRINT:NEXTQ 380 GOSUB270:IFQ$<"1"ORQ$>"7"THEN380 390 FORQ=0TO5:C(Q)=TEMP(VAL(Q$)-1,Q):NEXT 400 PRINT"CHARACTER TYPE",,"(M)AGE, (C)LERIC, OR (W)ARRIOR":GOSUB270 410 CT=-1-(Q$="M")-2*(Q$="C")-3*(Q$="W"):IF CT<0 THEN 400 420 HP=RND(2)+4+2*CT:L=1:HC=HP:X=0:Y=0:Z=0:MZ$="" 430 S(0)=1.5:S(1)=-.5*(CT=0):S(2)=.5*(CT=1):S(3)=-.5:FORQ=0TO3:S(Q)=INT(S(Q)+L*(.5-.25*(C(5)>15))+10*(CT=2)):NEXT:GOTO620 440 PRINT"ENTER CHARACTER TYPE","(M)AGE, (C)LERIC, OR (W)WARRIOR":GOSUB270:CP=-1-(Q$="C")-2*(Q$="W")-3*(Q$="M"):IF CP<0 THEN 440 450 PRINT"ENTER LEVEL ";:N$="" 460 GOSUB270:PRINTQ$;:IFQ$>CHR$(31)THENN$=N$+Q$:GOTO460 465 IFQ$=CHR$(8)ANDLEN(N$)>0THENN$=LEFT$(N$,LEN(N$)-1):GOTO460 470 IFQ$<>CHR$(13)THEN460ELSE N=VAL(N$):PRINT"POINTS FOR LEVEL"N,"ARE"INT(FNP(N)):RETURN 480 OPEN"O",1,LEFT$(NA$,8)+".CHR":WRITE#1,NA$,MZ$,X,Y,Z,CT,L,HP,HC,EP,G,RN:FORQ=0TO5:WRITE#1,P(Q),C(Q):NEXT:FORQ=0TO3:WRITE#1,S(Q):NEXT:FORQ=0TO11:WRITE#1,CC(Q):NEXT:CLOSE1:RETURN 490 PRINT"INVENTORY:"NA$" THE "CT$(CT):PRINT"LEVEL"L,,"HIT POINTS"HC,"EP'S"EP,"GOLD"G:IFRN=1THENPRINT"YOU HAVE THE RING!" 500 FORQ=3TO5:PRINTT$(Q)"+"P(Q-3);:NEXT:PRINT 510 IFCT>0THENPRINTT$(6)"+"P(3) 520 PRINTT$(CT+12)" ARMOR+"P(4),T$(CT)"+"P(5) 530 IFCT<2THENFORQ=0TO3:PRINT"SPELLS LEVEL"Q+1"=";-S(Q)*(S(Q)>0):NEXT 540 PRINTQ1$:FORQ=0TO5:PRINTUSING"####";C(Q);:NEXT:PRINT"" 550 IF MZ$<>"" THEN PRINTNA$" IS IN DUNGEON "MZ$ 560 PRINT 570 RETURN 580 'RECALL 590 PRINT"RECALL A CHARACTER":GOSUB290 600 IF RP=0THENPRINT"CHARACTER DOES NOT EXIST":GOSUB850:IFRP=2THEN590ELSERETURN 610 GOSUB750 620 PRINT"DO YOU WISH TO SEE AN INVENTORY OF THIS CHARACTER (Y/N)":GOSUB270 630 IF Q$="Y" GOSUB490:PRINT"PRESS ANY KEY TO CONTINUE":GOSUB270 640 IF MZ$<>""THEN710 650 TN$="":PRINT"ENTER THE NAME OF THE DUNGEON","YOU WISH TO ENTER","(8 CHARACTERS MAXIMUM)" 660 GOSUB270:IF Q$<>CHR$(13)THENPRINTQ$;:TN$=TN$+Q$:GOTO660ELSEPRINT 670 IF LEN(TN$)>8THEN650 680 TE$="DAT":CM=1:GOSUB1100 690 IFRP=0THENPRINT"DUNGEON "TN$" DOES","NOT EXIST":CM=0:GOSUB1070:GOTO650 700 MZ$=TN$:GOSUB480 710 RENAME LEFT$(NA$,8)+".CHR" TO "^IN^USE^.CHT" 720 MZ$=MZ$+".DAT" 721 POKE &HFFA3,119 722 LOADM MZ$ 723 LOADM "MONSTERS.DAT" 724 POKE &HFFA3,123 725 CLEAR 200,&H8000 730 RUN"MORIA 740 ' 750 OPEN"I",1,LEFT$(NA$,8)+".CHR":INPUT#1,NA$,MZ$,X,Y,Z,CT,L,HP,HC,EP,G,RN 760 FORQ=0TO5:INPUT#1,P(Q),C(Q):NEXT 770 FORQ=0TO3:INPUT#1,S(Q):NEXT 780 FORQ=0TO11:INPUT#1,CC(Q):NEXT:CLOSE#1:RETURN 790 'INVENTORY OF A CHARACTER 800 GOSUB290 810 IF RP=0THENPRINT"CHARACTER DOES NOT EXIST":GOSUB850:IFRP=2THEN800ELSERETURN 820 GOSUB750:GOSUB490:RETURN 830 ' 840 'LIST AVAIL CHARACTERS 850 TE$="CHR":CM=0:GOSUB1070:RETURN 860 ' 870 'LIST AVAIL DUNGEONS 880 TE$="DAT":CM=0:GOSUB1070:RETURN 890 ' 900 'RUN INSYTRUCTIONS PROGRAM WHICH RETURNS TO CONTROL 910 RUN"INSTR 920 ' 930 PRINT"DELETE WHICH CHARACTER?":GOSUB290 940 IFRP=0THENPRINT"CHARACTER DOES NOT EXIST":GOSUB850:IF RP=2THEN930ELSERETURN 950 PRINT"ARE YOU SURE (Y/N)?":GOSUB270 960 IF Q$="Y"THEN KILL LEFT$(NA$,8)+".CHR" 970 RETURN 980 ' 990 PRINT"GENERATING A NEW RANDOM MAZE","TAKES CONSIDERABLE TIME. WHILE THE PROGRAM RUNS IT WILL","SHOW WHAT FLOOR IT IS ON AND HOWMANY ROOMS IT HAS CREATED" 1000 PRINT,,"DO YOU WISH TO CONTINUE (Y/N)":GOSUB270 1010 IF Q$="Y" THEN RUN "DND-GEN 1020 RETURN 1030 ' 1040 'QUIT 1050 END 1060 'SUBROUTINE SCANS DISK DIRECTRORY FOR FILE OF TYPE TN$=TARGET NAME TE$=TARGET EXTENSION 1070 A$="DUNGEON":IF TE$="CHR" THEN A$="CHARACTER" 1080 PRINT"AVAILABLE "A$"S ARE:" 1090 PRINTSTRING$(31,"-") 1100 RP=0 1110 FOR X2=3 TO 11 1120 DSKI$ 0,17,X2,A$,B$ 1130 A$=A$+LEFT$(B$,127) 1140 FOR N=0 TO 7 1150 NM$=MID$(A$,N*32+1,8) 1160 ET$=MID$(A$,N*32+9,3) 1170 IF CM=1 OR ET$<>TE$ OR LEFT$(NM$,1)=CHR$(0) THEN 1240 1180 IF TE$="DAT" THEN PRINTNM$:GOTO 1270 1190 OPEN "I",1,NM$+".CHR" 1200 INPUT#1,NA$,MZ$,X,Y,Z,CT,L,HP 1210 PRINTNA$" THE "CT$(CT):RP=2 1220 PRINT"LEVEL"L,HP"HIT POINTS":IF MZ$<>""THENPRINT"IN DUNGEON "MZ$ 1230 PRINTSTRING$(31,"-") 1240 IF CM=1 AND NM$=LEFT$(TN$+" ",8) AND ET$=TE$ THEN RP=1:X2=11:N=7 1250 IF LEFT$(NM$,1)=CHR$(255) THEN X2=11:N=7 1260 CLOSE 1270 NEXT N,X2 1280 RETURN 9999 RUN "LEVEL"L,HP"HIT POINTS":IF MZ$<>""THENPRINT"IN DUNGEON "MZ$ 1230 PIELD,SLEEP,PROTECT FROM EVIL,LIGHT,PHANTASMAL FORCES,WEB,LIGHTNING BOLT,STRENGTH,LEVITATE,INVISIBILITY,FIREBALL,CONFUSE,PASSWALL,HOLD MONSTER,FEAR,CONTINUAL LIGHT 13 DATA TELEPORT,POWER WORD KILL,WALL OF ICE,TIMESTOP,WALL OF FIRE,SUMMON DEMON 14 FORY=0TO3:FORX=0TO3:READSC$(X,Y):NEXTX,Y:DATAPROTECT FROM EVIL,LIGHT,CURE LIGHT WOUNDS,TURN UNDEAD,DETECT TRAPS,SILENCE,PRAY,HOLD MONSTER,CURE SERIOUS WOUNDS,DISPELL UNDEAD,CONTINUAL LIGHT,PLAGUE,HOLY WORD,FINGER OF DEATH,BLADE BARRIER,RAISE DEAD 15 GOSUB27:RENAME"^IN^USE^.CHT"TO LEFT$(NA$,8)+".CHR":POKE65497,0:IFZ=0THEN35ELSE36 16 CLS:MI=0:PRINT"QUIT,RE-ENTER MINES, INVENTORY,","AND POINTS FOR LEVEL 'N'":GOSUB22 17 IF Q$="Q"THENMZ$="":GOSUB28:GOTO71 18 IF Q$="R"THEN35 19 IFQ$="I"THENCLS:GOSUB81 20 IFQ$="P"THENCLS:GO" # 200,&H6000::10);"MON-GEN" 0 M$(24)X024:M$(X):: 07106SKELETON,07106KOBOLD,06106GOBLIN,04108DWARF,02108MERCENARY,08108ZOMBIE,07305HARPY,06106ORC,05108WEREWOLF,05308OWL BEAR,06303GHOUL,05112DOPPLEGANGER,04108TROLL,05109BUGBEAR,06110MINOTAUR( 03106WRAITH,05404GARGOYLE,05306GRIFFIN,05706HYDRA,04124GIANT,02110VAMPIRE,04108METAMORPH,01210GARTHIM,03108BALROG,-1316DRAGON2 X0 24< 2969632X,(M$(X))F Y1 (M$(X))P 2969632XY,((M$(X),Y,1))Z Y,X!dM "MONSTERS.DAT",29696,30495,29696LE,05306GRIFFIN,05706HYDRA,04124GIANT,02110VAMPIRE,04108METAMORPH,01210GARTHIM,03108BALROG,-1316DRAGON2 X0 24< 2969632X,(M$(X))F Y1 (M$(X))P 2969632XY,((M$(X),Y,1))Z Y,X!d1,P(Q),C(Q):NEXT:FORQ=0TO3:WRITE#1,S(Q):NEXT:FORQ=0TO11:WRITE#1,CC(Q):NEXT:CLOSE1:POKE65497,0:RETURN 29 Q=L+1:Q1=1:CP=1-(CT=0)+(CT=1) 30 IFEP>FNP(Q)THENQ=Q+1:GOTO30 31 IFQ=L+1THEN33 32 Q=Q-L-1:PRINT"YOU HAVE GAINED"Q"LEVELS!":FORQ2=1TOQ:Q1=Q1+RND(C(3)/2):NEXT:PRINT"YOU HAVE GAINED"Q1"HIT POINTS":HP=HP+Q1:HC=HC+Q1:L=L+Q:IFCT<2THENFORDA=0TO3:S(DA)=S(DA)+Q:NEXT 33 FORDA=1TO300:NEXT:RETURN 34 S(0)=1.5:S(1)=-.5*(CT=0):S(2)=.5*(CT=1):S(3)=-.5:FORQ=0TO3:S(Q)=INT(S(Q)+L*(.5-.25*(C(5)>15))+10*(CT=2)):NEXT:RETURN 35 CLS:PRINT"YOU ENTER THE MINES OF MORIA":X=EX:Y=EY:Z=1 36 IFZ=0THEN541 37 IFZ>20THENPRINT"YOU'RE FALLING...":FORQ=1TO200:NEXT:PRINT"SPLAT!",,"YOU ARE DEAD.":GOTO70 38 Q=USR0(Q1):FORQ=0TO30+Z 39 Q1=RND(8):TR=-2*(Q1<5)+(Q1>4)*(Q1<7)-3*(Q1>6) 40 Q1=RND(225):IFRND(90)=1THENTR=4 41 POKEQ1+500,TR:NEXT:OL=Z:GOTO91 42 RY=RY+1:IFHC0)*(RND(2)=1):IFHC>HP THENHC=HP 43 GOSUB58:PRINT">>":IFCC(11)=1THEN65 44 Q2=1:GOSUB22 45 IFVAL(Q$)<5THEND=VAL(Q$) 46 IFQ$="^"THEND=1ELSEIFQ$=CHR$(9)THEND=2ELSEIFQ$=CHR$(10)THEND=3ELSEIFQ$=CHR$(8)THEND=4 47 IFQ$="U"ORQ$="D"THEN59 48 IFQ$="I"THENGOSUB81:GOTO44 49 IFQ$="H"THEN72 50 IFQ$="K"THEN64 51 IFQ$="P"GOSUB26:GOTO44 52 IFQ$="C"THEN415 53 IFQ$="W"THENIFRND(Z+15)>RY+Z-(TR=3)*RND(9)-(TR>1)*RND(9)-RND(4)*(RN=1)THEN42ELSE275 54 IFQ$="L"THEN97 55 IFQ$="Q"THENPRINT"QUIT... ARE YOU SURE (Y/N)?":GOSUB22:IFQ$<>"Y"THEN44ELSEGOSUB28:GOTO71 56 IFD>0THEN87 57 PRINT"LEGAL COMMANDS ARE:","A DIRECTION","INVENTORY","HELP","CAST","WAIT","LOOK","KILL SELF","QUIT","POINTS FOR t 07106SKELETONC(2)6)(C(2)9)( 07106KOBOLD2)15)(C(2)17):5 06106GOBLIN)0):tR12(( 04108DWARF2))(L(5.1CT)))(02108MERCENARY547:RR(CC(7)0) 08108ZOMBIE((2.5.5(CT2)) 07305HARPY))):547:RR(CC(7)06106ORCR16(2.5(L(5.1C 05108WEREWOLF547:RR(CC(7)0): 05308OWL BEAR(ML(1(MN11)(M 06303GHOUL1))3.1):547:RR205112DOPPLEGANGER2(ML3.1): 04108TROLLR2R2:R20R20 05109BUGBEARR:"YOU DISPELL 06110MINOTAUR145:Q21:537vI 03106WRAITH IT OUT OF THE MINES 05404GARGOYLEPEPG:29:34:G 05306GRIFFIN(X)0::HCHP:28: 05706HYDRA"AND YOU RECOVERED 04124GIANT,"YOU, "NA$", JOIN TH 02110VAMPIRETHE HEROES OF OLD!"04108METAMORPHR15((2.5(CT 01210GARTHIM)(L(5.1CT)))( 03108BALROG4)(C(2)6)(C(2)9) -1316DRAGONC(2)15)(C(2)17):t6GRIFFIN(X)0::HCHP:28: 05706HYDRA"AND YOU RECOVERED 04124GIANT,"YOU, "NA$", JOIN TH 02110VAMPIRETHE HEROES OF OLD!"04108METAMORPHR15((2.5(CT 01210GARTHIM)(L(5.1CT)))( 03108BALROG4)(C(2)6)(C(TION?":GOSUB22 76 IFQ$="A"THENPRINT"TRY PRAYING AT AN ALTAR","(AND BE GENEROUS)" 77 IFRN=0ANDQ$="R"THENFORQ=0TO10:CC(Q)=0:NEXT:Z=Z-INT(RND(Z/2)):GOTO36 78 IFQ$="P"THEN430ELSEIFQ$="L"THEN432 79 IFQ$="D"THENPRINT"YOU ARE ON LEVEL"Z", AT"X","Y" AND THE ENTRANCE IS AT"EX","EY"." 80 GOTO 44 81 PRINT"INVENTORY:"NA$" THE "CT$(CT):PRINT"LEVEL"L,,"HIT POINTS"HC,"EP'S"EP,"GOLD"G:IFRN=1THENPRINT"YOU HAVE THE RING!" 82 FORQ=3TO5:PRINTT$(Q)"+"P(Q-3);:NEXT:PRINT 83 IFCT>0THENPRINTT$(6)"+"P(3) 84 PRINTT$(CT+12)" ARMOR+"P(4),T$(CT)"+"P(5) 85 IFCT<2THENFORQ=0TO3:PRINT"SPELLS LEVEL"Q+1"=";-S(Q)*(S(Q)>0):NEXT 86 PRINTQ1$:FORQ=0TO5:PRINTUSING"####";C(Q);:NEXT:PRINT"":RETURN 87 LG=0:IFW(D)=2THENIFCC(1)ORRND(3)>2THENPRINT"YOU HAVE FOUND A SECRET DOOR.":LG=5ELSELG=-5 88 IFW(D)=1ORLG=-5THENPRINT"IT'S ONLY A WALL":Q$="W":GOTO53 89 IFW(D)=3ORLG=5THEN147 90 X=X-(D=2)+(D=4):Y=Y-(D=1)+(D=3) 91 FORRY=-2TO1:FORRX=-2TO1:R(RX+2,RY+2,0)=LPEEK(FNPK(Q)+15*RY+RX)AND3:R(RX+2,RY+2,1)=(LPEEK(FNPK(Q)+15*RY+RX)AND12)/4:NEXT:NEXT:F=INT(LPEEK(FNPK(Q))/16):Q=PEEK(15*Y+X+485):IFTR>-1THENTR=Q 92 IFX=1THENFORQ=1TO3:R(1,Q,1)=1:NEXT 93 IFX=2THENFORQ=1TO3:R(0,Q,1)=1:NEXT 94 IFY=1THENFORQ=1TO3:R(Q,1,0)=1:NEXT 95 IFY=2THENFORQ=1TO3:R(Q,0,0)=1:NEXT 96 W(1)=R(2,2,0):W(2)=R(2,2,1):W(3)=R(2,1,0):W(4)=R(1,2,1):RY=0& :START&:&1(:CLEARS TO PCLEAR 0 AND&J-:USES ONLY 1 BUFFER&UF25,14&aP3584,0&mU 1,256&Z:RUN CONTROL25,14P3584,0U 1,256Z"CONTROLCOULD BE RUN"FILE- d:NAME" TO LINK TO NEW FILE n),S(3),W(4),P(5),R(3,3,1) 3 DEFFND(Q)=RND(6)+RND(6)+RND(6):DEFFNAA(V)=INT(!(FNPK(Q)+V)/16)+ABS(PEEK(15*Y+X+V+485)):DEFFNPK(Q)=226*Z+15*Y+X+450332:DEFFNP(N)=(750+CP*250)*(-(N<8)*2^(N-1))-(N>7)*(1E5-2E4*(CP>0)-3E4*(CP>1))*(N-7) 4 Q1$=" STR INT WIS CON DEX CHA":FORX=0TO15:READF$(X):NEXT:DATA" ","U/ ","D/ ",U/D,TPT,TRP,THR,TVR,EXC,FNT,ELV,PIT,MIR,STA,ALT,DRK 5 FORX=0TO14:READT$(X):NEXT:DATADAGGER,MACE,SWORD,RING,BOOTS,CLOAK,SHIELD,TORCH,CHEST,BOOK,GOLD,JEWELS,LEATHER,MAIL,PLATE 6 FORX=0TO2:READCT$(X):NEXT:DATAMAGE,CLERIC,WARRIOR 9 FORX=0TO11:READCC$(X):NEXT:DATASLNC,LGHT,TMST,PRAY,DTRP,SHLD,INVS,PROT,LEVT,FEAR,STRG,PLAG 10 FORX=0TO2:READQ:W$(X)=CHR$(Q):NEXT:DATA128,207,143 11 FORX=0TO4:READTR$(X):NEXT:DATA""," $"," #"," #$","DGN" 12 FORY=0TO3:FORX=0TO5:READSM$(X,Y):NEXTX,Y:DATA MAGIC MISSLE,CHARM,SHIELD,SLEEP,PROTECT FROM EVIL,LIGHT,PHANTASMAL FORCES,WEB,LIGHTNING BOLT,STRENGTH,LEVITATE,INVISIBILITY,FIREBALL,CONFUSE,PASSWALL,HOLD MONSTER,FEAR,CONTINUAL LIGHT 13 DATA TELEPORT,POWER WORD KILL,WALL OF ICE,TIMESTOP,WALL OF FIRE,SUMMON DEMON 14 FORY=0TO3:FORX=0TO3:READSC$(X,Y):NEXTX,Y:DATAPROTECT FROM EVIL,LIGHT,CURE LIGHT WOUNDS,TURN UNDEAD,DETECT TRAPS,SILENCE,PRAY,HOLD MONSTER,CURE SERIOUS WOUNDS,DISPELL UNDEAD,CONTINUAL LIGHT,PLAGUE,HOLY WORD,FINGER OF DEATH,BLADE BARRIER,RAISE DEAD 15 GOSUB27:RENAME"^IN^USE^.CHT"TO LEFT$(NA$,8)+".CHR":POKE65497,0:IFZ=0THEN35ELSE36 16 CLS:MI=0:PRINT"QUIT,RE-ENTER MINES, INVENTORY,","AND POINTS FOR LEVEL 'N'":GOSUB22 17 IF Q$="Q"THENMZ$="":GOSUB28:GOTO71 18 IF Q$="R"THEN35 19 IFQ$="I"THENCLS:GOSUB81 20 IFQ$="P"THENCLS:GOSUB26 21 PRINT"PRESS ANY KEY TO CONTINUE":GOSUB22:GOTO16 22 Q$=INKEY$:IFQ$=""THEN22ELSERETURN 23 GOSUB22:PRINTQ$;:IFQ$>CHR$(31)THENA$=A$+Q$ 24 IFQ$=CHR$(8)ANDLEN(A$)>0THENA$=LEFT$(A$,LEN(A$)-1):GOTO23 25 IFQ$<>CHR$(13)THEN23ELSEQ=VAL(A$):RETURN 26 PRINT"CHARACTER TYPE",,"MAGE, CLERIC, OR WARRIOR":GOSUB22:CP=-1-(Q$="C")-2*(Q$="W")-3*(Q$="M"):IFCP<0THEN26ELSEA$="":PRINT"LEVEL ";:GOSUB23:N=Q:PRINT"POINTS FOR THAT LEVEL ARE",INT(FNP(N)):RETURN 27 POKE65496,0:CLS:OPEN"I",1 10 'START 20 ' 40 'CLEARS TO PCLEAR 0 AND 45 'USES ONLY 1 BUFFER 70 POKE25,14 80 POKE3584,0 85 FILES 1,256 90 RUN"CONTROL LF25,14P3584,0U 1,256Z"CONTROLCOULD BE RUN"FILE- d:NAME" TO LINK TO NEW FILE n,Y,Z,CT,L,HP,HC,EP,G,RN:FORQ=0TO5:WRITE#1,P(Q),C(Q):NEXT:FORQ=0TO3:WRITE#1,S(Q):NEXT:FORQ=0TO11:WRITE#1,CC(Q):NEXT:CLOSE1:POKE65497,0:RETURN 29 Q=L+1:Q1=1:CP=1-(CT=0)+(CT=1) 30 IFEP>FNP(Q)THENQ=Q+1:GOTO30 31 IFQ=L+1THEN33 32 Q=Q-L-1:PRINT"YOU HAVE GAINED"Q"LEVELS!":FORQ2=1TOQ:Q1=Q1+RND(C(3)/2):NEXT:PRINT"YOU HAVE GAINED"Q1"HIT POINTS":HP=HP+Q1:HC=HC+Q1:L=L+Q:IFCT<2THENFORDA=0TO3:S(DA)=S(DA)+Q:NEXT 33 FORDA=1TO300:NEXT:RETURN 34 S(0)=1.5:S(1)=-.5*(CT=0):S(2)=.5*(CT=1):S(3)=-.5:FORQ=0TO3:S(Q)=INT(S(Q)+L*(.5-.25*(C(5)>15))+10*(CT=2)):NEXT:RETURN 35 CLS:PRINT"YOU ENTER THE MINES OF MORIA":X=EX:Y=EY:Z=1 36 IFZ=0THEN539 37 IFZ>20THENPRINT"YOU'RE FALLING...":FORQ=1TO200:NEXT:PRINT"SPLAT!",,"YOU ARE DEAD.":GOTO70 38 Q=USR0(Q1):FORQ=0TO30+Z 39 Q1=RND(8):TR=-2*(Q1<5)+(Q1>4)*(Q1<7)-3*(Q1>6) 40 Q1=RND(225):IFRND(90)=1THENTR=4 41 POKEQ1+500,TR:NEXT:OL=Z:GOTO91 42 RY=RY+1:IFHC0)*(RND(2)=1):IFHC>HP THENHC=HP 43 GOSUB58:PRINT">>":IFCC(11)=1THEN65 44 Q2=1:GOSUB22 45 IFVAL(Q$)<5THEND=VAL(Q$) 46 IFQ$="^"THEND=1ELSEIFQ$=CHR$(9)THEND=2ELSEIFQ$=CHR$(10)THEND=3ELSEIFQ$=CHR$(8)THEND=4 47 IFQ$="U"ORQ$="D"THEN59 48 IFQ$="I"THENGOSUB81:GOTO44 49 IFQ$="H"THEN72 50 IFQ$="K"THEN64 51 IFQ$="P"GOSUB26:GOTO44 52 IFQ$="C"THEN413 53 IFQ$="W"THENIFRND(Z+15)>RY+Z-(TR=3)*RND(9)-(TR>1)*RND(9)-RND(4)*(RN=1)THEN42ELSE273 54 IFQ$="L"THEN97 55 IFQ$="Q"THENPRINT"QUIT... ARE YOU SURE (Y/N)?":GOSUB22:IFQ$<>"Y"THEN44ELSEGOSUB28:GOTO71 56 IFD>0THEN87 57 PRINT"LEGAL COMMANDS ARE:","A DIRECTION","INVENTORY","HELP","CAST","WAIT","LOOK","KILL SELF","QUIT","POINTS FOR LEVEL 'N'":GOTO44 58 FORQ=0TO11:CC(Q)=CC(Q)-(CC(Q)>0)*(Q<>4):NEXT:RETURN 59 F=INT(!(FNPK(Q))/16):IFQ$="U"THEN63 60 IFF=2ORF=3THENZ=Z+1:GOTO36 61 IFF=11 THEN213 62 PRINT"THERE'S NO WAY "Q$:GOTO44 63 IFF=1ORF=3THENZ=Z-1:GOTO36ELSE62 64 PRINT"LET ME DIE!!!":INPUT"ARE YOU SURE";Q$:IFQ$<>"YES"THEN44 65 PRINT"AARRRGGGHHH!" 66 PRINT"YOU DIE" 67 IFCT<>1ORQ$="YES"ORS(3)<1THEN70 68 PRINT"RAISE DEAD!!":S(3)=S(3)-1:GOSUB541:IFR<2*(L<13)+2*(L<9)ORC(3)=1THENPRINT"SPELL FAILED":GOT):GOSUB547:R=R-(CC(7)>0):RETURN 544 R=16-INT(2.5*INT(L/(5.1-CT)))+(CT=2):GOSUB547:R=R-(CC(7)>0):RETURN 545 R=16-2*INT(ML*(1-(MN=11)-(MN=16)-(MN=21))/3.1):GOSUB547:R=R-2*(MN=6):RETURN 546 R=12-2*INT(ML/3.1):GOSUB547:RETURN 547 IFR<2THENR=2ELSEIFR>20THENR=20 548 R=RND(20)-R:RETURN :RETURN 544 R=16-INT(2.5*INT(L/(5.1-CT)))+(CT=2):GOSUB547:R=R-(CC(7)>0):RETURN 545 R=16-2*INT(ML*(1-(MN=11)-(MN=16)-(MN=21))/3.1):GOSUB547:R=R-2*(MN=6):RETURN 546 R=12-2*INT(ML/3.1):GOSUB547:RETURN 547 IFR<2THENR=2ELSEIFR>20THENR=20ONS","lIGHT","pROTECTION OR","rELOCATION?":GOSUB22 76 IFQ$="A"THENPRINT"TRY PRAYING AT AN ALTAR","(AND BE GENEROUS)" 77 IFRN=0ANDQ$="R"THENFORQ=0TO10:CC(Q)=0:NEXT:Z=Z-INT(RND(Z/2)):GOTO36 78 IFQ$="P"THEN428ELSEIFQ$="L"THEN430 79 IFQ$="D"THENPRINT"YOU ARE ON LEVEL"Z", AT"X","Y" AND THE ENTRANCE IS AT"EX","EY"." 80 GOTO 44 81 PRINT"INVENTORY:"NA$" THE "CT$(CT):PRINT"LEVEL"L,,"HIT POINTS"HC,"EP'S"EP,"GOLD"G:IFRN=1THENPRINT"YOU HAVE THE RING!" 82 FORQ=3TO5:PRINTT$(Q)"+"P(Q-3);:NEXT:PRINT 83 IFCT>0THENPRINTT$(6)"+"P(3) 84 PRINTT$(CT+12)" ARMOR+"P(4),T$(CT)"+"P(5) 85 IFCT<2THENFORQ=0TO3:PRINT"SPELLS LEVEL"Q+1"=";-S(Q)*(S(Q)>0):NEXT 86 PRINTQ1$:FORQ=0TO5:PRINTUSING"####";C(Q);:NEXT:PRINT"":RETURN 87 LG=0:IFW(D)=2THENIFCC(1)ORRND(3)>2THENPRINT"YOU HAVE FOUND A SECRET DOOR.":LG=5ELSELG=-5 88 IFW(D)=1ORLG=-5THENPRINT"IT'S ONLY A WALL":Q$="W":GOTO53 89 IFW(D)=3ORLG=5THEN147 90 X=X-(D=2)+(D=4):Y=Y-(D=1)+(D=3) 91 FORRY=-2TO1:FORRX=-2TO1:R(RX+2,RY+2,0)=!(FNPK(Q)+15*RY+RX)AND3:R(RX+2,RY+2,1)=(!(FNPK(Q)+15*RY+RX)AND12)/4:NEXT:NEXT:F=INT(!(FNPK(Q))/16):Q=PEEK(15*Y+X+485):IFTR>-1THENTR=Q 92 IFX=1THENFORQ=1TO3:R(1,Q,1)=1:NEXT 93 IFX=2THENFORQ=1TO3:R(0,Q,1)=1:NEXT 94 IFY=1THENFORQ=1TO3:R(Q,1,0)=1:NEXT 95 IFY=2THENFORQ=1TO3:R(Q,0,0)=1:NEXT 96 W(1)=R(2,2,0):W(2)=R(2,2,1):W(3)=R(2,1,0):W(4)=R(1,2,1):RY=0 97 CLS:Q1=53:PRINT@Q1,"";:FORQ=0TO11:IFCC(Q)>0THENPRINT" "CC$(Q); 98 IFPOS(0)>28THENQ1=Q1+64:PRINT@Q1,""; 99 NEXTQ 100 Q$=STRING$(7,175):A$=CHR$(175):LG=-(CC(1)<1):Q1=0:Q2=0:D=1:N=1 101 IFW(1)>0ORLG=1THEN115 102 IFR(1,3,1)>0ORR(1,2,0)>0ORW(4)>0THEN105 103 IFFNAA(14)>0THENPRINT@68,"?"; 104 Q1=1:R9=R(1,3,0):IFR9>0THENPRINT@1,Q$;:IFR9=3THENPRINT@4,W$(1); 105 IFFNAA(15)>0THENPRINT@74,"?"; 106 R9=R(2,3,0):IFR9>0THENPRINT@7,Q$;:IFR9=3THENPRINT@10,W$(1); 107 IFW(2)>0ORR(2,3,1)>0ORR(3,2,0)T 10 CLEAR200,&H6000:CLS:PRINTTAB(10);"MON-GEN" 20 DIM M$(24) 30 FORX=0TO24:READM$(X):NEXT:DATA 07106SKELETON,07106KOBOLD,06106GOBLIN,04108DWARF,02108MERCENARY,08108ZOMBIE,07305HARPY,06106ORC,05108WEREWOLF,05308OWL BEAR,06303GHOUL,05112DOPPLEGANGER,04108TROLL,05109BUGBEAR,06110MINOTAUR 40 DATA 03106WRAITH,05404GARGOYLE,05306GRIFFIN,05706HYDRA,04124GIANT,02110VAMPIRE,04108METAMORPH,01210GARTHIM,03108BALROG,-1316DRAGON 50 FOR X=0 TO 24 60 POKE 29696+32*X,LEN(M$(X)) 70 FOR Y=1 TO LEN(M$(X)) 80 POKE 29696+32*X+Y,ASC(MID$(M$(X),Y,1)) 90 NEXT Y,X 100 SAVEM "MONSTERS.DAT",29696,30495,29696 05706HYDRA,04124GIANT,02110VAMPIRE,04108METAMORPH,01210GARTHIM,03108BALROG,-1316DRAGON 50 FOR X=0 TO 24 60 POKE 29696+32*X,LEN(M$(X)) 70 FOR Y=1 TO LEN(M$(X)) 80 POKE 29696+32*X+YQ$;:IFR9=3THENPRINT@144,W$(1); 121 IFW(2)=0ANDLG=0THENR9=R(3,2,1):IFR9>0THENFORQ=0TO4:PRINT@147+32*Q,A$;:NEXT:IFR9=3THENPRINT@211,W$(1); 122 IFW(2)>0THENN=0:FORQ=0TO4:PRINT@141+32*Q,A$;:NEXT:IFW(2)>LG+1THENPRINT@205,W$(W(2)-2); 123 IFW(4)>0THEND=0:FORQ=0TO4:PRINT@135+32*Q,A$;:NEXT:IFW(4)>LG+1THENPRINT@199,W$(W(4)-2); 124 IFW(4)>0ORLG=1THEN126ELSER9=R(0,2,1):IFR9>0THENFORQ=0TO4:PRINT@129+32*Q,A$;:NEXT:IFR9=3THENPRINT@193,W$(1); 125 R9=R(1,1,0):IFR9>0THEND=0:PRINT@257,Q$;:IFR9=3THENPRINT@260,W$(1); 126 Q=288:IFW(3)>0THENPRINT@263,Q$;:IFW(3)>LG+1THENPRINT@266,W$(W(3)-2); 127 IFLG=1THEN140 128 IFW(2)=0THENR9=R(3,1,0):IFR9>0THENN=0:PRINT@269,Q$;:IFR9=3THENPRINT@272,W$(1); 129 IFW(3)>0THEN140 130 IFN=1ANDR(2,1,1)=0THENR9=R(3,1,1):IFR9>0THENFORQ=0TO4:PRINT@275+32*Q,A$;:NEXT:IFR9=3THENPRINT@339,W$(1); 131 R9=R(2,1,1):IFR9>0THENN=0:FORQ=0TO4:PRINT@269+32*Q,A$;:NEXT:IFR9=3THENPRINT@333,W$(1); 132 R9=R(1,1,1):IFR9>0THEND=0:FORQ=0TO4:PRINT@263+32*Q,A$;:NEXT:IFR9=3THENPRINT@327,W$(1); 133 IFD=0THEN136ELSER9=R(0,1,1):IFR9>0THENFORQ=0TO4:PRINT@257+32*Q,A$;:NEXT:IFR9=3THENPRINT@321,W$(1); 134 IFFNAA(-16)>0THENPRINT@324,"?"; 135 R9=R(1,0,0):IFR9>0THENPRINT@385,Q$;:IFR9=3THENPRINT@388,W$(1); 136 IFFNAA(-15)>0THENPRINT@330,"?"; 137 R9=R(2,0,0):IFR9>0THENPRINT@391,Q$;:IFR9=3THENPRINT@394,W$(1); 138 Q=416:IFN=0THEN140ELSEIFFNAA(-14)>0THENPRINT@336,"?"; 139 R9=R(3,3,0):IFR9>0THENPRINT@397,Q$;:IFR9=3THENPRINT@400,W$(1); 140 PRINT@202,"X";:PRINT@169,TR$(ABS(TR));:PRINT@Q,""; 141 IFTR<0THEN292 142 IFRND(Z+30)<=Z+RY-(Z<5)-(TR=3)*RND(9)-(TR>1)*RND(9)-RN*RND(9)ORTR=4 THEN273 143 IFTR=1ORTR=3THENMN=RND(6)*3:GOTO359 144 PRINT@233,F$(F);:PRINT@Q,""; 145 IFF>3THENONF-3GOTO153,157,162,180,194,198,206,207,215,225,238,270 146 GOTO42 147 Q=-(RND(Z+10)>9):PRINT"OPEN OR IGNORE IT?":IFCC(4)>0ANDQ=1THENPRINT"'BEWARE THE DOOR'","A VOICE WHISPERS":CC(4)=CC(4)-1 148 GOSUB22 149 IFQ$<>"O"THEN167 150 IFQ=0THENW(D)=4:D=Q1:GOTO97 151 IFRND(C(1))+RND(C(4))>5*INT(Z/5+1)THENPRINT"YOU DEFUSE THE DOOR"ELSEPRINT"KABOOM! THE DOOR EXPLODES":Q=RND(2*Z):HC=HC-Q:PRINT"YOU LOSE"Q"HIT POINTS":IFHC<1THEN66 152 PRINT"OPENED":FORQ=0TO300:NEXT:Q=0:GOTO150 153 IFRN=1ORCC(2)>0THENPRINT"THE TELEPORTER DOESN'T WORK":GOTO42 154 PRINT"ZZAPP!! YOU'VE BEEN TELEPORTED":FORQ=0TO100:NEXT:IFMI>1THEN156 155 IFZ/2<>INT(Z/2)THENZ=Z+RND(3)ELSEZ=Z-RND(3):Z=Z-(Z<1)+(Z>20) 156 X=RND(15):Y=RND(15):IFMI>1THEN91ELSE36 157 IFCC(4)>0THEN160 158 IF(CC(1)>0ANDRND(3)>1)ORRND(C(4)+P(1))>6THEN161 159 PRINT"YOU FALL THROUGH THE TRAP DOOR":FORQ=1TO200:NEXT:GOTO214 160 PRINT"'BEWARE THE FLOOR'","A VOICE WHISPERS":CC(4)=CC(4)-1 161 PRINT"YOU NOTICE A TRAP DOOR NEAR","YOUR FEET":GOTO211 162 PRINT"YOU HAVE FOUND A RUNE COVERED","JEWEL ENCRUSTED THRONE" 163 PRINT,,"SIT, PRY, READ RUNES, OR IGNORE":RY=RY+.5:IFRY/2=INT(RY/2)GOSUB58 164 GOSUB22 165 IF RND(100)"I"THEN168 167 PRINT"IGNORE":GOTO42 168 IFQ$="S"THEN176 169 IFQ$="P"THEN174 170 IFQ$="R"THEN172 171 GOTO163 172 PRINT"READ RUNES!":IFRND(C(1)+C(2))0)L)THENPRINT"THEY WON'T COME OFF":GOTO163 175 Q=RND(5)*RND(Z)*25*Z:PRINT"THEY POP INTO YOUR GREEDY HANDS THEY'RE WORTH"Q:G=G+Q:GOTO163 176 PRINT"SIT ON THE THRONE":Q=RND(10):IFQ=1THENPRINT"THE THRONE ELECTROCUTES YOU","YOU LOSE A LEVEL":FORQ=0TO3:S(Q)=INT(S(Q)/2):NEXT:Q=RND(HP/L):GOSUB272:L=L-1:HP=HP-Q:EP=INT(EP-EP/(L-(L=0))):IFHC<1ORL=0THEN66ELSE163 177 IFQ>8THENPRINT"A BELL RINGS":Q=1:CP=1-(CT=0)+(CT=1):EP=INT(FNP(L+1)+1):GOSUB29:GOTO163 178 IFQ=8ANDRN=0THEN153 179 PRINT"NOTHING HAPPENS":GOTO163 180 PRINT"IN THE WALL THERE IS A SMALL","DOOR WITH FOUR BUTTONS NUMBERED 1,2,3,4 AND FOUR LIGHTS.":FORMN=1TO4:PRINTCHR$(128);" ";:NEXT:PRINT:TV$="":FORMN=1TO4:TV$=TV$+STR$(RND(4)):NEXT 181 MN$="":PRINT"PRESS FOUR BUTTONS OR IGNORE" 182 GOSUB22 183 IFQ$<>"P"THEN167 184 PRINT"PRESS THEM":MN$="":FORQ=1TO4 185 Q$=INKEY$:IFQ$=""ORVAL(Q$)<1THEN185 186 PRINTQ$" ";:MN$=MN$+" "+Q$:NEXT:PRINT:DA=0:CP=0:FORQ=1TO4:IFMID$(TV$,2*Q-1,2)=MID$(MN$,2*Q-1,2)THENCP=CP+1:DA=DA-1 187 NEXT:FORQ=1TO4:FORQ1=1TO4:IFMID$(TV$,2*Q-1,2)=MID$(MN$,2*Q1-1,2)THENDA=DA+1:MID$(MN$,2*Q1-1,2)=" ":Q1=4 188 NEXTQ1,Q:IFDA>0THENFORQ=1TODA:PRINTCHR$(191);" ";:NEXT 189 IFCP>0THENFORQ=1TOCP:PRINTCHR$(207);" ";:NEXT 190 IFCP+DA<4THENFORQ=1TO4-CP-DA:PRINTCHR$(128);" ";:NEXT 191 PRINT:IFCP=4THEN193 192 PRINT"ZZAPP!! YOU ARE ELECTROCUTED!":Q=RND(Z)+1:GOSUB272:IFHC<1THEN66ELSE181 193 PRINT"THE DOOR OPENS!":TV$="":TR=3:ML=24:GOSUB271:GOTO359 194 PRINT"YOU HAVE FOUND AN EXCELSIOR","TRANSPORTER!":IFRN=1ORCC(2)>0THENPRINT"BUT IT DOESN'T WORK":GOTO42 195 A$="":PRINT"WHAT LEVEL DO YOU WANT TO GO TO ";:GOSUB23:IFQ=0ORQ>20THEN42 196 Q1=ABS(Z-Q)*100:IFQ1>G THENPRINT"YOU CAN'T AFFORD IT":GOTO195 197 PRINT"THAT WILL COST"Q1:G=G-Q1:Q1=-1:Z=Q:Q=Z*226+450573:Y=!(Q)AND15:X=INT(!(Q)/16):GOTO36 198 Q=RND(4):Q$="WHITEGREENBLACKRED":Q$=MID$(Q$,Q*5-4,5):PRINT"YOU SEE A FOUNTAIN WITH "Q$,"WATER. DRINK OR IGNORE":Q1=(X+Y+Z)AND7:Q1=Q1+4*(Q1>4):GOSUB22 199 IFQ$<>"D"THEN167ELSEPRINT"DRINK" 200 IFQ=Q1 THEN205ELSEONRND(5)GOTO201,203,204,204,205 201 PRINT"AAARRRGH! IT'S POISONED WATER":Q=RND(Z/2+1):GOSUB542:IFR>=0THENPRINT"YOU RESIST IT":GOTO42 202 GOSUB272:IFHC<1THEN66ELSE43 203 DA=RND(3)*SGN(C(5)-FND(X)):IFDA=0THEN42ELSEGOSUB394:GOTO44 204 PRINT"IT'S JUST WATER":GOTO42 205 PRINT"IT TINGLES":HC=HC+INT((HP-HC)/2):Q=RND(4)-1:S(Q)=S(Q)+RND(2):GOTO42 206 PRINT"YOU FEEL HEAVY FOR A MOMENT":Z=Z-1:FORQ=1TO300:NEXT:GOTO36 207 IFCC(1)>0ORRND(C(4)+P(1))>RND(Z)+5THEN210ELSEIFCC(8)>0THEN209 208 PRINT"YOU FALL INTO THE PIT":Q=RND(Z)+RND(Z):GOSUB272:FORQ=1TO200:NEXT:IFHC<1THEN66ELSE214 209 PRINT"AS YOU HOVER ACROSS THE ROOM" 210 PRINT"YOU NOTICE A PIT IN THE FLOOR":IFZ=20THENPRINT"IT'S BOTTOMLESS!" 211 PRINT"DO YOU WANT TO GO DOWN":GOSUB22 212 IFQ$<>"Y"ANDQ$<>"D"THENPRINT"NO":GOTO42 213 IFF=11ANDC(4)+RND(P(1))<=FND(X)+RND(Z)THENPRINT"YOU SLIP":GOTO208 214 Z=Z+1:GOTO36 215 PRINT"YOU SEE A MIRROR. DO YOU WANT TOLOOK IN, SMASH, OR TOUCH IT?":GOSUB22 216 IFQ$="S"THENPRINT"YOU SMASH IT INTO TINY SHARDS":GOSUB271:Q=RND(5):IFQ<3THEN42ELSEIFQ=2ORQ=3THENF=RND(3):Q=FNPK(Q):!Q,(!(Q)AND16)+F*16:GOTO97ELSEQ=RND(6)-1:P(Q)=(P(Q)>0):GOTO42 217 IFQ$="T"THENPRINT"YOU TOUCH IT":IFRND(2)=1THENPRINT"IT'S SO COLD IT BURNS":Q=INT(RND(5)*Z/3):GOTO202ELSEPRINT"ZAPP! YOU ARE TRANSPOSED":Q=16-X:X=16-Y:Y=Q:GOTO91 218 IFQ$<>"L"THEN167 219 Q=RND(7)+3*(RN=1):IFQ<5THENPRINT"YOU SEE YOURSELF":GOTO42 220 IFQ>5ANDZ"Y"ANDQ$<>"E"THEN167 228 Q=RND(24):IFQ<13THENPRINT"IT'S JUST STONE":GOTO42 229 PRINT"IT COMES TO LIFE!":GOSUB271:IFQ>16THENMN=RND(25)-1:GOTO275 230 ONQ-12GOTO231,232,233,236 231 PRINT"IT'S DIONYSUS! TOGETHER YOU GET","DRUNK. WHEN YOU COME TO, YOU","FIND SOMETHING HAS BEEN STOLEN FROM YOU AND YOUR HEAD HURTS.":P(RND(6)-1)=0:G=0:HC=INT(HC/2)+1:GOTO44 232 Q=RND(3)+P(0):PRINT"IT'S APOLLO! HE GIVES YOU","A RING +"Q:P(0)=Q:GOTO42 233 Q=RND(2):Q1=RND(3)+P(Q):MN$="":IFQ=2THENMN$="A" 234 PRINT"IT'S HERMES! HE GIVES YOU "MN$,T$(3+Q)"+"Q1:P(Q)=Q1:GOTO42 235 P(Q)=Q1:GOTO42 236 Q=RND(3):Q=Q+(CT=0)*(Q=1):Q1=P(Q+2)+RND(3):IFQ=1THENMN$="A SHIELD"ELSEIFQ=2THENMN$="ARMOR"ELSEMN$="A "+T$(CT) 237 PRINT"IT'S ATHENA! SHE GIVES YOU",MN$"+"Q1:P(Q+2)=Q1:GOTO42 238 PRINT"YOU HAVE FOUND AN ALTAR. YOU","CAN PRAY,IGNORE OR DESECRATE IT" 239 GOSUB22 240 IFQ$="P"THEN245 241 IFQ$="D"THEN262 242 PRINT"IGNORE" 243 IFRND(Z+20)<16ORCC(3)>0THEN42 244 FORQ=0TO10:CC(Q)=0:NEXT:GOTO42 245 PRINT"PRAY",,"OFFER GOLD, OR JUST PRAY" 246 GOSUB22 247 IFQ$="O"THEN252 248 IFQ$<>"P"ANDQ$<>"J"THEN246 249 PRINT"JUST PRAY":Q=RND(5):IFQ=1ANDCC(3)<1THENPRINT"CHEAPSKATE":GOTO244 250 IFQ<5THEN42ELSEQ1=RND(10)+5 251 PRINT"YOUR PRAYER HAS BEEN ANSWERED":Q=RND(11)-1:CC(Q)=CC(Q)+Q1:GOTO42 252 A$="":PRINT"HOW MUCH OF YOUR"G"GOLD ";:GOSUB23:IFQ<0ORQ>G THENPRINT"TRY AGAIN":GOTO252 253 IFG=0THEN249ELSEG=G-Q 254 IFP(3)>-1ANDP(4)>-1ANDP(5)>-1THEN259 255 PRINT"LEAVE YOUR CURSED (1)ARMOR","(2)SHIELD, OR (3) WEAPON":GOSUB22:Q1=VAL(Q$):IFQ1>3ORQ1<1THEN259 256 IF-Z>P(Q1+2)*5THENPRINT"TRY AN ALTAR BELOW"-P(Q1+2)*5:GOTO42 257 IF-Q>P(Q1+2)*1E3THENPRINT"TRY BEING MORE GENEROUS","SAY"-1E3*P(Q1+2):GOTO42 258 IFP(Q1+2)>-1THENPRINT"THAT ITEM IS NOT CURSED":GOTO42ELSEP(Q1+2)=0:GOTO42 259 IFQ<(RND(50)+50)*Z ANDQ0THENPRINT"YOU HAVE"HC"LEFT":RETURNELSERETURN 273 B9=0:MN=RND(5*(3+(Z<5)+(Z>16)))+5*INT(Z/4.1+(Z>4))-1:IFCC(7)>0ANDINT(MN/5)=MN/5ANDRND(3)>2THEN273 274 IFTR=4THENMN=24:B9=3 275 A$="":FORQ=1TO!(455680+32*MN):A$=A$+CHR$(!(455680+32*MN+Q)):NEXT 276 MN$=MID$(A$,6):IFMN=21THENB9=24 277 ML=INT((RY+Z)/2)+Z+3-(Z>10)-RND(5-2*(Z>10)):ML=ML+(ML<1)*(ML-1):ML=ML-(L>Z+1)-(Z=1)*(ML>1):Q=0:ML=ML+3*(ML<5)*(MN>18):IFMN=24ANDTR>1THENMN$=MN$+"LORD " 278 IFB9>21ANDMN<>21THENML=DA 279 IF RIGHT$(MN$,1)=" "THENML=ML+2 280 IFMN<99THENPRINT"YOU HAVE ENCOUNTERED A LEVEL",ML;MN$:IFRND(6)+(C(4)<9)+(C(4)<4)-(C(4)>12)-(C(4)>17)>RND(6)ORMN=5THENDA=-9 281 IFCC(2)>0THEN292 282 MH=0:FORR=1TOML:MH=MH+RND(8):NEXT:MA=VAL(MID$(A$,3,1)):MD=VAL(MID$(A$,4,2)):IFMN=1ANDMH>5THENMH=MH-4 283 M9=MH:MA=MA+(MA=1)*((ML>5)+(ML>10)):HM=19-INT(L/(5-CT))-VAL(LEFT$(A$,2))-2*(CC(11)>0):IFHM>20THENHM=20ELSEIFHM<2THENHM=2 284 HM=HM-(C(0)<9)-(C(0)<6)-(C(0)<4)+(C(0)>13)+(C(0)>15)+(C(0)>17)*(RND(2)-1)-P(5):IFCC(9)<1ORMN/5=INT(MN/5)ORMN>21ORRND(C(5))+L-ML<=FND(X)THEN286 285 PRINT"IT RUNS AWAY IN TERROR":GOTO359 286 CH=14-ML+2*CT+P(4)+P(3)+(CT=0)+(C(4)<4)+(C(4)<6)+(C(4)<9)-(C(4)>12)-(C(4)>15)-(C(4)>17)+2*(CC(11)>0):IFCH<2THENCH=2ELSEIFCH>20THENCH=20 287 IN Y=2 1130 NEXT Y 1140 PRINT#-2 1150 NEXT X 1160 PRINT#-2:PRINT#-2 1170 PRINT#-2,TAB(10);"HORIZONTAL WALLS";TAB(50);"VERTICAL WALLS" 1180 PRINT#-2,STRING$(79,"-") 1190 FOR X=0 TO 3 1200 PRINT#-2,TAB(10);"'";WN$(X);"'";"<==>";W$(X); 1210 PRINT#-2,TAB(50);"'";WE$(X);"'";"<==>";W$(X) 1220 NEXT X 1230 FOR X=1 TO 7:PRINT#-2:NEXTX 1235 NEXT FL 1240 RETURN 1250 'PRINT INDEX 1260 PRINT#-2," ";:FORX=1TO15:PRINT#-2,USING"###!";X," ";:NEXT:PRINT#-2:RETURN 1270 'RETURN 'N'= VALUE OF ROOM 1280 N=PEEK(FL*226+15*Y+X+57116):RETURN 1300 'QUIT 1310 CLS:PRINT"QUIT",,"CHECKING DUNGEON","PLEASE WAIT" 1320 GOSUB 10000 1330 IF PEEK(57355)+PEEK(57356)+PEEK(57357)=0THENPRINT"THE DARK ONE IS NOT IN THIS","DUNGEON" 1340 FOR FL=1 TO 20 1350 IF PEEK(FL*226+57357)=0THENPRINT"FLOOR"FL" DOES NOT HAVE","AN 'EXC'" 1360 NEXT 1370 PRINT"SAVE THIS DUNGEON?" 1380 GOSUB 9999 1390 IF A$<>"Y" AND A$<>"N" THEN 1380 1400 IF A$="N" THEN END 1410 PRINT"UNDER THE SAME NAME",MZN$"?" 1420 GOSUB 9999 1430 IF A$<>"Y" AND A$<>"N" THEN 1420 1440 IF A$="Y" THEN1470 1450 INPUT"ENTER NEW NAME";MZN$ 1460 IF LEN(MZN$)<1 OR LEN(MZN$)>8 THEN 1450 1470 VERIFY ON 1480 SAVEM MZN$+".DAT",57353,61877,57353 1490 PRINT"SAVED AS "MZN$ 1500 END 9999 A$=INKEY$:IFA$=""THEN9999ELSERETURN 10000 FORZ=1TO20 10010 FORX=1TO15 10020 NN=226*Z+X+57341 10030 POKENN,PEEK(NN)AND253 10040 NEXTX 10050 FORY=1TO15 10060 NN=226*Z+15*Y+57131 10070 POKENN,PEEK(NN)AND247 10080 NEXTY 10090 NEXTZ 10100 RETURN 10500 'ENTER START, END ROOM NUMBERS 10510 INPUT"WHAT FLOOR (0 TO ABORT";FL 10520 IF FL<0 OR FL>20 THEN 10510 10530 IF FL=0 THEN RETURN 10540 INPUT"STARTING AT ROOM 'X:Y' OR '#' ";RM$ 10550 GOSUB 11010:IF RM=0 THEN 10540 ELSE ST=RM 10560 INPUT"ENDING AT ROOM 'X:Y' OR '#' ";RM$ 10570 GOSUB 11010:IF RM>ST THEN EN=RM:RETURN 10580 PRINT"END EQUALS START?" 10590 GOSUB9999 10600 IF A$<>"Y"AND A$<>"N"THEN10590 10610 IF A$="Y"THEN EN=ST ELSE 10560 10620 RETURN 11000 'TRANSLATES STRING INTO A ROOM # 11010 LC=INSTR(1,RM$,":") 11020 IF LC=0 THEN RM=VAL(RM$):GOTO 11040 11030 RM=VAL(LEFT$(RM$,LC-1))+15*(VAL(MID$(RM$,LC+1))-1) 11040 IF RM>0 AND RM<226 THEN RETURN 11050 PRINT"BAD ROOM LOCATION","1 <= X <= 15, AND 1 <= Y <= 15","OR 1 <= ROOM # <= 225" 11060 RM=0:RETURN 12000 'LIST ROOM CONTENTS SUBROUTINE 12010 Y=INT(NN/15.05)+1:X=NN-15*(Y-1) 12020 CLS:PRINT"CF MN=99THENIFRND(3)>1THENPRINT"'darkness take you'":GOTO406ELSEPRINT"HE ATTACKS YOU WITH A KNIFE":GOTO304 288 IFB9>20THEN301 289 IFMN<25AND(CC(0)>0ORRND(P(1)+15)>15)THENPRINT"IT DOESN'T HEAR YOU":Q=-1:GOTO317 290 IFRND(P(2)+10)>10THEN295 291 C7=RND(6)+RND(6)+(C(5)<9)+(C(5)<4)-(C(5)>12)-(C(5)>17):IFC7>8THENPRINT"IT LOOKS GUARDEDLY AT YOU, BUT","DOESN'T ATTACK":GOTO317 292 IFCC(2)>0THENPRINT"TIME IS STOPPED":GOTO359 293 IFMH2GOSUB545:IFR>=0THEN301 298 PRINT"THE "MN$" IS CONFUSED":R=RND(6)+RND(6):IFR<6THEN301 299 IFR>8THENDA=0:FORR=1TOMA:DA=DA+RND(MD):NEXT:PRINT"IT DOES"DA" DAMAGE TO ITSELF":MH=MH-DA:IFMH<1THEN341 300 GOTO317 301 PRINT"IT ATTACKS YOU":IFRND(3)>1THEN304 302 IFMN=23THEN402 303 IFMN=99THEN406 304 DA=0:FORR=1TOMA:PRINT"STRIKE..":IFRND(20)-2*(Q$="L")>=CH-3*(CC(5)>0)-(CC(7)>0)-2*(Q$="P")+2*(CC(11)>0)THENDA=DA+RND(MD) 305 NEXT:IFDA=0THEN311 306 Q=DA:GOSUB272:IFHC<1THEN66 307 IFMN=10GOSUB543:IFR<0THENPRINT"ITS TOUCH PARALYZES YOU":GOTO297 308 IF(MN=15ORMN=20)ANDRND(2)=1ANDL>1THEN399 309 IFMN=18THENGOSUB542:IFR<0THENPRINT"IT POISONED YOU":Q=INT(ML/100*HP):GOSUB272:IFHC<1THEN65 310 GOTO315 311 IFQ$="P"ANDRND(20)1THEN314ELSEPRINT"IT MISSED ";:IFMH1ANDCT>0THENPRINT"YOU BLOCK WITH YOUR SHIELD"ELSEPRINT"YOUR ARMOR PROTECTS YOU" 315 IFRND(3)=1ANDMN=6THEN400 316 IFRND(3)=1ANDMN=11THEN401 317 PRINT"ATTACK, PARRY, LUNGE,":IFQ=0THENPRINT"BRIBE,"; 318 IFCT<2THENPRINT"CAST,"; 319 PRINT"OR EVADE":Q2=2 320 Q$=INKEY$ 321 IFQ$="A"THENPRINT"ATTACK":GOTO328 322 IFQ$="L"THENPRINT"LUNGE!":GOTO328 323 IFQ$="B"ANDQ=0THEN345 324 IFQ$="P"THENPRINT"PARRY":GOTO292 325 IFQ$="C"THEN413 326 IFQ$="E"THEN354 327 GOTO320 328 DA=0:CP=1-(L>15)*INT(L/5-3):CP=CP-(4-CP)*(CP>4) 329 FORR=1TOCP:PRINT"SWING..":IFRND(20)-P(5)-2*(Q$="L")-(Q=-1)>=HM+2*(CC(10)>2)-2*(CC(11)>0)THENDA=DA+RND(2*CT+4)+P(5)+(C(0)<4)+(C(0)<6)+(C(0)<9)-(C(0)>12)-(C(0)>15)-(C(0)>17)-2*(CC(10)>0) 330 NEXT:Q=1:DA=INT((1-.25*(Q$="L"))*DA):IFDA>0THEN333 331 PRINT"YOU MISSED ";:IFHC25ORMN=8ORMN=15ORMN=16ORMN=20)ANDP(5)21ANDMH-DA<1THENPRINT"THE "MN$" CHANGES SHAPE!":B9=B9-1:MN=RND(4)+5*(B9-21):DA=ML-1:GOTO275 337 MH=MH-DA:IFMH<1THEN341 338 IFCC(6)>0THENPRINT"'KNRSH' SAYS THE "MN$:CC(6)=0 339 IFRND(2)=1THENPRINT"IT BITES BACK" 340 GOTO292 341 Q=ML+1+(MLL+1)-(ML>L+2)-(MN=10)-(MN=15)-(MN=20)-(MN=6)-(MN=11)-(MN=8)-(MN=21)-(MN=18)-3*(MN>23):Q=-Q*(Q<21)*(10+10*(-(Q>3)-(Q>5)-(Q>6))+20*(-(Q>4)-(Q>7)-(Q>8)))-(Q>20)*(125*Q-1500) 342 CP=CT+1+3*(CT=2):Q=INT(Q*(1+.1*((C(CP)<6)+(C(CP)<9))-.05*((C(CP)>12)+(C(CP)>15)))) 343 EP=EP+Q:PRINT"IT DIED. YOU GAIN"Q" EP'S":GOSUB29:IF(MN=0ORMN=5ORMN=12ORMN=50)AND(TR=0ORTR=3)THEN145 344 IFMN=99THEN412ELSE359 345 A$="":PRINT"BRIBE/BLUFF",,"HOW MUCH OF YOUR"G"GOLD","WILL YOU GIVE THE "MN$,"TO LEAVE?","(0=BLUFF)":GOSUB23:IFQ<0THEN349 346 IFQ>G THENPRINT"YOU DON'T HAVE THAT MUCH":GOTO297 347 IFMN/5=INT(MN/5)ORMN=22ORMN=99THENPRINT"IT WON'T LISTEN":GOTO297 348 IFQ=0ANDMLL)))+10*(CC(9)>0)THENPRINT"IT IS INSULTED":GOTO297 350 G=G-Q:IFC7>11THENPRINT"THE "MN$" WHISPERS","'he IS BELOW LEVEL"Z1-1"'" 351 PRINT"IT TAKES YOUR GOLD AND" 352 PRINT"IT LEAVES" 353 POKE 15*Y+X+485,0:TR=0:GOTO145 354 DA=0:PRINT"EVADE":IFQ=-1GOSUB501:IFD=0OR(W(D)>0ANDW(D)<4)THENPRINT"YOU RAN INTO A WALL":GOTO292ELSETR=0:GOTO87 355 FORQ=1TO4:D=RND(4):IFW(D)<4ANDW(D)>0THENNEXT 356 IFW(D)>0AND W(D)<4THEN358 357 IFCC(6)>0ORC(4)+P(1)>=FND(X)THENTR=0:IFMH/M9-.2+((Q=0)/10)>=RND(0)ANDCC(6)<1THENPRINT"IT FOLLOWS YOU!":TR=-2:POKE15*Y+X+485,0:GOTO87ELSE87 358 PRINT"YOU'RE ROOTED TO THE SPOT!":GOTO292 359 POKE15*Y+X+485,0:Q=RND((ML/5+1)*(TR/2+.5))+2+(TR<>1):TR=0:IFQ=0THEN145 360 B9=INT(Z^RND(2)*5^RND(2)*RND(5))*2:FORQ1=1TOQ:Q2=0:GOSUB361:NEXT:B9=0:FORQ1=1TO100:NEXT:GOTO145 361 PRINT"YOU HAVE FOUND "; 362 T=RND(25)-1:IFQ2>0ANDT=8THEN362 363 IFT>14THENT=RND(2)+9 364 IFT<3THENT2=5ELSEIFT>11THENT2=4ELSEIFT=6THENT2=3ELSET2=T-3 365 IFT>6ANDT<12THEN376 366 T1=INT(Z/1.3)+RND(5)-3:IFT1<1THENT1=1 367 IFT<>4ANDT<12THENPRINT"A "; 368 PRINT"MAGIC "T$(T);:IFT>11THENPRINT,"ARMOR"; 369 PRINT"+"T1 370 IF(T<3ANDT<>CT)OR(T>11ANDT<>CT+12)OR(T=6ANDCT=0)THENPRINT"TOO BAD YOU CAN'T USE IT":RETURN 371 IFP(T2)<0ORT1<=P(T2)THENPRINT"YOU LIKE THE ONE YOU HAVE":RETURN 372 PRINT"DO YOU WANT TO KEEP IT?":IFRND(25)=1ANDT2>2THENT1=-RND(3):IFCC(4)>0THENPRINT"'BEWARE' A VOICE WHISPERS":CC(4)=CC(4)-1 373 GOSUB22 374 IFQ$<>"Y"ANDQ$<>"K"THENPRINT"LEAVE IT":RETURN 375 PRINT"KEEP":P(T2)=T1:RETURN 376 IFT=7THENPRINT"A MAGIC "T$(7):CC(1)=CC(1)+RND(10)+10:RETURN 377 IFT>8THEN388 378 DA=0:IFRND(Z+10)>9THENDA=1 379 PRINT"A CHEST. OPEN OR IGNORE IT?" 380 IFCC(4)>0ANDDA=1THENPRINT"'BEWARE THE CHEST'","A VOICE WHISPERS":CC(4)=CC(4)-1 381 GOSUB22 382 IFQ$="O"THEN384 383 PRINT"IGNORE":RETURN 384 PRINT"OPEN":B9=B9+100:IFDA=0THEN387 385 IFRND(C(1)+C(4))>5*INT(Z/5+1)THENPRINT"YOU DEFUSE THE CHEST":GOTO387 386 Q2=RND(2*Z):HC=HC-Q2:PRINT"KABOOM! THE CHEST EXPLODES","YOU LOSE"Q2"HIT POINTS":IFHC<1THEN66 387 FORQ2=1TORND(4):GOSUB361:NEXT:RETURN 388 IFT>9THEN397 389 PRINT"A BOOK","READ OR IGNORE?" 390 GOSUB22 391 IFQ$<>"R"THEN383 392 DA=RND(3)*SGN(C(1)+C(2)-2*FND(X)-(Z>L)) 393 IFRND(3)=1ORDA=0THENPRINT"YOU CAN'T READ IT":RETURN 394 Q3=RND(6)-1:DA=DA+(4+DA)*(C(Q3)<3)*(DA<1):PRINT"YOUR"MID$(Q1$,Q3*4+1,4)" JUST WENT ";:D=C(Q3)+DA-20:IFD>0ANDRND(D)>1THENDA=-ABS(DA) 395 IFDA>0THENPRINT"UP";ELSEPRINT"DOWN"; 396 PRINTABS(DA):C(Q3)=C(Q3)+DA:RETURN 397 DA=-INT(Z^RND(2)*5^RND(2)*RND(T-6))*(B9>0):PRINTT$(T),"WORTH"DA:G=G+DA:B9=B9-DA:IFDA>0THENRETURNELSEIFT=11THENPRINT"THEY'RE GLASS"ELSEPRINT"IT'S REALLY GILDED LEAD" 398 RETURN 399 Q1=1-(MN=20):L=L-Q1:PRINT"THE "MN$" DRAINS"Q1," ENERGY LEVEL(S)":CP=1-(CT=0)+(CT=1):EP=INT(FNP(L+1)*.9):FORQ1=1TOQ1:FORQ=0TO3:S(Q)=S(Q)+(S(Q)>0):NEXTQ:HP=HP-RND(2)-CT:NEXTQ1:IFL<1ORHP<1THEN66ELSE317 400 PRINT"THE "MN$" SINGS HER SONG OF","DEATH":GOSUB541:IFR>=0THENPRINT"YOU IGNORE IT":GOTO317ELSEPRINT"YOU FALL UNDER HER SPELL":GOTO304 401 PRINT"THE "MN$" LOOKS JUST","LIKE YOU":IFRND(C(2))>FND(X)THENPRINT"YOU SEE THROUGH HIS DISGUISE":GOTO317ELSEPRINT"YOU'RE CONFUSED":GOTO304 402 PRINT"THE "MN$" USES ITS WHIP":DA=INT(ML/2)+RND(6)+RND(6)*2:GOTO306 403 PRINT"THE "MN$" BREATHES FIRE AT YOU":DA=MH:B9=B9-1:R=16-INT(2.5*INT(L/(5.1-CT)))+(CT=2):IFR<2THENR=2ELSEIFR>20THENR=20 404 IFR<=RND(20)THENDA=INT(DA/2)+1 405 GOTO306 406 Q=RND(4):ONQ GOTO407,408,409,411 407 PRINT"HIS EYES SHOOT FIRE AT YOU":DA=0:FORR=1TOINT(ML/5.1+1):DA=DA+RND(6)+1:NEXT:GOTO306 408 PRINT"HE THROWS LIGHTNING AT YOU":DA=0:FORR=1TOML:DA=DA+RND(4):NEXT:GOTO410 409 PRINT"HE THROWS A FIREBALL AT YOU":DA=0:FORR=1TOML:DA=DA+RND(6):NEXT 410 GOSUB541:DA=INT(DA/(1-(R>=0))+1):GOTO306 411 PRINT"HE SUMMONS A DEMON":A$="01112DEMON":MN=50:GOTO276 412 PRINT"YOU BITE OFF HIS FINGER AND","TAKE THE RING":RN=1:POKE 15*Y+X+485,0:! FNPK(Q),!(FNPK(Q))AND16:TR=0:GOTO42 413 PRINT"LEVEL";:GOSUB22 414 Q=VAL(Q$):PRINTQ:IFQ=0THEN427 415 IFQ<0ORQ>4THEN413 416 IFS(Q-1)<1THENPRINT"YOU HAVE NO LEVEL"Q,"SPELLS LEFT":GOTO427 417 PRINT"SPELL#";:GOSUB22 418 Q1=VAL(Q$):PRINTQ1:IFQ1>-1ANDQ1<7+2*(CT=1)THEN423 419 PRINT"SPELLS FOR THAT LEVEL ARE:" 420 FORQ1=0TO5+2*(CT=1) 421 PRINTQ1+1":";:IFCT=1THENPRINTSC$(Q1,Q-1)ELSEPRINTSM$(Q1,Q-1) 422 NEXT:PRINT:GOTO417 423 IFQ1=0THEN427 424 S(Q-1)=S(Q-1)-1:DA=0 425 IFCT=1THENPRINTSC$(Q1-1,Q-1):ON4*Q-4+Q1 GOTO428,430,431,433,439,440,441,442,450,451,455,456,462,464,467,438 426 PRINTSM$(Q1-1,Q-1):ON6*Q-6+Q1 GOTO473,475,479,480,428,430,488,491,493,495,496,497,493,498,499,442,508,455,509,519,523,531,532,533 427 IFQ2=1THEN44ELSE320 428 CC(7)=CC(7)+6-6*(CT=1)-L*(CT=2):GOTO427 429 IFQ2=1THEN44ELSE292 430 CC(1)=CC(1)+6-6*(CT=1)-L*(CT=2):GOTO427 431 HC=HC+RND(4)+3:IFHC>HP THENHC=HP 432 GOTO427 433 PRINT"BEGONE VILE CREATURE!" 434 IFQ2=1THENPRINT"THERE'S NOTHING THERE":GOTO438ELSES(0)=S(0)+1 435 IFMN/5<>INT(MN/5)THEN437 436 IFL-ML>2THEN454ELSEIFL-ML>0ORRND(6)+RND(6)>=2*(ML-L)+7THEN285 437 PRINT"THE "MN$" SCORNS YOUR WORDS":GOTO292 438 PRINT"YOU JUST WASTED A LEVEL"Q,"SPELL":GOTO429 439 CC(4)=CC(4)+2:GOTO427 440 CC(0)=CC(0)+12:GOTO427 441 CC(3)=CC(3)+12:GOTO427 442 IFQ2=1THEN438 443 GOSUB545:IFMN/5=INT(MN/5)ORR>=2THENPRINT"SPELL FAILED":GOTO292 444 PRINT"THE "MN$" IS HELD":DA=1 445 PRINT"KILL OR EVADE?" 446 GOSUB22 447 IFQ$<>"K"THENQ=-1:GOTO354ELSEIFCT=1THENDA=RND(3)+RND(3)+RND(3)+9+P(5):GOTO334 448 GOSUB545:IF(R>=2ANDDA=1)OR(RND(0)<=.125-.125*((ML>4)-(ML>7)-(MN=24))ANDDA=0)THENPRINT"IT BROKE FREE":GOTO292 449 PRINT"YOU SLIT IT'S THROAT":GOTO341 450 HC=HC+RND(4)+3:GOTO431 451 IFQ2=1THEN438 452 IFMN/5<>INT(MN/5)THEN437 453 GOSUB545:IFR>=2THEN437 454 PRINT"THE "MN$" IS DISPELLED INTO","THIN AIR":GOTO341 455 CC(1)=999:GOTO427 456 IFQ2=1THEN438 457 IFMN/5=INT(MN/5)THENPRINT"THE UNDEAD DON'T GET SICK":GOTO292 458 GOSUB545:IFR>=0THENPRINT"IT JUST HAD ITS SHOTS":GOTO292 459 PRINT"IT CATCHES THE BLACK PLAGUE":DA=RND(6)+RND(6):HM=HM-2:CH=CH+2 460 IFRND(100)<=30-L*5AND(CC(11)<1)GOSUB541:IFR<0THENPRINT"YOU CATCH IT TOO!":CC(11)=RND(50)+50:PRINT"IF YOU CAN'T GET OUT OF THE","DUNGEON IN"CC(11)-1" TURNS YOU","WILL DIE" 461 GOTO334 462 PRINT"BY THE "STRING$(5,128)" DIE!":IFQ2=1THEN438 463 GOSUB545:IFR>=2*(MN/5<>INT(MN/5))THEN437ELSE341 464 PRINT"DIE VILE CREATURE!","ZZAPP!!":IFQ2=1THEN438 465 GOSUB546:IFR>=2*(MN/5=INT(MN/5))THEN437 466 IFRND(100)<30-L*5THENPRINT"THE SPELL BACKFIRED":GOSUB542:IFR>=0THENPRINT"YOU RESISTED IT"ELSE66ELSE341 467 IFQ2=1THEN438 468 PRINT"A WALL OF STEEL ENCIRCLES YOU" 469 Q=RND(5):IFMN=99THENQ=2 470 IFQ=1ORMN=0ORMN=22THENPRINT"THE "MN$" TRIES TO","REACH YOU":DA=0:FORR=1TOINT(L/5.1+1):DA=DA+RND(6)+4:NEXT:GOTO530 471 IFQ>2THENPRINT"THE "MN$" GETS BORED","AND ";:GOTO352 472 PRINT"THE "MN$" IS PATIENT","YOUR SPELL WEARS OFF":GOTO292 473 IFQ2=1THEN438 474 DA=0:FORR=1TO2*INT(L/5.1)+1:DA=DA+RND(4)+3:NEXT:GOTO334 475 IFQ2=1THEN438 476 IFMN/5=INT(MN/5)THENPRINT"YOU CAN'T CHARM THE UNDEAD"GOTO292 477 GOSUB545:IFR>=2*(ML-4)*(ML>4)ORMN=9ORMN=99THENPRINT"IT DOESN'T THINK YOU'RE","CHARMING":GOTO292 478 PRINT"THE "MN$" IS CHARMED":DA=1:GOTO484 479 CC(5)=CC(5)+2:GOTO427 480 IFQ2=1THEN438 481 IFMN/5=INT(ML/5)THENPRINT"THE UNDEAD DON'T SLEEP":GOTO292 482 GOSUB545:IFR>=0ORMN=11ORMN=99ORML>5THENPRINT"IT'S NOT SLEEPY":GOTO292 483 PRINT"THE "MN$" IS ASLEEP":DA=0 484 PRINT"KILL OR EVADE" 485 GOSUB22 486 IFQ$<>"K"THENQ=-1:GOTO354 487 PRINT"KILL":IFRND(100)<10*(L-ML)*(DA=0)-(RND(11)+9)*(DA=1)THENPRINT"IT WOKE UP!":GOTO292ELSE449 488 IFQ2=1THEN438 489 GOSUB545:IFR>=0ORMN>24THENPRINT"THE "MN$" IS UNEFFECTED":GOTO292 490 DA=0:FORR=1TOMA:DA=DA+RND(MD):NEXT:PRINT"THE "MN$" BELIEVES","IT IS BEING ATTACKED","IT DOES"DA" DAMAGE TO ITSELF":GOTO337 491 IFQ2=1THEN438 492 IFRND(100)>90ORMN=15THENPRINT"YOU MISSED THE "MN$:GOTO292ELSEPRINT"THE "MN$" IS WEBBED":DA=0:GOTO445 493 IFQ2=1THEN438 494 DA=0:FORR=1TOL:DA=DA+RND(4)+2-2*(Q1=1):NEXT:GOSUB545:DA=INT(DA/(1-(R>=0))+1):GOTO334 495 CC(10)=CC(10)+6+L:GOTO427 496 CC(8)=CC(8)+6+L:GOTO427 497 CC(6)=999:GOTO427 498 IFQ2=1THEN438ELSEC9=12:GOTO292 499 GOSUB501 500 IFD=0THENPRINT"THAT IS SOLID ROCK":GOTO429ELSE90 501 PRINT"DIRECTION?":D=5 502 Q$=INKEY$ 503 IFQ$="^"THEND=1:IFY=15THEND=0 504 IFQ$=CHR$(9)THEND=2:IFX=15THEND=0 505 IFQ$=CHR$(10)THEND=3:IFY=1THEND=0 506 IFQ$=CHR$(8)THEND=4:IFX=1THEND=0 507 IFD=5THEN502ELSERETURN 508 CC(9)=CC(9)+6+L:IFQ1=1THEN44ELSE489 509 GOSUB501 510 PRINT"UP OR DOWN?" 511 Q$=INKEY$:IFQ$<>"U"ANDQ$<>"D"THEN511ELSEPRINTQ$ 512 IF RN=1THENPRINT"THE SPELL ACTS STRANGELY":Q$="":IFRND(3)=1THENQ$="D" 513 X=X+RND(5)*((D=4)-(D=2)):Y=Y+RND(5)*((D=3)-(D=1)) 514 Z=Z+RND(5)*((Q$="U")-(Q$="D")) 515 Z=Z+(Z-20)*(Z>20)+(Z-1)*(Z<1) 516 X=X+(X-15)*(X>15)+(X-1)*(X<1) 517 Y=Y+(Y-15)*(Y>15)+(Y-1)*(Y<1) 518 GOTO36 519 IFQ2=1THEN438 520 Q$="":FORDA=1TO5:Q$=Q$+CHR$(RND(26)+96):NEXT:PRINTTAB(5);Q$ 521 GOSUB546:IFR<0THEN341ELSEGOSUB546:IFR<0THEN437 522 PRINT"THE SPELL BACKFIRED":GOSUB542:IFR>=0THENPRINT"YOU RESISTED IT":GOTO292ELSE66 523 IFQ2=1THEN438ELSEPRINT"YOU ARE SURROUNDED BY A WALL OF ICE" 524 IFML<4THENQ=3:GOTO471 525 Q=RND(5):IFMN=99ORQ=2THEN472 526 IFQ>2ANDMN>0ANDMN<>22THEN471ELSEPRINT"THE "MN$" TRIES TO REACH YOU" 527 IFQ1=3AND(MN/5=INT(MN/5)ORMN=19)THENPRINT"UNFORTUNATELY "MN$"S DON'T","MIND THE COLD":GOTO292 528 IFQ1=5AND(MN=23ORMN=24ORMN=50)THENPRINT"UNFORTUNATELY "MN$"S ARE","FIREPROOF":GOTO292 529 DA=0:FORR=1TO(1+(Q1=5)*((MN/5=INT(MN/5)+(MN=19))-(Q1=3)*(MN>22)*(MN<99)))*INT(L/3.1+1):DA=DA+RND(6):NEXT 530 PRINT"IT SUFFERS"DA "DAMAGE POINTS":GOTO337 531 CC(2)=CC(2)+6+L:GOTO429 532 IFQ2=1THEN438ELSEPRINT"FLAMES SURROUND YOU":GOTO524 533 IFRND(100)>=5*(ML+4-L)THEN536 534 PRINT"THE DEMON IS ";:IFRND(2)=1THENPRINT"TAKING A BATH"ELSEPRINT"ASLEEP" 535 GOTO429 536 PRINT"THE DEMON APPEARS" 537 IFQ2=1ORMN=99THENA$="01112DEMON":MN=50:GOTO276ELSEPRINT"THE DEMON DEMOLISHES THE",MN$ 538 IFRND(100)>=5*(ML+2-L)THENPRINT"YOU DISPELL THE DEMON":GOTO145ELSEQ2=1:GOTO537 539 PRINT"YOU MADE IT OUT OF THE MINES":FORQ=0TO200:NEXT:EP=EP+G:GOSUB29:GOSUB34:G=0:FORX=0TO11:CC(X)=0:NEXT:HC=HP:GOSUB28:IFRN=0THEN16 540 PRINT"AND YOU RECOVERED THE RING!","YOU, "NA$", JOIN THE RANKS","OF THE HEROES OF OLD!":POKE65496,0:END 541 R=15-INT((2.5-(CT=0)+.5*(CT=2))*INT(L/(5.1-CT)))-(CT=2)-(C(2)<4)-(C(2)<6)-(C(2)<9)+(C(2)>12)+(C(2)>15)+(C(2)>17):GOSUB547:R=R-(CC(7)>0):RETURN 542 R=12-INT((2.5+.5*(CT=2))*INT(L/(5.1-CT)))+(CT=1)-(CT=0):GOSUB547:R=R-(CC(7)>0):RETURN 543 R=14-INT((2.5+.5*(CT=2))*INT(L/(5.1-CT))):GOSUB547:R=R-(CC(7)>0):RETURN 544 R=16-INT(2.5*INT(L/(5.1-CT)))+(CT=2):GOSUB547:R=R-(CC(7)>0):RETURN 545 R=16-2*INT(ML*(1-(MN=11)-(MN=16)-(MN=21))/3.1):GOSUB547:R=R-2*(MN=6):RETURN 546 R=12-2*INT(ML/3.1):GOSUB547:RETURN 547 IFR<2THENR=2ELSEIFR>20THENR=20 548 R=RND(20)-R:RETURN :RETURN 544 R=16-INT(2.5*INT(L/(5.1-CT)))+(CT=2):GOSUB547:R=R-(CC(7)>0):RETURN 545 R=16-2*INT(ML*(1-(MN=11)-(MN=16)-(MN=21))/3.1):GOSUB547:R=R-2*(MN=6):RETURN 546 R=12-2*INT(ML/3.1):GOSUB547:RETURN 547 IFR<2THENR=2ELSEIFR>20THENR=20