5370 IF P(P,6) => LV AND P(P,6) <= HV AND P(P,7) => LH AND P(P,7) <= HH THEN GOTO 5430 ELSE GOTO 5380
5380 IF M.DAM(MX,1) < 80 THEN GOTO 5860 'NOT A DRAGON
5390 MSG$="DRAGON FIRE HITS "+LEFT$(P.NAME$(P),13): GOSUB 4460
5400 WC=8: WD=0
5410 GOTO 5530
5420 ' MAKE ATTACK
5430 MN=INT((MX+1)/4) +1
5440 WK=10-MN
5450 WK=WK+P(P,5): IF WK>10 THEN WK=10
5460 IF WK<1 THEN WK=1
5470 ROLL=INT(RND*10)+1
5480 IF WK > ROLL THEN GOTO 5860 'MISSED
5490 MSG$="A "+M.NAME$(MX)+" HAS ATTACKED "+LEFT$(P.NAME$(P),13): GOSUB 4460
5500 IF M.DAM(MX,1) < 10 THEN WD=M.DAM(MX,1): GOTO 5810 'NORMAL ATTACK
5510 WC=(INT(M.DAM(MX,1)/10))
5520 WD=M.DAM(MX,1)-(10*WC)
5530 GET #1,P 'GET PLAYER RECORD TO CHECK SAVING THROWS
5540 IF WC=1 THEN GOTO 5750 'POISON
5550 IF WC=2 THEN P(P,1) = 1200: GOTO 5790 'DISEASE
5560 IF WC=5 THEN WK=(INT(M.DAM(MX,2)*RND)+WD)+(INT(30*RND)+5)
5570 IF WC=8 THEN WK=(INT(M.DAM(MX,2)*RND)+WD)+ML(MX,4)
5580 IF WC=5 OR WC=8 THEN GOTO 5590 ELSE GOTO 5620
5590 ZZ = INT(RND*20)+1 'DRAGONS BREATH
5600 IF ZZ => CVI(SV.DRAG$) THEN WK=INT(WK/2)
5610 GOTO 5830
5620 IF WC=6 THEN GOTO 5710 'TURN TO STONE
5630 ' ENERGY DRAIN
5640 IF WC = 3 THEN ZZ=CVI(LVL$): ZZ=ZZ-1 'ENERGY DRAIN 1 LEVEL
5650 IF WC = 4 THEN ZZ=CVI(LVL$): ZZ=ZZ-2 'ENERGY DRAIN 2 LEVELS
5660 IF ZZ<1 THEN P(P,3)=0: GOTO 5850 'PLAYER DEAD
5670 IF WC=3 THEN LSET EXPR$ = MKS$(INT(CVS(EXPR$)/2)): P(P,1)=1200
5680 IF WC=4 THEN LSET EXPR$ = MKS$(INT(CVS(EXPR$)/4)): P(P,1)=1200
5690 LSET LVL$=MKI$(ZZ)
5700 GOTO 5790
5710 ' TURN TO STONE
5720 ZZ = INT(RND*20)+1 'TURN TO STONE
5730 IF ZZ => CVI(SV.STONE$) THEN MSG$="THE GODS HAVE SPARED YOU": GOSUB 4460: WK=0: GOTO 5790
5740 P(P,3)=0: GOTO 5840
5750 ' POISON
5760 ZZ = INT(RND*20)+1 'POISON
5770 IF ZZ => CVI(SV.POISON$) THEN MSG$="THE GODS HAVE SPARED YOU": GOSUB 4460: WK=0: GOTO 5790
5780 P(P,3)=0: GOTO 5840 'PLAYER DEAD
5790 PUT #1,P 'REWRITE PLAYERS RECORD
5800 GOTO 5860
5810 ' CHECK DAMAGE
5820 WK=INT(RND*M.DAM(MX,2))+WD
5830 P(P,3)=P(P,3)-WK
5840 IF P(P,3)>0 THEN MSG$="IT DID "+STR$(WK)+" POINTS DAMAGE": GOSUB 4460: GOTO 5860
5850 IF P(P,3) <1 THEN MSG$=P.NAME$(P)+"IS DEAD": P.NAME$(P) = "": V=P(P,6):H=P(P,7): LOCATE V,H: PRINT " ";: M(V,H)=32: GOSUB 4460
5860 RETURN
5870 'CAST A SPELL
5880 IF T<>1 THEN MSG$="NO TIME": GOSUB 4460: GOTO 6110 'SPELL TAKES FULL TURN
5890 IF P.CLASS$(P) <> "CLERIC " AND P.CLASS$(P) <> "ELF " AND P.CLASS$(P) <> "MAGIC-USER" THEN MSG$="YOU CAN'T CAST SPELLS": GOSUB 4460: GOTO 6110
5900 LOCATE 25,1: PRINT SPACE$(39);
5910 LOCATE 25,1: INPUT;"WHAT SPELL ",W$
5920 SK$=W$
5930 GOSUB 330 'MATCH TO SUPPLY FILE
5940 IF FOUND=0 THEN GOTO 6110
5950 S(S,P+2)=S(S,P+2)-1 'SUBTRACT SPELL
5960 IF S(S,2) > P(P,4) THEN MSG$="YOU CAN'T USE THAT SPELL": GOSUB 4460: GOTO 6090
5970 IF (S(S,1) = 1 AND P.CLASS$(P) <> "CLERIC ") OR (S(S,1)=3 AND P.CLASS$(P) = "CLERIC ") THEN MSG$="YOU CAN'T USE THAT SPELL": GOSUB 4460: GOTO 6090
5980 IF S=26 THEN GOSUB 6620: GOTO 6090 'CLOUDKILL
5990 IF S=28 OR S=22 THEN GOSUB 6780: GOTO 6090 'DEATH
6000 IF S=19 OR S=23 THEN P(P,10)=99: GOTO 6090 'LIGHT
6010 IF S=29 OR S=27 THEN TE=3: GOTO 6090 'TURN EVIL
6020 IF S=31 OR S=32 THEN TO.OPEN=6: GOTO 6090 'TO OPEN
6030 IF S=30 THEN HS=4: GOTO 6090 'HASTE
6040 IF S=18 THEN FT=6: GOTO 6090 'FIND TRAPS
6050 IF S=24 THEN GOSUB 6370: GOTO 6090 'LIGHTNING
6060 IF S=17 OR S=21 OR S=20 OR S=25 THEN GOSUB 6120: GOTO 6090
6070 ' INVALID SPELL
6080 MSG$="THATS NOT A VALID SPELL": GOSUB 4460: GOTO 6110