Sunsword vs shades

From the newsgroup:  Sunsword is ineffective against shades.  It
gets a special bonus of double damage vs undead, but since it's not made
of silver it was only doing 1 point of damage against shades.  Make the
bonus-vs-undead attribute override the silver-required criterion.  (If
there's ever a whip or other flimsy weapon which gets a bonus against
some type(s) of thick-skinned monster, its attack will override the skin
thickness in similar fashion.)
This commit is contained in:
nethack.rankin
2007-05-10 02:14:10 +00:00
parent 82c82016cd
commit 237615f9d9
2 changed files with 9 additions and 3 deletions

View File

@@ -349,6 +349,7 @@ increase damage bonus applies when kicking while polymorphed into a monster
if magically removing steed's saddle is fatal, don't leave it saddled in bones
charging prompt used wrong criteria when deciding whether to list rings
an orc (or gnome) will respond to #chat if hero is also an orc (or gnome)
override non-silver vs shades for artifacts which deal extra damage to undead
Platform- and/or Interface-Specific Fixes

View File

@@ -1,4 +1,4 @@
/* SCCS Id: @(#)weapon.c 3.5 2007/02/09 */
/* SCCS Id: @(#)weapon.c 3.5 2007/05/09 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
@@ -291,11 +291,16 @@ struct monst *mon;
if (tmp < 0) tmp = 0;
}
if (objects[otyp].oc_material <= LEATHER && thick_skinned(ptr))
/* don't need hard material or silver if using an artifact which
gets a special bonus against this target (Sunsword vs shades) */
if (tmp && (thick_skinned(ptr) || ptr == &mons[PM_SHADE]) &&
(!otmp->oartifact || !spec_dbon(otmp, mon, tmp))) {
if (objects[otyp].oc_material <= LEATHER && thick_skinned(ptr))
/* thick skinned/scaled creatures don't feel it */
tmp = 0;
if (ptr == &mons[PM_SHADE] && objects[otyp].oc_material != SILVER)
if (ptr == &mons[PM_SHADE] && objects[otyp].oc_material != SILVER)
tmp = 0;
}
/* "very heavy iron ball"; weight increase is in increments of 160 */
if (otyp == HEAVY_IRON_BALL && tmp > 0) {