Files
nethack/doc/fixes36.2

222 lines
13 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
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
orctown: prevent Bad fruit #0 and some minor tuning
X11: its use of genl_status_update exposed a negative index use that could
lead to a segfault
make long extended commands list be more navigable
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
make mine town "orctown" variation a multiple level feature of the mines
Code Cleanup and Reorganization
-------------------------------