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

Annotation of early-roguelike/arogue5/rogue.c, Revision 1.1

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

CVSweb