diff options
-rw-r--r-- | crawl-ref/source/attitude-change.cc | 4 | ||||
-rw-r--r-- | crawl-ref/source/beam.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/decks.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/fight.cc | 4 | ||||
-rw-r--r-- | crawl-ref/source/kills.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/mon-abil.cc | 4 | ||||
-rw-r--r-- | crawl-ref/source/mon-act.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/mon-cast.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/mon-util.cc | 5 | ||||
-rw-r--r-- | crawl-ref/source/mon-util.h | 1 | ||||
-rw-r--r-- | crawl-ref/source/monster.cc | 9 | ||||
-rw-r--r-- | crawl-ref/source/monster.h | 3 | ||||
-rw-r--r-- | crawl-ref/source/monstuff.cc | 8 | ||||
-rw-r--r-- | crawl-ref/source/xom.cc | 2 |
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 |