diff options
-rw-r--r-- | crawl-ref/source/monstuff.cc | 7 |
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; |