summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Lawrence Ramsey <dolorous@users.sourceforge.net>2009-11-05 22:39:58 -0600
committerDavid Lawrence Ramsey <dolorous@users.sourceforge.net>2009-11-05 22:39:58 -0600
commit2cd18cf91603ca59471842721b584b8a7521f103 (patch)
treef4cb1a7e79f28f7ab79fc6d79d6ead891a332d7d
parentc48b4e0e828ab1b12e858dfdf6ec870226261d7f (diff)
downloadcrawl-ref-2cd18cf91603ca59471842721b584b8a7521f103.tar.gz
crawl-ref-2cd18cf91603ca59471842721b584b8a7521f103.zip
Tweak hell knights' resistances so that they resist hellfire, and mark
natural monsters with hellfire resistance as evil (since they likely got it through evil pacts or the like, as opposed to things like fire elementals, which are just made of fire). This ensures that all hell knights are evil, even if they get the spellbook with only Bolt of Fire and Blink, without marking Harold as evil for getting that same spellbook.
-rw-r--r--crawl-ref/source/mon-data.h2
-rw-r--r--crawl-ref/source/monster.cc9
2 files changed, 10 insertions, 1 deletions
diff --git a/crawl-ref/source/mon-data.h b/crawl-ref/source/mon-data.h
index dd62fd3c76..264c067527 100644
--- a/crawl-ref/source/mon-data.h
+++ b/crawl-ref/source/mon-data.h
@@ -3119,7 +3119,7 @@ static monsterentry mondata[] = {
{
MONS_HELL_KNIGHT, '@', RED, "hell knight",
M_FIGHTER | M_SPELLCASTER | M_ACTUAL_SPELLS | M_WARM_BLOOD | M_SPEAKS,
- mrd(MR_RES_FIRE, 2),
+ MR_RES_FIRE | MR_RES_HELLFIRE,
550, 10, MONS_HUMAN, MONS_HUMAN, MH_NATURAL, -3,
{ {AT_HIT, AF_PLAIN, 13}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
{ 10, 3, 6, 0 },
diff --git a/crawl-ref/source/monster.cc b/crawl-ref/source/monster.cc
index 924042a1ff..f7abb19d6b 100644
--- a/crawl-ref/source/monster.cc
+++ b/crawl-ref/source/monster.cc
@@ -2892,6 +2892,15 @@ bool monsters::is_evil() const
return (true);
}
+ // Assume that no natural creatures resist hellfire, except by evil
+ // means.
+ if (holiness() == MH_NATURAL)
+ {
+ const mon_resist_def res = get_mons_resists(this);
+ if (res.hellfire)
+ return (true);
+ }
+
return (false);
}