fix #H8183 - leather jacket doesn't show AC

Leather jacket doesn't take multiple turns to wear, so wearing it
wasn't calling Armor_on() and recently moved 'uarm->known = 1' didn't
get executed.  Not reported yet but had the same issue:  fedora and
dented pot wouldn't call Helmet_on().
This commit is contained in:
PatR
2019-02-12 15:40:05 -08:00
parent 1a8a774719
commit a41d63d146
2 changed files with 24 additions and 16 deletions
+4 -1
View File
@@ -1,4 +1,4 @@
$NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.255 $ $NHDT-Date: 1549849509 2019/02/11 01:45:09 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.257 $ $NHDT-Date: 1550014802 2019/02/12 23:40:02 $
This fixes36.2 file is here to capture information about updates in the 3.6.x This fixes36.2 file is here to capture information about updates in the 3.6.x
lineage following the release of 3.6.1 in April 2018. Please note, however, lineage following the release of 3.6.1 in April 2018. Please note, however,
@@ -427,6 +427,9 @@ when engulfed while in a shop, dropping an item into the engulfer and then
using ':' to look at current location could cause a crash using ':' to look at current location could cause a crash
when items were on the floor just inside a shop's door where the shopkeeper when items were on the floor just inside a shop's door where the shopkeeper
doesn't buy and sell stuff, those items showed a 'for sale' price doesn't buy and sell stuff, those items showed a 'for sale' price
after 'when donning armor, enchanment becomes known even if interrupted' fix,
wearing a leather jacket, fedora, or dented pot (no multi-turn delay
worn in a slot which usually has one) didn't make +/- become known
having an artifact wish be refused ("for a moment you feel <artifact> in having an artifact wish be refused ("for a moment you feel <artifact> in
your hands, but it disappears") would immediately segfault your hands, but it disappears") would immediately segfault
tty: turn off an optimization that is the suspected cause of Windows reported tty: turn off an optimization that is the suspected cause of Windows reported
+20 -15
View File
@@ -1,4 +1,4 @@
/* NetHack 3.6 do_wear.c $NHDT-Date: 1549758452 2019/02/10 00:27:32 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.106 $ */ /* NetHack 3.6 do_wear.c $NHDT-Date: 1550014802 2019/02/12 23:40:02 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.107 $ */
/* 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. */
@@ -1928,26 +1928,31 @@ struct obj *obj;
obj->known = 1; obj->known = 1;
*/ */
setworn(obj, mask); setworn(obj, mask);
/* if there's no delay, we'll execute 'aftermv' immediately */
if (obj == uarm)
afternmv = Armor_on;
else if (obj == uarmh)
afternmv = Helmet_on;
else if (obj == uarmg)
afternmv = Gloves_on;
else if (obj == uarmf)
afternmv = Boots_on;
else if (obj == uarms)
afternmv = Shield_on;
else if (obj == uarmc)
afternmv = Cloak_on;
else if (obj == uarmu)
afternmv = Shirt_on;
else
panic("wearing armor not worn as armor? [%08lx]", obj->owornmask);
delay = -objects[obj->otyp].oc_delay; delay = -objects[obj->otyp].oc_delay;
if (delay) { if (delay) {
nomul(delay); nomul(delay);
multi_reason = "dressing up"; multi_reason = "dressing up";
if (is_boots(obj))
afternmv = Boots_on;
if (is_helmet(obj))
afternmv = Helmet_on;
if (is_gloves(obj))
afternmv = Gloves_on;
if (obj == uarm)
afternmv = Armor_on;
nomovemsg = "You finish your dressing maneuver."; nomovemsg = "You finish your dressing maneuver.";
} else { } else {
if (is_cloak(obj)) unmul(""); /* call (*aftermv)(), clear it+nomovemsg+multi_reason */
(void) Cloak_on();
if (is_shield(obj))
(void) Shield_on();
if (is_shirt(obj))
(void) Shirt_on();
on_msg(obj); on_msg(obj);
} }
context.takeoff.mask = context.takeoff.what = 0L; context.takeoff.mask = context.takeoff.what = 0L;