[BACK]Return to rogue.c CVS log [TXT][DIR] Up to [contributed] / early-roguelike / arogue7

Annotation of early-roguelike/arogue7/rogue.c, Revision 1.1.1.1

1.1       rubenllo    1: /*
                      2:  * rogue.c  -  Global game variables
                      3:  *
                      4:  * Advanced Rogue
                      5:  * Copyright (C) 1984, 1985, 1986 Michael Morgan, Ken Dalka and AT&T
                      6:  * All rights reserved.
                      7:  *
                      8:  * Based on "Rogue: Exploring the Dungeons of Doom"
                      9:  * Copyright (C) 1980, 1981 Michael Toy, Ken Arnold and Glenn Wichman
                     10:  * All rights reserved.
                     11:  *
                     12:  * See the file LICENSE.TXT for full copyright and licensing information.
                     13:  */
                     14:
                     15: #include <ctype.h>
                     16: #include "curses.h"
                     17: #include "rogue.h"
                     18: #ifdef PC7300
                     19: #include <sys/window.h>
                     20: #endif
                     21:
                     22: #ifdef BSD
                     23: char
                     24: tolower(c)
                     25: {
                     26:     if (isupper(c)) return(_tolower(c));
                     27:     else return(c);
                     28: }
                     29: char
                     30: toupper(c)
                     31: {
                     32:     if (islower(c)) return(_toupper(c));
                     33:     else return(c);
                     34: }
                     35: #endif
                     36:
                     37: /*
                     38:  * Now all the global variables
                     39:  */
                     40: struct trap traps[MAXTRAPS];
                     41: struct room rooms[MAXROOMS];           /* One for each room -- A level */
                     42: struct room *oldrp;                    /* Roomin(&player.t_oldpos) */
                     43: struct thing player;                   /* The rogue */
                     44: struct object *cur_armor;              /* What a well dresssed rogue wears */
                     45: struct object *cur_ring[NUM_FINGERS];  /* Which rings are being worn */
                     46: struct object  *cur_misc[NUM_MM];      /* which MM's are in use */
                     47: int cur_relic[MAXRELIC];               /* Currently used relics */
                     48: struct linked_list *lvl_obj = NULL;
                     49: struct linked_list *mlist = NULL;
                     50: struct linked_list *tlist = NULL;      /* list of monsters fallen down traps */
                     51: struct linked_list *monst_dead = NULL; /* monster killed by monster    */
                     52: struct object *cur_weapon = NULL;
                     53: int char_type = -1;                    /* what type of character is player */
                     54: int foodlev = 1;                       /* how fast he eats food */
                     55: int ntraps;                            /* Number of traps on this level */
                     56: int trader = 0;                                /* no. of purchases */
                     57: int curprice = -1;                     /* current price of item */
                     58: int seed;                              /* Random number seed */
                     59: int dnum;                              /* Dungeon number */
                     60: int max_level;                         /* Deepest player has gone ever */
                     61: int cur_max;                           /* Deepest player has gone currently */
                     62: int mpos = 0;
                     63: int level = 0;
                     64: int purse = 0;
                     65: int inpack = 0;
                     66: int total = 0;
                     67: int no_food = 0;                       /* how long has he gone with no food */
                     68: int foods_this_level = 0;              /* foods made per level */
                     69: int count = 0;
                     70: int food_left = STOMACHSIZE-MORETIME-1;
                     71: int group = 1;
                     72: int hungry_state = F_OKAY;
                     73: int infest_dam=0;
                     74: int lost_str=0;
                     75: int lastscore = -1;
                     76: int hold_count = 0;
                     77: int trap_tries = 0;
                     78: int chant_time = 0;
                     79: int pray_time = 0;
                     80: int spell_power = 0;
                     81: int turns = 0;                         /* Number of turns player has taken */
                     82: int quest_item = 0;                    /* Item player is looking for */
                     83: int cols = 0;                          /* number of columns in terminal */
                     84: int lines = 0;                         /* number of lines on the terminal */
                     85: char nfloors = -1;                     /* Number of floors in this dungeon */
                     86: char curpurch[LINELEN];                        /* name of item ready to buy */
                     87: char PLAYER = VPLAYER;                 /* what the player looks like */
                     88: char take;                             /* Thing the rogue is taking */
                     89: char prbuf[LINELEN*2];                 /* Buffer for sprintfs */
                     90: char outbuf[BUFSIZ];                   /* Output buffer for stdout */
                     91: char runch;                            /* Direction player is running */
                     92: char *s_names[MAXSCROLLS];             /* Names of the scrolls */
                     93: char *p_colors[MAXPOTIONS];            /* Colors of the potions */
                     94: char *r_stones[MAXRINGS];              /* Stone settings of the rings */
                     95: char *ws_made[MAXSTICKS];              /* What sticks are made of */
                     96: char whoami[LINELEN];                  /* Name of player */
                     97: char huh[LINELEN];                     /* The last message printed */
                     98: char *s_guess[MAXSCROLLS];             /* Players guess at what scroll is */
                     99: char *p_guess[MAXPOTIONS];             /* Players guess at what potion is */
                    100: char *r_guess[MAXRINGS];               /* Players guess at what ring is */
                    101: char *ws_guess[MAXSTICKS];             /* Players guess at what wand is */
                    102: char *m_guess[MAXMM];                  /* Players guess at what MM is */
                    103: char *ws_type[MAXSTICKS];              /* Is it a wand or a staff */
                    104: char file_name[LINELEN];               /* Save file name */
                    105: char score_file[LINELEN];              /* Score file name */
                    106: char home[LINELEN];                    /* User's home directory */
                    107: WINDOW *cw;                            /* Window that the player sees */
                    108: WINDOW *hw;                            /* Used for the help command */
                    109: WINDOW *mw;                            /* Used to store monsters */
                    110: WINDOW *msgw;                          /* Used to display messages */
                    111: bool pool_teleport = FALSE;            /* just teleported from a pool */
                    112: bool inwhgt = FALSE;                   /* true if from wghtchk() */
                    113: bool after;                            /* True if we want after daemons */
                    114: bool waswizard;                                /* Was a wizard sometime */
                    115: bool s_know[MAXSCROLLS];               /* Does he know what a scroll does */
                    116: bool p_know[MAXPOTIONS];               /* Does he know what a potion does */
                    117: bool r_know[MAXRINGS];                 /* Does he know what a ring does */
                    118: bool ws_know[MAXSTICKS];               /* Does he know what a stick does */
                    119: bool m_know[MAXMM];                    /* Does he know what a MM does */
                    120: bool playing = TRUE;
                    121: bool running = FALSE;
                    122: bool wizard = FALSE;
                    123: bool notify = TRUE;
                    124: bool fight_flush = FALSE;
                    125: bool terse = FALSE;
                    126: bool auto_pickup = TRUE;
                    127: bool menu_overlay = TRUE;
                    128: bool door_stop = FALSE;
                    129: bool jump = FALSE;
                    130: bool slow_invent = FALSE;
                    131: bool firstmove = FALSE;
                    132: bool askme = TRUE;
                    133: bool in_shell = FALSE;
                    134: bool daytime = TRUE;
                    135: bool use_savedir = FALSE;
                    136: FILE *scoreboard = NULL;               /* Score file */
                    137: FILE *logfile = NULL;
                    138: LEVTYPE levtype;                       /* type of level i'm on */
                    139:
                    140: char *nothing  =       "Nothing seems to happen.";
                    141: char *spacemsg =       "--Press space to continue--";
                    142: char *morestr  =       "-- More --";
                    143: char *retstr   =       "[Press return to continue]";
                    144: #ifdef PC7300
                    145: struct uwdata wdata, oldwin;   /* Static window information */
                    146: char oldtext[WTXTNUM][WTXTLEN]; /* Saved window text */
                    147: #endif
                    148:
                    149: /*
                    150:  * This lays out all the class specific details
                    151:  *
                    152:  * Here are the beginning experience levels for all players.
                    153:  * All further experience levels are computed by muliplying by 2
                    154:  * up through MAXDOUBLE. Then exp pts are calculated by adding
                    155:  * in the cap figure. You must change MAXDOUBLE if you change the
                    156:  * cap figure.
                    157:  */
                    158: struct character_types char_class[NUM_CHARTYPES] = {
                    159: /* name                exppts  cap     hitpts  Base    Maxlvl, Factor, Offset, Range */
                    160: { "fighter",   80,     1310720, 12,    10,     30,     2,      1,      2 },
                    161: { "ranger",    140,    2293760,  8,    10,     20,     2,      1,      2 },
                    162: { "paladin",   120,    1966080, 10,    10,     23,     2,      1,      2 },
                    163: { "magician",  130,    2129920,  6,    9,      18,     2,      1,      5 },
                    164: { "cleric",    110,    1802240,  8,    10,     19,     2,      1,      3 },
                    165: { "thief",     75,     1228800,  6,    10,     25,     2,      1,      4 },
                    166: { "assassin",  85,     1392640,  6,    10,     25,     2,      1,      4 },
                    167: { "druid",     100,    1638400,  8,    10,     19,     2,      1,      3 },
                    168: { "monk",      95,     1556480,  6,    10,     25,     2,      1,      3 },
                    169: { "monster",   0,      0,        8,    7,      30,     1,      0,      2 },
                    170: };
                    171:
                    172:
                    173: /*
                    174:  * This array lists the names of the character's abilities.  It must be ordered
                    175:  * according to the ability definitions in rogue.h.
                    176:  */
                    177:
                    178: char *abilities[NUMABILITIES] = {
                    179:   "Intelligence", "Strength", "Wisdom", "Dexterity", "Constitution", "Charisma"
                    180: };
                    181:
                    182: /*
                    183:  * NOTE: the ordering of the points in this array is critical. They MUST
                    184:  *      be listed in the following sequence:
                    185:  *
                    186:  *             7   4   6
                    187:  *             1   0   2
                    188:  *             5   3   8
                    189:  */
                    190:
                    191: coord grid[9] = {{0,0},
                    192:                 { 0,-1}, { 0, 1}, {-1, 0}, { 1, 0},
                    193:                 {-1,-1}, { 1, 1}, { 1,-1}, {-1, 1}
                    194:                };
                    195:
                    196: struct death_type deaths[DEATHNUM] = {
                    197:     { D_ARROW,         "an arrow"},
                    198:     { D_DART,          "a dart"},
                    199:     { D_BOLT,          "a bolt"},
                    200:     { D_POISON,                "poison"},
                    201:     { D_POTION,                "a cursed potion"},
                    202:     { D_PETRIFY,       "petrification"},
                    203:     { D_SUFFOCATION,   "suffocation"},
                    204:     { D_INFESTATION,   "a parasite"},
                    205:     { D_DROWN,         "drowning"},
                    206:     { D_ROT,           "body rot"},
                    207:     { D_CONSTITUTION,  "poor health"},
                    208:     { D_STRENGTH,      "being too weak"},
                    209:     { D_SIGNAL,                "a bug"},
                    210:     { D_CHOKE,         "dust of choking"},
                    211:     { D_STRANGLE,      "strangulation"},
                    212:     { D_FALL,          "a fall"},
                    213:     { D_RELIC,         "an artifact's wrath"},
                    214:     { D_STARVATION,    "starvation"},
                    215:     { D_FOOD_CHOKE,    "choking on food"},
                    216:     { D_SCROLL,                "reading a scroll"},
                    217: };
                    218:
                    219:
                    220: /*
                    221:  * weapons and their attributes
                    222:  */
                    223: struct init_weps weaps[MAXWEAPONS] = {
                    224:     { "mace",          "2d4",  "1d3", NONE,    ISMETAL, 3, 100, 8 },
                    225:     { "long sword",    "1d12", "1d2", NONE,    ISMETAL, 4, 60, 18 },
                    226:     { "short bow",     "1d1",  "1d1", NONE,    0, 6, 40, 15 },
                    227:     { "arrow",         "1d1",  "1d6", BOW,     ISMANY|ISMISL, 1, 5, 1 },
                    228:     { "dagger",                "1d6",  "1d4", NONE,    ISMETAL|ISMISL|ISMANY,1,7,2},
                    229:     { "rock",          "1d2",  "1d4", SLING,   ISMANY|ISMISL, 1, 5, 1 },
                    230:     { "two-handed sword","3d6",  "1d2", NONE,  ISMETAL, 5, 250, 40 },
                    231:     { "sling",         "0d0",  "0d0", NONE,    0, 1, 5, 1 },
                    232:     { "dart",          "1d1",  "1d3", NONE,    ISMANY|ISMISL, 1, 5, 1 },
                    233:     { "crossbow",      "1d1",  "1d1", NONE,    0, 6, 100, 15 },
                    234:     { "crossbow bolt", "1d2", "1d12", CROSSBOW,ISMANY|ISMISL, 1, 7, 1 },
                    235:     { "spear",         "1d8",  "2d6", NONE,    ISMANY|ISMETAL|ISMISL,2,20,8},
                    236:     { "trident",       "3d4",  "1d4", NONE,    ISMETAL, 4, 50, 20 },
                    237:     { "spetum",                "2d6",  "1d3", NONE,    ISMETAL, 4, 50, 20 },
                    238:     { "bardiche",      "3d4",  "1d2", NONE,    ISMETAL, 4, 125, 20 },
                    239:     { "pike",          "1d12", "1d8", NONE,    ISMETAL, 4, 80, 18 },
                    240:     { "bastard sword", "2d8",  "1d2", NONE,    ISMETAL, 5, 100, 30 },
                    241:     { "halberd",       "2d6",  "1d3", NONE,    ISMETAL, 4, 175, 10 },
                    242:     { "battle axe",    "1d8",  "1d3", NONE,    ISMETAL, 3, 80, 10 },
                    243: };
                    244:
                    245: struct init_armor armors[MAXARMORS] = {
                    246:        { "leather armor",              11,  8,  70, 100 },
                    247:        { "ring mail",                  22,  7,  50, 250 },
                    248:        { "studded leather armor",      33,  7,  50, 200 },
                    249:        { "scale mail",                 45,  6,  70, 250 },
                    250:        { "padded armor",               57,  6, 150, 150 },
                    251:        { "chain mail",                 69,  5, 100, 300 },
                    252:        { "splint mail",                80,  4, 150, 350 },
                    253:        { "banded mail",                90,  4, 150, 350 },
                    254:        { "plate mail",                 96,  3, 400, 400 },
                    255:        { "plate armor",                100, 2, 650, 450 },
                    256: };
                    257:
                    258: struct magic_item things[NUMTHINGS] = {
                    259:     { "potion",                        260,   10 },    /* potion               */
                    260:     { "scroll",                        260,   30 },    /* scroll               */
                    261:     { "food",                  180,   20 },    /* food                 */
                    262:     { "weapon",                         80,    0 },    /* weapon               */
                    263:     { "armor",                  80,    0 },    /* armor                */
                    264:     { "ring",                   50,    5 },    /* ring                 */
                    265:     { "stick",                  60,    0 },    /* stick                */
                    266:     { "miscellaneous magic",    30,   50 },    /* miscellaneous magic  */
                    267:     { "artifact",                0,   10 },    /* artifact             */
                    268: };
                    269:
                    270: struct magic_item s_magic[MAXSCROLLS] = {
                    271:     { "monster confusion",      50, 125, 0, 0 },
                    272:     { "magic mapping",          50, 150, 0, 0 },
                    273:     { "light",                  70, 100, 21, 15 },
                    274:     { "hold monster",           30, 200, 33, 20 },
                    275:     { "sleep",                  20, 150, 20, 0 },
                    276:     { "enchantment",           170, 200, 9, 9 },
                    277:     { "identify",              200, 100, 0, 25 },
                    278:     { "scare monster",          40, 250, 27, 21 },
                    279:     { "gold detection",                 30, 110, 0, 0 },
                    280:     { "teleportation",          60, 165, 10, 20 },
                    281:     { "create monster",                 30,  75, 0, 0 },
                    282:     { "remove curse",           70, 120, 9, 15 },
                    283:     { "petrification",          10, 185, 0, 0 },
                    284:     { "genocide",               10, 300, 0, 0 },
                    285:     { "cure disease",           80, 160, 0, 0 },
                    286:     { "acquirement",            10, 700, 0, 0 },
                    287:     { "protection",             30, 190, 20, 0 },
                    288:     { "trap finding",           10, 180, 0, 0 },
                    289:     { "runes",                  10,  50, 0, 0 },
                    290:     { "charm monster",          20, 275, 0, 15 },
                    291: };
                    292:
                    293: struct magic_item p_magic[MAXPOTIONS] = {
                    294:     { "clear thought",          50, 180, 27, 10 },
                    295:     { "gain ability",          160, 210, 15, 15 },
                    296:     { "see invisible",          50, 150, 25, 15 },
                    297:     { "healing",               160, 130, 27, 27 },
                    298:     { "monster detection",      60, 120, 0, 0 },
                    299:     { "magic detection",        60, 105, 0, 0 },
                    300:     { "raise level",            10, 450, 11, 10 },
                    301:     { "haste self",             90, 180, 30, 5 },
                    302:     { "restore abilities",     140, 140, 0, 10 },
                    303:     { "phasing",                50, 210, 21, 20 },
                    304:     { "invisibility",           50, 230, 0, 15 },
                    305:     { "flying",                         40, 130, 0, 20 },
                    306:     { "food detection",                 10, 150, 0, 0 },
                    307:     { "skill",                  10, 200, 20, 10 },
                    308:     { "fire resistance",        10, 250, 0, 10 },
                    309:     { "cold resistance",        10, 250, 0, 10 },
                    310:     { "lightning protection",   10, 250, 0, 10 },
                    311:     { "poison",                         30, 205, 0, 0 },
                    312: };
                    313:
                    314: struct magic_item r_magic[MAXRINGS] = {
                    315:     { "protection",             50, 200, 33, 25 },
                    316:     { "add strength",           60, 200, 33, 25 },
                    317:     { "sustain ability",        50, 500, 0, 0 },
                    318:     { "searching",              50, 400, 0, 0 },
                    319:     { "extra sight",            40, 350, 0, 0 },
                    320:     { "alertness",              40, 380, 0, 0 },
                    321:     { "aggravate monster",      30, 100, 100, 0 },
                    322:     { "dexterity",              60, 220, 33, 25 },
                    323:     { "increase damage",        60, 220, 33, 25 },
                    324:     { "regeneration",           40, 600, 0, 0 },
                    325:     { "slow digestion",                 40, 240, 15, 15 },
                    326:     { "teleportation",          20, 100, 100, 0 },
                    327:     { "stealth",                30, 300, 0, 0 },
                    328:     { "add intelligence",       60, 240, 33, 25 },
                    329:     { "increase wisdom",        60, 220, 33, 25 },
                    330:     { "sustain health",                 80, 500, 0,  0 },
                    331:     { "carrying",               20, 100, 100, 0 },
                    332:     { "illumination",           30, 520, 0, 0 },
                    333:     { "delusion",               20, 100, 75, 0 },
                    334:     { "fear",                   20, 100, 100, 0},
                    335:     { "heroism",                30, 390, 0, 0 },
                    336:     { "fire resistance",        40, 400, 0, 0 },
                    337:     { "warmth",                         40, 400, 0, 0 },
                    338:     { "vampiric regeneration",  10,1000, 0, 0},
                    339:     { "free action",            10, 370, 0, 0},
                    340:     { "teleport control",       10, 700, 0, 0},
                    341: };
                    342:
                    343: struct magic_item ws_magic[MAXSTICKS] = {
                    344:     { "light",                  90, 120, 20, 20 },
                    345:     { "striking",               60, 115, 0,  0 },
                    346:     { "lightning",              35, 200, 0,  0 },
                    347:     { "fire",                   35, 200, 0,  0 },
                    348:     { "cold",                   35, 200, 0,  0 },
                    349:     { "polymorph",              80, 150, 0,  0 },
                    350:     { "magic missile",          80, 170, 0,  0 },
                    351:     { "slow",                   80, 220, 25, 20 },
                    352:     { "drain life",             80, 210, 20, 0 },
                    353:     { "charging",               70, 400, 0,  0 },
                    354:     { "teleport",               90, 140, 25, 20 },
                    355:     { "cancellation",           40, 130, 0,  0 },
                    356:     { "confusion",              35, 100, 15,  0},
                    357:     { "disintegration",                 10, 300, 33, 0},
                    358:     { "petrification",          30, 240, 0,  0},
                    359:     { "paralyzation",           30, 180, 15,  0},
                    360:     { "degeneration",           30, 250, 30, 0},
                    361:     { "curing",                         10, 250, 25, 0},
                    362:     { "wonder",                         50, 110,  0, 0},
                    363:     { "fear",                   30, 180,  0, 0},
                    364: };
                    365:
                    366: /*
                    367:  * WARNING: unique miscellaneous magic items must be put at the end
                    368:  *         of this list. They MUST be the last items. The function
                    369:  *         create_obj() in wizard.c depends on it.
                    370:  */
                    371: struct magic_item m_magic[MAXMM] = {
                    372:     { "alchemy jug",             40,   240,  0, 0},
                    373:     { "beaker of potions",       60,   300,  0, 0},
                    374:     { "book of spells",                  60,   300,  0, 0},
                    375:     { "boots of elvenkind",      50,   500,  0, 0},
                    376:     { "bracers of defense",     140,   100, 15, 0},
                    377:     { "chime of opening",        50,   250,  0, 0},
                    378:     { "chime of hunger",         50,   100,100, 0},
                    379:     { "cloak of displacement",   60,   500,  0, 0},
                    380:     { "cloak of protection",     70,   200, 15, 0},
                    381:     { "drums of panic",                  40,   350,  0, 0},
                    382:     { "dust of disappearance",   40,   300,  0, 0},
                    383:     { "dust of choking",         30,   100,100, 0},
                    384:     { "gauntlets of dexterity",          30,   600, 25, 0},
                    385:     { "gauntlets of ogre power",  30,   600, 25, 0},
                    386:     { "jewel of attacks",        40,   150,100, 0},
                    387:     { "keoghtoms ointment",      50,   200,  0, 0},
                    388:     { "robe of powerlessness",   30,   100,100, 0},
                    389:     { "gauntlets of fumbling",   30,   100,100, 0},
                    390:     { "necklace of adaptation",          20,   500,  0, 0},
                    391:     { "necklace of strangulation",30,   110,100, 0},
                    392:     { "boots of dancing",        30,   120,100, 0},
                    393:     { "book of skills",                  20,   650,  0, 0},
                    394: };
                    395:
                    396:
                    397: struct magic_item rel_magic[MAXRELIC] = {
                    398:     { "Daggers of Musty Doit",    0, 50000,  0, 0},
                    399:     { "Cloak of Emori",                   0, 50000,  0, 0},
                    400:     { "Ankh of Heil",             0, 50000,  0, 0},
                    401:     { "Staff of Ming",            0, 50000,  0, 0},
                    402:     { "Wand of Orcus",            0, 50000,  0, 0},
                    403:     { "Rod of Asmodeus",          0, 50000,  0, 0},
                    404:     { "Amulet of Yendor",         0, 50000,  0, 0},
                    405:     { "Mandolin of Brian",        0, 50000,  0, 0},
                    406:     { "Horn of Geryon",                   0, 50000,  0, 0},
                    407:     { "Morning Star of Hruggek",   0, 50000,  0, 0},
                    408:     { "Flail of Yeenoghu",        0, 50000,  0, 0},
                    409:     { "Eye of Vecna",             0, 50000,  0, 0},
                    410:     { "Axe of Aklad",             0, 50000,  0, 0},
                    411:     { "Quill of Nagrom",          0, 50000,  0, 0},
                    412:     { "Amulet of Stonebones",     0, 50000,  0, 0},
                    413:     { "Ring of Surtur",                   0, 50000,  0, 0},
                    414: };
                    415: /*
                    416:  * food and fruits that you get
                    417:  */
                    418: struct magic_item foods[MAXFOODS] = {
                    419:     { "food ration",   800, 50, 750,  0},
                    420:     { "apple",          10, 20, 300,  0},
                    421:     { "banana",                 10, 20, 300,  0},
                    422:     { "blueberry",      10, 20, 300,  0},
                    423:     { "candleberry",    10, 20, 300,  0},
                    424:     { "caprifig",       10, 20, 300,  0},
                    425:     { "dewberry",       10, 20, 300,  0},
                    426:     { "elderberry",     10, 20, 300,  0},
                    427:     { "gooseberry",     10, 20, 300,  0},
                    428:     { "guanabana",      10, 20, 300,  0},
                    429:     { "hagberry",       10, 20, 300,  0},
                    430:     { "jaboticaba",     10, 20, 300,  0},
                    431:     { "peach",          10, 20, 300,  0},
                    432:     { "pitanga",        10, 20, 300,  0},
                    433:     { "prickly pear",   10, 20, 300,  0},
                    434:     { "rambutan",       10, 20, 300,  0},
                    435:     { "sapodilla",      10, 20, 300,  0},
                    436:     { "soursop",        10, 20, 300,  0},
                    437:     { "strawberry",     10, 20, 300,  0},
                    438:     { "sweetsop",       10, 20, 300,  0},
                    439:     { "whortleberry",   10, 20, 300,  0},
                    440: };
                    441:
                    442: /*
                    443:  * these are the spells that a magic user can cast
                    444:  */
                    445: struct spells magic_spells[MAXSPELLS] = {
                    446:        { P_TFIND,              3,      TYP_POTION,     0         },
                    447:        { S_IDENT,              5,      TYP_SCROLL,     0         },
                    448:        { S_LIGHT,              7,      TYP_SCROLL,     ISBLESSED },
                    449:        { S_REMOVE,             7,      TYP_SCROLL,     0         },
                    450:        { S_CONFUSE,            10,     TYP_SCROLL,     0         },
                    451:        { WS_MISSILE,           15,     TYP_STICK,      0         },
                    452:        { S_TELEP,              20,     TYP_SCROLL,     0         },
                    453:        { S_SLEEP,              20,     TYP_SCROLL,     0         },
                    454:        { P_FLY,                20,     TYP_POTION,     0         },
                    455:        { P_SEEINVIS,           20,     TYP_POTION,     0         },
                    456:        { WS_COLD,              25,     TYP_STICK,      0         },
                    457:        { WS_ELECT,             25,     TYP_STICK,      0         },
                    458:        { WS_FIRE,              25,     TYP_STICK,      0         },
                    459:        { P_HASTE,              30,     TYP_POTION,     0         },
                    460:        { WS_CANCEL,            30,     TYP_STICK,      0         },
                    461:        { P_PHASE,              40,     TYP_POTION,     0         },
                    462:        { S_HOLD,               50,     TYP_SCROLL,     0         },
                    463:        { WS_CHARGE,            55,     TYP_STICK,      ISBLESSED },
                    464:        { S_PROTECT,            60,     TYP_SCROLL,     0         },
                    465:        { S_ALLENCH,            70,     TYP_SCROLL,     0         },
                    466: };
                    467:
                    468: /*
                    469:  * these are the spells that a cleric can cast
                    470:  */
                    471: struct spells cleric_spells[MAXPRAYERS] = {
                    472:        { P_MFIND,              3,      TYP_POTION,     0         },
                    473:        { P_TFIND,              7,      TYP_POTION,     0         },
                    474:        { S_LIGHT,              10,     TYP_SCROLL,     ISBLESSED },
                    475:        { S_REMOVE,             15,     TYP_SCROLL,     0         },
                    476:        { P_HEALING,            20,     TYP_POTION,     0         },
                    477:        { P_FFIND,              24,     TYP_POTION,     0         },
                    478:        { S_FINDTRAPS,          26,     TYP_SCROLL,     0         },
                    479:        { S_CURING,             27,     TYP_SCROLL,     0         },
                    480:        { WS_PARALYZE,          30,     TYP_STICK,      ISBLESSED },
                    481:        { S_MAP,                31,     TYP_SCROLL,     0         },
                    482:        { P_CLEAR,              32,     TYP_POTION,     0         },
                    483:        { WS_FEAR,              33,     TYP_STICK,      ISBLESSED },
                    484:        { P_SEEINVIS,           35,     TYP_POTION,     0         },
                    485:        { P_RESTORE,            40,     TYP_POTION,     0         },
                    486:        { P_PHASE,              43,     TYP_POTION,     0         },
                    487:        { S_TELEP,              45,     TYP_SCROLL,     0         },
                    488:        { WS_CURING,            50,     TYP_STICK,      ISBLESSED },
                    489:        { WS_DRAIN,             50,     TYP_STICK,      0         },
                    490: };
                    491:
                    492: /*
                    493:  * these are the spells that a druid can chant
                    494:  */
                    495: struct spells druid_spells[MAXCHANTS] = {
                    496:        { P_TFIND,              3,      TYP_POTION,     0         },
                    497:        { P_MFIND,              3,      TYP_POTION,     0         },
                    498:        { S_LIGHT,              7,      TYP_SCROLL,     ISBLESSED },
                    499:        { S_CONFUSE,            10,     TYP_SCROLL,     0         },
                    500:        { S_MAP,                10,     TYP_SCROLL,     0         },
                    501:        { P_FFIND,              15,     TYP_POTION,     0         },
                    502:        { P_HEALING,            20,     TYP_POTION,     0         },
                    503:        { S_CURING,             25,     TYP_SCROLL,     0         },
                    504:        { P_FLY,                27,     TYP_POTION,     ISBLESSED },
                    505:        { P_FIRE,               30,     TYP_POTION,     ISBLESSED },
                    506:        { P_COLD,               30,     TYP_POTION,     ISBLESSED },
                    507:        { P_LIGHTNING,          30,     TYP_POTION,     ISBLESSED },
                    508:        { S_HOLD,               35,     TYP_SCROLL,     0         },
                    509:        { WS_CURING,            40,     TYP_STICK,      ISBLESSED },
                    510:        { P_PHASE,              45,     TYP_POTION,     0         },
                    511:        { S_CHARM,              50,     TYP_SCROLL,     ISBLESSED },
                    512: };
                    513:
                    514:
                    515: /*
                    516:  * these are the scrolls that a quill can write
                    517:  */
                    518: struct quill quill_scrolls[MAXQUILL] = {
                    519:        { S_GFIND,              4,      },
                    520:        { S_IDENT,              5,      },
                    521:        { S_LIGHT,              6,      },
                    522:        { S_REMOVE,             7,      },
                    523:        { S_MAP,                10,     },
                    524:        { S_SLEEP,              20,     },
                    525:        { S_TELEP,              30,     },
                    526:        { S_CONFUSE,            40,     },
                    527:        { S_CURING,             50,     },
                    528:        { S_HOLD,               70,     },
                    529:        { S_PROTECT,            90,     },
                    530:        { S_SCARE,              110,    },
                    531:        { S_ALLENCH,            130,    },
                    532: };
                    533:
                    534: char *cnames[NUM_CHARTYPES-1][NUM_CNAMES] = {
                    535: {      "Veteran",                      "Warrior",              /* Fighter */
                    536:        "Swordsman",                    "Hero",
                    537:        "Swashbuckler",                 "Myrmidon",
                    538:        "Champion",                     "Superhero",
                    539:        "Lord",                         "Lord",
                    540:        "Lord",                         "Lord",
                    541:        "Lord",                         "Lord",
                    542:        "Lord",                         "Lord",
                    543:        "Lord"
                    544: },
                    545: {      "Runner",                       "Strider",              /* Ranger */
                    546:        "Scout",                        "Courser",
                    547:        "Tracker",                      "Guide",
                    548:        "Pathfinder",                   "Ranger",
                    549:        "Ranger Knight",                "Ranger Lord",
                    550:        "Ranger Lord",                  "Ranger Lord",
                    551:        "Ranger Lord",                  "Ranger Lord",
                    552:        "Ranger Lord",                  "Ranger Lord",
                    553:        "Ranger Lord"
                    554: },
                    555: {      "Gallant",                      "Keeper",               /* Paladin */
                    556:        "Protector",                    "Defender",
                    557:        "Warder",                       "Guardian",
                    558:        "Chevalier",                    "Justiciar",
                    559:        "Paladin",                      "Paladin",
                    560:        "Paladin",                      "Paladin",
                    561:        "Paladin",                      "Paladin",
                    562:        "Paladin",                      "Paladin",
                    563:        "Paladin"
                    564: },
                    565: {      "Prestidigitator",              "Evoker",               /* Magic User */
                    566:        "Conjurer",                     "Theurgist",
                    567:        "Thaumaturgist",                "Magician",
                    568:        "Enchanter",                    "Warlock",
                    569:        "Sorcerer",                     "Necromancer",
                    570:        "Wizard I",                     "Wizard II",
                    571:        "Wizard III",                   "Wizard IV",
                    572:        "Wizard V",                     "Wizard VI",
                    573:        "High Wizard"
                    574: },
                    575: {      "Acolyte",                      "Adept",                /* Cleric */
                    576:        "Priest",                       "Curate",
                    577:        "Prefect",                      "Canon",
                    578:        "Lama",                         "Patriarch",
                    579:        "High Priest",                  "High Priest",
                    580:        "High Priest",                  "High Priest",
                    581:        "High Priest",                  "High Priest",
                    582:        "High Priest",                  "High Priest",
                    583:        "High Priest"
                    584: },
                    585: {      "Rogue",                        "Footpad",              /* Thief */
                    586:        "Cutpurse",                     "Robber",
                    587:        "Burglar",                      "Filcher",
                    588:        "Sharper",                      "Magsman",
                    589:        "Thief",                        "Master Thief",
                    590:        "Master Thief",                 "Master Thief",
                    591:        "Master Thief",                 "Master Thief",
                    592:        "Master Thief",                 "Master Thief",
                    593:        "Master Thief"
                    594: },
                    595: {      "Bravo",                        "Rutterkin",            /* Assassin */
                    596:        "Waghalter",                    "Murderer",
                    597:        "Thug",                         "Killer",
                    598:        "Cutthroat",                    "Executioner",
                    599:        "Assassin",                     "Expert Assassin",
                    600:        "Senior Assassin",              "Chief Assassin",
                    601:        "Prime Assassin",               "Guildmaster Assassin",
                    602:        "Grandfather Assassin",         "Grandfather Assassin",
                    603:        "Grandfather Assassin"
                    604: },
                    605: {      "Aspirant",                     "Ovate",                /* Druid */
                    606:        "Initiate 1st Circle",          "Initiate 2nd Circle",
                    607:        "Initiate 3rd Circle",          "Initiate 4th Circle",
                    608:        "Initiate 5th Circle",          "Initiate 6th Circle",
                    609:        "Initiate 7th Circle",          "Initiate 8th Circle",
                    610:        "Initiate 9th Circle",          "Druid",
                    611:        "Archdruid",                    "The Great Druid",
                    612:        "The Great Druid",              "The Great Druid",
                    613:        "The Great Druid",
                    614: },
                    615: {      "Novice",                       "Initiate",             /* Monk */
                    616:        "Brother",                      "Disciple",
                    617:        "Immaculate",                   "Master",
                    618:        "Superior Master",              "Master of Dragons",
                    619:        "Master of North Wind",         "Master of West Wind",
                    620:        "Master of South Wind",         "Master of East Wind",
                    621:        "Master of Winter",             "Master of Autumn",
                    622:        "Master of Summer",             "Master of Spring",
                    623:        "Grand Master"
                    624: }
                    625: } ;
                    626:
                    627: struct h_list helpstr[] = {
                    628:     { '?',     "       prints help" },
                    629:     { '/',     "       identify object" },
                    630:     { '=',     "       identify screen character" },
                    631:     { 'h',     "       left" },
                    632:     { 'j',     "       down" },
                    633:     { 'k',     "       up" },
                    634:     { 'l',     "       right" },
                    635:     { 'y',     "       up & left" },
                    636:     { 'u',     "       up & right" },
                    637:     { 'b',     "       down & left" },
                    638:     { 'n',     "       down & right" },
                    639:     { 'H',     "       run left" },
                    640:     { 'J',     "       run down" },
                    641:     { 'K',     "       run up" },
                    642:     { 'L',     "       run right" },
                    643:     { 'Y',     "       run up & left" },
                    644:     { 'U',     "       run up & right" },
                    645:     { 'B',     "       run down & left" },
                    646:     { 'N',     "       run down & right" },
                    647:     { 't',     "<dir>  throw something" },
                    648:     { 'f',     "<dir>  forward until find something" },
                    649:     { 'z',     "<dir>  zap a wand or staff" },
                    650:     { '>',     "       go down a staircase" },
                    651:     { '<',     "       go up a staircase" },
                    652:     { 's',     "       search for trap/secret door" },
                    653:     { '.',     "       rest for a while" },
                    654:     { 'i',     "       inventory" },
                    655:     { 'I',     "       inventory single item" },
                    656:     { 'q',     "       quaff potion" },
                    657:     { 'r',     "       read paper" },
                    658:     { 'e',     "       eat food" },
                    659:     { 'w',     "       wield a weapon" },
                    660:     { 'W',     "       wear something" },
                    661:     { 'T',     "       take off something" },
                    662:     { 'd',     "       drop object" },
                    663:     { 'P',     "       pick up object(s)" },
                    664:     { CTRL('N'),       "       name object or monster" },
                    665:     { 'm',     "       mark object (specific)" },
                    666:     { 'o',     "       examine/set options" },
                    667:     { 'c',     "       chant" },
                    668:     { 'C',     "       cast a spell" },
                    669:     { 'p',     "       pray" },
                    670:     { 'a',     "       affect the undead" },
                    671:     { '^',     "       set a trap" },
                    672:     { 'G',     "       sense gold" },
                    673:     { 'D',     "       dip something (into a pool)" },
                    674:     { '*',     "       count up gold pieces" },
                    675:     { CTRL('T'),       "<dir>  take (steal) from (direction)" },
                    676:     { CTRL('U'),       "       use miscellaneous magic item" },
                    677:     { CTRL('L'),       "       redraw screen" },
                    678:     { CTRL('R'),       "       repeat last message" },
                    679:     { ESCAPE,  "       cancel command" },
                    680:     { 'v',     "       print program version number" },
                    681:     { '!',     "       shell escape" },
                    682:     { 'S',     "       save game" },
                    683:     { 'Q',     "       quit" },
                    684:     { 0, 0 }
                    685: } ;
                    686:
                    687: struct h_list wiz_help[] = {
                    688:     { CTRL('A'),       "       system activity" },
                    689:     { CTRL('C'),       "       move to another dungeon level" },
                    690:     { CTRL('D'),       "       down 1 dungeon level" },
                    691:     { CTRL('E'),       "       food remaining" },
                    692:     { CTRL('F'),       "       display entire level" },
                    693:     { CTRL('H'),       "       jump 9 experience levels" },
                    694:     { CTRL('I'),       "       inventory of level" },
                    695:     { CTRL('J'),       "       teleport" },
                    696:     { CTRL('M'),       "       recharge staff" },
                    697:     { CTRL('P'),       "       toggle wizard status" },
                    698:     { CTRL('U'),       "       up 1 dungeon level" },
                    699:     { CTRL('X'),       "       detect monsters" },
                    700:     { CTRL('Z'),       "       identify" },
                    701:     { 'M',     "       make object" },
                    702:     { 0, 0 }
                    703: };
                    704:
                    705:
                    706: #define HPT(x) x
                    707: struct monster monsters[NUMMONST+1] = {
                    708: /* {"Name",
                    709:                CARRY,  NORMAL, WANDER, APPEAR, INTEL,
                    710:                {ATTRIBUTES},
                    711:                "SUMMONED_CREATURE", NUMBER_SUMMONED,
                    712:                ADDED_EXPERIENCE/HIT_POINT,
                    713:                {str    dex,    move,   exp,    level,  "armor", hit_points,
                    714:                "damage"}}, */
                    715: {"unknown",
                    716:                0,      FALSE,  FALSE,  '\0',   "",
                    717:                {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
                    718:                0,
                    719:                0, 0,
                    720:                {0,     0,      0,      0,      0,      0,      HPT(""),
                    721:                ""}},
                    722: {"giant rat",
                    723:                0,      TRUE,   TRUE,   'R',    "2-4",
                    724:                {ISMEAN, CANDISEASE},
                    725:                0, 0,
                    726:                1,
                    727:                {10,    10,     6,      7,      1,      7,      HPT("1d4"),
                    728:                "1d3"}},
                    729: {"kobold",
                    730:                10,     TRUE,   TRUE,   'K',    "8",
                    731:                {ISMEAN, CANSHOOT, CARRYWEAPON},
                    732:                0, 0,
                    733:                1,
                    734:                {9,     10,     6,      5,      1,      7,      HPT("1d4"),
                    735:                "1d4"}},
                    736: {"gnome",
                    737:                10,     TRUE,   FALSE,  'G',    "11-12",
                    738:                {CANSHOOT, CARRYPOTION, CARRYWEAPON},
                    739:                0, 0,
                    740:                1,
                    741:                {10,    10,     6,      8,      1,      5,      HPT("1d6"),
                    742:                "1d6"}},
                    743: {"bat",
                    744:                0,      TRUE,   TRUE,   'b',    "2-4",
                    745:                {ISMEAN, CANDISEASE, ISFLY, AREMANY},
                    746:                0, 0,
                    747:                0,
                    748:                {10,    10,     6,      5,      1,      10,     HPT("1d4"),
                    749:                "1d1"}},
                    750: {"halfling",
                    751:                10,     TRUE,   FALSE,  'H',    "11-12",
                    752:                {CANSHOOT, CARRYPOTION, CARRYWEAPON},
                    753:                0, 0,
                    754:                1,
                    755:                {8,     10,     6,      9,      1,      4,      HPT("1d6"),
                    756:                "1d6"}},
                    757: {"dwarf",
                    758:                15,     TRUE,   FALSE,  'D',    "11-12",
                    759:                {CANSHOOT, CARRYPOTION, CARRYWEAPON},
                    760:                0, 0,
                    761:                1,
                    762:                {10,    10,     6,      10,     1,      4,      HPT("1d8"),
                    763:                "1d8"}},
                    764: {"orc",
                    765:                15,     TRUE,   TRUE,   'O',    "8",
                    766:                {ISMEAN, CANSHOOT, CARRYGOLD, CARRYWEAPON},
                    767:                0, 0,
                    768:                1,
                    769:                {12,    10,     6,      10,     1,      6,      HPT("1d8"),
                    770:                "1d8"}},
                    771: {"xvart",
                    772:                100,    TRUE,   TRUE,   'x',    "14-15",
                    773:                {ISMEAN, CARRYDAGGER, AREMANY},
                    774:                0, 0,
                    775:                1,
                    776:                {8,     10,     6,      7,      1,      7,      HPT("1d4"),
                    777:                "1d4"}},
                    778: {"manes",
                    779:                0,      TRUE,   TRUE,   'M',    "2-4",
                    780:                {ISMEAN, MAGICHIT, ISUNDEAD, TURNABLE},
                    781:                0, 0,
                    782:                1,
                    783:                {10,    10,     6,      18,     1,      7,      HPT("1d8"),
                    784:                "1d2/1d2/1d4"}},
                    785: {"elf",
                    786:                50,     TRUE,   FALSE,  'E',    "13-20",
                    787:                {CANSHOOT, CARRYPOTION, CARRYSCROLL, CARRYWEAPON},
                    788:                0, 0,
                    789:                2,
                    790:                {12,    10,     6,      20,     1,      5,      HPT("1d8+1"),
                    791:                "1d10"}},
                    792: {"hobgoblin",
                    793:                10,     TRUE,   TRUE,   'h',    "8-10",
                    794:                {ISMEAN, CANSHOOT, CARRYWEAPON},
                    795:                0, 0,
                    796:                2,
                    797:                {14,    10,     6,      20,     1,      5,      HPT("1d8+1"),
                    798:                "1d8"}},
                    799: {"fire beetle",
                    800:                0,      TRUE,   TRUE,   'B',    "0",
                    801:                {ISMEAN, HASFIRE},
                    802:                0, 0,
                    803:                2,
                    804:                {10,    10,     6,      20,     1,      4,      HPT("1d8+2"),
                    805:                "2d4"}},
                    806: {"giant ant",
                    807:                0,      TRUE,   TRUE,   'A',    "1",
                    808:                {ISMEAN, CANPOISON},
                    809:                0, 0,
                    810:                3,
                    811:                {10,    10,     6,      40,     2,      3,      HPT("2d8"),
                    812:                "1d6/1d6"}},
                    813: {"zombie",
                    814:                0,      TRUE,   TRUE,   'Z',    "0",
                    815:                {ISMEAN, ISUNDEAD, TURNABLE},
                    816:                0, 0,
                    817:                2,
                    818:                {10,    10,     6,      20,     2,      8,      HPT("2d8"),
                    819:                "1d8"}},
                    820: {"ear seeker",
                    821:                0,      TRUE,   TRUE,   'e',    "0",
                    822:                {ISMEAN, CANINFEST, AREMANY, CANSURPRISE},
                    823:                0, 0,
                    824:                0,
                    825:                {10,    10,     6,      5,      1,      9,      HPT("1d1"),
                    826:                "1d1"}},
                    827: {"shrieker",
                    828:                0,      TRUE,   FALSE,  'S',    "0",
                    829:                {CANSHRIEK, NOMOVE, NOSTAB},
                    830:                0, 0,
                    831:                1,
                    832:                {10,    10,     6,      10,     3,      7,      HPT("3d8"),
                    833:                "0d0"}},
                    834: {"stirge",
                    835:                0,      TRUE,   TRUE,   's',    "1",
                    836:                {ISMEAN, CANDRAW, ISFLY},
                    837:                0, 0,
                    838:                2,
                    839:                {10,    10,     6,      36,     4,      8,      HPT("1d8+1"),
                    840:                "1d3"}},
                    841: {"gas spore",
                    842:                0,      TRUE,   FALSE,  'a',    "0",
                    843:                {ISMEAN, CANEXPLODE, CANINFEST, ISFLY},
                    844:                0, 0,
                    845:                5,
                    846:                {10,    10,     18,     90,     1,      9,      HPT("1d1"),
                    847:                "1d1"}},
                    848: {"troglodyte",
                    849:                5,      TRUE,   TRUE,   'T',    "5-7",
                    850:                {ISMEAN, CANSMELL, CANSHOOT, CARRYGOLD, CARRYWEAPON},
                    851:                0, 0,
                    852:                2,
                    853:                {10,    10,     6,      36,     2,      5,      HPT("2d8"),
                    854:                "1d3/1d3/2d5"}},
                    855: {"lemure",
                    856:                0,      TRUE,   FALSE,  'L',    "2-4",
                    857:                {ISMEAN, ISREGEN, MAGICHIT, ISUNDEAD, TURNABLE},
                    858:                0, 0,
                    859:                3,
                    860:                {10,    10,     9,      65,     3,      7,      HPT("3d8"),
                    861:                "1d3"}},
                    862: {"bugbear",
                    863:                5,      TRUE,   TRUE,   'b',    "5-8",
                    864:                {ISMEAN, CANSHOOT, CANSURPRISE, CARRYGOLD, CARRYPOTION,
                    865:                 CARRYWEAPON},
                    866:                0, 0,
                    867:                4,
                    868:                {16,    10,     6,      135,    3,      5,      HPT("3d8+1"),
                    869:                "2d4"}},
                    870: {"wererat",
                    871:                20,     TRUE,   TRUE,   'r',    "11-12",
                    872:                {ISMEAN, MAGICHIT, CARRYFOOD, CANSUMMON},
                    873:                "giant rat", 2,
                    874:                4,
                    875:                {10,    10,     6,      150,    3,      6,      HPT("3d8+1"),
                    876:                "1d8"}},
                    877: {"ghoul",
                    878:                0,      TRUE,   TRUE,   'g',    "5-7",
                    879:                {ISMEAN, CANPARALYZE, ISUNDEAD, TURNABLE},
                    880:                0, 0,
                    881:                2,
                    882:                {10,    10,     6,      65,     2,      6,      HPT("2d8"),
                    883:                "1d3/1d3/1d6"}},
                    884: {"leprechaun",
                    885:                100,    TRUE,   FALSE,  'l',    "15-16",
                    886:                {CARRYGOLD, STEALGOLD},
                    887:                0, 0,
                    888:                1,
                    889:                {10,    10,     3,      80,     6,      3,      HPT("1d4+1"),
                    890:                "0d0"}},
                    891: {"gray ooze",
                    892:                50,     TRUE,   FALSE,  'o',    "1",
                    893:                {ISMEAN, CANRUST, ISSCAVENGE, NOCOLD, NOFIRE, NOSTAB,CARRYFOOD},
                    894:                0, 0,
                    895:                5,
                    896:                {10,    10,     10,     200,    3,      8,      HPT("3d8+3"),
                    897:                "2d8"}},
                    898: {"giant tick",
                    899:                0,      TRUE,   TRUE,   't',    "0",
                    900:                {ISMEAN, CANDRAW, CANDISEASE},
                    901:                0, 0,
                    902:                2,
                    903:                {10,    10,     9,      105,    3,      3,      HPT("3d8"),
                    904:                "1d4"}},
                    905: {"ogre",
                    906:                50,     TRUE,   TRUE,   'O',    "5-7",
                    907:                {ISMEAN, CARRYGOLD, CARRYWEAPON},
                    908:                0, 0,
                    909:                5,
                    910:                {18,    10,     7,      90,     4,      5,      HPT("4d8+1"),
                    911:                "1d10"}},
                    912: {"very young dragon",
                    913:                10,     TRUE,   FALSE,  'd',    "15-16",
                    914:                {ISMEAN, CANBRANDOM, ISGREED, CARRYGOLD},
                    915:                0, 0,
                    916:                9,
                    917:                {10,    10,     6,      100,    9,      -1,     HPT("9d1"),
                    918:                "1d4/1d4/2d4"}},
                    919: {"centaur",
                    920:                15,     TRUE,   FALSE,  'C',    "5-10",
                    921:                {CANSHOOT, CARRYPOTION, CARRYGOLD, CARRYWEAPON},
                    922:                0, 0,
                    923:                4,
                    924:                {10,    10,     2,      85,     4,      4,      HPT("4d8"),
                    925:                "1d6/1d6"}},
                    926: {"nymph",
                    927:                100,    TRUE,   FALSE,  'N',    "15-16",
                    928:                {STEALMAGIC, CARRYSCROLL, CARRYPOTION, CARRYSTICK},
                    929:                0, 0,
                    930:                3,
                    931:                {10,    10,     6,      350,    4,      9,      HPT("3d8"),
                    932:                "0d0"}},
                    933: {"violet fungi",
                    934:                0,      TRUE,   FALSE,  'F',    "0",
                    935:                {ISMEAN, CANHOLD, NOMOVE, CANROT, NOSTAB},
                    936:                0, 0,
                    937:                4,
                    938:                {10,    10,     6,      135,    3,      7,      HPT("3d8"),
                    939:                "5d1"}},
                    940: {"gelatinous cube",
                    941:                90,     TRUE,   TRUE,   'c',    "0",
                    942:                {ISMEAN, ISSCAVENGE, CANPARALYZE, NOSTAB, CARRYFOOD},
                    943:                0, 0,
                    944:                4,
                    945:                {10,    10,     8,      150,    4,      8,      HPT("4d8"),
                    946:                "2d4"}},
                    947: {"fire toad",
                    948:                0,      TRUE,   TRUE,   'f',    "5-7",
                    949:                {ISMEAN, CANBFIRE, NOFIRE},
                    950:                0, 0,
                    951:                4,
                    952:                {10,    10,     6,      150,    4,      10,     HPT("4d8+1"),
                    953:                "2d4"}},
                    954: {"blink dog",
                    955:                0,      TRUE,   TRUE,   'B',    "8-10",
                    956:                {ISMEAN, CANBLINK},
                    957:                0, 0,
                    958:                5,
                    959:                {10,    10,     6,      170,    4,      5,      HPT("4d8"),
                    960:                "1d6"}},
                    961: {"rust monster",
                    962:                0,      TRUE,   TRUE,   'R',    "1",
                    963:                {ISMEAN, CANRUST},
                    964:                0, 0,
                    965:                4,
                    966:                {10,    10,     6,      185,    5,      2,      HPT("3d8"),
                    967:                "0d0/0d0"}},
                    968: {"ghast",
                    969:                0,      TRUE,   TRUE,   'G',    "11-12",
                    970:                {CANPARALYZE, CANSTINK, ISMEAN, ISUNDEAD, TURNABLE},
                    971:                0, 0,
                    972:                4,
                    973:                {10,    10,     6,      190,    4,      4,      HPT("4d8"),
                    974:                "1d4/1d4/1d8"}},
                    975: {"blindheim",
                    976:                0,      TRUE,   FALSE,  'b',    "1",
                    977:                {CANBLIND, ISMEAN},
                    978:                0, 0,
                    979:                4,
                    980:                {8,     10,     6,      200,    2,      1,      HPT("4d8+2"),
                    981:                "1d8"}},
                    982: {"shadow",
                    983:                0,      TRUE,   TRUE,   'S',    "5-7",
                    984:                {ISSHADOW, ISMEAN, CANCHILL, ISUNDEAD, TURNABLE},
                    985:                0, 0,
                    986:                4,
                    987:                {10,    10,     6,      255,    3,      7,      HPT("3d8+3"),
                    988:                "1d4+1"}},
                    989: {"gargoyle",
                    990:                5,      TRUE,   TRUE,   'g',    "5-7",
                    991:                {ISMEAN, MAGICHIT},
                    992:                0, 0,
                    993:                5,
                    994:                {10,    10,     6,      165,    4,      5,      HPT("4d8+4"),
                    995:                "1d3/1d3/1d6/1d4"}},
                    996: {"quasit",
                    997:                30,     TRUE,   TRUE,   'Q',    "5-7",
                    998:                {ISMEAN, ISREGEN, MAGICHIT, CANSURPRISE, CANITCH, CARRYSTICK,
                    999:                 CARRYSCROLL, CARRYGOLD, CARRYPOTION, NOCOLD, NOFIRE, NOBOLT},
                   1000:                0, 0,
                   1001:                3,
                   1002:                {10,    10,     6,      325,    7,      2,      HPT("3d8"),
                   1003:                "1d2/1d2/1d4"}},
                   1004: {"imp",
                   1005:                25,     TRUE,   TRUE,   'I',    "8-10",
                   1006:                {ISMEAN, ISREGEN, MAGICHIT, CANPOISON, CANSURPRISE,
                   1007:                 CANTELEPORT, CARRYRING, CARRYSTICK, NOCOLD, NOBOLT, NOFIRE},
                   1008:                0, 0,
                   1009:                3,
                   1010:                {10,    10,     6,      275,    2,      2,      HPT("2d8+2"),
                   1011:                "1d4"}},
                   1012: {"su-monster", 10,     TRUE,   TRUE,   's',    "8-10",
                   1013:                {ISMEAN, CARRYSCROLL, CARRYGOLD, CARRYFOOD},
                   1014:                0, 0,
                   1015:                6,
                   1016:                {10,    10,     5,      225,    5,      6,      HPT("5d8+5"),
                   1017:                "4d4/2d4"}},
                   1018: {"owlbear",
                   1019:                5,      TRUE,   TRUE,   'O',    "5-7",
                   1020:                {ISMEAN, CANHUG, CARRYRING, CARRYFOOD},
                   1021:                0, 0,
                   1022:                8,
                   1023:                {10,    10,     8,      225,    5,      5,      HPT("5d8+2"),
                   1024:                "1d6/1d6/2d6"}},
                   1025: {"doppleganger",
                   1026:                0,      TRUE,   TRUE,   'D',    "11-12",
                   1027:                {ISMEAN, CANSURPRISE},
                   1028:                0, 0,
                   1029:                4,
                   1030:                {10,    10,     6,      330,    10,     5,      HPT("4d8"),
                   1031:                "1d12"}},
                   1032: {"yeti",
                   1033:                30,     TRUE,   TRUE,   'Y',    "8-10",
                   1034:                {ISMEAN, CANPARALYZE, CANHUG, NOCOLD, CANSURPRISE,
                   1035:                 CARRYGOLD, CARRYPOTION},
                   1036:                0, 0,
                   1037:                8,
                   1038:                {13,    10,     6,      500,    6,      6,      HPT("4d8+4"),
                   1039:                "1d6/1d6"}},
                   1040: {"leucrotta",
                   1041:                0,      TRUE,   FALSE,  'L',    "8-10",
                   1042:                {ISMEAN},
                   1043:                0, 0,
                   1044:                8,
                   1045:                {10,    10,     2,      475,    6,      4,      HPT("6d8+1"),
                   1046:                "3d6/1d6/1d6"}},
                   1047: {"cockatrice",
                   1048:                0,      TRUE,   TRUE,   'C',    "1",
                   1049:                {ISMEAN, TOUCHSTONE},
                   1050:                0, 0,
                   1051:                5,
                   1052:                {10,    10,     5,      315,    5,      6,      HPT("5d8"),
                   1053:                "1d3"}},
                   1054: {"wight",
                   1055:                0,      TRUE,   TRUE,   'W',    "8-10",
                   1056:                {ISMEAN, CANDRAIN, MAGICHIT, ISUNDEAD, TURNABLE},
                   1057:                0, 0,
                   1058:                5,
                   1059:                {10,    10,     6,      540,    4,      5,      HPT("4d8+3"),
                   1060:                "1d4"}},
                   1061: {"troll",
                   1062:                50,     TRUE,   FALSE,  'T',    "5-7",
                   1063:                {ISMEAN, ISREGEN, CARRYFOOD, CARRYGOLD},
                   1064:                0, 0,
                   1065:                8,
                   1066:                {18,    10,     8,      600,    6,      4,      HPT("6d8+6"),
                   1067:                "1d4+4/1d4+4/2d6"}},
                   1068: {"jackalwere",
                   1069:                50,     TRUE,   TRUE,   'J',    "11-12",
                   1070:                {ISMEAN, CANSHOOT, CANSNORE, MAGICHIT, CARRYFOOD, CARRYGOLD,
                   1071:                 CARRYSCROLL},
                   1072:                0, 0,
                   1073:                4,
                   1074:                {10,    10,     6,      800,    4,      4,      HPT("4d8"),
                   1075:                "2d4"}},
                   1076: {"wraith",
                   1077:                0,      TRUE,   TRUE,   'w',    "11-12",
                   1078:                {ISMEAN, CANDRAIN, MAGICHIT, ISUNDEAD, TURNABLE},
                   1079:                0, 0,
                   1080:                6,
                   1081:                {10,    10,     6,      575,    5,      4,      HPT("5d8+3"),
                   1082:                "1d6"}},
                   1083: {"mimic",
                   1084:                20,     TRUE,   FALSE,  'M',    "2-10",
                   1085:                {ISMEAN, ISDISGUISE, NODETECT, CANHOLD, CARRYFOOD, CARRYRING,
                   1086:                 CARRYGOLD, NOMOVE},
                   1087:                0, 0,
                   1088:                12,
                   1089:                {10,    10,     6,      1300,   9,      7,      HPT("10d8"),
                   1090:                "3d4"}},
                   1091: {"erinyes",
                   1092:                25,     TRUE,   TRUE,   'E',    "8-10",
                   1093:                {ISMEAN, CANFRIGHTEN, CANSUMMON, TURNABLE, CANPAIN, CANSEE,
                   1094:                 NOFIRE, CANTELEPORT, CARRYRING, CARRYSTICK},
                   1095:                "ghoul", 3,
                   1096:                8,
                   1097:                {10,    10,     6,      875,    7,      2,      HPT("6d8+6"),
                   1098:                "2d4"}},
                   1099: {"lava child",
                   1100:                0,      TRUE,   TRUE,   'l',    "8-10",
                   1101:                {ISMEAN, NOMETAL},
                   1102:                0, 0,
                   1103:                8,
                   1104:                {10,    10,     6,      950,    5,      4,      HPT("5d8+1"),
                   1105:                "1d6/1d6/2d12"}},
                   1106: {"basilisk",
                   1107:                0,      TRUE,   FALSE,  'B',    "1",
                   1108:                {ISMEAN, LOOKSTONE},
                   1109:                0, 0,
                   1110:                8,
                   1111:                {10,    10,     6,      1000,   6,      4,      HPT("6d8+1"),
                   1112:                "1d10"}},
                   1113: {"mummy",
                   1114:                20,     TRUE,   FALSE,  'm',    "5-7",
                   1115:                {ISMEAN,CANINFEST, MAGICHIT, CANFRIGHTEN, HALFDAMAGE, ISUNDEAD,
                   1116:                 TURNABLE, CARRYRING},
                   1117:                0, 0,
                   1118:                8,
                   1119:                {10,    10,     6,      1150,   6,      3,      HPT("6d8+3"),
                   1120:                "1d12"}},
                   1121: {"otyugh",
                   1122:                0,      TRUE,   TRUE,   'o',    "5-10",
                   1123:                {ISMEAN, CANDISEASE},
                   1124:                0, 0,
                   1125:                8,
                   1126:                {10,    10,     6,      700,    7,      3,      HPT("7d8"),
                   1127:                "1d8/1d8/1d4+1"}},
                   1128: {"adult dragon",
                   1129:                30,     TRUE,   FALSE,  'd',    "15-16",
                   1130:                {ISMEAN, CANBRANDOM, ISGREED, CANFRIGHTEN, CARRYGOLD,
                   1131:                 CARRYPOTION},
                   1132:                0, 0,
                   1133:                9,
                   1134:                {10,    10,     6,      1000,   9,      -1,     HPT("45d1"),
                   1135:                "1d6/1d6/2d6"}},
                   1136: {"invisible stalker",
                   1137:                0,      TRUE,   TRUE,   'i',    "13-14",
                   1138:                {ISMEAN, ISINVIS},
                   1139:                0, 0,
                   1140:                10,
                   1141:                {10,    10,     4,      1090,   8,      3,      HPT("8d8"),
                   1142:                "4d4"}},
                   1143: {"xorn",
                   1144:                0,      TRUE,   TRUE,   'X',    "8-10",
                   1145:                {ISMEAN, CANINWALL, NOCOLD, NOFIRE, CANSURPRISE, NOBOLT},
                   1146:                0, 0,
                   1147:                10,
                   1148:                {10,    10,     6,      1275,   7,      -2,     HPT("7d8+7"),
                   1149:                "1d3/1d3/1d3/4d6"}},
                   1150: {"chimera",
                   1151:                0,      TRUE,   FALSE,  'c',    "2-4",
                   1152:                {ISMEAN, CANBFIRE, NOFIRE},
                   1153:                0, 0,
                   1154:                12,
                   1155:                {10,    10,     6,      1000,   9,      6,      HPT("9d8"),
                   1156:                "1d3/1d3/1d4/1d4/2d4/3d4"}},
                   1157: {"horned devil",
                   1158:                5,      TRUE,   TRUE,   'H',    "13-14",
                   1159:                {ISMEAN, CANFRIGHTEN, CANINFEST, CANPOISON, MAGICHIT, CANSUMMON,
                   1160:                 NOFIRE, CANTELEPORT, CARRYGOLD, CARRYRING, CARRYSTICK},
                   1161:                "wight", 2,
                   1162:                6,
                   1163:                {10,    10,     6,      1320,   7,      -3,     HPT("5d8+5"),
                   1164:                "1d4/1d4/1d4+1/1d3"}},
                   1165: {"specter",
                   1166:                0,      TRUE,   TRUE,   'S',    "13-14",
                   1167:                {ISMEAN, DOUBLEDRAIN, ISUNDEAD, TURNABLE},
                   1168:                0, 0,
                   1169:                10,
                   1170:                {10,    10,     6,      1650,   7,      2,      HPT("7d8+3"),
                   1171:                "1d8"}},
                   1172: {"will-o-wisp", 100,   TRUE,   FALSE,  'W',    "15-16",
                   1173:                {ISMEAN, CANSURPRISE, ISFLY, CARRYGOLD, CARRYMISC, NOBOLT},
                   1174:                0, 0,
                   1175:                12,
                   1176:                {10,    10,     5,      2000,   9,      -8,     HPT("9d8"),
                   1177:                "2d8"}},
                   1178: {"lamia",
                   1179:                0,      TRUE,   TRUE,   'L',    "13-14",
                   1180:                {ISMEAN, TAKEWISDOM},
                   1181:                0, 0,
                   1182:                9,
                   1183:                {10,    10,     2,      1500,   9,      3,      HPT("9d8"),
                   1184:                "1d4/1d4"}},
                   1185: {"neo-otyugh",
                   1186:                0,      TRUE,   TRUE,   'N',    "10-12",
                   1187:                {ISMEAN, CANDISEASE},
                   1188:                0, 0,
                   1189:                10,
                   1190:                {12,    10,     6,      1500,   10,     0,      HPT("12d8"),
                   1191:                "2d6/2d6/1d3"}},
                   1192: {"barbed devil",
                   1193:                0,      TRUE,   TRUE,   'B',    "11-12",
                   1194:                {TOUCHFEAR, CANSUMMON, ISMEAN, CANHOLD, TURNABLE, NOFIRE,
                   1195:                 CANTELEPORT},
                   1196:                "ghast", 4,
                   1197:                10,
                   1198:                {10,    10,     6,      1425,   8,      0,      HPT("8d8"),
                   1199:                "2d4/2d4/3d4"}},
                   1200: {"vrock",
                   1201:                10,     TRUE,   TRUE,   'V',    "5-7",
                   1202:                {ISMEAN, CANSUMMON, CANSEE, TURNABLE, CANTELEPORT, CARRYGOLD,
                   1203:                 CARRYRING, CARRYSTICK},
                   1204:                "erinyes", 2,
                   1205:                10,
                   1206:                {10,    10,     6,      1500,   8,      0,      HPT("8d8"),
                   1207:                "1d4/1d4/1d8/1d8/1d6"}},
                   1208: {"shambling mound",
                   1209:                25, TRUE,       TRUE,   's',    "5-7",
                   1210:                {ISMEAN, CANSUFFOCATE, NOCOLD, NOFIRE, CANHOLD, CARRYGOLD,
                   1211:                 CARRYFOOD, CARRYRING},
                   1212:                0, 0,
                   1213:                10,
                   1214:                {10,    10,     7,      1800,   9,      0,      HPT("9d8"),
                   1215:                "2d8/2d8"}},
                   1216: {"umber hulk",
                   1217:                40,     TRUE,   TRUE,   'U',    "8-10",
                   1218:                {ISMEAN, CANHUH, CANINWALL, CANTUNNEL, CARRYSCROLL,
                   1219:                 CARRYPOTION, CARRYFOOD},
                   1220:                0, 0,
                   1221:                12,
                   1222:                {10,    10,     6,      1700,   8,      2,      HPT("8d8+8"),
                   1223:                "3d4/3d4/2d5"}},
                   1224: {"ettin",
                   1225:                0,      TRUE,   TRUE,   'e',    "5-7",
                   1226:                {ISMEAN, CANSHOOT, AREMANY},
                   1227:                0, 0,
                   1228:                14,
                   1229:                {10,    10,     6,      1950,   10,     3,      HPT("10d8"),
                   1230:                "2d8/3d6"}},
                   1231: {"black pudding",
                   1232:                30,     TRUE,   FALSE,  'P',    "0",
                   1233:                {ISMEAN, CANRUST, NOCOLD, BOLTDIVIDE, BLOWDIVIDE, ISSCAVENGE,
                   1234:                 NOSTAB, CARRYSCROLL, CARRYPOTION, CARRYRING},
                   1235:                0, 0,
                   1236:                14,
                   1237:                {10,    10,     6,      2000,   10,     6,      HPT("10d8"),
                   1238:                "3d8"}},
                   1239: {"hezrou",
                   1240:                15,     TRUE,   TRUE,   'h',    "5-7",
                   1241:                {ISMEAN, CANFRIGHTEN, CANSEE, CANSUMMON, TURNABLE, CANTELEPORT,
                   1242:                 CARRYPOTION, CARRYRING, CARRYSTICK},
                   1243:                "wight", 3,
                   1244:                12,
                   1245:                {10,    10,     6,      2000,   9,      -2,     HPT("9d8"),
                   1246:                "1d3/1d3/4d4"}},
                   1247: {"glabrezu",
                   1248:                25,     TRUE,   FALSE,  'G',    "8-10",
                   1249:                {ISMEAN, CANFRIGHTEN, CANSEE, CANSUMMON, TURNABLE, CANTELEPORT,
                   1250:                 CARRYSCROLL, CARRYPOTION, CARRYGOLD},
                   1251:                "wraith", 3,
                   1252:                14,
                   1253:                {10,    10,     6,      2400,   10,     -4,     HPT("10d8"),
                   1254:                "2d6/2d6/1d3/1d3/1d4+1"}},
                   1255: {"bone devil",
                   1256:                0,      TRUE,   TRUE,   'b',    "11-12",
                   1257:                {ISMEAN, CANFRIGHTEN, CANSEE, CANSUMMON, CANSURPRISE, CANCHILL,
                   1258:                 TURNABLE, NOFIRE, NOCOLD, CANTELEPORT},
                   1259:                "ghast", 3,
                   1260:                12,
                   1261:                {10,    10,     6,      2800,   9,      -1,     HPT("9d8"),
                   1262:                "2d4"}},
                   1263: {"white pudding",
                   1264:                30,     TRUE,   FALSE,  'w',    "0",
                   1265:                {ISMEAN, CANDISSOLVE, NOCOLD, BOLTDIVIDE, BLOWDIVIDE,
                   1266:                 ISSCAVENGE, NOSTAB, CARRYRING, CARRYSCROLL,
                   1267:                 CARRYPOTION},
                   1268:                0, 0,
                   1269:                14,
                   1270:                {10,    10,     6,      2200,   9,      8,      HPT("10d8"),
                   1271:                "7d4"}},
                   1272: {"vampire",
                   1273:                20,     TRUE,   TRUE,   'v',    "15-16",
                   1274:                {ISMEAN, ISREGEN, CANSUCK, ISUNDEAD, TURNABLE, CARRYMISC},
                   1275:                0, 0,
                   1276:                12,
                   1277:                {20,    10,     6,      3800,   8,      1,      HPT("8d8+3"),
                   1278:                "1d6+4"}},
                   1279: {"ghost",
                   1280:                20,     TRUE,   FALSE,  'g',    "13-14",
                   1281:                {ISMEAN, CANFRIGHTEN, CANAGE, ISUNDEAD, TURNABLE, CARRYMISC,
                   1282:                 CMAGICHIT, CANINWALL},
                   1283:                0, 0,
                   1284:                10,
                   1285:                {13,    10,     5,      5000,   12,     0,      HPT("10d8"),
                   1286:                "1d12"}},
                   1287: {"intellect devourer",
                   1288:                0,      TRUE,   FALSE,  'D',    "11-12",
                   1289:                {ISMEAN, TAKEINTEL, CMAGICHIT, HALFDAMAGE, CANSURPRISE, NOFIRE,
                   1290:                 NOCOLD},
                   1291:                0, 0,
                   1292:                9,
                   1293:                {10,    10,     4,      5000,   7,      4,      HPT("6d8+6"),
                   1294:                "1d4/1d4/1d4/1d4"}},
                   1295: {"ice devil",
                   1296:                30,     TRUE,   FALSE,  'I',    "13-14",
                   1297:                {ISMEAN, CANSEE, ISREGEN, CANFRIGHTEN, CANSUMMON, CANBICE,
                   1298:                 NOCOLD, NOFIRE, TOUCHSLOW, CANTELEPORT, CARRYSCROLL, CARRYRING,
                   1299:                 CARRYSTICK},
                   1300:                "bone devil", 2,
                   1301:                16,
                   1302:                {20,    10,     6,      4400,   11,     -4,     HPT("11d8"),
                   1303:                "1d4/1d4/2d4/3d4"}},
                   1304: {"purple worm",
                   1305:                70,     TRUE,   TRUE,   'p',    "0",
                   1306:                {ISMEAN, CANPOISON, CANINWALL, CANTUNNEL, CARRYFOOD, CARRYGOLD},
                   1307:                0, 0,
                   1308:                20,
                   1309:                {10,    10,     6,      4900,   15,     6,      HPT("15d8"),
                   1310:                "2d12/2d4"}},
                   1311: {"ancient brass dragon",
                   1312:                70,     TRUE,   FALSE,  'r',    "13-14",
                   1313:                {CANBSGAS, CANBFGAS, ISGREED, CANSEE, NOSLEEP, NOFEAR,
                   1314:                 CARRYGOLD, CARRYRING},
                   1315:                0, 0,
                   1316:                50,
                   1317:                {10,    10,     6,      10000,  8,      2,      HPT("0d8+64"),
                   1318:                "1d4/1d4/4d4"}},
                   1319: {"pit fiend",
                   1320:                100,    TRUE,   TRUE,   'f',    "15-16",
                   1321:                {ISMEAN, CANSEE, BMAGICHIT, CANFRIGHTEN, CANHOLD, CANSUMMON,
                   1322:                 CANBFIRE, NOFIRE, CANTELEPORT, CARRYSTICK, HASFIRE, ISFLY},
                   1323:                "barbed devil", 3,
                   1324:                18,
                   1325:                {22,    10,     6,      10000,  13,     -3,     HPT("13d8"),
                   1326:                "1d4+4/1d6+6"}},
                   1327: {"ancient white dragon",
                   1328:                70,     TRUE,   TRUE,   'W',    "8-9",
                   1329:                {ISMEAN, CANBICE, ISGREED, CANSEE, NOCOLD, CARRYGOLD,
                   1330:                 CARRYRING},
                   1331:                0, 0,
                   1332:                50,
                   1333:                {10,    10,     6,      15000,  7,      3,      HPT("0d8+56"),
                   1334:                "1d4/1d4/2d8"}},
                   1335: {"ancient black dragon",
                   1336:                70,     TRUE,   TRUE,   'a',    "8-10",
                   1337:                {ISMEAN, CANBACID, NOACID, ISGREED, CANSEE, CARRYGOLD,
                   1338:                 CARRYSTICK},
                   1339:                0, 0,
                   1340:                50,
                   1341:                {10,    10,     6,      20000,  8,      3,      HPT("0d8+64"),
                   1342:                "1d4/1d4/3d6"}},
                   1343: {"lich",
                   1344:                60,     TRUE,   TRUE,   'l',    "19-20",
                   1345:                {ISMEAN, CANDRAIN, CANSEE, CANPARALYZE, CANFRIGHTEN, MAGICHIT,
                   1346:                 ISUNDEAD, TURNABLE, NOBOLT, CANMISSILE, CANSUMMON, CARRYGOLD,
                   1347:                 CARRYSCROLL, CARRYPOTION, CARRYRING, CARRYSTICK},
                   1348:                "specter", 2,
                   1349:                16,
                   1350:                {10,    10,     6,      20000,  17,     0,      HPT("11d8"),
                   1351:                "1d10"}},
                   1352: {"titan",
                   1353:                80,     TRUE,   FALSE,  't',    "17-20",
                   1354:                {ISMEAN, ISSHADOW, CANSEE, CANMISSILE, CARRYRING, CARRYSTICK,
                   1355:                 CANTELEPORT},
                   1356:                0, 0,
                   1357:                30,
                   1358:                {13,    10,     5,      20000,  19,     -3,     HPT("22d8"),
                   1359:                "8d6"}},
                   1360: {"ancient copper dragon",
                   1361:                70,     TRUE,   FALSE,  'c',    "13-14",
                   1362:                {CANBACID, NOACID, CANBSLGAS, ISGREED, CANSEE, NOSLOW,
                   1363:                 CARRYGOLD, CARRYSTICK},
                   1364:                0, 0,
                   1365:                50,
                   1366:                {10,    10,     6,      20000,  9,      1,      HPT("0d8+72"),
                   1367:                "1d4/1d4/5d4"}},
                   1368: {"ancient green dragon",
                   1369:                50,     TRUE,   TRUE,   'E',    "10-12",
                   1370:                {ISMEAN, CANBGAS, ISGREED, CANSEE, NOGAS, CARRYGOLD,
                   1371:                 CARRYRING, CARRYSTICK},
                   1372:                0, 0,
                   1373:                50,
                   1374:                {10,    10,     6,      20000,  9,      2,      HPT("0d8+72"),
                   1375:                "1d6/1d6/2d10"}},
                   1376: {"ancient bronze dragon",
                   1377:                50,     TRUE,   FALSE,  'L',    "15-16",
                   1378:                {CANBCGAS, CANBBOLT, CANBFGAS, ISGREED, CANSEE, NOFEAR, NOBOLT,
                   1379:                 ISCLEAR, CARRYGOLD, CARRYRING, CARRYSTICK},
                   1380:                0, 0,
                   1381:                50,
                   1382:                {10,    10,     6,      20000,  10,     0,      HPT("0d8+80"),
                   1383:                "1d6/1d6/4d6"}},
                   1384: {"ancient blue dragon",
                   1385:                50,     TRUE,   TRUE,   'u',    "12-14",
                   1386:                {ISMEAN, CANBBOLT, ISGREED, CANSEE, NOBOLT, CARRYGOLD,
                   1387:                 CARRYSCROLL, CARRYRING, CARRYSTICK},
                   1388:                0, 0,
                   1389:                50,
                   1390:                {10,    10,     6,      20000,  10,     2,      HPT("0d8+80"),
                   1391:                "1d6/1d6/3d8"}},
                   1392: {"ancient silver dragon",
                   1393:                40,     TRUE,   FALSE,  'S',    "15-16",
                   1394:                {CANBICE, CANBPGAS, ISGREED, CANSEE, CANMISSILE, NOCOLD,
                   1395:                 NOPARALYZE, CARRYGOLD, CARRYSCROLL, CARRYRING, CARRYSTICK},
                   1396:                0, 0,
                   1397:                50,
                   1398:                {10,    10,     6,      20000,  11,     -1,     HPT("0d8+88"),
                   1399:                "1d6/1d6/5d6"}},
                   1400: {"frost giant",
                   1401:                50,     TRUE,   TRUE,   'F',    "5-10",
                   1402:                {ISMEAN, NOCOLD, CARRYGOLD, AREMANY},
                   1403:                0, 0,
                   1404:                40,
                   1405:                {25,    10,     5,      20000,  15,     4,      HPT("10d8+4"),
                   1406:                "4d6"}},
                   1407: {"ancient red dragon",
                   1408:                40,     TRUE,   TRUE,   'R',    "15-16",
                   1409:                {ISMEAN, CANBFIRE, ISGREED, CANSEE, NOFIRE, CARRYGOLD,
                   1410:                 CARRYPOTION, CARRYRING, CARRYSTICK},
                   1411:                0, 0,
                   1412:                50,
                   1413:                {10,    10,     6,      20000,  11,     -1,     HPT("0d8+88"),
                   1414:                "1d8/1d8/3d10"}},
                   1415: {"ancient gold dragon",
                   1416:                50,     TRUE,   FALSE,  'G',    "17-18",
                   1417:                {CANBFIRE, CANBGAS, ISGREED, CANSEE, CANMISSILE, NOFIRE, NOGAS,
                   1418:                 CARRYGOLD, CARRYPOTION, CARRYRING, CARRYSTICK, CANTELEPORT},
                   1419:                0, 0,
                   1420:                50,
                   1421:                {10,    10,     6,      20000,  12,     -2,     HPT("0d8+96"),
                   1422:                "1d8/1d8/6d6"}},
                   1423: {"fire giant",
                   1424:                30,     TRUE,   TRUE,   'f',    "6-10",
                   1425:                {ISMEAN, CARRYGOLD, NOFIRE, AREMANY},
                   1426:                0, 0,
                   1427:                45,
                   1428:                {27,    10,     5,      26000,  15,     4,      HPT("11d8+5"),
                   1429:                "5d6"}},
                   1430: {"storm giant",
                   1431:                30,     TRUE,   TRUE,   's',    "8-10",
                   1432:                {ISMEAN, NOBOLT, CANBBOLT, CARRYRING},
                   1433:                0, 0,
                   1434:                50,
                   1435:                {30,    10,     5,      30000,  15,     2,      HPT("15d8+8"),
                   1436:                "7d6"}},
                   1437: {"dwarven thief (Musty Doit)",
                   1438:                50,     TRUE,   TRUE,   'm',    "16",
                   1439:                {ISMEAN, ISUNIQUE, ISINVIS, NOFIRE, NOGAS, NOSTAB, STEALGOLD,
                   1440:                 STEALMAGIC, CANPAIN, ISFLY, CARRYGOLD, CANSURPRISE, CANSEE,
                   1441:                 CARRYMDAGGER, CARRYMISC, CARRYPOTION, CANBSTAB, ISSCAVENGE,
                   1442:                 NODETECT},
                   1443:                0, 0,
                   1444:                0,
                   1445:                {9,     18,     8,      300000, 22,     -5,     HPT("0d8+95"),
                   1446:                "6d4+70/6d4+70"}},
                   1447: {"demon prince (Jubilex)",
                   1448:                100,    TRUE,   FALSE,  'J',    "18",
                   1449:                {ISMEAN, ISUNIQUE, CANFRIGHTEN, ISREGEN, BMAGICHIT, ISSHADOW,
                   1450:                 CANHOLD, CANDISEASE, CANSUMMON, CANSEE, CANROT, CANINFEST,
                   1451:                 CANRUST, NOSTAB, CANTELEPORT, CARRYMISC, CANSMELL, CANSTINK,
                   1452:                 NOFIRE},
                   1453:                "black pudding", 4,
                   1454:                0,
                   1455:                {18,    18,     5,      100000, 20,     -7,     HPT("0d8+88"),
                   1456:                "4d10"}},
                   1457: {"arch devil (Geryon)",
                   1458:                100,    TRUE,   FALSE,  'g',    "16",
                   1459:                {ISMEAN, ISUNIQUE, BMAGICHIT, CANSEE, ISSHADOW, CANFRIGHTEN,
                   1460:                 CANHUH, CANPOISON, CANSUMMON, NOFIRE, CANTELEPORT, NOFIRE,
                   1461:                 CARRYMISC, CARRYHORN},
                   1462:                "ice devil", 5,
                   1463:                0,
                   1464:                {18,    18,     5,      110000, 30,     -3,     HPT("0d8+133"),
                   1465:                "3d6/3d6/2d4"}},
                   1466: {"arch devil (Dispater)",
                   1467:                100,    TRUE,   FALSE,  'd',    "18",
                   1468:                {ISMEAN, ISUNIQUE, CANSEE, CANFRIGHTEN, CANHUH, BMAGICHIT,
                   1469:                 CANSUMMON, CARRYSTICK, NOFIRE, CANTELEPORT, CARRYMISC},
                   1470:                "ghost", 9,
                   1471:                0,
                   1472:                {18,    18,     5,      120000, 36,     -2,     HPT("0d8+144"),
                   1473:                "4d6"}},
                   1474: {"demon prince (Yeenoghu)",
                   1475:                100,    TRUE,   FALSE,  'Y',    "16",
                   1476:                {ISMEAN, ISREGEN, ISUNIQUE, MAGICHIT, CANSEE, ISSHADOW, CANHOLD,
                   1477:                 CARRYFLAIL, CANFRIGHTEN, CANPARALYZE, CANSUMMON, CANHUH,
                   1478:                 CANMISSILE, CANTELEPORT, CARRYMISC, NOFIRE},
                   1479:                "lich", 5,
                   1480:                0,
                   1481:                {18,    18,     5,      130000, 23,     -5,     HPT("0d8+100"),
                   1482:                "3d6/3d6"}},
                   1483: {"witch (Emori)",
                   1484:                50,     TRUE,   TRUE,   'w',    "18",
                   1485:                {ISMEAN, CANMISSILE, ISINVIS, CANBBOLT, CANBFIRE, CANBICE,
                   1486:                 CANSEE, CANSUMMON, ISUNIQUE, CANSNORE, ISFLY, TAKEINTEL,
                   1487:                 CANDANCE, CANDISEASE, NOBOLT, NOCOLD, NOFIRE, CARRYCLOAK,
                   1488:                 ISCLEAR, CARRYSCROLL, CARRYSTICK, CANTELEPORT, CANSLOW},
                   1489:                "shambling mound", 7,
                   1490:                0,
                   1491:                {21,    12,     6,      140000, 25,      0,     HPT("0d8+102"),
                   1492:                "1d4/1d4"}},
                   1493: {"cleric of Thoth (Heil)",
                   1494:                100,    TRUE,   TRUE,   'h',    "16",
                   1495:                {ISMEAN, CANSEE, NOFEAR, ISREGEN, CANHOLD, CANBFIRE, ISUNIQUE,
                   1496:                 DOUBLEDRAIN, CANSUMMON, NOFIRE, TOUCHFEAR, CANDISEASE, CANSUCK,
                   1497:                 CANSEE, TAKEWISDOM, CARRYANKH, CARRYRING, ISINVIS, ISFLY},
                   1498:                 "vampire", 9,
                   1499:                 0,
                   1500:                 {25,   15,     6,      150000, 25,     -8,     HPT("0d8+116"),
                   1501:                 "0d6+11"}},
                   1502: {"magician (Tsoming Zen)",
                   1503:                80,     TRUE,   FALSE,  'z',    "18",
                   1504:                {ISMEAN, ISUNIQUE, ISINVIS, ISREGEN, CANBFIRE, CANBICE,
                   1505:                 CANBBOLT, CANMISSILE, NOFIRE, CANHOLD, CANFRIGHTEN, CANDISEASE,
                   1506:                 CANPAIN, CANSUMMON, CANSEE, ISFLY, CANTELEPORT,
                   1507:                 CARRYSTAFF, CARRYSTICK, NOSLOW, NOBOLT, NOCOLD},
                   1508:                 "ancient black dragon", 5,
                   1509:                 0,
                   1510:                 {18,   16,     6,      160000, 21,       -4,   HPT("0d8+125"),
                   1511:                 "2d4+1/2d4+1/2d4+1/2d4+1"}},
                   1512: {"poet (Brian)",
                   1513:                80,     TRUE,   TRUE,   'p',    "16",
                   1514:                {ISMEAN, ISUNIQUE, STEALGOLD, ISSHADOW, CANSUMMON, ISREGEN,
                   1515:                 CANDISEASE, NOCOLD, NOBOLT, NOFIRE, NOFEAR, CANTUNNEL, CANSEE,
                   1516:                 CANINWALL, ISCLEAR, CARRYMANDOLIN, CARRYPOTION, CARRYRING},
                   1517:                "umber hulk", 6,
                   1518:                0,
                   1519:                {19,    18,     5,      170000, 20,     -2,     HPT("0d8+156"),
                   1520:                "8d8+48/4d4+36"}},
                   1521: {"lesser god (Hruggek)",
                   1522:                100,    TRUE,   FALSE,  'H',    "17",
                   1523:                {ISMEAN, CANSEE, ISUNIQUE, CANSUMMON, ISREGEN, CANFRIGHTEN,
                   1524:                 CANTELEPORT, CARRYMISC, CARRYMSTAR, CANSMELL, CANBLINK},
                   1525:                "purple worm", 6,
                   1526:                0,
                   1527:                {19,    18,     5,      180000, 25,     0,      HPT("0d8+221"),
                   1528:                "2d8/2d8"}},
                   1529: {"lesser god (Kurtulmak)",
                   1530:                100,    TRUE,   TRUE,   'K',    "19",
                   1531:                {ISMEAN, CANFRIGHTEN, CANPOISON, CANSEE, ISUNIQUE, CANSUMMON,
                   1532:                 CANTELEPORT, CARRYMISC, CANBLINK},
                   1533:                "lich", 3,
                   1534:                0,
                   1535:                {19,    18,     5,      190000, 27,     0,      HPT("0d8+219"),
                   1536:                "2d12/1d6"}},
                   1537: {"demigod (Vaprak \"The Destroyer\")",
                   1538:                100,    TRUE,   TRUE,   'v',    "18",
                   1539:                {ISMEAN, ISUNIQUE, ISREGEN, MAGICHIT, CANSEE, CANSUMMON,
                   1540:                 CANTELEPORT, CARRYMISC, CANSMELL},
                   1541:                "troll", 9,
                   1542:                0,
                   1543:                {18,    18,     5,      200000, 26,     0,      HPT("0d8+198"),
                   1544:                "2d10/2d10/1d12"}},
                   1545: {"hero (Aklad)",
                   1546:                100,    TRUE,   FALSE,  'k',    "16",
                   1547:                {ISMEAN, ISUNIQUE, CANSUMMON, ISREGEN, NOCOLD, NOBOLT, NOFIRE,
                   1548:                 NOPARALYZE, NOFEAR, CANSEE, ISCLEAR, CARRYAXE, CARRYRING,
                   1549:                 CARRYMISC, CANBLINK},
                   1550:                "ancient green dragon", 4,
                   1551:                0,
                   1552:                {25,    16,     4,      210000, 25,     -10,    HPT("0d8+196"),
                   1553:                "2d8+23/2d8+23/1d6+19/1d6+19"}},
                   1554: {"magician/thief (Nagrom)",
                   1555:                100,    TRUE,   TRUE,   'N',    "19",
                   1556:                {ISMEAN, ISUNIQUE, STEALMAGIC, ISINVIS, CANSUMMON, ISREGEN,
                   1557:                 CANMISSILE, CANSEE, CARRYQUILL, CARRYSCROLL, CARRYRING, ISFLY,
                   1558:                 CANBSTAB, CANBFIRE, CANBBOLT, CANBICE, NOCOLD, NOBOLT, NOFIRE,
                   1559:                 CANSURPRISE, NODETECT, CANTELEPORT, CANSLOW,
                   1560:                 CARRYSTICK},
                   1561:                "ancient blue dragon", 5,
                   1562:                0,
                   1563:                {18,    18,     8,      220000, 26,     -2,     HPT("0d8+150"),
                   1564:                "1d10+3/1d4+3"}},
                   1565: {"platinum dragon (Bahamut)",
                   1566:                100,    TRUE,   FALSE,  'P',    "20",
                   1567:                {ISUNIQUE, CANBICE, CANBGAS, CANBBOLT, CANBRANDOM, CANSEE,
                   1568:                 NOCOLD, NOBOLT, NOGAS, NOFIRE, NOFEAR, NOSLEEP, NOSLOW,
                   1569:                 NOPARALYZE, CANMISSILE, CANSONIC, CANFRIGHTEN, CANSUMMON,
                   1570:                 CARRYMISC, CANTELEPORT, ISFLY},
                   1571:                "ancient gold dragon", 4,
                   1572:                0,
                   1573:                {18,    18,     5,      230000, 38,     -3,     HPT("0d8+168"),
                   1574:                "2d6/2d6/6d8"}},
                   1575: {"arch devil (Baalzebul)",
                   1576:                100,    TRUE,   FALSE,  'B',    "18",
                   1577:                {ISMEAN, ISSHADOW, ISUNIQUE, BMAGICHIT, CANHOLD, CANPOISON,
                   1578:                 CANFRIGHTEN, CANHUH, CANSUMMON, CANSEE, NOFIRE, CANTELEPORT,
                   1579:                 CARRYMISC, CARRYSTICK, CANDRAIN},
                   1580:                "ice devil", 9,
                   1581:                0,
                   1582:                {18,    18,     5,      240000, 37,     -5,     HPT("0d8+166"),
                   1583:                "2d6"}},
                   1584: {"chromatic dragon (Tiamat)",
                   1585:                100,    TRUE,   FALSE,  'C',    "18",
                   1586:                {ISMEAN, ISUNIQUE, CANBFIRE, CANBACID, CANBBOLT, CANBICE,
                   1587:                 CANBGAS, CANBRANDOM, CANSEE, NOFIRE, NOBOLT, NOCOLD, NOACID,
                   1588:                 NOGAS, CANSUMMON, CANMISSILE, CANFRIGHTEN, CARRYMISC,
                   1589:                 CARRYRING, CANTELEPORT, ISFLY},
                   1590:                "ancient red dragon", 6,
                   1591:                0,
                   1592:                {18,    18,     5,      250000, 29,     0,      HPT("0d8+128"),
                   1593:                "2d8/3d6/2d10/3d8/3d10/1d6"}},
                   1594: {"demon prince (Orcus)",
                   1595:                100,    TRUE,   FALSE,  'O',    "20",
                   1596:                {ISMEAN, ISUNIQUE, BMAGICHIT, CANPOISON, CANFRIGHTEN, CANSEE,
                   1597:                 CANBBOLT, CANSUMMON, NOBOLT, CANTELEPORT, CARRYWAND, NOFIRE,
                   1598:                 CARRYMISC, ISFLY, CARRYSTICK},
                   1599:                "vampire", 9,
                   1600:                0,
                   1601:                {18,    18,     5,      260000, 27,     -6,     HPT("0d8+120"),
                   1602:                "1d10+3/2d4"}},
                   1603: {"arch devil (Asmodeus)",
                   1604:                100,    TRUE,   FALSE,  'A',    "20",
                   1605:                {ISMEAN, ISUNIQUE, CANSEE, ISSHADOW, CANHOLD, BMAGICHIT,
                   1606:                 CANFRIGHTEN, CANHUH, TOUCHSLOW, CANSUMMON, NOFIRE,
                   1607:                 CANTELEPORT, CARRYROD, CARRYMISC, CARRYSTICK, CANDRAIN},
                   1608:                "pit fiend", 5,
                   1609:                0,
                   1610:                {18,    18,     5,      270000, 45,     -7,     HPT("0d8+199"),
                   1611:                "1d10+4"}},
                   1612: {"demon prince (Demogorgon)",
                   1613:                100,    TRUE,   FALSE,  'D',    "20",
                   1614:                {ISMEAN, CANHUH, BMAGICHIT, DOUBLEDRAIN, CANINFEST, CANSEE,
                   1615:                 CANFRIGHTEN, ISUNIQUE, CANSUMMON, CANROT, CANTELEPORT, NOFIRE,
                   1616:                 CANDISEASE, CARRYMISC, CANSUCK, CARRYSTICK},
                   1617:                "pit fiend", 9,
                   1618:                0,
                   1619:                {18,    18,     5,      280000, 45,     -8,     HPT("0d8+200"),
                   1620:                "1d6/1d6"}},
                   1621: {"greater god (Maglubiyet)",
                   1622:                100,    TRUE,   FALSE,  'M',    "19",
                   1623:                {ISMEAN, ISUNIQUE, CMAGICHIT, CANSEE, ISREGEN, CANSUMMON,
                   1624:                 CANTELEPORT, CARRYMISC, CANFRIGHTEN, CARRYSTICK},
                   1625:                "lich", 6,
                   1626:                0,
                   1627:                {19,    18,     5,      290000, 45,     -1,     HPT("0d8+350"),
                   1628:                "2d10/2d10"}},
                   1629: {"greater god (Gruumsh)",
                   1630:                100,    TRUE,   FALSE,  'G',    "19",
                   1631:                {ISMEAN, ISUNIQUE, CMAGICHIT, CANSEE, ISREGEN, CANSUMMON,
                   1632:                 CANTELEPORT, CARRYMISC, CANFRIGHTEN, CARRYSTICK},
                   1633:                "lich", 9,
                   1634:                0,
                   1635:                {19,    18,     5,      300000, 45,     -1,     HPT("0d8+350"),
                   1636:                "3d10/3d10"}},
                   1637: {"lesser god (Thrym)",
                   1638:                100,    TRUE,   FALSE,  'T',    "16",
                   1639:                {ISMEAN, NOCOLD, ISUNIQUE, ISREGEN, CMAGICHIT, CANSEE,
                   1640:                 CANSUMMON, CARRYMISC, CANTELEPORT, CANFRIGHTEN, CARRYSTICK},
                   1641:                "frost giant", 9,
                   1642:                0,
                   1643:                {25,    18,     5,      310000, 45,     -2,     HPT("0d8+360"),
                   1644:                "4d10/4d10"}},
                   1645: {"lesser god (Surtur)",
                   1646:                100,    TRUE,   FALSE,  't',    "19",
                   1647:                {ISMEAN, NOFIRE, ISUNIQUE, ISREGEN, CMAGICHIT, CANSEE,
                   1648:                 CANFRIGHTEN, CANSUMMON, CANMISSILE, CANTELEPORT, CARRYMISC,
                   1649:                 CARRYSTICK, CARRYFOOD, CARRYSURTURRING},
                   1650:                "fire giant", 9,
                   1651:                0,
                   1652:                {25,    18,     5,      320000, 45,     -2,     HPT("0d8+380"),
                   1653:                "5d10/5d10"}},
                   1654: {"lesser god (Skoraeus Stonebones)",
                   1655:                100,    TRUE,   FALSE,  'b',    "19",
                   1656:                {ISMEAN, ISUNIQUE, ISREGEN, CMAGICHIT, CANSEE, CANSUMMON, ISFLY,
                   1657:                 CANMISSILE, CANINWALL, CANTELEPORT, CARRYMISC, CARRYSTICK,
                   1658:                 CANFRIGHTEN, CARRYBAMULET},
                   1659:                "storm giant", 9,
                   1660:                0,
                   1661:                {25,    25,     6,      330000, 45,     -1,     HPT("0d8+380"),
                   1662:                "6d10/6d10"}},
                   1663: {"ruler of greater titans (Yendor)",
                   1664:                100,    TRUE,   TRUE,   'y',     "25",
                   1665:                {ISMEAN, CANINWALL, ISUNIQUE, ISREGEN, CMAGICHIT,ISFLY,
                   1666:                 CANSUMMON, CANMISSILE, CANFRIGHTEN, CANBFIRE, NOFIRE,
                   1667:                 CANHOLD, CARRYYAMULET, CANSEE, CANDANCE, ISSHADOW,
                   1668:                 CANTELEPORT, CARRYMISC, CARRYRING, CARRYSTICK},
                   1669:                "titan", 15,
                   1670:                0,
                   1671:                {25,    25,     6,      340000, 45,     -6,     HPT("0d8+400"),
                   1672:                "7d10/7d10"}},
                   1673: {"the creator of liches (Vecna)",
                   1674:                100,    TRUE,   TRUE,   'V',     "25",
                   1675:                {ISMEAN, CANINWALL, ISUNIQUE, ISREGEN, CMAGICHIT, CANSNORE,
                   1676:                 CANSUMMON, CANMISSILE, CANFRIGHTEN, CANBFIRE, NOFIRE, ISFLY,
                   1677:                 CANHOLD, CARRYEYE, CANSEE, CANDANCE, ISINVIS, HALFDAMAGE,
                   1678:                 CANTELEPORT, CARRYMISC, CARRYRING, CARRYSTICK, LOOKSTONE,
                   1679:                 CANSLOW, CANBLIND},
                   1680:                "lich", 15,
                   1681:                0,
                   1682:                {25,    25,     6,      350000, 47,     -8,     HPT("0d8+450"),
                   1683:                "6d10/6d10"}},
                   1684: {"quartermaster",
                   1685:                0,      FALSE,  TRUE,   'q',    "18",
                   1686:                {CANSELL, ISCLEAR, CANTELEPORT, ISFLY, CANSEE, STEALMAGIC,
                   1687:                 NOFEAR, CANBSTAB},
                   1688:                0, 0,
                   1689:                50,
                   1690:                {25,    18,     12,     20,     1,      -4,     HPT("1d8+1"),
                   1691:                "1d10"}},
                   1692: };

CVSweb