diff options
author | Nicholas Feinberg <pleasingfung@gmail.com> | 2014-07-25 21:48:12 -0700 |
---|---|---|
committer | Nicholas Feinberg <pleasingfung@gmail.com> | 2014-07-25 21:50:26 -0700 |
commit | f054a6457fa0f54580893607c794b7356a9fa5f8 (patch) | |
tree | abab95239f37583619af1e92a7926403f4848cd4 /crawl-ref/source/mon-ench.cc | |
parent | a02710520930951c3f3b6685483d157d3b32bfcb (diff) | |
download | crawl-ref-f054a6457fa0f54580893607c794b7356a9fa5f8.tar.gz crawl-ref-f054a6457fa0f54580893607c794b7356a9fa5f8.zip |
Make torpor snail slow end immediately after LOS is broken
Or after they die, etc.
Also no longer require the torpor snail to be visible, thus
preventing powerful /invis secret tech. rip :(
Diffstat (limited to 'crawl-ref/source/mon-ench.cc')
-rw-r--r-- | crawl-ref/source/mon-ench.cc | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/crawl-ref/source/mon-ench.cc b/crawl-ref/source/mon-ench.cc index adbbf5cfc6..6203d38a5f 100644 --- a/crawl-ref/source/mon-ench.cc +++ b/crawl-ref/source/mon-ench.cc @@ -1097,11 +1097,12 @@ void monster::timeout_enchantments(int levels) del_ench(i->first); break; } - // Deliberate fall-through + lose_ench_levels(i->second, levels); + break; case ENCH_POISON: case ENCH_ROT: case ENCH_CORONA: case ENCH_STICKY_FLAME: case ENCH_ABJ: case ENCH_SHORT_LIVED: - case ENCH_SLOW: case ENCH_HASTE: case ENCH_MIGHT: case ENCH_FEAR: + case ENCH_HASTE: case ENCH_MIGHT: case ENCH_FEAR: case ENCH_CHARM: case ENCH_SLEEP_WARY: case ENCH_SICK: case ENCH_PARALYSIS: case ENCH_PETRIFYING: case ENCH_PETRIFIED: case ENCH_SWIFT: case ENCH_BATTLE_FRENZY: @@ -1120,6 +1121,17 @@ void monster::timeout_enchantments(int levels) lose_ench_levels(i->second, levels); break; + case ENCH_SLOW: + if (torpor_slowed()) + lose_ench_levels(i->second, min(levels, i->second.degree - 1)); + else + { + lose_ench_levels(i->second, levels); + if (props.exists(TORPOR_SLOWED_KEY)) + props.erase(TORPOR_SLOWED_KEY); + } + break; + case ENCH_INVIS: if (!mons_class_flag(type, M_INVIS)) lose_ench_levels(i->second, levels); |