summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/dat/descript/items.txt13
-rw-r--r--crawl-ref/source/dat/descript/spells.txt6
-rw-r--r--crawl-ref/source/enum.h16
-rw-r--r--crawl-ref/source/item_use.cc7
-rw-r--r--crawl-ref/source/itemname.cc4
-rw-r--r--crawl-ref/source/main.cc10
-rw-r--r--crawl-ref/source/newgame.cc40
-rw-r--r--crawl-ref/source/ng-restr.cc8
-rw-r--r--crawl-ref/source/spells2.cc215
-rw-r--r--crawl-ref/source/spells2.h1
-rw-r--r--crawl-ref/source/spl-book.cc38
-rw-r--r--crawl-ref/source/spl-cast.cc40
-rw-r--r--crawl-ref/source/spl-data.h106
-rw-r--r--crawl-ref/source/tags.h2
14 files changed, 128 insertions, 378 deletions
diff --git a/crawl-ref/source/dat/descript/items.txt b/crawl-ref/source/dat/descript/items.txt
index 4c528ae6d2..a84b67f797 100644
--- a/crawl-ref/source/dat/descript/items.txt
+++ b/crawl-ref/source/dat/descript/items.txt
@@ -347,17 +347,10 @@ book of wizardry
A book of magic spells.
%%%%
-book of elemental missiles
+book of brands
-This book contains spells relating to ammunition and forms of ranged combat.
-%%%%
-book of warped missiles
-
-This book contains spells relating to ammunition and forms of ranged combat.
-%%%%
-book of devastating missiles
-
-This book contains spells relating to ammunition and forms of ranged combat.
+This book contains magical spells related to the branding of weapons and
+launchers, as well as spells that are helpful in all forms of ranged combat.
%%%%
bottled efreet
diff --git a/crawl-ref/source/dat/descript/spells.txt b/crawl-ref/source/dat/descript/spells.txt
index 1543714508..e0ff86fd3b 100644
--- a/crawl-ref/source/dat/descript/spells.txt
+++ b/crawl-ref/source/dat/descript/spells.txt
@@ -236,7 +236,7 @@ This spell will make ammunition held by the caster extremely unstable. With prop
%%%%
Fire Brand
-This spell sets a weapon held by the caster ablaze. It will not affect weapons otherwise subject to special enchantments.
+This spell sets a weapon or launcher held by the caster ablaze. It will not affect weapons otherwise subject to special enchantments.
%%%%
Fire Storm
@@ -268,7 +268,7 @@ This spell freezes a creature. This may temporarily slow the metabolism of a col
%%%%
Freezing Aura
-This spell surrounds a weapon held by the caster with an aura of freezing cold. It will not affect weapons which are otherwise subject to special enchantments.
+This spell surrounds a weapon or launcher held by the caster with an aura of freezing cold. It will not affect weapons which are otherwise subject to special enchantments.
%%%%
Freezing Cloud
@@ -422,7 +422,7 @@ This spell hurls a magical arrow coated with the most vile and noxious toxin. No
%%%%
Poison Weapon
-This spell temporarily coats any sharp bladed weapon with poison. It will only work on weapons without an existing enchantment.
+This spell temporarily coats any weapon or launcher with poison. It will only work on weapons without an existing enchantment.
%%%%
Poisonous Cloud
diff --git a/crawl-ref/source/enum.h b/crawl-ref/source/enum.h
index 58487ff6a9..6c92000089 100644
--- a/crawl-ref/source/enum.h
+++ b/crawl-ref/source/enum.h
@@ -309,10 +309,8 @@ enum book_type
BOOK_PARTY_TRICKS,
BOOK_BEASTS,
BOOK_STALKING,
- BOOK_ELEMENTAL_MISSILES,
- BOOK_WARPED_MISSILES,
- BOOK_DEVASTATING_MISSILES,
- MAX_NORMAL_BOOK = BOOK_DEVASTATING_MISSILES,
+ BOOK_BRANDS,
+ MAX_NORMAL_BOOK = BOOK_BRANDS,
MIN_GOD_ONLY_BOOK,
BOOK_ANNIHILATIONS = MIN_GOD_ONLY_BOOK,
@@ -2813,7 +2811,6 @@ enum spell_type
SPELL_DETECT_CREATURES,
SPELL_CURE_POISON,
SPELL_CONTROL_TELEPORT,
- SPELL_POISON_AMMUNITION,
SPELL_POISON_WEAPON,
SPELL_RESIST_POISON,
SPELL_PROJECTED_NOISE,
@@ -2871,16 +2868,9 @@ enum spell_type
SPELL_PORTAL_PROJECTILE,
SPELL_SUMMON_UGLY_THING,
SPELL_PETRIFY,
- SPELL_FLAME_AMMUNITION,
- SPELL_FROST_AMMUNITION,
- SPELL_SHOCKING_AMMUNITION,
- SPELL_WARP_AMMUNITION,
- SPELL_EXPLODING_AMMUNITION,
- SPELL_REAPING_AMMUNITION,
- SPELL_RETURNING_AMMUNITION,
// Mostly monster-only spells after this point:
- SPELL_HELLFIRE_BURST = 175,
+ SPELL_HELLFIRE_BURST = 155,
SPELL_VAMPIRE_SUMMON,
SPELL_BRAIN_FEED,
SPELL_FAKE_RAKSHASA_SUMMON,
diff --git a/crawl-ref/source/item_use.cc b/crawl-ref/source/item_use.cc
index b755aa296e..85bd75d4db 100644
--- a/crawl-ref/source/item_use.cc
+++ b/crawl-ref/source/item_use.cc
@@ -4671,13 +4671,18 @@ static bool _vorpalise_weapon()
mprf("%s's heaviness feels very stable.", itname.c_str());
break;
+ case SPWPN_FLAME:
case SPWPN_FLAMING:
mprf("%s is engulfed in an explosion of flames!", itname.c_str());
immolation(10, IMMOLATION_SPELL, you.pos(), true, &you);
break;
+ case SPWPN_FROST:
case SPWPN_FREEZING:
- mprf("%s glows brilliantly blue for a moment.", itname.c_str());
+ if (get_weapon_brand(wpn) == SPWPN_FROST)
+ mprf("%s is covered with a thick layer of frost!", itname.c_str());
+ else
+ mprf("%s glows brilliantly blue for a moment.", itname.c_str());
cast_refrigeration(60);
break;
diff --git a/crawl-ref/source/itemname.cc b/crawl-ref/source/itemname.cc
index c8ce048107..d39e16abf2 100644
--- a/crawl-ref/source/itemname.cc
+++ b/crawl-ref/source/itemname.cc
@@ -875,9 +875,7 @@ static const char* book_type_name(int booktype)
case BOOK_CANTRIPS: return "Cantrips";
case BOOK_PARTY_TRICKS: return "Party Tricks";
case BOOK_STALKING: return "Stalking";
- case BOOK_ELEMENTAL_MISSILES: return "Elemental Missiles";
- case BOOK_WARPED_MISSILES: return "Warped Missiles";
- case BOOK_DEVASTATING_MISSILES: return "Devastating Missiles";
+ case BOOK_BRANDS: return "Brands";
case BOOK_RANDART_LEVEL: return "Fixed Level";
case BOOK_RANDART_THEME: return "Fixed Theme";
default: return "Bugginess";
diff --git a/crawl-ref/source/main.cc b/crawl-ref/source/main.cc
index 8b675c2770..1769997400 100644
--- a/crawl-ref/source/main.cc
+++ b/crawl-ref/source/main.cc
@@ -2310,12 +2310,16 @@ static void _decrement_durations()
else
msg += " feels lighter.";
break;
+ case SPWPN_FLAME:
case SPWPN_FLAMING:
msg += " goes out.";
break;
case SPWPN_FREEZING:
msg += " stops glowing.";
break;
+ case SPWPN_FROST:
+ msg += "'s frost melts away.";
+ break;
case SPWPN_VENOM:
msg += " stops dripping with poison.";
break;
@@ -4629,9 +4633,9 @@ static void _compile_time_asserts()
COMPILE_CHECK(SK_UNARMED_COMBAT == 18 , c1);
COMPILE_CHECK(SK_EVOCATIONS == 38 , c2);
COMPILE_CHECK(SP_VAMPIRE == 30 , c3);
- COMPILE_CHECK(SPELL_DEBUGGING_RAY == 103 , c4);
- COMPILE_CHECK(SPELL_RETURNING_AMMUNITION == 162 , c5);
- COMPILE_CHECK(NUM_SPELLS == 218 , c6);
+ COMPILE_CHECK(SPELL_DEBUGGING_RAY == 102 , c4);
+ COMPILE_CHECK(SPELL_PETRIFY == 154 , c5);
+ COMPILE_CHECK(NUM_SPELLS == 198 , c6);
//jmf: NEW ASSERTS: we ought to do a *lot* of these
COMPILE_CHECK(NUM_SPECIES < SP_UNKNOWN , c7);
diff --git a/crawl-ref/source/newgame.cc b/crawl-ref/source/newgame.cc
index 2abb8108d0..cba6229fa1 100644
--- a/crawl-ref/source/newgame.cc
+++ b/crawl-ref/source/newgame.cc
@@ -4268,21 +4268,6 @@ bool _give_items_skills()
switch (you.species)
{
- case SP_SLUDGE_ELF:
- case SP_HILL_ORC:
- case SP_MERFOLK:
- _newgame_make_item(1, EQ_NONE, OBJ_MISSILES, MI_JAVELIN, -1, 6);
- _newgame_make_item(2, EQ_NONE, OBJ_MISSILES, MI_THROWING_NET, -1,
- 2);
- break;
-
- case SP_TROLL:
- case SP_OGRE:
- _newgame_make_item(1, EQ_NONE, OBJ_MISSILES, MI_LARGE_ROCK, -1, 5);
- _newgame_make_item(2, EQ_NONE, OBJ_MISSILES, MI_THROWING_NET, -1,
- 3);
- break;
-
case SP_HALFLING:
case SP_KOBOLD:
_newgame_make_item(1, EQ_NONE, OBJ_WEAPONS, WPN_SLING);
@@ -4311,26 +4296,13 @@ bool _give_items_skills()
break;
}
- if (is_range_weapon(you.inv[1]))
- you.skills[range_skill(you.inv[1])] = 3;
- else
- you.skills[SK_THROWING] = 3;
-
- if (!_choose_book(3, BOOK_ELEMENTAL_MISSILES, 2))
- return (false);
-
- you.skills[SK_DODGING] = 2;
- you.skills[SK_SPELLCASTING] = 2;
+ // And give them a book
+ _newgame_make_item(3, EQ_NONE, OBJ_BOOKS, BOOK_BRANDS);
- switch (you.inv[3].sub_type)
- {
- case BOOK_ELEMENTAL_MISSILES:
- you.skills[SK_ENCHANTMENTS] = 3;
- break;
- case BOOK_WARPED_MISSILES:
- you.skills[SK_TRANSLOCATIONS] = 3;
- break;
- }
+ you.skills[range_skill(you.inv[1])] = 2;
+ you.skills[SK_DODGING] = 1;
+ you.skills[SK_SPELLCASTING] = 2;
+ you.skills[SK_ENCHANTMENTS] = 2;
break;
case JOB_WIZARD:
diff --git a/crawl-ref/source/ng-restr.cc b/crawl-ref/source/ng-restr.cc
index 5ed1caeb48..79ca0ea36d 100644
--- a/crawl-ref/source/ng-restr.cc
+++ b/crawl-ref/source/ng-restr.cc
@@ -380,8 +380,6 @@ char_choice_restriction class_allowed(species_type speci,
case SP_HALFLING:
case SP_KOBOLD:
case SP_CENTAUR:
- case SP_OGRE:
- case SP_TROLL:
case SP_MINOTAUR:
case SP_KENKU:
case SP_RED_DRACONIAN:
@@ -390,6 +388,12 @@ char_choice_restriction class_allowed(species_type speci,
case SP_GHOUL:
case SP_VAMPIRE:
return (CC_RESTRICTED);
+ case SP_OGRE:
+ case SP_TROLL:
+ // XXX: Temp at the minute. They have rubbbish apt for launchers
+ // and there's no point giving them large rocks and throwings nets
+ // and then a book with spells that are useless for them. {due}
+ return (CC_BANNED);
default:
return (CC_UNRESTRICTED);
}
diff --git a/crawl-ref/source/spells2.cc b/crawl-ref/source/spells2.cc
index d765d4db5f..c83b90db83 100644
--- a/crawl-ref/source/spells2.cc
+++ b/crawl-ref/source/spells2.cc
@@ -33,6 +33,7 @@
#include "itemname.h"
#include "items.h"
#include "it_use2.h"
+#include "makeitem.h"
#include "message.h"
#include "misc.h"
#include "mon-behv.h"
@@ -234,6 +235,54 @@ void corpse_rot()
// Should make zombies decay into skeletons?
}
+// We need to know what brands equate with what missile brands to know if
+// we should disallow temporary branding or not.
+special_missile_type _convert_to_missile(brand_type which_brand)
+{
+ switch (which_brand)
+ {
+ case SPWPN_NORMAL: return SPMSL_NORMAL;
+ case SPWPN_FLAME: // deliberate fall through
+ case SPWPN_FLAMING: return SPMSL_FLAME;
+ case SPWPN_FROST: // deliberate fall through
+ case SPWPN_FREEZING: return SPMSL_FROST;
+ case SPWPN_VENOM: return SPMSL_POISONED;
+ case SPWPN_CHAOS: return SPMSL_CHAOS;
+ case SPWPN_RETURNING: return SPMSL_RETURNING;
+ default: return SPMSL_NORMAL; // there are no equivalents for the rest
+ // of the ammo brands.
+ }
+}
+
+// Some launchers need to convert different brands.
+brand_type _convert_to_launcher(brand_type which_brand)
+{
+ switch (which_brand)
+ {
+ case SPWPN_FREEZING: return SPWPN_FROST; case SPWPN_FLAMING: return SPWPN_FLAME;
+ default: return (which_brand);
+ }
+}
+
+bool _ok_for_launchers(brand_type which_brand)
+{
+ switch (which_brand)
+ {
+ case SPWPN_NORMAL:
+ case SPWPN_FREEZING:
+ case SPWPN_FROST:
+ case SPWPN_FLAMING:
+ case SPWPN_FLAME:
+ case SPWPN_VENOM:
+ //case SPWPN_PAIN: -- no pain missile type yat
+ case SPWPN_RETURNING:
+ case SPWPN_CHAOS:
+ return (true);
+ default:
+ return (false);
+ }
+}
+
bool brand_weapon(brand_type which_brand, int power)
{
if (!you.weapon())
@@ -242,8 +291,12 @@ bool brand_weapon(brand_type which_brand, int power)
const bool temp_brand = you.duration[DUR_WEAPON_BRAND];
item_def& weapon = *you.weapon();
- // Can't brand non-weapons.
- if (weapon.base_type != OBJ_WEAPONS || is_range_weapon(weapon))
+ // Can't brand non-weapons, but can brand some launchers (see later).
+ if (weapon.base_type != OBJ_WEAPONS)
+ return (false);
+
+ // But not blowguns.
+ if (weapon.sub_type == WPN_BLOWGUN)
return (false);
// Can't brand artefacts.
@@ -258,6 +311,29 @@ bool brand_weapon(brand_type which_brand, int power)
if (temp_brand && (get_weapon_brand(weapon) != which_brand))
return (false);
+ // Can only brand launchers with sensical brands
+ if (is_range_weapon(weapon))
+ {
+ // If the new missile type wouldn't match the launcher, say no
+ missile_type missile = fires_ammo_type(weapon);
+
+ // XXX: To deal with the fact that is_missile_brand_ok will be unhappy
+ // if we attempt to brand stones, tell it we're using sling bullets instead.
+ if (weapon.sub_type == WPN_SLING)
+ missile = MI_SLING_BULLET;
+
+ if (!is_missile_brand_ok(missile, _convert_to_missile(which_brand)))
+ return (false);
+
+ // If the brand isn't appropriate for that launcher, also say no.
+ if (!_ok_for_launchers(which_brand))
+ return (false);
+
+ // Otherwise, convert to the correct brand type, most specifically (but
+ // not necessarily only) flaming -> flame, freezing -> frost.
+ which_brand = _convert_to_launcher(which_brand);
+ }
+
std::string msg = weapon.name(DESC_CAP_YOUR);
const int wpn_type = get_vorpal_type(weapon);
@@ -265,11 +341,17 @@ bool brand_weapon(brand_type which_brand, int power)
int duration_affected = 0;
switch (which_brand)
{
+ case SPWPN_FLAME:
case SPWPN_FLAMING:
msg += " bursts into flame!";
duration_affected = 7;
break;
+ case SPWPN_FROST:
+ msg += " frosts over!";
+ duration_affected = 7;
+ break;
+
case SPWPN_FREEZING:
msg += " glows blue.";
duration_affected = 7;
@@ -360,135 +442,6 @@ bool brand_weapon(brand_type which_brand, int power)
return (true);
}
-bool brand_ammo(special_missile_type which_type)
-{
- const int ammo = you.equip[EQ_WEAPON];
-
- if (ammo == -1
- || you.inv[ammo].base_type != OBJ_MISSILES
- || get_ammo_brand(you.inv[ammo]) != SPMSL_NORMAL
- || you.inv[ammo].sub_type == MI_THROWING_NET)
- {
- return (false);
- }
-
- bool retval = false;
- preserve_quiver_slots q;
- const char *old_desc = you.inv[ammo].name(DESC_CAP_YOUR).c_str();
-
- switch (which_type)
- {
- case SPMSL_POISONED:
- if (set_item_ego_type(you.inv[ammo], OBJ_MISSILES, SPMSL_POISONED))
- {
- mprf("%s %s covered in a thin film of poison.", old_desc,
- (you.inv[ammo].quantity == 1) ? "is" : "are");
-
- if (ammo == you.equip[EQ_WEAPON])
- you.wield_change = true;
-
- retval = true;
- }
- break;
-
- case SPMSL_FLAME:
- if (set_item_ego_type(you.inv[ammo], OBJ_MISSILES, SPMSL_FLAME))
- {
- mprf("%s %s warm to the touch.", old_desc,
- (you.inv[ammo].quantity == 1) ? "feels" : "feel");
-
- if (ammo == you.equip[EQ_WEAPON])
- you.wield_change = true;
-
- retval = true;
- }
- break;
-
- case SPMSL_FROST:
- if (set_item_ego_type(you.inv[ammo], OBJ_MISSILES, SPMSL_FROST))
- {
- mprf("%s %s cool to the touch.", old_desc,
- (you.inv[ammo].quantity == 1) ? "feels" : "feel");
-
- if (ammo == you.equip[EQ_WEAPON])
- you.wield_change = true;
-
- retval = true;
- }
- break;
-
- case SPMSL_DISPERSAL:
- if (set_item_ego_type(you.inv[ammo], OBJ_MISSILES, SPMSL_DISPERSAL))
- {
- mprf("%s %s rather jumpy.", old_desc,
- (you.inv[ammo].quantity == 1) ? "seems" : "seem");
-
- if (ammo == you.equip[EQ_WEAPON])
- you.wield_change = true;
-
- retval = true;
- }
- break;
-
- case SPMSL_ELECTRIC:
- if (set_item_ego_type(you.inv[ammo], OBJ_MISSILES, SPMSL_ELECTRIC))
- {
- mprf("%s %s you!", old_desc,
- (you.inv[ammo].quantity == 1) ? "shocks" : "shock");
-
- if (ammo == you.equip[EQ_WEAPON])
- you.wield_change = true;
-
- retval = true;
- }
- break;
-
- case SPMSL_EXPLODING:
- if (set_item_ego_type(you.inv[ammo], OBJ_MISSILES, SPMSL_EXPLODING))
- {
- mprf("%s %s unstable!", old_desc,
- (you.inv[ammo].quantity == 1) ? "seems" : "seem");
-
- if (ammo == you.equip[EQ_WEAPON])
- you.wield_change = true;
-
- retval = true;
- }
- break;
-
- case SPMSL_REAPING:
- if (set_item_ego_type(you.inv[ammo], OBJ_MISSILES, SPMSL_REAPING))
- {
- mprf("%s %s briefly obscured by shadows.", old_desc,
- (you.inv[ammo].quantity == 1) ? "is" : "are");
-
- if (ammo == you.equip[EQ_WEAPON])
- you.wield_change = true;
-
- retval = true;
- }
- break;
-
- case SPMSL_RETURNING:
- if (set_item_ego_type(you.inv[ammo], OBJ_MISSILES, SPMSL_RETURNING))
- {
- mprf("%s %s in your hand.", old_desc,
- (you.inv[ammo].quantity == 1) ? "wiggles" : "wiggle");
-
- if (ammo == you.equip[EQ_WEAPON])
- you.wield_change = true;
-
- retval = true;
- }
- break;
-
- default:
- break;
- }
-
- return (retval);
-}
-
// Restore the stat in which_stat by the amount in stat_gain, displaying
// a message if suppress_msg is false, and doing so in the recovery
// channel if recovery is true. If stat_gain is 0, restore the stat
diff --git a/crawl-ref/source/spells2.h b/crawl-ref/source/spells2.h
index 83ba485321..a74b499899 100644
--- a/crawl-ref/source/spells2.h
+++ b/crawl-ref/source/spells2.h
@@ -13,7 +13,6 @@
class dist;
bool brand_weapon(brand_type which_brand, int power);
-bool brand_ammo(special_missile_type which_brand);
bool burn_freeze(int pow, beam_type flavour, monsters *monster);
void corpse_rot();
diff --git a/crawl-ref/source/spl-book.cc b/crawl-ref/source/spl-book.cc
index 9509f8cba0..2c6618962d 100644
--- a/crawl-ref/source/spl-book.cc
+++ b/crawl-ref/source/spl-book.cc
@@ -342,7 +342,7 @@ static spell_type spellbook_template_array[][SPELLBOOK_SIZE] =
// Book of Envenomations
{SPELL_SPIDER_FORM,
SPELL_SUMMON_SCORPIONS,
- SPELL_POISON_AMMUNITION,
+ SPELL_POISON_WEAPON,
SPELL_RESIST_POISON,
SPELL_OLGREBS_TOXIC_RADIANCE,
SPELL_POISONOUS_CLOUD,
@@ -482,36 +482,14 @@ static spell_type spellbook_template_array[][SPELLBOOK_SIZE] =
SPELL_NO_SPELL,
},
- // Book of Elemental Missiles
+ // Book of Brands
{SPELL_CORONA,
SPELL_SWIFTNESS,
- SPELL_REPEL_MISSILES,
- SPELL_FLAME_AMMUNITION,
- SPELL_FROST_AMMUNITION,
- SPELL_POISON_AMMUNITION,
- SPELL_NO_SPELL,
- SPELL_NO_SPELL,
- },
-
- // Book of Warped Missiles
- {SPELL_APPORTATION,
- SPELL_PORTAL_PROJECTILE,
- SPELL_REPEL_MISSILES,
- SPELL_BLINK,
- SPELL_RETURNING_AMMUNITION,
- SPELL_WARP_AMMUNITION,
- SPELL_NO_SPELL,
+ SPELL_CAUSE_FEAR,
+ SPELL_FIRE_BRAND,
+ SPELL_FREEZING_AURA,
+ SPELL_POISON_WEAPON,
SPELL_NO_SPELL,
- },
-
- // Book of Devastating Missiles
- {SPELL_POISON_AMMUNITION,
- SPELL_WARP_AMMUNITION,
- SPELL_SHOCKING_AMMUNITION,
- SPELL_EXPLODING_AMMUNITION,
- SPELL_HASTE,
- SPELL_DEFLECT_MISSILES,
- SPELL_REAPING_AMMUNITION,
SPELL_NO_SPELL,
},
@@ -935,8 +913,7 @@ int book_rarity(unsigned char which_book)
case BOOK_YOUNG_POISONERS:
case BOOK_STALKING: //jmf: added 24jun2000
case BOOK_WAR_CHANTS:
- case BOOK_ELEMENTAL_MISSILES:
- case BOOK_WARPED_MISSILES:
+ case BOOK_BRANDS:
return 5;
case BOOK_CLOUDS:
@@ -957,7 +934,6 @@ int book_rarity(unsigned char which_book)
case BOOK_UNLIFE:
case BOOK_CONTROL:
case BOOK_SPATIAL_TRANSLOCATIONS:
- case BOOK_DEVASTATING_MISSILES:
return 10;
case BOOK_TEMPESTS:
diff --git a/crawl-ref/source/spl-cast.cc b/crawl-ref/source/spl-cast.cc
index 10c4e7cea9..93414f848f 100644
--- a/crawl-ref/source/spl-cast.cc
+++ b/crawl-ref/source/spl-cast.cc
@@ -1954,46 +1954,6 @@ spret_type your_spells(spell_type spell, int powc, bool allow_fail)
canned_msg(MSG_SPELL_FIZZLES);
break;
- case SPELL_POISON_AMMUNITION:
- if (!brand_ammo(SPMSL_POISONED))
- canned_msg(MSG_SPELL_FIZZLES);
- break;
-
- case SPELL_FLAME_AMMUNITION:
- if (!brand_ammo(SPMSL_FLAME))
- canned_msg(MSG_SPELL_FIZZLES);
- break;
-
- case SPELL_FROST_AMMUNITION:
- if (!brand_ammo(SPMSL_FROST))
- canned_msg(MSG_SPELL_FIZZLES);
- break;
-
- case SPELL_WARP_AMMUNITION:
- if (!brand_ammo(SPMSL_DISPERSAL))
- canned_msg(MSG_SPELL_FIZZLES);
- break;
-
- case SPELL_SHOCKING_AMMUNITION:
- if (!brand_ammo(SPMSL_ELECTRIC))
- canned_msg(MSG_SPELL_FIZZLES);
- break;
-
- case SPELL_EXPLODING_AMMUNITION:
- if (!brand_ammo(SPMSL_EXPLODING))
- canned_msg(MSG_SPELL_FIZZLES);
- break;
-
- case SPELL_REAPING_AMMUNITION:
- if (!brand_ammo(SPMSL_REAPING))
- canned_msg(MSG_SPELL_FIZZLES);
- break;
-
- case SPELL_RETURNING_AMMUNITION:
- if (!brand_ammo(SPMSL_RETURNING))
- canned_msg(MSG_SPELL_FIZZLES);
- break;
-
// Transformations.
case SPELL_BLADE_HANDS:
if (!transform(powc, TRAN_BLADE_HANDS))
diff --git a/crawl-ref/source/spl-data.h b/crawl-ref/source/spl-data.h
index 9de226af2e..edb31c2151 100644
--- a/crawl-ref/source/spl-data.h
+++ b/crawl-ref/source/spl-data.h
@@ -1287,23 +1287,10 @@
},
{
- SPELL_POISON_AMMUNITION, "Poison Ammunition",
- SPTYP_ENCHANTMENT | SPTYP_POISON,
- SPFLAG_HELPFUL | SPFLAG_BATTLE,
- 4,
- 0,
- -1, -1,
- 0,
- NULL,
- false,
- true
-},
-
-{
SPELL_POISON_WEAPON, "Poison Weapon",
SPTYP_ENCHANTMENT | SPTYP_POISON,
SPFLAG_HELPFUL | SPFLAG_BATTLE,
- 2,
+ 3,
0,
-1, -1,
0,
@@ -2499,97 +2486,6 @@
},
{
- SPELL_FLAME_AMMUNITION, "Flame Ammunition",
- SPTYP_ENCHANTMENT | SPTYP_FIRE,
- SPFLAG_HELPFUL | SPFLAG_BATTLE,
- 3,
- 0,
- -1,-1,
- 0,
- NULL,
- false,
- true
-},
-
-{
- SPELL_FROST_AMMUNITION, "Frost Ammunition",
- SPTYP_ENCHANTMENT | SPTYP_ICE,
- SPFLAG_HELPFUL | SPFLAG_BATTLE,
- 3,
- 0,
- -1,-1,
- 0,
- NULL,
- false,
- true
-},
-
-{
- SPELL_SHOCKING_AMMUNITION, "Shocking Ammunition",
- SPTYP_ENCHANTMENT | SPTYP_AIR,
- SPFLAG_HELPFUL | SPFLAG_BATTLE,
- 5,
- 0,
- -1,-1,
- 0,
- NULL,
- false,
- true
-},
-
-{
- SPELL_EXPLODING_AMMUNITION, "Exploding Ammunition",
- SPTYP_ENCHANTMENT | SPTYP_FIRE | SPTYP_AIR,
- SPFLAG_HELPFUL | SPFLAG_BATTLE,
- 5,
- 0,
- -1,-1,
- 0,
- NULL,
- false,
- true
-},
-
-{
- SPELL_WARP_AMMUNITION, "Warp Ammunition",
- SPTYP_ENCHANTMENT | SPTYP_TRANSLOCATION,
- SPFLAG_HELPFUL | SPFLAG_BATTLE,
- 5,
- 0,
- -1,-1,
- 0,
- NULL,
- false,
- true
-},
-
-{
- SPELL_REAPING_AMMUNITION, "Reaping Ammunition",
- SPTYP_ENCHANTMENT | SPTYP_NECROMANCY,
- SPFLAG_HELPFUL | SPFLAG_BATTLE,
- 7,
- 0,
- -1,-1,
- 0,
- NULL,
- false,
- true
-},
-
-{
- SPELL_RETURNING_AMMUNITION, "Returning Ammunition",
- SPTYP_ENCHANTMENT | SPTYP_TRANSLOCATION,
- SPFLAG_HELPFUL | SPFLAG_BATTLE,
- 3,
- 0,
- -1,-1,
- 0,
- NULL,
- false,
- true
-},
-
-{
SPELL_FAKE_MARA_SUMMON, "Mara Summon",
SPTYP_SUMMONING,
SPFLAG_MONSTER,
diff --git a/crawl-ref/source/tags.h b/crawl-ref/source/tags.h
index 915c6d1f80..9660a40b54 100644
--- a/crawl-ref/source/tags.h
+++ b/crawl-ref/source/tags.h
@@ -40,7 +40,7 @@ enum tag_file_type // file types supported by tag system
enum tag_major_version
{
TAG_MAJOR_START = 5,
- TAG_MAJOR_VERSION = 13
+ TAG_MAJOR_VERSION = 14
};
// Minor version will be reset to zero when major version changes.