summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/fineff.cc
diff options
context:
space:
mode:
authorDracoOmega <draco_omega@live.com>2014-03-09 20:47:05 -0230
committerDracoOmega <draco_omega@live.com>2014-03-11 20:07:54 -0230
commit03863c37a7725b2b85bdbef2d61d778142b9a2c8 (patch)
treebeea3661b9022ff88d273ebe2a26957c76bd0849 /crawl-ref/source/fineff.cc
parentda5242858d54221824926767f315f012054519e9 (diff)
downloadcrawl-ref-03863c37a7725b2b85bdbef2d61d778142b9a2c8.tar.gz
crawl-ref-03863c37a7725b2b85bdbef2d61d778142b9a2c8.zip
Remove shock serpent lightning torrent, adjust discharge / stats
Lightning torrent didn't work as well as hoped, in practice. The intent was that it be dangerous unless actively controlled by quickly hitting the serpent, but be much less threatening if you did this. However, between misses and low damage hits, it was quite possible to be attacking a serpent continuously and still fail to prevent the torrent. Even worse, if the serpent was obstructed by other monsters, there was often no good way to keep it from unleashing the attack the moment you killed what was in front of it. A fast monster with relatively threatening attacks is likely already a priority target without the need for some other specific mechanic to encourage this. Thus, lightning torrent is removed, and the retribution discharge is made dependant on the damage inflicted upon it rather than time from last discharge (with starting hits triggering a larger shock). Also raise HD (and thus AF_ELEC damage) slightly, while lowering their base melee, to shift the damage just a touch more from physical to elemental. This also fixes a bug where the discharge would not trigger on any attack that actually killed the serpent.
Diffstat (limited to 'crawl-ref/source/fineff.cc')
-rw-r--r--crawl-ref/source/fineff.cc11
1 files changed, 9 insertions, 2 deletions
diff --git a/crawl-ref/source/fineff.cc b/crawl-ref/source/fineff.cc
index 0b6a908043..6b0a743efa 100644
--- a/crawl-ref/source/fineff.cc
+++ b/crawl-ref/source/fineff.cc
@@ -134,6 +134,13 @@ void deferred_damage_fineff::merge(const final_effect &fe)
damage += ddamfe->damage;
}
+void shock_serpent_discharge_fineff::merge(const final_effect &fe)
+{
+ const shock_serpent_discharge_fineff *ssdfe =
+ dynamic_cast<const shock_serpent_discharge_fineff *>(&fe);
+ power += ssdfe->power;
+}
+
void mirror_damage_fineff::fire()
{
actor *attack = attacker();
@@ -301,8 +308,8 @@ void starcursed_merge_fineff::fire()
void shock_serpent_discharge_fineff::fire()
{
actor *defend = defender();
- if (defend && defend->alive())
- shock_serpent_discharge(defender()->as_monster());
+ shock_serpent_discharge((defend ? defend->as_monster() : NULL), position,
+ power, attitude);
}
void delayed_action_fineff::fire()