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

@@ -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) {