summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-02-03 12:53:29 +0000
committerdshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-02-03 12:53:29 +0000
commit6115d75a55cd1c616ba9c15e106945dfd96ffaaf (patch)
tree9904ea3459a1b82125e1e585f37d8bfd80038c0f
parent72881a889f23eb64e2b692e0c6b2d4a9886010ea (diff)
downloadcrawl-ref-6115d75a55cd1c616ba9c15e106945dfd96ffaaf.tar.gz
crawl-ref-6115d75a55cd1c616ba9c15e106945dfd96ffaaf.zip
Allow ghosts to remember and use shock, ice bolt and bolt of magma.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@913 c06c8d41-db1a-0410-9941-cceddc491573
-rw-r--r--crawl-ref/source/enum.h3
-rw-r--r--crawl-ref/source/files.cc12
-rw-r--r--crawl-ref/source/mon-util.cc3
-rw-r--r--crawl-ref/source/mstuff2.cc43
4 files changed, 56 insertions, 5 deletions
diff --git a/crawl-ref/source/enum.h b/crawl-ref/source/enum.h
index 0d4abc977d..456626204f 100644
--- a/crawl-ref/source/enum.h
+++ b/crawl-ref/source/enum.h
@@ -2440,6 +2440,9 @@ enum mon_spell_type
MS_POISON_ARROW, // 60
MS_SUMMON_SMALL_MAMMALS,
MS_SUMMON_MUSHROOMS,
+ MS_ICE_BOLT,
+ MS_MAGMA,
+ MS_SHOCK,
MS_BERSERK_RAGE,
MS_MIGHT,
diff --git a/crawl-ref/source/files.cc b/crawl-ref/source/files.cc
index 21ce1e7122..b8b5aa518d 100644
--- a/crawl-ref/source/files.cc
+++ b/crawl-ref/source/files.cc
@@ -90,7 +90,6 @@ void save_level(int level_saved, bool was_a_labyrinth, char where_were_you);
when finding spells to be remembered by a player's ghost:
*/
unsigned char search_order_conj[] = {
-/* 0 */
SPELL_LEHUDIBS_CRYSTAL_SPEAR,
SPELL_BOLT_OF_DRAINING,
SPELL_AGONY,
@@ -98,11 +97,12 @@ unsigned char search_order_conj[] = {
SPELL_LIGHTNING_BOLT,
SPELL_STICKY_FLAME,
SPELL_ISKENDERUNS_MYSTIC_BLAST,
+ SPELL_BOLT_OF_MAGMA,
+ SPELL_ICE_BOLT,
SPELL_BOLT_OF_FIRE,
SPELL_BOLT_OF_COLD,
SPELL_FIREBALL,
SPELL_DELAYED_FIREBALL,
-/* 10 */
SPELL_VENOM_BOLT,
SPELL_BOLT_OF_IRON,
SPELL_STONE_ARROW,
@@ -110,6 +110,7 @@ unsigned char search_order_conj[] = {
SPELL_THROW_FROST,
SPELL_PAIN,
SPELL_STING,
+ SPELL_SHOCK,
SPELL_MAGIC_DART,
SPELL_NO_SPELL, // end search
};
@@ -1754,7 +1755,12 @@ unsigned char translate_spell(unsigned char spel)
{
case SPELL_TELEPORT_SELF:
return (MS_TELEPORT);
-
+ case SPELL_ICE_BOLT:
+ return (MS_ICE_BOLT);
+ case SPELL_SHOCK:
+ return (MS_SHOCK);
+ case SPELL_BOLT_OF_MAGMA:
+ return (MS_MAGMA);
case SPELL_MAGIC_DART:
return (MS_MMISSILE);
case SPELL_FIREBALL:
diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc
index 5c82037c44..2e6e3b1930 100644
--- a/crawl-ref/source/mon-util.cc
+++ b/crawl-ref/source/mon-util.cc
@@ -1909,6 +1909,9 @@ bool ms_requires_tracer(int monspell)
{
case MS_BANISHMENT:
case MS_COLD_BOLT:
+ case MS_ICE_BOLT:
+ case MS_SHOCK:
+ case MS_MAGMA:
case MS_CONFUSE:
case MS_CRYSTAL_SPEAR:
case MS_DISINTEGRATE:
diff --git a/crawl-ref/source/mstuff2.cc b/crawl-ref/source/mstuff2.cc
index d25706f97a..30509d8ead 100644
--- a/crawl-ref/source/mstuff2.cc
+++ b/crawl-ref/source/mstuff2.cc
@@ -1417,9 +1417,22 @@ bolt mons_spells( int spell_cast, int power )
beam.range = beam.rangeMax = 8;
break;
+ case MS_MAGMA:
+ beam.name = "bolt of magma";
+ beam.range = 5;
+ beam.rangeMax = 13;
+ beam.damage = dice_def( 3, 8 + power / 11 );
+ beam.colour = RED;
+ beam.type = SYM_ZAP;
+ beam.thrower = KILL_MON;
+ beam.flavour = BEAM_LAVA;
+ beam.hit = 12 + power / 25;
+ beam.is_beam = true;
+ break;
+
case MS_FIRE_BOLT:
beam.name = "bolt of fire";
- beam.range = 4;
+ beam.range = 5;
beam.rangeMax = 13;
beam.damage = dice_def( 3, 8 + power / 11 );
beam.colour = RED;
@@ -1430,9 +1443,22 @@ bolt mons_spells( int spell_cast, int power )
beam.is_beam = true;
break;
+ case MS_ICE_BOLT:
+ beam.name = "bolt of ice";
+ beam.range = 5;
+ beam.rangeMax = 13;
+ beam.damage = dice_def( 3, 8 + power / 11 );
+ beam.colour = WHITE;
+ beam.type = SYM_ZAP;
+ beam.thrower = KILL_MON;
+ beam.flavour = BEAM_ICE;
+ beam.hit = 12 + power / 25;
+ beam.is_beam = true;
+ break;
+
case MS_COLD_BOLT:
beam.name = "bolt of cold";
- beam.range = 4;
+ beam.range = 5;
beam.rangeMax = 13;
beam.damage = dice_def( 3, 8 + power / 11 );
beam.colour = WHITE;
@@ -1443,6 +1469,19 @@ bolt mons_spells( int spell_cast, int power )
beam.is_beam = true;
break;
+ case MS_SHOCK:
+ beam.name = "zap";
+ beam.range = 8;
+ beam.rangeMax = 16;
+ beam.damage = dice_def( 1, 8 + (power / 20) );
+ beam.colour = LIGHTCYAN;
+ beam.type = SYM_ZAP;
+ beam.thrower = KILL_MON;
+ beam.flavour = BEAM_ELECTRICITY;
+ beam.hit = 12 + power / 20;
+ beam.is_beam = true;
+ break;
+
case MS_LIGHTNING_BOLT:
beam.name = "bolt of lightning";
beam.range = 7;