silver vs lycanthropy (trunk only)
Monster werecritters are vulnerable to silver when in human form as well as when in beast form, but hero inflicted with lycanthropy was only vulnerable while in beast form. Add pseudo-property Hate_silver to handle that correctly. Also, add silver vulnerability to enlightenment feedback. Lastly, hero vulnerable to silver had Con abused if hit by silver missile but not when hit hand-to-hand; add an exercise() call to the latter.
This commit is contained in:
@@ -560,7 +560,7 @@ touch_artifact(obj,mon)
|
||||
/* can pick it up unless you're totally non-synch'd with the artifact */
|
||||
if (badclass && badalign && self_willed) {
|
||||
if (yours) {
|
||||
if (obj->where != OBJ_INVENT)
|
||||
if (!carried(obj))
|
||||
pline("%s your grasp!", Tobjnam(obj, "evade"));
|
||||
else
|
||||
pline("%s beyond your control!", Tobjnam(obj, "are"));
|
||||
@@ -1613,8 +1613,7 @@ boolean loseit; /* whether to drop it if hero can longer touch it */
|
||||
|
||||
if (touch_artifact(obj, &youmonst)) {
|
||||
/* nothing to do if hero can successfully handle this object */
|
||||
if (!(objects[obj->otyp].oc_material == SILVER &&
|
||||
(u.ulycn >= LOW_PM || hates_silver(youmonst.data))))
|
||||
if (!(objects[obj->otyp].oc_material == SILVER && Hate_silver))
|
||||
return 1;
|
||||
/* we didn't get "<obj> evades your grasp" message; give alt message */
|
||||
You_cant("handle %s anymore!", thesimpleoname(obj));
|
||||
|
||||
@@ -1127,6 +1127,7 @@ int final; /* 0 => still in progress; 1 => over, survived; 2 => dead */
|
||||
#endif
|
||||
if (Sleeping) enl_msg("You ", "fall", "fell", " asleep", "");
|
||||
if (Hunger) enl_msg("You hunger", "", "ed", " rapidly", "");
|
||||
if (Hate_silver) you_are("harmed by silver","");
|
||||
|
||||
/*** Vision and senses ***/
|
||||
if (See_invisible) enl_msg(You_, "see", "saw", " invisible",
|
||||
|
||||
@@ -945,8 +945,10 @@ hitmu(mtmp, mattk)
|
||||
hitmsg(mtmp, mattk);
|
||||
if (!dmg) break;
|
||||
if (objects[otmp->otyp].oc_material == SILVER &&
|
||||
hates_silver(youmonst.data))
|
||||
Hate_silver) {
|
||||
pline_The("silver sears your flesh!");
|
||||
exercise(A_CON, FALSE);
|
||||
}
|
||||
if (u.mh > 1 && u.mh > ((u.uac>0) ? dmg : dmg+u.uac) &&
|
||||
objects[otmp->otyp].oc_material == IRON &&
|
||||
(u.umonnum==PM_BLACK_PUDDING
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* SCCS Id: @(#)mthrowu.c 3.5 2007/01/27 */
|
||||
/* SCCS Id: @(#)mthrowu.c 3.5 2007/03/17 */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -60,11 +60,11 @@ const char *name; /* if null, then format `obj' */
|
||||
else You("are almost hit by %s.", onm);
|
||||
return(0);
|
||||
} else {
|
||||
if(Blind || !flags.verbose) You("are hit!");
|
||||
if (Blind || !flags.verbose) You("are hit%s", exclam(dam));
|
||||
else You("are hit by %s%s", onm, exclam(dam));
|
||||
|
||||
if (obj && objects[obj->otyp].oc_material == SILVER
|
||||
&& hates_silver(youmonst.data)) {
|
||||
if (obj && objects[obj->otyp].oc_material == SILVER &&
|
||||
Hate_silver) {
|
||||
/* extra damage already applied by dmgval() */
|
||||
pline_The("silver sears your flesh!");
|
||||
exercise(A_CON, FALSE);
|
||||
|
||||
Reference in New Issue
Block a user