1880 IF X$ = CHR$(13) THEN IF I > 0 THEN CALL OIO(""):GOTO 2030 ELSE BEEP : GOTO 1830
1890 IF X$ = CHR$(8) THEN IF I = 0 THEN BEEP : GOTO 1830 ELSE CALL OIO("D D") : PASS$ = LEFT$(PASS$, LEN(PASS$) - 1) : I = LEN(PASS$) : GOTO 1830
1900 IF (X$ > = "A" AND X$ < = "Z") OR (X$ > = "a" AND X$ < = "z") OR X$ = " " THEN 1910 ELSE 1830
1910 IF LEN(PASS$) = 20 THEN BEEP : GOTO 1830
1920 CALL OIO(".")
1930 PASS$ = PASS$ + X$
1940 I = LEN(PASS$)
1960 GOTO 1830
1970 CLOSE 5
1980 OPEN "R",5,"PLAYERS.DAT",160
1990 FIELD 5,8 AS CO$(1),8 AS CO$(2),8 AS CO$(3),8 AS CO$(4),8 AS CO$(5)
2000 FIELD 5,40 AS DUMMY$,8 AS PA$(1),8 AS PA$(2),8 AS PA$(3),8 AS PA$(4),8 AS PA$(5)
2010 FIELD 5,80 AS DUMMY$,8 AS DLVL$,8 AS LVL$,2 AS ST$,2 AS IN$,2 AS WI$,2 AS CO$,2 AS DX$,2 AS CH$,8 AS EXPR$,8 AS PTS$,8 AS GOLD$,2 AS WE$,2 AS SH$,2 AS AR$,2 AS CL$,2 AS HE$,2 AS BO$,8 AS MA$,2 AS SP1$,2 AS SP2$,2 AS SP3$,2 AS SP4$
2020 RETURN
2030 CODE$ = CODE$ + STRING$(20 - LEN(CODE$),32)
2040 FOR I = 1 TO 20
2050 UC = ASC( MID$(CODE$,I,1))
2060 MID$(CODE$,I,1) = CHR$(UC + 32 * (UC > 90))
2070 NEXT
2080 PASS$ = PASS$ + STRING$(20 - LEN(PASS$),32)
2090 FOR I = 1 TO 20
2100 UC = ASC( MID$(PASS$,I,1))
2110 MID$(PASS$,I,1) = CHR$(UC + 32 * (UC > 90))
2120 NEXT
2130 GOSUB 1970
2140 FOR UX = 1 TO LOF(5) / 152
2150 GET 5,UX
2160 XCRYPT$ = ""
2170 FOR J = 1 TO 5
2180 CRYPT# = CVD(CO$(J))
2190 XCRYPT$ = XCRYPT$ + FN DECRYPT$(CRYPT#)
2200 NEXT
2210 IF CODE$ < > XCRYPT$ THEN 2290
2220 YCRYPT$ = ""
2230 FOR J = 1 TO 5
2240 CRYPT# = CVD(PA$(J))
2250 YCRYPT$ = YCRYPT$ + FN DECRYPT$(CRYPT#)
2260 NEXT
2270 CLOSE 5
2280 IF PASS$ < > YCRYPT$ THEN 1260 ELSE LOGIN = 1 : GOSUB 2920 : GOTO 5420
2290 NEXT
2300 CLOSE 5
2310 DLVL# = 1
2320 MAXDLVL# = 1
2330 LVL# = 1
2340 PTS# = 15
2350 MAXPTS# = 15
2360 SP1=10:SP2=10:SP3=10:SP4=10
2370 WE = 0
2380 SH = 0
2390 AR = 0
2400 HE = 0
2410 BO = 0
2420 CL = 0
2450 CALL OIO("28HSTR INT WIS CON DEX CHA")
2470 CALL OIO("15HRolling Character Stats(cr to keep or 9 to ignore)")
2570 IF X = 5 THEN CALL OIO("11HPress 0 for help when playing, and Q to quit. Now hit a key.") : WHILE INKEY$ = "" : WEND : GOSUB 2580 : LOGIN = 1 : GOTO 5720 ELSE IF X = 9 THEN 2480 ELSE 2560
10200 CALL OIO("=3h20HCRASH! The Dungeon collapsed!!")
10210 RESUME 10220
10220 DEF SEG=0:POKE &H417,0:END
10230 DATA bandit,basilisk,bugbear,caterwaul,chimera,cloaker,demon,devil,doppleganger,dragon,drider,gargoyle,ghast,ghost,giant,gnome,goblin,golem,grell,grimlock,hydra,kobold,lich,margoyle,mimic,minotaur,mummy,ogre,owlbear,phantom,phycomid,piercer
10240 DATA quaggoth,shocker,skeleton,slaad,solar,solifugid,spectator,stalker,stirge,tarrasque,thoguaa,titan,trapper,troglodyte,troll,ustilagor,vampire,vulching,wight,wraith,zombie
10241 DATA i cleanse thy body,i protect thee,darts fly from my hands,i shield thee,i strengthen thee,your eyes shut tight,objects become visible,flames fly from my fingertips,i call upon winds of fire,i create gold from air
10250 SP1=SP1-1:IF SP1<0 THEN SP1=0:GOTO 5730
10260 ON SP GOTO 10270,10280,10290,10300,10310,10320,10330,10340,10350,10360
10270 A$="You cast a heal spell!":GOSUB 9100:GOSUB 6650:GOTO 5730
10280 A$="You cast a protection spell!":GOSUB 9100:MHPM=DX:MHPMC=1:GOTO 5730
10290 A$="You cast a magic missile spell!":GOSUB 9100:IF MON=0 THEN 5730 ELSE GOSUB 9200:BONUS=2:GOTO 7910
10300 A$="You cast a shield spell!":GOSUB 9100:SHP=AR:SHPC=1:GOTO 5730
10310 A$="You cast a strength spell!":GOSUB 9100:STP=ST:STPC=1:GOTO 5730
10320 A$="You cast a sleep spell!":GOSUB 9100:SLP=1:SLPC=1:GOTO 5730
10330 A$="You cast a locate spell!":GOSUB 9100:GOSUB 9200:I=0:IF Z(XCO - 1,YCO) = 94 THEN CALL OIO("A^DB"):I=1
10331 IF Z(XCO + 1,YCO) = 94 THEN CALL OIO("B^AD"):I=1
10332 IF Z(XCO,YCO - 1) = 94 THEN CALL OIO("D^"):I=1
10333 IF Z(XCO,YCO + 1) = 94 THEN CALL OIO("C^DD"):I=1
10334 IF Z(XCO - 1,YCO) = 111 THEN CALL OIO("AoDB"):I=1
10335 IF Z(XCO + 1,YCO) = 111 THEN CALL OIO("BoAD"):I=1
10336 IF Z(XCO,YCO - 1) = 111 THEN CALL OIO("Do"):I=1
10337 IF Z(XCO,YCO + 1) = 111 THEN CALL OIO("CoDD"):I=1
10338 IF I=0 THEN A$="There are no traps or pits here.." ELSE A$="You discovered some.."
10339 GOSUB 9100:GOSUB 9200:GOTO 5730
10340 A$="You cast a pyrotechnic spell!":GOSUB 9100:IF MON=0 THEN 5730 ELSE GOSUB 9200:BONUS=2:GOTO 7910
10350 A$="You cast a firestorm spell!":GOSUB 9100:IF MON=0 THEN 5730 ELSE GOSUB 9200:BONUS=2:GOTO 7910
10360 A$="You cast a transmute spell!":GOSUB 9100:GOSUB 9200:I=0
10370 IF Z(XCO - 1,YCO) = 32 AND XCO>1 THEN CALL OIO("A$DB"):Z(XCO-1,YCO)=36:I=1
10380 IF Z(XCO + 1,YCO) = 32 AND XCO<23 THEN CALL OIO("B$AD"):Z(XCO+1,YCO)=36:I=1
10390 IF Z(XCO,YCO - 1) = 32 AND YCO>1 THEN CALL OIO("D$"):Z(XCO,YCO-1)=36:I=1
10400 IF Z(XCO,YCO + 1) = 32 AND YCO<76 THEN CALL OIO("C$DD"):Z(XCO,YCO+1)=36:I=1
10410 IF I=0 THEN GOTO 5730
10420 IF Z(XCO - 1,YCO) = 36 THEN GOSUB 7320:CALL OIO("A DB"):Z(XCO-1,YCO)=32
10430 IF Z(XCO + 1,YCO) = 36 THEN GOSUB 7320:CALL OIO("B AD"):Z(XCO+1,YCO)=32
10440 IF Z(XCO,YCO - 1) = 36 THEN GOSUB 7320:CALL OIO("D "):Z(XCO,YCO-1)=32
10450 IF Z(XCO,YCO + 1) = 36 THEN GOSUB 7320:CALL OIO("C DD"):Z(XCO,YCO+1)=32
10460 GOTO 5730
10470 SP2=SP2-2:IF SP2<0 THEN SP2=0:GOTO 5730
10480 ON SP GOTO 10490,10500,10510,10520,10530,10540,10550,10560,10650,10750
10481 DATA i restore thee,fright causes you to falter,balls of fire engulf you,it becomes hard to see,a shield for my body,i will a wall,i must see,gravity leaves,rise from the dead,i point and you die
10490 A$="You cast a restoration spell!":GOSUB 9100:PTS#=PTS#+CO:GOSUB 6650:GOTO 5730
10500 A$="You cast a scare spell!":GOSUB 9100:MHPM=DX:MHPMC=2:GOTO 5730
10510 A$="You cast a fireball spell!":GOSUB 9100:IF MON=0 THEN 5730 ELSE GOSUB 9200:BONUS=3:GOTO 7910
10520 A$="You cast an obscurement spell!":GOSUB 9100:SHP=AR:SHPC=2:GOTO 5730
10530 A$="You cast a power shield spell!":GOSUB 9100:STP=ST:STPC=2:GOTO 5730
10540 A$="You cast a wall of will spell!":GOSUB 9100:SLP=1:SLPC=2:GOTO 5730
10550 A$="You cast a light spell!":GOSUB 9100:L=3:GOSUB 6690:GOTO 5730
10560 A$="You cast a levitate spell!":GOSUB 9100
10570 FOR K=1 TO INT(RND*4+2)
10580 RAN!=RND:IF RAN!<.3 THEN XO=-2 ELSE IF RAN!>.7 THEN XO=2 ELSE XO=0
10590 RAN!=RND:IF RAN!<.3 THEN YO=-2 ELSE IF RAN!>.7 THEN YO=2 ELSE YO=0
10610 IF XCO+XO<2 OR XCO+XO>21 OR YCO+YO<2 OR YCO+YO>75 THEN 10580
10611 IF Z(XCO+XO,YCO+YO)<>32 THEN 10580
10612 IF XO=0 AND YO=0 THEN 10580
10613 A$="":B$="":IF XO<0 THEN A$="A" ELSE IF XO>0 THEN A$="B"
10614 IF YO>0 THEN B$="C" ELSE IF YO<0 THEN B$="D"
10750 A$="You cast a finger of death spell!":GOSUB 9100:IF MON=0 THEN 5730 ELSE GOSUB 9200:GOTO 8170
10760 SP3=SP3-3:IF SP3<0 THEN SP3=0:GOTO 5730
10770 ON SP GOTO 10780,10790,10800,10810,10820,10830,10840,10850,10970,11070
10771 DATA i regenerate thee,you must not remember,a bolt from hell carries thee away,multicolored shield protect me,i create a wall,i cast sleep unto your eyes,i will see more,i will travel through thee,monsters of hell hear me,you will all die
10780 A$="You cast a regeneration spell!":GOSUB 9100:PTS#=PTS#+CO+CO:GOSUB 6650:GOTO 5730
10790 A$="You cast a forget spell!":GOSUB 9100:MHPM=DX:MHPMC=3:GOTO 5730
10800 A$="You cast a lightning bolt spell!":GOSUB 9100:IF MON=0 THEN 5730 ELSE GOSUB 9200:BONUS=4:GOTO 7910
10810 A$="You cast a phantasmal force spell!":GOSUB 9100:SHP=AR:SHPC=3:GOTO 5730
10820 A$="You cast a wall of force spell!":GOSUB 9100:STP=ST:STPC=3:GOTO 5730
10830 A$="You cast a charm monster spell!":GOSUB 9100:SLP=1:SLPC=3:GOTO 5730
10840 A$="You cast a continual light spell!":GOSUB 9100:LL=3:LLC=8:GOSUB 6690:GOTO 5730
10850 A$="You cast a passwall spell!(press cursor key to move)":GOSUB 9100:IF PWL THEN RETURN
10860 PWL=1:FOR Q=1 TO INT(RND*4+2):GOSUB 10870:NEXT:WHILE Z(XCO,YCO)<>88:GOSUB 10870:WEND:PWL=0:GOTO 5730
10870 GOSUB 9270:XO=XCO:YO=YCO:IF X=2 THEN XO=XO+1:A$="B":IF XO<23 THEN 10940
10880 IF X=4 THEN YO=YO-1:A$="D":IF YO>1 THEN 10940
10890 IF X=6 THEN YO=YO+1:A$="C":IF YO<76 THEN 10940
10900 IF X=8 THEN XO=XO-1:A$="A":IF XO>1 THEN 10940
10910 IF X=1 AND MON THEN 7840
10920 IF X=7 AND MON THEN 7540
10921 IF LEN(X$)<>2 THEN 10870
10922 SP=ASC(MID$(X$,2)):SPN=0
10923 IF SP>58 AND SP<69 THEN SPN=1:SP=SP-58
10924 IF SP>93 AND SP<104 THEN SPN=2:SP=SP-93
10925 IF SP>83 AND SP<94 THEN SPN=3:SP=SP-83
10926 IF SP>103 AND SP<114 THEN SPN=4:SP=SP-103
10927 ON SPN GOTO 10250,10470,10760,11290
10930 GOTO 10870
10940 IF Z(XCO,YCO)=88 THEN Z(XCO,YCO)=32:TIMER OFF:CALL OIO("s u"):TIMER ON
10950 CALL OIO(A$):XCO=XO:YCO=YO:IF Z(XCO,YCO)<>32 THEN GOSUB 6560 ELSE GOSUB 6550
10960 RETURN
10970 A$="You cast a demon summon spell!":GOSUB 9100:I=0
10980 FOR I=1 TO INT(RND*3+1)
10990 RAN!=RND:IF RAN!<.3 THEN XO=-1 ELSE IF RAN!>.7 THEN XO=1 ELSE XO=0
11000 RAN!=RND:IF RAN!<.3 THEN YO=-1 ELSE IF RAN!>.7 THEN YO=1 ELSE YO=0
11010 IF (XO<>0 AND YO<>0) OR (XO=0 AND YO=0) THEN 10990
11020 IF XCO+XO<2 OR XCO+XO>22 OR YCO+YO<2 OR YCO+YO>75 THEN 10990
11240 A$ = "You killed all the monsters on this level! You gain" + STR$(EX#) + " exp!"
11250 GOSUB 9100
11260 GOSUB 8980
11270 GOSUB 9200
11280 RETURN
11290 SP4=SP4-4:IF SP4<0 THEN SP4=0:GOTO 5730
11300 ON SP GOTO 11310,11320,11330,11340,11350,11360,11370,11410,11630,11640
11301 DATA i resurrect thee,i frighten thee,you turn to dust,swirling swords slice you,may my weapon become powerful,you are binded tightly,i travel to parts unknown,you become another,let me pass,everything dies continuously
11310 A$="You cast a resurrection spell!":GOSUB 9100:PTS#=PTS#+CO*3:GOSUB 6650:GOTO 5730
11320 A$="You cast a fear spell!":GOSUB 9100:MHPM=DX:MHPC=4:GOTO 5730
11330 A$="You cast a disintegrate spell!":GOSUB 9100:IF MON=0 THEN 5730 ELSE GOSUB 9200:BONUS=5:GOTO 7910
11340 A$="You cast a blade barrier spell!":GOSUB 9100:SHP=AR:SHPC=4:GOTO 5730
11350 A$="You cast an enchanted weapon spell!":GOSUB 9100:STP=ST:STPC=4:GOTO 5730
11360 A$="You cast a hold monster spell!":GOSUB 9100:SLP=1:SLPC=4:GOTO 5730
11370 A$="You cast a teleport spell!":GOSUB 9100
11380 IF Z(XCO,YCO)=88 THEN Z(XCO,YCO)=32
11381 MON=0:TIMER OFF:A$="s":IF Z(I,J)<>94 THEN A$=A$+CHR$(Z(XCO,YCO)) ELSE A$=A$+" "
11382 CALL OIO(A$+"u"):TIMER ON
11396 A$="":TXO=XCO:TYO=YCO:FOR I=1 TO INT(RND*15+1)
11397 IF RND>.5 THEN XO=-1:A$=A$+"A" ELSE XO=1:A$=A$+"B"
11398 IF RND>.5 THEN YO=-1:A$=A$+"D" ELSE YO=1:A$=A$+"C"
11399 IF TXO+XO<1 OR TXO+XO>22 OR TYO+YO<1 OR TYO+YO>76 THEN 11397
11404 TXO=TXO+XO:TYO=TYO+YO:NEXT:IF Z(TXO,TYO)<>32 THEN 11396