diff options
author | DracoOmega <draco_omega@live.com> | 2013-08-21 18:30:54 -0230 |
---|---|---|
committer | DracoOmega <draco_omega@live.com> | 2013-08-22 15:47:51 -0230 |
commit | f41c9ff8e56993424751139148622a463c5a64d9 (patch) | |
tree | 962c5c9a92b8b34b8f272d04deeb481aec8440e4 /crawl-ref/source/spl-selfench.cc | |
parent | b0eebf247c7407e6a2bdb1547771f5286f9109c9 (diff) | |
download | crawl-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.cc | 6 |
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(); |