summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source
diff options
context:
space:
mode:
authorj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-01-07 19:24:34 +0000
committerj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-01-07 19:24:34 +0000
commit7351857a9a93080e85cc0fc6a87a5571cb1dadcc (patch)
tree8a07ebcbbccd8b726492c258e6df6d8721311368 /crawl-ref/source
parenta670276b9dd4d243f68ad28cacf71f979ae5984c (diff)
downloadcrawl-ref-7351857a9a93080e85cc0fc6a87a5571cb1dadcc.tar.gz
crawl-ref-7351857a9a93080e85cc0fc6a87a5571cb1dadcc.zip
Removed DISRUPTION brand and added DRAGON_SLAYING.
The old disruption code should probably be moved over to holy wrath but I'm unsure whether I should replace the current one. I'm talking about the "You are blasted by holy energy!" bit in the commit below. For now, I've simply removed it. All dragon slaying currently does is what orc slaying does, only against dragons. So no additional effects, resistances or otherwise. Both slaying brands are still randomly created (though dragon only for polearms), I haven't changed anything about that. Also removed DISTORTION effect upon wielding such a weapon. Xom is still pleased about seeing you in this conundrum, but not as much as when you were blasted right away. Changed distortion description to explicitly mentioning its effects. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@3219 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source')
-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,