From 78972e9b4d6c558894b4db4d3fad6ab7b275a412 Mon Sep 17 00:00:00 2001 From: dolorous Date: Sun, 20 Sep 2009 21:23:45 +0000 Subject: 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 --- crawl-ref/source/monstuff.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'crawl-ref/source/monstuff.cc') 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)) -- cgit v1.2.3-54-g00ecf