499 lines
31 KiB
Groff
499 lines
31 KiB
Groff
$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.192 $ $NHDT-Date: 1574882658 2019/11/27 19:24:18 $
|
|
|
|
This fixes36.3 file is here to capture information about updates in the 3.6.x
|
|
lineage following the release of 3.6.2 in May 2019. Please note, however,
|
|
that another 3.6.x release is not anticipated, and most developer
|
|
focus will shift to the next major release.
|
|
|
|
General Fixes and Modified Features
|
|
-----------------------------------
|
|
when place_object() puts a non-boulder on the map at a spot which contains
|
|
other objects, put it under all boulders in the pile rather than just
|
|
under the top one; previously, map wasn't showing a boulder there if
|
|
the top one got moved by means other than pushing
|
|
when examining the map with '/' or ';', picking a symbol which is used for
|
|
more than 4 things yielded a sentence lacking its terminating period
|
|
billing and payment issue as a result of glob coalescing
|
|
glob pricing did not consider weight properly
|
|
glob shop interaction improved to handle more of the expected scenarios
|
|
non-flying steed on Plane of Water would drown when air bubble moved hero
|
|
xans fly, but could not reach your feet if you flew
|
|
adjust vortex database entry to be consistent with fire and energy vortices
|
|
when co-located with a boulder you could sometimes swap places with pets of
|
|
any size
|
|
on rare occasions, multiple mine's end luckstones were being marked as the
|
|
prize and triggering an impossible() on a public server
|
|
make sure the correct luckstone is the prize in mine's end
|
|
free dungeon overview's bones information at end of game
|
|
free current level's bones information at end of game
|
|
free ball and chain if Punished hero dies while descending stairs or dies or
|
|
quits while swallowed; put ball and chain in bones for the stairs case
|
|
if hero dies while a thrown or kicked object is in transit, put that object
|
|
on the map in case bones data gets saved
|
|
fix a memory leak that occurred if player used wizard mode to leave and return
|
|
to the Plane of Air or Plane of Water (not possible in normal play)
|
|
free sortloot data if object handling is short-circuited by cockatrice corpse
|
|
on the Plane of Water, make water go all the way to the edges of the level
|
|
on the Plane of Air, make clouds disrupt line of sight along the edges
|
|
have '&' (whatdoes) command describe movement keystrokes instead of reporting
|
|
them as unknown or showing their number_pad action when that is Off
|
|
some improvement to the handling of endgame levels filling up with monsters
|
|
if you survive turning into green slime due to life-saving (surviving as a
|
|
green slime) then die again due to green slimes having been genocided,
|
|
the feedback was strange because it assumed that the prior message
|
|
came from answering No to "Really die?" in explore or wizard mode
|
|
various cases where objects had their bless/curse state become known weren't
|
|
updating persistent inventory window, when enabled, to reflect changes
|
|
(cited case was trying to remove cursed armor and being told of the
|
|
curse but there were lots of other situations with the same issue)
|
|
similar perm_invent issue when lock state known and/or contents known become
|
|
set for carried container
|
|
blessed scroll of remove curse read while confused might be shown to operate
|
|
on itself by perm_invent after player is told that it has disappeared
|
|
fix memory leak if corpse auto-revival attempt failed ("you feel less hassled")
|
|
allow a parent function to issue an an unplacebc() call that restricts
|
|
subsequent placebc() calls to that parent only
|
|
flying monsters could enter water on the Plane of Water but then they'd drown
|
|
unless they could also swim or else didn't need to breathe
|
|
when finding a place to put a monster on the Plane of Water, don't pick a
|
|
water location for flyers or floaters (levitate) or clingers (ceiling)
|
|
#turn worked when unable to speak despite "you chant an arcane formula"
|
|
#turn implicitly required sight due to wrong check for avoiding spanning walls
|
|
thrown or kicked light source (lit lamp, candle, oil) should emit light as it
|
|
traverses the map; dungeon features, objects, or monsters seen while
|
|
it's in transit will become part of hero's memory of the level, and
|
|
any messages delivered won't have stale light from it around the hero
|
|
unlike watching a monster trying to swap out a cursed weapon for some other
|
|
weapon and failing, watching it wield a cursed weapon didn't report
|
|
that weapon becoming welded to the monster's hand/claw/whatever
|
|
accept "hidden" as an attribute for wizard mode ^G monster creation; created
|
|
monsters which can't be seen will have their locations highlighted
|
|
don't give feedback for monster zapping a wand if a monster plays a fire horn
|
|
directed at self to burn away slime
|
|
if hero knows the number of charges in a wand or magical horn and a monster
|
|
acquires it and zaps/plays it when not in view, remove the hero's
|
|
memory of the number of charges
|
|
for wizard mode 'monpolycontrol', allow usually disallowed type 'chameleon',
|
|
'doppelganger', or 'sandestin' as answer to "change <monster> @ <x,y>
|
|
into what?" prompt when <monster> is really that type of creature
|
|
add Space, Return, and Escape to '? k' (help for menu control keys)
|
|
hero can no longer negotiate a bribe with a demon lord when deaf
|
|
wishing for "foo amulet" now yields an "amulet of foo" rather than random one
|
|
code in parse_conf_file() to trim trailing blanks/cr was skipping over them
|
|
partly eaten food with one bite left had message anomalies when eaten; the
|
|
usual "you resume your meal" case lacked the "you're finished" message
|
|
when done; eating something else in between to clobber meal context
|
|
resulted in no messages at all when restarting and finishing last bite
|
|
wizard mode ^I menu could list "Not carrying anything" after inventory items
|
|
if perm_invent option was On (even on tty where that's not supported)
|
|
wizard mode ^I with 'perm_invent' On would unintentionally filter the content
|
|
of the persistent inventory window to unIDed items if any item got
|
|
chosen to be identified (^R would fix it, as would any invent change)
|
|
change #adjust to treat carrying only gold as not having anything to adjust
|
|
saving bones with 'perm_invent' On could result in "Bad fruit #N" warnings
|
|
update persistent inventory window immediately if 'sortpack' option is toggled
|
|
grammar bit for wizard mode final disclosure; attribute section could show
|
|
"You had N experience points, 1 more were needed to attain level X+1."
|
|
if an engulfer has any worn items, hero could pick them up from inside and
|
|
they wouldn't be unworn properly, eventually triggering warnings or
|
|
worse (Juiblex will wear an amulet if created with one; a shapechanger
|
|
might wear one and then turn into an engulfer)
|
|
kicking an altar ignored god's wrath if hero injured himself during the kick
|
|
detect unseen/secret door detection/^E failed to find monsters hiding under
|
|
objects and failed to find monsters hiding at trap locations
|
|
when farlook describes a monster at a visible spot as trapped, reveal the trap
|
|
fix theft when poly'd into nymph form; 3.6.2 change made that anger the victim
|
|
hero poly'd into nymph would steal gold along with other items
|
|
change wizard mode #panic to require "yes" if 'paranoid_confirm:quit' is set
|
|
add some additional validation checks when setting up a new timer (triggered
|
|
by an ancient source comment rather than by any observed problems)
|
|
if a chaotic monk or wizard gets crowned and is given a spellbook rather than
|
|
Stormbringer as the crowning gift, don't describe the hero as having
|
|
been "chosen to steal souls for [Arioch's] glory"
|
|
for multi-shot shooting by monsters, a typo checked hero's weapon for
|
|
compatibility with ammo when monster was wielding an elven bow
|
|
when a boulder was teleported, if it landed in a pit or trap door or hole its
|
|
former location wasn't updated to show that it wasn't there anymore
|
|
(noticed in Sokoban but not limited to there)
|
|
Terry Pratchett tribute, fix typo in passage #4 for Mort ("the" -> "they");
|
|
also passage #7 for Soul Music ("genious" -> "genius");
|
|
and passage #11 for The Light Fantastic ("to" -> "do");
|
|
passage #3 for Eric ("short" -> "sort");
|
|
passage #10 for Witches Abroad ("was" -> "what")
|
|
fix typo in end_of_input() present since 3.6.0 that would prevent compilation
|
|
for NOSAVEONHANGUP+INSURANCE configuration
|
|
when a status condition becomes fatal, keep it listed as an active condition
|
|
during disclosure and/or dumplog rather than having it already reset
|
|
when a shape-shifted sandestin was turned to stone, it died and reverted to
|
|
sandestin form with 0 HP; that confused known_hitum() because
|
|
sandestins are immune to stoning; net result was monster dying twice,
|
|
triggering "dmonsfree: N removed doesn't match N+1 pending" warning;
|
|
instead of dying, make it revert to sandestin form with full health
|
|
toggling perm_invent (where supported) while swallowed or underwater didn't
|
|
necessarily update the persistent inventory window right away
|
|
have 'O' update persistent inventory window if 'implicit_uncursed',
|
|
'menucolors', or 'guicolors' (curses) is toggled or if menucolors is
|
|
On and any menu color patterns are added or removed
|
|
'O's "set <option> to what?" could be used to force a buffer overflow
|
|
'O's response to bad 'statuslines' value said "must be 2 and 3" (at one point
|
|
it was "must be between 2 and 3", change it to "must be 2 or 3")
|
|
when spellcasting monster aimed at wrong spot due to not being able to see
|
|
invisible hero, feedback could be erroneous if hero could see self
|
|
[messages used 'if (Invisible)' test where 'if (Invis)' was meant]
|
|
prevent impossible when guard tries to relocate a monster on a full level
|
|
hallucination provides partial protection from passive gaze counterattack
|
|
against hero's attack; check for that before checking for free action
|
|
feedback from blessed potion of restore ability never reported "you feel great"
|
|
due to bad logic for not-unihorn case in unfixable_trouble_count()
|
|
when rubbing a ring on a touchstone, all types of rings were treated as if
|
|
they were gems; an iron ring made a cyan streak instead of yielding
|
|
"scritch, scritch" and a gold ring made a yellow streak rather than
|
|
a golden scratch
|
|
zapping self with wand of opening or spell of knock to escape from a trap
|
|
reported "you're released from <trap>" rather than "from the <trap>"
|
|
zapping self with wand of opening or spell of knock to escape from a pit trap
|
|
didn't reset vision limits--only spots adjacent to pit were visible
|
|
wielded aklys that returned to hero when thrown while inside an engulfer left
|
|
a stale 'thrownobj' pointer that triggered "add_to_minv: obj not free"
|
|
panic if same weapon killed any engulfer via melee from inside
|
|
uarmh null pointer dereference if a helm of opposite alignment came off due
|
|
to being polymorphed
|
|
verb tense was inappropriate in some messages when a mon/pet had a name
|
|
ending in 's'
|
|
orctown booty items should have been initialized in mksobj()
|
|
query_category() and whatdoes_help() had early returns which could each leave
|
|
a temporary window around, which in turn might eventually lead to a
|
|
panic due to lack of window slots [probably moot for unmodified 3.6.x;
|
|
the query one couldn't happen unless there is a coding error for
|
|
object classes somewhere and the help one couldn't happen unless the
|
|
installed data files left 'keyhelp' missing]
|
|
ball and chain could end up too far from punished hero (triggering b&c warning
|
|
for wizard mode with sanity checking active) when crawling out of
|
|
water failed because dropping stuff left hero overly encumbered and
|
|
hero was life saved--or player declined to die--if the hero got
|
|
teleported one step further from ball and chain's current location
|
|
avoid 'object lost' panic when polymorph causes loss of levitation boots or
|
|
water walking boots which dumps hero into water where emergency
|
|
disrobing/dropping in order to crawl out chooses to drop those boots
|
|
'sortloot's attempt to group musical instruments separately from other tools
|
|
didn't work as intended due to missing 'break' in sortloot_classify()
|
|
<shift><letter> running told player about engravings as they were being moved
|
|
over but buffered output didn't show it until hero stopped, so it
|
|
wasn't possible to tell where they were, unlike all other forms of
|
|
multiple movement; so stop running if/when an engraving is reached
|
|
fix exploding land mine moving ball or chain and causing a sanity error
|
|
fix firing attached iron ball when swallowed causing a sanity error
|
|
fix vault guard impossible when he could not relocate in certain situation
|
|
fix temple priests or shopkeepers moving over other monsters
|
|
fix hero still hiding under a statue shattered by a land mine
|
|
fix helping a monster out of a pit addressing a deleted trap
|
|
fix launched rolling boulder code accessing deleted trap
|
|
fix monster stepping on a land mine code accessing deleted trap
|
|
revise 'O' to show symbol sets in the same order they appear in the symbols
|
|
file and order the sets in dat/symbols to yield a sensible symset menu
|
|
yellow dragons had green breath
|
|
partly eaten food in a bones level shop would show a non-zero sale price
|
|
while on the floor but not be placed on shop bill if picked up;
|
|
sale price should have been "no charge"
|
|
when non-empty container is dropped in shop and hero is asked whether to sell,
|
|
counting the subset of contents owned by hero vs those owned by shk
|
|
could obtain wrong answer because the container had been placed on
|
|
the floor but the 'unpaid' and 'no_charge' flags of its contents
|
|
hadn't been updated yet, they were still set for when it was carried
|
|
in a shop which doesn't care about tools: You drop a <box> containing 1 item.
|
|
<Shk> offers you <gold> for your items in your <box>. Sell them?
|
|
[plural 'items' and 'them' were including the box along with the one
|
|
item in it even though shk was only offering to buy its contents]
|
|
grammar correction for "That walking shoes is really a small mimic" when
|
|
applying a stethoscope
|
|
mimic immitating a slime mold would change fruit type when player assigned new
|
|
named fruit
|
|
parsing for the argument to 'scores' option was sloppy; "3a/o" (slash) and
|
|
"3a 1o" (space and digit one, not lowercase L) both worked but "3a o"
|
|
(just space) was supposed to but didn't
|
|
wizmakemap could leave genocided monsters on map
|
|
when entering Astral level, initial rendering of guardian angel didn't show
|
|
it as tame; noticeable if the level was entered with 'hilite_pet' On
|
|
fix a leashed pet polymorphed into a long worm staying leashed
|
|
prevent leashing unsolid monsters and monsters with no extremities
|
|
playing musical instruments gave feedback which ignored deafness
|
|
some other deafness-related message corrections
|
|
when dipping into holy/unholy water while blind (where the glow message is
|
|
suppressed), clear dipped item's bknown flag unless water potion's
|
|
bless/curse state is known
|
|
playing music while hallucinating: message misspelled "butterflies"
|
|
putting on gloves while having slippery fingers transfered slipperiness to
|
|
those gloves; taking off slippery gloves directly was disallowed but
|
|
losing them in other ways transfered slipperiness to bare fingers
|
|
when a monster reads a scroll of fire to cure sliming, don't access that
|
|
scroll's memory after it has been used up (bcsign)
|
|
monster vs monster attacks didn't handle shades or silver weapon feedback
|
|
successful alchemy would show new potion's description (color) even when blind
|
|
dipping some types of objects into oil would yield "<object> gleams with an
|
|
oily sheen" even when blind
|
|
dipping into an undiscovered potion would offer chance to give a name to the
|
|
potion even when its description wasn't known (picked up while blind)
|
|
dipping lichen corpse into acid when not blind and acid was undicovered would
|
|
not offer a chance to give a name to the potion after lichen feedback
|
|
pluralization improvement for words ending in a k-sound like "biotech"
|
|
check for whether a monster was entering a region (gas cloud) erroneously
|
|
depended upon whether or not the hero was inside the same region
|
|
all Is_*_level tests during early startup would test as true until
|
|
dungeon_topology was initialized in a new game or restored from
|
|
a save file
|
|
|
|
|
|
Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository
|
|
------------------------------------------------------------------
|
|
elemental_clog() loop needed to guard against obliteration of the monster
|
|
that was trying to be placed
|
|
using ^G to create "hidden mimic" shouldn't have marked it as undetected since
|
|
mimics 'hide' by appearing to be something else; honor "hidden" for
|
|
'hides_under' creatures if/when created at location with object(s),
|
|
also for eels and other fish if/when created at water location
|
|
for wizard mode 'wizweight' option, glob weight wasn't shown unless glob had
|
|
shop price information attached
|
|
fix for feedback when a monster plays a fire horn at self to cure green slime
|
|
ended up being used for zapping a wand of fire at self too
|
|
wizard mode ^I "not carrying anything" still claimed "not carrying anything"
|
|
if "(all items are already identified)" was given
|
|
monster throwing from stack of missiles (darts, daggers, spears) would cause
|
|
crash if it wasn't wielding a weapon (bug in multi-shot shooting fix)
|
|
surviving death while polymorphed would yield "You are a <foo>" without
|
|
terminating period
|
|
'mksobj failure' commit resulted in wrong corpse types for dying monsters
|
|
a recent intended sanity check fix inadvertently bypassed placing a thrown
|
|
chained ball back onto the floor
|
|
in symset:curses, symbol S_tree was accidentally set to horizontal line where
|
|
plus-or-minus sign was meant; also, change S_bars to not-equals sign
|
|
percentage highlighting for Xp broke up/down/changed highlighting for it;
|
|
it was flagged as having gone up every time the percentage changed
|
|
deaf change to zap_over_floor needed to be restricted to player actions only
|
|
monster vs shade attack inflicted damage despite "passes harmlessly through"
|
|
fix for feedback from musical instruments played while deaf ignored whistles
|
|
special map display symbol S_player_override renamed to S_hero_override
|
|
curses: sometimes the message window would show a blank line after a prompt
|
|
curses: the change to show map in columns 1..79 instead of 2..80 made the
|
|
highlight for '@' show up in the wrong place if clipped map had been
|
|
panned horizontally
|
|
curses+'perm_invent': menu coloring patterns which match ordinary inventory
|
|
menu might fail to match persistent inventory window because leading
|
|
article and space ("a ", "an ", "the ") is stripped off for brevity;
|
|
perform the pattern matching tests before stripping doname() prefix
|
|
tty: revert the attempt to fix "message line anomaly: if autodecribe feedback
|
|
wrapped to second line, the wrapped portion wasn't erased when a
|
|
shorter line was shown or getpos was dismissed" because it disrupted
|
|
prompts that spanned more than one line, a more significant issue
|
|
|
|
|
|
Fixes post-beta1
|
|
------------------------------------------------------------------
|
|
fix several tribute typos
|
|
pluralization correction for unlikely epoch and loch
|
|
ensure that --showpaths displays the personal configuration file last
|
|
don't strip leading slash from hallucinatory monster name "/b/tard"
|
|
quaffing unknown potion of see invisible resulted in asking what to call the
|
|
potion while updated monster display was buffered so not yet shown,
|
|
hence potentially noticeable effect was concealed from player
|
|
when Riders use their bargethrough capability, don't let them swap places with
|
|
something located at a spot where corpses can't be created (their
|
|
door opening ability was letting them exchange places with something
|
|
co-located with a closed door without opening it; if killed there,
|
|
there'd be no corpse so no auto-revive)
|
|
putting on levitation boots while on sink would crash when attempting to set
|
|
the enchantment known flag on Null 'uarmf' pointer
|
|
look-at of mimics mimicking altars got an arbitary alignment from misuse of
|
|
underlying terrain
|
|
polymorph_sink creating an altar passed a call to rn2() as an argument to a
|
|
macro which evaluates its parameter more than once
|
|
if a monster (presumably sensed but not seen) was displayed at a location
|
|
showing "remembered, unseen monster", remove that since hero now knows
|
|
something else is there (3.6.1 had similar fix for warned-of monsters)
|
|
clairvoyance showed all monsters in range, then after player viewed the map,
|
|
replaced them with "remembered, unseen monster" glyph and finally
|
|
did a normal monster refresh; the 'I' glyph step clobbers remembered
|
|
object at same spot, so skip it for locations where monster refresh
|
|
is going to immediately redisplay a monster
|
|
take holes that you avoided into consideration when you're on the brink
|
|
update window port spec to include a color-availability table that the window
|
|
port can set; merge all has_color() implementations into one central
|
|
function in src/windows.c which uses a few data checks only and
|
|
elminates multiple string function calls for each map cell update
|
|
that were being done in some cases previously
|
|
unix: fix double DLB definition in linux hints file
|
|
windows: fix --showpaths output for the data file which relies on being
|
|
constructed programmatically to incorporate the version suffix
|
|
|
|
|
|
Platform- and/or Interface-Specific Fixes or Features
|
|
-----------------------------------------------------
|
|
EDIT_GETLIN: wizard mode 'monpolycontrol' was using the getlin() answer buffer
|
|
to format the coordinate portion of the "change <monster> @ <x,y> into
|
|
what kind of monster?" prompt, resulting in "<x,y>" as default answer
|
|
EDIT_GETLIN: when naming an object or a monster use the existing name, if
|
|
there is one, as the default answer
|
|
EDIT_GETLIN: using 'O' to set message types or menu colors was overloading the
|
|
answer buffer with other stuff, resulting in bogus default response
|
|
during repeat prompting
|
|
EDIT_GETLIN: for paranoid confirmation, if answer was neither "yes" nor "no",
|
|
don't supply the rejected answer as the default when retrying
|
|
USE_FCNTL: nethack wasn't closing lock file 'perm'
|
|
curses: very tall menus tried to use selector characters a-z, A-Z, and 0-9,
|
|
but 0-9 should be reserved for counts and if the display was tall
|
|
enough for more than 62 entries, arbitrary ASCII punctuation got used
|
|
curses: when all available lines in the message window are in use,
|
|
autodescribe feedback for 'pick a position with cursor' overwrote
|
|
the last line (usually the 'pick a position' prompt/hint), sometimes
|
|
leaving part of longer underlying line's text visible
|
|
curses: if message window is only one line, cancelling some prompts with ESC
|
|
left the prompts visible on the message line instead of erasing them
|
|
curses: support EDIT_GETLIN (but like with tty, it's disabled by default) to
|
|
pre-load an earlier response as the default answer for some prompts
|
|
(however, it's skipped if the 'popup_dialog' option is On)
|
|
curses: when display windows get reconfigured (after setting align_status,
|
|
align_message, statuslines, windowborders or due to external resize),
|
|
the message window was being refreshed with most recent message and
|
|
the oldest available N-1 messages rather than next to most recent N-1.
|
|
[Still room for improvement when short lines are combined or long
|
|
ones are wrapped, where it still shows a subset of N original lines.]
|
|
curses: plug memory leak when getting a line of input is cancelled by ESC
|
|
curses: after requesting a line of input from player, next line of message
|
|
window could end up being skipped
|
|
curses: don't convert ^M (or <return> or <enter> key) into ^J; both ^J and ^M
|
|
indicate end of input when typing a line of text but as nethack
|
|
commands, ^J means run toward bottom of screen (when number_pad is
|
|
off) and ^M is not bound to any command, so accidental <return> won't
|
|
cause the hero to try to move
|
|
curses: draw map in screen columns 1..79 like tty, rather than in 2..80
|
|
curses: make text windows wider so that help feedback is more readable
|
|
curses: using ':' for toggling menu items which match a search string, in a
|
|
multi-page menu it would highlight arbitrary items on the currently
|
|
visible page in sync with lines that matched items have on other pages
|
|
curses: when map window was clipped, position bars shown to indicate which
|
|
part of the map was in view didn't work as intended, always drawing
|
|
"*--------------" for horizontal (and comparable '*' with multiple '|'
|
|
underneath for vertical) when it meant to show "---******------" if
|
|
the 2nd and 3rd fifths (for example) were currently within view
|
|
curses: support users's setting for erase char and kill char when getting a
|
|
line of input with 'popup_dialog' Off (already supported for popup On)
|
|
curses: support erase char and kill char when choosing an extended command
|
|
curses: attempting to use ^H to rush left actually executed ^G (#wizgenesis)
|
|
curses: disable the attempt to support Ctrl+Left_click as an alternate way
|
|
to generate Right_click for systems with one-button mouse or trackpad;
|
|
the mouse data passed to nethack didn't match the curses (ncurses on
|
|
OSX 10.11) documentation and things didn't work as intended
|
|
curses: menu coloring required that both 'menucolors' and 'guicolor' be On;
|
|
for menus, ignore 'guicolor' and honor more-specific 'menucolors'
|
|
curses: support symset:curses and symset:DECgraphics for map display
|
|
curses: enable the 'use_inverse' boolean option (via wincap WC_INVERSE flag)
|
|
for extended monster detection and black&white lava; forced to True
|
|
to override default of False (for tty's benefit)
|
|
curses: force 'O' command's menus for 'symset' and 'roguesymset' options to
|
|
be wider so that fewer entries with set descriptions will wrap
|
|
curses: stop restricting menu width to half the display width
|
|
curses+'perm_invent': entries were wrapping without any control; usually not
|
|
noticeable because next entry overwrote, but visible for final entry
|
|
when whole inventory fit within the available height; looked ok with
|
|
borders Off but clearly wrong for borders On
|
|
curses+'perm_invent': if too many entries for window height, last one which
|
|
fit had the next one appended (including hightlighted selector letter)
|
|
when window borders were Off
|
|
curses+'perm_invent': top line was wasted (left blank) when borders Off
|
|
curses+'perm_invent': don't highlight inventory letters since nothing is
|
|
selectable from the menu comprising the persistent inventory window
|
|
curses+'perm_invent': could crash during restore if game was saved while
|
|
hero was swallowed (invalid u.ustuck pointer; suppressing attempts to
|
|
update persistent inventory window during restore hides the problem)
|
|
curses+'popup_dialog': show the text cursor at the end of prompts for single
|
|
character input
|
|
curses+DUMPLOG: pass along old messages from save file and quest message
|
|
summaries to dumplog message history
|
|
curses+EDIT_GETLIN: when a prompt's answer was preloaded, using ESC to discard
|
|
it deleted it from the answer buffer but didn't erase it from screen
|
|
curses+EDIT_GETLIN: the preceding fix handled an answer which spanned more
|
|
than one line but didn't remove the answer properly if the prompt
|
|
portion of prompt+answer spanned more than one line
|
|
msdos: code fixes to allow a build with curses and PDCurses
|
|
msdos: added Makefile1.cross (host portion) and Makefile2.cross (target
|
|
platform portion) to assist in moving this port toward a cross-compiled
|
|
build hosted on linux/OSX/Windows with recent C dialect support; that
|
|
will also pave the way for CI automation and testing of the msdos port
|
|
build in future should the port remain on the radar; currently only
|
|
useful for testing the msdos port compile as it cannot yet build a
|
|
complete game
|
|
tty: re-do one optimization used when status conditions have all been removed
|
|
and remove another that tried to check whether condition text to be
|
|
displayed next was the same as the existing value; sometimes new
|
|
status condition wouldn't be shown unless a screen redraw was forced
|
|
tty: take two, if/when autodecribe feedback wraps past top line, clear
|
|
continuation lines and redraw map if needed when top line is cleared
|
|
['exposed by git' section has an entry for reversal of 'take one']
|
|
tty: video attributes (bold, inverse, &c) for status highlighting sometimes
|
|
were scrambled
|
|
unix: sysconf CHECK_PLNAME=1 wouldn't work if attempt to obtain unix username
|
|
failed even though it didn't need that to check player character name
|
|
unix+curses: startup error only reset terminal for tty; one noticeable
|
|
example was answering 'n' to "Destroy old game?"
|
|
vms: update install.com to include overlooked file bigrm-10.lev in nh-data.dlb
|
|
Windows: some startup error messages were not being delivered successfully
|
|
WindowsGUI: player selection dialog box layout was not being adjusted for DPI
|
|
Windows: significant changes to default directory choices; see documentation
|
|
for details
|
|
|
|
|
|
General New Features
|
|
--------------------
|
|
classify sources as released, beta, or work-in-progress via NH_DEVEL_STATUS
|
|
rather than just released vs beta via BETA
|
|
if you reach the edge of a level (relatively uncommon) and try to move off,
|
|
report that you can't go farther if the 'mention_walls' option is set
|
|
'attributes' disclosure at end of game includes number of experience points
|
|
that were needed to reach the next experience level (new for normal
|
|
play and explore mode; previously only shown for wizard mode)
|
|
report Friday-13th/phase-of-moon/time-of-day for ^X and final disclosure when
|
|
their values matter to game play (date and moon are from the start of
|
|
current session and are not dynamically updated as real time elapses;
|
|
night is a fixed range of hours using the computer's conception of
|
|
local time which could differ from player's if there are time zone or
|
|
system clock issues or simply seasonal variation based on latitude;
|
|
not new but needs to be documented somewhere other than spoilers...)
|
|
status highlighting using percentage rules now supported for experience level
|
|
and experience points; for both, percent is based on Exp progress from
|
|
the start of the current Xp level to the start of the next Xp level;
|
|
100% isn't possible so used as special case for next_Xp_lvl - 1 Exp_pt
|
|
wizard-mode: display effect to show where an unseen wished-for monster landed
|
|
for 'O's symset and roguesymset menus, mark current symbol set as preselected
|
|
curses: enable latent mouse support
|
|
curses: give menus and text windows a minimum size of 5x25 since tiny ones can
|
|
sometimes be overlooked when shown over old messages rather than map
|
|
curses+'perm_invent': since persistent inventory is narrow, strip off "a",
|
|
"an", or "the" prefix on inventory entries shown there so that a tiny
|
|
bit more of the interesting portion is visible
|
|
curses+'curses': change the curses map display to use new symbol set 'curses'
|
|
instead of hard-coded values; it attempts to show IBMgraphics-style
|
|
map using DECgraphics characters; DECgraphics can also be used as-is
|
|
fulfill a request from a blind player to have a unique overriding SYMBOL for
|
|
pets and for the player
|
|
ROGUESYMBOLS can be overridden in config files like SYMBOLS can
|
|
in symset:DECgraphics, set S_altar to 'pi' (was default '_'), S_bars to
|
|
not-equals sign (was 'pi')
|
|
|
|
|
|
NetHack Community Patches (or Variation) Included
|
|
-------------------------------------------------
|
|
add a couple of engraving suggestions in pull request #79
|
|
chasonr's faster method to write characters to msdos VGA in pull request #220
|
|
chasonr's msdos Makefile.gcc pdcurses build changes in pull request #243
|
|
autopickup exception priority change in pull request #226
|
|
FIQ's curses (PDCurses) number pad changes in pull request #247
|
|
|
|
|
|
Code Cleanup and Reorganization
|
|
-------------------------------
|
|
began to add some function caller BREADCRUMBS to aid debugging
|
|
flag existing occurrences of "You hear" as "Deaf-aware" to aid in
|
|
future maintenance
|
|
|
|
|
|
|