diff options
author | Adam Borowski <kilobyte@angband.pl> | 2009-11-18 15:46:58 +0100 |
---|---|---|
committer | Adam Borowski <kilobyte@angband.pl> | 2009-11-26 00:06:31 +0100 |
commit | 58c32846fce869fb03fc45ae0d137b55c6097b39 (patch) | |
tree | e6fee061fd5468f6ef3909fb1129e6a0d14b214c /crawl-ref/source/item_use.cc | |
parent | 4e9088e3e1e500b31d321c696c67ade46df08b8c (diff) | |
download | crawl-ref-58c32846fce869fb03fc45ae0d137b55c6097b39.tar.gz crawl-ref-58c32846fce869fb03fc45ae0d137b55c6097b39.zip |
Un-underpopulate '4's by adding sixfirhy: elec theme, unorthodox timings.
Sixfirhies move in bursts: speed 30, but act only on 4 turns out of 12.
They also get a bonus to moving compared to other actions (move cost 60%).
Damage brand is AF_ELEC -- it's unproportionately dangerous, so the numbers
only look small.
Also, electricity heals them! It won't bring the back from over the edge
if physical part of damage got them to 0 hp or less, in this case, they'll
explode instead.
Keeping with the long tradition of Crawl's demon names, the credit for this
one goes to timecircuits' cat.
Diffstat (limited to 'crawl-ref/source/item_use.cc')
-rw-r--r-- | crawl-ref/source/item_use.cc | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/crawl-ref/source/item_use.cc b/crawl-ref/source/item_use.cc index 698a066220..515c54c414 100644 --- a/crawl-ref/source/item_use.cc +++ b/crawl-ref/source/item_use.cc @@ -1880,7 +1880,16 @@ static bool _charged_hit_victim(bolt &beam, actor* victim, int &dmg, if (victim->airborne() || victim->res_elec() > 0 || !one_chance_in(3)) return (false); - dmg += 10 + random2(15); + // A hack and code duplication, but that's easier than adding accounting + // for each of multiple brands. + if (victim->id() == MONS_SIXFIRHY) + { + if (!beam.is_tracer) + victim->heal(10 + random2(15), false); + // physical damage is still done + } + else + dmg += 10 + random2(15); if (beam.is_tracer) return (false); @@ -1888,6 +1897,8 @@ static bool _charged_hit_victim(bolt &beam, actor* victim, int &dmg, if (you.can_see(victim)) if (victim->atype() == ACT_PLAYER) dmg_msg = "You are electrocuted!"; + else if (victim->id() == MONS_SIXFIRHY) + dmg_msg = victim->name(DESC_CAP_THE) + " is charged up!"; else dmg_msg = "There is a sudden explosion of sparks!"; |