diff options
Diffstat (limited to 'crawl-ref')
-rw-r--r-- | crawl-ref/source/beam.cc | 6 | ||||
-rw-r--r-- | crawl-ref/source/dat/descript/items.txt | 3 | ||||
-rw-r--r-- | crawl-ref/source/mon-util.cc | 14 | ||||
-rw-r--r-- | crawl-ref/source/monstuff.cc | 2 |
4 files changed, 19 insertions, 6 deletions
diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc index 91a9c88d47..744a90480f 100644 --- a/crawl-ref/source/beam.cc +++ b/crawl-ref/source/beam.cc @@ -4734,8 +4734,10 @@ mon_resist_type bolt::try_enchant_monster(monsters *mon) { if (mons_immune_magic(mon)) return (MON_UNAFFECTED); - if (check_mons_resist_magic(mon, ench_power)) - return (MON_RESIST); + + if (flavour != BEAM_POLYMORPH || !mons_is_shapeshifter(mon)) + if (check_mons_resist_magic(mon, ench_power)) + return (MON_RESIST); } return (apply_enchantment_to_monster(mon)); diff --git a/crawl-ref/source/dat/descript/items.txt b/crawl-ref/source/dat/descript/items.txt index 7bab35c043..7801d6ca10 100644 --- a/crawl-ref/source/dat/descript/items.txt +++ b/crawl-ref/source/dat/descript/items.txt @@ -1577,7 +1577,8 @@ A magical device which can render a creature immobile. wand of polymorph other A magical device which causes a creature to be transmogrified into -another form. It doesn't work on you, so don't even try. +another form. It is especially effective against shape-changing +creatures. It doesn't work on you, so don't even try. %%%% wand of random effects diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc index ed227e404c..14b9ddf7cc 100644 --- a/crawl-ref/source/mon-util.cc +++ b/crawl-ref/source/mon-util.cc @@ -2185,7 +2185,13 @@ static std::string _str_monam(const monsters& mon, description_level_type desc, } if ((mon.flags & MF_KNOWN_MIMIC) && mons_is_shapeshifter(&mon)) - result += " shaped shifter"; + { + // If momentarily in original form, don't display "shaped shifter". + if (mons_genus(mon.type) != MONS_SHAPESHIFTER) + { + result += " shaped shifter"; + } + } // All done. return result; @@ -7810,6 +7816,12 @@ bool monsters::mutate() if (!can_mutate()) return (false); + 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)); + return (monster_polymorph(this, RANDOM_MONSTER)); } diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc index 3fda434b49..48145777e5 100644 --- a/crawl-ref/source/monstuff.cc +++ b/crawl-ref/source/monstuff.cc @@ -1926,8 +1926,6 @@ static bool _valid_morph( monsters *monster, int new_mclass ) || mons_class_flag( new_mclass, M_NO_EXP_GAIN ) // not helpless || new_mclass == mons_species( monster->type ) // must be different || new_mclass == MONS_PROGRAM_BUG - || new_mclass == MONS_SHAPESHIFTER - || new_mclass == MONS_GLOWING_SHAPESHIFTER // These require manual setting of mons.base_monster to indicate // what they are a skeleton/zombie/simulacrum/spectral thing of, |