diff options
author | dolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-10-06 02:51:44 +0000 |
---|---|---|
committer | dolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-10-06 02:51:44 +0000 |
commit | 0fb28d6c1b82e6c10e00c4cc9b946eb010d65017 (patch) | |
tree | 1377e3e61587069330bf28359a7a871723a458bf /crawl-ref/source/mon-util.cc | |
parent | 967e9e7bb84c639c1e5065c6a65a05972dbc88c5 (diff) | |
download | crawl-ref-0fb28d6c1b82e6c10e00c4cc9b946eb010d65017.tar.gz crawl-ref-0fb28d6c1b82e6c10e00c4cc9b946eb010d65017.zip |
Expand handling of monster intelligence and zombifiability to work on
the level of individual monsters.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7148 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/mon-util.cc')
-rw-r--r-- | crawl-ref/source/mon-util.cc | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc index 16dfa071c6..7855bbf11e 100644 --- a/crawl-ref/source/mon-util.cc +++ b/crawl-ref/source/mon-util.cc @@ -789,9 +789,19 @@ bool mons_class_is_zombified(int mc) || mc == MONS_SPECTRAL_THING); } -bool mons_is_zombified(const monsters *monster) +bool mons_is_zombified(const monsters *mon) { - return mons_class_is_zombified(monster->type); + return mons_class_is_zombified(mon->type); +} + +bool mons_class_can_be_zombified(int mc) +{ + return (mons_zombie_size(mc) == Z_NOZOMBIE); +} + +bool mons_can_be_zombified(const monsters *mon) +{ + return (mons_class_can_be_zombified(mon->type)); } int downscale_zombie_damage(int damage) @@ -1243,7 +1253,7 @@ bool mons_has_lifeforce(const monsters *mon) bool mons_skeleton(int mc) { - if (mons_zombie_size(mc) == Z_NOZOMBIE + if (!mons_class_can_be_zombified(mc) || mons_weight(mc) == 0 || (mons_class_flag(mc, M_NO_SKELETON))) { return (false); @@ -2002,20 +2012,23 @@ static int _mons_exp_mod(int mc) return (smc->exp_mod); } - int mons_speed(int mc) { ASSERT(smc); return (smc->speed); } - -mon_intel_type mons_intel(int mc) +mon_intel_type mons_class_intel(int mc) { ASSERT(smc); return (smc->intel); } +mon_intel_type mons_intel(const monsters *mon) +{ + return (mons_class_intel(mon->type)); +} + habitat_type mons_class_habitat(int mc) { const monsterentry *me = get_monster_data(mc); @@ -2062,7 +2075,7 @@ habitat_type mons_secondary_habitat(const monsters *mon) bool intelligent_ally(const monsters *mon) { - return (mon->attitude == ATT_FRIENDLY && mons_intel(mon->type) >= I_NORMAL); + return (mon->attitude == ATT_FRIENDLY && mons_intel(mon) >= I_NORMAL); } int mons_power(int mc) @@ -2611,7 +2624,7 @@ bool ms_waste_of_time( const monsters *mon, spell_type monspell ) return (false); // Only intelligent monsters estimate. - intel = mons_intel( mon->type ); + intel = mons_intel(mon); if (intel != I_NORMAL && intel != I_HIGH) return (false); |