summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2009-09-19 18:34:09 +0000
committerdolorous <dolorous@c06c8d41-db1a-0410-9941-cceddc491573>2009-09-19 18:34:09 +0000
commitd91ad5d1d25e3d587192994fc42f229804804991 (patch)
tree0f1a6f3b67fd5ea471952622819b90270b665832
parent5904e93aa4220ebb102df0510f11f21980ed6ffa (diff)
downloadcrawl-ref-d91ad5d1d25e3d587192994fc42f229804804991.tar.gz
crawl-ref-d91ad5d1d25e3d587192994fc42f229804804991.zip
Make sure (very) ugly things never resist polymorph beams.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@10733 c06c8d41-db1a-0410-9941-cceddc491573
-rw-r--r--crawl-ref/source/beam.cc13
-rw-r--r--crawl-ref/source/mon-util.cc7
2 files changed, 16 insertions, 4 deletions
diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc
index 57af9eb18f..fc042aa19f 100644
--- a/crawl-ref/source/beam.cc
+++ b/crawl-ref/source/beam.cc
@@ -4885,9 +4885,20 @@ mon_resist_type bolt::try_enchant_monster(monsters *mon)
if (mons_immune_magic(mon))
return (MON_UNAFFECTED);
- if (flavour != BEAM_POLYMORPH || !mons_is_shapeshifter(mon))
+ // (Very) ugly things and shapeshifters will never resist
+ // polymorph beams.
+ if (flavour == BEAM_POLYMORPH
+ && (mon->type == MONS_UGLY_THING
+ || mon->type == MONS_VERY_UGLY_THING
+ || mons_is_shapeshifter(mon)))
+ {
+ ;
+ }
+ else
+ {
if (check_mons_resist_magic(mon, ench_power))
return (MON_RESIST);
+ }
}
return (apply_enchantment_to_monster(mon));
diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc
index 7b6f6eb296..0ae62e5f7f 100644
--- a/crawl-ref/source/mon-util.cc
+++ b/crawl-ref/source/mon-util.cc
@@ -585,10 +585,10 @@ bool mons_is_native_in_branch(const monsters *monster,
bool mons_is_chaotic(const monsters *mon)
{
- if (mons_is_shapeshifter(mon))
+ if (mon->type == MONS_UGLY_THING || mon->type == MONS_VERY_UGLY_THING)
return (true);
- if (mon->type == MONS_UGLY_THING || mon->type == MONS_VERY_UGLY_THING)
+ if (mons_is_shapeshifter(mon))
return (true);
if (mon->has_spell(SPELL_POLYMORPH_OTHER))
@@ -7959,9 +7959,10 @@ bool monsters::mutate()
return (true);
}
+ // Polymorphing a shapeshifter will make it revert to its original
+ // form.
if (this->has_ench(ENCH_GLOWING_SHAPESHIFTER))
return (monster_polymorph(this, MONS_GLOWING_SHAPESHIFTER));
-
if (this->has_ench(ENCH_SHAPESHIFTER))
return (monster_polymorph(this, MONS_SHAPESHIFTER));