$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
	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")
poison gas (stinking cloud) wasn't shown at drawbridge-up spot
prayer result which enhanced strength (fix weakness from hunger) didn't give
	a message if a change in encumbrance occurred; it came on next move
add current location within the dungeon to the Background section of ^X and
	final disclosure (it's not background but doesn't fit anywhere else)
death from something other than loss of hit points could leave hero with
	non-zero HP at end of game (during "really die?" prompt, disclosure)
added several special cases for genocide and/or wishing prompt: (cookie,
	pie, genie, watchmen)
lightning strike from Mjollnir did not make any noise
with menustyle:Full, picking 'A - autoselect all' when putting items into a
	container actually took everything out of that container
add missing 'A - autoselect all' choice for menustyle:Full when taking items
	out while looting a container
fix odd wording "The boulder triggers and fills a pit"
^X status feedback: don't report "not wearing any armor" when wearing a shield
attempting to #ride a long worm's tail could trigger impossible "worm_cross
	checking for non-adjacent location?"
avoid "The " in "The <known-artifact-but-not-The-artifact> falls down stairs."
avoid potential buffer overflow if object with very long name knocks other
	objects down stairs when dropped, thrown, or kicked there
#wizintrinsic for 'flying' didn't update status line when flying ended
#wizintrinsic for 'warn_of_mon' didn't set any type of monster (now grid bugs)
clairvoyance would show trap instead of a monster on/in that trap, which was
	intentional, but when clairvoyance finished the monster wasn't shown
nurse corpse/tin chance to convey poison resistance when eaten was not honored
make tame vampires be more aggressive when shifted to bat/fog/wolf form


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
trapped-vs-levitation/flying change broke Sting releasing hero from web
life-saving while poly'd and Unchanging wasn't restoring u.mh (HP as monster)
change in searching stopped finding unseen monsters except hiders and eels
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
X11: rollback disabling of keystroke input for PICK_NONE menus (for scrolling)


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
X11: enable menu [cancel] button for PICK_NONE menus


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
life-saving now makes swallower or grabber release hero
for ^X and enlightenment, display the information in a menu rather than a
	plain text popup, so that player can go back within the text via
	'<' (menu_previous_page) and '^' (menu_first_page) menu keys;
	needed for interfaces (tty) without text popup scrollbar support;
	end of game disclosure of attributes remains single-forward-pass


Code Cleanup and Reorganization
-------------------------------
