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