summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/beam.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/beam.cc')
-rw-r--r--crawl-ref/source/beam.cc53
1 files changed, 48 insertions, 5 deletions
diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc
index 9ef30e22da..b6195fb054 100644
--- a/crawl-ref/source/beam.cc
+++ b/crawl-ref/source/beam.cc
@@ -1707,6 +1707,23 @@ void fire_beam(bolt &pbolt, item_def *item, bool drop_item)
if (!pbolt.is_tracer)
set_buffering(oldValue);
#endif
+
+ if (!pbolt.is_tracer)
+ {
+ switch(pbolt.flavour)
+ {
+ case BEAM_HELLFIRE:
+ case BEAM_HELLFROST:
+ if (YOU_KILL(pbolt.thrower))
+ {
+ did_god_conduct(DID_UNHOLY, 2 + random2(3),
+ pbolt.effect_known);
+ }
+ break;
+ default:
+ break;
+ }
+ }
}
@@ -1976,12 +1993,8 @@ int mons_adjust_flavoured(monsters *monster, bolt &pbolt, int hurted,
}
}
break;
- default:
- break;
- }
- if (pbolt.name == "hellfire")
- {
+ case BEAM_HELLFIRE:
resist = mons_res_fire(monster);
if (resist > 2)
{
@@ -2013,6 +2026,36 @@ int mons_adjust_flavoured(monsters *monster, bolt &pbolt, int hurted,
hurted *= 12; // hellfire
hurted /= 10;
}
+ break;
+
+ case BEAM_HELLFROST:
+ resist = mons_res_cold(monster);
+ if (resist > 2)
+ {
+ if (doFlavouredEffects)
+ simple_monster_message(monster, " appears unharmed.");
+
+ hurted = 0;
+ }
+ else if (resist > 0)
+ {
+ if (doFlavouredEffects)
+ simple_monster_message(monster, " partially resists.");
+
+ hurted /= 2;
+ }
+ else if (resist < 0)
+ {
+ if (doFlavouredEffects)
+ simple_monster_message(monster, " is frozen!");
+
+ hurted *= 12; // hellfrost
+ hurted /= 10;
+ }
+ break;
+
+ default:
+ break;
}
return (hurted);