diff options
Diffstat (limited to 'crawl-ref/source/spells1.cc')
-rw-r--r-- | crawl-ref/source/spells1.cc | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/crawl-ref/source/spells1.cc b/crawl-ref/source/spells1.cc index 9c0feb4a40..54bf45bd90 100644 --- a/crawl-ref/source/spells1.cc +++ b/crawl-ref/source/spells1.cc @@ -299,6 +299,49 @@ void cast_fire_storm(int pow, bolt &beam) viewwindow(true, false); } +// No setup/cast split here as monster hellfire is completely different. +// Sad, but needed to maintain balance - monster hellfirers get asymmetric +// torment too. +bool cast_hellfire_burst(int pow, bolt &beam) +{ + beam.name = "burst of hellfire"; + beam.aux_source = "burst of hellfire"; + beam.ex_size = 1; + beam.flavour = BEAM_HELLFIRE; + beam.real_flavour = beam.flavour; + beam.type = dchar_glyph(DCHAR_FIRED_BURST); + beam.colour = RED; + beam.beam_source = MHITYOU; + beam.thrower = KILL_YOU; + beam.obvious_effect = false; + beam.is_beam = false; + beam.is_explosion = true; + beam.ench_power = pow; // used for radius + beam.hit = 20 + pow / 10; + beam.damage = calc_dice(6, 30 + pow); + beam.can_see_invis = you.can_see_invisible(); + beam.smart_monster = true; + beam.attitude = ATT_FRIENDLY; + beam.friend_info.count = 0; + beam.is_tracer = true; + + beam.explode(false); + + if (beam.beam_cancelled) + { + canned_msg(MSG_OK); + return (false); + } + + mpr("You call forth a pillar of hellfire!"); + + beam.is_tracer = false; + beam.in_explosion_phase = false; + beam.explode(true); + + return (true); +} + bool _lightning_los(const coord_def& source, const coord_def& target) { // XXX: currently bounded by circular LOS radius; |