10 'DUNCHAR THE PLAYER CHARACTERS
20    DEFINT A-Z
30    GOSUB 2630      'TITLE SCREEN
40    GOSUB 3440      'OPEN FILES
50 'GET REPLY
60    GOSUB 2800      'PRINT MENU
70    GOSUB 4090      'GET REPLY
80    IF REPLY$ = "9" THEN GOTO 2290
90    IF REPLY$ = "1" THEN GOSUB 130 'CREATE A PLAYER
100    IF REPLY$ = "2" THEN GOSUB 4150 'LIST A PLAYER
110    IF REPLY$ = "3" THEN GOSUB 2330 'KILL A PLAYER
120    GOTO 50
130 'CREATE A PLAYER
140    CLS
150    GOSUB 1480      'GET NEXT AVAILABLE PLAYER
160    GOSUB 300      'GET CHARACTER ABILITIES
170    GOSUB 1180      'PRINT ABILITIES
180    GOSUB 680      'GET CLASS OF CHARACTER
190    CLS
200    GOSUB 1640      'ADJUST ABILITIES
210    GOSUB 2970      'GET HIT POINTS
220    GOSUB 3220      'GET MONEY
230    GOSUB 3330      'GET CHARACTER NAME
240    GOSUB 3740      'GET ALIGNMENT
250    GOSUB 3890      'GET SAVING THROWS
260    GOSUB 4820      'GET ARMOR CLASS ADJUSTMENT
270    GOSUB 3510      'UPDATE PLAYER RECORD
280 RETURN
290 '
300 'GET CHARACTER ABILITIES
310    RANDOMIZE TIMER
320    LET STRENGTH = INT(RND * 6) + 1
330    LET STRENGTH = STRENGTH + INT(RND * 6) + 1
340    LET STRENGTH = STRENGTH + INT(RND * 6) + 1
350    RANDOMIZE TIMER
360    LET INTELLIGENCE = INT(RND * 6) + 1
370    LET INTELLIGENCE = INTELLIGENCE  + INT(RND * 6) + 1
380    LET INTELLIGENCE = INTELLIGENCE  + INT(RND * 6) + 1
390    RANDOMIZE TIMER
400    LET WISDOM = INT(RND * 6) + 1
410    LET WISDOM = WISDOM + INT(RND * 6) + 1
420    LET WISDOM = WISDOM  + INT(RND * 6) + 1
430    RANDOMIZE TIMER
440    LET DEXTERITY = INT(RND * 6) + 1
450    LET DEXTERITY = DEXTERITY + INT(RND * 6) + 1
460    LET DEXTERITY = DEXTERITY + INT(RND * 6) + 1
470    RANDOMIZE TIMER
480    LET CONSTITUTION = INT(RND * 6) + 1
490    LET CONSTITUTION = CONSTITUTION + INT(RND * 6) + 1
500    LET CONSTITUTION = CONSTITUTION + INT(RND * 6) + 1
510    RANDOMIZE TIMER
520    LET CHARISMA = INT(RND * 6) + 1
530    LET CHARISMA = CHARISMA + INT(RND * 6) + 1
540    LET CHARISMA = CHARISMA + INT(RND * 6) + 1
550 'CHECK FOR LOOSER
560    LET VERY.LOW = 0
570    IF STRENGTH < 7 THEN LET VERY.LOW = VERY.LOW + 1
580    IF INTELLIGENCE < 7 THEN LET VERY.LOW = VERY.LOW + 1
590    IF WISDOM < 7 THEN LET VERY.LOW = VERY.LOW + 1
600    IF DEXTERITY < 7 THEN LET VERY.LOW = VERY.LOW + 1
610    IF CONSTITUTION < 7 THEN LET VERY.LOW = VERY.LOW + 1
620    IF CHARISMA < 7 THEN LET VERY.LOW = VERY.LOW + 1
630    IF VERY.LOW > 1 THEN GOTO 310
640    LET TOT.SCORE = STRENGTH + INTELLIGENCE + WISDOM + DEXTERITY                      + CONSTITUTION + CHARISMA
650    IF TOT.SCORE < 54 THEN GOTO 300
660 RETURN
670 '
680 'GET CLASS CHOICE
690    GOSUB 1350      'PRINT CHOICES
700 ' FIND HIGHEST SCORES
710    LET HISCORE$ = "STRENGTH"
720    LET HISCORE = STRENGTH
730    LET REC1$ = ""
740    LET REC2$ = ""
750    IF INTELLIGENCE > HISCORE THEN LET HISCORE = INTELLIGENCE:                        LET HISCORE$ = "INTELLIGENCE"
760    IF WISDOM > HISCORE THEN LET HISCORE = WISDOM:                                    LET HISCORE$ = "WISDOM"
770    IF DEXTERITY > HISCORE THEN LET HISCORE = DEXTERITY:                              LET HISCORE$ = "DEXTERITY"
780    IF HISCORE$ <> "STRENGTH" THEN LET  NEXTHI$ = "STRENGTH"                         ELSE LET NEXTHI$ = ""
790    IF HISCORE$ <> "STRENGTH" THEN LET NEXTHI = STRENGTH                              ELSE LET NEXTHI = 0
800    IF (INTELLIGENCE > NEXTHI) AND (HISCORE$ <> "INTELLIGENCE")                        THEN LET NEXTHI = INTELLIGENCE:                                                 LET NEXTHI$ = "INTELLIGENCE"
810    IF (WISDOM > NEXTHI) AND (HISCORE$ <> "WISDOM")                                    THEN LET NEXTHI = WISDOM:                                                       LET NEXTHI$ = "WISDOM"
820    IF (DEXTERITY > NEXTHI) AND (HISCORE$ <> "DEXTERITY")                              THEN LET NEXTHI = DEXTERITY:                                                    LET NEXTHI$ = "DEXTERITY"
830  'GET 1ST RECOMMENDATION
840    IF (STRENGTH > 12 AND INTELLIGENCE > 12) AND (INTELLIGENCE > DEXTERITY)             THEN LET REC1$ = "ELF":                                                         GOTO 920
850    IF (STRENGTH > 12 AND DEXTERITY > 12) THEN LET REC1$ = "HALFLING":                  GOTO 920
860    IF (HISCORE$ = "STRENGTH" OR NEXTHI$ = "STRENGTH") AND (HISCORE$ = "DEXTERITY" OR NEXTHI$ = "DEXTERITY") THEN LET REC1$ = "HALFLING":                       GOTO  920
870    IF (HISCORE$ = "STRENGTH" OR NEXTHI$ = "STRENGTH") AND (HISCORE$ = "INTELLIGENCE" OR NEXTHI$ = "INTELLIGENCE") THEN LET REC1$ = "ELF":                       GOTO  920
880    IF HISCORE$ = "INTELLIGENCE" THEN LET REC1$ = "MAGIC-USER":                        LET HISCORE  = 0:                                                               GOTO 920
890    IF HISCORE$ = "WISDOM" THEN LET REC1$ = "CLERIC":                                  LET HISCORE = 0:                                                                GOTO 920
900    IF HISCORE$ = "DEXTERITY" THEN LET REC1$ = "THIEF":                                LET HISCORE = 0:                                                               GOTO 920
910    IF HISCORE$ = "STRENGTH" THEN LET REC1$ = "DWARF":                               LET REC2$ = "FIGHTER":                                                          GOTO 980
920  'GET SECOND RECOMMENDATION
930    IF NEXTHI > HISCORE THEN LET NEXTHI = HISCORE:                                    LET HISCORE$ = NEXTHI$
940    IF HISCORE$ = "INTELLIGENCE" THEN LET REC2$ = "MAGIC-USER":                        GOTO 980
950    IF HISCORE$ = "WISDOM" THEN LET REC2$ = "CLERIC":                                 GOTO 980
960    IF HISCORE$ = "DEXTERITY" THEN LET REC2$ = "THIEF":                                GOTO 980
970    IF NEXTHI$ = "STRENGTH" THEN LET REC2$ = "DWARF":                               IF REC1$ = "" THEN LET REC2$ = "FIGHTER"
980  'PRINT RECOMMENDATIONS
990    IF REC1$ = "" THEN LET REC2$ = REC1$:                                             LET REC2$ = ""
1000    PRINT
1010    PRINT "I RECOMMEND ";REC1$;
1020    IF (REC2$ <> "") AND (REC2$ <> REC1$) THEN PRINT " OR ";REC2$
1030    LET COL = POS(0)
1040    LET ROW = CSRLIN
1050    INPUT CLASS$
1060    IF LEFT$(CLASS$,1)="C" THEN CLASS$="CLERIC": GOTO 1160
1070    IF LEFT$(CLASS$,1)="D" THEN CLASS$="DWARF": GOTO 1160
1080    IF LEFT$(CLASS$,1)="E" THEN CLASS$="ELF": GOTO 1160
1090    IF LEFT$(CLASS$,1)="F" THEN CLASS$="FIGHTER": GOTO 1160
1100    IF LEFT$(CLASS$,1)="H" THEN CLASS$="HALFLING": GOTO 1160
1110    IF LEFT$(CLASS$,1)="M" THEN CLASS$="MAGIC-USER": GOTO 1160
1120    IF LEFT$(CLASS$,1)="T" THEN CLASS$="THIEF": GOTO 1160
1130    PRINT "WHAT?"
1140    LOCATE ROW,COL
1150    GOTO 1030
1160  RETURN
1170 '
1180 'PRINT SCORES
1190    LOCATE 1,10
1200    PRINT "PLAYER ABILITIES"
1210    LOCATE 2,10
1220    PRINT "STRENGTH     ";STRENGTH
1230    LOCATE 3,10
1240    PRINT "INTELLIGENCE ";INTELLIGENCE
1250    LOCATE 4,10
1260    PRINT "WISDOM       ";WISDOM
1270    LOCATE 5,10
1280    PRINT "DEXTERITY    ";DEXTERITY
1290    LOCATE 6,10
1300    PRINT "CONSTITUTION ";CONSTITUTION
1310    LOCATE 7,10
1320    PRINT "CHARISMA     ";CHARISMA
1330 RETURN
1340 '
1350 'PRINT CHOICES
1360    LOCATE 10,5
1370    PRINT "CHOOSE A CLASS FOR YOUR CHARACTER"
1380    PRINT
1390    PRINT "             CLERIC"
1400    PRINT "             DWARF"
1410    PRINT "             ELF"
1420    PRINT "             FIGHTER"
1430    PRINT "             HALFLING"
1440    PRINT "             MAGIC-USER"
1450    PRINT "             THIEF"
1460 RETURN
1470 '
1480 'GET NEXT AVAILABLE PLAYER
1490    LET RNO = 0
1500  'GET A PLAYER RECORD
1510    LET RNO = RNO + 1
1520    IF RNO > 10 THEN                                                                  PRINT "NO MORE AVAILABLE PLAYERS ":                                             STOP
1530    GET #1,RNO
1540    IF NM$ <> SPACE$(24) THEN GOTO 1500
1550    PRINT
1560    PRINT "       YOUR PLAYER NUMBER IS ";RNO
1570    PRINT
1580    PRINT "        HIT ANY KEY TO CONTINUE"
1590    PRINT
1600    GOSUB 4090      WAIT
1610    CLS
1620 RETURN
1630 '
1640 'ADJUST ABILITIES
1650    CLS
1660    GOSUB 1170      'PRINT ABILITIES
1670    PRINT
1680    PRINT "YOUR CHARACTER'S CLASS IS ";CLASS$
1690    PRINT
1700    LET MSG$ = "YOU MAY ADJUST "
1710    IF (CLASS$ = "MAGIC-USER") THEN LET MSG$ = MSG$ + "INTELLIGENCE "
1720    IF (CLASS$ = "CLERIC") THEN LET MSG$ = MSG$ + "WISDOM "
1730    IF (CLASS$ = "FIGHTER") OR (CLASS$ = "DWARF") THEN                                    LET MSG$ = MSG$ + "STRENGTH "
1740    IF (CLASS$ = "HALFLING") THEN                                                           LET MSG$ = MSG$ + "STRENGTH OR DEXTERITY "
1750    IF (CLASS$ = "THIEF") THEN                                                           LET MSG$ = MSG$ + "DEXTERITY "
1760    IF (CLASS$ = "ELF") THEN                                                           LET MSG$ = MSG$ + "STRENGTH OR INTELLIGENCE "
1770    LET MSG$ = MSG$ + "ONE POINT BY"
1780    LET MSG1$ = "LOWERING "
1790    IF ((CLASS$  = "MAGIC-USER") OR (CLASS$ = "CLERIC"))                              AND STRENGTH > 10                                                               THEN LET MSG1$ = MSG1$ + "STRENGTH "
1800    IF ((CLASS$  = "FIGHTER") OR (CLASS$ = "DWARF") OR (CLASS$ = "HALFLING")          OR  (CLASS$ = "THIEF") OR (CLASS$ = "CLERIC"))   AND INTELLIGENCE > 10                  THEN LET MSG1$ = MSG1$ + "INTELLIGENCE "
1810    IF ((CLASS$  = "FIGHTER") OR (CLASS$ = "DWARF") OR (CLASS$ = "HALFLING")OR  (CLASS$ = "THIEF") OR (CLASS$ = "MAGIC-USER") OR (CLASS$ = "ELF"))           AND WISDOM > 10  THEN LET MSG1$ = MSG1$ + "WISDOM "
1820    IF MSG1$ = "LOWERING " THEN PRINT  "YOU CANNOT ADJUST ANY ABILITY":              PRINT  "HIT ENTER TO CONTINUE":                                                GOTO 1910
1830    LET MSG1$ = MSG1$ + " TWO POINTS"
1840    PRINT MSG$
1850    PRINT MSG1$
1860    PRINT
1870    PRINT "     IF YOU WISH TO RAISE AN ABILITY,   ENTER  THE ABILITY."
1880    PRINT
1890    PRINT "     IF YOU DON'T WANT TO ADJUST ANY    ABILITIES, JUST PRESS ENTER."
1900    LOCATE 21,1
1910    PRINT "                        "
1920    LOCATE 21,1
1930    INPUT ADJ.ABILITY$
1940    IF ADJ.ABILITY$ = "" THEN GOTO 2280
1950    IF LEFT$(ADJ.ABILITY$,1)="S" THEN ADJ.ABILITY$="STRENGTH": GOTO 1990
1960    IF LEFT$(ADJ.ABILITY$,1)="I" THEN ADJ.ABILITY$="INTELLIGENCE": GOTO 1990
1970    IF LEFT$(ADJ.ABILITY$,1)="W" THEN ADJ.ABILITY$="WISDOM": GOTO 1990
1980    IF LEFT$(ADJ.ABILITY$,1)="D" THEN ADJ.ABILITY$="DEXTERITY": GOTO 1990
1990    IF (ADJ.ABILITY$ <> "STRENGTH") AND  (ADJ.ABILITY$ <> "INTELLIGENCE") AND  (ADJ.ABILITY$ <> "WISDOM") AND (ADJ.ABILITY$ <> "DEXTERITY") THEN GOTO 1900
2000    LOCATE 22,1
2010    PRINT "WHAT ABILITY DO YOU WANT TO LOWER "
2020    PRINT "                        "
2030    LOCATE 23,1
2040    INPUT " ";LOW.ABILITY$
2050    IF LEFT$(LOW.ABILITY$,1)="S" THEN LOW.ABILITY$="STRENGTH": GOTO 2090
2060    IF LEFT$(LOW.ABILITY$,1)="I" THEN LOW.ABILITY$="INTELLIGENCE": GOTO 2090
2070    IF LEFT$(LOW.ABILITY$,1)="W" THEN LOW.ABILITY$="WISDOM": GOTO 2090
2080    IF LOW.ABILITY$ = ADJ.ABILITY$ THEN GOTO 1900
2090    IF (LOW.ABILITY$ <> "STRENGTH") AND  (LOW.ABILITY$ <> "INTELLIGENCE")             AND  (LOW.ABILITY$ <> "WISDOM")  THEN GOTO 2000
2100    IF (LOW.ABILITY$ = "STRENGTH") AND (STRENGTH < 11) THEN GOTO 2200
2110    IF (LOW.ABILITY$ = "WISDOM") AND (WISDOM < 11) THEN GOTO 2200
2120    IF (LOW.ABILITY$ = "INTELLIGENCE")                                                 THEN LET INTELLIGENCE = INTELLIGENCE - 2
2130    IF (LOW.ABILITY$ = "STRENGTH")                                                     THEN LET STRENGTH = STRENGTH - 2
2140    IF (LOW.ABILITY$ = "WISDOM")                                                       THEN LET WISDOM = WISDOM - 2
2150    IF (ADJ.ABILITY$ = "INTELLIGENCE")                                                 THEN LET INTELLIGENCE = INTELLIGENCE + 1
2160    IF (ADJ.ABILITY$ = "STRENGTH")                                                    THEN LET STRENGTH = STRENGTH + 1
2170    IF (ADJ.ABILITY$ = "DEXTERITY")                                                   THEN LET DEXTERITY  = DEXTERITY + 1
2180    IF (ADJ.ABILITY$ = "WISDOM")                                                      THEN LET WISDOM  = WISDOM + 1
2190    GOTO 1640
2200 'CANT ADJUST
2210    CLS
2220    PRINT "YOU CAN'T LOWER THAT ABILITY"
2230    PRINT "HIT ANY KEY TO CONTINUE"
2240    GOSUB 4090      WAIT
2250    CLS
2260    GOSUB 1180
2270    GOTO 1640
2280 RETURN
2290 'END
2300    CLOSE
2310     CHAIN "MENU",1000
2320 '
2330 'KILL A PLAYER
2340    CLS
2350    PRINT "      KILL A PLAYER CHARACTER"
2360    PRINT
2370    PRINT "IF YOU KNOW THE PLAYER NUMBER, ENTER IT, OTHERWISE ENTER 0"
2380    INPUT RNO
2390    IF RNO < 0 OR RNO > 10 THEN PRINT "WHAT?": GOTO 2370
2400    IF RNO = 0 THEN GOTO 2430       'GET PLAYER NAME
2410    GET #1,RNO
2420    GOTO 2520       'DOUBLE CHECK
2430 'GET PLAYERS NAME
2440    INPUT "ENTER CHARACTER'S NAME ",INNM$
2450    LET SEEKNM$ = SPACE$(24)
2460    LSET SEEKNM$ = INNM$
2470    LET RNO = 0
2480    LET RNO = RNO + 1
2490    IF RNO > 10 THEN PRINT "CHARACTER NAME NOT FOUND":                                GOTO 2370
2500    GET #1,RNO
2510    IF NM$ <> SEEKNM$ THEN GOTO 2480
2520 'DOUBLE CHECK
2530    PRINT "DO YOU WANT TO KILL ";NM$;"?.  ENTER YES OR NO"
2540    INPUT REPLY$
2550    IF LEFT$(REPLY$,1) = "Y" OR LEFT$(REPLY$,1) = "y" THEN GOTO 2570
2560    GOTO 2610
2570 ' KILL THE CHARACTER
2580    LSET NM$ = SPACE$(24)
2590    PUT #1,RNO
2600    GOSUB 4620 'ZERO SUPPLIES
2610 RETURN
2620 '
2630 'TITLE SCREEN
2640      SCREEN 3
2650      KEY OFF
2660      WIDTH 20
2670      COLOR 1,4
2680      CLS
2690      LOCATE 4,1
2700    PRINT "       THE"
2710    LOCATE 7,1
2720    PRINT "      PLAYER"
2730    LOCATE 10,1
2740    PRINT "    CHARACTERS"
2750 'KILL TIME
2760     FOR X = 1 TO 500
2770       NEXT X
2780 RETURN
2790 '
2800 'PRINT MENU
2810     SCREEN 1
2820     WIDTH 40
2830     COLOR 4,1
2840     CLS
2850     LOCATE 3,1
2860     PRINT "         THE PLAYER CHARACTERS"
2870    LOCATE  7,6
2880    PRINT "1. CREATE A NEW PLAYER CHARACTER"
2890    LOCATE 9,6
2900    PRINT "2. LIST A PLAYER CHARACTER"
2910    LOCATE 11,6
2920    PRINT "3. KILL A PLAYER CHARACTER"
2930    LOCATE 13,6
2940    PRINT "9. END "
2950 RETURN
2960 '
2970 'GET HIT POINTS
2980    CLS
2990    PRINT "            HIT POINTS"
3000    PRINT
3010    PRINT
3020    IF CLASS$ = "CLERIC" THEN LET DICE = 6
3030    IF CLASS$ = "DWARF" THEN LET DICE = 8
3040    IF CLASS$ = "ELF" THEN LET DICE = 6
3050    IF CLASS$ = "FIGHTER" THEN LET DICE = 8
3060    IF CLASS$ = "HALFLING" THEN LET DICE = 6
3070    IF CLASS$ = "MAGIC-USER" THEN LET DICE = 4
3080    IF CLASS$ = "THIEF" THEN LET DICE = 4
3090    LET HIT.POINTS = INT(DICE * RND) + 1
3100    IF HIT.POINTS < 3 THEN GOTO 3090
3110    IF CONSTITUTION < 4 THEN LET HIT.POINTS = HIT.POINTS - 3:                         GOTO 3180
3120    IF CONSTITUTION < 6 THEN LET HIT.POINTS = HIT.POINTS - 2:                          GOTO 3180
3130    IF CONSTITUTION < 9 THEN LET HIT.POINTS = HIT.POINTS - 1:                         GOTO 3180
3140    IF CONSTITUTION < 13 THEN  GOTO 3180
3150    IF CONSTITUTION < 16 THEN LET HIT.POINTS = HIT.POINTS +1:                          GOTO 3180
3160    IF CONSTITUTION < 18 THEN LET HIT.POINTS = HIT.POINTS +2:                          GOTO 3180
3170    LET HIT.POINTS = HIT.POINTS +3
3180    IF HIT.POINTS < 3 THEN GOTO 3090
3190    PRINT "YOUR HIT POINTS ARE  ";HIT.POINTS
3200 RETURN
3210 '
3220 'GET MONEY
3230    LET MONEY! = 0
3240    RANDOMIZE TIMER
3250    LET MONEY! = INT(RND * 6) + 1
3260    LET MONEY! = MONEY! + INT(RND * 6) + 1
3270    LET MONEY! = MONEY! + INT(RND * 6) + 1
3280    LET MONEY! = MONEY! * 10
3290    PRINT
3300    PRINT "YOU HAVE ";MONEY!;" GOLD PIECES
3310 RETURN
3320 '
3330 'GET NAME FOR CHARACTER
3340    PRINT
3350    PRINT "CHOOSE A NAME FOR YOUR CHARACTER"
3360    PRINT
3370    LET COL = POS(0)
3380    LET ROW = CSRLIN
3390    PRINT "........................"
3400    LOCATE ROW,COL
3410    INPUT CHAR.NAME$
3420 RETURN
3430 '
3440 'OPEN FILES
3450      OPEN "DUNCHAR" AS #1 LEN = 122
3460      FIELD #1,2 AS STRN$,2 AS INTL$,2 AS WIS$,2 AS DEX$,2 AS CON$,2 AS CHA$,10 AS CLAS$,2 AS HIT$,4 AS MONEY$,2 AS LVL$,2 AS ARM$,2 AS SV.POISON$,2 AS SV.MAGIC$,2 AS SV.STONE$,2 AS SV.DRAG$,2 AS SV.SPELL$,4 AS EXPR$,24 AS NM$,7 AS ALIGN$,45 AS D$ ''
3470    OPEN "DUNSHOP" AS #2 LEN=44
3480    FIELD #2,2 AS SID$,1 AS SCLASS$,15 AS SNAME$,2 AS SCOST$,2 AS SDAM$,2 AS SWT$,2 AS P1$,2 AS P2$,2 AS P3$,2 AS P4$,2 AS P5$,2 AS P6$,2 AS P7$,2 AS P8$,2 AS P9$,2 AS P10$
3490 RETURN
3500 '
3510 'UPDATE PLAYER RECORD
3520    LSET STRN$ = MKI$(STRENGTH)
3530    LSET INTL$ = MKI$(INTELLIGENCE)
3540    LSET WIS$ = MKI$(WISDOM)
3550    LSET DEX$ = MKI$(DEXTERITY)
3560    LSET CON$ = MKI$(CONSTITUTION)
3570    LSET CHA$ = MKI$(CHARISMA)
3580    LSET CLAS$ = CLASS$
3590    LSET HIT$ = MKI$(HIT.POINTS)
3600    LSET MONEY$ = MKS$(MONEY!)
3610    LSET LVL$ = MKI$(1)
3620    LSET ARM$ = MKI$(ARMOR.CLASS)
3630    LSET SV.POISON$ = MKI$(SV.POISON)
3640    LSET SV.MAGIC$ = MKI$(SV.MAGIC)
3650    LSET SV.STONE$ = MKI$(SV.STONE)
3660    LSET SV.DRAG$ = MKI$(SV.DRAGON)
3670    LSET SV.SPELL$ = MKI$(SV.SPELL)
3680    LSET EXPR$ = MKS$(0)
3690    LSET NM$ = CHAR.NAME$
3700    LSET ALIGN$ = ALIGNMENT$
3710    PUT #1,RNO
3720 RETURN
3730 '
3740 'GET ALIGNMENT
3750    CLS
3760    PRINT "          CHARACTER ALIGNMENT"
3770    PRINT
3780    PRINT "             LAWFUL"
3790    PRINT "             CHAOTIC"
3800    PRINT "             NEUTRAL"
3810    PRINT
3820    INPUT " ENTER YOUR CHOICE ",ALIGNMENT$
3830    IF LEFT$(ALIGNMENT$,1)="L" THEN ALIGNMENT$="LAWFUL": GOTO 3860
3840    IF LEFT$(ALIGNMENT$,1)="C" THEN ALIGNMENT$="CHAOTIC": GOTO 3860
3850    IF LEFT$(ALIGNMENT$,1)="N" THEN ALIGNMENT$="NEUTRAL": GOTO 3860
3860    IF (ALIGNMENT$ <> "LAWFUL") AND (ALIGNMENT$ <> "CHAOTIC") AND                      (ALIGNMENT$ <> "NEUTRAL")                                                       THEN PRINT "WHAT?": GOTO 3810
3870 RETURN
3880 '
3890 'GET SAVING THROWS
3900    IF CLASS$ = "CLERIC" THEN                                                          LET SV.POISON = 11: LET SV.MAGIC = 12:                                          LET SV.STONE = 14: LET SV.DRAGON = 16: LET SV.SPELL = 15
3910    IF CLASS$ = "DWARF" OR CLASS$ = "HALFLING"  THEN                                   LET SV.POISON = 10: LET SV.MAGIC = 11:                                          LET SV.STONE = 12: LET SV.DRAGON = 13: LET SV.SPELL = 14
3920    IF CLASS$ = "ELF" THEN                                                             LET SV.POISON = 12: LET SV.MAGIC = 13:                                          LET SV.STONE = 13: LET SV.DRAGON = 15: LET SV.SPELL = 15
3930    IF CLASS$ = "FIGHTER" THEN                                                         LET SV.POISON = 12: LET SV.MAGIC = 13:                                          LET SV.STONE = 14: LET SV.DRAGON = 15: LET SV.SPELL = 16
3940    IF CLASS$ = "MAGIC-USER" THEN                                                      LET SV.POISON = 13: LET SV.MAGIC = 14:                                          LET SV.STONE = 13: LET SV.DRAGON = 16: LET SV.SPELL = 15
3950    IF CLASS$ = "THIEF" THEN                                                           LET SV.POISON = 13: LET SV.MAGIC = 14:                                          LET SV.STONE = 13: LET SV.DRAGON = 16: LET SV.SPELL = 15
3960    CLS
3970    PRINT "        SAVING THROWS"
3980    PRINT
3990    PRINT "DEATH RAY/POISON          ";SV.POISON
4000    PRINT "MAGIC WANDS               ";SV.MAGIC
4010    PRINT "PARALYSIS/TURN TO STONE   ";SV.STONE
4020    PRINT "DRAGON BREATH             ";SV.DRAGON
4030    PRINT "RODS, STAVES OR SPELLS    ";SV.SPELL
4040    PRINT
4050    PRINT "HIT ANY KEY TO CONTINUE"
4060    GOSUB 4090      'WAIT
4070 RETURN
4080 '
4090 'WAIT FOR A CHARACTER
4100    DEF SEG=0: POKE 1050,PEEK(1052)  'CLEAR KEYBOARD BUFFER
4110    LET REPLY$ = INKEY$
4120    IF REPLY$ = "" THEN GOTO 4110
4130 RETURN
4140    '
4150 'LIST A CHARACTER
4160    CLS
4170    PRINT "      LIST A PLAYER CHARACTER"
4180    PRINT
4190    PRINT "IF YOU KNOW THE PLAYER NUMBER, ENTER IT, OTHERWISE ENTER 0"
4200    INPUT RNO
4210    IF RNO < 0 OR RNO > 10 THEN PRINT "WHAT?": GOTO 4190
4220    IF RNO = 0 THEN GOTO 4250       'GET PLAYER NAME
4230    GET #1,RNO
4240    GOTO 4340       'LIST IT
4250 'GET PLAYERS NAME
4260    INPUT "ENTER CHARACTER'S NAME ",INNM$
4270    LET SEEKNM$ = SPACE$(24)
4280    LSET SEEKNM$ = INNM$
4290    LET RNO = 0
4300    LET RNO = RNO + 1
4310    IF RNO > 10 THEN PRINT "CHARACTER NAME NOT FOUND":                                GOTO 4600
4320    GET #1,RNO
4330    IF NM$ <> SEEKNM$ THEN GOTO 4300
4340 'LIST IT
4350    CLS
4360    PRINT "PLAYER ";RNO;"   ";NM$
4370    PRINT "ALIGNMENT ";ALIGN$
4380    PRINT "CLASS ";CLAS$;"  LEVEL ";CVI(LVL$)
4390    PRINT "ARMOR CLASS  ";CVI(ARM$);"       HIT POINTS ";CVI(HIT$)
4400    PRINT
4410    PRINT "           ABILITIES "
4420    PRINT "STRENGTH    ";CVI(STRN$)
4430    PRINT "INTELLIGENCE";CVI(INTL$)
4440    PRINT "WISDOM      ";CVI(WIS$)
4450    PRINT "DEXTERITY   ";CVI(DEX$)
4460    PRINT "CONSTITUTION";CVI(CON$)
4470    PRINT "CHARAISMA   ";CVI(CHA$)
4480    PRINT
4490    PRINT "         SAVING THROWS "
4500    PRINT "POISON OR DEATH RAY";CVI(SV.POISON$)
4510    PRINT "MAGIC WAND         ";CVI(SV.MAGIC$)
4520    PRINT "TURN TO STONE      "
4530    PRINT "    /PARALYSIS     ";CVI(SV.STONE$)
4540    PRINT "DRAGON BREATH      ";CVI(SV.DRAG$)
4550    PRINT "SPELLS/MAGIC STAFF ";CVI(SV.MAGIC$)
4560    PRINT
4570    PRINT "EXPERIENCE ";CVS(EXPR$);" MONEY ";CVS(MONEY$)
4580    PRINT "HIT ANY KEY TO CONTINUE"
4590    GOSUB  4090     'WAIT
4600 RETURN
4610 '
4620 'ZERO SUPPLIES
4630    LET SNO=0
4640 'GO THRU FILE
4650    SNO=SNO+1
4660    GET #2,SNO
4670    IF SID$ <> "DS" THEN GOTO 4810 ' END OF FILE
4680    ON RNO GOTO 4690,4700,4710,4720,4730,4740,4750,4760,4770,4780
4690    LSET P1$ = MKI$(0): GOTO 4790
4700    LSET P2$ = MKI$(0): GOTO 4790
4710    LSET P3$ = MKI$(0): GOTO 4790
4720    LSET P4$ = MKI$(0): GOTO 4790
4730    LSET P5$ = MKI$(0): GOTO 4790
4740    LSET P6$ = MKI$(0): GOTO 4790
4750    LSET P7$ = MKI$(0): GOTO 4790
4760    LSET P8$ = MKI$(0): GOTO 4790
4770    LSET P9$ = MKI$(0): GOTO 4790
4780    LSET P10$ = MKI$(0): GOTO 4790
4790    PUT #2,SNO
4800    GOTO 4640
4810 RETURN
4820 'GET ARMOR CLASS ADJUSTMENT
4830    IF DEXTERITY < 4 THEN ARMOR.CLASS = -3: GOTO 4900
4840    IF DEXTERITY < 6 THEN ARMOR.CLASS = -2: GOTO 4900
4850    IF DEXTERITY < 9 THEN ARMOR.CLASS = -1: GOTO 4900
4860    IF DEXTERITY < 13 THEN ARMOR.CLASS = 0: GOTO 4900
4870    IF DEXTERITY < 16 THEN ARMOR.CLASS = +1: GOTO 4900
4880    IF DEXTERITY < 18 THEN ARMOR.CLASS = +2: GOTO 4900
4890    ARMOR.CLASS = +3
4900 RETURN
