summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/monstuff.cc
diff options
context:
space:
mode:
authordolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2009-09-20 21:23:45 +0000
committerdolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2009-09-20 21:23:45 +0000
commit78972e9b4d6c558894b4db4d3fad6ab7b275a412 (patch)
tree457a48e1ed4f9d62245f55bc15398da707ccc37b /crawl-ref/source/monstuff.cc
parent76044b818104bcbf2588e7bae1bbde52de69da21 (diff)
downloadcrawl-ref-78972e9b4d6c558894b4db4d3fad6ab7b275a412.tar.gz
crawl-ref-78972e9b4d6c558894b4db4d3fad6ab7b275a412.zip
Apply jokeserver's patch in [2862815] to properly handle polymorphed
submerged monsters. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@10756 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/monstuff.cc')
-rw-r--r--crawl-ref/source/monstuff.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc
index 314782f8cc..7ba9fe67a0 100644
--- a/crawl-ref/source/monstuff.cc
+++ b/crawl-ref/source/monstuff.cc
@@ -2317,6 +2317,7 @@ bool monster_polymorph(monsters *monster, monster_type targetc,
mon_enchant neutral = monster->get_ench(ENCH_NEUTRAL);
mon_enchant shifter = monster->get_ench(ENCH_GLOWING_SHAPESHIFTER,
ENCH_SHAPESHIFTER);
+ mon_enchant sub = monster->get_ench(ENCH_SUBMERGED);
mon_enchant summon = monster->get_ench(ENCH_SUMMON);
mon_enchant tp = monster->get_ench(ENCH_TP);
@@ -2354,9 +2355,18 @@ bool monster_polymorph(monsters *monster, monster_type targetc,
monster->add_ench(charm);
monster->add_ench(neutral);
monster->add_ench(shifter);
+ monster->add_ench(sub);
monster->add_ench(summon);
monster->add_ench(tp);
+ // Allows for handling of submerged monsters which polymorph into
+ // monsters that can't submerge on this square.
+ if (sub.ench != ENCH_NONE
+ && !monster_can_submerge(monster, grd(monster->pos())))
+ {
+ monster->del_ench(sub);
+ }
+
monster->ench_countdown = old_ench_countdown;
if (mons_class_flag(monster->type, M_INVIS))