diff options
-rw-r--r-- | crawl-ref/source/describe.cc | 11 | ||||
-rw-r--r-- | crawl-ref/source/effects.cc | 6 | ||||
-rw-r--r-- | crawl-ref/source/fight.cc | 30 | ||||
-rw-r--r-- | crawl-ref/source/ghost.cc | 8 | ||||
-rw-r--r-- | crawl-ref/source/item_use.cc | 16 | ||||
-rw-r--r-- | crawl-ref/source/itemname.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/itemprop.cc | 3 | ||||
-rw-r--r-- | crawl-ref/source/itemprop.h | 6 | ||||
-rw-r--r-- | crawl-ref/source/makeitem.cc | 18 | ||||
-rw-r--r-- | crawl-ref/source/mon-util.cc | 5 | ||||
-rw-r--r-- | crawl-ref/source/randart.cc | 15 | ||||
-rw-r--r-- | crawl-ref/source/shopping.cc | 2 | ||||
-rw-r--r-- | crawl-ref/source/unrand.h | 2 |
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, |