wands vs no-hands
Hero shouldn't be able to zap wands when polymorphed into a form which lacks hands. The other tweaks to dozap() shouldn't produce any change in behavior.
This commit is contained in:
+4
-1
@@ -1,4 +1,4 @@
|
|||||||
$NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.80 $ $NHDT-Date: 1580254093 2020/01/28 23:28:13 $
|
$NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.81 $ $NHDT-Date: 1580322890 2020/01/29 18:34:50 $
|
||||||
|
|
||||||
General Fixes and Modified Features
|
General Fixes and Modified Features
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
@@ -48,6 +48,7 @@ hero can no longer wear blindfold/towel/lenses when poly'd into headless form
|
|||||||
revamp achievement tracking for exploring Mine's End and Sokoban (by acquiring
|
revamp achievement tracking for exploring Mine's End and Sokoban (by acquiring
|
||||||
luckstone and bag of holding or amulet of reflection, respectively)
|
luckstone and bag of holding or amulet of reflection, respectively)
|
||||||
throttle long worm growth rate and HP accumulation
|
throttle long worm growth rate and HP accumulation
|
||||||
|
poly'd hero was able to zap wands without any hands
|
||||||
|
|
||||||
|
|
||||||
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
|
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
|
||||||
@@ -127,6 +128,8 @@ for end of game disclosure and dumplog, show 'achievements' (previously only
|
|||||||
more grades of self-appearance than beautiful or handsome vs ugly
|
more grades of self-appearance than beautiful or handsome vs ugly
|
||||||
when 'color' if Off and 'use_inverse' is On, draw ice on the map in inverse
|
when 'color' if Off and 'use_inverse' is On, draw ice on the map in inverse
|
||||||
video if it uses the same character as room floor or as dark floor
|
video if it uses the same character as room floor or as dark floor
|
||||||
|
new 'mention_decor' option; when On, describe dungeon features being stepped
|
||||||
|
on or floated/flown over even when they're not covered by objects
|
||||||
|
|
||||||
|
|
||||||
Platform- and/or Interface-Specific New Features
|
Platform- and/or Interface-Specific New Features
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 zap.c $NHDT-Date: 1573688696 2019/11/13 23:44:56 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.316 $ */
|
/* NetHack 3.6 zap.c $NHDT-Date: 1580322890 2020/01/29 18:34:50 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.330 $ */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Robert Patrick Rankin, 2013. */
|
/*-Copyright (c) Robert Patrick Rankin, 2013. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -2200,7 +2200,7 @@ struct obj *otmp;
|
|||||||
pline("%s suddenly explodes!", The(xname(otmp)));
|
pline("%s suddenly explodes!", The(xname(otmp)));
|
||||||
dmg = d(otmp->spe + 2, 6);
|
dmg = d(otmp->spe + 2, 6);
|
||||||
losehp(Maybe_Half_Phys(dmg), "exploding wand", KILLED_BY_AN);
|
losehp(Maybe_Half_Phys(dmg), "exploding wand", KILLED_BY_AN);
|
||||||
useup(otmp);
|
useupall(otmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
static NEARDATA const char zap_syms[] = { WAND_CLASS, 0 };
|
static NEARDATA const char zap_syms[] = { WAND_CLASS, 0 };
|
||||||
@@ -2209,9 +2209,13 @@ static NEARDATA const char zap_syms[] = { WAND_CLASS, 0 };
|
|||||||
int
|
int
|
||||||
dozap()
|
dozap()
|
||||||
{
|
{
|
||||||
register struct obj *obj;
|
struct obj *obj;
|
||||||
int damage;
|
int damage, need_dir;
|
||||||
|
|
||||||
|
if (nohands(g.youmonst.data)) {
|
||||||
|
You("aren't able to zap anything in your current form.");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
if (check_capacity((char *) 0))
|
if (check_capacity((char *) 0))
|
||||||
return 0;
|
return 0;
|
||||||
obj = getobj(zap_syms, "zap");
|
obj = getobj(zap_syms, "zap");
|
||||||
@@ -2220,19 +2224,20 @@ dozap()
|
|||||||
|
|
||||||
check_unpaid(obj);
|
check_unpaid(obj);
|
||||||
|
|
||||||
/* zappable addition done by GAN 11/03/86 */
|
need_dir = objects[obj->otyp].oc_dir != NODIR;
|
||||||
if (!zappable(obj))
|
if (!zappable(obj)) {
|
||||||
pline1(nothing_happens);
|
pline1(nothing_happens);
|
||||||
else if (obj->cursed && !rn2(WAND_BACKFIRE_CHANCE)) {
|
} else if (obj->cursed && !rn2(WAND_BACKFIRE_CHANCE)) {
|
||||||
backfire(obj); /* the wand blows up in your face! */
|
backfire(obj); /* the wand blows up in your face! */
|
||||||
exercise(A_STR, FALSE);
|
exercise(A_STR, FALSE);
|
||||||
|
/* 'obj' is gone; skip update_inventory() because
|
||||||
|
backfire() -> useupall() -> freeinv() did it */
|
||||||
return 1;
|
return 1;
|
||||||
} else if (!(objects[obj->otyp].oc_dir == NODIR) && !getdir((char *) 0)) {
|
} else if (need_dir && !getdir((char *) 0)) {
|
||||||
if (!Blind)
|
if (!Blind)
|
||||||
pline("%s glows and fades.", The(xname(obj)));
|
pline("%s glows and fades.", The(xname(obj)));
|
||||||
/* make him pay for knowing !NODIR */
|
/* make him pay for knowing !NODIR */
|
||||||
} else if (!u.dx && !u.dy && !u.dz
|
} else if (need_dir && !u.dx && !u.dy && !u.dz) {
|
||||||
&& !(objects[obj->otyp].oc_dir == NODIR)) {
|
|
||||||
if ((damage = zapyourself(obj, TRUE)) != 0) {
|
if ((damage = zapyourself(obj, TRUE)) != 0) {
|
||||||
char buf[BUFSZ];
|
char buf[BUFSZ];
|
||||||
|
|
||||||
@@ -2253,9 +2258,9 @@ dozap()
|
|||||||
}
|
}
|
||||||
if (obj && obj->spe < 0) {
|
if (obj && obj->spe < 0) {
|
||||||
pline("%s to dust.", Tobjnam(obj, "turn"));
|
pline("%s to dust.", Tobjnam(obj, "turn"));
|
||||||
useup(obj);
|
useupall(obj); /* calls freeinv() -> update_inventory() */
|
||||||
}
|
} else
|
||||||
update_inventory(); /* maybe used a charge */
|
update_inventory(); /* maybe used a charge */
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user