diff options
author | DracoOmega <draco_omega@live.com> | 2014-03-21 00:10:28 -0230 |
---|---|---|
committer | DracoOmega <draco_omega@live.com> | 2014-03-21 00:30:19 -0230 |
commit | 3595075b7f7d5ca02ca847fc988a454fcd4f2e61 (patch) | |
tree | 79000b71a6d403c5fc92c9381e9afa10fecf8e3d /crawl-ref/source/mon-cast.cc | |
parent | 5a12eb2f96eb6f9bbaec43b43e6c370e78b9160c (diff) | |
download | crawl-ref-3595075b7f7d5ca02ca847fc988a454fcd4f2e61.tar.gz crawl-ref-3595075b7f7d5ca02ca847fc988a454fcd4f2e61.zip |
Greatly increase frequency (and reduce variance of) servitor spellcasts
One of the most obvious problems with Spellforged Servitor is that the
normal monster spellcasting frequency is rather low and this is all the
servitor can meaningfully do. Due to this, it was prone to spending long
periods appearing to do nothing (to the point that it wasn't even
obvious to players that it was 'attempting' to attack any monsters at
all, leading more than a few to reissue their attack orders - to no
effect). Even aside from a lack of meaningful feedback, casting a level
7 spell only for it often do nothing is underwhelming (even if it was
quite effective on the ocassions it would decide to cast rapidly).
Given that the servitor's role is purely confined to this spell, I
think it's fine to bend the rules for it.
Instead of the standard chance to cast a spell each action, servitors
will ALWAYS attempt to cast a spell, but the energy cost of this
spell is randomized (from between 10 and 25 energy currently) to
simulate turns spent idling instead of casting, without allowing the
chance of protracted periods where they don't seem to be doing anything
(which even a very high standard frequency would permit on a series of
unlucky rolls). It's arguably a touch on the fast side (but it IS a
level 7 dual-school spell that requires multiple other spells learned
for support), but it feels a lot better and more active in play.
(The implementation is a touch hacky, but in absense of a more full and
adjustable spell frequency system, I'm not sure there's any cleaner
way to do this.)
Diffstat (limited to 'crawl-ref/source/mon-cast.cc')
-rw-r--r-- | crawl-ref/source/mon-cast.cc | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/crawl-ref/source/mon-cast.cc b/crawl-ref/source/mon-cast.cc index 9117508103..105c32570c 100644 --- a/crawl-ref/source/mon-cast.cc +++ b/crawl-ref/source/mon-cast.cc @@ -2846,9 +2846,11 @@ bool handle_mon_spell(monster* mons, bolt &beem) { return false; } - else if (random2(200) > mons->hit_dice + 50 - + ((mons_class_flag(mons->type, M_STABBER) - && mons->pos() == mons->firing_pos) ? 75 : 0)) + // Servitors never fail to (try) to cast a spell + else if (mons->type != MONS_SPELLFORGED_SERVITOR + && random2(200) > mons->hit_dice + 50 + + ((mons_class_flag(mons->type, M_STABBER) + && mons->pos() == mons->firing_pos) ? 75 : 0)) { return false; } |