summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/spl-selfench.cc
diff options
context:
space:
mode:
authorDracoOmega <draco_omega@live.com>2013-08-21 18:30:54 -0230
committerDracoOmega <draco_omega@live.com>2013-08-22 15:47:51 -0230
commitf41c9ff8e56993424751139148622a463c5a64d9 (patch)
tree962c5c9a92b8b34b8f272d04deeb481aec8440e4 /crawl-ref/source/spl-selfench.cc
parentb0eebf247c7407e6a2bdb1547771f5286f9109c9 (diff)
downloadcrawl-ref-f41c9ff8e56993424751139148622a463c5a64d9.tar.gz
crawl-ref-f41c9ff8e56993424751139148622a463c5a64d9.zip
Give treants a 'grasping roots' ability
With this ability, the treant causes the network of gnarled roots running beneath the whole of the earth to rise and shift and otherwise impede the footing of any hostile creatures near it, turning it into a shifting and unstable undergrowth. In practical terms, this applies a 5 aut movement speed penalty and halves the EV of any hostile creature standing on solid ground within sight of the treant, while the effect is active. Creatures above lava and water (even shallow) are unaffected. Flying creatures are also unimpeded, but the roots have a high chance of rising up and pulling them back to the ground (though this can be evaded). The aim of this is to provide an alternate mechanism (following the reduction in ally production) to prevent them being trivially kitable, while themselves remaining slow, and also to offer a support mechanism to other nearby creatures. The flavor messages could probably use more variety.
Diffstat (limited to 'crawl-ref/source/spl-selfench.cc')
-rw-r--r--crawl-ref/source/spl-selfench.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/crawl-ref/source/spl-selfench.cc b/crawl-ref/source/spl-selfench.cc
index 9515c74bae..8003ec6d64 100644
--- a/crawl-ref/source/spl-selfench.cc
+++ b/crawl-ref/source/spl-selfench.cc
@@ -232,6 +232,12 @@ spret_type cast_fly(int power, bool fail)
return SPRET_ABORT;
}
+ if (you.duration[DUR_GRASPING_ROOTS])
+ {
+ mpr("The grasping roots prevent you from becoming airborne.", MSGCH_WARN);
+ return SPRET_ABORT;
+ }
+
fail_check();
const int dur_change = 25 + random2(power) + random2(power);
const bool was_flying = you.airborne();