killing shopkeeper by throwing unpaid things would result in
"item not on bill" impossible error
choking pet to death with cursed leash incurs various pet-killing penalties
+wielding Werebane prevents catching lycanthropy via monster attack (but not
+ via eating, nor does it cure an existing case)
+character inflicted with lycanthropy is vulnerable to Werebane when in
+ human/elf/&c form as well as when in beast form
Platform- and/or Interface-Specific Fixes
-/* SCCS Id: @(#)artilist.h 3.4 2001/11/17 */
+/* SCCS Id: @(#)artilist.h 3.4 2003/02/12 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
A("Werebane", SILVER_SABER,
(SPFX_RESTR|SPFX_DFLAG2), 0, M2_WERE,
- PHYS(5,0), NO_DFNS, NO_CARY, 0, A_NONE, NON_PM, NON_PM, 1500L ),
+ PHYS(5,0), DFNS(AD_WERE), NO_CARY, 0, A_NONE, NON_PM, NON_PM, 1500L ),
A("Grayswandir", SILVER_SABER,
(SPFX_RESTR|SPFX_HALRES), 0, 0,
} else if (weap->spfx & SPFX_DFLAG1) {
return ((ptr->mflags1 & weap->mtype) != 0L);
} else if (weap->spfx & SPFX_DFLAG2) {
- return ((ptr->mflags2 & weap->mtype) ||
- (yours && !Upolyd && (urace.selfmask & weap->mtype)));
+ return ((ptr->mflags2 & weap->mtype) || (yours &&
+ ((!Upolyd && (urace.selfmask & weap->mtype)) ||
+ ((weap->mtype & M2_WERE) && u.ulycn >= LOW_PM))));
} else if (weap->spfx & SPFX_DALIGN) {
return yours ? (u.ualign.type != weap->alignment) :
(ptr->maligntyp == A_NONE ||
-/* SCCS Id: @(#)eat.c 3.4 2002/09/25 */
+/* SCCS Id: @(#)eat.c 3.4 2003/02/13 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
register int pm;
{
register int tmp = 0;
+ boolean catch_lycanthropy = FALSE;
/* in case `afternmv' didn't get called for previously mimicking
gold, clean up now to avoid `eatmbuf' memory leak */
pluslvl(FALSE);
break;
case PM_HUMAN_WERERAT:
+ catch_lycanthropy = TRUE;
u.ulycn = PM_WERERAT;
break;
case PM_HUMAN_WEREJACKAL:
+ catch_lycanthropy = TRUE;
u.ulycn = PM_WEREJACKAL;
break;
case PM_HUMAN_WEREWOLF:
+ catch_lycanthropy = TRUE;
u.ulycn = PM_WEREWOLF;
break;
case PM_NURSE:
}
break;
}
+
+ if (catch_lycanthropy && defends(AD_WERE, uwep)) {
+ if (!touch_artifact(uwep, &youmonst)) {
+ dropx(uwep);
+ uwepgone();
+ }
+ }
+
return;
}