no more headless eyewear
Noticed while working on something else: hero kept wearing a towel after polymorphing into a form without any head. And when not already wearing one, could put on a blindfold/towel/lenses while in a headless form.
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
$NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.69 $ $NHDT-Date: 1579261284 2020/01/17 11:41:24 $
|
$NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.70 $ $NHDT-Date: 1579649788 2020/01/21 23:36:28 $
|
||||||
|
|
||||||
General Fixes and Modified Features
|
General Fixes and Modified Features
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
@@ -46,6 +46,7 @@ when poly'd into a giant and moving onto a boulder's spot, message given was
|
|||||||
confused about whether autopickup would occur so could be misleading
|
confused about whether autopickup would occur so could be misleading
|
||||||
random role selection wasn't honoring unwanted alignment(s) properly
|
random role selection wasn't honoring unwanted alignment(s) properly
|
||||||
if at the edge of the map window, trying to move farther fails but used a turn
|
if at the edge of the map window, trying to move farther fails but used a turn
|
||||||
|
hero can no longer wear blindfold/towel/lenses when poly'd into headless form
|
||||||
|
|
||||||
|
|
||||||
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
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 do_wear.c $NHDT-Date: 1575768410 2019/12/08 01:26:50 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.126 $ */
|
/* NetHack 3.6 do_wear.c $NHDT-Date: 1579649788 2020/01/21 23:36:28 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.127 $ */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Robert Patrick Rankin, 2012. */
|
/*-Copyright (c) Robert Patrick Rankin, 2012. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -1159,15 +1159,19 @@ void
|
|||||||
Blindf_off(otmp)
|
Blindf_off(otmp)
|
||||||
struct obj *otmp;
|
struct obj *otmp;
|
||||||
{
|
{
|
||||||
boolean was_blind = Blind, changed = FALSE;
|
boolean was_blind = Blind, changed = FALSE,
|
||||||
|
nooffmsg = !otmp;
|
||||||
|
|
||||||
|
if (!otmp)
|
||||||
|
otmp = ublindf;
|
||||||
if (!otmp) {
|
if (!otmp) {
|
||||||
impossible("Blindf_off without otmp");
|
impossible("Blindf_off without eyewear?");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
g.context.takeoff.mask &= ~W_TOOL;
|
g.context.takeoff.mask &= ~W_TOOL;
|
||||||
setworn((struct obj *) 0, otmp->owornmask);
|
setworn((struct obj *) 0, otmp->owornmask);
|
||||||
off_msg(otmp);
|
if (!nooffmsg)
|
||||||
|
off_msg(otmp);
|
||||||
|
|
||||||
if (Blind) {
|
if (Blind) {
|
||||||
if (was_blind) {
|
if (was_blind) {
|
||||||
@@ -1895,6 +1899,15 @@ struct obj *obj;
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
/*
|
||||||
|
* FIXME:
|
||||||
|
* except for the rings/nolimbs case, this allows you to put on
|
||||||
|
* accessories without having any hands to manipulate them, and
|
||||||
|
* to put them on when poly'd into a tiny or huge form where
|
||||||
|
* they shouldn't fit. [If the latter situation changes, make
|
||||||
|
* comparable change to break_armor(polyself.c).]
|
||||||
|
*/
|
||||||
|
|
||||||
/* accessory */
|
/* accessory */
|
||||||
if (ring) {
|
if (ring) {
|
||||||
char answer, qbuf[QBUFSZ];
|
char answer, qbuf[QBUFSZ];
|
||||||
@@ -1965,6 +1978,11 @@ struct obj *obj;
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
} else if (eyewear) {
|
} else if (eyewear) {
|
||||||
|
if (!has_head(g.youmonst.data)) {
|
||||||
|
You("have no head to wear %s on.", ansimpleoname(obj));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (ublindf) {
|
if (ublindf) {
|
||||||
if (ublindf->otyp == TOWEL)
|
if (ublindf->otyp == TOWEL)
|
||||||
Your("%s is already covered by a towel.",
|
Your("%s is already covered by a towel.",
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 polyself.c $NHDT-Date: 1573290419 2019/11/09 09:06:59 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.135 $ */
|
/* NetHack 3.6 polyself.c $NHDT-Date: 1579649789 2020/01/21 23:36:29 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.148 $ */
|
||||||
/* Copyright (C) 1987, 1988, 1989 by Ken Arromdee */
|
/* Copyright (C) 1987, 1988, 1989 by Ken Arromdee */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -934,7 +934,7 @@ break_armor()
|
|||||||
useup(uarmu);
|
useup(uarmu);
|
||||||
}
|
}
|
||||||
} else if (sliparm(g.youmonst.data)) {
|
} else if (sliparm(g.youmonst.data)) {
|
||||||
if (((otmp = uarm) != 0) && (racial_exception(&g.youmonst, otmp) < 1)) {
|
if ((otmp = uarm) != 0 && racial_exception(&g.youmonst, otmp) < 1) {
|
||||||
if (donning(otmp))
|
if (donning(otmp))
|
||||||
cancel_don();
|
cancel_don();
|
||||||
Your("armor falls around you!");
|
Your("armor falls around you!");
|
||||||
@@ -1016,6 +1016,21 @@ break_armor()
|
|||||||
dropp(otmp);
|
dropp(otmp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* not armor, but eyewear shouldn't stay worn without a head to wear
|
||||||
|
it/them on (should also come off if head is too tiny or too huge,
|
||||||
|
but putting accessories on doesn't reject those cases [yet?]);
|
||||||
|
amulet stays worn */
|
||||||
|
if ((otmp = ublindf) != 0 && !has_head(g.youmonst.data)) {
|
||||||
|
int l;
|
||||||
|
const char *eyewear = simpleonames(otmp); /* blindfold|towel|lenses */
|
||||||
|
|
||||||
|
if (!strncmp(eyewear, "pair of ", l = 8)) /* lenses */
|
||||||
|
eyewear += l;
|
||||||
|
Your("%s %s off!", eyewear, vtense(eyewear, "fall"));
|
||||||
|
(void) Blindf_off((struct obj *) 0); /* Null: skip usual off mesg */
|
||||||
|
dropp(otmp);
|
||||||
|
}
|
||||||
|
/* rings stay worn even when no hands */
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|||||||
Reference in New Issue
Block a user