$NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.448 $ $NHDT-Date: 1524780380 2018/04/26 22:06:20 $ 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 following entries 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 avoid accessing mextra fields which haven't been allocated 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 air 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 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 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 angry" 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 cannibalism 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 at 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 increased 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 " any corpse eaten by omnivorous hero always tasted "terrible" eating the corpse of a unique non-named monster (Wizard of Yendor, Oracle, Chromatic Dragon, others) gave "The the tastes ..." when escaping the dungeon, change "you were here" annotation in dungeon overview to "you left from here" option parsing will crash if 'playmode' option is present without a value any item drained of enchantment was blamed on the player as far as shop billing was concerned, even if caused by disenchanter attack if user supplied a specific monster name when asked to choose a monster class, first prefix match was picked rather than best match ("titan" yielded S_quadruped due to being preceded by "titanothere" in mons[]) change ing_suffix() to not double final 'w' when adding 'ing' ('t=' yielded "You mime throwwing something.") using 'D' to drop when not carrying anything finished (after doing nothing) without giving any feedback for menustyles "full" and "partial" "you hear a distant squeak" might actually be nearby differentiate symset and roguesymset option menu prompts don't show monster vs. monster attack message, if the message refers to a monster that cannot be sensed by the hero umber hulk gazing at hidden mimic forces mimic to unhide show some timed hero properties in wizard-mode #timeout give quest guardians some equipment hero polyed into ghoul can only eat non-veggy corpses or eggs kicking activates statue traps pets start with apport equal to your charisma sometimes generate the random mazes with wide corridors, thick walls, or with dead ends changed to loops put throne room gold in the chest novels are made of paper, not gold movement speeds are made less predictable by using random rounding, rather than via adding a random offset some death by the-poison-was-deadly situations left stale non-zero HP shown on the status line during final disclosure when sitting at a trap spot: You sit down. You step on a level teleporter. (likewise for polymorph trap, and similar issue for web) show all statusline information in #attributes add option status_updates to prevent bottom of screen status line updates fix achievement recording bug with mines and sokoban prizes g.cubes would eat globs of green slime without harm; engulf those instead fix up true rumor about rock moles vs boots Bell of Opening could trigger segfault attempting to open some types of traps if hero was mounted automatic #overview annotation for quest summons wasn't shown if the quest entry portal was on same level as bigroom or rogue level gaining or losing strength while wearing gauntlets of power could give misleading message about already being as strong or weak as possible levitation vs encumbrance message sequencing issues: putting on boots of levitation reported reduction of encumbrance before finish-wearing and float-up messages, taking off such boots didn't report increase of encumbrance until player took another action removing a blindfold with 'A' took two turns, with 'R' (and 'T') only one, and could result in a crash if the blindfold was stolen during removal removing a blindfold and wielded weapon with 'A' could result in crash if the weapon was destroyed by various methods cmdassist help for movement prefix followed by invalid direction was strange when the direction was up, down, or self disallowed for that prefix poor message when shape-shifted vampire reverts to vampire if it has a name: The Dracula suddenly transforms and rises as Dracula. poor message when shape-shifted vampire reverts if cause of 'death' was disintegration or digestion and shifted form wasn't amorphous: The vampire bat is disintegrated. The vampire bat suddenly transforms and rises as a vampire. (fix: switch to existing alternate phrasing used for amorphous form, "reconstitute" rather than "transform") poor message when named vampire shifts shape within view: You observe a Dracula where a Dracula was. vampire shifting into fog cloud to pass under door "oozed" rather than "flowed" vampires in fog cloud shape would tend to stay that way unless killed; give them a chance to change to bat or wolf shape if not seen or far away adult green dragons and the Chromatic Dragon were blinded by gas clouds named floating eye (when hit by another monster with reflection) or named silver weapon (when hero hits silver-hating monster) could disrupt message formatting and conceivably trigger crash if name had '%' in it fix "you feel like a new man" if female human hero's polymorph attempt failed while in human form (when already poly'd, "new woman" correctly shown) fix the 'A' command to have the 'D' command's fix for C331-1 (quirk for menustyle:Combination; if user included 'a' in "which object classes?" response, to operate on applicable all items, there would still be a followup menu asking to choose specific items) eating 1 tin from stack of N (for N >= 2) on shop's floor forced hero to buy 2 using a cursed whistle in a vault will summon the guard immediately throne room's throne is occupied by a king using a grappling hook and getting pulled toward the target into water would drown hero without any chance to crawl out blinded monster who eats a carrot will have blindness cured (hero already did) the "bonesid" written into bones files when they're created so that they can be validated when loaded was incorrect for bones in the quest branch ("QBar.2" ended up being "ar.2", "QKni.4" ended up as "ni.4", and so forth) but worked anyway, because validation used same incorrect value surviving a gas spore's explosion would leave that explosion as a stale reason for death which might show up strangely ("crushed to death by a gas spore's explosion" when killed by an opening drawbridge) add database entry for "martial arts" add catch-all database entry for the polearms starting inventory for rogues specified +9 lock pick, where +/-N is meaningless fix pile mark when picking up all-but-one items while invisible improve config file error reporting when polymorphed into something with a passive counterattack, being 'killed' and returning to normal form allows a subset of counterattacks to continue after telling the player than the hero has reverted; change "Mon is splashed by your acid" to "Mon is splashed by acid" in that situation so that the message sequence doesn't look quite so strange when returning to quest nemesis' level, the message for some roles (A,S,T,W) referred to sensing presence of the quest artifact even if had been removed from that level; give an alternate message in that situation when the Amulet increased spell casting cost, nothing actually happened (aside from the message about feeling the Amulet drain the hero's power) if hero lacked sufficient energy to cast the spell if was possible to leash an adjacent pet while engulfed if leash or unleash attempt was directed at "remembered, unseen monster" glyph and yielded "there's no creature there", the glyph wasn't removed wizmode level teleport menu indicates on what level you currently are fix invisible gold symbol in status line when S_coin was set to space fix buffer overflow in wizard mode for '#' command when 'extmenu' option is on "you suddenly vomit" was given two turns before actually vomiting, so you could get that message, move a bit, then get "you can move again" after the 2 turn freeze applied along with the actual vomit give an alternate message if you vomit when stomach is empty (ie, fainting) corpses and other flammable items not subject to direct burning or fire-based erosion which were thrown or dropped into lava remained intact if a potion on the floor survived a land mine explosion and got propelled at the hero, it didn't behave like a potion if it hit adjust candelabrum's weight when candles are attached when lit candelabrum burned out, persistent inventory window showed that it was no longer lit but still showed phantom candles attached improve hilite_status, allowing multiple stops per field, and temporarily or permanently hilited fields give feedback when released from a bear trap #version output sometimes had ", and basic NetHack features." on its own line depending upon how the dynamically inserted pattern-match phrase fit #version output left out "pattern matching via " if the basic NetHack features entry was split across two lines recovery of strength lost due to weakness from hunger was vulnerable to abuse monsters hit by scroll of earth boulder did not get angry hero could "pronounce the words on the scroll" when blind (if its label is known) even while being strangled at the time hero could cast spells while poly'd into a form which can't speak (or grunt,&c) or while being strangled when poly'd into a giant and moving onto a boulder's spot, you could get "you try to move the boulder, but in vain", "however, you can easily pick it up", "you are carrying too much stuff to pick up another boulder" improve #adjust command's handling of the '$' and '#' inventory slots prevent #adjust from allowing anything to be moved into the special '-' slot sometimes rings dropped into sinks can be found in the pipes doors in special levels were always generated in vertical orientation assigning a type name to a potion on the floor which is actually a mimic could prompt "Call a stream of fluid:" (bogus 'fromsink') with perm_invent option enabled and no inventory, 'i' put up an empty menu charisma affects the leeway in demon lord bribes make Vlad slightly tougher reduce the amount of gold laying on the floor locked chests and large boxes contain more stuff make shopkeepers bill hero for burying merchandise monster holding hero takes double damage from an explosion for reaching into adjacent spot, but it was being inflicted even when hero was swallowed or beyond the explosion radius poly'd hero holding monster now takes double damage (if monster is within explosion radious) instead of inflicting that upon the monster when trying to swap places with a pet and failing due to pet being unable to move diagonally to hero's spot (grid bug or too tight squeeze), if pet became untame the map would briefly show hero at pet's location when trying to swap places with a pet and failing due to pet being trapped or disallowed diagonal move, the arrive-on-new-spot code (autopickup, trap triggering) executed even though hero didn't ultimately move being "dead inside" (self-genocide while polymorphed) conferred partial invulnerability--normal monster behavior stopped attacking hero if a fiery monster, wand of fire, or fiery explosion burned up a paper golem, it could still leave blank scrolls hero poly'd into paper or straw golem reverts to human if burned up even when Unchanging without any explanation given hero polymorphed into form which can't wear armor via 'W' (eliciting "don't even bother") could wear it via 'P' make multi-shot missiles fired by monsters be less verbose when they miss can no longer play controlled notes on musical instrument if impaired if a special level specified the appearance of a mimic and mimics had been genocided prior to creating the level, whatever random monster took the mimic's place got its intended appearance redundant "hit by gush of water" message if poly'd into iron golem or gremlin a shop object stolen from outside the shop (via grappling hook) would be left marked as 'unpaid' after the shop robbery took place, resulting in "unpaid_cost: object wasn't on any bill" when looking at inventory a shop object stolen from outside the shop could trigger a crash if that shop had never been entered by the hero shopkeepers in their own shop and priests in their own temple are no longer frightened by hero standing on scroll of scare monster the Wizard, Angels and lawful minions, the Riders, shopkeep/priest in own room are never frightened by tooled horns 'Iu' would reveal unknown container contents if carrying one unpaid item inside a hero-owned container whose contents weren't known docall for type of object could overflow its prompt buffer if there was a very long type name previously assigned whatis lookup for 'more info?' would behave strangely for plural names, either entered by player or from "N foo" stacks on the map you should not hear a whistle if you are deaf change the deity's "congratulations" message upon ascension to something which sounds a bit more archaic to fit better with the other messages prayer boon of 'fix all troubles' could get stuck in an infinite loop for TROUBLE_STUCK_IN_WALL if there was no spot to teleport into available It shouldn't be considered hypocrisy if you speed up your pet while standing on Elbereth fix 'object lost' panic if hero with lycanthropy but in human form is wielding a potion of unholy water which gets boiled/exploded by fire, causing were-transformation and drop of wielded weapon prevent segfault if pline() is called recursively (which could happen if the interface code issues a debugpline() while processing putstr()) open at yourself is the same as #loot when #force reports that a chest's lock is already broken or already unlocked, force it to be described as "a chest", even when its lock state is already known, rather than as "a broken chest" or "an unlocked chest" honor wish for "locked", "unlocked", or "broken" chest or box honor wish for "empty" container including statue, bag-o-tricks, horn-o-plenty gas spore explosion killing a gas spore which triggers a recursive explosion would have killer reason for outer call clobbered by inner one; when they were both "gas spore's explosion" it wouldn't be noticeable (see corresponding post-3.6.0 entry for more...) wizard mode 'sanity_check' gave spurious "mon not on map" warnings when mounted at the prompt for entering a level annotation, responding with erroneously removed old annotation; use to do that reorder the #droptype menu and add some separator lines moving from a pit to an adjacent pit with uncleared debris shouldn't be a fall open drawbridge spanning ice would vanish if the ice melted if a warned-of mon moved onto a spot containing a 'remembered, unseen mon' then moved off, the unseen marker was redisplayed even though the hero should now know that the remembered monster isn't there anymore 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) changing doname to use "some" instead of precise quantity when an item's dknown flag is not set could result in blind hero getting "There is a some jackal corpses here. Eat one?" and "You can only lift some of the some jackal corpses. Continue?" 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" when autopickup is overridden in a shop, always-pick-up exceptions and pickup_thrown still picked unpaid items up the fix for giving an alternate grow up message when a monster becomes a new form with the opposite sex (female gnome into male gnome lord, for example) had the logic wrong DUMPLOG: genocided and extinct species was always a blank line; vanquished creatures was just a blank line if nothing had been killed DUMPLOG: RIP tombstone was printed for characters who survived (ascended, escaped dungeon, quit, trickery or panic) DUMPLOG: pets who accompany hero during ascension or dungeon escape were already gone by the time known portion of the level map was dumped artifact creation violated illiterate conduct when artifact name was assigned, behavior intended only for creating Sting or Orcrist via naming tty: revert to pline() for issuing prompts (override MSGTYPE=hide differently) previous tty-revert fix had the override test backwards, breaking MSGTYPE save 'autodescribe' option value prior to detection or #terrain display and restore it after rather than leave it forced on humanoid pet could become hostile but still remain tame if it observed hero attacking a peaceful creature minor ^X/enlightenment bugs: grammar when poly'd into '1 hit dice' critter, missing punctuation for "You entered the dungeon N turns ago" when configured with DUMPLOG enabled, artifacts were counted twice towards final score once Moloch's Sanctum (or Astral Plane via wizard mode level teleport direct to end-game) was entered, end of game disclosure would reveal that high priests had been incorrectly flagged as extinct attempting to name an item as an artifact and failing via hand slip violates illiterate conduct crashes for 'A' above were downgraded to impossible "cursed without otmp" wizhelp: ^O is #overview in wizard mode too; #wizwhere shows dungeon layout wishing for tins sometimes yielded a tin wand replace the fix for preventing putting on a helm of opposite alignment from causing wielded Excalibur from blasting hero twice hero poly'd into vampire could drain monster down to 0 HP without killing it, triggering impossible "dmonsfree: 1 removed doesn't match 0 pending" "you observe a fog cloud where a vampire/bat was" if an unseen vampire on the far side of a closed door shifted shape to pass under that door fix mention_walls reporting secret doors as solid stone jumping over water unintentionally moved hero through that water, causing drowning if not able to water walk or fly try again to fix achievement recording bug with mines and sokoban prizes the fix for secret doors on special levels always having vertical orientation resulted in some--but not all--secret doors within vertical walls being displayed as horizontal walls while still hidden and the previous fix for the for secret doors didn't work if the level hadn't been wallified yet (Cav quest) so horizontal wall with secret door mis-displayed as a vertical wall segment could occur and both the previous fixes only worked if the level description contained an explicit DOOR directive rather than just '+' or 'S' on the map (as with lower right area of Cav 'locate' level) the fix intended for "a shop object stolen from outside the shop (via grappling hook) would be left marked as 'unpaid'" broke normal pickup, preventing any picked up item from merging with compatible stack unix: freeing mailbox data at game end crashed if MAIL came from environment unix: fix for freeing MAIL introduced a one-byte buffer overrun which could interfere with malloc/free operation unix: fix for freeing MAIL also introduced a memory leak whenever new mail is detected and MAIL comes from the environment when clairvoyance lets you move the cursor to examine the map (if it occurs when engulfed or underwater or when blessed clairvoyance finds a monster), the "for instructions type '?'" prompt could be confusing prevent Mjollnir from being auto-quivered if it's been thrown without return and then picked back up while quiver slot is empty plural of "fox" is not "foxen" gas spore explosion killing a gas spore which triggers a recursive explosion would have killer reason for outer call clobbered by inner one; "You are hit by the gas spore's explosion!" (inner call, followed by) "You are hit by the !" (outer call, possibly repeated for multiple explosions causing multiple levels of recursion) if multiple bands of blank lines were squeezed out of DUMPLOG's map, spurious blank lines appeared in the final map output cursor positioning autodescribe of a statue while hallucinating was blank tty+EDIT_GETLIN: if prompt plus existing output buffer contents (result of a prior getlin() used as default input) was long enough to wrap to second line, the wrap point could be different from when the previous input was typed, resulting it strange erase-char/kill-chars behavior Platform- and/or Interface-Specific Fixes ----------------------------------------- tiles: wrinkled spellbook had a spurious brown pixel on far right edge of tile tiles: when statues are displayed as corresponding monsters, total_tiles_used in generated src/tile.c had incorrect value 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} tty: MSGTYPE=hide could interfere with display of prompts tty: treat carriage return as a newline for input text and --More-- prompts 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 unix: enable code guarded by USE_WIN_IOCTL by default unless prevented by uncommenting #define AVOID_WIN_IOCTL in include/unixconf.h win32gui: getversionstring() was overflowing the provided Help About buffer win32gui: guard against buffer overflow in in mswin_getlin() win32gui: handle menu_color attribute win32gui: name-from-discoveries list menu selector characters were punctuation instead of letters, repeated for each class; caused by the core bug of erroneously specifying space as a selector for class header lines win32gui: allow toggling mouse_support off 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 X11/USE_XPM: [post-3.6.0 issue] the 'tiles' bug of incorrect total_tiles_used for STATUES_LOOK_LIKE_MONSTERS broke XPM manipulation of tiles data PANICTRACE: PANICTRACE_GDB used wrong value for ARGV0 when launching gdb if 'nethack -dpath' was used to specify non-default playground directory win32gui: gather raw_print error messages into a single dialog window win32tty: fix display errors when using a font with double wide or ambiguous width characters Amiga (untested): 'makedefs -z' didn't handle FILE_PREFIX correctly when building vis_tab.h and vis_tab.c 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, Raising Steam, and The Shepherd's Crown 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, graves are white 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 when moving a cursor for travel target, show if there is no known travel path to that location, if "autodescribe" is on show the reason why travel was interrupted if mention_walls is on random horses have a tiny chance of being generated saddled give feedback just before timed levitation runs out travel accepts 'm' (request menu) prefix pressing a or A when cursor positioning shows menu of "interesting" features pressing z or Z when cursor positioning cycles through valid locations for jumping, hitting with polearm, or casting a stinking cloud when moving a cursor for a jump, polearm, or stinking cloud targeting, show if the location is illegal, if "autodescribe" is on wizard-mode command #wizmakemap to recreate the current level 'goldX' boolean option to treat gold pieces as X (vs U) during BUCX filtering (should be persistent but is reset each save/restore cycle in order to avoid breaking 3.6.0 save files) for menustyle:Traditional and Combination, support BUCX filtering for item pick-up and container put-in and take-out; also for object IDing for menustyle:Full and Traditional and Combination, support BUCX filtering for the 'A' command option whatis_filter to set filtering for eligible map locations when cursor positioning blinded hero or monster who eats a nurse corpse will have blindness cured blinded hero or monster who breathes vapor from broken potion of healing, extra healing, or full healing might have blindness cured (depends on potion: full == always; extra == if not-cursed; plain == if blessed) sysconf definition BONES_POOLS to allow more bones files per level blessed scroll of fire lets you choose explosion location like stinking cloud optional sections in the config file, selected with CHOOSE new paranoid_confirm settings: wand-break to require "yes" rather than 'y' to break a wand via (a)pply, and Were-change to require "yes" rather than 'y' when hero inflicted with lycanthropy has polymorph control option force_invmenu to make commands asking for inventory items always use a menu instead of a text line query option hitpointbar to show a bar graph of hit points behind title field wielding Trollsbane prevents troll corpses from reviving wielding Demonbane prevents demons summoning friends wielding Dragonbane confers reflection wielding Ogresmasher grants 25 constitution Cleaver can hit three adjacent monsters with one swing Master Key of Thievery warns about undetected traps if wielded without gloves Master Key of Thievery always finds door and chest traps if used to lock or unlock a trapped door or chest while non-cursed (for rogues) or blessed (for non-rogues); player is offered the opportunity to disarm "Elbereth" must now be the only engraved text on a square to function "Elbereth" now erodes based on attacks by the player, not monsters scared add option herecmd_menu to make a mouse click on your character pop up a context menu, and extended command #herecmdmenu to do the same change #adjust's behavior when collecting compatible stacks; that used to occur for any #adjust which lacked a split count, now it only happens when 'adjusting' into a stack's own inventory slot a prayer result which results in uncursing some or all of the hero's items won't uncurse a worn helm of opposite alignment since that would facilitate the hero switching to another god by taking it off wielded aklys behaves like Mjollnir when thrown--it usually returns; unlike Mjollnir, it isn't limited to Valkyries or need gauntlets of power (so far, hero-only; an aklys won't return if thrown by a monster) allow 'm' prefix for wizard mode level teleport command (^V) to bypass prompt for destination and use menu of special level locations 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].* X11: more terminal-like default resources win32gui: save and load map colors from registry X11: add new character selection dialog, and obey player_selection:dialog unix: reduce makefile verbosity by default win32gui: new player selection dialog tty, X11, qt4, win32gui: compile-time option to allow some prompts remember the input 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 Ray Chason's Qt4 windowport Darshan Shaligram's pet ranged attack Jason Dorje Short's key rebinding Maxime Bacoux's new DUMPLOG: compile-time option to enable logging of end-of-game information into a text file Code Cleanup and Reorganization ------------------------------- removed some unused variables and dead code the level generator no longer uses the native pRNG