summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source
diff options
context:
space:
mode:
authordolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2008-10-15 16:43:23 +0000
committerdolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2008-10-15 16:43:23 +0000
commit1dabce86629483c4ad0bf921b4105333d2be293c (patch)
treef217aa66a61bb16896e3030f3733229ae4b3ccb9 /crawl-ref/source
parent156084b6fdbc2c6ffbb3dc462c3739038884ccc7 (diff)
downloadcrawl-ref-1dabce86629483c4ad0bf921b4105333d2be293c.tar.gz
crawl-ref-1dabce86629483c4ad0bf921b4105333d2be293c.zip
Allow checking regeneration ability at the level of individual monsters.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7254 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source')
-rw-r--r--crawl-ref/source/effects.cc2
-rw-r--r--crawl-ref/source/mon-util.cc24
-rw-r--r--crawl-ref/source/mon-util.h2
-rw-r--r--crawl-ref/source/monstuff.cc2
4 files changed, 21 insertions, 9 deletions
diff --git a/crawl-ref/source/effects.cc b/crawl-ref/source/effects.cc
index 798bf65a89..250ebe19bf 100644
--- a/crawl-ref/source/effects.cc
+++ b/crawl-ref/source/effects.cc
@@ -2836,7 +2836,7 @@ void update_level(double elapsedTime)
{
heal_monster(mon, turns, false);
}
- else if (!mons_class_flag(mon->type, M_NO_REGEN))
+ else if (mons_can_regenerate(mon))
{
// Set a lower ceiling of 0.1 on the regen rate.
const int regen_rate =
diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc
index 1a2b261e11..6744e03a99 100644
--- a/crawl-ref/source/mon-util.cc
+++ b/crawl-ref/source/mon-util.cc
@@ -562,12 +562,6 @@ bool mons_foe_is_mons(const monsters *mons)
return foe && foe->atype() == ACT_MONSTER;
}
-int mons_zombie_size(int mc)
-{
- ASSERT(smc);
- return (smc->zombie_size);
-}
-
int mons_weight(int mc)
{
ASSERT(smc);
@@ -788,6 +782,22 @@ int mons_colour(const monsters *mon)
return (mon->colour);
}
+bool mons_class_can_regenerate(int mc)
+{
+ return (!mons_class_flag(mc, M_NO_REGEN));
+}
+
+bool mons_can_regenerate(const monsters *mon)
+{
+ return (mons_class_can_regenerate(mon->type));
+}
+
+int mons_zombie_size(int mc)
+{
+ ASSERT(smc);
+ return (smc->zombie_size);
+}
+
monster_type mons_zombie_base(const monsters *mon)
{
return (mon->base_monster);
@@ -1270,7 +1280,7 @@ bool mons_skeleton(int mc)
}
return (true);
-} // end mons_skeleton()
+}
flight_type mons_class_flies(int mc)
{
diff --git a/crawl-ref/source/mon-util.h b/crawl-ref/source/mon-util.h
index ccdd5f50ff..e653674afe 100644
--- a/crawl-ref/source/mon-util.h
+++ b/crawl-ref/source/mon-util.h
@@ -598,6 +598,8 @@ int mons_speed(int mc);
/* ***********************************************************************
* called from: dungeon - mon-util - spells2
* *********************************************************************** */
+bool mons_class_can_regenerate(int mc);
+bool mons_can_regenerate(const monsters *mon);
int mons_zombie_size(int mc);
monster_type mons_zombie_base(const monsters *mon);
bool mons_class_is_zombified(int mc);
diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc
index 58bbeb9af4..ff42d7d438 100644
--- a/crawl-ref/source/monstuff.cc
+++ b/crawl-ref/source/monstuff.cc
@@ -5461,7 +5461,7 @@ static inline bool _mons_natural_regen_roll(monsters *monster)
static void _monster_regenerate(monsters *monster)
{
if (monster->has_ench(ENCH_SICK)
- || mons_class_flag(monster->type, M_NO_REGEN))
+ || !mons_can_regenerate(monster))
{
return;
}