summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/mon-cast.cc
diff options
context:
space:
mode:
authorDracoOmega <draco_omega@live.com>2014-03-21 00:10:28 -0230
committerDracoOmega <draco_omega@live.com>2014-03-21 00:30:19 -0230
commit3595075b7f7d5ca02ca847fc988a454fcd4f2e61 (patch)
tree79000b71a6d403c5fc92c9381e9afa10fecf8e3d /crawl-ref/source/mon-cast.cc
parent5a12eb2f96eb6f9bbaec43b43e6c370e78b9160c (diff)
downloadcrawl-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.cc8
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;
}