$NHDT-Branch$:$NHDT-Revision$ $NHDT-Date$ General Fixes and Modified Features ----------------------------------- doc/*.6 man pages and corresponding doc/*.txt text copies were out of date data.base entry for "lava" had wrong first name for Don Woods' attribution cursed genocide of "none" sent in monsters, but "that's enough tries" didn't update MAXPLAYERS documentation in sysconf file and accept 0 for 'no limit' wizard mode: don't include feedback about named fruit for ^X and enlightenment looking at distant objects while wearing the Eyes of the Overworld made their up-close descriptions known when not intended message when cursed wand zapped by a monster happens to explode was suppressed if hero was deaf, even though that message has no audible component support explicit 'symset:default' and 'symset:Default symbols' in options crash during startup if player name set as 'player' in defaults crash during startup if defaults file has a long line any existing vampire shape-shifted into critter (fog cloud, bat, wolf) became an unkillable critter if vampires were genocided unlike in previous versions, an uncursed scroll of enchant armor failed to uncurse the piece of armor being enchanted (change was unintentional) slice of {pizza,cake,&} pluralized as "slouse of ..." due to false match with "lice" (discovered pre-3.6.0-release) change dipping prompt to not ignore 'called' and 'named' attributes of item to be dipped avoid 'the unlabeled {scroll,spellbook} fades' when blank item is hit by water wrong message given when high priest on astral plane rejects being assigned a name (got the one for unique monsters instead of the one for priests) negative intrinsic protection shouldn't confer MC=1, "you are warded" (not possible from divine protection but is possible from eating rings) make a slight adjustment to the quickmimic() sense wording fix typo in passage 1 of The Colour of Magic fix typos in passages 2 and 6 of Thud! falling asleep when reading dull spellbook ignored sleep resistance getpos() complaint about invalid movement keystroke didn't describe meta-chars accurately 'realtime' value in xlogfile was incorrect if 'checkpoint' option was active make a previously-discovered scroll written with marker while blind have its label known so it can be read while blind #name or C for discoveries list that spanned multiple pages would exit on space instead of advancing to next page (workaround: use '>' instead) don't show the old level when you die going down the stairs because of an iron ball new high score with ", while helpless" attribute appended would erroneously result in ", while helpless" being appended to all scores allow bright aliases for colors in menucolors avoid hearing yelps when you are deaf make corpse visible if stethoscope told you about it being there sceptre of might database entry word change avoid "spellbook of novel" on discoveries list after object ID of novel add novel to discoveries list after reading one putting gold into hero-owned container on shop floor gave free credit stack splitting for dipping large quantities of potions was done poorly dipping fruit juice into enlightenment gave different result than the inverse make travel walk up to a trap and stop when the trap blocks the only way forward, instead of trying to go straight line travel will displace pets rather than stop discard travel cache when moving to a different dungeon level do not autopickup unpaid items in shops death due an unseen gas spore's explosion resulted in "killed by a died" allow optional parameter "true", "yes", "false", or "no" for boolean options actually make the castle chest not trapped level-drain resistance wasn't shown during enlightenment if it was conferred by worn/wielded equipment or by lycanthropy wizard mode enlightenment now shows more reasons for various intrinsics rehumanizing after being poly'd into vampire left hero with ability to sense humans and elves Warn_of_mon wouldn't have been able to sense giant ants if any creature were to have that ability, caused by using 0 instead of NON_PM for 'none' tone down energy vortex's drain energy attack fix message typo if tame mind flayer dies trying to eat Medusa's brains use alternate rejection message if attempting to name an unnameable monster with the name it already has cockatrice corpse no longer leaves multiple statues for shape-shifted vampire alter name of monster causing hero's death if name contains characters that could cause confusion when using record, logfile, or xlogfile later teleporting or polymorphing a sink via ring drop shouldn't depend upon being able to see it happen change "unlockable chest" to "broken chest" so that it won't be misunderstood ("capable of being unlocked" vs intended "not capable of being locked") use doname instead of xname when using '/' or ';' to look at objects on map when a pet moves reluctantly, name the top item of the pile it is reluctant to step on if the hero sees or remembers any object(s) at that spot ensure sufficient messages are given to clarify the transition from detected vampire bats to fog clouds in Vlad's tower fix "killing by kicking something weird" when kicking an object causes death guard macros available for mextra fields similar to those for oextra fields compile-time option for an alternate paniclog format for public server use make monsters forget where they stepped when fleeing or teleporting requiver pickup_thrown objects if quiver is empty make mimics mimicing walls or trees also block light stepping onto lava destroyed non-fireproof water walking boots but left other vulnerable boot types intact damage and death reasons when eating globs referred to them as corpses fix death reason when petrified (avoid redundant 'while getting stoned') use appropriate place name for drum of earthquake shakes fix unmapped branch stairs on sokoban level redraw map when hilite_pile is toggled to display the highlighting make commands that accept a count prefix for item selection show "Count:" like command repeating does make vault guard accept names starting with number fix weight of containers in special levels make the raven medusa level shortsighted fix possible segfault in lev_comp when map was too tall fix "the ice is bridged with ice" when freezing castle's moat or Medusa's sea make monsters and pets avoid poison gas clouds if it would damage them covetous monsters may choose to teleport to downstairs or ladders doppelganger posing as Rider would never change shape since doppelganger posing as Rider could never revert to innate form, protection from shape changers turned it into genuine Rider don't create globs of ooze/slime/pudding with bknown flag set so pre-known to be "uncursed" do allow globs with same curse/bless state to merge even when that state is known for one and unknown for the other; result will have bknown clear make glob merging on floor behave the same as glob merging in inventory track age of merged globs support globs for edibility temporary intrinsic restore ability to gain intrinsics from black puddings (pass globs to cpostfx) eating tainted black pudding (glob in 3.6.0, corpse in 3.4.x and 3.3.x) referred to it as "meat" (because it's not vegetarian food) fix pile mark after killing a monster carrying a potion which is destroyed don't list suit as likely candidate for Take-off if cloak blocks it only list known blank scrolls and known blank spellbooks as likely candidates when choosing an item to write on for applied magic marker make status hilites use same color names as menucolors limit monster spell aggravate monsters to either outside or inside of the Wizard's tower prevent revived unique from inheriting a user-defined name make hurtling out of water bubble on the Plane of Water handle entering water fix floor descriptions on the Planes when levitating fix warning glyph description when monster symbol coincided the warning symbol allow the same color names for status hilites and menucolors override MSGTYPE=norep while executing the ':' command if a chameleon took vampire form, it would stop periodically changing shape corpses obtained from tipping an ice box wouldn't rot away suppress "you climb up the stairs" message if verbose option is off physical damage from mind flayer attack was being inflicted twice adjust pending movement points when polymorphing into a slower creature damage inflicted by burning glob of green slime gave wrong messages monsters fleeing up the upstairs on level 1 were supposed to escape the dungeon but ended up arriving on Plane of Earth monster hitting fire-dealing monster with weapon triggered passive damage to weapon every time, when hero doing so only had 1/6 chance per hit hitting steam vortex with flammable weapon would damage the weapon with fire if a non-cursed spellbook being read becomes cursed and hero recognizes that (bknown is set), interrupt reading if a non-cursed spellbook being read becomes cursed and hero doesn't notice, don't leave it flagged as in-use (hence to be deleted during the next save/restore cycle) if contact-poison cursed book effect occurs stolen_value, used when breaking shop items from outside the shop among other times, could describe the shopkeeper as "it" when not seen when two or more shopkeepers were visible at once, 'p' command could be used to probe map for locations of other shopkeepers and arbitrary monsters vortexes and other unsolid monsters need not avoid webs barbarian and samurai can achieve basic in their special spell's skill scalpel and tsurugi can now split puddings; bashing with darts or arrows can't jumping while punished could leave ball and chain in the wrong place improve Deaf message handling for the minetown watch and shops issues with Warning when you're adjacent to an undetected hider; clearly you are aware a monster is present so this causes you to search it out allow lookup of names like Hachi when selecting monsters from the map lookup "More Info?" prompt will now tell you what it will look for on 'y' using 'R' on armor would bypass some restrictions imposed by 'T' (inner layer could be taken off from under outer layer, embedded scales could be attempted but triggered "select_off" impossible) when examining hidden monsters (probing, persistent monster detection), tell how they're hidden (under an object, on the ceiling, etc) some quest text corrections use a much tighter upper bound when summoning nasties; old method could theoretically create 200 critters at a time if a long worm inherited inventory from a previous shape, and if an egg or figurine in that inventory hatched or auto-activated, messages were given when hero could see any tail segment even if head was unseen, making it seem as if worm's inventory was kept in the visible segment Wizard will now steal any quest artifact from hero, not just own role's prevent a hostile renegade Angel of from delivering taunt messages which mention threats of retribution from that god a few types of monster (barrow wight, Nazgul, erinys) have weapon attacks that don't deal physical damage, so special damage like stoning via wielded cockatrice corpse wouldn't be inflicted non-item-using monsters who happened to be carrying scroll or wand of fire or a fire horn could use it to cure themselves of being turned into slime when looting multiple containers, add 'n' for "loot next container", change 'q' and ESC from "done with this container" to "done looting" change looting to choose ":iobrs nq" action from a menu for menustyle:Partial wand/spell/breath zaps that reached the edge of the level on the Plane of Air and "vanished into the aether" left temporary display effects on screen stop amulets and other items which aren't affected by erosion damage from being subjected to erosion damage grammar bit: polyself w/ gender change yielded "you turn into a Elvenking" grammar bit when hallucinating: "you kill poor goblin" ('the' missing for pet) some blindness cures ignored u.ucreamed some instances of stun or confusion timers were being overridden rather than incremented when new stun or confusion damage was suffered female gnome who gains level can grow up into male-only gnome lord; give an an alternate message instead of prohibiting the promotion kicked weapon which successfully hits monster vanishes from play unseen landmine explosion could result in "The statue crumbles." when using the 'O' command for regexp options (autopickup exceptions, menucolors, message types), provide opportunity to add more than one at a time [after 'add', return to add/list/remove menu] commands invoked by uppercase meta characters: M-A, M-C, M-N, M-O, M-R, M-T were missing from '? c' list of game commands (dat/hh) tweak Baalzebub's lair and clean up the map display for it symbol set definitions didn't recognize S_darkroom and S_vibrating_square wizard mode enlightenment was reporting "very fast innately" (which is not possible) for very fast hero who was innately fast when attacking a monster with a rust or corrosion or acid passive counter-attack, grease wasn't protecting the attacker's weapon the Bell of Opening now correctly reports when it opens a trapdoor/hole knocking can no longer send a monster through a trapdoor/hole and desaddle it game no longer gets confused when you break an unpaid shop item while inside a different shop shopkeepers now correctly handle nested containers and gold in containers for menustyle traditional, 'D' followed by (B|U|C|X)&m presented a menu of everything, not just invent subset matching specified BUCX categories for menustyles traditional or combination, 'A' (or object ID) followed by i displayed an inventory of everything rather than just worn items (or not fully identified items) exploding chest trap would destroy uchain while still worn if uball carried if monster shapechange message " turns into !" was given, could be "it" (if sensed telepathically and is mindless) automatic annotation for Ft.Ludios level got applied when a drawbridge became mapped, but entry there is a secret door rather than a drawbridge sortloot changed to group holy water and unholy water with water instead of placing them among the h- and u-named items sortloot changed to place diluted potion of foo after potion of foo instead of listing all diluted potions followed by all non-diluted ones digging down on a grave converted the terrain to floor but did not create a pit and uncover the grave's contents; digging again--on floor--did when feel_location removed a remembered-unseen-monster glyph from a known water location while hero was levitating, the map was redrawn showing floor instead of water at that spot Vlad's tower2 and tower3 didn't show up in wizard-mode ^O output or ^V? menu remove extra space from "All of your boil and explode." (also applies to potions freezing and to scrolls burning) effects of cursed potion of levitation were skipped if already levitating when engulfed, having swallower be killed by angry deity trying to zap hero no longer violates pacifist conduct (other penalties--reduced luck or alignment--still apply if target is something you shouldn't kill) likewise when a monster kills inself trying to prevent turning to stone or into slime that's been caused by the player, pacifism is not affected metabolism adjustments: hero poly'd into metallivore form still needs to eat; being fainted or unconscious from other than sleep now consumes nutrition at lower rate, like being asleep already did; starvation threshold shortened due to slower food use while fainting after using detection magic or #terrain while underwater, then leaving water and saving while on land, save would flag you as underwater again and then restore would limit the map display accordingly; next move would notice, retify things, and report "you are on solid land again" change #terrain used while underwater to view the regular map rather than the crippled underwater one can see or feel adjacent lava or ice when underwater farlook when underwater now reports "land" for adjacent non-{water,lava,ice} and "unreconnoitered" for non-adjacent anything, instead of "dark part of a room" for the former and either dark-room or "unexplored" for the latter depending upon whether the spot had previously been scouted monster who accidentally killed itself by zapping wand of fire or fire horn at self to prevent turning into slime was not properly killed off; it wouldn't benefit from an amulet of life saving and would trigger impossible "dmonsfree: N removed doesn't match M pending" resurrecting a shopkeeper corpse caused crash (replmon -> replshk -> inhishop -> no eshk data for temporary monster being replaced with revived shk) new character with OPTIONS=role:Valk,race:!human,align:!lawful yielded "Shall I pick your Dwarven Valkyrie's for you?" where !human forces dwarf and dwarf forces lawful, contradicting align:!lawful new character with OPTIONS=role:Valk,race:random yielded "Shall I pick your Valkyrie's race and alignment for you?" instead of honoring race:random without asking while in shop, undead turning at self causing carried, hero owned corpse to resurrect claimed it belonged to shopkeeper while in shop, stone-to-flesh at self causing carried, hero owned figurine or statue to animate claimed it belonged to shopkeeper reviving one of a stack of N corpses in a shop charged a usage fee for all N; remaining N-1 were owned by hero if carried but by shop if on floor gremlin wailing in agony should wake up nearby monsters add more lighting variance to the second bigroom variant when getpos was picking a location, typing '^' to move to the next known trap skipped some detected traps if their location was unseen describe detected door traps and chest traps as trapped door and trapped chest instead of bear trap; bear trap tile is still used on map though thrown potion that killed peaceful monster would cause "the gets argry" after the message about it being killed when poly'd into a hider and engulfed, attempt to hide via #monster was blocked but feedback said "can't hide while held" rather than "while engulfed" various monster/object/food/gold/trap detections were inconsistent in how they behaved if performed while engulfed or underwater show in inventory which monster a leash is attached to using /? to look up something by name, supplying multiple spaces (with no other characters) as the name triggered impossible "singular of null?" add support for the 'altmeta' option to the 'what-does' command ('&' or '?f') when wielded weapon becomes untouchable (after alignment change or polymorph) hero could be 'blasted by its power' twice in succession at startup, if sysconf had been read but user's own config file couldn't be read, sysconf got processed again as if it contained user's options don't give "you cannot pass through the bars" when travel is testing possible paths in the vicinity of iron bars if blind and no gloves, using 'm' to move and then 'e' could be used to locate cockatrice corpse without fatal touching (by declining to eat) it's cannabilism for a were to eat a corpse conduct: wishing for an artifact and not getting it because it already exists counts as wishing for an artifact, just like when not getting it because of quest restrictions or too many artifacts in play does avoid ring of poison resistance as starting equipment for orcish wizard gelatinous cube shouldn't be able to eat a scroll of scare monster make fireballs or cones of cold cast a skilled or higher not go through walls prevent flying monsters from hovering over unreachable underwater objects lembas wafer gives increased nutrition to elves, reduced nutrition to orcs; cram ration gives increase nutrition to dwarves when #tip's terse object drop format got interrupted by a regular message, it continued using "obj2, obj3, ..." for subsequent objects, where the sentence grammar no longer made sense (the interrupting message still follows the comma of a partial sentence--attempting to fix that seems hopeless; leaving it is better than always using verbose format) for #tip inside shop, credit was incorrectly given for spilled gold if that gold's stale location coordinates didn't happen to be inside the shop when confused scroll of light summoned lights, player would be asked what to call the scroll even if scroll of light was already identified if a visible monster becomes invisible, mark its spot with the 'remembered, unseen monster' glyph ('I' character or '?' tile) monsters can throw cockatrice eggs at hero, but there was no handling for eggs when the missile hit an intervening monster clarify that shape-shifted vampires revert to vampire form when petrified or digested; when back in 'V' form, they're vulnerable to such damage when poly'd into an engulfer which does digestion damage, a kill resulting in a level gain gave "welcome to level N+1" before "you digest " Fixes to Post-3.6.0 Problems that Were Exposed Via git Repository ------------------------------------------------------------------ fix "object lost" panic during pickup caused by sortloot revamp more sortloot revisions fix inventory menu for response of '?' to getobj (more sortloot revamp fallout) rings covered by non-cursed gloves not listed as 'R' candidates in baalz_fixup, move any monster away from the two fake pool spots switching farlook from xname to doname was giving away information for items located via object detection (quantity of detected gold) catch up win/Qt/qt_win.cpp on 18-Dec-2015 change to formatkiller() fix for long lines in config file (28-Jan-2016) made 'O' command's 'list' and 'remove' menu choices in interactive handling for menu colorings, message types, and autopickup exceptions subject to buffer overflow when picking a destination for #jump, '$' to show valid dest. is more accurate enchant armor gave "your pair of boots/gloves glow", should have been "glows" Platform- and/or Interface-Specific Fixes ----------------------------------------- tiles: wrinkled spellbook had a spurious brown pixel on far right edge of tile tty: M-N gave "Unknown command 'M-" with "'." finishing the sentence on the line below it, leaving bogus '.' displayed on the top row of the map tty: specifying all four of role, race, gender, and alignment still prompted for confirmation with "Is this ok?" before starting play tty: responding with or during role, race, &c selection behaved same as to quit; now it will pick [random] instead tty: rename struct variable 'filter' (role.c) and function 'winch()' (wintty.c) to avoid conflicts with tty: skip selector letter and selection indicator (-,+,#) during menu coloring tty: '>' no longer closes a menu window tty: if color is disabled and use_inverse is enabled, display lava in inverse video so that it is visually distinguishable from water tty: if "--More--" was written to leftmost column (beginning of second line) while hero was swallowed, cursor would end up in wrong place (at end of status line instead back on map) after message line was cleared tty: long message lines which wrap when shown on the top line might be re-displayed incorrectly by ^P for msg_window={full,combo,reverse} unix/X11: in top level Makefile, some commented out definitions of VARDATND misspelled pilemark.xbm (as pilemark.xpm) unix: options file with CR+LF line ends and an invalid option line resulted in "ad option line: "whatever-the-line-was because embedded carriage return character changed cursor's position unix: race condition with parallel make: src/Makefile might start building makedefs before finishing monst.o and objects.o; if so, util/Makefile can build them too, and they might be clobbered by simultaneous write unix: Makefile.{src,utl} ignored CPPFLAGS which is expanded by the default .c rule by GNU make so if user had a value for that in the environment, it would apply to some files but not others; explicitly override it win32gui: getversionstring() was overflowing the provided Help About buffer win32gui: guard against buffer overflow in in mswin_getlin() win32gui: handle menu_color attribute MacOSX: initial binary release was built from out of date source code that had 'BETA' and 'DEBUG' inappropriately enabled MacOSX: force TIMED_DELAY build option on so that 'runmode' run-time option is functional Qt: could issue impossible "Destroy called before we know if Menu or Text" followed by crash caused by deferencing a Null pointer if player quit immediately after creating character and declined to disclose anything X11: core bug for '`' (backtick) and #terrain commands was only noticed by X11 interface: impossible "add_menu: called before start_menu" X11: enable a scroll bar in menu windows X11: support pre-selected entries in menu windows X11: make the extended command menu be easier to use and look a little nicer X11: make the getline text entry widget display a bigger text entry area X11: color didn't work when the map was displayed as text rather than tiles X11: use grayscale monster tiles for statues General New Features -------------------- naming Sting or Orcrist now breaks illiterate conduct different feedback for reading a scroll of mail created by writing with marker reading non-cursed scroll of enchant weapon uncurses welded tin opener if hero has no jumping ability but knows the jumping spell, the #jump command will attempt to cast the spell allow moving cursor to monsters with 'm' (nearest first) and 'M' (furthest first) when asked for map location, or to objects with 'o' and 'O' allow picking a used inventory letter from menu when #adjusting zapping wand of opening at yourself, unlock carried boxes dissolve iron bars by force-fighting with wielded potion of acid poison breath leaves a trail of poison gas allow knife and stiletto as possible tin opening tools wizard mode #wizintrinsic command additional tribute passages for The Colour of Magic, The Light Fantastic, Equal Rites, Mort, Sourcery, Wyrd Sisters, Pyramids, Guards! Guards!, Eric, Moving Pictures, Reaper Man, Witches Abroad, Snuff, and Raising Steam compile-time options SIMPLE_MAIL and SERVER_ADMIN_MSG for public server use database entries for Cleaver, Sunsword, Frost and Fire brands, and polymorph trap allow showing coordinates when picking a position on the map and autodescribe option is on new status line conditions Stone Strngl Deaf Lev Fly Ride allow some extra color name aliases for menucolors and status hilites add extended command #kick when choosing an inventory item and '-' for bare-hands/fingers/no-ammo is a choice, include that in the inventory menu if player types '?' or '*' feedback from probing of long worm now includes number of segments it has monk starts with 'shuriken' pre-discovered (despite language issue...) item-using monster on or next to a fire trap can use it to be cured of turning into slime wizard mode ^G can now specify "sleeping", "male" or "female" when creating a monster REPRODUCIBLE_BUILD is new config.h setting to fetch build date+time from environment instead of using current date+time, so that later rebuild could duplicate the original (disabled by default; tested for Unix) default value for vibrating square symbol changed from yellow '^' to purple '~' allow symbol set values to be specified via char within single quotes add symbols set "plain", same as default except it uses '+' for corner walls extend wizard-mode '#stats' command 'Q' to ready an item for quick-throwing ('f') now allows the wielded weapon to be moved to quiver; if quantity is more than 1, it offers to split the stack and leave 1 wielded, otherwise it requires confirmation 'Q' will accept an item count to manually split a stack as part of it being quivered, provided the stack isn't already in the quiver slot during end of game disclosure, the vanquished monsters list can be sorted in one of several ways by answering 'a' to "disclose vanquished monsters?" when #terrain is displaying a censored version of the map (no monsters, &c), moving the cursor will display farlook's brief autodescribe feedback when monster/object/trap detection temporarily clears the map to highlight the results of such detection, farlook autodescibe can be used to view it interrupt a multi turn action if hp or pw is restored to maximum pressing d or D when cursor positioning targets doors and doorways pressing x or X when cursor positioning targets possibly unexplored location (potentially useful when using '_' [not mouse] to invoke travel) swallowers can't re-engulf hero immediately after spitting him/her out werejackals can summon foxes and coyotes; werewolves can summon wargs allow taming monkeys and apes with bananas GENERICUSERS is now a sysconf statement instead of compile-time option fountains are bright blue ray bounceback chance depends on the wall type undead #turning takes less time at higher experience level peacefuls may react when you attack other peacefuls prevent diagonal jumping through open doorways different liquids when hallucinating Platform- and/or Interface-Specific New Features ------------------------------------------------ tty: menu_overlay -option to clear screen and align menus to left tty: compile-time option to output escape codes for tile data hints unix: compile-time option MSGHANDLER to pass messages to external program unix: add CHECK_PLNAME-option to sysconf to make WIZARDS, EXPLORERS, and SHELLERS check player's character name instead of login name X11: new NetHack*highlight_prompt resource to control whether the persistent prompt line between the map and message windows for the NetHack*slow configuration will be highlighted when it's expecting input X11: NetHack*extcmd_height_delta resource can be used to adjust initial size of the extended commands menu X11: status display split into three columns to accomodate Stone/Deaf/Lev/&c; NetHack*status_condition.foreground, .background, and .showGrip resources replaced by status_condition[1-3].* NetHack Community Patches (or Variation) Included ------------------------------------------------- Malcolm Ryan's improved tin opener Ray Chason's keyboard may stop responding after locking or unlocking a door when using altkeyhandler=nhraykey.dll Ray Chason's fix: window interfaces that support transparency may give away unseen parts of the map Ray Chason's xprname should honor iflags.menu_tab_sep Ray Chason's punctuation for "That foo is really a mimic." Ray Chason's proper background tiles for lava and water Ray Chason's MS-DOS port restored to functionality with credit to Reddit user b_helyer for the fix to sys/share/pcmain.c Ray Chason's MSDOS port support for some VESA modes Darshan Shaligram's pet ranged attack Code Cleanup and Reorganization ------------------------------- removed some unused variables and dead code the level generator no longer uses the native pRNG