summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/monstuff.cc7
1 files changed, 5 insertions, 2 deletions
diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc
index 0233091451..19ef45f137 100644
--- a/crawl-ref/source/monstuff.cc
+++ b/crawl-ref/source/monstuff.cc
@@ -1493,6 +1493,8 @@ bool monster_polymorph( monsters *monster, monster_type targetc,
// the actual polymorphing:
const int old_hp = monster->hit_points;
const int old_hp_max = monster->max_hit_points;
+ const bool old_mon_shifter = monster->has_ench(ENCH_GLOWING_SHAPESHIFTER,
+ ENCH_SHAPESHIFTER);
const bool old_mon_caught = mons_is_caught(monster);
const char old_ench_countdown = monster->ench_countdown;
@@ -1501,16 +1503,17 @@ bool monster_polymorph( monsters *monster, monster_type targetc,
monster->number = MONS_PROGRAM_BUG;
mon_enchant abj = monster->get_ench(ENCH_ABJ);
- mon_enchant charm = monster->get_ench(ENCH_CHARM);
mon_enchant shifter = monster->get_ench(ENCH_GLOWING_SHAPESHIFTER,
ENCH_SHAPESHIFTER);
+ mon_enchant charm = monster->get_ench(ENCH_CHARM);
// Note: define_monster() will clear out all enchantments! -- bwr
define_monster( monster_index(monster) );
monster->add_ench(abj);
- monster->add_ench(charm);
monster->add_ench(shifter);
+ if (old_mon_shifter)
+ monster->add_ench(charm);
monster->ench_countdown = old_ench_countdown;