summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/item_use.cc
diff options
context:
space:
mode:
authorAdam Borowski <kilobyte@angband.pl>2009-11-18 15:46:58 +0100
committerAdam Borowski <kilobyte@angband.pl>2009-11-26 00:06:31 +0100
commit58c32846fce869fb03fc45ae0d137b55c6097b39 (patch)
treee6fee061fd5468f6ef3909fb1129e6a0d14b214c /crawl-ref/source/item_use.cc
parent4e9088e3e1e500b31d321c696c67ade46df08b8c (diff)
downloadcrawl-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.cc13
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!";