271 lines
16 KiB
Groff
271 lines
16 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
|
|
Unchanging hero in clay golem form will be killed when cancelled
|
|
poly'd shapechanger and hiding mimic will revert to normal when cancelled,
|
|
like werecreature in beast form and non-Unchanging hero
|
|
cancelled shapeshifter is no longer able to change shape
|
|
cancelled shapeshifter hit by polymorph magic will become uncancelled
|
|
polymorph zap which creates a new long worm (or retains an old one via wizard
|
|
mode monpolycontrol) can hit that worm multiple times (tail segments)
|
|
wishing for "orange" could yield orange or orange colored gem/potion/spellbook
|
|
a sleeping or paralyzed mon would be frightened by its reflection when
|
|
applying a mirror
|
|
prevent leash showing unseen monster as "attached to it"
|
|
gremlins seemed impervious to Sunsword's light yet a flash from a camera
|
|
caused them to cry out in pain
|
|
when objects migrate (fall down stairs) and invisible hero (w/o see invisible,
|
|
no-autopickup) descends, stairs get shown instead of object(s) on them
|
|
drum of earthquake was causing deafness but oddly enough only when used up
|
|
known bear trap was being forgotten about by a player polymorphed into a
|
|
flying monster if the player unsuccessfully tried to #untrap it and
|
|
moved onto the trap square as a result
|
|
no leash-related message is given when a leashed pet yellow light explodes
|
|
shop messages refer to shk by name even when shk is not visible but some
|
|
used pronoun "it" or "its" in same sentence; ditto for vault guards
|
|
poly'd hero and monsters could eat through iron bars in areas where walls
|
|
were flagged as non-diggable
|
|
Samurai seeing items at a distance could have them be described by their
|
|
ordinary names rather than by their Japanese names
|
|
wizard mode ^T shouldn't have been diminishing player power but it was
|
|
and hilite_status:power settings really drew attention to that
|
|
fix missing space in "would flyif you weren't levitating"
|
|
a wand of polymorph lost its magical ability for the turn just because the
|
|
player using it to engrave happened to be blind, which didn't make
|
|
a much sense
|
|
floating eye is classified as a flyer but flying is blocked while levitating,
|
|
so don't set intrinsic flying if hero is polymorphed into one
|
|
being trapped (bear trap, web, molten or solidified lava, chained to buried
|
|
iron ball) blocks both levitation and flight (note: being stuck in a
|
|
pit ends when either of those starts so doesn't apply)
|
|
change default value for the 'autodescribe' option to 'on'
|
|
Elbereth hypocrisy penalty doesn't apply if attacking a monster which isn't
|
|
frightened by Elbereth; normal scuffing of engravings still applies
|
|
Elbereth hypocrisy penalty reduced when alignment is already low
|
|
during character creation, don't unset alternate weapon when a shield gets
|
|
worn (was preventing knight from having lance set up as uswapwep)
|
|
preformatted Guidebook.txt split line in middle of "' '" for #wait command
|
|
prevent simiulated screenshot in Guidebook.txt from spanning page boundary
|
|
overview information for former hero was not being set properly when bones
|
|
file was saved, so current hero coming across a dead hero's grave
|
|
didn't have #overview feedback augmented with "final resting place"
|
|
in Guidebook.mn and Guidebook.txt, the 'I' command mis-described `IX' as
|
|
displaying inventory items whose bless/curse state is "known"
|
|
(Guidebook.tex correctly had "unknown")
|
|
|
|
|
|
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)
|
|
orctown: prevent Bad fruit #0 and some minor tuning
|
|
make long extended commands list be more navigable
|
|
simplify #wizidentify; don't rely on having bold menu entries
|
|
ensure tmp_at() structures are initialized for all code paths when swallowed
|
|
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
|
|
tty: fix an out of bounds error in tty_status_update() for BL_HUNGER case
|
|
tty: fix leftover display artifact when the last field on the row got placed
|
|
to the left of where it was previously due to it, or one of the fields
|
|
to its left, getting shorter
|
|
X11: its use of genl_status_update exposed a negative index use that could
|
|
lead to a segfault
|
|
|
|
|
|
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
|
|
X11: implement menucolors and allow menus to obey some attributes
|
|
X11: make key translations work with menus on Linux
|
|
X11: allow mouse wheel scrolling to work in menus by default
|
|
X11: handle paged menu control keys
|
|
X11: remember perm_invent window geometry
|
|
X11: handle X errors via panic
|
|
X11: don't reuse perm_invent window for picking an object
|
|
X11: obey mouse_support and allow toggling it in game
|
|
X11: obey menu movement keys
|
|
|
|
|
|
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
|
|
make mine town "orctown" variation a multiple level feature of the mines
|
|
replace #monpolycontrol command with monpolycontrol boolean option
|
|
replace #wizdebug_traveldisplay command with travel_debug boolean option
|
|
rename #wizdebug_bury command to #wizbury
|
|
|
|
|
|
Code Cleanup and Reorganization
|
|
-------------------------------
|