diff options
author | DracoOmega <draco_omega@live.com> | 2014-03-09 20:47:05 -0230 |
---|---|---|
committer | DracoOmega <draco_omega@live.com> | 2014-03-11 20:07:54 -0230 |
commit | 03863c37a7725b2b85bdbef2d61d778142b9a2c8 (patch) | |
tree | beea3661b9022ff88d273ebe2a26957c76bd0849 /crawl-ref/source/fineff.cc | |
parent | da5242858d54221824926767f315f012054519e9 (diff) | |
download | crawl-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.cc | 11 |
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() |