Compucolor.org – Virtual Media

Listing of file='QST16.BAS;01' on disk='vmedia/chip_33-sector.ccvf'

10 PLOT 15:GOTO 145
15 LN= LN+ 1:IF LN< Y0+ H0THEN PLOT 3,X0,LN:RETURN
20 A1= CALL (0)
25 PLOT 3,X0,Y0+ H0- 1:PRINT SPC( W0)"":PLOT 3,X0,Y0+ H0- 1
30 RETURN
35 GOSUB 140
40 A6= 28672+ 128* Y0+ X0+ X0:A2= A5+ 2:GOSUB 135
45 A6= 128- W0- W0:A2= A5+ 25:GOSUB 135
50 POKE A5+ 5,H0- 1:POKE A5+ 7,W0* (A3+ 1):POKE A5+ 19,35* (1- A3)
55 RETURN
60 GOSUB 140:RESTORE 65
65 DATA 33,-1,-1,6,-1,14,-1,17,128,0,25,126
70 DATA 17,128,255,25,119,35,-1,13,194,-1,-1
75 DATA 17,-1,-1,25,5,194,-1,-1,201
80 IF A5> 65503THEN A5= A5- 32:GOTO 100
85 FOR I= 1TO 32:READ A1
90 IF A1> = 0AND A1< > PEEK (A5+ I)THEN I= 32:A5= A5- 32
95 NEXT
100 RESTORE 65
105 FOR I= 1TO 32:READ A1:POKE A5+ I,A1- (A1< 0):NEXT
110 A6= A5+ 1:A2= 33283:GOSUB 135
115 A6= A5:A2= A4:GOSUB 135
120 A6= A5+ 6:A2= A5+ 30:GOSUB 135
125 A6= A5+ 8:A2= A5+ 22:GOSUB 135
130 GOTO 155
135 A7= INT (A6/ 256):POKE A2,A6- 256* A7:POKE A2+ 1,A7:RETURN
140 A4= 32940:A5= 256* PEEK (A4+ 1)+ PEEK (A4):RETURN
145 FOR I= 1TO PEEK (33209):X= RND (1):NEXT
150 GOTO 60
155 CLEAR 100
160 DIM SP(6)
165 DEF FN R(R)= INT (R* RND (1))
170 GOTO 195
175 GOSUB 530
180 IF HC< = 0THEN GOSUB 15:PRINT "YOU DIED!!":GOTO 2430
185 RETURN
190 FOR I= 1TO 10:GOSUB 15:PRINT :NEXT :RETURN
195 PLOT 8,12,3,0,12:INPUT "TYPE NEW OR OLD GAME  ";X$
200 IF LEFT$ (X$,1)= "O"GOTO 295
205 IF LEFT$ (X$,1)= "N"GOTO 225
210 GOTO 195
215 X0= 0:Y0= 19:H0= 10:W0= 64:A3= 1:LN= 18:GOSUB 35
220 PLOT 12,27,4:PRINT "LOAD CAST16.DSP":PLOT  27,27:RETURN
225 GOSUB 215:GOSUB 15:INPUT "CHARACTER NAME (NO SPACES!)= ";C1$
230 C1$= LEFT$ (C1$,15):C$= LEFT$ (C1$,6)
235 GOSUB 15:PRINT :GOSUB 15:PRINT "YOU START LIFE WITH 500 GOLD."
240 GP= 500:CA= 10:AC= 10:EX= 0:DL= 1:DH= 2
245 CQ= 1:CL= 1:WT= 1000+ 100* FN R(10)
250 XP= 0:HP= 30+ FN R(10):C0= 18- CL
255 FOR I= 1TO 6:SP(I)= 0:NEXT
260 CA= AC- SH- AR:GOSUB 435
265 GOSUB 530:GOSUB 445:GOSUB 530:GOSUB 800:GOSUB 590
270 T= .1:LN= 18:GOSUB 15:INPUT "DIFFICULTY LEVEL (1-3)?  ";LV
275 IF LV< 1OR LV> 3GOTO 270
280 XF= 1:IF CL> LV+ 1THEN GOSUB 15:PRINT "TOO EASY--TRY AGAIN":GOTO 270
285 IF CL> LVTHEN XF= LV/ CL
290 GOSUB 530:GOTO 330
295 PLOT 8,12:INPUT "ENTER OLD NAME: ";C1$
300 C$= LEFT$ (C1$,6):FILE "R",1,C$,1:GET 1,1,1;C1$[16],WP$[16]
305 GET 1,1,33;CL,WT,SP(1),SP(2),SP(3),SP(4),SP(5),SP(6),WP,HP,AC,GP,EN,SH
310 GET 1,1,89;AR,WA,MW,XP,CQ
315 FILE "C",1
320 PLOT  8:PLOT 27,4:PRINT "DEL ";C$;".RND;1":PLOT 27,27
325 GOSUB 215:GOTO 260
330 GOSUB 190
335 X0= 0:Y0= 19:H0= 10:W0= 40:A3= 1:GOSUB 35:LN= 18
340 FOR I= 20TO 29:PLOT 3,42,I:PRINT "                     ":NEXT
345 PLOT 3,42,20:PRINT "COMMANDS:"
350 PLOT 3,44,21:PRINT "1- MOVE TO ROOM"
355 PLOT 3,44,22:PRINT "2- ENTER ''"
360 PLOT 3,44,23:PRINT "3- LEAVE ''"
365 PLOT 3,44,24:PRINT "4- CAST SPELL"
370 PLOT 3,44,25:PRINT "5- FIGHT"
375 PLOT 3,44,26:PRINT "6- OPEN CHEST"
380 PLOT 3,44,27:PRINT "7- GET TREASURE"
385 PLOT 3,44,28:PRINT "8- DROP  ''"
390 PLOT 3,44,29:PRINT "9- QUIT GAME"
395 GOSUB 15:PRINT :GOSUB 15:INPUT "COMMAND? ";Z
400 IF Z< 1OR Z> 9THEN GOSUB 15:PRINT "INVALID":GOTO 395
405 IF Z= 9GOTO 2355
410 ON ZGOSUB 1475,1585,1650,1690,1890,2125,2215,2290
415 IF SQ= 1THEN GOSUB 970
420 IF T= 0GOTO 1110
425 IF E= 1THEN E= 0:GOTO 340
430 GOTO 395
435 GOSUB 15:PRINT "SUPPLIES=50 GP."
440 FOR I= 1TO 1000:NEXT :GOSUB 190:GP= GP- 50:GOSUB 15:PRINT :HC= HP:RETURN
445 LN= 18
450 GOSUB 15:PRINT "ARMOR:";TAB( 10);"CLASS";TAB( 16);"COST"
455 GOSUB 15:PRINT "0-   NONE (10)= 0"
460 GOSUB 15:PRINT "1-LEATHER ( 8)= 100"
465 GOSUB 15:PRINT "2-  CHAIN ( 6)= 300"
470 GOSUB 15:PRINT "3-  PLATE ( 4)= 500"
475 GOSUB 15:INPUT "BUY SHIELD=50 GP (Y/N)? ";X$
480 IF X$= "Y"AND SH= 1THEN GOSUB 15:PRINT "YOU ALREADY HAVE ONE":GOTO 495
485 IF X$= "Y"AND SH= 0THEN GP= GP- 50:EN= EN+ 50:GOSUB 530:SH= 1:GOTO 495
490 IF X$< > "N"GOTO 475
495 GOSUB 15:INPUT "ARMOR TYPE (0,1,2,3)? ";X:IF X< 0OR X> 3GOTO 495
500 IF X> 0THEN EN= EN- WA
505 IF X= 0GOTO 525
510 IF GP< 200* X- 100THEN GOSUB 15:PRINT "TOO LITTLE GOLD":GOTO 495
515 AC= 10- 2* X:GP= GP- (200* X- 100):WA= 100* X
520 IF X< > 0THEN EN= EN+ WA
525 CA= AC- SH- AR:GOSUB 190:RETURN
530 C1$= LEFT$ (C1$,15)
535 FOR J= 1TO 18:PLOT 3,54,J:PRINT "          ":NEXT J
540 PLOT 3,49,1:PRINT "";C1$;"":PLOT 3,54,2:PRINT CL
545 PLOT 3,54,3:PRINT "";LV:PLOT 3,54,4:PRINT "";GP
550 PLOT 3,54,5:PRINT "";XP:PLOT 3,54,6:PRINT "";WT
555 PLOT 3,54,7:PRINT "";CA:PLOT 3,54,8:PRINT "";HP
560 PLOT 3,54,9:PRINT "";HC:PLOT 3,54,11:PRINT "";SP(1)
565 PLOT 3,54,12:PRINT SP(2):PLOT 3,54,13:PRINT SP(3)
570 PLOT 3,54,14:PRINT SP(4):PLOT 3,54,15:PRINT SP(5)
575 PLOT 3,54,16:PRINT SP(6):PLOT 3,51,17:PRINT "";WP$
580 PLOT 3,54,18:PRINT EN
585 RETURN
590 GOSUB 190
595 LN= 18
600 GOSUB 15:PRINT "SELECT SPELLS:"
605 GOSUB 15:PRINT " #1= 50 GP"
610 GOSUB 15:PRINT " #2=100 GP"
615 GOSUB 15:PRINT " #3=150 GP"
620 GOSUB 15:PRINT " #4=200 GP"
625 GOSUB 15:PRINT " #5=250 GP"
630 GOSUB 15:PRINT " #6=300 GP"
635 X0= 0:Y0= 27:H0= 3:W0= 64:A3= 1:LN= 26:GOSUB 35
640 GOSUB 15:INPUT "SPELL # (0= DONE) ";X:IF X= 0THEN GOSUB 190:GOTO 675
645 IF X< 1OR X> 6GOTO 640
650 GOSUB 15:INPUT "HOW MANY? ";Y
655 IF X< 1OR X> 6GOTO 640
660 IF Y< 1GOTO 640
665 IF GP- 50* X* Y< 0THEN GOSUB 15:PRINT "TOO LITTLE GOLD":GOTO 640
670 GP= GP- 50* X* Y:SP(X)= SP(X)+ Y:EN= EN+ 10* Y:GOSUB 1220:GOSUB 530:GOTO 640
675 X0= 0:Y0= 19:H0= 10:W0= 64:A3= 1:GOSUB 35:GOSUB 190
680 RETURN
685 RM= 0:RX= 0:RT= 0
690 Y= FN R(20)+ 1:X= FN R(100):IF X< 70THEN RT= Y
700 X= FN R(100):IF RT< > 0AND X< 60THEN GOSUB 765
705 X= FN R(100):IF RT= 0AND X< 40THEN GOSUB 765
710 DR$= "U":X= FN R(100):IF X< 25THEN DR$= "L"
720 Y= FN R(10)+ 1:X= FN R(100):IF X< 30THEN RX= Y
725 IF RT> 0AND RM= 0AND X< 60THEN RX= Y
735 IF RT= 0AND RM> 0AND X< 10THEN RX= 0
740 IF RT> 0AND RX= 0AND RM= 0AND X< 40THEN RX= FN R(4)+ 7
745 IF DR$= "L"AND RX< 3THEN RX= FN R(8)+ 3
750 IF RT= 0AND RX> 6THEN RX= FN R(4)+ 3
755 IF RX= 5OR RX= 6THEN RM= 0
760 RETURN
765 X= FN R(100)+ 1:RM= FN R(10)+ 1
770 IF LV= 1THEN Y= 70:Z= 95
775 IF LV= 2THEN Y= 20:Z= 70
780 IF LV= 3THEN Y= 10:Z= 40
785 IF X> YTHEN RM= FN R(10)+ 11
790 IF X> ZTHEN RM= FN R(10)+ 21
795 RETURN
800 LN= 18
805 GOSUB 15:PRINT "WEAPON: 0=NO CHANGE"
810 GOSUB 15:PRINT "CHOICE REPLACES CURRENT ONE"
815 GOSUB 15:PRINT "VALUES ARE: DAMAGE/WT/GOLD"
820 GOSUB 15:PRINT "1-SHORT SWORD (1-6 / 50/ 50)"
825 GOSUB 15:PRINT "2-MACE        (2-7 /100/ 75)"
830 GOSUB 15:PRINT "3-LONG SW.    (2-8 / 70/100)"
835 GOSUB 15:PRINT "4-BROAD SW.   (1-10/ 90/150)"
840 GOSUB 15:PRINT "5-BASTARD SW. (2-12/100/200)"
845 GOSUB 15:INPUT "SELECT ";X
850 IF X< 0OR X> 5GOTO 845
855 IF X> 0THEN WP= X
860 IF WP= 0THEN GOSUB 15:PRINT "FISTS=1-2 PTS":FOR I= 1TO 500:NEXT :RETURN
865 RESTORE 1240:FOR J= 1TO WP:READ WP$,DL,DH,WW,WG:NEXT J
870 IF X> 0THEN IF GP- WG< 0THEN GOSUB 15:PRINT "TOO LITTLE GOLD":GOTO 845
875 IF X> 0THEN GP= GP- WG:EN= EN+ WW:GOSUB 1220
880 GOSUB 190:GOSUB 530:LN= 18
885 RETURN
890 GOSUB 15:PRINT "ZAP! SHOCK!"
895 X= FN R(10)+ 3:HC= HC- X:GOSUB 175
900 GOSUB 15:PRINT "DAMAGE=";X;"":RX= 0
905 RETURN
910 GOSUB 15:PRINT "BOOM!! EXPLOSION!"
915 X= FN R(13)+ 4:HC= HC- X:GOSUB 175
920 GOSUB 15:PRINT "DAMAGE=";X;"":RX= 0
925 RETURN
930 GOSUB 15:PRINT "ARROWS FLY. PAIN!!"
935 X= FN R(12)+ 1:HC= HC- X:GOSUB 175
940 GOSUB 15:PRINT "DAMAGE=";X;"":RX= 0
945 RETURN
950 GOSUB 15:PRINT "STRUCK BY LIGHTNING!"
955 X= FN R(10)+ 11:HC= HC- X:GOSUB 175
960 GOSUB 15:PRINT "DAMAGE=";X;"":RX= 0
965 RETURN
970 IF SQ= 1GOTO 990
975 GOSUB 15:PRINT "CLICK! DOOR LOCKED!":DR$= "L"
980 GOSUB 15:PRINT "THE WALLS ARE MOVING INWARD!!!":U= 1
985 SQ= 1:POKE 33210,0:POKE 33209,0:RETURN
990 IF SQ= 1AND PEEK (33210)> = 0AND PEEK (33209)> 15GOTO 1000
995 RETURN
1000 GOSUB 15:PRINT "YOU ARE VERY THIN AND..."
1005 HC= 0:SQ= 0:RX= 0:GOSUB 175
1010 RETURN
1015 GOSUB 15:PRINT "CLICK! DOOR LOCKED!":DR$= "L"
1020 GOSUB 15:PRINT "STRANGE MONSTER APPEARS!":U= 1
1025 MA= 4:M0= 17- 2* CL:AT= 1:HM= 0:HD= 1+ 2* CL:FOR I= 1TO HD:HM= HM+ FN R(8)+ 1:NEXT
1030 H= HM:D1= 1:D2= 12:SA= 2:MX= 100* HD:V= 1:A= 1:GOSUB 1890
1035 RETURN
1040 GOSUB 15:PRINT "YOU HEAR A NOISE..."
1045 GOSUB 15:PRINT "YOU ARE FALLING!!"
1050 X= FN R(6)+ 1:GOSUB 15:PRINT :GOSUB 15:PRINT "YOU CLIMBED OUT"
1055 GOSUB 15:PRINT "DAMAGE=";X;"":RX= 0:HC= HC- X:GOSUB 175
1060 RETURN
1065 GOSUB 15:PRINT "CHEST EXPLODED!":X= FN R(6)+ 7
1070 GOSUB 15:PRINT "DAMAGE=";X;"":HC= HC- X:GOSUB 175:RT= 0
1075 RETURN
1080 GOSUB 15:PRINT "GASP!! POISON GAS!"
1085 X= FN R(100):IF X> 30+ 10* CLTHEN HC= 0:GOSUB 180
1090 GOSUB 15:PRINT "YOU SURVIVED...THIS TIME":RX= 0
1095 RETURN
1100 GOSUB 15:PRINT "CHEST VANISHED!":RX= 0:RT= 0
1105 RETURN
1110 FOR I= 20TO 29:PLOT 3,42,I:PRINT "                     ":NEXT
1115 GOSUB 190:XP= XP+ INT (EX* XF):EX= 0:LV= 0:GP= GP+ G1
1120 IF G2> 0THEN FOR I= 1TO G2:GP= GP+ FN R(90)+ 10:NEXT
1125 IF G3> 0THEN FOR I= 1TO G3:GP= GP+ FN R(400)+ 100:NEXT
1130 EN= EN- G1- G2- 25* G3:G1= 0:G2= 0:G3= 0
1135 IF XP> 2000THEN CL= 2
1140 IF XP> 5000THEN CL= 3
1145 IF XP> 10000THEN CL= 4
1150 IF XP> 20000THEN CL= 5:GOSUB 530:GOSUB 15:PRINT "YOU MADE IT TO THE TOP!!!":GOTO 2455
1155 IF CQ< > CLTHEN HP= HP+ FN R(10)+ 1:CQ= CL
1160 CA= AC- SH- AR:GOSUB 530:GOSUB 15:PRINT "STATS UPDATED"
1165 GOSUB 15:INPUT "RETURN TO CASTLE (Y/N)? ";X$
1170 IF GP< 50THEN GOSUB 15:PRINT "NOT ENOUGH GOLD LEFT":FOR I= 1TO 1000:NEXT :GOTO 2455
1175 IF X$= "Y"GOTO 260
1180 GOTO 2355
1185 IF CL< 1THEN HC= 0:GOSUB 175
1190 C0= 18- CL- MW:X= FN R(10):HP= HP- X:HC= HC- X:CQ= CL:GOSUB 530
1195 IF CL= 1THEN XP= 1000
1200 IF CL= 2THEN XP= 3500
1205 IF CL= 3THEN XP= 7500
1210 IF CL= 4THEN XP= 15000
1215 RETURN
1220 IF EN< = WTTHEN RETURN
1225 GOSUB 15:PRINT "OVERWEIGHT-- DROP SOMETHING":GOSUB 2290
1230 IF EN> WTGOTO 1220
1235 RETURN
1240 DATA "SHORT SWORD",1,6,50,50
1245 DATA "MACE",2,7,100,75
1250 DATA "LONG SWORD",2,8,70,100
1255 DATA "BROAD SWORD",1,10,90,150
1260 DATA "BASTARD SWORD",2,12,100,200
1265 DATA "MACE+1",3,8,100,0
1270 DATA "SWORD+1",3,9,70,0
1275 DATA "SWORD+2",2,12,90,0
1280 DATA "SWORD+3",5,15,90,0
1285 DATA "SWORD+4",9,16,150,0
1290 DATA "MAGIC RING, -1 TO ARMOR CLASS",0,0,0,0
1295 DATA "MAGIC RING, -2 TO ARMOR CLASS",0,0,0,0
1300 DATA 2,5,1,3,7,5,6,3,6,8,4,8,6,12,5,12
1305 DATA 8,15,5,14,13,3,11,3,8,8,9,9,13,15,14,13
1310 DATA 21,15,20,13,22,8,20,9,22,5,19,5,19,3,20,2
1315 DATA 25,4,26,3,25,7,27,7,25,13,28,13,33,15,34,14
1320 DATA 37,12,33,12,37,10,33,10,37,6,35,7,37,2,35,3
1325 DATA  "GIANT ANT",2,3,16,1,1,4,0,100
1330 DATA "GIANT CENTIPEDE",1,9,20,1,1,1,5,120
1335 DATA "GNOLL",2,5,16,1,2,8,0,60
1340 DATA "HOBGOBLIN",1,6,18,1,1,8,0,20
1345 DATA  "PIERCER",2,4,16,1,3,8,0,110
1350 DATA "SKELETON",1,7,19,1,1,6,1,45
1355 DATA "ORC",1,5,16,1,2,7,2,70
1360 DATA "TROGLODYTE",2,5,16,3,1,3,0,190
1365 DATA "ZOMBIE",2,8,16,1,1,8,2,90
1370 DATA "EVIL FIGHTER",1,4,19,1,2,8,0,60
1375 DATA "BUGBEAR",3,5,16,1,2,8,0,80
1380 DATA "GELATINOUS CUBE",4,8,15,1,2,8,2,130
1385 DATA "HARPY",3,7,16,3,1,3,0,190
1390 DATA "HELLHOUND",4,4,15,1,1,10,1,175
1395 DATA "WEREWOLF",4,5,15,1,2,8,6,175
1400 DATA "OGRE",4,5,15,1,1,10,0,130
1405 DATA "CREEPING FUNGUS",3,6,16,1,2,7,3,260
1410 DATA "GIANT SPIDER",4,4,15,1,2,8,5,220
1415 DATA "GIANT RAT",3,5,16,2,1,6,0,160
1420 DATA "GARGOYLE",3,5,15,3,2,4,6,285
1425 DATA "SUBTERRANEAN LIZARD",6,5,13,1,2,12,0,170
1430 DATA "MINOTAUR",6,6,13,2,2,8,0,250
1435 DATA "OCHRE JELLY",5,8,13,1,3,12,1,155
1440 DATA "OWLBEAR",5,5,15,3,1,8,0,320
1445 DATA "TROLL",6,4,13,3,2,5,3,510
1450 DATA "WRAITH",5,4,15,1,1,6,4,440
1455 DATA "WEREBOAR",5,4,15,1,2,12,6,245
1460 DATA "ENCHANTED FIGHTER",6,3,13,1,2,8,0,180
1465 DATA "GIANT",5,4,15,1,3,18,2,270
1470 DATA "GUARDIAN",6,2,12,1,4,16,2,350
1475 IF U> 0THEN GOSUB 15:PRINT "LEAVE ROOM FIRST":RETURN
1480 GOSUB 15:INPUT "ROOM #? (0=LEAVE CASTLE) ";Z
1485 IF Z< 0OR Z> 20OR Z< > INT (Z)GOTO 1480
1490 IF Z= 0THEN GOSUB 15:INPUT "LEAVE? (GOLD?) (Y/N) ";X$:IF X$= "N"GOTO 1480
1495 IF Z< 0OR Z> 20THEN GOSUB 15:PRINT "INVALID #":GOTO 1480
1500 IF Z= TTHEN GOSUB 15:PRINT "ALREADY THERE":RETURN
1505 D= 0:T= Z:GOSUB 685
1510 IF FN R(10)< 4THEN GOSUB 1555
1515 IF T= 0THEN PLOT 6,1:PLOT 3,X1,Y1:PLOT 47:PLOT 6,2
1520 IF T= 0THEN GOSUB 15:PRINT "YOU LEFT THE CASTLE":FOR I= 1TO 500:NEXT :RETURN
1525 IF BG= 1THEN PLOT 6,1:PLOT 3,X1,Y1:PLOT 47:PLOT 6,2
1530 RESTORE 1300:FOR I= 1TO T:READ X1,Y1,X2,Y2:NEXT
1535 PLOT 6,5:PLOT 3,X1,Y1:PLOT 88:PLOT 6,2:BG= 1
1540 GOSUB 15:PRINT "YOU ARE AT ROOM";T;"":U= 0:V= 0:D= 0
1545 IF DR$= "L"THEN GOSUB 15:PRINT "DOOR LOCKED"
1550 RETURN
1555 X= FN R(10)+ 1:X= X+ 10* (LV- 1)
1560 RESTORE 1325:FOR I= 1TO X:READ M$,HD,MA,M0,AT,D1,D2,SA,MX:NEXT
1565 V= 1:W= 1:GOSUB 15:PRINT "YOU ENCOUNTERED A"
1570 GOSUB 15:PRINT "WANDERING ";M$;""
1575 HM= 0:FOR I= 1TO HD:HM= HM+ FN R(8)+ 1:NEXT :H= HM:GOSUB 1890
1580 RETURN
1585 IF DR$= "L"THEN GOSUB 15:PRINT "DOOR LOCKED":RETURN
1590 IF T< 1THEN GOSUB 15:PRINT "NOT OUTSIDE A ROOM":RETURN
1595 IF U= 1THEN GOSUB 15:PRINT "ALREADY INSIDE":RETURN
1600 ON RXGOSUB 890,910,930,950,970,1015
1605 X= LN:PLOT 6,1,3,X1,Y1:PLOT 47:PLOT 6,5,3,X2,Y2:PLOT 88:LN= X
1610 GOSUB 15:PRINT "YOU ARE INSIDE":U= 1
1615 IF RT> 0THEN GOSUB 15:PRINT "YOU SEE A CHEST"
1620 IF RM> 0THEN GOSUB 1635
1625 IF RT= 0AND RM= 0THEN GOSUB 15:PRINT "ROOM IS EMPTY"
1630 RETURN
1635 RESTORE 1325:FOR I= 1TO RM:READ M$,HD,MA,M0,AT,D1,D2,SA,MX:NEXT
1640 GOSUB 15:PRINT "A(AN) ";M$;" IS IN THE ROOM":V= 1
1645 HM= 0:FOR I= 1TO HD:HM= HM+ FN R(8)+ 1:NEXT :H= HM:RETURN
1650 IF U= 0THEN GOSUB 15:PRINT "NOT IN A ROOM":RETURN
1655 IF DR$= "L"THEN GOSUB 15:PRINT "DOOR LOCKED":RETURN
1660 IF V= 1AND FN R(100)< 25GOTO 1675
1665 IF V= 1THEN W= 1
1670 IF W= 1THEN GOSUB 15:PRINT "MONSTER BLOCKS THE WAY":GOSUB 1890:RETURN
1675 RT= 0:RM= 0:X= LN:SQ= 0:V= 0:W= 0:A= 0:TR= 0:M1= 0:M2= 0:M3= 0:M4= 0
1680 PLOT 3,X2,Y2:PLOT 32:PLOT 6,5,3,X1,Y1:PLOT 88:PLOT 6,2:LN= X:U= 0
1685 GOSUB 15:PRINT "OUTSIDE ROOM";T;"":RETURN
1690 IF A= 1THEN GOSUB 15:PRINT "CAN'T CAST A SPELL":RETURN
1695 FOR I= 20TO 29:PLOT 3,42,I:PRINT "                     ":NEXT
1700 PLOT 3,42,20:PRINT "SPELLS:"
1705 PLOT 3,44,21:PRINT "0-(QUIT)"
1710 PLOT 3,44,22:PRINT "1-KNOCK"
1715 PLOT 3,44,23:PRINT "2-DISPEL TRAPS"
1720 PLOT 3,44,24:PRINT "3-HEAL"
1725 PLOT 3,44,25:PRINT "4-REPEL MONSTER"
1730 PLOT 3,44,26:PRINT "5-FLAME"
1735 PLOT 3,44,27:PRINT "6-SHIELD"
1740 GOSUB 15:INPUT "SELECT SPELL # AT RIGHT ";Z:IF Z= 0GOTO 1770
1745 IF Z< 0OR Z> 6GOTO 1740
1750 IF SP(Z)= 0THEN GOSUB 15:PRINT "SPELL NOT AVAILABLE":GOTO 1770
1755 SP(Z)= SP(Z)- 1:EN= EN- 10:IF FN R(100)> 80THEN GOSUB 15:PRINT "SPELL FAILED":GOTO 1765
1760 ON ZGOSUB 1785,1800,1815,1830,1845,1885
1765 GOSUB 530:IF C= 1THEN RETURN
1770 FOR I= 20TO 29:PLOT 3,42,I:PRINT "                     ":NEXT :E= 1
1775 IF V= 1THEN GOSUB 1890
1780 RETURN
1785 IF T= 0OR DR$= "U"THEN GOSUB 15:PRINT "NOTHING TO UNLOCK"
1790 IF DR$= "L"THEN DR$= "U":GOSUB 15:PRINT "DOOR UNLOCKED"
1795 RETURN
1800 IF RX= 0THEN GOSUB 15:PRINT "NO TRAPS PRESENT":RETURN
1805 IF RX> 0THEN RX= 0:GOSUB 15:PRINT "TRAP DISARMED":RETURN
1810 RETURN
1815 HC= HC+ FN R(10)+ 11
1820 IF HC> HPTHEN HC= HP
1825 GOSUB 15:PRINT "YOU FEEL BETTER":RETURN
1830 IF V= 0THEN GOSUB 15:PRINT "REPEL WHAT?":RETURN
1835 IF SA= 2THEN GOSUB 15:PRINT "MONSTER NOT REPELLED!":RETURN
1840 GOSUB 15:PRINT "MONSTER REPELLED":V= 0:W= 0:A= 0:RETURN
1845 IF FN R(100)> 80THEN GOSUB 15:PRINT "ONLY SMOKE":RETURN
1850 GOSUB 15:PRINT "WHAM!!":X= FN R(10)+ 11
1855 IF V> 0AND SA< > 1THEN HM= HM- X:GOSUB 15:PRINT X;" PTS DAMAGE"
1860 Y= FN R(10)
1865 IF U= 1AND RT> 0AND Y> 6THEN GOSUB 15:PRINT "TREASURE DESTROYED!":RT= 0
1870 IF V= 0THEN GOSUB 15:PRINT "WHAT WERE YOU FIRING AT?":RETURN
1875 IF V> 0AND SA= 1THEN GOSUB 15:PRINT "MONSTER UNAFFECTED!"
1880 RETURN
1885 D= 1:GOSUB 15:PRINT "SHIELDED--5 ROUNDS":RETURN
1890 RD= 1
1895 IF V= 0THEN GOSUB 15:PRINT "NOTHING TO FIGHT":RETURN
1900 FOR I= 20TO 29:PLOT 3,42,I:PRINT "                     ":NEXT
1905 PLOT 3,42,20:PRINT "MELEE COMMANDS:"
1910 PLOT 3,44,22:PRINT "SPELLS RD.#1 ONLY"
1915 PLOT 3,44,25:PRINT "1-CAST SPELL"
1920 PLOT 3,44,26:PRINT "2-RUN"
1925 PLOT 3,44,27:PRINT "3-ATTACK"
1930 B= 0:GOSUB 15:PRINT :GOSUB 15:PRINT "ROUND";RD;""
1935 GOSUB 15:INPUT "ACTION? ";Z
1940 IF Z< 1OR Z> 3GOTO 1935
1945 ON ZGOSUB 1975,1985,2015
1950 RD= RD+ 1:IF V= 0THEN W= 0:A= 0:RETURN
1955 IF HM< = 0GOTO 2115
1960 IF RD> = 1THEN A= 1
1965 IF B= 1THEN B= 0:GOTO 1900
1970 GOTO 1930
1975 IF RD> 1THEN A= 1
1980 C= 1:GOSUB 1690:B= 1:C= 0:RETURN
1985 X= FN R(100)
1990 IF U= 1AND DR$= "L"THEN GOSUB 15:PRINT "DOOR LOCKED":GOTO 2050
1995 IF X< 50THEN GOSUB 15:PRINT "YOU ESCAPED!":E= 1:V= 0:W= 0:A= 0:GOTO 2005
2000 GOSUB 15:PRINT "YOU'RE STILL THERE":GOTO 2050
2005 IF U= 1THEN U= 0:PLOT 3,X2,Y2:PLOT 32:PLOT 6,5,3,X1,Y1:PLOT 88:PLOT 6,2
2010 RETURN
2015 X= FN R(20)+ 1
2020 IF SA= 3THEN HM= HM+ 3:IF HM> HTHEN HM= H
2025 IF SA= 6AND WP< 6THEN GOSUB 15:PRINT "ONLY A MAGIC WEAPON HITS":X= - 10
2030 IF X< C0- MATHEN GOSUB 15:PRINT "YOU MISSED":GOTO 2050
2035 X= FN R(DH- DL+ 1)+ DL:HM= HM- X
2040 GOSUB 15:PRINT "YOU HIT--";X;" PT(S)"
2045 IF HM< = 0GOTO 2115
2050 GOSUB 15:PRINT "MONSTER HAS";AT;" ATTACK(S)"
2055 FOR I= 1TO AT
2060 X= FN R(20)+ 1
2065 IF D= 1AND RD< 7THEN GOSUB 15:PRINT "YOU ARE SHIELDED":GOTO 2095
2070 IF X< M0- CATHEN GOSUB 15:PRINT "MONSTER MISSED":GOTO 2095
2075 X= FN R(D2- D1+ 1)+ D1:HC= HC- X
2080 GOSUB 15:PRINT "DAMAGE=";X;"":GOSUB 175
2085 IF SA= 4THEN CL= CL- 1:GOSUB 15:PRINT "YOU JUST LOST 1 LEVEL!":GOSUB 1185:GOSUB 175
2090 IF SA= 5THEN GOSUB 2105
2095 NEXT I
2100 RETURN
2105 X= 60+ CL* 5:IF X> FN R(100)THEN GOSUB 15:PRINT "YOU SURVIVED ITS POISON":RETURN
2110 HC= 0:GOSUB 15:PRINT "POISON VENOM!!":GOSUB 175:RETURN
2115 GOSUB 15:PRINT "MONSTER DEAD (";H;" PTS.)":RM= 0
2120 V= 0:W= 0:A= 0:B= 0:D= 0:EX= EX+ MX+ H* 5:E= 1:RETURN
2125 IF U= 0OR RT= 0THEN GOSUB 15:PRINT "NOTHING TO OPEN":RETURN
2130 IF V= 0GOTO 2145
2135 W= 1:GOSUB 15:PRINT "MONSTER ATTACKS":GOSUB 1890
2140 RETURN
2145 X= 0:IF RX> 6THEN X= RX- 6
2150 IF TR= 1THEN GOSUB 15:PRINT "CHEST ALREADY OPEN":RETURN
2155 IF RX= 0GOTO 2170
2160 ON XGOSUB 1040,1065,1080,1100
2165 IF RT= 0THEN GOSUB 15:PRINT "TREASURE GONE":RETURN
2170 MW$= "":X= FN R(100)
2175 M1= FN R(251)+ 50:GOSUB 15:PRINT "YOU SEE:";M1;" GOLD"
2180 IF X< 20THEN M2= (FN R(5)+ 1)* LV:GOSUB 15:PRINT "";TAB( 8);M2;" GEM(S)"
2185 X= FN R(100)
2190 IF X< 10THEN M3= (FN R(2)+ 1)* LV:GOSUB 15:PRINT "";TAB( 8);M3;" PC(S). OF JEWELRY"
2195 X= FN R(100):Y= FN R(7)+ 6:IF X< 5THEN M4= Y
2200 IF M4> 0THEN RESTORE 1240:FOR I= 1TO M4:READ MW$,X,X,X,X:NEXT
2205 IF M4> 0THEN GOSUB 15:PRINT TAB( 9);"A ";MW$;""
2210 TR= 1:RETURN
2215 IF M1= 0AND M2= 0AND M3= 0AND M4= 0THEN GOSUB 15:PRINT "WHAT TREASURE?":RETURN
2220 IF M4= 0GOTO 2245
2225 GOSUB 15:INPUT "WANT THE MAGIC ITEM (Y/N)? ";X$
2230 IF X$< > "Y"GOTO 2245
2235 GOTO 2270
2240 MW= VAL (RIGHT$ (WP$,1)):C0= 18- CL- MW
2245 EN= EN+ M1+ M2+ 25* M3:CA= AC- SH- AR:M4= 0
2250 G1= G1+ M1:G2= G2+ M2:G3= G3+ M3:GOSUB 530
2255 GOSUB 15:PRINT "TREASURE GOTTEN":M1= 0:M2= 0:M3= 0:RT= 0:TR= 0
2260 IF EN> WTTHEN GOSUB 1220
2265 RETURN
2270 IF M4= 11THEN AR= 1:GOTO 2245
2275 IF M4= 12THEN AR= 2:GOTO 2245
2280 WP= M4:EN= EN- WW:M4= 0::RESTORE 1240:FOR I= 1TO WP:READ WP$,DL,DH,WW,WG:NEXT :GOSUB 530
2285 EN= EN+ WW:GOSUB 1220:C0= 18- CL- MW:GOTO 2240
2290 GOSUB 15:PRINT "DROP WHAT?"
2295 GOSUB 15:PRINT "CARRYING:"
2300 GOSUB 15:PRINT G1;" GOLD"
2305 GOSUB 15:PRINT G2;" GEM(S)"
2310 GOSUB 15:PRINT G3;" JEWELRY"
2315 GOSUB 15:INPUT "# GOLD TO DROP ";X
2320 GOSUB 15:INPUT "# GEMS TO DROP ";Y
2325 GOSUB 15:INPUT "# JEWELRY TO DROP ";Z
2330 IF X> G1OR Y> G2OR Z> G3THEN GOSUB 15:PRINT "TRY THAT AGAIN":GOTO 2295
2335 G1= G1- X:G2= G2- Y:G3= G3- Z:M1= X:M2= Y:M3= Z:EN= EN- X- Y- 25* Z:GOSUB 530
2340 GOSUB 15:INPUT "DONE (Y/N)? ";X$
2345 IF X$= "N"GOTO 2290
2350 RETURN
2355 IF U= 1AND DR$= "L"AND SP(1)= 0THEN GOSUB 15:PRINT "YOU STARVED TO DEATH":GOTO 2455
2360 IF T< > 0THEN GOSUB 15:PRINT "LEAVE CASTLE FIRST":GOTO 395
2365 GOSUB 190:LN= 18
2370 GOSUB 15:INPUT "CHOOSE--SAVE GAME OR QUIT? ";X$
2375 IF X$= "Q"THEN PLOT 8,12:GOTO 2455
2380 IF X$< > "S"GOTO 6680
2385 PLOT 8,12,14,3,25,12:PRINT "PLEASE WAIT"
2390 PLOT 3,0,30
2395 FILE "N",C$,1,128,1
2400 FILE "R",1,C$,1
2405 PUT 1,1,1;C1$[16],WP$[16]
2410 PUT 1,1,33;CL,WT,SP(1),SP(2),SP(3),SP(4),SP(5),SP(6),WP,HP,AC,GP,EN,SH
2415 PUT 1,1,89;AR,WA,MW,XP,CQ
2420 FILE "C",1
2425 PLOT 15,8,12:END
2430 FOR I= 1TO 500:NEXT
2435 PLOT 8,12,27,4:PRINT "LOAD RIP16.DSP":PLOT 27,27
2440 I= LEN (C1$):X$= RIGHT$ (C1$,1)
2445 IF X$= " "THEN I= I- 1:C1$= LEFT$ (C1$,I):GOTO 2440
2450 X= INT ((17- I)/ 2+ 21):PLOT 3,X,12:PRINT C1$
2455 PLOT 3,0,30:INPUT "PLAY AGAIN (Y/N)? ";X$
2460 IF X$= "Y"GOTO 150
2465 PLOT 8,12:END