10 SUB NEWOP(CHN$) & 800 COM (DNDA) N$(1%)=8%,C(64),L%(21%,21%),I(8%),I1(8%) & 900 DIM #8%, N2$(100%,1%)=8%, C2(100%,64%) & 1000 ON ERROR GOTO 19000 & \I%=NOECHO(0%) & 1010 PRINT IF CCPOS(0%) & \PRINT "Opr> "; & \CALL IN1CHR(C%) & \GOTO 1010 IF C%<26% & \CMD%=INSTR(1%,"E~KM",CHR$(C%)) & \UNLESS CMD% THEN & PRINT & \PRINT "%Invalid option. Try (E)xit, (K)ill, or (M)odify" & \GOTO 1010 & 1020 ON CMD% GOTO 32767, 1030, 1040, 1100 & 1030 PRINT "Modify dungeon" & !\CALL DMOD & \GOTO 1010 & 1040 PRINT "Kill characters" & \PRINT "By (D)ate or (L)evel : "; & \CALL IN1CHR(C%) & \C$=CHR$(C%) & \GOTO 1010 IF C$<>"D" AND C$<>"L" & \GOTO 1060 IF C$="D" & \PRINT "Level" & 1050 I%=ECHO(0%) & \INPUT "Kill all characters ON or BELOW level ";L% & \GOTO 1010 IF L%<1% & \I%=NOECHO(0%) & \D%=FNFIL%(-1%) & \PRINT "The following characters have been killed (if any):" & \FOR X%=1% TO 100% & \GOTO 1055 IF C2(X%,0%)<>1% & \C2(X%,0%)=0% IF C2(X%,8%)<=L% & \PRINT N2$(X%,0%) IF C2(X%,8%)<=L% & 1055 NEXT X% & \CLOSE 8% & \GOTO 1010 & 1060 PRINT "Date" & \PRINT "Kill all characters accessed on or before---" & 1070 I%=ECHO(0%) & \PRINT "What date "; & \INPUT D$ & \I%=NOECHO(0%) & \GOTO 1010 UNLESS LEN(D$) & \IF LEN(D$)<>9% THEN PRINT "%Invalid date format." & \PRINT "Please use 'dd-mmm-yy' format." & \GOTO 1070 & 1080 Y%=VAL(MID(D$,8%,2%)) & \Y%=1000%*(Y%-70%) & \WHILE -1% & \GOTO 1090 IF CVT$$(DATE$(Y%),-1%)=CVT$$(D$,-1%) & \Y%=Y%+1% & \GOTO 1085 IF INSTR(1%,DATE$(Y%),"X") & \NEXT & 1085 PRINT "%Invalid date - ";D$;"." & \PRINT "Please use 'dd-mmm-yy' format." & \GOTO 1070 & 1090 PRINT "The following characters have been killed:" & \D%=FNFIL%(-1%) & \FOR X%=1% TO 100% & \GOTO 1095 IF C2(X%,0%)<>1% & \C2(X%,0%)=0% IF C2(X%,60%)<=Y% & \PRINT N2$(X%,0%) IF C2(X%,60%)<=Y% & 1095 NEXT X% & \CLOSE 8% & \PRINT & \GOTO 1010 & 1100 PRINT "Modify characters" & \I%=ECHO(0%) & \D%=FNFIL%(0%) & 1110 INPUT "Name (add /S for secret) or Attribute (E=EXIT) ";C$ & \C$=CVT$$(C$,-1%) & \GOTO 1110 IF C$="" & \IF INSTR(1%,C$,"E") THEN I%=NOECHO(0%) & \GOTO 1010 & 1120 GOTO 1140 IF INSTR(1%,C$,"A") & \INPUT "Character # ";C% & \GOTO 1110 IF C%<=0% OR C%>99% & \PRINT "Name='";N2$(C%,0%);"'" & \INPUT "New ";N$ & \GOTO 1130 UNLESS LEN(N$) & \D%=FNFIL%(-1%) & \N2$(C%,0%)=N$ & \PRINT "Changed to '";N$;"'." & \D%=FNFIL%(0%) & 1130 GOTO 1110 UNLESS INSTR(1%,C$,"/S") & \PRINT "Secret='";N2$(C%,1%);"'" & \INPUT "New ";N$ & \GOTO 1110 IF N$="" & \D%=FNFIL%(-1%) & \N2$(C%,1%)=N$ & \PRINT "Changed to '";N$;"'." & \D%=FNFIL%(0%) & \GOTO 1110 & 1140 INPUT "Chr # ";C% & \GOTO 1110 IF C%<=0% OR C%>99% & \INPUT "Attribute (0..64) ";A% & \GOTO 1140 IF A%<0% OR A%>64% & \PRINT "Current value is";C2(C%,A%) & \INPUT "New value "; N$ & \GOTO 1140 IF CVT$$(N$,-1%)="" & 1150 N%=VAL(N$) & \D%=FNFIL%(-1%) & \C2(C%,A%)=N% & \PRINT "Changed to";N% & \D%=FNFIL%(0%) & \GOTO 1140 & 15000 DEF FNFIL%(W%) & 15050 IF NOT(W%) THEN OPEN "GAME:DNDCHR.DAT/MO:8192" FOR INPUT AS FILE 8% & \GOTO 15150 & 15100 OPEN "GAME:DNDCHR.DAT" FOR INPUT AS FILE 8% & \IF W% AND (STATUS AND 1024%)<>0% THEN & PRINT "[File busy - please wait]" & \SLEEP 2% & \GOTO 15100 & 15150 FNEND & 19000 I%=NOECHO(0%) & \IF ERR=11% THEN RESUME 1010 UNLESS ERL=1010 & \RESUME 32767 & 19100 IF ERL=1050 OR ERL=1070 OR ERL=1080 THEN PRINT "%Illegal entry." & \RESUME 1010 & 19200 PRINT "?Error" & \CLOSE 8 & \RESUME 1010 & 19999 ON ERROR GOTO 0 & 32767 PRINT "Exit" & \CLOSE 8% & \C(64%)=3% & \CHN$="NEWDND" & \SUBEND