diff options
author | dolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-03-30 04:12:36 +0000 |
---|---|---|
committer | dolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-03-30 04:12:36 +0000 |
commit | a551e9fddb2b2e1f6899b9dde9eb955d939a9253 (patch) | |
tree | 530181813855da47301c84128536f284a1039acf /crawl-ref/source/monstuff.cc | |
parent | 8dfcdc9fede87a2b78deb195ab7fdd03149ad847 (diff) | |
download | crawl-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.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; |