diff options
-rw-r--r-- | crawl-ref/source/beam.cc | 13 | ||||
-rw-r--r-- | crawl-ref/source/mon-util.cc | 7 |
2 files changed, 16 insertions, 4 deletions
diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc index 57af9eb18f..fc042aa19f 100644 --- a/crawl-ref/source/beam.cc +++ b/crawl-ref/source/beam.cc @@ -4885,9 +4885,20 @@ mon_resist_type bolt::try_enchant_monster(monsters *mon) if (mons_immune_magic(mon)) return (MON_UNAFFECTED); - if (flavour != BEAM_POLYMORPH || !mons_is_shapeshifter(mon)) + // (Very) ugly things and shapeshifters will never resist + // polymorph beams. + if (flavour == BEAM_POLYMORPH + && (mon->type == MONS_UGLY_THING + || mon->type == MONS_VERY_UGLY_THING + || mons_is_shapeshifter(mon))) + { + ; + } + else + { if (check_mons_resist_magic(mon, ench_power)) return (MON_RESIST); + } } return (apply_enchantment_to_monster(mon)); diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc index 7b6f6eb296..0ae62e5f7f 100644 --- a/crawl-ref/source/mon-util.cc +++ b/crawl-ref/source/mon-util.cc @@ -585,10 +585,10 @@ bool mons_is_native_in_branch(const monsters *monster, bool mons_is_chaotic(const monsters *mon) { - if (mons_is_shapeshifter(mon)) + if (mon->type == MONS_UGLY_THING || mon->type == MONS_VERY_UGLY_THING) return (true); - if (mon->type == MONS_UGLY_THING || mon->type == MONS_VERY_UGLY_THING) + if (mons_is_shapeshifter(mon)) return (true); if (mon->has_spell(SPELL_POLYMORPH_OTHER)) @@ -7959,9 +7959,10 @@ bool monsters::mutate() return (true); } + // Polymorphing a shapeshifter will make it revert to its original + // form. if (this->has_ench(ENCH_GLOWING_SHAPESHIFTER)) return (monster_polymorph(this, MONS_GLOWING_SHAPESHIFTER)); - if (this->has_ench(ENCH_SHAPESHIFTER)) return (monster_polymorph(this, MONS_SHAPESHIFTER)); |