summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source
diff options
context:
space:
mode:
authorStefan O'Rear <stefanor@cox.net>2009-11-02 21:43:25 -0800
committerStefan O'Rear <stefanor@cox.net>2009-11-02 21:43:25 -0800
commitdb5642e2d88754b98e2f96ae6defdb7b8b8f804c (patch)
treef9ebb607f2c2828187eafdec6b6bba8fea2ddb44 /crawl-ref/source
parent8b4c163569ea3a6c18e7a3eff19a2bce2ece8536 (diff)
downloadcrawl-ref-db5642e2d88754b98e2f96ae6defdb7b8b8f804c.tar.gz
crawl-ref-db5642e2d88754b98e2f96ae6defdb7b8b8f804c.zip
Greatly upgrade player hellfire
It's now smite targetted with maximum 6d26 damage. Have fun.
Diffstat (limited to 'crawl-ref/source')
-rw-r--r--crawl-ref/source/abl-show.cc4
-rw-r--r--crawl-ref/source/spells1.cc43
-rw-r--r--crawl-ref/source/spells1.h1
-rw-r--r--crawl-ref/source/spl-cast.cc5
-rw-r--r--crawl-ref/source/spl-data.h26
5 files changed, 64 insertions, 15 deletions
diff --git a/crawl-ref/source/abl-show.cc b/crawl-ref/source/abl-show.cc
index d7704a6aaa..99063d9731 100644
--- a/crawl-ref/source/abl-show.cc
+++ b/crawl-ref/source/abl-show.cc
@@ -1474,8 +1474,8 @@ static bool _do_ability(const ability_def& abil)
break;
case ABIL_HELLFIRE:
- if (your_spells(SPELL_HELLFIRE,
- 20 + you.experience_level, false) == SPRET_ABORT)
+ if (your_spells(SPELL_HELLFIRE_BURST,
+ you.experience_level * 5, false) == SPRET_ABORT)
return (false);
break;
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;
diff --git a/crawl-ref/source/spells1.h b/crawl-ref/source/spells1.h
index c3c0e16d6f..b32d719c24 100644
--- a/crawl-ref/source/spells1.h
+++ b/crawl-ref/source/spells1.h
@@ -40,6 +40,7 @@ int allowed_deaths_door_hp(void);
void cast_deaths_door(int pow);
void setup_fire_storm(const actor *source, int pow, bolt &beam);
void cast_fire_storm(int pow, bolt &beam);
+bool cast_hellfire_burst(int pow, bolt &beam);
void cast_chain_lightning(int pow);
bool cast_revivification(int pow);
void cast_berserk(void);
diff --git a/crawl-ref/source/spl-cast.cc b/crawl-ref/source/spl-cast.cc
index 8b15d1f54b..3794bfcb08 100644
--- a/crawl-ref/source/spl-cast.cc
+++ b/crawl-ref/source/spl-cast.cc
@@ -1529,6 +1529,11 @@ spret_type your_spells(spell_type spell, int powc, bool allow_fail)
cast_fire_storm(powc, beam);
break;
+ case SPELL_HELLFIRE_BURST:
+ if (!cast_hellfire_burst(powc, beam))
+ return (SPRET_ABORT);
+ break;
+
case SPELL_ICE_STORM:
if (!zapping(ZAP_ICE_STORM, powc, beam, true))
return (SPRET_ABORT);
diff --git a/crawl-ref/source/spl-data.h b/crawl-ref/source/spl-data.h
index bdb7fd197b..4bdb65bc7c 100644
--- a/crawl-ref/source/spl-data.h
+++ b/crawl-ref/source/spl-data.h
@@ -699,6 +699,19 @@
},
{
+ SPELL_HELLFIRE_BURST, "Hellfire Burst",
+ SPTYP_CONJURATION | SPTYP_FIRE,
+ SPFLAG_GRID | SPFLAG_AREA | SPFLAG_UNHOLY,
+ 9,
+ 200,
+ LOS_RADIUS, LOS_RADIUS,
+ 0,
+ "Where?",
+ true,
+ false
+},
+
+{
SPELL_DETECT_TRAPS, "Detect Traps",
SPTYP_DIVINATION,
SPFLAG_MAPPING,
@@ -2159,19 +2172,6 @@
// From here on, all spells are monster-only spells.
{
- SPELL_HELLFIRE_BURST, "Hellfire Burst",
- SPTYP_CONJURATION | SPTYP_FIRE,
- SPFLAG_DIR_OR_TARGET | SPFLAG_UNHOLY | SPFLAG_MONSTER,
- 9,
- 200,
- LOS_RADIUS, LOS_RADIUS,
- 0,
- NULL,
- true,
- false
-},
-
-{
SPELL_VAMPIRE_SUMMON, "Vampire Summon",
SPTYP_SUMMONING,
SPFLAG_UNHOLY | SPFLAG_MONSTER,