summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/mon-util.cc21
1 files changed, 11 insertions, 10 deletions
diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc
index 6fc2450884..4b9dacfef9 100644
--- a/crawl-ref/source/mon-util.cc
+++ b/crawl-ref/source/mon-util.cc
@@ -2044,11 +2044,10 @@ static std::string _str_monam(const monsters& mon, description_level_type desc,
if ((mon.flags & MF_KNOWN_MIMIC) && mons_is_shapeshifter(&mon))
{
- // If momentarily in original form, don't display "shaped shifter".
+ // If momentarily in original form, don't display "shaped
+ // shifter".
if (mons_genus(mon.type) != MONS_SHAPESHIFTER)
- {
result += " shaped shifter";
- }
}
// All done.
@@ -7692,18 +7691,20 @@ void monsters::apply_enchantment(const mon_enchant &me)
}
break;
- case ENCH_GLOWING_SHAPESHIFTER: // This ench never runs out!
- // Number of actions is fine for shapeshifters.
- // Don't change shape while taking the stairs because
- // monster_polymorph has an assert about it. -cao
- if (!(this->flags & MF_TAKING_STAIRS)
+ case ENCH_GLOWING_SHAPESHIFTER: // This ench never runs out!
+ // Number of actions is fine for shapeshifters. Don't change
+ // shape while taking the stairs because monster_polymorph() has
+ // an assert about it. -cao
+ if (!(this->flags & MF_TAKING_STAIRS) && !asleep()
&& (type == MONS_GLOWING_SHAPESHIFTER
|| one_chance_in(4)))
+ {
monster_polymorph(this, RANDOM_MONSTER);
+ }
break;
- case ENCH_SHAPESHIFTER: // This ench never runs out!
- if (!(this->flags & MF_TAKING_STAIRS)
+ case ENCH_SHAPESHIFTER: // This ench never runs out!
+ if (!(this->flags & MF_TAKING_STAIRS) && !asleep()
&& (type == MONS_SHAPESHIFTER
|| x_chance_in_y(1000 / (15 * hit_dice / 5), 1000)))
{