summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/attitude-change.cc4
-rw-r--r--crawl-ref/source/beam.cc2
-rw-r--r--crawl-ref/source/decks.cc2
-rw-r--r--crawl-ref/source/fight.cc4
-rw-r--r--crawl-ref/source/kills.cc2
-rw-r--r--crawl-ref/source/mon-abil.cc4
-rw-r--r--crawl-ref/source/mon-act.cc2
-rw-r--r--crawl-ref/source/mon-cast.cc2
-rw-r--r--crawl-ref/source/mon-util.cc5
-rw-r--r--crawl-ref/source/mon-util.h1
-rw-r--r--crawl-ref/source/monster.cc9
-rw-r--r--crawl-ref/source/monster.h3
-rw-r--r--crawl-ref/source/monstuff.cc8
-rw-r--r--crawl-ref/source/xom.cc2
14 files changed, 26 insertions, 24 deletions
diff --git a/crawl-ref/source/attitude-change.cc b/crawl-ref/source/attitude-change.cc
index af2696fa9a..77d1c1b5a3 100644
--- a/crawl-ref/source/attitude-change.cc
+++ b/crawl-ref/source/attitude-change.cc
@@ -75,7 +75,7 @@ void beogh_follower_convert(monsters *monster, bool orc_hit)
&& monster->foe == MHITYOU
&& mons_species(monster->type) == MONS_ORC
&& !monster->is_summoned()
- && !mons_is_shapeshifter(monster)
+ && !monster->is_shapeshifter()
&& !testbits(monster->flags, MF_ATT_CHANGE_ATTEMPT)
&& !monster->friendly()
&& you.visible_to(monster) && !monster->asleep()
@@ -109,7 +109,7 @@ void slime_convert(monsters* monster)
{
if (you.religion == GOD_JIYVA && mons_is_slime(monster)
&& !monster->is_summoned()
- && !mons_is_shapeshifter(monster)
+ && !monster->is_shapeshifter()
&& !monster->neutral()
&& !monster->friendly()
&& !testbits(monster->flags, MF_ATT_CHANGE_ATTEMPT)
diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc
index 66827f3b6c..2e3e852ce2 100644
--- a/crawl-ref/source/beam.cc
+++ b/crawl-ref/source/beam.cc
@@ -4993,7 +4993,7 @@ mon_resist_type bolt::try_enchant_monster(monsters *mon)
if (flavour == BEAM_POLYMORPH
&& (mon->type == MONS_UGLY_THING
|| mon->type == MONS_VERY_UGLY_THING
- || mons_is_shapeshifter(mon)))
+ || mon->is_shapeshifter()))
{
;
}
diff --git a/crawl-ref/source/decks.cc b/crawl-ref/source/decks.cc
index 7f44093d9b..f5605b1615 100644
--- a/crawl-ref/source/decks.cc
+++ b/crawl-ref/source/decks.cc
@@ -2547,7 +2547,7 @@ static void _crusade_card(int power, deck_rarity_type rarity)
|| you.religion == GOD_BEOGH
&& mons_species(monster->type) == MONS_ORC
&& !monster->is_summoned()
- && !mons_is_shapeshifter(monster))
+ && !monster->is_shapeshifter())
{
// Prevent assertion if the monster was
// previously worshipping a different god,
diff --git a/crawl-ref/source/fight.cc b/crawl-ref/source/fight.cc
index a928168445..7f24fa9386 100644
--- a/crawl-ref/source/fight.cc
+++ b/crawl-ref/source/fight.cc
@@ -877,7 +877,7 @@ bool melee_attack::player_attack()
if (you.religion == GOD_BEOGH
&& defender->mons_species() == MONS_ORC
&& !defender->is_summoned()
- && !mons_is_shapeshifter(defender_as_monster())
+ && !defender_as_monster()->is_shapeshifter()
&& !player_under_penance() && you.piety >= piety_breakpoint(2)
&& mons_near(defender_as_monster()) && defender->asleep())
{
@@ -2337,7 +2337,7 @@ void melee_attack::chaos_affects_defender()
const bool mon = defender->atype() == ACT_MONSTER;
const bool immune = mon && mons_immune_magic(defender_as_monster());
const bool is_natural = mon && defender->holiness() == MH_NATURAL;
- const bool is_shifter = mon && mons_is_shapeshifter(defender_as_monster());
+ const bool is_shifter = mon && defender_as_monster()->is_shapeshifter();
const bool can_clone = mon && defender->holiness() == MH_HOLY
&& mons_clonable(defender_as_monster(), true);
const bool can_poly = is_shifter || (defender->can_safely_mutate()
diff --git a/crawl-ref/source/kills.cc b/crawl-ref/source/kills.cc
index 07a7d127e4..589a9b3972 100644
--- a/crawl-ref/source/kills.cc
+++ b/crawl-ref/source/kills.cc
@@ -668,7 +668,7 @@ kill_monster_desc::kill_monster_desc(const monsters *mon)
if (modifier != M_NORMAL)
monnum = mon->base_monster;
- if (mons_is_shapeshifter(mon))
+ if (mon->is_shapeshifter())
modifier = M_SHAPESHIFTER;
// XXX: Ugly hack - merge all mimics into one mimic record.
diff --git a/crawl-ref/source/mon-abil.cc b/crawl-ref/source/mon-abil.cc
index 0c62f719e0..82f49ffbeb 100644
--- a/crawl-ref/source/mon-abil.cc
+++ b/crawl-ref/source/mon-abil.cc
@@ -380,7 +380,7 @@ static bool _slime_merge(monsters *thing)
&& other_thing->type == MONS_SLIME_CREATURE
&& other_thing->attitude == thing->attitude
&& other_thing->is_summoned() == thing->is_summoned()
- && !mons_is_shapeshifter(other_thing)
+ && !other_thing->is_shapeshifter()
&& !_disabled_slime(other_thing))
{
// We can potentially merge if doing so won't take us over
@@ -440,7 +440,7 @@ bool slime_split_merge(monsters *thing)
{
// No merging/splitting shapeshifters.
if (!thing
- || mons_is_shapeshifter(thing)
+ || thing->is_shapeshifter()
|| thing->type != MONS_SLIME_CREATURE)
{
return (false);
diff --git a/crawl-ref/source/mon-act.cc b/crawl-ref/source/mon-act.cc
index aaf47240cd..77077548b6 100644
--- a/crawl-ref/source/mon-act.cc
+++ b/crawl-ref/source/mon-act.cc
@@ -170,7 +170,7 @@ static bool _swap_monsters(monsters* mover, monsters* moved)
static bool _do_mon_spell(monsters *monster, bolt &beem)
{
// Shapeshifters don't get spells.
- if (!mons_is_shapeshifter(monster) || !monster->is_actual_spellcaster())
+ if (!monster->is_shapeshifter() || !monster->is_actual_spellcaster())
{
if (handle_mon_spell(monster, beem))
{
diff --git a/crawl-ref/source/mon-cast.cc b/crawl-ref/source/mon-cast.cc
index 0e36894d11..f5773bd9cd 100644
--- a/crawl-ref/source/mon-cast.cc
+++ b/crawl-ref/source/mon-cast.cc
@@ -984,7 +984,7 @@ bool handle_mon_spell(monsters *monster, bolt &beem)
}
// Shapeshifters don't get spells.
- if (mons_is_shapeshifter(monster) && (priest || wizard))
+ if (monster->is_shapeshifter() && (priest || wizard))
return (false);
else if (monster->has_ench(ENCH_CONFUSION)
&& !mons_class_flag(monster->type, M_CONFUSED))
diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc
index a4b88f7d4d..368530d63f 100644
--- a/crawl-ref/source/mon-util.cc
+++ b/crawl-ref/source/mon-util.cc
@@ -1896,11 +1896,6 @@ bool mons_self_destructs(const monsters *m)
return (m->type == MONS_GIANT_SPORE || m->type == MONS_BALL_LIGHTNING);
}
-bool mons_is_shapeshifter(const monsters *m)
-{
- return (m->has_ench(ENCH_GLOWING_SHAPESHIFTER, ENCH_SHAPESHIFTER));
-}
-
int mons_base_damage_brand(const monsters *m)
{
if (mons_is_ghost_demon(m->type))
diff --git a/crawl-ref/source/mon-util.h b/crawl-ref/source/mon-util.h
index 1e4bed5614..6565f7b79b 100644
--- a/crawl-ref/source/mon-util.h
+++ b/crawl-ref/source/mon-util.h
@@ -524,7 +524,6 @@ bool mons_is_demon( int mc );
bool mons_class_wields_two_weapons(int mc);
bool mons_wields_two_weapons(const monsters *m);
bool mons_self_destructs(const monsters *m);
-bool mons_is_shapeshifter(const monsters *m);
mon_intel_type mons_class_intel(int mc);
mon_intel_type mons_intel(const monsters *mon);
diff --git a/crawl-ref/source/monster.cc b/crawl-ref/source/monster.cc
index 4e79eb6a30..2c3a549479 100644
--- a/crawl-ref/source/monster.cc
+++ b/crawl-ref/source/monster.cc
@@ -2209,7 +2209,7 @@ static std::string _str_monam(const monsters& mon, description_level_type desc,
}
}
- if ((mon.flags & MF_KNOWN_MIMIC) && mons_is_shapeshifter(&mon))
+ if ((mon.flags & MF_KNOWN_MIMIC) && mon.is_shapeshifter())
{
// If momentarily in original form, don't display "shaped
// shifter".
@@ -2952,7 +2952,7 @@ bool monsters::is_chaotic() const
if (type == MONS_UGLY_THING || type == MONS_VERY_UGLY_THING)
return (true);
- if (mons_is_shapeshifter(this))
+ if (is_shapeshifter())
return (true);
// Assume that all unknown gods (GOD_NAMELESS) are not chaotic.
@@ -2976,6 +2976,11 @@ bool monsters::is_chaotic() const
return (false);
}
+bool monsters::is_shapeshifter() const
+{
+ return (has_ench(ENCH_GLOWING_SHAPESHIFTER, ENCH_SHAPESHIFTER));
+}
+
int monsters::res_fire() const
{
const mon_resist_def res = get_mons_resists(this);
diff --git a/crawl-ref/source/monster.h b/crawl-ref/source/monster.h
index 16bdfe7afe..00e6186747 100644
--- a/crawl-ref/source/monster.h
+++ b/crawl-ref/source/monster.h
@@ -146,6 +146,9 @@ public:
// can be silenced, etc.
bool is_actual_spellcaster() const;
+ // Has ENCH_SHAPESHIFTER or ENCH_GLOWING_SHAPESHIFTER.
+ bool is_shapeshifter() const;
+
bool has_ench(enchant_type ench) const;
bool has_ench(enchant_type ench, enchant_type ench2) const;
mon_enchant get_ench(enchant_type ench,
diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc
index e237ec119c..5e11ded4fd 100644
--- a/crawl-ref/source/monstuff.cc
+++ b/crawl-ref/source/monstuff.cc
@@ -743,7 +743,7 @@ static bool _beogh_forcibly_convert_orc(monsters *monster, killer_type killer,
{
if (you.religion == GOD_BEOGH
&& mons_species(monster->type) == MONS_ORC
- && !monster->is_summoned() && !mons_is_shapeshifter(monster)
+ && !monster->is_summoned() && !monster->is_shapeshifter()
&& !player_under_penance() && you.piety >= piety_breakpoint(2)
&& mons_near(monster))
{
@@ -2088,7 +2088,7 @@ int monster_die(monsters *monster, killer_type killer,
if (!silent && !wizard && !mons_reset && corpse != -1
&& !(monster->flags & MF_KNOWN_MIMIC)
- && mons_is_shapeshifter(monster))
+ && monster->is_shapeshifter())
{
simple_monster_message(monster, "'s shape twists and changes "
"as it dies.");
@@ -2285,7 +2285,7 @@ bool monster_polymorph(monsters *monster, monster_type targetc,
str_polymon = " grows a second head";
else
{
- if (mons_is_shapeshifter(monster))
+ if (monster->is_shapeshifter())
str_polymon = " changes into ";
else if (targetc == MONS_PULSATING_LUMP)
str_polymon = " degenerates into ";
@@ -2497,7 +2497,7 @@ bool monster_polymorph(monsters *monster, monster_type targetc,
player_angers_monster(monster);
// Xom likes watching monsters being polymorphed.
- xom_is_stimulated(mons_is_shapeshifter(monster) ? 16 :
+ xom_is_stimulated(monster->is_shapeshifter() ? 16 :
power == PPT_LESS || monster->friendly() ? 32 :
power == PPT_SAME ? 64 : 128);
diff --git a/crawl-ref/source/xom.cc b/crawl-ref/source/xom.cc
index 121075fae4..e74bcb0da0 100644
--- a/crawl-ref/source/xom.cc
+++ b/crawl-ref/source/xom.cc
@@ -1417,7 +1417,7 @@ static int _xom_polymorph_nearby_monster(bool helpful, bool debug = false)
if (one_chance_in(8)
&& !mons_is_ghost_demon(mon->type)
- && !mons_is_shapeshifter(mon)
+ && !mon->is_shapeshifter()
&& mon->holiness() == MH_NATURAL)
{
mon->add_ench(one_chance_in(3) ? ENCH_GLOWING_SHAPESHIFTER