Mercurial > hg > early-roguelike
view xrogue/mons_def.c @ 163:89deb1197a2d
arogue7: fix a display bug when viewing inventory after restoring.
The restore() function displayed a status message via wprintw() instead
of using the msg() functions. If the inventory was then viewed before
a call to msg(), msgw would obscure the first lines of the inventory
list.
There are surely more bugs related to messages.
author | John "Elwin" Edwards |
---|---|
date | Fri, 12 Jun 2015 12:09:16 -0400 |
parents | e6179860cb76 |
children |
line wrap: on
line source
/* mons_def.c - monster data initializer XRogue: Expeditions into the Dungeons of Doom Copyright (C) 1991 Robert Pietkivitch All rights reserved. Based on "Advanced Rogue" Copyright (C) 1984, 1985 Michael Morgan, Ken Dalka and AT&T All rights reserved. Based on "Rogue: Exploring the Dungeons of Doom" Copyright (C) 1980, 1981 Michael Toy, Ken Arnold and Glenn Wichman All rights reserved. See the file LICENSE.TXT for full copyright and licensing information. */ #include <ctype.h> #include <curses.h> #include "rogue.h" #define HPT(x) x struct monster monsters[NUMMONST+1] = { /* {"Name", CARRY, NORMAL, WANDER, APPEAR, INTEL, {ATTRIBUTES}, "SUMMONED_CREATURE", NUMBER_SUMMONED, ADDED_EXPERIENCE/HIT_POINT, {str dex, move, exp, level, "armor", hit_points, "damage"}}, */ {"unknown", 0, FALSE, FALSE, '\0', "", {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, "", 0, 0, {0, 0, 0, 0, 0, 0, HPT(""), ""}}, {"giant rat", 0, TRUE, TRUE, 'R', "2-6", {ISMEAN, CANDISEASE}, "", 0, 0, {10, 10, 6, 5, 1, 7, HPT("1d4"), "1d3"}}, {"kobold", 50, TRUE, TRUE, 'K', "8-12", {ISMEAN, CANSHOOT, CARRYWEAPON}, "", 0, 2, {9, 9, 5, 8, 2, 7, HPT("1d4"), "1d4"}}, {"bat", 0, TRUE, TRUE, 'b', "2-6", {ISMEAN, AREMANY, CANDISEASE, ISFLY}, "", 0, 0, {5, 5, 6, 5, 1, 10, HPT("1d2"), "1d2"}}, {"gnome", 50, TRUE, FALSE, 'G', "10-15", {CANSHOOT, CARRYPOTION, CARRYWEAPON, NOSTAB}, "", 0, 3, {10, 10, 6, 8, 1, 5, HPT("1d6"), "1d6"}}, {"halfling", 50, TRUE, FALSE, 'H', "11-16", {CANSHOOT, CARRYSCROLL, CARRYWEAPON, NOSTAB}, "", 0, 3, {8, 10, 6, 10, 1, 4, HPT("1d8"), "1d6"}}, {"xvart", 50, TRUE, TRUE, 'x', "4-14", {ISMEAN, AREMANY, CARRYDAGGER, CANTELEPORT}, "", 0, 1, {8, 10, 7, 8, 1, 7, HPT("1d2"), "1d3"}}, {"manes", 0, TRUE, TRUE, 'M', "2-8", {ISMEAN, ISUNDEAD, TURNABLE, CANDISEASE}, "", 0, 0, {5, 5, 5, 15, 2, 7, HPT("1d8"), "1d2/1d2/1d4"}}, {"rot grub", 0, TRUE, TRUE, 'r', "10", {ISMEAN, CANDISEASE, CANINFEST, CANSMELL}, "", 0, 0, {10, 10, 8, 8, 1, 8, HPT("1d6"), "1d6"}}, {"giant ant", 0, TRUE, TRUE, 'A', "1", {ISMEAN, CANPOISON}, "", 0, 3, {10, 10, 6, 30, 3, 3, HPT("2d8"), "1d6/1d6"}}, {"orc", 50, TRUE, TRUE, 'O', "8", {ISMEAN, CANSHOOT, CARRYFOOD}, "", 0, 2, {12, 12, 5, 15, 4, 6, HPT("2d8"), "1d8"}}, {"dwarf", 50, TRUE, FALSE, 'D', "10-14", {CARRYSCROLL, CARRYGOLD, CARRYDAGGER, NOSTAB}, "", 0, 4, {10, 10, 6, 20, 1, 4, HPT("2d8"), "1d8"}}, {"elf", 50, TRUE, FALSE, 'E', "10-14", {CARRYPOTION, CARRYWEAPON, NOSTAB, CARRYFOOD}, "", 0, 4, {12, 10, 6, 20, 1, 4, HPT("2d8+2"), "1d10"}}, {"hobgoblin", 50, TRUE, TRUE, 'h', "8-10", {ISMEAN, CANSHOOT, NOSLOW}, "", 0, 3, {14, 14, 4, 30, 4, 5, HPT("1d8"), "1d8"}}, {"urchin", 50, TRUE, TRUE, 'u', "6-15", {ISMEAN, ISGREED, CARRYGOLD, CARRYRING}, "", 0, 1, {10, 10, 6, 25, 1, 3, HPT("2d8"), "1d6"}}, {"fire beetle", 0, TRUE, TRUE, 'B', "10", {ISMEAN, HASFIRE}, "", 0, 2, {10, 10, 6, 20, 1, 4, HPT("1d8+2"), "2d4"}}, {"ear seeker", 0, TRUE, TRUE, 'e', "0", {ISMEAN, AREMANY, CANINFEST, CANSURPRISE}, "", 0, 0, {10, 10, 5, 10, 1, 8, HPT("1d2"), "1d1"}}, {"shrieker", 0, TRUE, TRUE, 'S', "0", {ISMEAN, CANSHRIEK, NOMOVE, NOSTAB}, "", 0, 4, {10, 10, 7, 20, 2, 7, HPT("3d8"), "0d0"}}, {"stirge", 0, TRUE, TRUE, 's', "1", {ISMEAN, CANDRAW, ISFLY}, "", 0, 2, {10, 10, 4, 30, 1, 8, HPT("2d6"), "1d3"}}, {"troglodyte", 50, TRUE, TRUE, 'T', "5-15", {ISMEAN, CANSMELL, CANSTINK, CANSHOOT, HASFIRE}, "", 0, 3, {10, 10, 6, 30, 5, 4, HPT("2d8"), "1d6/2d6"}}, {"zombie", 0, TRUE, TRUE, 'Z', "0", {ISMEAN, ISUNDEAD, TURNABLE, CANSURPRISE, ISSHADOW, NOSLEEP}, "", 0, 6, {10, 10, 5, 60, 1, 0, HPT("2d8+5"), "2d8"}}, {"gas spore", 0, TRUE, TRUE, 'a', "0", {ISMEAN, CANEXPLODE, CANINFEST, ISFLY}, "", 0, 5, {10, 10, 8, 30, 2, 5, HPT("2d8"), "1d2/1d4"}}, {"giant tick", 0, TRUE, TRUE, 't', "0", {ISMEAN, CANPOISON, CANROT}, "", 0, 1, {10, 10, 7, 70, 2, 4, HPT("1d8"), "1d4"}}, {"lemure", 0, TRUE, TRUE, 'L', "5-10", {ISMEAN, ISREGEN, CANSUMMON, NOBOLT}, "bat", 5, 6, {12, 12, 5, 45, 4, 2, HPT("3d8"), "1d6"}}, {"zoo spore", 0, TRUE, TRUE, 'z', "8-20", {ISMEAN, CANDISEASE, CANEXPLODE, TURNABLE, ISUNDEAD, ISFLY}, "", 0, 10, {20, 20, 4, 80, 2, 0, HPT("2d8+6"), "1d8"}}, {"bugbear", 30, TRUE, TRUE, 'b', "5-12", {ISMEAN, CANSHOOT, CANSURPRISE, ISGREED}, "", 0, 3, {16, 10, 6, 60, 2, 5, HPT("3d8+4"), "2d4"}}, {"gray ooze", 0, TRUE, TRUE, 'o', "1", {ISMEAN, CANRUST, NOCOLD, NOFIRE, NOSTAB}, "", 0, 1, {10, 10, 9, 100, 2, 8, HPT("1d8"), "1d8"}}, {"lonchu", 50, TRUE, TRUE, 'l', "6", {ISMEAN, CANTELEPORT, CARRYARMOR, NOBOLT}, "", 0, 3, {10, 10, 6, 120, 2, 3, HPT("3d8+4"), "2d6"}}, {"wererat", 50, TRUE, TRUE, 'r', "10-15", {ISMEAN, CARRYPOTION, CANSUMMON, CANDRAW, NOSTAB}, "giant rat", 3, 5, {10, 10, 5, 70, 5, 4, HPT("3d8+6"), "2d8"}}, {"ghoul", 50, TRUE, TRUE, 'g', "12-15", {ISMEAN, CARRYFOOD, CANPARALYZE, ISUNDEAD, TURNABLE, CANDRAW, AREMANY}, "", 0, 7, {12, 12, 5, 75, 2, 2, HPT("4d4"), "1d4/1d6"}}, {"leprechaun", 75, TRUE, FALSE, 'l', "10-16", {CARRYGOLD, STEALGOLD, ISGREED, CARRYSCROLL, CARRYPOTION, NOSTAB}, "", 0, 9, {15, 15, 3, 100, 7, 0, HPT("3d8"), "1d1/3d6"}}, {"junk monster", 100, TRUE, TRUE, 'j', "10-14", {ISMEAN, CANSTINK, CANSMELL, ISSCAVENGE, ISGREED, CANDRAW, ISREGEN, CANSHOOT, CARRYSTICK}, "", 0, 7, {12, 12, 5, 100, 2, 4, HPT("3d8+3"), "1d6/2d8"}}, {"jacaranda", 40, TRUE, TRUE, 'j', "8-18", {ISMEAN, ISUNIQUE, ISREGEN, CANSUMMON, NOCOLD, NOFIRE, NOBOLT, CANDANCE, CARRYGOLD, CANTELEPORT, CANBLIND, ISSHADOW, NOSTAB, ISGREED, STEALGOLD, CARRYFOOD}, "zombie", 4, 20, {18, 18, 2, 40000, 10, -15, HPT("6d8+40"), "1d6/2d6/3d6"}}, {"gnoll", 0, TRUE, TRUE, 'n', "10-16", {ISMEAN, CANINFEST, CANROT, ISREGEN, TURNABLE}, "", 0, 4, {10, 10, 6, 140, 2, 4, HPT("6d8"), "2d8"}}, {"fire toad", 0, TRUE, TRUE, 'f', "5-7", {ISMEAN, CANBFIRE, NOFIRE, NOBOLT}, "", 0, 4, {10, 10, 6, 200, 2, 5, HPT("5d8"), "1d8"}}, {"gelatinous cube", 50, TRUE, TRUE, 'c', "0", {ISMEAN, CANPARALYZE, CARRYFOOD, NOCOLD}, "", 0, 4, {10, 10, 7, 160, 2, 1, HPT("4d8"), "2d8"}}, {"moon dog", 0, TRUE, TRUE, 'm', "10-12", {ISMEAN, ISFLY, NOCOLD, NOFIRE, CANDRAW}, "", 0, 6, {12, 12, 4, 250, 2, 3, HPT("3d8+3"), "2d10"}}, {"violet fungi", 0, TRUE, TRUE, 'F', "0", {ISMEAN, CANSHRIEK, CANSUMMON, CANHOLD, NOMOVE, CANROT}, "violet fungi", 1, 5, {10, 10, 5, 150, 9, 0, HPT("4d6+10"), "1d8/2d8/3d8"}}, {"ogre", 50, TRUE, TRUE, 'O', "7-12", {ISMEAN, CARRYGOLD, CARRYDAGGER, NOBOLT}, "", 0, 7, {18, 10, 6, 170, 3, 3, HPT("4d8+8"), "2d10"}}, {"centaur", 50, TRUE, FALSE, 'C', "5-15", {STEALGOLD, CARRYGOLD, CARRYRING, NOSLEEP, NOSTAB}, "", 0, 9, {10, 10, 4, 180, 2, 4, HPT("4d8+10"), "1d8/2d6"}}, {"nymph", 75, TRUE, FALSE, 'N', "10-16", {STEALMAGIC, CARRYSCROLL, CARRYPOTION, CARRYSTICK, NOSTAB, CARRYFOOD, NOSLOW}, "", 0, 8, {16, 16, 3, 190, 5, 3, HPT("3d8+10"), "1d1"}}, {"blindheim", 0, TRUE, TRUE, 'b', "10", {ISMEAN, CANBLIND, NOSLOW}, "", 0, 5, {8, 8, 5, 260, 3, 1, HPT("4d8+6"), "2d10"}}, {"blink dog", 0, TRUE, TRUE, 'B', "8-10", {ISMEAN, CANBLINK, CANSEE, CANINFEST}, "", 0, 9, {10, 10, 6, 220, 3, 5, HPT("4d8+4"), "1d8/2d4"}}, {"ghast", 50, TRUE, TRUE, 'G', "10-12", {ISMEAN, CANPARALYZE, CANSTINK, ISUNDEAD, TURNABLE, AREMANY, NOBOLT}, "", 0, 10, {10, 10, 4, 250, 1, 1, HPT("5d8+6"), "2d4/2d6"}}, {"rust monster", 0, TRUE, TRUE, 'R', "1", {ISMEAN, CANRUST, CANDISEASE}, "", 0, 6, {10, 10, 7, 200, 4, 6, HPT("2d8+6"), "1d1/1d1"}}, {"imp", 0, TRUE, TRUE, 'I', "8-10", {ISMEAN, ISREGEN, CANPAIN, CANTELEPORT, NOCOLD, NOFIRE}, "", 0, 9, {10, 10, 6, 300, 3, 2, HPT("3d8+12"), "2d8"}}, {"doppelganger", 50, TRUE, TRUE, 'D', "10-15", {ISMEAN, CANSURPRISE, CARRYPOTION, NOSTAB, NOSLOW}, "", 0, 8, {10, 10, 5, 360, 5, 3, HPT("7d8"), "1d12+2"}}, {"shadow", 0, TRUE, TRUE, 'S', "13", {ISMEAN, ISSHADOW, CANCHILL, ISUNDEAD, TURNABLE, CANINWALL}, "", 0, 9, {13, 13, 5, 370, 6, 1, HPT("3d8+10"), "2d4/2d4"}}, {"very young dragon", 50, TRUE, TRUE, 'd', "12-16", {ISMEAN, MAGICHIT, ISGREED, CARRYPOTION, CARRYGOLD, NOSTAB, CANBRANDOM, CARRYMISC, NOBOLT}, "", 0, 11, {16, 16, 6, 300, 8, -2, HPT("4d8+20"), "2d4/1d6/1d8"}}, {"yeti", 0, TRUE, TRUE, 'Y', "8-16", {ISMEAN, CANPARALYZE, CANSURPRISE, NOBOLT, NOSTAB, NOCOLD}, "", 0, 9, {13, 10, 5, 400, 3, 6, HPT("5d8+6"), "1d8/2d8"}}, {"ice weasel", 0, TRUE, TRUE, 'i', "10-16", {ISMEAN, AREMANY, ISSHADOW, CANPAIN, NOCOLD, NOSLEEP}, "", 0, 7, {10, 10, 4, 400, 6, 1, HPT("10d8+10"), "1d10"}}, {"mimic", 50, TRUE, TRUE, 'M', "2-16", {ISMEAN, ISDISGUISE, NODETECT, CANHOLD, NOMOVE, NOSTAB, NOBOLT, CARRYRING}, "", 0, 12, {10, 10, 6, 500, 4, 8, HPT("10d8"), "3d4"}}, {"owlbear", 50, TRUE, TRUE, 'O', "8-12", {ISMEAN, CANHUG, NOFEAR, NOSTAB, CARRYFOOD}, "", 0, 10, {10, 10, 3, 340, 3, 2, HPT("5d8+10"), "1d6/1d6/2d6"}}, {"otyugh", 50, TRUE, TRUE, 'o', "5-10", {ISMEAN, ISFLY, CARRYARMOR, NOSLOW, NOFIRE}, "", 0, 11, {10, 10, 5, 750, 4, 4, HPT("4d8+15"), "1d8/1d8/1d4+4"}}, {"gargoyle", 50, TRUE, TRUE, 'g', "5-7", {ISMEAN, MAGICHIT, CARRYWEAPON, NOSTAB}, "", 0, 9, {10, 10, 4, 290, 3, 5, HPT("4d8+6"), "1d6/2d6"}}, {"su-monster", 50, TRUE, TRUE, 's', "8-10", {ISMEAN, CARRYGOLD, ISGREED, HASFIRE, CANSUMMON, CARRYSCROLL, NOFEAR}, "moon dog", 4, 12, {10, 10, 5, 450, 4, 3, HPT("5d8+10"), "2d4/2d4"}}, {"leucrotta", 0, TRUE, TRUE, 'L', "8-10", {ISMEAN, NOFEAR, NOSLOW, NOSTAB, CANSEE}, "", 0, 10, {10, 10, 2, 470, 3, 4, HPT("6d8+10"), "3d6/1d6/1d6"}}, {"cockatrice", 50, TRUE, TRUE, 'C', "1", {ISMEAN, CARRYSTICK, TOUCHSTONE, NOSTAB}, "", 0, 15, {12, 12, 5, 500, 6, 4, HPT("5d8+8"), "4d4"}}, {"wight", 0, TRUE, TRUE, 'W', "8-10", {ISMEAN, CANDRAIN, MAGICHIT, NOSTONE, ISUNDEAD, TURNABLE, NOBOLT}, "", 0, 12, {10, 10, 6, 550, 4, 2, HPT("4d8+15"), "2d8"}}, {"phibian", 0, TRUE, TRUE, 'p', "2-16", {ISMEAN, NOBOLT, CANFRIGHTEN, TURNABLE, NOSLOW}, "", 0, 13, {10, 10, 2, 600, 8, -2, HPT("6d8"), "1d20"}}, {"fireworm", 0, TRUE, TRUE, 'z', "7-10", {ISMEAN, AREMANY, CANEXPLODE, NOFIRE, ISFLY, NOSLEEP}, "", 0, 15, {10, 10, 5, 500, 2, 0, HPT("1d8"), "1d4"}}, {"flumph", 50, TRUE, TRUE, 'f', "10-16", {ISMEAN, AREMANY, CARRYGOLD, STEALGOLD, NOMOVE}, "", 0, 13, {12, 12, 3, 320, 3, -7, HPT("5d8+8"), "2d8"}}, {"treant", 50, TRUE, TRUE, 't', "10-14", {ISMEAN, CANSUMMON, CARRYGOLD, ISGREED, CANSTINK, CANSMELL}, "treant", 1, 16, {12, 12, 4, 1500, 2, 0, HPT("5d8+10"), "3d8"}}, {"troll", 50, TRUE, FALSE, 'T', "10-15", {ISREGEN, CANSHOOT, CARRYGOLD, CARRYSCROLL, NOSTAB}, "", 0, 18, {18, 18, 6, 600, 7, 3, HPT("6d8+10"), "1d4+4/1d4+4/2d6+2"}}, {"ettin", 50, TRUE, TRUE, 'e', "1-18", {ISMEAN, AREMANY, CARRYWEAPON, NOFIRE, CANROT}, "", 0, 10, {10, 10, 3, 1000, 3, 1, HPT("8d8+8"), "2d8/2d6/2d6"}}, {"lava child", 0, TRUE, TRUE, 'l', "8-10", {ISMEAN, NOMETAL, NOFIRE, NOBOLT, NOSTAB}, "", 0, 9, {10, 10, 5, 700, 2, 4, HPT("5d8+10"), "2d12"}}, {"erinyes", 0, TRUE, TRUE, 'E', "8-10", {ISMEAN, CANFRIGHTEN, TURNABLE, ISUNDEAD, CANPAIN, NOFIRE}, "", 0, 11, {10, 10, 6, 750, 4, 3, HPT("6d8+4"), "6d2+4"}}, {"ulodyte", 0, TRUE, TRUE, 'u', "9-13", {ISMEAN, CANSMELL, CANHUG, TURNABLE, NOSTAB, CANSURPRISE}, "", 0, 12, {10, 8, 6, 2000, 5, 3, HPT("6d8+10"), "3d4/2d6"}}, {"wraith", 0, TRUE, TRUE, 'w', "10-14", {ISMEAN, CANDRAIN, MAGICHIT, ISUNDEAD, TURNABLE, NOBOLT, NOSTAB, AREMANY}, "", 0, 16, {10, 10, 8, 800, 3, 2, HPT("5d8+10"), "2d6/1d8"}}, {"jackalwere", 50, TRUE, TRUE, 'J', "10-15", {ISMEAN, CANSMELL, CANSNORE, MAGICHIT}, "", 0, 10, {10, 10, 4, 900, 6, 3, HPT("5d8+20"), "2d4/2d4"}}, {"basilisk", 50, TRUE, TRUE, 'B', "1", {ISMEAN, LOOKSTONE, CARRYSCROLL, NOSTAB, NOFIRE}, "", 0, 10, {10, 10, 6, 1000, 5, 4, HPT("6d8+20"), "2d10"}}, {"vrock", 0, TRUE, TRUE, 'v', "10-12", {ISMEAN, CANSEE, TURNABLE, CANTELEPORT, CANDRAW}, "", 0, 12, {10, 10, 6, 2300, 5, 1, HPT("7d8+25"), "1d4/1d4/1d8/1d8/1d6/1d6"}}, {"hezrou", 50, TRUE, TRUE, 'h', "5-13", {ISMEAN, CANFRIGHTEN, TURNABLE, CANTELEPORT, CARRYSTICK}, "", 0, 12, {10, 10, 6, 3000, 6, -1, HPT("9d8+10"), "1d4/2d4/4d4"}}, {"glabrezu", 50, TRUE, TRUE, 'G', "8-10", {ISMEAN, CANFRIGHTEN, CANSEE, TURNABLE, CANTELEPORT, CARRYWEAPON, CARRYPOTION}, "", 0, 12, {10, 10, 6, 2500, 6, -4, HPT("10d8+6"), "2d6/2d6/1d6/1d6"}}, {"wyvern", 50, TRUE, TRUE, 'w', "10-16", {ISMEAN, CANPAIN, CARRYGOLD, CANSUMMON, CANINFEST, NODETECT}, "fireworm", 4, 15, {10, 10, 5, 2200, 4, -2, HPT("8d8+10"), "2d8/2d8"}}, {"specter", 0, TRUE, TRUE, 'S', "10-16", {ISMEAN, DOUBLEDRAIN, ISUNDEAD, TURNABLE, NOFIRE, NOCOLD, NOSTAB, NOACID, NOGAS}, "", 0, 17, {12, 12, 6, 2000, 7, 1, HPT("7d8+20"), "1d8/1d8"}}, {"mummy", 0, TRUE, TRUE, 'm', "5-14", {ISMEAN, CANROT, MAGICHIT, CANFRIGHTEN, HALFDAMAGE, ISUNDEAD, NOGAS, NOACID, NOSTAB, TURNABLE}, "", 0, 18, {10, 10, 5, 2000, 5, 2, HPT("8d8+10"), "1d12"}}, {"chimera", 0, TRUE, TRUE, 'c', "10-16", {ISMEAN, BMAGICHIT, NOFEAR, NOCOLD, ISREGEN, CANITCH}, "", 0, 19, {10, 10, 6, 2300, 5, 0, HPT("6d8+25"), "1d3/1d3/1d4/1d4/2d4/2d4"}}, {"neo-otyugh", 50, TRUE, TRUE, 'N', "10-12", {ISMEAN, CARRYPOTION, CANINFEST, NOCOLD, NOFEAR, MAGICHIT}, "", 0, 17, {12, 10, 6, 2500, 6, 0, HPT("12d8"), "2d8/2d6/1d3"}}, {"adult dragon", 80, TRUE, TRUE, 'd', "12-16", {ISMEAN, CANBRANDOM, ISGREED, CANFRIGHTEN, NOSTAB, NOCOLD, CARRYPOTION, CARRYMISC, CARRYRING, CANSURPRISE}, "", 0, 20, {18, 18, 5, 2600, 7, -3, HPT("7d8+20"), "2d6/2d6/2d6"}}, {"horned devil", 0, TRUE, TRUE, 'H', "10-14", {ISMEAN, CANPOISON, NOBOLT, CANTELEPORT}, "", 0, 17, {10, 10, 6, 2200, 5, -2, HPT("5d8+30"), "1d4/1d6/1d8"}}, {"barbed devil", 0, TRUE, TRUE, 'B', "10-16", {ISMEAN, TOUCHFEAR, NOBOLT, CANHOLD, TURNABLE, NOFIRE}, "", 0, 17, {10, 10, 6, 2200, 5, 0, HPT("8d8+20"), "2d4/2d4/3d4"}}, {"ice devil", 0, TRUE, TRUE, 'I', "12-15", {ISMEAN, ISREGEN, CANBICE, NOCOLD, NOBOLT}, "", 0, 17, {12, 10, 6, 2500, 6, -4, HPT("10d8+10"), "1d4/2d4/3d4"}}, {"bone devil", 0, TRUE, TRUE, 'b', "12-15", {ISMEAN, CANSURPRISE, CANCHILL, CANSEE, NOFIRE, NOACID, NOGAS, CANFRIGHTEN, NOSTAB, NOCOLD, CANTELEPORT}, "", 0, 17, {12, 12, 5, 3500, 8, -1, HPT("10d8+20"), "2d4/3d6"}}, {"rhinosphynx", 80, TRUE, TRUE, 'r', "13-18", {ISMEAN, CANPOISON, CANSURPRISE, CANCHILL, NOCOLD, CARRYGOLD, ISGREED}, "", 0, 18, {12, 12, 6, 3000, 7, -1, HPT("9d8+10"), "4d6"}}, {"lamia", 80, TRUE, TRUE, 'L', "10-17", {ISMEAN, TAKEWISDOM, CARRYSTICK, NOFEAR, NOCOLD}, "", 0, 16, {16, 16, 3, 2500, 7, -2, HPT("9d8+15"), "2d4/2d6"}}, {"intellect devourer", 0, TRUE, TRUE, 'D', "12-16", {ISMEAN, TAKEINTEL, BMAGICHIT, CANSURPRISE, NOBOLT, NOSTAB}, "", 0, 16, {16, 16, 3, 2500, 9, -2, HPT("10d8+15"), "1d6/2d6/3d6"}}, {"quasit", 80, TRUE, TRUE, 'Q', "10-15", {ISMEAN, ISREGEN, BMAGICHIT, CANSURPRISE, CANITCH, NOGAS, NOACID, CARRYSCROLL, CARRYPOTION, NOCOLD, NOBOLT}, "", 0, 20, {10, 10, 6, 3000, 6, -2, HPT("6d8+20"), "2d6/1d8/2d6"}}, {"will-o-wisp", 80, TRUE, TRUE, 'W', "12-16", {ISMEAN, CANSURPRISE, ISFLY, CARRYMISC, NOSTAB, NOBOLT}, "", 0, 20, {10, 10, 5, 4000, 6, -5, HPT("9d8+20"), "2d14"}}, {"invisible stalker", 0, TRUE, TRUE, 'i', "12-16", {ISMEAN, ISINVIS, ISSHADOW, NOBOLT, CANINWALL, NOGAS, NOSTAB, NOACID, TOUCHFEAR}, "", 0, 20, {10, 10, 4, 3800, 5, -2, HPT("8d8+20"), "2d12"}},