Attached Files:
|
randbolts2.patch [^] (12,455 bytes) 2014-02-09 02:39 [Show Content] [Hide Content]From ae33f141a00fa56f6ae9054cf642ab92a30a7ee7 Mon Sep 17 00:00:00 2001
From: wheals <shm.mark@gmail.com>
Date: Wed, 5 Feb 2014 10:59:26 -0500
Subject: [PATCH] Replace plain rod of destruction with rod of bolts.
The rod of destruction {lightning bolt, fireball, iron shot} is pretty boring,
especially compared to the number of rods with unique spells. The rod of bolts
has only one (L5) spell, "Random Bolt," which zaps a random bolt from the list
of venom, draining, fire, cold, and quicksilver (the last of which has the same
accuracy and slightly less damage as fire and cold, but with a dispel effect).
---
crawl-ref/source/book-data.h | 8 ++++----
crawl-ref/source/dat/des/branches/zot.des | 2 +-
crawl-ref/source/dat/des/builder/shops.des | 2 +-
crawl-ref/source/dat/des/variable/mini_monsters.des | 4 ++--
crawl-ref/source/dat/descript/items.txt | 5 +++--
crawl-ref/source/dat/descript/spells.txt | 5 +++++
crawl-ref/source/enum.h | 2 ++
crawl-ref/source/goditem.cc | 9 +++++++++
crawl-ref/source/itemname.cc | 2 +-
crawl-ref/source/itemprop-enum.h | 2 +-
crawl-ref/source/mon-act.cc | 13 ++++++++++---
crawl-ref/source/spl-cast.cc | 1 +
crawl-ref/source/spl-data.h | 17 +++++++++++++++--
crawl-ref/source/spl-zap.cc | 7 +++++++
crawl-ref/source/zap-data.h | 16 ++++++++++++++++
15 files changed, 78 insertions(+), 17 deletions(-)
diff --git a/crawl-ref/source/book-data.h b/crawl-ref/source/book-data.h
index f133553..335db53 100644
--- a/crawl-ref/source/book-data.h
+++ b/crawl-ref/source/book-data.h
@@ -532,10 +532,10 @@
SPELL_NO_SPELL,
},
-{ // Rod of destruction (lightning, fireball, iron)
- SPELL_LIGHTNING_BOLT,
- SPELL_FIREBALL,
- SPELL_IRON_SHOT,
+{ // Rod of bolts
+ SPELL_RANDOM_BOLT,
+ SPELL_NO_SPELL,
+ SPELL_NO_SPELL,
SPELL_NO_SPELL,
SPELL_NO_SPELL,
SPELL_NO_SPELL,
diff --git a/crawl-ref/source/dat/des/branches/zot.des b/crawl-ref/source/dat/des/branches/zot.des
index 542dcf4..b3c08e6 100644
--- a/crawl-ref/source/dat/des/branches/zot.des
+++ b/crawl-ref/source/dat/des/branches/zot.des
@@ -1153,7 +1153,7 @@ KMONS: 1357 = guardian mummy ; randart dire flail ego:chaos | \
randart crossbow ego:chaos | sling | bow | crossbow | \
nothing w:15 . sling bullet | arrow | bolt . \
lightning rod w:6 | rod of demonology w:4 | rod of the swarm w:4 | \
- rod of destruction w:2 | rod of striking w:6 | wand of hasting w:16 | \
+ rod of bolts w:2 | rod of striking w:6 | wand of hasting w:16 | \
wand of confusion | wand of random effects w:6 | \
wand of polymorph w:6 | any wand w:28 | any rod w:2 | \
nothing w:45 . randart ring mail | randart chain mail w:20 | \
diff --git a/crawl-ref/source/dat/des/builder/shops.des b/crawl-ref/source/dat/des/builder/shops.des
index cd7b1ad..86c01af 100644
--- a/crawl-ref/source/dat/des/builder/shops.des
+++ b/crawl-ref/source/dat/des/builder/shops.des
@@ -393,7 +393,7 @@ KFEAT: s = general shop type:Demolitions suffix:Depot ; \
wand of fire | wand of fireball | wand of flame | wand of disintegration | \
wand of frost | wand of cold | wand of lightning | wand of magic darts | \
staff of conjuration | lightning rod | rod of inaccuracy | \
- rod of destruction | rod of striking | dart ego:exploding | \
+ rod of bolts | rod of striking | dart ego:exploding | \
arrow ego:exploding | bolt ego:exploding | tome of destruction | \
sling bullet ego:exploding | scroll of immolation | book of flames | \
book of fire | book of air | manual of conjurations
diff --git a/crawl-ref/source/dat/des/variable/mini_monsters.des b/crawl-ref/source/dat/des/variable/mini_monsters.des
index 0465878..406f096 100644
--- a/crawl-ref/source/dat/des/variable/mini_monsters.des
+++ b/crawl-ref/source/dat/des/variable/mini_monsters.des
@@ -1864,12 +1864,12 @@ NAME: hangedman_elemental_death_ray
TAGS: transparent patrolling
DEPTH: Depths
MONS: deep dwarf ; wand of cold | wand of frost w:5 . \
- staff of fire w:15 | quarterstaff ego:flaming w:14 | rod of destruction w:1 . \
+ staff of fire w:15 | quarterstaff ego:flaming w:14 | rod of fiery destruction w:1 . \
robe race:none ego:fire_resistance w:15 | \
robe race:none ego:cold_resistance w:14 | \
robe race:none ego:resistance w:1
MONS: deep dwarf ; wand of fire | wand of flame w:5 . \
- staff of cold w:15 | quarterstaff ego:freezing w:14 | rod of destruction w:1 . \
+ staff of cold w:15 | quarterstaff ego:freezing w:14 | rod of frigid destruction w:1 . \
robe race:none ego:fire_resistance w:15 | \
robe race:none ego:cold_resistance w:14 | \
robe race:none ego:resistance w:1
diff --git a/crawl-ref/source/dat/descript/items.txt b/crawl-ref/source/dat/descript/items.txt
index 43d584b..7d765de 100644
--- a/crawl-ref/source/dat/descript/items.txt
+++ b/crawl-ref/source/dat/descript/items.txt
@@ -1247,9 +1247,10 @@ rod of demonology
This rod contains spells of summoning, some of which can unleash demons unto
this unsuspecting world.
%%%%
-rod of destruction
+rod of bolts
-This rod contains a varied set of spells of mayhem and destruction.
+This rod can be evoked to release a random spells of mayhem and destruction
+from a small set, all able to damage multiple monsters in a line.
%%%%
rod of fiery destruction
diff --git a/crawl-ref/source/dat/descript/spells.txt b/crawl-ref/source/dat/descript/spells.txt
index 9ecfd9d..5a45163 100644
--- a/crawl-ref/source/dat/descript/spells.txt
+++ b/crawl-ref/source/dat/descript/spells.txt
@@ -973,6 +973,11 @@ Rakshasas are known to often weave illusions of themselves to fool their foes.
These illusions are partially real, and can even hit you or cast spells,
although it takes but a single hit to dispel them.
%%%%
+Random Bolt spell
+
+This spell creates at random, a bolt of venom, negative energy, fire, cold, or
+dispelling energy.
+%%%%
Rearrange the Pieces spell
This spell swaps positions of random pairs of nearby creatures.
diff --git a/crawl-ref/source/enum.h b/crawl-ref/source/enum.h
index ffd4d83..83c2020 100644
--- a/crawl-ref/source/enum.h
+++ b/crawl-ref/source/enum.h
@@ -3849,6 +3849,7 @@ enum spell_type
SPELL_REARRANGE_PIECES,
SPELL_MAJOR_DESTRUCTION,
SPELL_BLINK_ALLIES_AWAY,
+ SPELL_RANDOM_BOLT,
NUM_SPELLS
};
@@ -4011,6 +4012,7 @@ enum zap_type
ZAP_SEARING_RAY_II,
ZAP_SEARING_RAY_III,
ZAP_EXPLOSIVE_BOLT,
+ ZAP_QUICKSILVER_BOLT,
NUM_ZAPS
};
diff --git a/crawl-ref/source/goditem.cc b/crawl-ref/source/goditem.cc
index 07e837f..00a45d6 100644
--- a/crawl-ref/source/goditem.cc
+++ b/crawl-ref/source/goditem.cc
@@ -141,6 +141,10 @@ bool is_potentially_evil_item(const item_def& item)
if (item.sub_type == WAND_RANDOM_EFFECTS)
return true;
break;
+ case OBJ_RODS:
+ if (item.sub_type == ROD_BOLTS)
+ return true;
+ break;
default:
break;
}
@@ -210,6 +214,7 @@ bool is_evil_item(const item_def& item)
case OBJ_STAVES:
return item.sub_type == STAFF_DEATH;
case OBJ_BOOKS:
+ case OBJ_RODS:
return _is_bookrod_type(item, is_evil_spell);
case OBJ_MISCELLANY:
return item.sub_type == MISC_LANTERN_OF_SHADOWS;
@@ -420,6 +425,10 @@ static bool _is_potentially_fiery_item(const item_def& item)
if (item.sub_type == WAND_RANDOM_EFFECTS)
return true;
break;
+ case OBJ_RODS:
+ if (item.sub_type == ROD_BOLTS)
+ return true;
+ break;
default:
break;
}
diff --git a/crawl-ref/source/itemname.cc b/crawl-ref/source/itemname.cc
index 20db435..74c7235 100644
--- a/crawl-ref/source/itemname.cc
+++ b/crawl-ref/source/itemname.cc
@@ -1119,7 +1119,7 @@ static const char* rod_type_name(int type)
case ROD_FIERY_DESTRUCTION: return "fiery destruction";
case ROD_FRIGID_DESTRUCTION: return "frigid destruction";
- case ROD_DESTRUCTION: return "destruction";
+ case ROD_BOLTS: return "bolts";
default: return "bugginess";
}
diff --git a/crawl-ref/source/itemprop-enum.h b/crawl-ref/source/itemprop-enum.h
index 5af378c..b3e297d 100644
--- a/crawl-ref/source/itemprop-enum.h
+++ b/crawl-ref/source/itemprop-enum.h
@@ -427,7 +427,7 @@ enum rod_type
ROD_SWARM,
ROD_FIERY_DESTRUCTION,
ROD_FRIGID_DESTRUCTION,
- ROD_DESTRUCTION,
+ ROD_BOLTS,
ROD_INACCURACY,
ROD_WARDING,
ROD_DEMONOLOGY,
diff --git a/crawl-ref/source/mon-act.cc b/crawl-ref/source/mon-act.cc
index 491a74e..05b5bc6 100644
--- a/crawl-ref/source/mon-act.cc
+++ b/crawl-ref/source/mon-act.cc
@@ -1266,10 +1266,15 @@ static bool _handle_rod(monster *mons, bolt &beem)
// monster-castable rod spells!
switch (mzap)
{
- case SPELL_BOLT_OF_FIRE:
+ case SPELL_RANDOM_BOLT:
+ // don't use quicksilver, it does fixed damage from monsters
+ mzap = random_choose(SPELL_BOLT_OF_FIRE,
+ SPELL_BOLT_OF_COLD,
+ SPELL_VENOM_BOLT,
+ SPELL_BOLT_OF_DRAINING,
+ -1);
+ // yes, the fallthrough is deliberate
case SPELL_BOLT_OF_INACCURACY:
- case SPELL_IRON_SHOT:
- case SPELL_LIGHTNING_BOLT:
case SPELL_POISON_ARROW:
case SPELL_THROW_FLAME:
case SPELL_THROW_FROST:
@@ -1305,6 +1310,8 @@ static bool _handle_rod(monster *mons, bolt &beem)
_rod_fired_post(mons, rod, weapon, beem, rate, was_visible);
return true;
+ break;
+
default:
return false;
}
diff --git a/crawl-ref/source/spl-cast.cc b/crawl-ref/source/spl-cast.cc
index 63743b3..f0820c2 100644
--- a/crawl-ref/source/spl-cast.cc
+++ b/crawl-ref/source/spl-cast.cc
@@ -1156,6 +1156,7 @@ static targetter* _spell_targetter(spell_type spell, int pow, int range)
case SPELL_POLYMORPH:
case SPELL_DIG:
case SPELL_DISPEL_UNDEAD:
+ case SPELL_RANDOM_BOLT:
return new targetter_beam(&you, range, spell_to_zap(spell), pow, 0, 0);
default:
return 0;
diff --git a/crawl-ref/source/spl-data.h b/crawl-ref/source/spl-data.h
index bd200b0..0d6f4ef 100644
--- a/crawl-ref/source/spl-data.h
+++ b/crawl-ref/source/spl-data.h
@@ -2123,9 +2123,9 @@ struct spell_desc
{
SPELL_QUICKSILVER_BOLT, "Quicksilver Bolt",
SPTYP_CONJURATION,
- SPFLAG_DIR_OR_TARGET | SPFLAG_MONSTER,
+ SPFLAG_DIR_OR_TARGET,
5,
- 0,
+ 200,
8, 8,
0,
NULL,
@@ -3561,6 +3561,19 @@ struct spell_desc
},
{
+ SPELL_RANDOM_BOLT, "Random Bolt",
+ SPTYP_CONJURATION,
+ SPFLAG_DIR_OR_TARGET,
+ 5,
+ 200,
+ 6, 6,
+ 0,
+ NULL,
+ true,
+ false
+},
+
+{
SPELL_NO_SPELL, "nonexistent spell",
0,
SPFLAG_TESTING,
diff --git a/crawl-ref/source/spl-zap.cc b/crawl-ref/source/spl-zap.cc
index c7f02bf..caed63a 100644
--- a/crawl-ref/source/spl-zap.cc
+++ b/crawl-ref/source/spl-zap.cc
@@ -45,6 +45,13 @@ zap_type spell_to_zap(spell_type spell)
return ZAP_VENOM_BOLT;
case SPELL_BOLT_OF_DRAINING:
return ZAP_BOLT_OF_DRAINING;
+ case SPELL_RANDOM_BOLT:
+ return random_choose(ZAP_BOLT_OF_FIRE,
+ ZAP_BOLT_OF_COLD,
+ ZAP_VENOM_BOLT,
+ ZAP_BOLT_OF_DRAINING,
+ ZAP_QUICKSILVER_BOLT,
+ -1);
case SPELL_LEHUDIBS_CRYSTAL_SPEAR:
return ZAP_LEHUDIBS_CRYSTAL_SPEAR;
case SPELL_FIREBALL:
diff --git a/crawl-ref/source/zap-data.h b/crawl-ref/source/zap-data.h
index 334a182..88bfa21 100644
--- a/crawl-ref/source/zap-data.h
+++ b/crawl-ref/source/zap-data.h
@@ -1127,3 +1127,19 @@ struct zap_info
false,
0
},
+
+{
+ ZAP_QUICKSILVER_BOLT,
+ "bolt of dispelling energy",
+ 200,
+ new calcdice_calculator<6, 15, 2, 3>,
+ new tohit_calculator<10, 1, 25>,
+ BLUE,
+ false,
+ BEAM_MMISSILE,
+ DCHAR_FIRED_ZAP,
+ true,
+ true,
+ false,
+ 6
+},
--
1.8.1.4
|