$NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.107 $ $NHDT-Date: 1582364458 2020/02/22 09:40:58 $ General Fixes and Modified Features ----------------------------------- hero polymorphed into a vampire can use #monster to shape-shift rather than just do a one-shot polymorph into bat/cloud/wolf and shifted vampire hero can use #monster again to take on another form (randomly chosen among the shiftable shapes and true vampire form) adjust bones filename buffer sizes to accommodate suffix fix internal self-recover to work with recent fields added to checkpoint file improvements to pronoun usage when hallucinating function calls made from mapglyph based on dungeon level are now called once per level fast hero could have random clairvoyance happen more than once on same turn using 'Q' on wielded weapon would offer to split stack; make using 'w' on a quivered stack behave similarly weight for giant spider was too low for creature of size 'large'; weight for giant beetle was much too low for 'large' leave some menu items out of "invert all" via '@' when their inclusion would degrade the usefulness of that interface feature change crysknife from mineral to bone and worm tooth from unspecified to bone worn meat ring shouldn't cause increased hunger; neither should fake Amulet worn +0 ring of protection should cause increased hunger if it is the only source of extrinsic Protection monster wielding Stormbringer or healer's Staff against another monster would heal the hero instead of the wielding monster when draining life change twoweapon feedback from "not a weapon" to "not a suitable weapon" don't allow twoweapon combat if either weapon is a bow, crossbow, or sling drum of earthquake feedback reported various things (fountains, thrones, &c) falling into a chasm but they remained intact because trap creation had been changed to not clobber such things (so couldn't make pits) make earthquake which hits a secret door or a secret corridor reveal it wizard mode wishing for "Amulet of Yendor" had 50:50 chance for true Amulet or a cheap plastic imitation; recognize "real Amulet of Yendor" and "fake Amulet of Yendor" to precisely specify either of them but also take away the 50% chance of yielding a fake one when neither real nor fake is specified unpaid globs showed weight info unconditionally outside of wizmode walking out of tethered-to-buried-object trap condition was supposed to reinstate punishment but wasn't finding the buried iron ball because the trap condition was cleared first to indicate escape; result was attached chain that got dragged around but had no ball attached when poly'd into a giant and moving onto a boulder's spot, message given was confused about whether autopickup would occur so could be misleading random role selection wasn't honoring unwanted alignment(s) properly if at the edge of the map window, trying to move farther fails but used a turn hero can no longer wear blindfold/towel/lenses when poly'd into headless form revamp achievement tracking for exploring Mine's End and Sokoban (by acquiring luckstone and bag of holding or amulet of reflection, respectively) throttle long worm growth rate and HP accumulation poly'd hero was able to zap wands, apply tools, and #rub objects without having any hands spellcasting monster got an extra move after casting allow defining #wizgenesis quantity in the prompt digging through iron bars from an adjacent pit made a pit on top of the bars give feedback if controlled level teleport attempt fails because hero is already on the bottom level and player tries to go even deeper unseen pet that drowned didn't give "you have a sad feeling" message prevent ravens from blinding other ravens: /corvus oculum corvi non eruit/ have ^X provide more information when held or swallowed avoid divide by 0 crash if 'bogusmon' (file of bogus monster types) is empty Fixes to 3.7.0-x Problems that Were Exposed Via git Repository ------------------------------------------------------------------ fix compile when DLB isn't defined urealtime.realtime was being incorrectly calculated revised "mysterious force" when climbing out of gehennom could generate warnings about "rn2(0) attempted" or "rn2(-n) attempted" after 'w' on split stack patch, wielding '-' would cause an object_lost panic same patch allowed partial stack from getobj to replace cursed wielded weapon if the orc-town version of mine town has been loaded, creation of orc zombies or orc mummies would name them as part of the town raiding orc clan autounlock of door or chest took no time; chest case depended on whether anything got looted along with the unlocking autounlock with artifact unlocking tool didn't do touch check on that tool autounlock picked Rogue's artifact key over lock-pick or credit card (or ordinary key depending upon invent order) even for non-rogues who would be blasted when touching it wielded aklys had its "(tethered weapon...)" description scrambled randomized trap name could pick trap #0 which isn't a trap and yielded "water" if running and Blind or Stunned or Fumbling or Dex < 10, encountering a closed door orthogonally would keep reporting "ouch! you bump into a door" repeatedly until eventually interrupted by approaching monster or hunger or ^C data.base lookup of an entry with any blank lines would falsely claim that "'data' file in wrong fromat or corrupted" after some extra checks were added while investigating tab handling anomalies using nhl_error() to report a Lua processing problem would clobber the stack level teleporation's "You materialize on a different level!" could be given out of sequence with other arrival messages creating Mine Town variant 1 (Orcish Town) sometimes complained about being unable to place lregion type 1 and failed to have any staircase up prevent "you materialize on a different level" after "a mysterious force prevents you from descending" if you try to level teleport past the stairs down from the quest home level before being granted access set g.context.botl for glove and wielding actions that could start or end bare-handedness in support of condtests[bl_bareh] reinstate ranked ordering of the status condition fields grammar for messages about a monster removing items from a container was bad some new status conditions didn't always update when they should Platform- and/or Interface-Specific Fixes ----------------------------------------- msdos: Add -DSTATUES_LOOK_LIKE_MONSTERS to Makefile1.cross so the VESA mode can display statue glyphs. tty: role and race selection menus weren't filtering out potential choices which got excluded by OPTIONS=align:!lawful or !neutral or !chaotic windows: update for new status condition fields General New Features -------------------- if a killer bee encounters a lump of royal jelly and there is no queen bee on the level, the bee will eat the jelly and become a new queen automatic annotation "gateway to Moloch's Sanctum" for vibrating square level once that square's location becomes known (found or magic mapped); goes away once sanctum temple is found (entered or high altar mapped) savefile: add support to deconstruct internal data structures down into their individual fields and save those fields instead of the entire struct savefile: use little-endian format for fields where that makes a difference replace build-time level compiler and dungeon compiler with run-time loading of the dungeon and level descriptions and interpreting them via Lua split off some of the functionality that was in makedefs (compiled-in options build date/time, etc) so that it can be built by a cross-compiler and accessed on the target platform replace quest.txt and associated conversion to quest.dat via makedefs with Lua quest texts loaded at runtime some altars are displayed in different colors (for tty and curses at least) add 'quick_farsight' option to provide some control over random clairvoyance where pausing to be able to browse temporarily visible aspects of the revealed map can seem intrusive; doesn't affect clairvoyance spell replace "money" in in-game texts with "gold" when hallucinating, see hallucinated currencies instead of bits for an ale when hallucinating, see hallucinated liquids when looking at water or lava on the map applying a spellbook hints about read charges left wizard mode wishing for level topology can now create hidden doors (ask for "secret door" when at a door or wall location), hidden corridor spots ("secret corridor" at a corridor location), and clouds tiny chance for randomly created spellbooks to be Discworld novels instead of having only one in the first book or scroll shop created (won't occur in hero's initial inventory or NPC priest inventory or be bestowed as a prayer boon or be found in statues) 'goldX', 'implicit_uncursed', and 'mention_walls' options changed to be persistent across save/restore wearing a wet towel confers "half damage from poison gas" attribute for end of game disclosure and dumplog, show 'achievements' (previously only available as an encoded value in xlogfile) along with 'conduct' more grades of self-appearance than beautiful or handsome vs ugly when 'color' if Off and 'use_inverse' is On, draw ice on the map in inverse video if it uses the same character as room floor or as dark floor new 'mention_decor' option; when On, describe dungeon features being stepped on or floated/flown over even when they're not covered by objects applying royal jelly on an egg kills, revives, or changes the egg intelligent monsters pick up and rummage through containers toggling 'travel' option Off now only inhibits travel by mouse click, not by '_' command where choosing the destination provides a chance to cancel different glyphs and symbols for stone and unexplored areas new glyph GLYPH_NOTHING was added so !dark_room has something to be set to now that stone could be mapped to an entirely different symbol added several new status conditions all of which are opt-in except the new cond_grab and cond_lava which are opt-out tipping your cap might get a response special levels can be flipped horizontally and/or vertically Platform- and/or Interface-Specific New Features ------------------------------------------------ teach unix/Makefile.doc how to make Guidebook.dat, an unpaginated copy of Guidebook.txt NetHack Community Patches (or Variation) Included ------------------------------------------------- hallucinatory trap names from github pull request #174 autounlock feature originally from unnethack in github pull request #228 replace "You feel cold" message for freezing unseen door (github #265) applying a candelabrum with no candles gives a tip (github #265) candelabrum now reads "(n of 7 candles attached)" (github #265) show appropriate message on throne when crowned (github #265) choir chanting, bathing in darkness for death by Moloch (github #265) remove "iron hook" unidentified description (github #265) suppress "Unknown command" messages in the dumplog. (github #265) give player message informing them they can use #enhance (github #265) neutral sacrifices disappear in a cloud of smoke (github #265) call potion bottles by nonsensical names if hallucinating (github #265) add a default message for chatting to gnomes (github #265) better reporting directions for impossible() (github #265) underwater fire scroll causes vaporization (github #265) default shk sell prompt to N (github #265) teach non-mindless monsters about the Castle trapdoors (github #265) always print a message when the hero teleports (github #265) always print a message when the hero level teleports (github #265) remove Sokoban luck penalties for actions you can't cheat with (github #260) sounds for minotaurs (github #298) correct the Guidebook descriptions for msdos video_width and video_height to state that they work with video:vesa; the video:vga setting that was described there forces the 640x480x16 mode where video_width and video_height don't operate (github #294) redo rndmonst() to operate in a single pass (github pull request #286) Code Cleanup and Reorganization ------------------------------- new core file insight.c - move enlightenment and conduct from cmd.c to it, also move vanquished, genocided, and extinct monsters from end.c, and move one-line stethoscope/probing feedback from priest.c move majority of global variables into instance_globals struct g move zeroobj, zeromonst, zeroany into const_globals struct cg remove STATIC_DCL, STATIC_OVL, STATIC_VAR, STATIC_PTR old Qt moved from win/Qt to win/Qt3 and files renamed to use qt3_ prefix more current Qt for Qt version 4 and 5 moved from win/Qt4 to win/Qt; qt4 moniker changed to qt_ window-port-interface: add_menu() modified to take a more general itemflags parameter to support uses beyond just 'preselected' window-port-interface: start_menu() modified to take a new mbehavior parameter add some bounds checking to tabexpand (doesn't prevent the apparent compiler optimization bug that put homebrew OSX executable into endless loop) unified breamm and breamu added some stair helper functions unified the code for finding a queen bee unified the code for multishot class bonus code unified the code for obtaining the inventory letter value for sortloot unified the code for (un)locking boxes in inventory unified the code for finding room pos for some features unified the code for revealing hiding monsters for mvm attacks