summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/describe.cc11
-rw-r--r--crawl-ref/source/effects.cc6
-rw-r--r--crawl-ref/source/fight.cc30
-rw-r--r--crawl-ref/source/ghost.cc8
-rw-r--r--crawl-ref/source/item_use.cc16
-rw-r--r--crawl-ref/source/itemname.cc2
-rw-r--r--crawl-ref/source/itemprop.cc3
-rw-r--r--crawl-ref/source/itemprop.h6
-rw-r--r--crawl-ref/source/makeitem.cc18
-rw-r--r--crawl-ref/source/mon-util.cc5
-rw-r--r--crawl-ref/source/randart.cc15
-rw-r--r--crawl-ref/source/shopping.cc2
-rw-r--r--crawl-ref/source/unrand.h2
13 files changed, 52 insertions, 72 deletions
diff --git a/crawl-ref/source/describe.cc b/crawl-ref/source/describe.cc
index 28f38c0574..72382883b4 100644
--- a/crawl-ref/source/describe.cc
+++ b/crawl-ref/source/describe.cc
@@ -792,6 +792,10 @@ static std::string describe_weapon( const item_def &item, bool verbose)
description += "It is especially effective against "
"all of orcish descent. ";
break;
+ case SPWPN_DRAGON_SLAYING:
+ description += "It is especially effective against "
+ "all kinds of dragons. ";
+ break;
case SPWPN_VENOM:
if (is_range_weapon(item))
description += "It poisons the unbranded ammo it fires. ";
@@ -844,11 +848,6 @@ static std::string describe_weapon( const item_def &item, bool verbose)
"but heals its wielder somewhat when "
"it strikes a living foe. ";
break;
- case SPWPN_DISRUPTION:
- description += "It is a weapon blessed by Zin, "
- "and can inflict up to fourfold damage "
- "when used against the undead. ";
- break;
case SPWPN_PAIN:
description += "In the hands of one skilled in "
"necromantic magic it inflicts "
@@ -856,7 +855,7 @@ static std::string describe_weapon( const item_def &item, bool verbose)
break;
case SPWPN_DISTORTION:
description += "It warps and distorts space around it. "
- "Merely wielding or unwielding it can be highly risky. ";
+ "Unwielding it can cause banishment or high damage. ";
break;
case SPWPN_REACHING:
description += "It can be evoked to extend its reach. ";
diff --git a/crawl-ref/source/effects.cc b/crawl-ref/source/effects.cc
index c27afc653b..fba2ff8e6f 100644
--- a/crawl-ref/source/effects.cc
+++ b/crawl-ref/source/effects.cc
@@ -1511,8 +1511,7 @@ bool acquirement(object_class_type class_wanted, int agent,
case SP_VAMPIRE:
{
int brand = get_weapon_brand( thing );
- if (brand == SPWPN_HOLY_WRATH
- || brand == SPWPN_DISRUPTION)
+ if (brand == SPWPN_HOLY_WRATH)
{
if (!is_random_artefact( thing ))
{
@@ -1522,8 +1521,7 @@ bool acquirement(object_class_type class_wanted, int agent,
else
{
// keep resetting seed until it's good:
- for (; brand == SPWPN_HOLY_WRATH
- || brand == SPWPN_DISRUPTION;
+ for (; brand == SPWPN_HOLY_WRATH;
brand = get_weapon_brand(thing))
{
make_item_randart( thing );
diff --git a/crawl-ref/source/fight.cc b/crawl-ref/source/fight.cc
index 0cfde5f4db..48dd950bff 100644
--- a/crawl-ref/source/fight.cc
+++ b/crawl-ref/source/fight.cc
@@ -1908,6 +1908,21 @@ bool melee_attack::apply_damage_brand()
}
break;
+ case SPWPN_DRAGON_SLAYING:
+ if (mons_genus(defender->mons_species()) == MONS_DRAGON
+ || mons_genus(defender->mons_species()) == MONS_DRACONIAN)
+ {
+ special_damage = 1 + random2(damage_done);
+ if (defender_visible)
+ special_damage_message =
+ make_stringf(
+ "%s %s%s",
+ defender->name(DESC_CAP_THE).c_str(),
+ defender->conj_verb("convulse").c_str(),
+ special_attack_punctuation().c_str());
+ }
+ break;
+
case SPWPN_VENOM:
case SPWPN_STAFF_OF_OLGREB:
if (!one_chance_in(4))
@@ -2031,21 +2046,6 @@ bool melee_attack::apply_damage_brand()
}
break;
- case SPWPN_DISRUPTION:
- if (defender->holiness() == MH_UNDEAD && !one_chance_in(3))
- {
- if (defender_visible)
- special_damage_message =
- defender->atype() == ACT_MONSTER?
- make_stringf("%s %s.",
- defender->name(DESC_CAP_THE).c_str(),
- defender->conj_verb("shudder").c_str())
- : ("You are blasted by holy energy!");
-
- special_damage += random2avg((1 + (damage_done * 3)), 3);
- }
- break;
-
case SPWPN_PAIN:
if (defender->res_negative_energy() <= 0
&& random2(8) <= attacker->skill(SK_NECROMANCY))
diff --git a/crawl-ref/source/ghost.cc b/crawl-ref/source/ghost.cc
index ed2cf8fe19..2ddde666ff 100644
--- a/crawl-ref/source/ghost.cc
+++ b/crawl-ref/source/ghost.cc
@@ -161,11 +161,11 @@ void ghost_demon::init_random_demon()
} while (values[ GVAL_BRAND ] == SPWPN_HOLY_WRATH
|| (values[ GVAL_BRAND ] == SPWPN_ORC_SLAYING
&& you.mons_species() != MONS_ORC)
+ || (values[ GVAL_BRAND ] == SPWPN_DRAGON_SLAYING
+ && you.mons_species() != MONS_DRACONIAN)
|| values[ GVAL_BRAND ] == SPWPN_PROTECTION
|| values[ GVAL_BRAND ] == SPWPN_FLAME
- || values[ GVAL_BRAND ] == SPWPN_FROST
- || (values[ GVAL_BRAND ] == SPWPN_DISRUPTION
- && you.holiness() != MH_UNDEAD));
+ || values[ GVAL_BRAND ] == SPWPN_FROST);
}
// is demon a spellcaster?
@@ -175,7 +175,7 @@ void ghost_demon::init_random_demon()
// does demon fly? (0 = no, 1 = fly, 2 = levitate)
values[GVAL_DEMONLORD_FLY] = (one_chance_in(3) ? 0 :
- one_chance_in(5) ? 2 : 1);
+ one_chance_in(5) ? 2 : 1);
// vacant <ghost best skill level>:
values[GVAL_DEMONLORD_UNUSED] = 0;
diff --git a/crawl-ref/source/item_use.cc b/crawl-ref/source/item_use.cc
index 509aacc3aa..c3a546b013 100644
--- a/crawl-ref/source/item_use.cc
+++ b/crawl-ref/source/item_use.cc
@@ -164,7 +164,6 @@ bool can_wield(const item_def *weapon, bool say_reason,
if ((you.is_undead || you.species == SP_DEMONSPAWN)
&& (!is_fixed_artefact( *weapon )
&& (weap_brand == SPWPN_HOLY_WRATH
- || weap_brand == SPWPN_DISRUPTION
|| (weapon->base_type == OBJ_WEAPONS
&& weapon->sub_type == WPN_BLESSED_BLADE))))
{
@@ -513,6 +512,12 @@ void wield_effects(int item_wield_2, bool showMsgs)
: "You feel a sudden desire to kill orcs!");
break;
+ case SPWPN_DRAGON_SLAYING:
+ mpr(player_genus(GENPC_DRACONIAN)
+ ? "You feel a sudden desire to commit suicide."
+ : "You feel a sudden desire to slay dragons!");
+ break;
+
case SPWPN_VENOM:
mpr("It begins to drip with poison!");
break;
@@ -544,10 +549,6 @@ void wield_effects(int item_wield_2, bool showMsgs)
mpr("You feel strangely empty.");
break;
- case SPWPN_DISRUPTION:
- mpr("You sense a holy aura.");
- break;
-
case SPWPN_RETURNING:
mpr("It wiggles slightly.");
break;
@@ -616,10 +617,7 @@ void wield_effects(int item_wield_2, bool showMsgs)
case SPWPN_DISTORTION:
if (!was_known)
- xom_is_stimulated(128);
- miscast_effect( SPTYP_TRANSLOCATION, 9, 90, 100,
- was_known ? "distortion wield" :
- "unknowing distortion wield");
+ xom_is_stimulated(32);
break;
case SPWPN_SINGING_SWORD:
diff --git a/crawl-ref/source/itemname.cc b/crawl-ref/source/itemname.cc
index c03793dd2b..b018483cb6 100644
--- a/crawl-ref/source/itemname.cc
+++ b/crawl-ref/source/itemname.cc
@@ -318,11 +318,11 @@ static const char* weapon_brand_name(const item_def& item, bool terse)
case SPWPN_HOLY_WRATH: return ((terse) ? " (holy)" : " of holy wrath");
case SPWPN_ELECTROCUTION: return ((terse) ? " (elec)":" of electrocution");
case SPWPN_ORC_SLAYING: return ((terse) ? " (slay orc)":" of orc slaying");
+ case SPWPN_DRAGON_SLAYING: return ((terse) ? " (slay drac)":" of dragon slaying");
case SPWPN_VENOM: return ((terse) ? " (venom)" : " of venom");
case SPWPN_PROTECTION: return ((terse) ? " (protect)" : " of protection");
case SPWPN_DRAINING: return ((terse) ? " (drain)" : " of draining");
case SPWPN_SPEED: return ((terse) ? " (speed)" : " of speed");
- case SPWPN_DISRUPTION: return ((terse) ? " (disrupt)" : " of disruption");
case SPWPN_PAIN: return ((terse) ? " (pain)" : " of pain");
case SPWPN_DISTORTION: return ((terse) ? " (distort)" : " of distortion");
case SPWPN_REACHING: return ((terse) ? " (reach)" : " of reaching");
diff --git a/crawl-ref/source/itemprop.cc b/crawl-ref/source/itemprop.cc
index f4959919b7..f7c386ae1f 100644
--- a/crawl-ref/source/itemprop.cc
+++ b/crawl-ref/source/itemprop.cc
@@ -1732,8 +1732,7 @@ bool check_weapon_shape( const item_def &item, bool quiet, bool check_id )
if ((!check_id || item_type_known( item ))
&& ((item.base_type == OBJ_WEAPONS
&& item.sub_type == WPN_BLESSED_BLADE)
- || brand == SPWPN_HOLY_WRATH
- || brand == SPWPN_DISRUPTION)
+ || brand == SPWPN_HOLY_WRATH)
&& (you.is_undead || you.species == SP_DEMONSPAWN))
{
if (!quiet)
diff --git a/crawl-ref/source/itemprop.h b/crawl-ref/source/itemprop.h
index 15982914bd..70057a19d8 100644
--- a/crawl-ref/source/itemprop.h
+++ b/crawl-ref/source/itemprop.h
@@ -84,15 +84,15 @@ enum brand_type // equivalent to (you.inv[].special or mitm[].special) % 30
SPWPN_HOLY_WRATH,
SPWPN_ELECTROCUTION,
SPWPN_ORC_SLAYING, // 5
+ SPWPN_DRAGON_SLAYING,
SPWPN_VENOM,
SPWPN_PROTECTION,
SPWPN_DRAINING,
- SPWPN_SPEED,
- SPWPN_VORPAL, // 10
+ SPWPN_SPEED, // 10
+ SPWPN_VORPAL,
SPWPN_FLAME,
SPWPN_FROST,
SPWPN_VAMPIRICISM,
- SPWPN_DISRUPTION,
SPWPN_PAIN, // 15
SPWPN_DISTORTION,
SPWPN_REACHING, // 17
diff --git a/crawl-ref/source/makeitem.cc b/crawl-ref/source/makeitem.cc
index 71d471dfee..d6031633d5 100644
--- a/crawl-ref/source/makeitem.cc
+++ b/crawl-ref/source/makeitem.cc
@@ -1195,12 +1195,6 @@ static brand_type determine_weapon_brand(const item_def& item, int item_level)
// **** intentional fall through here ****
case WPN_MACE:
case WPN_GREAT_MACE:
- if ((item.sub_type == WPN_MACE || item.sub_type == WPN_GREAT_MACE)
- && one_chance_in(4))
- {
- rc = SPWPN_DISRUPTION;
- }
- // **** intentional fall through here ****
case WPN_FLAIL:
case WPN_SPIKED_FLAIL:
case WPN_DIRE_FLAIL:
@@ -1414,6 +1408,9 @@ static brand_type determine_weapon_brand(const item_def& item, int item_level)
if (one_chance_in(6))
rc = SPWPN_VENOM;
+
+ if (one_chance_in(5))
+ rc = SPWPN_DRAGON_SLAYING;
if (one_chance_in(3))
rc = SPWPN_REACHING;
@@ -2852,13 +2849,8 @@ static void give_monster_item(
const mon_holy_type mholy = mons_holiness(mon);
- if (get_weapon_brand(mthing) == SPWPN_DISRUPTION
- && mholy == MH_UNDEAD)
- {
- set_item_ego_type( mthing, OBJ_WEAPONS, SPWPN_NORMAL );
- }
- else if (get_weapon_brand(mthing) == SPWPN_HOLY_WRATH
- && (mholy == MH_UNDEAD || mholy == MH_DEMONIC))
+ if (get_weapon_brand(mthing) == SPWPN_HOLY_WRATH
+ && (mholy == MH_UNDEAD || mholy == MH_DEMONIC))
{
set_item_ego_type( mthing, OBJ_WEAPONS, SPWPN_NORMAL );
}
diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc
index 7ed20ef251..8fad0cfef9 100644
--- a/crawl-ref/source/mon-util.cc
+++ b/crawl-ref/source/mon-util.cc
@@ -2756,9 +2756,6 @@ void monsters::equip_weapon(item_def &item, int near)
case SPWPN_FROST:
mpr("It is covered in frost.");
break;
- case SPWPN_DISRUPTION:
- mpr("You sense a holy aura.");
- break;
case SPWPN_RETURNING:
mpr("It wiggles slightly.");
break;
@@ -3112,8 +3109,6 @@ bool monsters::wants_weapon(const item_def &weap) const
const int brand = get_weapon_brand(weap);
const int holy = holiness();
- if (brand == SPWPN_DISRUPTION && holy == MH_UNDEAD)
- return (false);
if (brand == SPWPN_HOLY_WRATH
&& (holy == MH_DEMONIC || holy == MH_UNDEAD))
diff --git a/crawl-ref/source/randart.cc b/crawl-ref/source/randart.cc
index c01c0a6a9c..947dc074e5 100644
--- a/crawl-ref/source/randart.cc
+++ b/crawl-ref/source/randart.cc
@@ -1168,7 +1168,13 @@ void randart_wpn_properties( const item_def &item,
proprt[RAP_BRAND] = SPWPN_FLAMING + random2(2);
if (one_chance_in(6))
- proprt[RAP_BRAND] = SPWPN_ORC_SLAYING + random2(4);
+ proprt[RAP_BRAND] = SPWPN_ORC_SLAYING + random2(5);
+
+ if (proprt[RAP_BRAND] == SPWPN_DRAGON_SLAYING
+ && weapon_skill(item) != SK_POLEARMS)
+ {
+ proprt[RAP_BRAND] = 0; /* missile wpns */
+ }
if (one_chance_in(6))
proprt[RAP_BRAND] = SPWPN_VORPAL;
@@ -1182,13 +1188,6 @@ void randart_wpn_properties( const item_def &item,
if (proprt[RAP_BRAND] == SPWPN_PROTECTION)
proprt[RAP_BRAND] = 0; /* no protection */
- if (proprt[RAP_BRAND] == SPWPN_DISRUPTION
- && !(atype == WPN_MACE || atype == WPN_GREAT_MACE
- || atype == WPN_HAMMER))
- {
- proprt[RAP_BRAND] = SPWPN_NORMAL;
- }
-
// if this happens, things might get broken -- bwr
if (proprt[RAP_BRAND] == SPWPN_SPEED && atype == WPN_QUICK_BLADE)
proprt[RAP_BRAND] = SPWPN_NORMAL;
diff --git a/crawl-ref/source/shopping.cc b/crawl-ref/source/shopping.cc
index 9490345e4d..b6c5002d3c 100644
--- a/crawl-ref/source/shopping.cc
+++ b/crawl-ref/source/shopping.cc
@@ -667,7 +667,6 @@ unsigned int item_value( item_def item, bool ident )
valued *= 60;
break;
- case SPWPN_DISRUPTION:
case SPWPN_FLAME:
case SPWPN_FROST:
case SPWPN_HOLY_WRATH:
@@ -688,6 +687,7 @@ unsigned int item_value( item_def item, bool ident )
case SPWPN_FLAMING:
case SPWPN_FREEZING:
+ case SPWPN_DRAGON_SLAYING:
valued *= 25;
break;
diff --git a/crawl-ref/source/unrand.h b/crawl-ref/source/unrand.h
index 3b5e818e9f..efbc05d7e4 100644
--- a/crawl-ref/source/unrand.h
+++ b/crawl-ref/source/unrand.h
@@ -1023,7 +1023,7 @@
"mace \"Undeadhunter\"", "steel mace",
OBJ_WEAPONS, WPN_MACE, +4, +6, LIGHTGRAY,
{
- SPWPN_DISRUPTION, 0, 0, 0, 0, 0,
+ SPWPN_HOLY_WRATH, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, // life prot
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,