summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/mon-ench.cc
diff options
context:
space:
mode:
authorNicholas Feinberg <pleasingfung@gmail.com>2014-07-25 21:48:12 -0700
committerNicholas Feinberg <pleasingfung@gmail.com>2014-07-25 21:50:26 -0700
commitf054a6457fa0f54580893607c794b7356a9fa5f8 (patch)
treeabab95239f37583619af1e92a7926403f4848cd4 /crawl-ref/source/mon-ench.cc
parenta02710520930951c3f3b6685483d157d3b32bfcb (diff)
downloadcrawl-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.cc16
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);