summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/monstuff.cc
diff options
context:
space:
mode:
authordolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2008-03-30 04:12:36 +0000
committerdolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2008-03-30 04:12:36 +0000
commita551e9fddb2b2e1f6899b9dde9eb955d939a9253 (patch)
tree530181813855da47301c84128536f284a1039acf /crawl-ref/source/monstuff.cc
parent8dfcdc9fede87a2b78deb195ab7fdd03149ad847 (diff)
downloadcrawl-ref-a551e9fddb2b2e1f6899b9dde9eb955d939a9253.tar.gz
crawl-ref-a551e9fddb2b2e1f6899b9dde9eb955d939a9253.zip
For consistency, make sure a monster's charmed status is only preserved
across polymorphs if the monster is a shapeshifter. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@3946 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/monstuff.cc')
-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;