-NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.446 $ $NHDT-Date: 1612656277 2021/02/07 00:04:37 $
+NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.448 $ $NHDT-Date: 1612912018 2021/02/09 23:06:58 $
General Fixes and Modified Features
-----------------------------------
when punished, involuntarily teleporting and landing within chain range of
attached ball while encumbered worse than burdened could trigger
"remove_object: obj not on floor" panic on hero's next move
+update persistent inventory when putting on a helmet causes it to auto-curse
inventory cursing caused by "this water's no good" effect when drinking from
a fountain didn't update persistent inventory window
+leashing or unleashing pets wasn't updating persistent inventory window
+when the wetness of a towel in inventory changed, persistent inventory wasn't
+ updated to show that
+using wizard mode identify to ID 'all' updated perm_invent window but IDing
+ specific items--even every one of them--did not
+hold_another_object added item to inventory first, then maybe removed and
+ dropped it, resulting in spurious add and remove perm_invent updates
+when hold_another_object fails while hero is swallowed, drop the item into
+ swallower's inventory instead of onto the floor
+hold_another_object (for wishing, horn of plenty, theft while poly'd, other
+ non-pickup actions giving hero another inventory item) wasn't
+ reporting change in encumbrance; that would catch up on next turn but
+ could be off during additional move(s) for current turn
+hold_another_object used hardcoded Stressed to limit carrying instead of
+ using the 'pickup_burden' option for that
+transforming a potion by dipping a unicorn horn into it could result in the
+ potion being dropped due to 'pickup_burden' if encumbrance was already
+ over threshold before dipping but within it after removal from invent
fix priest created inside temple wall
fix vault guard occasionally encasing monsters in stone
tone down scare monster by excluding humans and uniques
punishment wasn't subjecting fragile ones to breakage
objects scattered by an explosion which land on water or lava weren't affected
by the water or lava
-hold_another_object (for wishing, horn of plenty, theft while poly'd, other
- non-pickup actions giving hero another inventory item) wasn't
- reporting change in encumbrance; that would catch up on next turn but
- could be off during additional move(s) for current turn
-hold_another_object added item to inventory first, then maybe removed and
- dropped it, resulting in spurious add and remove perm_invent updates
-hold_another_object used hardcoded Stressed to limit carrying instead of
- using the 'pickup_burden' option for that
-when hold_another_object fails while hero is swallowed, drop the item into
- swallower's inventory instead of onto the floor
change mkclass() to usually honor (always honor for L class) the hell-only and
never-in-hell monster creation flags; no more achi-lich in the Castle
(nor master lich there unless demilich gets a potion of gain level)
chatting to the quest leader in wizard mode with sufficient experience level
and insufficient piety, player is asked whether alignment should be
boosted; answering 'n' resulted in being prompted a second time
-leashing or unleashing pets wasn't updating persistent inventory window
end of game inventory disclosure passed an inappropriate argument to the
inventory display routine; not noticeable for tty and curses,
noticeable but not harmful for X11, and slightly harmful for Qt
one-handed weapon and also to a shield
if a monster threw a cocktrice egg at the hero but hit and petrified another
monster, the hero would get credit/blame for killing it
-update persistent inventory when putting on a helmet causes it to auto-curse
since ki-rin look quite a bit like unicorns, make them be more like one:
allow them to use their own horn to cure themselves; remove M1_ANIMAL,
change MS_NEIGH to MS_SPELL, add MR_POISON, use horse body parts;
add some new demonic and angelic maledictions
when fire damage dried a wet towel, it would never reduce the wetness to 0
when water damage wet a towel, the new wetness might randomly become less
-when the wetness of a towel in inventory changed, persistent inventory wasn't
- updated to show that
make Death revive earlier, and all the Riders after 67 turns at latest
when protection from shape changers begins, force mimic out of concealment
even if hero can't see its location; for locations that can be seen,
ended up looking like a throne (terrain type SINK == symbol S_throne)
have dowhatdoes ('&') catch up with '?i' to describe ^A, ESC, and movement
prefix keystrokes correctly instead of reporting "no such command"
-transforming a potion by dipping a unicorn horn into it could result in the
- potion being dropped due to 'pickup_burden' if encumbrance was already
- over threshold before dipping but within it after removal from invent
give barrow wights a cold touch
for configuration using external compression on save files that applied a name
suffix, 'selectsaved' (restore via menu) couldn't handle any which had
-/* NetHack 3.7 invent.c $NHDT-Date: 1612738685 2021/02/07 22:58:05 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.318 $ */
+/* NetHack 3.7 invent.c $NHDT-Date: 1612912018 2021/02/09 23:06:58 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.319 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Derek S. Ray, 2015. */
/* NetHack may be freely redistributed. See license for details. */
/* dialog with user to identify a given number of items; 0 means all */
void
identify_pack(int id_limit,
- boolean learning_id) /* true if we just read unknown
- identify scroll */
+ boolean learning_id) /* T: just read unknown identify scroll */
{
struct obj *obj;
int n, unid_cnt = count_unidentified(g.invent);
&selected);
if (n > 0) {
if (wizid) {
+ boolean all_id = FALSE;
int i;
/* identifying items will update perm_invent, calling this
otmp = selected[i].item.a_obj;
if (otmp == &wizid_fakeobj) {
identify_pack(0, FALSE);
+ /* identify_pack() performs update_inventory() */
+ all_id = TRUE;
+ break;
} else {
if (not_fully_identified(otmp))
(void) identify(otmp);
+ /* identify() does not perform update_inventory() */
}
}
+ if (!all_id)
+ update_inventory();
} else {
ret = selected[0].item.a_char;
if (out_cnt)