summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2006-11-09 16:00:27 +0000
committerdshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2006-11-09 16:00:27 +0000
commit414ade94db4f4c13c8b8b2f95ca0eb9a238cc559 (patch)
tree2511ced8a322ffc0445ca068d8fc4f78799bd0b2
parentfeac43075f424f624b6f4d75fc25c1edf52a5950 (diff)
downloadcrawl-ref-414ade94db4f4c13c8b8b2f95ca0eb9a238cc559.tar.gz
crawl-ref-414ade94db4f4c13c8b8b2f95ca0eb9a238cc559.zip
Removed M_ON_FIRE (unused) and added M_UNIQUE to identify unique monsters.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/branches/stone_soup@376 c06c8d41-db1a-0410-9941-cceddc491573
-rw-r--r--crawl-ref/source/enum.h2
-rw-r--r--crawl-ref/source/mon-data.h96
-rw-r--r--crawl-ref/source/mon-util.cc18
3 files changed, 61 insertions, 55 deletions
diff --git a/crawl-ref/source/enum.h b/crawl-ref/source/enum.h
index 2b4ef5daec..3e49122b01 100644
--- a/crawl-ref/source/enum.h
+++ b/crawl-ref/source/enum.h
@@ -1822,7 +1822,7 @@ enum mons_class_flags
M_BURROWS = (1<<18), // monster digs through rock
M_EVIL = (1<<19), // monster vulnerable to holy spells
- M_ON_FIRE = (1<<20), // XXX: Potentially ditchable
+ M_UNIQUE = (1<<20), // monster is a unique
M_FROZEN = (1<<21), // XXX: Potentially ditchable
diff --git a/crawl-ref/source/mon-data.h b/crawl-ref/source/mon-data.h
index f21d0f897d..c7ff09a8ea 100644
--- a/crawl-ref/source/mon-data.h
+++ b/crawl-ref/source/mon-data.h
@@ -1101,7 +1101,7 @@
{
MONS_HELLION, '3', EC_FIRE, "hellion",
- M_SPELLCASTER | M_ON_FIRE | M_EVIL,
+ M_SPELLCASTER | M_EVIL,
MR_RES_POISON | MR_RES_HELLFIRE | MR_VUL_COLD,
0, 11, MONS_HELLION, MONS_HELLION, MH_DEMONIC, -7,
{ 10, 0, 0, 0 },
@@ -2639,7 +2639,7 @@
{
MONS_MNOLEG, '&', LIGHTGREEN, "Mnoleg",
- M_SEE_INVIS | M_SPELLCASTER | M_SPEAKS | M_EVIL,
+ M_SEE_INVIS | M_SPELLCASTER | M_SPEAKS | M_EVIL | M_UNIQUE,
MR_RES_ELEC | MR_RES_POISON | MR_RES_FIRE,
0, 25, MONS_MNOLEG, MONS_MNOLEG, MH_DEMONIC, 5000,
{ 23, 23, 0, 0 },
@@ -2651,7 +2651,7 @@
{
MONS_LOM_LOBON, '&', LIGHTBLUE, "Lom Lobon",
- M_LEVITATE | M_SEE_INVIS | M_SPELLCASTER | M_SPEAKS | M_EVIL,
+ M_LEVITATE | M_SEE_INVIS | M_SPELLCASTER | M_SPEAKS | M_EVIL | M_UNIQUE,
MR_RES_POISON | MR_RES_FIRE | MR_RES_COLD | MR_RES_ELEC,
0, 25, MONS_LOM_LOBON, MONS_LOM_LOBON, MH_DEMONIC, 5000,
{ 40, 0, 0, 0 },
@@ -2663,7 +2663,7 @@
{
MONS_CEREBOV, '&', RED, "Cerebov",
- M_SPELLCASTER | M_SEE_INVIS | M_SPEAKS | M_EVIL,
+ M_SPELLCASTER | M_SEE_INVIS | M_SPEAKS | M_EVIL | M_UNIQUE,
MR_RES_ELEC | MR_RES_POISON | MR_RES_HELLFIRE,
0, 25, MONS_CEREBOV, MONS_CEREBOV, MH_DEMONIC, -6,
{ 50, 0, 0, 0 },
@@ -2675,7 +2675,7 @@
{
MONS_GLOORX_VLOQ, '&', DARKGREY, "Gloorx Vloq",
- M_LEVITATE | M_SEE_INVIS | M_SPELLCASTER | M_SPEAKS | M_EVIL,
+ M_LEVITATE | M_SEE_INVIS | M_SPELLCASTER | M_SPEAKS | M_EVIL | M_UNIQUE,
MR_RES_POISON | MR_RES_COLD | MR_RES_ELEC,
0, 25, MONS_GLOORX_VLOQ, MONS_GLOORX_VLOQ, MH_DEMONIC, -14,
{ 20, 0, 0, 0 },
@@ -2934,7 +2934,7 @@
{
MONS_TERENCE, '@', LIGHTCYAN, "Terence",
- M_WARM_BLOOD | M_SPEAKS,
+ M_WARM_BLOOD | M_SPEAKS | M_UNIQUE,
MR_NO_FLAGS,
0, 20, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, -3,
{ 3, 0, 0, 0 },
@@ -2946,7 +2946,7 @@
{
MONS_JESSICA, '@', LIGHTGREY, "Jessica",
- M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD,
+ M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD | M_UNIQUE,
MR_NO_FLAGS,
0, 20, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, -3,
{ 4, 0, 0, 0 },
@@ -2958,7 +2958,7 @@
{
MONS_IJYB, 'g', BLUE, "Ijyb",
- M_WARM_BLOOD | M_SPEAKS,
+ M_WARM_BLOOD | M_SPEAKS | M_UNIQUE,
MR_NO_FLAGS,
0, 5, MONS_GOBLIN, MONS_GOBLIN, MH_NATURAL, -3,
{ 4, 0, 0, 0 },
@@ -2970,7 +2970,7 @@
{
MONS_SIGMUND, '@', YELLOW, "Sigmund",
- M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD,
+ M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD | M_UNIQUE,
MR_NO_FLAGS,
0, 20, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, -3,
{ 5, 0, 0, 0 },
@@ -2982,7 +2982,7 @@
{
MONS_BLORK_THE_ORC, 'o', BROWN, "Blork the orc",
- M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD,
+ M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD | M_UNIQUE,
MR_NO_FLAGS,
0, 20, MONS_ORC, MONS_ORC, MH_NATURAL, -4,
{ 7, 0, 0, 0 },
@@ -2994,7 +2994,7 @@
{
MONS_EDMUND, '@', RED, "Edmund",
- M_WARM_BLOOD | M_SPEAKS,
+ M_WARM_BLOOD | M_SPEAKS | M_UNIQUE,
MR_NO_FLAGS,
0, 20, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, -4,
{ 6, 0, 0, 0 },
@@ -3006,7 +3006,7 @@
{
MONS_PSYCHE, '@', LIGHTMAGENTA, "Psyche",
- M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD,
+ M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD | M_UNIQUE,
MR_NO_FLAGS,
0, 20, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, -4,
{ 7, 0, 0, 0 },
@@ -3018,7 +3018,8 @@
{
MONS_EROLCHA, 'O', LIGHTBLUE, "Erolcha",
- M_SPELLCASTER | M_ACTUAL_SPELLS | M_SEE_INVIS | M_WARM_BLOOD | M_SPEAKS | M_EVIL,
+ M_SPELLCASTER | M_ACTUAL_SPELLS | M_SEE_INVIS | M_WARM_BLOOD
+ | M_SPEAKS | M_EVIL | M_UNIQUE,
MR_RES_ELEC,
0, 20, MONS_OGRE, MONS_OGRE, MH_NATURAL, -7,
{ 20, 0, 0, 0 },
@@ -3030,7 +3031,7 @@
{
MONS_DONALD, '@', BLUE, "Donald",
- M_WARM_BLOOD | M_SPEAKS,
+ M_WARM_BLOOD | M_SPEAKS | M_UNIQUE,
MR_NO_FLAGS,
0, 20, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, -5,
{ 8, 0, 0, 0 },
@@ -3042,7 +3043,7 @@
{
MONS_URUG, 'o', RED, "Urug",
- M_WARM_BLOOD | M_SPEAKS,
+ M_WARM_BLOOD | M_SPEAKS | M_UNIQUE,
MR_NO_FLAGS,
0, 20, MONS_ORC, MONS_ORC, MH_NATURAL, -5,
{ 12, 0, 0, 0 },
@@ -3054,7 +3055,7 @@
{
MONS_MICHAEL, '@', LIGHTGREY, "Michael",
- M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD,
+ M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD | M_UNIQUE,
MR_NO_FLAGS,
0, 20, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, -5,
{ 9, 0, 0, 0 },
@@ -3066,7 +3067,7 @@
{
MONS_JOSEPH, '@', CYAN, "Joseph",
- M_WARM_BLOOD | M_SPEAKS,
+ M_WARM_BLOOD | M_SPEAKS | M_UNIQUE,
MR_NO_FLAGS,
0, 20, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, -5,
{ 9, 0, 0, 0 },
@@ -3078,7 +3079,7 @@
{
MONS_SNORG, 'T', GREEN, "Snorg",
- M_WARM_BLOOD | M_SPEAKS | M_EVIL,
+ M_WARM_BLOOD | M_SPEAKS | M_EVIL | M_UNIQUE,
MR_NO_FLAGS,
0, 20, MONS_TROLL, MONS_TROLL, MH_NATURAL, -6,
{ 20, 15, 15, 0 },
@@ -3090,7 +3091,7 @@
{
MONS_ERICA, '@', MAGENTA, "Erica",
- M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD,
+ M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD | M_UNIQUE,
MR_NO_FLAGS,
0, 20, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, -5,
{ 10, 0, 0, 0 },
@@ -3102,7 +3103,7 @@
{
MONS_JOSEPHINE, '@', WHITE, "Josephine",
- M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD,
+ M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD | M_UNIQUE,
MR_NO_FLAGS,
0, 20, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, -5,
{ 11, 0, 0, 0 },
@@ -3114,7 +3115,7 @@
{
MONS_HAROLD, '@', LIGHTGREEN, "Harold",
- M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD,
+ M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD | M_UNIQUE,
MR_NO_FLAGS,
0, 20, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, -5,
{ 12, 0, 0, 0 },
@@ -3126,7 +3127,7 @@
{
MONS_NORBERT, '@', BROWN, "Norbert",
- M_WARM_BLOOD | M_SPEAKS,
+ M_WARM_BLOOD | M_SPEAKS | M_UNIQUE,
MR_NO_FLAGS,
0, 20, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, -5,
{ 14, 0, 0, 0 },
@@ -3138,7 +3139,7 @@
{
MONS_JOZEF, '@', LIGHTMAGENTA, "Jozef",
- M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD,
+ M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD | M_UNIQUE,
MR_NO_FLAGS,
0, 20, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, -5,
{ 14, 0, 0, 0 },
@@ -3150,7 +3151,7 @@
{
MONS_AGNES, '@', LIGHTBLUE, "Agnes",
- M_WARM_BLOOD | M_SPEAKS,
+ M_WARM_BLOOD | M_SPEAKS | M_UNIQUE,
MR_NO_FLAGS,
0, 20, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, -5,
{ 11, 0, 0, 0 },
@@ -3162,7 +3163,7 @@
{
MONS_MAUD, '@', RED, "Maud",
- M_WARM_BLOOD | M_SPEAKS,
+ M_WARM_BLOOD | M_SPEAKS | M_UNIQUE,
MR_NO_FLAGS,
0, 20, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, -5,
{ 14, 0, 0, 0 },
@@ -3174,7 +3175,7 @@
{
MONS_LOUISE, '@', BLUE, "Louise",
- M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD,
+ M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD | M_UNIQUE,
MR_RES_ELEC,
0, 20, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, -5,
{ 12, 0, 0, 0 },
@@ -3186,7 +3187,8 @@
{
MONS_FRANCIS, '@', YELLOW, "Francis",
- M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD | M_SEE_INVIS | M_EVIL,
+ M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD
+ | M_SEE_INVIS | M_EVIL | M_UNIQUE,
MR_NO_FLAGS,
0, 20, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, -5,
{ 12, 0, 0, 0 },
@@ -3198,7 +3200,8 @@
{
MONS_FRANCES, '@', YELLOW, "Frances",
- M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD | M_SEE_INVIS | M_EVIL,
+ M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD
+ | M_SEE_INVIS | M_EVIL | M_UNIQUE,
MR_NO_FLAGS,
0, 20, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, -5,
{ 11, 0, 0, 0 },
@@ -3210,7 +3213,8 @@
{
MONS_RUPERT, '@', RED, "Rupert",
- M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD | M_SEE_INVIS,
+ M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD
+ | M_SEE_INVIS | M_UNIQUE,
MR_RES_ELEC,
0, 20, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, -5,
{ 13, 0, 0, 0 },
@@ -3222,7 +3226,8 @@
{
MONS_WAYNE, '@', YELLOW, "Wayne",
- M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD | M_SEE_INVIS,
+ M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD
+ | M_SEE_INVIS | M_UNIQUE,
MR_NO_FLAGS,
0, 20, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, -5,
{ 14, 0, 0, 0 },
@@ -3234,7 +3239,8 @@
{
MONS_DUANE, '@', YELLOW, "Duane",
- M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD | M_SEE_INVIS,
+ M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD
+ | M_SEE_INVIS | M_UNIQUE,
MR_NO_FLAGS,
0, 20, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, -5,
{ 14, 0, 0, 0 },
@@ -3246,7 +3252,7 @@
{
MONS_XTAHUA, 'D', RED, "Xtahua",
- M_SPEAKS | M_SEE_INVIS | M_FLIES | M_SPECIAL_ABILITY,
+ M_SPEAKS | M_SEE_INVIS | M_FLIES | M_SPECIAL_ABILITY | M_UNIQUE,
MR_RES_POISON | MR_RES_FIRE | MR_VUL_COLD,
0, 20, MONS_DRAGON, MONS_DRAGON, MH_NATURAL, -7,
{ 29, 17, 17, 0 },
@@ -3258,7 +3264,8 @@
{
MONS_NORRIS, '@', LIGHTRED, "Norris",
- M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD | M_SEE_INVIS | M_EVIL,
+ M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD
+ | M_SEE_INVIS | M_EVIL | M_UNIQUE,
MR_NO_FLAGS,
0, 20, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, -5,
{ 16, 0, 0, 0 },
@@ -3270,7 +3277,8 @@
{
MONS_ADOLF, '@', DARKGREY, "Adolf",
- M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD | M_SEE_INVIS | M_EVIL,
+ M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD
+ | M_SEE_INVIS | M_EVIL | M_UNIQUE,
MR_NO_FLAGS,
0, 20, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, -5,
{ 17, 0, 0, 0 },
@@ -3282,7 +3290,8 @@
{
MONS_MARGERY, '@', RED, "Margery",
- M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD | M_SEE_INVIS,
+ M_SPELLCASTER | M_ACTUAL_SPELLS | M_SPEAKS | M_WARM_BLOOD
+ | M_SEE_INVIS | M_UNIQUE,
MR_NO_FLAGS,
0, 20, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, -5,
{ 18, 0, 0, 0 },
@@ -3294,7 +3303,8 @@
{
MONS_BORIS, 'L', RED, "Boris",
- M_SPELLCASTER | M_ACTUAL_SPELLS | M_SEE_INVIS | M_SPEAKS | M_EVIL,
+ M_SPELLCASTER | M_ACTUAL_SPELLS | M_SEE_INVIS | M_SPEAKS | M_EVIL
+ | M_UNIQUE,
MR_RES_POISON | MR_RES_COLD | MR_RES_ELEC,
0, 23, MONS_LICH, MONS_LICH, MH_UNDEAD, -11,
{ 15, 0, 0, 0 },
@@ -3307,7 +3317,7 @@
{
MONS_GERYON, '&', GREEN, "Geryon",
- M_SPELLCASTER | M_SEE_INVIS | M_SPEAKS | M_EVIL,
+ M_SPELLCASTER | M_SEE_INVIS | M_SPEAKS | M_EVIL | M_UNIQUE,
MR_NO_FLAGS,
0, 25, MONS_GERYON, MONS_GERYON, MH_DEMONIC, -6,
{ 30, 0, 0, 0 },
@@ -3319,7 +3329,7 @@
{
MONS_DISPATER, '&', MAGENTA, "Dispater",
- M_SPELLCASTER | M_SEE_INVIS | M_SPEAKS | M_EVIL,
+ M_SPELLCASTER | M_SEE_INVIS | M_SPEAKS | M_EVIL | M_UNIQUE,
MR_RES_ELEC | MR_RES_POISON | MR_RES_HELLFIRE | MR_RES_COLD,
0, 25, MONS_DISPATER, MONS_DISPATER, MH_DEMONIC, -10,
{ 15, 0, 0, 0 },
@@ -3331,7 +3341,7 @@
{
MONS_ASMODEUS, '&', LIGHTMAGENTA, "Asmodeus",
- M_SPELLCASTER | M_FLIES | M_SEE_INVIS | M_SPEAKS | M_EVIL,
+ M_SPELLCASTER | M_FLIES | M_SEE_INVIS | M_SPEAKS | M_EVIL | M_UNIQUE,
MR_RES_ELEC | MR_RES_POISON | MR_RES_HELLFIRE,
0, 25, MONS_ASMODEUS, MONS_ASMODEUS, MH_DEMONIC, -12,
{ 20, 0, 0, 0 },
@@ -3344,7 +3354,7 @@
// Antaeus is now demonic so that he'll resist torment. -- bwr
{
MONS_ANTAEUS, 'C', LIGHTCYAN, "Antaeus",
- M_SPELLCASTER | M_SPEAKS,
+ M_SPELLCASTER | M_SPEAKS | M_UNIQUE,
MR_RES_ELEC | MR_VUL_FIRE | MR_RES_COLD,
0, 25, MONS_HILL_GIANT, MONS_ANTAEUS, MH_DEMONIC, -9,
{ 30, 0, 0, 0 },
@@ -3356,7 +3366,7 @@
{
MONS_ERESHKIGAL, '&', WHITE, "Ereshkigal",
- M_SPELLCASTER | M_SEE_INVIS | M_SPEAKS | M_EVIL,
+ M_SPELLCASTER | M_SEE_INVIS | M_SPEAKS | M_EVIL | M_UNIQUE,
MR_RES_ELEC | MR_RES_POISON | MR_RES_COLD,
0, 25, MONS_ERESHKIGAL, MONS_ERESHKIGAL, MH_DEMONIC, -10,
{ 20, 0, 0, 0 },
@@ -4049,7 +4059,7 @@
/* player ghost - only one per level. stats are stored in ghost struct */
{
MONS_PLAYER_GHOST, 'p', DARKGREY, "",
- M_SPEAKS | M_SPELLCASTER | M_ACTUAL_SPELLS | M_FLIES,
+ M_SPEAKS | M_SPELLCASTER | M_ACTUAL_SPELLS | M_FLIES | M_UNIQUE,
MR_RES_POISON,
0, 15, MONS_PHANTOM, MONS_PLAYER_GHOST, MH_UNDEAD, -5,
{ 5, 0, 0, 0 },
@@ -4062,7 +4072,7 @@
/* random demon in pan - only one per level. stats are stored in ghost struct */
{
MONS_PANDEMONIUM_DEMON, '&', BLACK, "&",
- M_SPELLCASTER | M_SPEAKS | M_EVIL,
+ M_SPELLCASTER | M_SPEAKS | M_EVIL | M_UNIQUE,
MR_RES_POISON,
0, 14, MONS_PANDEMONIUM_DEMON, MONS_PANDEMONIUM_DEMON, MH_DEMONIC, -5,
{ 5, 0, 0, 0 },
diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc
index 2007337d43..5aa8142652 100644
--- a/crawl-ref/source/mon-util.cc
+++ b/crawl-ref/source/mon-util.cc
@@ -260,7 +260,12 @@ unsigned long mons_resist(const monsters *mon, unsigned long flags)
bool mons_class_flag(int mc, int bf)
{
- return ((smc->bitfields & bf) != 0);
+ const monsterentry *me = smc;
+
+ if (!me)
+ return (false);
+
+ return ((me->bitfields & bf) != 0);
} // end mons_class_flag()
static int scan_mon_inv_randarts( const monsters *mon, int ra_prop )
@@ -434,16 +439,7 @@ int mons_shouts(int mc)
bool mons_is_unique( int mc )
{
- if (mc <= MONS_PROGRAM_BUG
- || (mc >= MONS_NAGA_MAGE && mc <= MONS_ROYAL_JELLY)
- || (mc >= MONS_DRACONIAN && mc <= MONS_DRACONIAN_SCORCHER)
- || (mc >= MONS_ANCIENT_LICH
- && (mc != MONS_PLAYER_GHOST && mc != MONS_PANDEMONIUM_DEMON)))
- {
- return (false);
- }
-
- return (true);
+ return (mons_class_flag(mc, M_UNIQUE));
}
char mons_see_invis( struct monsters *mon )