Bug report #H7156 listed three items, all relating to perm_invent: 1) it shouldn't persist across save/restore since restore might be on a system which doesn't have enough room to display it (report actually complained that config file setting was ignored when restoring old games, which is an expected side-effect for options that persist across save/restore); 2) permanent inventory wasn't updated when using scroll of charging; 3) attempts to update permanent inventory during restore could lead to crash if it tries to access shop cost for unpaid items. Items (2) and (3) have already been fixed. This fixes (1). Replace 'flags.perm_invent' with a dummy flag, preserving save files while removing it from flags. Add 'iflags.perm_invent' to hold the value of the perm_invent option. The win32 files that are updated here haven't been tested. Whichever branch contains the curses interface needs to be updated; ditto for any other pending/potential interfaces which support perm_invent.
197 lines
11 KiB
Groff
197 lines
11 KiB
Groff
$NHDT-Branch: $:$NHDT-Revision: $ $NHDT-Date: $
|
|
|
|
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,
|
|
that another 3.6.x release is not anticipated after 3.6.2, and most developer
|
|
focus will shift to the next major release.
|
|
|
|
General Fixes and Modified Features
|
|
-----------------------------------
|
|
last line of config file wasn't being heeded if it had no newline
|
|
list MSGTYPE values shows empty strings as reported in H7140
|
|
Killing Vlad while he was in bat/fog cloud/wolf form gave poorly worded
|
|
feedback when he reverted to vampire form
|
|
spaces in hilite_status option title text field not working
|
|
numeric hilite_status values didn't allow negative numbers (needed for AC);
|
|
change them to accept leading '-', also accept unary '+' as a no-op
|
|
permanent inventory window was updated too soon when a scroll of charging
|
|
was used to [re]charge an item, not reflecting the item's change(s)
|
|
for starting inventory, don't give an orc hero lembas wafers or cram rations
|
|
targetting with a polearm could give away location of hidden monster
|
|
static prototype could be left orphaned depending on #defines in rip.c
|
|
config file error handling routines were calling xx_wait_synch early
|
|
even before the window system was initialized; add a default routine
|
|
status_finish() in botl.c would unconditionally invoke the window port's
|
|
win_status_finish() routine which was problematic if the windowport
|
|
wasn't initialized yet
|
|
using 'O' to set up a hilite_status rule for string comparison, the menu for
|
|
color was titled "choose attribute for when <foo> is 'bar'" and the
|
|
one prompting for attribute used the default "pick an attribute"
|
|
when finishing using 'O' to examine or set hilite_status rules, if the
|
|
'statushilites' option is 0 and there is at least one rule, give a
|
|
reminder about setting it to non-zero to activate highlighting
|
|
end of game disclosure was exercising Wisdom when revealing inventory and
|
|
also repeatedly updating persistent inventory window if enabled
|
|
internals for 'sortloot' option have been changed to not reorder the actual
|
|
list of objects, so changing it to 'n'one will get the original order
|
|
back and having a persistent inventory window open when performing
|
|
full-pack identify won't result in possibly skipping some items
|
|
give vault guards a cursed tin whistle since there is a shrill whistling
|
|
sound if hero teleports out of vault while being confronted by guard
|
|
polymorphing worn amulet triggers panic if it turns into amulet of change
|
|
wishing for small mimic corpse or large mimic corpse failed with 'nothing
|
|
matching that exists'; wishing for large {dog,cat,kobold} corpse
|
|
yielded normal size one (size prefix was being stripped off for globs)
|
|
wishing for "glob of grey ooze" failed even though grey ooze is recognized
|
|
as a variant spelling for gray ooze
|
|
spells of healing and extra healing cast at monsters handled monster blindness
|
|
inconsistently compared to other healing
|
|
when using the 'O' command to create a status highlight that specifies
|
|
multiple attributes (blink+inverse, &c), pick all of them in one menu
|
|
selection and create a single hilite_status rule instead of having
|
|
separate rules for each attribute to be merged when highlighting
|
|
highlighting status conditions would fail to use attributes if a rule with
|
|
them was followed by another one without (color only or color&normal)
|
|
when using 'O' to set hilite_status rules, hide the 'score' status field if
|
|
game has been built without SCORE_ON_BOTL; latent rules for 'score'
|
|
can still be set in config file and removed via 'O' but can't be added
|
|
make stone-to-flesh behave the same on statues of petrified monsters as it
|
|
does on random 'dungeon art' ones (revive at a nearby spot instead of
|
|
becoming a corpse when there's already a monster at statue's location)
|
|
special level loader didn't support populating several types of special rooms
|
|
(ant hole, cockatrice nest, leprechaun hall)
|
|
eating rings while polymorphed didn't handle bonus/penalty for increase damage,
|
|
increase accuracy, or protection correctly
|
|
shopkeeper's position in front of shop door didn't correctly handle bottom
|
|
edge of irregularly shaped shop due to typo or copy+paste error
|
|
(latent bug; no such shops are present in 3.6.x)
|
|
attempting to update permanent inventory window during restore had problems
|
|
with unpaid items (needed shop bill before shop and its shopkeeper
|
|
were restored) and named fruit
|
|
remembered corpse which isn't there anymore would be described by farlook as
|
|
the corpse of a random monster type
|
|
when eating a tin of spinach, don't "feel like Popeye" is sustain-abilities
|
|
prevents any strength gain
|
|
summary text [for message history] of quest message Pri 00081 (Priest quest
|
|
success message given when bringing quest artifact to leader)
|
|
misspelled "congratulations"
|
|
verbal charm/seduce messages were given even when hero was deaf
|
|
succubus/incubus seduction might result in loss of levitation which in turn
|
|
could drop the hero onto a trap that transports him/her elsewhere;
|
|
seduction was proceeding as if nothing unusual had happened
|
|
#turn command which aggravated monsters did so without using a turn (not a pun)
|
|
fix hole/trapdoor passage inconsistency when polymorphed into a giant
|
|
making a wide-open special level with FLAGS:inaccessibles could trigger a
|
|
"floodfill stack overrun" panic (no 3.6.x levels were affected)
|
|
wallifying a special level might go out of map bounds (not with 3.6.x levels)
|
|
and corrupt other level data
|
|
if a random grave produced during level creation included some gold, that gold
|
|
was left on the ground instead of being buried with other treasure
|
|
multiple instances of shop damage at same spot (before repairs, so a broken
|
|
door or dug wall plus trap creation) only charged hero for first one
|
|
shop door repair which took place when hero was on another level only worked
|
|
correctly if a trap at the same spot was removed
|
|
object scattering during shop wall repair was skipped if a trap at the same
|
|
spot was also being removed
|
|
augmented death reason for "while helpless" was broken for record and logfile
|
|
(but still correct for xlogfile)
|
|
prevent wish prompt input from remembering the previous wish
|
|
parchment and vellum are made from animal skin so change material composition
|
|
and color for spellbooks with those descriptions from paper to leather;
|
|
eating those books now breaks vegetarian conduct
|
|
fix monsters not wielding digging implements
|
|
wizard mode ^I^I didn't make temporary identifications become persistent if
|
|
the build configuration makes plain 'char' unsigned
|
|
wizard mode #wizidentify didn't disclose extra information for unID'd items if
|
|
key bindings took away ^I and didn't bind #wizidentify to another key
|
|
make transformation message of a deliberate apply of a figurine seem a bit
|
|
less definite when blind and place unseen monster marker at the spot
|
|
you think it should be
|
|
add window port status_update() value BL_RESET to use as a flag to
|
|
redraw all status fields, distinguished from BL_FLUSH which now only
|
|
specifies that the bot() call has completed so any buffered changes
|
|
should now be rendered
|
|
for hilite_status of string status fields (title, dungeon-level, alignment),
|
|
the types value-goes-up and -down aren't meaningful; treat them as
|
|
value-changed if from config file and don't offer as choices with 'O'
|
|
jumping into or over a Sokoban pit, or over a fire trap, triggers trap twice
|
|
mimics created by #wizgenesis could block or not block vision incorrectly
|
|
handle monsters inside the invocation area
|
|
give monsters who have had a worn item stolen or who have been life-saved
|
|
(used up amulet) a chance to wear replacement gear on next move
|
|
instead of having to wait until they pick something up
|
|
|
|
|
|
Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository
|
|
------------------------------------------------------------------
|
|
fix access violation when --debug:xxxx has no other args after it
|
|
setting the inverse attribute for gold had the space before "$:"
|
|
getting highlighted along with the gold field
|
|
sortloot segfaulted when filtering a subset of items (seen with 'A' command)
|
|
tty: turn off an optimization that is the suspected cause of Windows reported
|
|
partial status lines following level changes
|
|
tty: ensure that current status fields are always copied to prior status
|
|
values so that comparisons are correct
|
|
|
|
|
|
Platform- and/or Interface-Specific Fixes
|
|
-----------------------------------------
|
|
move 'perm_invent' value from flags to iflags to keep it out of save files;
|
|
affects X11, win32, and curses
|
|
windows-gui: In nethackw, there could be conflicts between menu accelerators
|
|
and an extra choice accelerator to fix H7132.
|
|
windows-gui: recognize new BL_RESET in status_update; no change in behavior yet
|
|
windows-gui: align hpbar behavior at zero hit points with tty behavior
|
|
windows-tty: Specify both width and height when creating font for width testing
|
|
windows-tty: To counter lag problems that were occuring with the Win32 console
|
|
port, implement a console back buffer to reduce the number of calls
|
|
made to WriteConsoleOutputXXX
|
|
windows-tty: Additional changes to xputc_core() and early_raw_print() to
|
|
manage the cursor position correctly as that is needed to handle
|
|
raw printing correctly
|
|
windows-tty: Added check for when we might be running off the bottom of the
|
|
screen when handling msmsg()
|
|
windows-tty: Added runtime checks to keep cursor always within bounds
|
|
windows-tty: Fix memory leaks as reported in H5779
|
|
windows-tty: Use nhraykey by default if the players keyboard layout is
|
|
non-english as reported in H4216
|
|
windows-tty: We now support changing altkeyhandler in game
|
|
windows: Added ntassert() mechanism for Windows based port use
|
|
windows: heed OPTIONS=symset:default in config file if it is present
|
|
tty: significant optimizations for performance and per field rendering
|
|
tty: use WC2_FLUSH_STATUS to buffer changes until BL_FLUSH is received
|
|
tty: support BL_RESET in status_update to force an update to all status fields
|
|
tty: stop hitpointbar from jumping to 100% health at zero hit points
|
|
unix: Makefile.src and Makefile.utl inadvertently relied on a 'gnu make'
|
|
extension when using $(VERBOSEMAKE) to reduce build-time feedback;
|
|
replace with $(QUIETCC) which operates the same but defaults to
|
|
verbose so doesn't use '$<' for multi-prerequisite targets unless
|
|
specifically requested; use 'make QUIETCC=1 <target>' to get the
|
|
3.6.1 behavior back
|
|
Qt: add Qt5 specific hints file for linux and Mac OS X (Ray Chason)
|
|
Qt: enable compiling Qt5 on Windows (Ray Chason)
|
|
Qt: entering extended commands, hide non-matching ones
|
|
Qt: remember tile and font size
|
|
|
|
|
|
General New Features
|
|
--------------------
|
|
integrate aklys feature introduced in 3.6.1 into display
|
|
status_hilite options which use comparisons may now use <= and >= in
|
|
addition to previous < and >; in 3.6.1 the latter operated as if
|
|
they were <= and >= but now behave as conventional less than and
|
|
greater than; old highlight rules using them should be updated
|
|
sortloot option has been enhanced to improve object ordering; primarily,
|
|
items of undiscovered type come out before items of discovered type
|
|
within each class or sub-class of objects
|
|
YAFM when stumbling on an undetected monster while hallucinating
|
|
make it clear when a leprechaun dodges your attack
|
|
wizard mode #wizidentify can now select individual items for permanent
|
|
identification and don't display the selection to permanently
|
|
identify everything if everything is already fully identified
|
|
spiders will occasionally spin webs when moving around
|
|
|
|
|
|
Code Cleanup and Reorganization
|
|
-------------------------------
|