make rank() static again
[NetHack.git] / doc / fixes3-7-0.txt
blobd4b8d1671e981c1d7fc7ae03ccf06ecf8c0adc8a
1 NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1533 $ $NHDT-Date: 1738638877 2025/02/03 19:14:37 $
3 General Fixes and Modified Features
4 -----------------------------------
5 hero polymorphed into a vampire can use #monster to shape-shift rather than
6         just do a one-shot polymorph into bat/cloud/wolf and shifted vampire
7         hero can use #monster again to take on another form (randomly chosen
8         among the shiftable shapes and true vampire form)
9 adjust bones filename buffer sizes to accommodate suffix
10 fix internal self-recover to work with recent fields added to checkpoint file
11 improvements to pronoun usage when hallucinating
12 function calls made from map_glyphinfo() based on dungeon level are now called
13         once per level
14 fast hero could have random clairvoyance happen more than once on same turn
15 using 'Q' on wielded weapon would offer to split stack; make using 'w' on a
16         quivered stack behave similarly
17 weight for giant spider was too low for creature of size 'large';
18         weight for giant beetle was much too low for 'large'
19 leave some menu items out of "invert all" via '@' when their inclusion would
20         degrade the usefulness of that interface feature
21 change crysknife from mineral to bone and worm tooth from unspecified to bone
22 worn meat ring shouldn't cause increased hunger; neither should fake Amulet
23 worn +0 ring of protection should cause increased hunger if it is the only
24         source of extrinsic Protection
25 monster wielding Stormbringer or healer's Staff against another monster would
26         heal the hero instead of the wielding monster when draining life
27 change twoweapon feedback from "not a weapon" to "not a suitable weapon"
28 don't allow twoweapon combat if either weapon is a bow, crossbow, or sling
29         [later: or arrows, bolts, and missiles (darts, shuriken, boomerangs)]
30 drum of earthquake feedback reported various things (fountains, thrones, &c)
31         falling into a chasm but they remained intact because trap creation
32         had been changed to not clobber such things (so couldn't make pits)
33 make earthquake which hits a secret door or a secret corridor reveal it
34 wizard mode wishing for "Amulet of Yendor" had 50:50 chance for true Amulet
35         or a cheap plastic imitation; recognize "real Amulet of Yendor" and
36         "fake Amulet of Yendor" to precisely specify either of them but also
37         take away the 50% chance of yielding a fake one when neither real nor
38         fake is specified
39 unpaid globs showed weight info unconditionally outside of wizmode
40 walking out of tethered-to-buried-object trap condition was supposed to
41         reinstate punishment but wasn't finding the buried iron ball because
42         the trap condition was cleared first to indicate escape; result was
43         attached chain that got dragged around but had no ball attached
44 when poly'd into a giant and moving onto a boulder's spot, message given was
45         confused about whether autopickup would occur so could be misleading
46 random role selection wasn't honoring unwanted alignment(s) properly
47 if at the edge of the map window, trying to move farther fails but used a turn
48 hero can no longer wear blindfold/towel/lenses when poly'd into headless form
49 revamp achievement tracking for exploring Mine's End and Sokoban (by acquiring
50         luckstone and bag of holding or amulet of reflection, respectively)
51 throttle long worm growth rate and HP accumulation
52 poly'd hero was able to zap wands, apply tools, and #rub objects without
53         having any hands
54 spellcasting monster got an extra move after casting
55 allow defining #wizgenesis quantity in the prompt
56 digging through iron bars from an adjacent pit made a pit on top of the bars
57 give feedback if controlled level teleport attempt fails because hero is
58         already on the bottom level and player tries to go even deeper
59 unseen pet that drowned didn't give "you have a sad feeling" message
60 prevent ravens from blinding other ravens: /corvus oculum corvi non eruit/
61 have ^X provide more information when held or swallowed
62 display wasn't updating immediately after toggling hilite_pet option
63 randomly choosing role could lead to crash via segfault
64 if eel bite attack caused hero to move (killed + rehumanized + crawled out
65         of water), its grab attack could succeed even if no longer adjacent
66 specifying a count when picking [part of] a stack of scrolls of scare monster
67         ignored that count and the whole stack was affected
68 wizmakemap didn't account for unique monsters and didn't correct monster
69         birth counts
70 generate objects (eg. statues) with genocided or extinct monster classes
71         in special levels, if requested
72 if the orc-town version of mine town has been loaded, creation of orc zombies
73         or orc mummies would name them as part of the town raiding orc clan
74 when punished, involuntarily teleporting and landing within chain range of
75         attached ball while encumbered worse than burdened could trigger
76         "remove_object: obj not on floor" panic on hero's next move
77 update persistent inventory when 'menu_headings' or 'sortloot' options change
78 update persistent inventory when putting on a helmet causes it to auto-curse
79 inventory cursing caused by "this water's no good" effect when drinking from
80         a fountain didn't update persistent inventory window
81 leashing or unleashing pets wasn't updating persistent inventory window
82 when the wetness of a towel in inventory changed, persistent inventory wasn't
83         updated to show that
84 using wizard mode identify to ID 'all' updated perm_invent window but IDing
85         specific items--even every one of them--did not
86 hold_another_object added item to inventory first, then maybe removed and
87         dropped it, resulting in spurious add and remove perm_invent updates
88 when hold_another_object fails while hero is swallowed, drop the item into
89         swallower's inventory instead of onto the floor
90 hold_another_object (for wishing, horn of plenty, theft while poly'd, other
91         non-pickup actions giving hero another inventory item) wasn't
92         reporting change in encumbrance; that would catch up on next turn but
93         could be off during additional move(s) for current turn
94 hold_another_object used hardcoded Stressed to limit carrying instead of
95         using the 'pickup_burden' option for that
96 transforming a potion by dipping a unicorn horn into it could result in the
97         potion being dropped due to 'pickup_burden' if encumbrance was already
98         over threshold before dipping but within it after removal from invent
99 fix priest created inside temple wall
100 fix vault guard occasionally encasing monsters in stone
101 tone down scare monster by excluding humans and uniques
102 lock the castle chest
103 revamp amnesia to forget skills instead of objects or maps
104 when Punished and carrying the iron ball and levitating, hurtling in the
105         opposite direction of a thrown object didn't bring along the chain
106 recognize "kirin" as alias for "ki-rin" when asked to create a monster
107 make unique swallowing monsters (Juiblex) resist magical digging from inside
108 correctly account for fuel remaining when lit candles are attached
109         to candelabrum (the previous code would make the game unwinnable if
110         there were 15 or fewer turns remaining)
111 praying on an unaligned altar outside of Gehennom behaved like an ordinary
112         prayer; make that always fail
113 tribute (Discworld snippets) typos, in book order rather than fix order:
114         Sourcery passage #4 "the moment the words were out of your mouth" ->
115          "the moment and the words out of your mouth" where "were" didn't
116          belong and awkward phrasing because of it caused "and" to be removed
117          (would be much clearer if optional comma after "moment" was included)
118         Moving Pictures passage #10 initial single quote should be double,
119          #12 "or" -> "of", #14 second instance of "megalomaniac" misspelled
120         Lords and Ladies passage #5, near end add missing opening double
121          quote, passage #6 first footnote, insert omitted "be", passage #7
122          last paragraph, "to" -> "be"
123         Men at Arms passage #1, italicize /for/, passage #2, insert omitted
124          word "had": 'it was /fate/ that _had_ let Edward'
125         Interesting Times passage #1, italicize several words
126         Feet of Clay passage #1, second "does not need" -> "doesn't even need"
127         Hogfather passage #7 missing initial double quote for "Oh, just ...",
128          also #7 insert missing "you" into "Why are you feeling [...]"
129         Soul Music passage #1, italicize /feel/, #8, "fossile" -> "fossil"
130         Jingo passage #2 "Vines" -> "Vimes", "profferred" -> "proffered",
131          missing opening single quote on second sentence of Lord Downey's
132          line, passage #11 both in footnote:  "genious" -> "genius",
133          "was, oddly enough, was one [...]" -> "was, oddly enough, one [...]"
134         The Fifth Elephant #1, italicize /always/, #9, "dublet" -> "doublet"
135         The Truth #1, italicize several words
136         Thief of Time #2, "gold starts" -> "gold stars"
137         A Hat Full of Sky passage #9 "though" -> "thought"
138         Death quotes #29, "metaphore" -> "metaphor"
139         various, including Death quotes:  use two spaces to separate sentences
140 unicorn corpses and wraith corpses could be sacrificed even if "too old"
141 hero polymorphed into a hider and hiding was not unhidden when teleporting
142 impose tighter restraints on 'summon nasties', both for spellcasting monsters
143         and post-Wizard harassment
144 prevent swallowing monster ending up in a solid wall if it killed vault guard
145 fix attached ball getting deallocated if swallowed, going down into a pit,
146         and saving
147 level compiler creates correct novel with supplied name
148 for farlook, describe water in the castle moat and in Juiblex's swamp as moat
149         and as swamp, respectively, rather than just as "water"
150 make hezrous emit poison clouds when they move
151 make vrocks emit a poison cloud when they flee
152 stepping from one type of terrain to another was triggering an unnecessary
153         status update
154 make shriekers summon baby purple worms if purple worms would be too tough
155 make non-tame (baby) purple worms eat corpses off the ground
156 make baby purple worms attack shriekers
157 make hero polymorphed into baby purple worm warned against shriekers
158 confused scroll of light summons tame cancelled lights
159 potions of hallucination can give enlightenment
160 add a small chance of surviving food poisoning
161 deliberate level teleporter activation ignores magic resistance
162 auto-id scroll of remove curse when a known buc-state was changed
163 demon lords hate Demonbane
164 pets avoid eating shapeshifter corpses unless starving or nearly feral
165 blessed scroll of teleportation gives a single controlled teleport
166 allow opening a tin without interruption if slimed
167 tell player when wielding a different weapon toggles off dual-wielding
168 object taking erosion damage might give feedback message when out of view
169         or not give such when in view, depending on stale value of 'bhitpos'
170         [cited case assumed message came from drowned monster's dropped
171         inventory when out-of-view ice melted]
172 it's possible to wish for tins of the Riders in wizard mode; eating one is
173         fatal but if you're life-saved or decline to die, the game crashed
174 revival via undead turning of corpse carried by hero said "your <mon> corpse
175         comes alive" even when revived monster was undead
176 prevent searching or waiting next to a hostile monster if boolean option
177         safe_wait is on - override with 'm'
178 prevent searching or waiting if hero is slimed, stoning, strangled,
179         or deadly ill if safe_wait is on - override with 'm'
180 allow random mimics to show up mimicking more furniture than just stairs
181 scatter exploding bag of holding contents instead of outright deleting them
182 male hero poly'd into nymph chooses charm vs seduce message based on being
183         male rather than on all nymphs being female but charm message was
184         using hardcoded pronouns She,her for target monster--wrong for male
185         target and noticeable if "<mon> finishes taking off his suit" is given
186 hostile monsters with a ranged attack try to stay away from melee range
187 allow displacing peaceful creatures
188 unicorn horns don't restore attribute loss anymore
189 when a shop is changed from food to health food, change room type to match
190 wish parsing of things containing monster names would accept all supported
191         alternate spellings if they occurred at the end ("corpse of mumakil")
192         but only some when they occurred elsewhere ("gray-elf corpse" worked,
193         "mumakil corpse" yielded "does not exist") depending upon name length
194 couldn't wish for werecreature corpse or tin because monster name lookup
195         always matched the beast form which is flagged no-corpse; switch to
196         human form for "were<creature>"
197 wishing for werecreature figurine always made one that created the monster in
198         beast form if activated; allow "human were<creature>" to explicitly
199         specify werecreature's human form (for corpses and tins as well as
200         figurines); override the restriction against human figurines for that
201 wishing for "royal jelly" yielded "lump of royal jelly" as a special case, but
202         other 'of' items such as "clove of garlic", "sprig of wolfsbane", or
203         "piece of cloth" didn't allow using their post-of words as shorthand
204 monster or object detection found semi-dead vault guard at <0,0> while
205         traversing fmon list; monster detection gave misleading feedback
206         (blank map instead of 'strange feeling') if there were no other
207         monsters on level; likewise object detection and guard's minvent
208 squadprob[] in mkroom.c was defined with 5 elements but initialized only 4
209         resulting in giant ants sometimes
210 allow nurses heal attack when wielding a non-weapon/weaptool
211 if riding or levitating, hero could apply bullwhip downward to pull up things
212         from underwater or lava; feedback implied the item was on the surface
213 some monster code was checking whether pets or engulfers were eating green
214         slime by checking for green slime corpse instead of glob
215 change light radius of stack of candles to square root
216 could get redundate "mon hits other-mon" messages when mon wields an artifact
217 failed untrap while mounted that moved hero onto the trap would leave steed
218         with stale coordinates, triggering warnings if 'sanity_check' is On
219 when digging a pit results in it being filled by adjacent pool or lava, any
220         objects at the spot weren't subjected to water or fire damage;
221         also, riding hero's steed wasn't subjected to immersion either
222 after "double trouble", cloned Wizard would wait until he had suffered some
223         damage or hero moved into direct view; keep STRAT_WAIT for original
224         Wizard but avoid that for clones
225 beyond turn 100000, prayer timeout is longer (scaling with game length)
226 falling while going down stairs and dropping items due to encumbrance or
227         punishment wasn't subjecting fragile ones to breakage
228 objects scattered by an explosion which land on water or lava weren't affected
229         by the water or lava
230 change mkclass() to usually honor (always honor for L class) the hell-only and
231         never-in-hell monster creation flags; no more achi-lich in the Castle
232         (nor master lich there unless demilich gets a potion of gain level)
233 thieving monster could be killed while hero was removing armor, triggering
234         warning "stealarm(): dead monster stealing" when taking-off finished
235 petrifying a long worm and then reanimating it handled tail incorrectly;
236         with sanity_check On, X coordinate of head segment was reported as 0
237 attempting to read a novel while blind reported "you can't read the mystic
238         runes" like for a spellbook; use "you can't read the words" for novel
239 don't let life draining reduce a monster's max HP below its level + 1
240 report "<Mon> expires" rather than "<Mon> dies" if polymorphed hero kills a
241         non-living monster (golem, vortex) with life drain (vampire bite)
242 allow hero in silver-hating form to ring the silver bell but only if on/over
243         the vibrating square
244 reading the Book of the Dead while blind is allowed; doing so gives
245         "you turn the pages of the Book of the Dead" and the type of item
246         becomes discovered, but the object wasn't being flagged as 'dknown'
247         so if not seen yet it remained "a spellbook" in hero's inventory
248 reading cursed Book of the Dead while blind gave feedback for sighted hero
249 reading non-cursed Book of the Dead after prepping with the other tools gave
250         a message referring to those as "artifacts" if either of them were
251         cursed; those unique items aren't artifacts so use "relics" instead
252 zapping a line of boulders with striking or force bolt was updating 'couldsee'
253         but deferring 'cansee', resulting in seeing the first boulder fracture
254         and only hearing that happen for the others despite coming into view
255 the default engraving, epitaph, and bogus monster inserted by 'makedefs -s'
256         (3.6.6 fix for empty source data file) lacked terminating newline, so
257         when the corresponding file wasn't actually empty its first line ended
258         up concatenated; default portion of the bad combined entry would be
259         decrypted properly but the portion from the file's first line wouldn't
260 if the Wizard of Yendor fled up the stairs on level 1, the game would behave
261         as if he was still in play, but he wouldn't be on migrating monsters
262         list so couldn't be brought back and wouldn't appear on Plane of Earth
263         (stale non-zero value for context.no_of_wizards)
264 if a mind flayer's psychic blast targeted a hidden monster, feedback named
265         the monster but it wasn't brought out of hiding
266 hero poly'd into a mind flayer who used #monster to emit a psychic blast was
267         able to harm mindless monsters with it
268 some hero attacks that should have gotten a skill bonus or penalty didn't
269 change internal name of "<foo> venom" to "splash of <foo> venom"
270 some operations that made sense to handle venom ('D', scroll of identify, no
271         doubt others) ignored it because venom is suppressed from packorder;
272         matters for wizard mode or for normal play that loads wizard bones
273 singularize "splashes" to "splash" instead of "splashe"
274 treat slinging gems and tossing or slinging stones at unicorns as attacks
275 give rot-away timer instead of revive timer to corpses of cancelled trolls
276 switch revive timer to rot-away timer if a troll corpse gets cancelled
277 uncancel an ice troll if its corpse is put into an ice box; give corpse a
278         revive timer if later taken out
279 splitting a stack of candy bars gave new wrapper text depending upon the
280         obj->o_id value assigned; keep existing text for both halves of stack
281         (side-effect: separate candy bars usually won't merge anymore)
282 describing tin variety (deep fried, pureed, &c) relied on the 'contents known'
283         flag but object identification wasn't setting obj->cknown for tins
284 wizard mode #wizintrinsic: setting Levitation wouldn't block Flying as
285         intended because the check for that was being made too soon
286 chatting to the quest leader in wizard mode with sufficient experience level
287         and insufficient piety, player is asked whether alignment should be
288         boosted; answering 'n' resulted in being prompted a second time
289 end of game inventory disclosure passed an inappropriate argument to the
290         inventory display routine; not noticeable for tty and curses,
291         noticeable but not harmful for X11, and slightly harmful for Qt
292 turning into slime rendered hero as slime one turn too soon
293 avoid potential infinite loop if hangup occurs at ring "right or left?" prompt
294 randomize the turns where accessories and extrinsics affect nutrition
295 handle being interrupted by approaching monsters more consistently
296 if hero attacked a peaceful monster, some other peaceful monsters with humanoid
297         shape (minotaur, zruty, perhaps others) that witnessed it but which
298         shouldn't be capable of normal speech expressed their surprise audibly
299 make gasp/exclamation message from peaceful monsters be more verbose to
300         indicate which monster is doing the gasping or exclaiming
301 when make was invoked with -j makedefs instances could end up running in
302         parallel and could trample on each other's temp files; default to
303         using mkstemp(); allow a port runtime library implementation that lacks
304         mkstemp() to define HAS_NO_MKSTEMP to revert to the old behavior;
305         provide a work-alike mkstemp() implementation for windows visual studio
306         in mdlib.c so there is no requirement to define HAS_NO_MKSTEMP there
307 make piranhas faster and give them extra bite attack
308 fire sources can ignite candles, lamps, and potions of oil
309 for multiple drop ('D') with menustyle traditional or combination, if the only
310         object class player picked was '$' then it operated on all classes
311 small monsters could seep through their shirt
312 don't snuff brass lantern when it's hit by water unless it is submerged
313 when reporting that hero can't repair a chest's broken lock with key/pick/card
314         just describe the base item without BUC, user assigned name, &c since
315         "You can't repair a chest's lock with an uncursed key." implicitly
316         suggests that you might be able to do so with a blessed or cursed one
317 pre-populate teleport destination prompt with travel destination
318 ghosts cannot be renamed
319 tossed upwards objects got two times half physical damage reduction
320 monster xorns could pass through iron bars but not eat them; monster rock
321         moles could no neither; now they can eat bars when adjacent and will
322         do so if the bars are blocking their path
323 hero poly'd into rust monster could implicitly eat bars when adjacent by
324         trying to move there, now when in rock mole form too; in xorn form
325         can explicitly eat them via 'e' after moving onto their spot
326 monster hiding under an egg that hatched was kept hidden
327 restful sleep regenerates hit points
328 restful sleep gives a warning message few turns before you fall asleep
329 attacking non-adjacent concealed mimic by applying a polearm would make the
330         hero be stuck to that mimic
331 hero could break a wand ("raising the wand high over your head, you break it
332         in two") even if hands were welded to a two-handed weapon or to a
333         one-handed weapon and also to a shield
334 if a monster threw a cockatrice egg at the hero but hit and petrified another
335         monster, the hero would get credit/blame for killing it
336 since ki-rin look quite a bit like unicorns, make them be more like one:
337         allow them to use their own horn to cure themselves; remove M1_ANIMAL,
338         change MS_NEIGH to MS_SPELL, add MR_POISON, use horse body parts;
339         they're still 'A' rather than 'u' and don't care about gems
340 wand/scroll of create monster or bag of tricks that makes a new monster which
341         can be seen or sensed becomes discovered, but was doing so even for a
342         concealed mimic seen as furniture or an object
343 'showscore' could be used to determine how much gold was inside a container
344         whose contents were unknown
345 wizard mode (only way to get timed flying): if levitation and flying time out
346         on same turn, player was told "You have stopped levitating and are
347         now flying."; status line wasn't updated to remove stale Fly condition
348 throwing or kicking a shop container (that's light enough to move) made the
349         hero pay for any gold inside, then didn't refund that amount if the
350         container landed inside the shop
351 try to fix message sequencing for tame golems that "roast/rot/rust in peace"
352 autodescribe when moving the cursor was erroneously honoring MSGTYPE=stop
353         and potentially delivering sounds
354 reduce the number of "seeXYZ" commands by renaming some: #seenv -> #wizseenv,
355         #seegold -> #showgold, #seespells -> #showspells, #seetrap -> #showtrap
356 when saving while punished or game ends while punished, handling for ball and
357         chain might access freed memory with unpredictable consequences
358 brown pudding monster hitting another monster with decay attack corroded armor
359         instead of rotting it
360 <?> -> <full key bindings> omitted 'n' prefix and M-digit for number_pad mode,
361         and ^A/re-do was suppressed due lack of obsolete '#define REDO'
362 add missing key binding support for rush.numpad; default is M-5 for numpad==1
363         or plain 5 for numpad==2 where behavior of 5 and M-5 are swapped
364 allow monsters to use wand of undead turning to revive corpses on floor
365         in some situations
366 selling a container to a shop for gold leaves any contents that the shop
367         doesn't ordinarily buy and sell owned by the hero, but selling the
368         container for credit resulted in the shop taking possession of such
369         contents without giving any additional credit; mark out of place
370         contents 'no_charge' so that hero can reclaim them without buying
371 add some new demonic and angelic maledictions
372 when fire damage dried a wet towel, it would never reduce the wetness to 0
373 when water damage wet a towel, the new wetness might randomly become less
374 make Death revive earlier, and all the Riders after 67 turns at latest
375 when protection from shape changers begins, force mimic out of concealment
376         even if hero can't see its location; for locations that can be seen,
377         don't make double-trouble Wizard concealed as another monster--or pet
378         temporarily mimicking something while eating mimic corpse--fall asleep
379 best possible armor class reduced from -127 to -99; worst from +127 to +99;
380         charged or enchanted individual items also capped at +/- 99 (affects
381         wizard mode wishing, negligible effect on normal play)
382 fix several inconsistencies for objects at hole locations
383 make repeat (^A) work when bound to some other keystroke
384 if a prefix key was bound to some character which ordinarily ran a regular
385         command and that command wasn't bound to another key, typing the
386         prefix followed by a non-movement key behaved strangely:  instead
387         of reporting "invalid direction" it would run the other command
388         (actually depended upon relative order of prefix's new and old key)
389 reqmenu (the request-a-menu prefix supported by a handful of non-movement
390         commands) could be bound to some key other than 'm' but it only
391         worked if the new key was also a movement prefix
392 when telepathically sensed pet ate a mimic corpse and temporarily took on
393         a different shape, you were told that you sensed it changing into
394         something but the map continued to show its true shape (telepathy
395         overrides mimic hiding); give a different message in that case
396 when a pet ate a mimic corpse and tried to temporarily look like a sink it
397         ended up looking like a throne (terrain type SINK == symbol S_throne)
398 have dowhatdoes ('&') catch up with '?i' to describe ^A, ESC, and movement
399         prefix keystrokes correctly instead of reporting "no such command"
400 give barrow wights a cold touch
401 for configuration using external compression on save files that applied a name
402         suffix, 'selectsaved' (restore via menu) couldn't handle any which had
403         been manually uncompressed, mangling file name trying to remove suffix
404 an empty lamp hit by fire reported "the oil lamp catches fire" (but at least
405         didn't light)
406 spells that require a target spot rather than a direction (like skilled
407         fireball) would not let a blinded hero target his/her own spot, with
408         feedback stating hero failed to hold location sufficiently in mind;
409         when not blind, such spells left autodescribe feedback for target spot
410         in the message window while the spell was being performed
411 prevent wish request "death wand" from matching Death monster and producing a
412         random wand instead of a wand of death
413 grammar bit: "you hear a [AEF] note squeak in the distance" (should be "an")
414 during engraving, spaces were counted instead of non-spaces [later: affected
415         code is gone, removed when engraving was converted into an occupation]
416 when an explosion scatters objects, make any that fly over sinks stop there
417 output message when changing fastmove mode while cursor targeting
418 messages when Minetown watchmen become angry could report "you see an angry
419         guard approaching" even if he was invisible and hero can't see invis
420 when autopickup is on but disabled due to being inside a shop, have ^X say so
421 don't force fake player monks to always be male
422 it was theoretically possible to overflow an internal buffer containing
423         inventory letters by carrying more than 52 separate lit candles and
424         using the '(' or '*' commands
425 hero would be blinded and stunned by an Archon's radiance (gaze attack) even
426         if the Archon was blind, but monsters would not
427 applying a polearm to attempt to attack a hidden monster would report "wait!
428         there's a monster hidden there" and display the "remembered, unseen
429         monster" glyph but only use a turn if polearm wasn't already wielded
430 key parsing during options processing was inconsistent between OPTIONS=foo:k
431         BINDINGS=k:foo where k represents a key designation; the OPTIONS form
432         recognized backslash escape sequences but not M-x meta characters,
433         vice versa for BINDINGS (most noticeable for menu interaction keys
434         such as menu_next_page because those can be set via either directive)
435 when creating a rolling boulder trap, don't place boulder on a path that
436         starts on or passes over a pit/spiked pit, hole/trap door,
437         teleport trap/level teleporter/magic portal
438 remove superfluous "All" from "All foos are already nonexistent." when blessed
439         genocide tries to remove something which has already been genocided
440 "#dip <item> into -" produced a scrambled message:
441         You mime dip <item> intoing something.
442 similarly, "#rub the royal jelly on -" produced
443         You mime rub the royal jellying on something.
444 mounted hero falling out of saddle shouldn't hit ground and take damage when
445         levitating or flying (if done without steed's help)
446 avoid "obj not free" panic if monster kills itself by reading scroll of earth
447 attempting to throw a partial stack of gold at self was prevented but left
448         the partial stack in an extra $ inventory slot
449 quivering a partial stack of gold succeeded and put the partial stack in an
450         extra $ inventory slot
451 if player managed to get multiple $ items, all but the last could be moved to
452         normal letter slots via #adjust and then subsequent #adjust with a
453         count could split them into even more slots
454 when a monster on the far side of a closed door opens it, sometimes the hero
455         was told about the monster without it being displayed on the map
456 also show extended command name when showing what a key does in help
457 poly'd hero who exploded when attacking a monster didn't wake up other
458         monsters in the vicinity; when attacking thin air, hero's explosion
459         woke other monsters within different radius than same monster's would
460 troll corpse revival was inhibited by hero wielding Trollsbane; change that
461         to being killed by Trollsbane instead (wielded by hero or by monster)
462 statues representing petrified creatures on Medusa's level might be from
463         monsters who change form (golems) when hit with stoning damage
464 attempt to make corpse or statue of a named player character would yield that
465         of a random monster instead when 'record' was empty; could result in
466         statues of non-stonable creatures in cockatrice nests
467 homemade tin of very low nutrition corpse gave more nutrition than the corpse
468 magic mapping performed while engulfed or underwater would display whole map
469         but then not switch back to the engulfed or underwater restricted view
470 #overview used hardcoded bold and inverse for highlighting; switch to the
471         'menu_headings' option value so player has some control
472 for menustyle:full, the 'A' menu choice to auto-select everything now only
473         does so if no other choices have been picked; when any have (object
474         class or BUCX state or both), it auto-selects every item that matches
475         those choices (so still skips the second menu) rather than every item
476 using travel to move one step diagonally where that step was blocked by being
477         too narrow to squeeze through stopped travel instead of considering
478         alternate routes to the destination
479 turn off input autocompletion for '#twoweapon' since simple 'X' invokes it;
480         likewise for #wizdetect (^E), #wizgenesis (^G), #wizidentify (^I),
481         #wizlevelport (^V), #wizmap (^F), and #wizwish (^W); probably ought
482         to do so for #overview (^O) too but that one still autocompletes
483 if a branch has only one level (Fort Ludios), prevent creation of any level
484         teleporters there (level definition doesn't have any but wizard mode
485         wishing could attempt to place one)
486 opening/unlocking magic zapped at monster holding the hero will release hold
487         (zap at engulfer already expels hero); zapping at self has same effect
488 when riding, allow scroll of remove curse read by hero to affect steed's saddle
489 the 'scores' option for final top ten display left default values in place if
490         only some of the three settings were set; 'scores:own' should have
491         produced '0 top/0 around/own' but ended up as '3 top/2 around/own'
492 allow 'scores:none' as shorthand for 'scores:0 t/0 a/!o' (player will be told
493         whether new score made the list but no scores will be shown)
494 contents of chests, large boxes, and ice boxes are now immune to water damage
495         unless the container is cursed, same as for oilskin sacks (previously,
496         chests+large boxes were always immune and ice boxes always vulnerable)
497 applying an empty brass lantern in an attempt to light it reported "your lamp
498         has run out of power"; change to "your lantern is out of power"
499 when swallowed or underwater, player could be told about events (such as a
500         shapechanger taking on a new form) that the hero sensed but which
501         were not shown on the screen; treat being swallowed or underwater as
502         situations which block telepathy, extended monster detection, warning
503 some rolling boulder trap feedback was inconsistent
504 change "killed by <a foo>, while {paralyzed|frozen} by <a foo>" into
505         "killed by <a foo>, while {paralyzed|frozen}" if the killer caused
506         hero's helplessness
507 "It looks very angry" would be given if a hero wielding Excalibur or Demonbane
508         offended an unseen demon lord
509 Entering a special room, only wake up the monsters in that room instead of
510         doing a level-wide wake-up
511 any blessed key was behaving as if was the rogue's Master Key when unlocking
512         a trapped chest or box
513 when an unseen non-pet picks up or uses an item, hero loses known/dknown/
514         bknown/cknown/lknown memory of that item (so becomes unidentified; in
515         particular, player won't be asked what to call unseen thrown potion)
516 when picking up a stackable item, it can be identified by comparing it to
517         another identical item that is already identified
518 wishing for a partly eaten wraith corpse yielded "partly eaten food (1) more
519         nutritious than untouched food (0)"
520 if PREFIXES_IN_USE was defined (and VAR_PLAYGROUND forces it to be) when
521         COMPRESS was also defined (external save and bones file compression
522         via fork()+exec()), the file name buffer in docompress_file() wasn't
523         big enough so could overflow and trigger a crash
524 suppress "This <foo> corpse takes {delicious|okay|terrible}" if preceded by
525         "You have a bad case of stomach acid" or "Ecch - that must have been
526         poisonous"
527 innocuous items like scrolls or eucalyptus leaves did harm when falling on
528         hero's head after being thrown upward
529 fighter types who start out knowing all non-magic armor should not know
530         cornuthaum and dunce cap
531 prediscovered weapons adjustmens:  only knights and samurai know polearms;
532         rangers know launchers (bows), ammo (arrows), and spears regardless
533         of their race/species; likewise, rogues know all daggers
534 if the move counter ever reaches 1000000000, end the game
535 knights get no metal armor penalty for clerical spells
536 change touch of death from instadeath to maxhp reduction and damage
537 report cause of death due to touch of death as "killed by the touch of death
538         inflicted by <monster>" instead of just "killed by a touch of death"
539 report cause of death due to wand/spell/breath as "killed by <flash damage>
540         zapped/cast/exhaled by <monster>" instead of just "killed by <damage>"
541 dying from being level-drained below level 1 killed hero without saying so
542         and jumped straight to "do you want your possessions identified?"
543 conflict will now consider your charisma and requires line of sight
544 boost hit points of some golems
545 make anti-magic fields always drain max energy
546 eating magical monsters such as wizards or shamans may give a mild buzz
547 make exploding spheres create an actual explosion
548 pets are more careful about attacking monsters at low health
549 allow killing your quest leader to open the quest
550 give King Arthur Excalibur
551 when moving the cursor to examine the map, have '^' move to next trap even if
552         that trap is displayed with some other symbol (web, vibrating square)
553 change valkyrie and warrior (valk quest) monsters from chaotic to lawful
554 change attendant (healer quest) monster from lawful to neutral
555 quit is not longer bound to M-q
556 change default value of autopickup to off and color to on
557 resurrected corpse of mon could end up with different gender from original mon
558 using a bullwhip to snatch a wielded cockatrice corpse from a monster when not
559         wearing gloves and without life-saving could trigger "obj_is_local"
560         panic during final cleanup
561 make fire-command autowield an appropriate launcher and add fireassist boolean
562         option to toggle the assistance off
563 Angels and priests were always described as "the {Angel,priest,high priest} of
564         <deity>" when first two should have been "{an Angel,a priest}..."
565 shopkeepers can remove pits and webs
566 perm_invent: when buying shop goods using itemized purchasing while persistent
567         inventory window was enabled, the prices of unpaid items went away as
568         soon as any item was bought (actual item-by-item purchase worked ok)
569 perm_invent: making an engraving which reduced known enchantment of a weapon
570         or known charge count of a marker didn't update persistent inventory
571 perm_invent: over-reading a spellbook so that in faded to blank didn't update
572         persistent inventory to show that if blank spellbook was already known
573 change getloc fastmove keys in number_pad mode from hardcoded HJKL to the
574         run/rush movement keys (meta+number)
575 allow using rush/run prefix key in getloc to fastmove the cursor
576 avoid "it" in messages "Wait!  There's an it hiding under <an object>!" (hero
577         moving) and "It was hidden under <an object>!" (unseen monster moving)
578 don't extinguish burning objects when engulfed by a fire vortex
579 allow wishing for a novel via description "paperback book" (previously only
580         worked when specifying "paperback spellbook")
581 deal with gold leaving a shop via scatter()
582 defer encumbrance check during polymorph to new man; newman() -> redist_attr()
583         -> encumber_msg() could report change in encumbrance that immediately
584         became obsolete if polyman() subsequently restored old attributes
585 fix heap-use-after-free when attacking monster with potion
586 for "a" vs "an", add ukulele and uke as exceptions for "an u<anything>"
587 add new extended command #retravel
588 remove special doinv key, functionality was equal to BIND=0:inventory
589 some monsters should not have been scared of bugle playing
590 monsters that drowned would never leave a corpse (holdover from decades ago
591         when it wasn't possible to recover anything from a water location)
592 give alternate message if hero is blind when throne gives "your vision clears"
593 monster wearing an alchemy smock was only getting poison resistance from it,
594         not acid resistance; give both properties, just like for hero
595 in wizard mode, knowing teleport away spell resulted in ^T always attempting
596         the spell instead of teleporting on demand
597 describe a couple of isolated moat spots on Samurai quest home level as water
598         rather than as moat
599 crawling out of water to avoid drowning didn't work as intended when trying
600         to move diagonally through a tight squeeze
601 in wizard mode, polymorphing into hero's role monster in order to revert to
602         normal form would complain about missing light source if hero was
603         changing back from the form of a light-emitting monster [didn't affect
604         normal play because role monsters are invalid polymorph targets there]
605 revise a 3.6.1 fix: if a spellbook which is being read becomes cursed, always
606         stop reading: "The <book> slams shut!" and set book->bknown
607 concealed mimic could trigger sanity check warning "mimic concealed as an
608         object despite Prot-from-shape-changers" if hidden as "strange object"
609 cancelled shape changer would become uncancelled if saved and restored (even
610         just leaving its level and then returning)
611 don't include time spent suspended in background (^Z) or in shell escape (!)
612         in the total elapsed time recorded to xlogfile
613 if a monster is starting to turn into green slime, eat the corpse, tin, or
614         egg of any creature that might polymorph into a fiery monster to cure
615         the slime, not just of one of a chameleon
616 yet another fix for display problems during restore:  if game is saved while
617         hero is hallucinating but that's suppressed because of wielding
618         Grayswandir, hero is riding, and the steed is on or over an object,
619         restore will try to update hero's spot when making sure objects aren't
620         being obfuscated by hallucination, but when displaying the hero there
621         instead it would access steed pointer before that has been set up
622 resistances gained from worn or wielded items also protect hero's inventory
623 dwarvish cloaks somewhat protect hero's inventory from cold and fire
624 non-metallic gloves protect worn rings from shock
625 message "Oops!  food rations out of your grasp!" occurred due to perm_invent
626         in mid-operation overwriting all of xname's/doname's obufs; fixed by
627         having hold_another_object() defer perm_invent update til done with
628         all its args (so fixed as a side-effect of "spurious add and remove
629         perm_invent updates" above, prior to being reported as #K3401)
630 similar "The ogre lord yanks Cleaver from your corpses!" due to caching the
631         result from makeplural(body_part(HAND)) then having a perm_invent
632         update clobber that; fixed by having inventory display release the
633         obuf used for each item so that the same one will be reused for the
634         next item, to avoid churning through the whole pool of obufs
635 gas clouds are a little random in how they spread out from a point
636 Izchak occasionally stocks wands/scrolls/spellbooks of light
637 data tracking for #overview was mis-using u.urooms[] and after being in a
638         situation where hero was in multiple rooms at once, visiting other
639         levels might flag unvisited rooms as having been visited
640 special damage attacks by the Riders and by fatal-illness inflictors such as
641         Demogorgon did no damage against other monsters, only against the hero
642 using obj->o_id to control 'random' behavior of a helm of opposite alignment
643         could potentially be controlled by player when wishing for such
644 obj->o_id might be set to invalid value 0 when a partly used up stack had a
645         dummy copy added to a shop's bill or when a bones file was loaded
646         (in theory that could happen on any system but in practice it could
647         only happen on a configuration that uses 16-bit ints)
648 if a Rider or displacer beast swapped places with a single-segment long worm
649         the segment co-located with the head wasn't moved with that head;
650         if sanity_checking was enabled a warning could be triggered:
651         mon (000000) at seg location is not worm (123abc)
652 blessed scroll of remove curse read while confused blesses or curses any
653         uncursed items in inventory, but if hero was dual-wielding and the
654         scroll cursed the secondary weapon, that would be dropped and further
655         object traversal would process items on the floor at hero's spot
656         instead of the rest of inventory
657 can now use m<dir> to try to move to an adjacent boulder's spot without
658         pushing it; hero poly'd into a giant or a tiny creature or carrying so
659         little as to be able to squeeze there will succeed, others will fail
660 breaching a shop wall, using locking magic to put a door there, then unlocking
661         that door yielded a situation where subsequent shop damage repair
662         produced invalid map data which resulted in an impossible() warning
663         about "wall_angle: unknown" during map display; similar for a vault
664         wall if it's the spot where the guard arrives to lead hero out
665 if vault guard arrives on a boulder in a breach in the vault wall when coming
666         to lead the hero out, smash that boulder into rocks so that the hero
667         won't try--and fail, because the guard will be in its way--to push it
668 when vault walls are repaired, destroy any rocks or boulders at their spots
669 melting ice timer could persist after the ice was gone from digging or from an
670         exploding land mine
671 using 'F'orcefight against iron bars while wielding something breakable could
672         yield erratic outcome because non-deterministic breaktest() was being
673         called twice and could yield results that conflicted
674 have applying a polearm give feedback similar to 'F' for melee weapon when
675         attacking a wall or boulder
676 if weight_cap() ever returned 0 (which probably can't happen), using #untrap
677         to pull a monster out of a pit would trigger a divide by 0 crash
678 avoid "you now detect it where the vampire bat was" when a vampire shifts from
679         a bat seen with infravision to an unseen fog cloud
680 if an artifact gets created as a random treasure drop and then deleted because
681         it is too big to include with a small corpse, explicitly uncreate it
682         instead of just discarding it so that it is eligible for use later
683 when creating random contents for a container, explicitly exclude artifacts
684         (already implicitly excluded because randomly generated artifacts are
685         all weapons and containers don't start with any weapons in them)
686 don't give lance or mattock as starting equipment when creating soldiers
687 fixup for the insect "legs" (some extraneous walls inside solid stone) on the
688         baalz level didn't work as intended if that level was flipped
689 handle flipped level when fixing up the baalz level "eyes" too
690 prevent normal monster activity from picking up the mines' luckstone or the
691         Sokoban amulet/bag before hero has done so; relying on scare monster
692         and/or engraved Elbereth wasn't sufficient to guard the Sokoban prize
693 proceed a little further into dochat() if hero is deaf
694 stacks of 1 to 49 gold pieces weighed 0
695 the chance for #untrap to free a monster stuck in a web was very unlikely
696         unless hero was poly'd into spider form; make it less hard
697 if #untrap monst-from-web failure happened while hero was standing on a spot
698         where a new web couldn't be created (furniture, grave, magic portal),
699         the expected "<monst> remains entangled" feedback wasn't delivered
700 if hero is wearing an amulet of magical breathing and polymorphs into a fish
701         or sea monster, don't lose health for turns spent out of water
702 fix up some "the" handling for monsters whose type name is upper case to avoid
703         "Uruk-hai is healthy for a statue", "You can't polymorph into Oracle"
704 controlled polymorph would turn hero into new man or woman if player asked to
705         become a unique monster of the same race (so usually human) instead of
706         being told that polymorphing into the specified form wasn't allowed
707 assigning a fruit name that matches the name of an artifact which doesn't use
708         any "the" prefix could yield messages showing "the Artifact" when
709         dealing with the artifact rather than fruit: "You are blasted by _the_
710         Excalibur's power!"; didn't impact basic inventory formatting
711 selection of random engravings, epitaphs, and hallucinatory monster names had
712         the same problem that rumor selection used to have:  entries which
713         follow longer than average lines are most likely to be chosen and
714         ones which follow shorter than average lines are least likely; use
715         same workaround as for rumors:  pad the shortest lines; result isn't
716         uniforn distribution but is better (tradeoff vs size; see makedefs)
717 make selection of random rumors, engravings, epitaphs, and hallucinatory monst
718         names have uniform distribution by handling long lines specially
719 when filling a special room with monsters, if one that can come in groups got
720         picked the group could spill to outside of the room
721 extend 3.6.1 fix to explicitly use name of unseen shopkeeper instead of "It"
722         in various shop related messages (ones issued outside of shk.c)
723 fix some inconsistencies with applied bullwhip vs monster
724 polymorphing while wearing an amulet of strangulation from a form that wasn't
725         vulnerable to one that was gave wrong message ("still constricts")
726 for accessibility reasons, give a message when monster teleports and
727         when a monster is created during gameplay (for the cases that
728         did not have their own custom message)
729 if a gremlin stole intrinsic 'see invisible' the map wasn't updated properly
730 mark some messages as urgent ("You die*.", having equipment stolen, being
731         caught in a magical explosion)
732 if a leashed pet changed name (#name m) or an unnamed pet changed type
733         (polymorph or grow-up) and perm_invent was On, persistent inventory
734         display didn't get updated to show the leash's changed information
735 attack feedback when using a bullwhip said "swing"; change to "lash";
736         use "lash" for hero hitting with wet towel too
737 attack feedback for monster using polearm when adjacent said "thrust"; change
738         to "bash"
739 apply runmode delay to multiturn actions, not just running
740 if a giant carrying a boulder was on ice that melted, it could be killed
741         twice, first by drowning, then by boulder filling the resulting pool
742         when it dropped inventory before being removed from the map
743 allow fire-command to automatically use a polearm, if wielding it
744 make '$' command also count gold carried inside containers
745 fleeing leprechauns bury their gold after teleporting
746 allow #tipping container contents directly into another container
747 when one leg is wounded, have ^X report which (already used plural if both)
748 wand of probing used on steed ('z >') didn't include wounded leg(s) feedback
749 getting wounded in one leg when the other was already wounded miraculously
750         healed old leg and kept longer of their recovery timeouts for new one
751 when parsing config file entry "BINDINGS=key1:cmd1,key2:cmd2,key3:cmd3" allow
752         keyN to be either a naked comma or backslash+comma instead requiring
753         that comma's numeric value be used to bind comma to a command
754 when two or more shops share a wall and hero uses Passes_walls to carry an
755         unpaid item from inside a shop into the shared wall, it could yield
756         impossible "unpaid_cost: object wasn't on any bill" when examining
757         inventory if the shop code picked wrong shopkeeper to determine cost
758 when two or more shops share a wall and hero uses Passes_walls to carry an
759         unpaid item through the shared wall into another shop, theft of that
760         unpaid item from the first shop wasn't noticed
761 redo the unpaid_cost fix to handle shop items inside hero-owned container
762 flyers shouldn't fall on arrival when going down holes or trap doors
763 change movement keys and some special keys into extended commands
764 "WHAMMM!!!" feedback when kicking a door suggests noise so if hero is deaf an
765         alternate message should be given
766 fix typo in message shown when hero sees a monster's wet towel become drier
767 for hero with slippery fingers, enlightenment reports "slippery fingers" or
768         "slippery gloves" but self-probing described it as "slippery hands"
769 when hitting with wet towel causes it to lose some wetness, defer "your towel
770         dries" until after the hit message
771 do some extra damage when hitting an iron golem with a wet towel
772 when already at level 30 and gaining another level--which doesn't increase
773         level further but does add more HP and Pw--throttle the increases
774 don't stop running when next to a peaceful, unless it blocks the way
775 mindless monsters shouldn't cringe stepping on squeaky boards
776 falling down a hole or trapdoor will cause damage proportional to fall height
777 stinking gas clouds block line-of-sight
778 covetous monsters will teleport to downstairs or upstairs to heal
779 have fake player monsters use verbalize instead of pline when reacting to chat
780 fix mention_walls distinguishing unseen walls from solid stone
781 don't push unknown boulders when moving
782 in flush_screen, reorder the code slightly to complete the bot() and timebot()
783         calls prior to the window port call to place the cursor on the hero
784 magic traps can toggle intrinsic invisibility
785 Death attacking a monster does drain life attack
786 add unique Rider revival messages
787 don't dereference NULL u.ustuck in dobuzz() when hero has been swallowed
788 monsters should growl even if you can't hear it
789 give a sound effect message when thrown item lands in water or lava
790 don't show rusting of items that land in water
791 the water used on the Plane of Water stops thrown or kicked items
792 looting will do #force if you could do it and the container is locked
793         and you didn't have a tool to unlock it
794 use silly names for rays (such as breath weapons) when hallucinating
795 zombies groan instead of being silent
796 martial arts users, sasquatches, and heroes wearing kicking boots can
797         no longer miss a monster completely with a clumsy kick
798 knights get no caitiff penalty against undead
799 candy bars are bright blue in text mode
800 towels weigh more than blindfolds
801 knight quest home level contains some saddled warhorses
802 allow creating unhidden traps in special levels
803 reading magic marker shows the specific red ink color
804 imps and other creatures cussing hero wake up nearby monsters
805 make ravens oviparous
806 thrown items can get stuck in webs
807 engraving with Fire Brand burns the text on the floor and does not
808         dull the artifact
809 make looting less tedious by getting rid of a y/n prompt making the command
810         go directly into the loot-in-out -menu
811 always give a message when monster changes form via polytrap if seen
812 illiterate hero receiving a spellbook from their deity gets the spell shoved
813         directly into their mind instead
814 adjust levels of sleep, confuse monster, and charm monster spells
815 replace monk starting sleep spell with confuse monster
816 chargeable rings have a chance of getting charged when hit with electricity
817 flint and hard gems break less often when thrown
818 hobbits getting a sling also get some ammo for it
819 elves and rangers get alignment penalty for cutting down trees
820 casting a forgotten spell uses some random amount of power
821 heroes starting with a spell have at least one level one spell, and
822         have just enough power to cast it
823 huge monsters and pit fiends get easily out of pits
824 give a message when a trapped monster frees itself from some trap
825 change kitchen sink glyph to a white {
826 killed wood golem has a chance to also drop small shields, clubs,
827         elven spears, and boomerangs
828 discovering an object on first turn with persistent inventory enabled might
829         not update inventory info for that item (autopickup a blank scroll
830         or spellbook and read it as first action; it becomes discovered but
831         will still be shown as if undiscovered until next inventory update)
832 most traps now require touching the floor to trigger
833 if a lit potion of oil on the floor was launched by an explosion and it hit
834         and killed the hero via missile damage rather than its own explosion,
835         it could trigger an "obj_is_local" panic when end of game cleanup
836         tried to extinguish it as a light source
837 place_object() validated coordinates after using them to index level.objects
838 killed rope golem may drop leashes and bullwhips
839 using magic portals stuns hero for a few turns
840 using level teleporters confuses hero without teleport control for a few turns
841 clear obj->bypass for buried objects [a giant on ice triggers a fire trap,
842         inventory is subjected to burning and surviving objects have their
843         bypass bit set, giant is killed by fire trap and drops a boulder and
844         other inventory, ice is melted, boulder plugs resulting pool burying
845         rest of giant's dropped inventory, subsequent sanity checks report
846         that there are buried objects which are 'flagged bypass']
847 give Sunsword as starting gear only to lawful Angels; since Demonbane has
848         become a mace and Angels only get swords, they won't start with it
849 for #knownclass with menustyle=Traditional, allow player to ask for `a even if
850         no artifacts have been discovered yet, same as `<any-object-class>;
851         likewise for `u to ask to see unique items
852 reduce eucalyptus leaf nutrition to 1
853 life-saving might increase max HP; if level drain triggers that, don't let max
854         HP go up because it confuses healing for monster wielding Stormbringer
855 HP recovery and/or max HP boost from eating royal jelly didn't perform a
856         status update to show the change
857 if poly'd hero is hiding under food and eats or #offers that food, stop hiding
858 hide-under monsters who can be turned to stone aren't able to hide under a
859         cockatrice corpse unless there is something else present but make sure
860         that the other items aren't all more cockatrice corpses
861 don't stop travel when going past a closed door (eg. when traveling along
862         a room wall)
863 some monster corpses can now convey temporary acid or stoning resistance
864 fix travel getting stuck oscillating between two locations
865 kicking a trapped chest and getting the exploding chest result destroyed items
866         at the hero's location rather than the chest's location; because of
867         that it left the exploded chest intact
868 it was possible to destroy a Rider corpse with an exploding chest
869 when teleporting, don't consider pits/spiked pits/trap doors/holes as unsafe
870         destination locations if hero is levitating or flying
871 try to avoid locations with engraved Elbereth or scare monster scroll when
872         creating new monsters or picking teleport destinations for monsters
873         who are susceptible to those
874 be more flexible when wishing checks for artifact name matches; now allows
875         "firebrand" or "fire-brand" to yield "Fire Brand"
876 exclude unique monsters from pacification when untrapped from web
877 ask to kick a door open, if it's locked and you don't have unlocking tool
878 give a message when stinking cloud is created on top of hero
879 when being life-saved prevents the hero from moving again during current turn,
880         avoid logfile annotation "while helpless" if hero dies a second time
881 if drinking from a fountain randomly gave the 'detect monsters' effect but
882         there were no monsters on the level then there was no feedback
883 object detection always showed a mimic imitating a statue as a tengu even if
884         it had information available about some other type of monster
885 avoid "the Lord Surtur's corpse glows iridescently" when shk_your() or the()
886         is applied to the corpse of unique monster with a personal name
887 restoring while attached ball or chain is on floor in a breach of a shop wall
888         could have it be moved out of wall gap as that gets repaired, then
889         might trigger an impossible about being positioned too far from hero
890 don't try to catch up for lost time for shop damage repair in restdamage()
891         called from getlev(); let normal shopkeeper movement take care of it
892 shop wall repair that was delayed because the hero or a monster was an
893         obstacle in the gap at repair time might not be displayed as wall
894         once the obstacle moved and the repair eventually took place
895 putting objects into a container with menustyle=traditional and then taking
896         them back out with #tip would result in complaints about obj bypass
897         bit being set if sanity_check was On
898 when drinking or dipping, allow the 'm' prefix to be used to skip asking
899         about fountains and pools
900 calling real or fake Amulet something could give away information about them
901 throwing gold while inside a purple worm would yield "The gold disappears
902         in the the purple worm's entrails." (note doubled "the")
903 inventory #adjust for !fixinv, after picking 'from' slot the prompt for 'to'
904         slot was supposed to include the next letter beyond those in use as
905         a candidate for destination but an off by 1 error only showed a-x
906         where x is last letter used (despite that, y could still be picked)
907 with two-weapon combat or Cleaver attacking multiple targets, hero kept going
908         with next attack after being paralyzed by passive counter-attack
909 trap detection could falsely find trapped secret doors; those can't be trapped
910         due to details of how they use overlaid fields in the rm structure
911 for force-fight against edge of level, report "you harmlessly attack unknown
912         obstacle" rather than "you have moved as far <direction> as possible"
913 using wizard mode ^V in endgame to return to previously visited Plane of Water
914         now gets the same air bubbles back instead of a replacement set;
915         likewise for clouds on Plane of Air
916 on tty at least, "version incompatibility for save/123xyzzy" was invisible:
917         a blank message of appropriate length followed by --More--
918 fix a pair of off-by-one bugs when doling out initial characteristics points,
919         resulting in an unintentional bias toward Str and away from Cha;
920         negligible effect on individual games but had a minor cumulative
921         effect across a large set of games
922 using a marker to write "novel" or "paperback book" on a known blank spellbook
923         was producing a randomly chosen Pratchett novel; make it fail instead
924 when a monster killed a pudding and it left a glob, that glob might not be
925         displayed on the map (wasn't an issue for killed-by-hero case)
926 if player gave a subset count when removing an item from a container, then got
927         the pickup_burden prompt and declined to continue, the item remained
928         split rather be recombined, making it possible to create multiple
929         stacks of gold inside a container
930 two-handed weapon message stated "welds to monster's hand" instead of
931         "welds to monster's hands"
932 when formatting an object, avoid capitalization of "The" in "<item> named
933         The <quest-artifact>"
934 be less specific when cause of death is "handling a <ring or wand>" that
935         happened to be silver for current game; list it as "a silver ring" or
936         "a silver wand" rather than "ring of searching" or "wand of locking"
937 adjust the row placement of copyright and early startup messages so that
938         aren't partially overwritten by prompts that follow
939 ball and chain could be accessed after having been freed if bones were saved
940 early post-3.4.3 tried to fix the "naming artifacts trick" which could be used
941         to distinguish the type of some undiscovered items, but using a name
942         that only matched an artifact after capitalization was exploitable
943 the u.ustuck hierarchy is:  swallowed by ustuck, hero poly'd into sticky form
944         is holding ustuck even if ustuck is sticky, ustuck is holding hero;
945         but some code assumed that the first two cases were reversed and
946         could make formerly sticky pold'd hero clear ustuck, leaving hero
947         swallowed by nothing (u.uswallow==1 with u.ustuck==NULL); that could
948         cause a crash if u.ustuck got dereferenced
949 when a vampire gains levels and grows into a vampire lord, change its cham
950         field (shapechanger base type) from vampire to vampire lord so that if
951         it revives in base form it won't revert to plain vampire
952 a migrating long worm that couldn't arrive could be placed at <0,0> while
953         setting up another migration attempt to the level, triggering
954         impossible "trying to place long worm tail at <0,0> mstate:8 on level"
955         (message is confused; it should say "long worm" without tail)
956 dropping things with 'D' wouldn't merge them with compatible items already at
957         that floor spot because use of obj->bypass made them seem incompatible
958 a hero on the quest home level who runs or travels past the quest leader and
959         gets tossed out of the quest for some reason would keep running on the
960         far side of the quest portal
961 allow rush/run over water if wearing discovered water walking boots
962 putting on water walking boots while underwater (maybe via magical breathing)
963         and rising to surface wasn't causing the boots to become discovered
964 flying pets wouldn't target underwater food but if they happened to fly over
965         such food they could and would eat it
966 praying on an altar with pet corpse on it can revive the pet
967 applying a cursed oil lamp can make your hands slippery
968 valkyries start with a spear instead of a long sword
969 grid bugs don't have hands
970 if #wizmakemap was used to generate a replacement level while any shopkeeper,
971         temple priest, or vault guard from the level was off of it at the
972         time, the monster's eshk, epri, or egd data became invalid and would
973         cause trouble if the monster returned to its 'home' level
974 similarly, if #wizfliplevel was used to transpose an active level while a
975         vauld guard was maintaining a temporary corridor or while a monster
976         with eshk, epri, or egd data was off level, that data became invalid
977 blessed potion of polymorph will prompt user for monster to poly into
978 out of array bounds access attempt occurred when deciding whether to bounce
979         if wand or spell zap reached edge of map
980 if blind hero was challenged by a vault guard, it wasn't possible to see how
981         to start following that guard out of the vault
982 make taming via magic harp be consistent with scroll of taming and charm
983         spell:  an angry shopkeeper becomes pacified (but never tamed)
984 wielding a bec de corbin makes ravens generate peaceful
985 moving with 'm' prefix allows hero to enter a known pit carefully
986 rangers always succeed in disarming bear traps, unless impaired
987 bigroom variant 2 may have ice floor in unlit areas
988 bigroom variant 3 may have some walls replaced with other terrain
989 bigroom variant 4 may have two large squares of terrain in the middle
990 bigroom variant 5 may have patches of ice or clouds
991 some large monsters can knock back smaller monsters with a hit
992 change Demonbane to a mace, make it the first sac gift for priests,
993         and give it an invoke ability to banish demons
994 wielding Giantslayer prevents knockback from larger monsters; likewise for
995         carried loadstone(s)
996 scared hostile monster which cannot move away will attack
997 prevent a fog cloud that has engulfed the hero from moving under closed doors
998 allow cutting a known spider web with wielded weapon by force-fighting the web
999 holes and trapdoors have a fixed exit level
1000 recent changes to losedogs() could result in an infinite loop when migrating
1001         monsters try to arrive as hero moves to a different level
1002 when invisible without see invisible you could see your hands glowing red
1003         after reading a scroll of confuse monster and delivering melee hits
1004 greased saddle makes it impossible to mount the steed
1005 if an item-using monster zaps a wand of digging downward on a level that
1006         doesn't allow holes but does allow pits, create a pit and trigger it
1007 no longer override the effect of a new moon by simply carrying a lizard corpse
1008 make explosions burn monster's armor just like they do hero's armor
1009 make healing and extra healing better by upping the average amount healed
1010 lifesaving healing amount depends on the constitution
1011 hitting a monster with a wielded potion hits you far less
1012 pyrolisks get a mundane bite attack
1013 chances of random item being an artifact depends on already existing artifacts
1014 monsters can zap wands of teleportation at hero
1015 piranhas devour corpses
1016 turn on menucolors boolean automatically if any menucolors are defined
1017 blind hero was notified when brass lantern burned out even though it isn't
1018         warm enough to detect that by touch; manually switching the lantern
1019         on or off can be determined that way so still gives on/off message
1020 turn on statushilites automatically if any are defined
1021 change poison instakill to damage with attribute and max hp loss
1022 trappers and lurkers above enfold themselves around and crush their victims,
1023         not swallow and digest
1024 attempting to move up or down when poly'd into a holder and holding a monster
1025         rejected the move; release the monster instead
1026 throwing a non-weapon while engulfed by an ochre jelly reported that the item
1027         vanished into the jelly's "currents"
1028 if a pet gelatinous cube eats a container, treat it the same as when a hostile
1029         one does:  the container is destroyed but its contents are engulfed
1030 when breaking a wand of sleep hits the hero with the explosion, don't describe
1031         that as "the sleep ray hits you"
1032 expose fuzz tester to wizard-mode as #debugfuzzer extended command
1033 monsters which cannot move due to boulders or walls try to escape
1034 intelligent monsters see and remember when others trigger traps
1035 random figurines are of harder monsters by 5..10 difficulty points
1036 statues for statue traps are of harder monsters too, but only by 3..6
1037 monsters can blind you with a camera
1038 lit candles generated by wishing could have wrong light radius
1039 better feedback from detect unseen
1040 make public server admin messages use urgent_pline
1041 cannot kick while squeezed on top of a boulder
1042 room stocking would put multiple items on the same spot
1043 splitting a stack of named, shop-owned objects while perm_invent is enabled
1044         produced impossible "unpaid_cost: object wasn't on any bill."
1045 more consistent feedback if a reviving corpse becomes an unseen monster
1046 improve consistency between applying a key and explicitly opening a door:
1047         if in a pit, you're told "you can't" and no time elapses; if there
1048         isn't any door in the direction supplied, you're told "no door" and
1049         time elapses if you discover the non-door's terrain type but doesn't
1050         if you already knew the type there
1051 if a bones file contained a doppelganger imitating a unique monster, a game
1052         that loaded those bones would end up with that monster counted as
1053         having already been created so it wouldn't be created when the time
1054         for that arrived (the doppelganger would change its shape normally,
1055         not be stuck in the unique monster's form)
1056 if Vlad was lured to a level which allowed bones, he could be present in a
1057         bones file for that level if he was in wolf/bat/cloud form at the
1058         time hero died; getting those bones in another game would flag him
1059         as extinct; if that occurred before entering his level he would not
1060         be created there, leaving no way for hero to acquire the Candelabrum
1061 when mounted hero got hit by an explosion, hero and steed shared resistances
1062 removing an engraving from frost (ie, written with fingers on ice) reported
1063         "you wipe out the message that was written in the _dust_"
1064 orc hero starts with poison resistance but orc monsters lacked that
1065 orc hero has maximum 18/50 strength but hero poly'd into an orc got 18/100
1066 hero with exceptional strength (18/01..18/100) retained that when polymorphed
1067         into any monster lacking the strongmonst attribute
1068 give hero poly'd into a giant 19 strength instead of 18/100
1069 wait for a response after displaying wishing help; affects X11
1070 guardian nagas' constriction attack could never hit because the two preceding
1071         attacks must both hit and those were mutually exclusive: bite and spit
1072 explicitly throwing 1 for non-gold stack of more than 1 and then canceling at
1073         direction prompt left a pair of stacks of 1 and N-1 with same invlet
1074 some attack damage which shouldn't affect shades operated as intended when
1075         hero could see it happen but erroneously affected them when not seen
1076 phrasing of the "you can't" message when attempting to name any monster
1077         defined with a unique name or title sounded strange when rejecting
1078         <space> to remove the existing name without assigning a new one
1079 some instances of using up or stealing shop-owned boulder didn't charge for it
1080 when hero hears an unseen monster reading a scroll, only describe the monster
1081         accurately if hero is not hallucinating and monster is same species
1082         as hero's current form
1083 don't allow monsters to disarm hero with bullwhip if hero is engulfed
1084 teleporting an object out of a shop put it on the shop bill instead of dealing
1085         with robbery
1086 map browsing during gold detection didn't describe fake gold marking traps
1087         when detection was via cursed scroll
1088 if hero's action caused engulfer to expel swallowed hero, it might do so onto
1089         a level teleporter and then have its memory accessed after being
1090         freed when current level was saved in order to load destination level
1091 throwing recoil while levitating could send hero out of shop while carrying
1092         unpaid items, triggering sanity check warnings; once outside, taking
1093         a step other than back into the shop was treated as a robbery
1094 if punished and iron ball was cursed and wielded--so welded to hand--falling
1095         when doors would drop it instead of keeping it welded
1096 if player's run-time config file had OPTIONS=role:Val and the environment had
1097         NETHACKOPTIONS='role:!Val' the hero would be a Val instead of !Val
1098 sleeping or unconscious hero attacked by Medusa would meet her gaze
1099 if a trap killed both the hero's steed and the hero an impossible "dmonsfree:
1100         N+1 removed doesn't match N pending" warning could occur
1101 prevent paralyzed hero from helping nymph or succubus remove worn armor
1102 when identifying items via menu and more than one pass is needed (so when
1103         identifying 3 items and player only picks 1, for instance), issue
1104         --More-- because the next menu might cover up the ID message(s)
1105 slightly more interesting Gehennom filler levels
1106 don't reveal color of potions, gems, or spellbooks that haven't been seen up
1107         close (seeing faraway monster operate on an object counts as up close)
1108 fix freeing a worn object when forced to drop it by falling down stairs
1109 allow setting per-level "temperature": hot, cold, or temperate, currently
1110         only affects some messages
1111 digging is noisy
1112 polymorphing into fire elemental allows you eat flammable items
1113 hitting sleeping monsters will cause them to wake up noisily
1114 demon gating happens more in Gehennom and less outside it
1115 intelligent peacefuls avoid digging shop or temple walls
1116 fix bug making random subrooms never touching the right or bottom
1117         wall of the parent room
1118 if a grave is created with the corpse lying on top (bones), don't find a
1119         corpse or release a zombie or mummy when digging it up
1120 kicking a headstone might summon a ghoul
1121 eating garlic makes nearby monsters flee
1122 giants occasionally get a battle axe or a two-handed sword
1123 give gremlin the property it stole, if possible
1124 'F'orcefighting with a war hammer has a small chance of breaking iron bars
1125 player assigned name for monsters, specific objects, or object types could be
1126         longer than what was intended to be allowed; for 'curses', much longer
1127 very rarely random items are generated eroded, erodeproof, or greased
1128 Nazgul can see invisible
1129 fix a case where punished iron ball yanked hero on top of a monster
1130 slightly randomize amount of items and monsters in the mines
1131 dying in a wall spot (temporary gap or via Passes_walls) shared by two shops
1132         could result in "place_object: \"<item>\" [0] off map <0,0>" warnings
1133 a monster capable of using a polymorph trap to deliberately change form could
1134         do so when trapped in an adjacent web or pit; if that happened, the
1135         monster remained flagged as 'trapped' and wouldn't be able to move
1136 give feedback when some types of damage are avoided due to MC (aka negation)
1137 feedback if a named, shape-shifted vampire reverted to original shape rather
1138         than dying when engulfed could say "Dracula turns into Dracula"
1139 adjust archeologist and valkyrie starting intrinsics
1140 spell of knock can knock back small monsters
1141 protection from shape changers now prevents the Wizard from mimicking monsters
1142 having worn levitation boots removed and destroyed (scroll, monster spell,
1143         dragon breath) and floating down into lava can destroy them twice;
1144         yielded "object lost" panic if program had been built with a debugging
1145         malloc implementation which overwrites the contents of freed memory
1146 ensure that all window interfaces respect flags.silent (suppress terminal beep)
1147 falling into lava, being life-saved, and teleporting out could yield redundant
1148         descriptions of what was present at hero's new location
1149 if hero had passes-walls capability and was at the location of a closed door,
1150         attempting to use 'o' on own spot reported "you don't find anything
1151         here to loot"; change to open door for '.' (or '<'), only loot for '>'
1152 items thrown by monster landing on an altar did not show BUC flash
1153 a chameleon in giant form who gets trapped (bear trap?) while carrying
1154         boulders and changes shape could be killed when dropping them;
1155         shape-change traversal of its inventory would continue after it
1156         dropped everything, possibly resulting in a crash
1157 if hero is engulfed and polymorphs into a monster form which is too big to be
1158         engulfed, make engulfer expel the poly'd hero
1159 give feedback if monster holding onto the hero has to let go when hero polys
1160         into a form which can't be held
1161 prevent hug attacks and touch or engulf attacks for wrap, stick-to, and
1162         digestion damage from succeeding against unsolid targets (ghosts,
1163         vortices, a few others) or against worm tails
1164 wand of speed gives temporary speed, potion gives intrinsic
1165 some monsters (riders, shopkeepers, priests, quest leader) can break boulders
1166 if hero owes shop for a boulder and shopkeeper breaks it, continue to bill hero
1167         for the boulder rather than switching to the resulting rocks
1168 corpse-eating monsters will go out of their way to eat corpses on the floor
1169 warnings via impossible() would be unseen if message suppression via ESC at
1170         --More-- prompt was in effect
1171 wearing the Eyes of the Overworld overrides OPTIONS:blind; breaking the
1172         always-blind conduct by doing that was intended but having permanent
1173         blindness stay cured after removing them was not
1174 change helm of brilliance from iron to crystal so that it no longer needs to
1175         be a special case for metallic armor vs spell casting
1176 fake player monsters in endgame had a 1 in 1000 chance to be given a stack
1177         of 0 gold pieces, eventually triggering an impossible warning (cited
1178         one was "Calculating weight of 0 gold pieces?")
1179 avoid "wall_angle: unknown hwall mode 4" when using #terrain command to
1180         display a spot remembered as a wall but actually a secret door that
1181         has been transformed into an open door while not in sight
1182 it was possible to produce a web at a water or lava location; it would not be
1183         visible but could trap the hero, resulting in drowning or incineration
1184 engraving in an open doorway was allowed, engraving in closed one (presumably
1185         via Passes_walls) was not, but closing the door on an engraving was;
1186         change to allow engraving at closed door location
1187 engraving in a breach in a shop's or vault's wall or vault guard's temporary
1188         corridor would leave the engraving intact after repair/cleanup
1189 if a fire resistant non-fire immune monster wearing a thoroughly burnt wooden
1190         shield got knocked into lava, burning the shield completely yielded
1191         impossible warning "obfree: deleting worn obj"
1192 hangup in wizard or explore mode would result in answering ESC to "Die?"
1193         prompt if that was reached, and since default is 'no' the hero would
1194         be life-saved and the game would try to keep going; if circumstances
1195         resulted in repeat death then the program might get stuck in a loop
1196         instead of exiting [no reports of such, but if it ever happened the
1197         process was probably killed without anyone knowing why it happened]
1198 with OPTIONS=blind (blind from birth), being inflicted with timed blinding
1199         yielded "your vision seems to dim for a moment but is normal now"
1200 avoid sanity_check warning if statue in water or lava gets polymorphed into a
1201         boulder; break it into a stack of rocks if that would happen
1202 werewolf or werejackal howling and purple worm burping wakes up monsters
1203 don't exclude map column 1 from consideration when rloc() picks a random spot
1204         for destination of a teleported monster
1205 covetous monster attacking another monster to acquire special item would not
1206         do so if positioned diagonally adjacent
1207 skip sanity_check handling when current command is ^P, otherwise it might
1208         re-trigger and show new sanity warning every time when set for
1209         line-at-a-line feedback
1210 applying a cream pie (always) or lump of royal jelly (sometimes) would use up
1211         the object and then access its memory after that had been freed
1212 keep track of hero's pending movement points across save and restore
1213 give feedback if hero sees a monster become hidden under an object or water
1214 hero might hear unseen monster read scroll of create monster or scroll of
1215         teleportation; when it was create monster, player was given a chance
1216         to call it something but not when it was teleportation, allowing the
1217         player to deduce which type of scroll it actually was
1218 wizard mode wish for terrain while on a fountain|sink spot made the counter
1219         for number of fountains|sinks become one too big; would affect level
1220         sound messages if all fountains|sinks were eventually destroyed
1221 add a level arrival region to the Gnome King's Wine Cellar variation of the
1222         Mines' End level so that hero can't end up in the treasure chamber
1223 make potion of water become discovered if dipping a carried container into an
1224         uncursed one reports that water gets inside or slides right off
1225 a monster which was temporarily asleep wouldn't be affected by taming (either
1226         food or magic), but one that was indefinitely asleep would be; when
1227         tamable via food, it even caught and ate the food without waking up
1228 in wizard mode, #terrain has offers to view all map locations as single-
1229         letter codes corresponding to the levl[][].typ numbers and to view
1230         a legend showing letter-to-type correspondence; adding new type
1231         "lava wall" didn't update that legend and misdescribed all the types
1232         which have higher values
1233 restore the ability for trap creation via magic which creates pits to destroy
1234         'furniture'
1235 allow #sit while flying over a squeaky board trap to trigger it
1236 weight of statues of wraiths and of monsters which never leave a corpse was 0
1237 when a werecreature in human form attacked hero, it could transform to critter
1238         despite hero having the Protection_from_shape_changers_attibute
1239 status highlighting for hit points didn't work as intended for up or down HP
1240         changes; 'up' rule was used for both, 'down' rule was ignored
1241 unhide an unseen water monster using a polymorph trap on land
1242 allow defining random-teleport or monster-generation exclusion zones in lua
1243 if Magicbane cancelled a shapeshifter, forcing it to 'unshift', subsequent
1244         messages continued to refer to the shifted form
1245 a pet that was poison resistant but not stoning resistant would eat Medusa's
1246         corpse and be turned to stone
1247 ring of hunger prevents choking on your food
1248 paranoid_confirm:pray can be changed to require yes/no response instead of y/n
1249         by also setting paranoid_confirm:Confirm
1250 wand of probing reveals map locations and traps in the ray path; also reveals
1251         secret doors and secret corridors if the ray hits such
1252 wand of probing zapped downward while hero is over water shows items under that
1253 wand of probing reveals tin and egg contents
1254 applying a wielded, lit potion of oil to unlight it while other unlit
1255         potion(s) of oil were quivered would trigger panic
1256         "addinv: null obj after quiver merge otyp=N" where N is POT_OIL
1257 casting stone-to-flesh at self turned wielded or quivered rocks into unwielded,
1258         unquivered meatballs, merging stacks if there were some in each slot
1259 the throne room on the Samurai quest home level lacked a throne but gave
1260         "You enter an opulent throne room!" message the first time it was
1261         entered; vary the message rather than add a throne
1262 coughing due to stinking cloud wakes up nearby monsters
1263 stop occupation when timed levitation or choking issues a message
1264 use #monster to make dragon steed breathe
1265 steam vortices and fog clouds leave steam clouds behind
1266 fog clouds maintain any clouds they are in, even poisonous ones
1267 bone devils summon skeletons
1268 adjust wand of make invisible and potion of invisibility effects
1269 barbed devils have an attack that sticks you to them
1270 balrogs prefer bullwhip if hero is wielding a weapon
1271 ice devils have an additional attack, a slowing touch
1272 buff scroll of confuse monster and blessed potion of monster detection
1273 if a temple was entered while blind, #overview could show a line of just "."
1274         when describing altars if no other interesting features on that level
1275         were known
1276 rolling boulders ignored walls and trees
1277 shopkeepers consider the monster type when charging for tins, eggs and corpses
1278 separate level flags premapped and sokoban
1279 hero had worn amulet of magical breathing become unworn during theft by nymph,
1280         dropped it to be able to crawl out of water, so it wasn't there when
1281         game tried to transfer it to thief, triggering an "object lost" panic
1282 digging down on a magical trap causes it to explode
1283 thrown potion of sickness now bypasses target's innate magic resistance but
1284         only affects current hit points, no longer also reducing maximum HP
1285 lightning has a small chance of melting iron bars
1286 make spell menu work with repeat
1287 when attempting to look up a named fruit in data.base, try harder
1288 set and check mon->mstate flags more consistently
1289 fix sanity error when cloud was created over an engraving
1290 docall naming of the monster that currently has the hero swallowed by
1291         using their visible interior
1292 give missiles thrown or shot by monsters the same chance to get used up upon
1293         hitting as when thrown or shot by the hero
1294 change menu_headings to also accept a color or color&attribute
1295 issue feedback for encumbrance more consistently during pickup up
1296 if hero destroys an altar by breaking a wand of digging or applying a drum of
1297         earthquake, provoke divine wrath
1298 if hero destroys a shop wall by breaking a wand of digging or applying a drum
1299         of earthquake, have shopkeeper demand payment
1300 mimics sometimes woke up and came out of hiding when they shouldn't have if
1301         hero without protection from shape changers returned to a previously
1302         visited level (though they would usually rehide so it wasn't obvious)
1303 Wizards no longer have a bonus to writing unknown spellbooks, but now
1304         learn what spellbooks look like as they gain skill in their
1305         spell schools (allowing a guaranteed write with enough skill)
1306 starting inventory: magic markers are more likely (guaranteed for
1307         Wizards), but have fewer charges
1308 early dungeon (pre-Sokoban) generates extra useful survivability items
1309 potion of healing is much more common, and has a unique price
1310 alchemy may affect only a portion of the dipped potions if a large
1311         stack is dipped (especially if that stack is diluted)
1312 monster kills can no longer deathdrop comestibles (other than the
1313         monster's corpse) unless the monster collects food or
1314         generates with food
1315 about 10% of the heroes will now be left-handed; track the handedness of the
1316         hero in the 'you' struct
1317 if a monster fled from hero by intentionally jumping into a vault teleporter,
1318         it would teleport randomly instead of into the vault, and if the
1319         teleport trap's niche wasn't mapped yet, the trap would become mapped
1320         but the spot would remain a secret corridor and not become accessible
1321 boomerang travels in a clockwise arc when thrown by a left-handed hero and in
1322         a counterclockwise arc when thrown by a right-handed hero
1323 spellbooks weight 50 units but Book of the Dead only 20, and novels only 1;
1324         the Book of the Dead has been changed to 50 and novels to 10
1325 save and restore hero tracks, increase track length
1326 change vrock and hezrou from red to green, adjust vrock tile to have green
1327 change wolf and werewolf to grey, warg to black
1328 change [master] mind flayer, the Wizard, and the riders to bright magenta
1329 change Nalzok and Minion of Huhetotl to bright red
1330 walking into a shopkeeper tries to pay the bill
1331 show billed items in a menu when paying with non-traditional menustyle
1332 prioritize paying shopkeeper next to you even if multiple are detected
1333 avoid impossible "trapped without a trap (fmon)" from 'sanity_check' when a
1334         drum of earthquake made a pit at a monster's spot and pit creation
1335         caused adjacent pool/moat/lava to flood that spot; if a non-floater,
1336         non-flyer monster survived that, it got marked as trapped even though
1337         flooding deleted the trap
1338 demons cannot be frightened by showing them their reflection
1339 HP regeneration formula has changed, primarily to be less fast in the endgame
1340 riding negates stealth unless the steed is flying
1341 previous hero rising as undead in bones retains intrinsics
1342 level temperature affects monster generation
1343 amulet of unchanging cannot be polymorphed
1344 wishing for a "lit candle" provided one, but the feedback as it was added into
1345         invent was "partly used candle (lit)" because of how 'lit' timer works
1346 don't fall off steed because of Fumbling if saddle is cursed
1347 cursed welded quarterstaff doesn't prevent spellcasting
1348 wielded quarterstaff gives a small spellcasting bonus
1349 if polymorphing a potion turned it into oil, dipping potions produced oil
1350         randomly, or a horn of plenty produced a magic potion and converted
1351         it into oil, the resulting potion of oil had its age (amount left)
1352         set of the original potion's age (turn it was created) and could burn
1353         for an arbitrarily long time if applied; conversely, polymorphing oil
1354         into non-oil kept its relative age (no noticeable effect though)
1355 an engulfer capable of passing through iron bars could do so even when hero
1356         was engulfed
1357 some uses of mons[obj->corpsenm] weren't excluding obj->corpsenm==NON_PM (-1)
1358 if a covetous monster tried to teleport next to the hero but the level was
1359         completely full, it would be booted off the level (set to migrate
1360         back if the hero left and returned) instead of just staying put
1361 if loadstone was unIDed but had been assigned a type name and you failed to
1362         pick one up, the message referred to it as "gray stone" rather than
1363         "stone called <assigned name>"
1364 when a vision blocking gas cloud dissipated, the screen didn't necessarily
1365         get updated to show newly visible locations in a timely fashion
1366 if confused #loot while on a throne moved whole stack of quivered gold into
1367         'coffers' chest, the gold wasn't unworn from quiver slot, potentially
1368         leading to crash when quiver was subsequently accessed
1369 when filling quiver slot, don't bother asking "what do you want to ready?" if
1370         invent is empty
1371 no secret doors or corridors on the first two dungeon levels
1372 the number of items destroyed by elemental effects is based on the damage
1373 randomize the spellbook in the second level of vlad's tower
1374 monsters weren't randomly generating if exactly one square was outside LOS,
1375         and it contained a monster
1376 when a spellbook was polymorphed into a novel and then incrementing spestudied
1377         field turned it into a blank spellbook, the novel's title would stick:
1378         "{spellbook of blank paper|plain spellbook} named <Discworld title>"
1379 walking on ice can make you slide in a random direction
1380 if an adjacent statue was a in a pit, you could break it with a pick-axe even
1381         though you're conceptually at the wrong elevation to reach it
1382 using '#adjust c c' to collect all invent items compatible with the one in
1383         slot c prefixed the inventory update message with "Merging:" rather
1384         than "Collecting:" if there was at least one compatible stack; when
1385         there weren't any compatible stacks and it was effectively a no-op,
1386         the prefix used was "Collecting", lacking its intended colon
1387 using '#adjust c d' or '#adjust d c' after splitting slot c via '#adjust Nc d'
1388         for N less than c's stack size swapped c and d instead of re-merging
1389         them even though merging was the intended behavior (the 3.6 change
1390         that caused this was intended to avoid collecting other compatible
1391         stacks while still merging the two specified ones)
1392 ring of aggravate monster increases the level difficulty
1393 if hero shattered an unseen monster's weapon, the [also unseen] weapon was
1394         described in the feedback
1395 don't self-genocide if a monk picks "master-lich" or "masterlich" as target
1396         (was matching "Master" rank)
1397 Sunsword can be invoked to create a blinding ray
1398 Excalibur is much harder to get if hero is not a knight
1399 pets considered any noise made by hero made as whistling
1400 silent monsters in stinking clouds don't cough
1401 unblind telepathy range depends on number of telepathy granting items worn
1402 gold thrown or kicked at a sleeping monster with the 'greedy' attribute gets
1403         caught instead of being treated as an attack but the catch message
1404         neglected to report that target monster was awakened in the process
1405 hero movement affects the water bubble movement direction
1406 pets and peacefuls avoid a location hero just kicked
1407 pets avoid a possible boulder pushing location in sokoban
1408 shopkeepers bill you for using their bear trap or land mine
1409 when engraving with a stack of eligible weapons, split one off the stack and
1410         dull it rather than dull the whole stack
1411 when engraving with a stack of cursed weapons, treat it differently if that
1412         stack is welded to hero's hand:  write in dust and leave whole stack
1413         welded rather than split one off stack to engrave on floor
1414 hero or monster didn't fall into pit if water at the location was boiled away
1415 shopkeepers magnified the cost of shop items used up as a group; normally
1416         using an item splits 1 from its stack, but applying a stack of N
1417         candles to light them all charged N * N * single_candle_price
1418 the tile for Ixoth (knight's quest nemesis) depicted a demon rather than a
1419         dragon; change it to be a red dragon
1420 untrapping containers or doors gives some experience
1421 only honor DEBUGFILES (for activating debugpline() calls) when in wizard mode
1422 if hero is on scroll of scare monster or Elbereth, werecreature switching from
1423         human to beast form or general monster polymorphing into a susceptible
1424         form will become scared right away instead on its next move
1425 'altmeta' option didn't work as intended when 'number_pad' was On; typing
1426         "n <count> ESC c" wasn't treated as "n <count> M-c" because reading
1427         the 'n' changed program_state.input_state from commandInp to otherInp,
1428         preventing special ESC handling; not an issue when number_pad was Off
1429 a 3.6 fix to avoid a potential "object lost" panic when drinking potions had
1430         unintended side-effect of making used up potions on shop's bill become
1431         separate bill entries all with count 1 despite having come from same
1432         unpaid stack; affected Ix inventory listing and itemized shop billing
1433 buying shop items which include any unpaid ones inside containers would reveal
1434         them even when the containers hadn't been opened (obj->cknown==0);
1435         recent change to pay via menu made the problem become more visible;
1436         shopping has been changed such that buying anything that is inside a
1437         container requires that the whole container be bought as a unit
1438 using #loot -> 'i'n to put multiple items into a shop-owned container would
1439         ask whether to sell each item to the shop, and was prepared to accept
1440         'a' to sell the current one plus all the rest beyond it, or to accept
1441         'q' to not sell the current one or any beyond it, but the sell vs
1442         don't-sell state was being reset for each item so 'a' and 'q' didn't
1443         stick beyond the current one
1444 join wall "spines" with walls of water and lava
1445 some theft messages by nymphs force "she", others use default monster naming
1446         which yields "it" when unseen; change the latter to "someone" which
1447         still differs from "she" in a series of messages but isn't as jarring
1448 if a nymph stole worn armor and got killed (perhaps by pet) before hero's next
1449         turn, feedback would be "You finish taking off your suit." regardless
1450         of the type of armor being taken off
1451 when setting an option interactively [via O or 3.7's mO], if the particular
1452         option uses a prompt to get a line of input (for compounds: 'fruit',
1453         'scores', most numeric ones), input was treated as a comma-separated
1454         list of option[:value] rather than just the new value of that option
1455 when there was a trap on a no-dig level, the floor beneath it was always
1456         "too hard to dig into", making it impossible to remove the trap
1457 the #terrain command didn't know how to cope with visible gas/cloud regions;
1458         treat as traps as far as player choice of whether to show or hide;
1459         if/when a spot contains both region and trap, show the trap
1460 region expiration reported "the gas cloud around you dissipates" even when the
1461         hero was swallowed
1462 region expiration could report "the gas cloud around you dissipates" and also
1463         "you see a gas cloud dissipate" for the same cloud spot
1464 reduce shopkeeper's innate speed from 18 to 16 so that a hasted shopkeeper
1465         doesn't always get 2 moves per turn
1466 when a secret corridor was discovered by wand of secret door detection or by
1467         wizard mode ^E and converted into a regular corridor, if there was a
1468         formerly embedded object at the spot, presence of the object would be
1469         forgotten unless within range of a light source
1470 when poly'd into a giant, kicking a closed door always succeeds in breaking it
1471 reduce crystal plate mail weight
1472 interactively setting a status highlight for hunger with 'O' and choosing
1473         'text match' could crash while setting up the menu of hunger status
1474         value strings; happened for curses or if the program was built to
1475         use C++ regex processing but not for tty+posixregex
1476 a pet with the hides-under attribute could "move reluctantly over" a cursed
1477         object and then hide under it
1478 prevent monster generation in the sokoban trap hallway
1479 change MSGHANDLER from compile-time to sysconf option
1480 allow changing extended command autocompletions via #optionsfull
1481 if eating a tin's contents caused the hero to choke to death or turn to stone,
1482         resulting bones would contain the tin still intact
1483 when hero who is poly'd into metallivore form eats a tin, bypass "smells like
1484         <monster>" feedback and the "Eat it?" prompt; just eat the contents
1485         along with the tin without asking
1486 digging in ice was handled inconsistently, particularly if done at the span
1487         spot in front of closed drawbridge
1488 angry god may remove an intrinsic
1489 gelatinous cubes eat organic objects inside them
1490 pets with reflection were unwilling to attack floating eyes
1491 artifact gifts are rebalanced (easier to obtain; higher-value sacrifices are
1492         needed for higher-value artifacts; lower-value artifacts are usually
1493         gifted enchanted; unaligned artifacts are possible but rare even on
1494         the first gift; artifacts you can't use well are less likely)
1495 luck gains from sacrificing are limited by the value of the sacrifice
1496 failed #untrap could move hero diagonally into or out of an open doorway
1497 remember box is trapped after finding the trap
1498 when you hear a monster incant a scroll, ensure that the 'I' invisible
1499         monster indicator doesn't trump telepathy briefly
1500 proceed with showpaths option even if the sysconf file is missing
1501 angry shopkeeper was not charging for thrown items
1502 avoid "You fall down a deep shaft!" if deliberately flying down
1503 since introduction in 3.1.0, the definition for Mitre of Holiness has specified
1504         that carrying it provides fire resistance, but that had never been
1505         implemented; wearing it didn't confer fire resistance either--there is
1506         no 'defends' capability for it since carrying should encompass that
1509 Fixes to 3.7.0-x General Problems Exposed Via git Repository
1510 ------------------------------------------------------------
1511 incrementing EDITLEVEL to invalidate incompatible save files was not working
1512         as intended because VERSION_COMPATIBILITY was defined as 3.7.0-0 and up
1513         rather than as 3.7.0-N for the current EDITLEVEL 'N'; undefine it
1514 fix compile when DLB isn't defined
1515 urealtime.realtime was being incorrectly calculated
1516 revised "mysterious force" when climbing out of gehennom could generate
1517         warnings about "rn2(0) attempted" or "rn2(-n) attempted"
1518 after 'w' on split stack patch, wielding '-' would cause an object_lost panic
1519 same patch allowed partial stack from getobj to replace cursed wielded weapon
1520 autounlock of door or chest took no time; chest case depended on whether
1521         anything got looted along with the unlocking
1522 autounlock with artifact unlocking tool didn't do touch check on that tool
1523 autounlock picked Rogue's artifact key over lock-pick or credit card (or
1524         ordinary key depending upon invent order) even for non-rogues who
1525         would be blasted when touching it
1526 wielded aklys had its "(tethered weapon...)" description scrambled
1527 randomized trap name could pick trap #0 which isn't a trap and yielded "water"
1528 if running and Blind or Stunned or Fumbling or Dex < 10, encountering a closed
1529         door orthogonally would keep reporting "ouch! you bump into a door"
1530         repeatedly until eventually interrupted by approaching monster or
1531         hunger or ^C
1532 data.base lookup of an entry with any blank lines would falsely claim that
1533         "'data' file in wrong format or corrupted" after some extra checks
1534         were added while investigating tab handling anomalies
1535 using nhl_error() to report a Lua processing problem would clobber the stack
1536 level teleportation's "You materialize on a different level!" could be given
1537         out of sequence with other arrival messages
1538 more sequencing: if wielding Sting or similar and level teleporting to a
1539         level with different warning effect, the start-glowing or stop-glowing
1540         message came before the materialize message on the destination level
1541 prevent "you materialize on a different level" after "a mysterious force
1542         prevents you from descending" if you try to level teleport past the
1543         stairs down from the quest home level before being granted access
1544 creating Mine Town variant 1 (Orcish Town) sometimes complained about being
1545         unable to place lregion type 1 and failed to have any staircase up
1546 set g.context.botl for glove and wielding actions that could start or end
1547         bare-handedness in support of condtests[bl_bareh]
1548 reinstate ranked ordering of the status condition fields
1549 grammar for messages about a monster removing items from a container was bad
1550 some new status conditions didn't always update when they should
1551 fix flipping non-existent stairs and ladders (github #311)
1552 fix door created into random wall or position opening into solid wall
1553 handle gone portal when going back in quest
1554 'use_inverse' option was accidentally made Windows-only; change it back to
1555         being more general; change its default to True
1556 change inconsistent achievement spelling of "Mine Town" to "Minetown"
1557 fix crash in water_damage_chain
1558 teleport feedback "you materialize at another location" was given too soon
1559 'mention_decore' was repeatedly reporting "you are back on bottom" when
1560         moving around underwater
1561 revised 'mention_decor' was describing furniture or ice right before look-here
1562         described the same thing when stepping onto object(s)
1563 poison gas clouds located over known but unlit pools were visible as known
1564         clouds but steam clouds in that situation were not
1565 after the wish parsing change, wishing for "<something of monster>" or for
1566         "<monster something>" worked as intended but wishing for "<monster>"
1567         (where <monster> used the canonical spelling) triggered a crash
1568 fix new "objects[0] class #1 not in order!" panic if plain 'char' is unsigned
1569 only generate shop items on solid floor squares
1570 avoid gcc 10 warning by removing duplicate definition of 'head_engr'
1571 if a monster removed a corpse from an ice box, the corpse would never rot away
1572 monster creation on quest levels could make genocided creatures
1573 enabling wizard mode 'sanity_check' option would complain about invalid mhpmax
1574         value for level N monsters created with a d8 value of 1 for all N d8's
1575 disable that extra check because gremlim HP split after cloning triggers it
1576 some versions of tiles processing (not X11's) complained about the rename of
1577         "{acid,blinding} venom" to "splash of {acid,blinding} venom"
1578 wizard mode #timeout changed to show timed Displacement in 'can be timed in
1579         normal play' section instead of 'timed via #wizintrinsic only' section
1580 the fix to make worm visibility checks work as intended forced the coordinates
1581         of the extra tail segment co-located with the worm monster to match
1582         the worm instead of leaving it off the map; place_worm_tail_randomly()
1583         reverses the segments and can throw some away if there isn't room,
1584         but throwing away the extra segment removed the worm from the map
1585 using 'O' to try to change 'symset' was a no-op; 'roguesymset' worked
1586 change default for lit attribute in special level des.terrain directives to
1587         'unchanged' instead of 'unlit'
1588 replace worm tail placement code that reportedly led to a sanity_check warning
1589         [no actual code problem found; might be compiler bug for 'xchar']
1590 learn scroll of teleportation after reading even when random destination is
1591         right by starting spot
1592 fix off-by-one bug in dimensions of theme rooms
1593 fire/frost horn feedback when zapped by monster was inaccurate (falsely
1594         claimed that it was "directed at self" when attacking hero)
1595 tins of spinach and 'dead' eggs could cause out of array bounds access
1596         attempting to index into mons[] by polyfodder() macro
1597 options help ('? g') listed all boolean options, then repeated them among
1598         the compound options; on macOS they showed a description of "(null)"
1599         but for other sprintf implementations they might cause a crash
1600 change name of #wizlevelflip to #wizfliplevel
1601 dwarves could sometimes pass through walls without digging their way
1602 fix genetic engineers dropping Schroedinger's cat box
1603 the checks and handling for fountains, sinks, and drawbridges were being
1604         missed during liquid_flow
1605 monster movement flags unification allowed displacer beasts to displace Riders
1606 a long worm with no visible segments (but one internal segment) might trigger
1607         warning: tail 'segment' at <0,some_y>, worm at <mx,my> if teleported
1608 adding displacer beast inadvertently introduced a regression in swapping with
1609         pets, allowing them to be pulled into water by hero on/over water
1610 splitting #if MAIL into #if MAIL_STRUCTURES and #if MAIL made it possible to
1611         wish for and write scrolls of mail with MAIL disabled, but attempting
1612         to read such a scroll issued impossible "What weird effect is this?"
1613 remove M2_MALE flag that was unintentionally left on dwarf lord/lady/leader
1614         entry and was preventing female incarnations
1615 tilemap.c wasn't building if STATUES_LOOK_LIKE_MONSTERS wasn't defined; also,
1616         to match the code that should be defined so change the preprocessor
1617         test to 'ifndef STATUES_DONT_LOOK_LIKE_MONSTERS'
1618 ensure that monster female name variation ends up as a female during ^G
1619 arbitrate when there is a conflict between gender term (male or female) and
1620         a gender-tied monster name (cavewoman) during ^G; gender term wins
1621 wizard mode sanity check complained about Wizard's clone mimicking a monster
1622 new ^G gender-naming handling code required a guard against null permonst
1623         pointer which could occur under some circumstances
1624 replace "aligned priest" entries in Pri-loca.lua, astral.lua, minetn-1.lua,
1625         and sanctum.lua, with "aligned cleric"
1626 attempting to swap places with a peaceful monster might cause it to flee
1627 gender-specific monster names can be used in .lua files with the gender upheld
1628 remove unused vision tables
1629 changes accompanying sorting of discoveries resulted in omitting very last
1630         item for '`'/#knownclass on a class where every item was discoverable
1631         and had no extra labels (so potions and rings, possibly others, but
1632         not scrolls or wands) and every item was actually discovered
1633 change to can_reach_floor() resulted in hero being unable to reach the floor
1634         when held by a lichen
1635 panic if lua init fails
1636 change wizard mode command #wizmgender to wizard mode option 'wizmgender'
1637 engraving with non-blade dulled the weapon anyway (pr #464)
1638 'sortdiscoveries:s' had a spurious generic header shown at the start of the
1639         last class if there were any artifacts or unique items discovered
1640 loss of saddle by opening magic left hero mounted on unsaddled steed
1641 avoid segfault during error reporting for bad 'O' value(s) after theme rooms
1642         have been initialized, leaving iflags.in_lua set
1643 avoid complaints of "nothing to foo" for 'force_invmenu' if there are no
1644         likely candidates to foo with but there are hidden acceptable choices
1645 avoid "Not carrying anything.  Never mind." for 'force_invmenu'
1646 'altmeta' option could be toggled On but once On could not be toggled back Off
1647 wearing a ring of protection and any amulet behaved as if wearing an amulet of
1648         guarding when determining MC value
1649 messaging for genetic engineer attacks had several problems
1650 give genetic engineers teleport capability (as they had in slash'em); 'port
1651         away after polymorphing someone so that they don't just repeat that
1652 if an invisible hero managed to convert an unaligned altar to an aligned one
1653         with color enabled, altar wasn't immediately redrawn with new color
1654 repair some regressions to (a)pply introduced by "getobj refactor" patch
1655 getobj too: allow attempting to (E)ngrave with any item in inventory
1656 getobj refactor also allowed non-nameable items on floor to be assigned names
1657 exploiting the bug to assign type name to glob on floor allowed wishing for
1658         "N assigned-glob-name" to create a glob with quantity N instead of 1
1659 fix ^X feedback when held typo: "unseen createure" -> "unseen creature"
1660 if a <foo> corpse was set to revive as a <foo> zombie and corpse was partly
1661         eaten at revival time and monster <foo> is defined as providing more
1662         nutrition that <foo> zombie, oeaten_stat() could give the warning
1663         "partly eaten food more nutritious than untouched food" when used to
1664         calculate zombie's hit points (depended upon how much had been eaten)
1665 undead turning magic revived corpses flagged as no-revive if they were being
1666         carried but not if they were zapped while on the floor
1667 forgetting an item's known/dknown/bknown/&c settings when picked up by unseen
1668         monster made it possible to trigger a latent shop bug with globs;
1669         avoid clearing dknown flag for globs
1670 fix globby_bill_fixup to use shopkeeper instead of Null for glob pricing
1671 applying a book to check readability treated novels as if they were spellbooks
1672 #version was leaving the 'in_lua' flag set and if subsequent 'O' issued an
1673         error (example was an attempt to interactively set bouldersym to an
1674         invalid value), the error reporting routine crashed via segfault
1675 lighting for baalz level defaulted to random and could end up being lit
1676 when using 'O' to set menu color patterns, the reminder message that the
1677         boolean menucolors option needs to be set to True for them to work
1678         was sometimes given even when already True
1679 stair revamp unintentionally resulted in cursed potion of levitation no longer
1680         causing hero to hit head on ceiling
1681 enlightenment/disclosure when wielding two weapons with two-weap skill higher
1682         than secondary weapon's skill had "with" duplicated in the feedback
1683 corpse of monster with gender specific names (king vs queen and so forth)
1684         was always described by the neutral name (ruler and such)
1685 prevent obj_pmname() from calling mon_pmname(monst) when monst->data is null
1686         to prevent a null pointer dereference
1687 correct the pluralization of monarch to monarchs, rather than monarches
1688 don't allow web spun by spider to interfere with solving Soloban
1689 fix parsing of wish adjectives (return value broken by changes accompanying
1690         figurine gender patch)
1691 when picking up a thrown weapon while quiver is empty, don't put it into the
1692         quiver slot if it needs to be wielded for throw-and-return action
1693 using bhitpos in flooreffects to handle erosion damage broke its original use
1694         of tracking wand zaps if a teleportation zap hit an object; subsequent
1695         zap traversal was done from object's landing spot rather than from its
1696         zap hit spot, resulting in scrambled wand targeting
1697 restore previous behavior of the 'altmeta' option (only wait for a second
1698         character when getting a command keystroke, not other key input)
1699 baby gold dragons weren't able to grow into adult gold dragons
1700 when hero is displaced, make monsters who try to stay out of direct line do so
1701         with spot where they think the hero is rather than where he really is
1702 if hero died while wearing gold dragon scales/mail and left bones, they would
1703         still be emitting light without being worn when bones got loaded
1704 if an invisible monster put on or took off armor while out of hero's sight
1705         spurious message "Suddenly you cannot see it" would be given
1706 an item thrown or dropped while swallowed was treated as being picked up by an
1707         unseen monster so object fields {known, dknown, bknown} got cleared
1708 segfault if gremlin fled weaponless hero wearing gold dragon scales/mail
1709 'disambiguate WHACK' patch affected field layout of objects[] but EDITLEVEL
1710         wasn't incremented, allowing incompatible save files to be restored
1711 restore the boulder exception for piletops that had been unintentionally
1712         removed during the expanded-glyphs changes
1713 misaligned potion colors due to lack of reset_glyphmap() following obj shuffle;
1714         this issue only impacted a new game
1715 closed doors were described as "horizontal closed door" or "vertical closed
1716         door" instead of just "closed door"
1717 glob shrinkage while hero was away from glob's level wasn't handled properly
1718 unpaid shop-owned glob that shrank to nothing had weight 0 which triggered
1719         onbill warnings when 'sanity_check' was On; for 'Ix' and itemized
1720         billing, the empty weight was shown to player if 'wizweight' was On
1721 if 'showrace' was On and invisible hero couldn't see invisible so didn't see
1722         self, the color of whatever could be seen underneath changed to white
1723 in wizard mode, a poly'd priest/priestess attempting to polymorph into priest
1724         or priestess in order to rehumanize became a new man or woman instead
1725         because "priest" matched "aligned cleric" rather than the role monster
1726 if a glob which has just shrunk away to nothing was wielded or quivered,
1727         unwield it before destroying it
1728 after changes to gender tracking for corpses and statues, when a unique
1729         monster got turned into a statue if was erroneously flagged as female
1730         rather than 'historic'
1731 changing engraving to an occupation resulted in not dulling a weapon used to
1732         engrave a single character
1733 a change to wounded legs handling resulted in not recovering lost dexterity
1734         or receiving the "leg(s) feel better" message if wound time expired
1735         rather than having legs be explicitly healed
1736 turning movement into commands broke the rest_on_space option; it also
1737         interfered with using pick-axe plus autodig in downward direction
1738 cursed scroll of light had special message when wielding Sunsword that didn't
1739         work for wearing gold dragon scales/mail
1740 giving a prefix keystroke other than 'm' prior to a command that doesn't use
1741         prefixes was silently ignored instead of being rejected
1742 prior revision broke all prefix usage
1743 movement command revamp broke 'm>' and 'm<' on stairs to avoid auto-pickup at
1744         the destination
1745 when trapeffect_selector() returns 2 to caller mintrap(), meant to signify
1746         that the monster was killed in the trap, ensure that mintrap()
1747         returns that value too
1748 have com_pager() check for failed nhl_init(); probably can't actually happen
1749         because the program would never get that far if lua init was failing
1750 rearranging first-kill and first-hit gamelog messages to get hit before kill
1751         ordering resulted in "hit with a wielded weapon for first time" being
1752         given twice if that hit was delivered via applied polearm or via a
1753         joust hit
1754 rearranging the feedback for first-kill and first-hit introduced a bug by
1755         not verifying that the wielded item used to hit was a weapon, giving
1756         erroneous event feedback and potentially giving it over and over for
1757         other non-weapon hits for as long as never-hit conduct stayed unbroken
1758 counting "just picked up" items when deciding what pseudo-classes should be
1759         included for the 'I' command's object class prompt was operating on
1760         an uninitialized variable
1761 changes to stair internals resulted in summoned Kops blockading the stairs up
1762         rather than intended stairs down
1763 dumplog's list of "major events" showed all logged events, not just major ones
1764 pickup via menu ignored player-specified count when picking up gold
1765 changes in encumbrance sometimes went unreported, leaving stale status line
1766         info until hero's next move
1767 taking off yellow dragon scales/mail or having temporary stoning resistance
1768         time out while wielding a cockatrice corpse without gloves left that
1769         corpse safely wielded instead of petrifying the hero
1770 special level loading wasn't honoring gender specified in lua code
1771 add '#tip' for containers to context-sensitive invent handling
1772 sequencing confusion: picking an item when viewing inventory and picking an
1773         action to do with it caused the inventory command to use time, then
1774         on next turn the action was performed without taking any time
1775 program would access freed memory if charging caused a ring to explode
1776 arriving on Valkyrie quest final level could produce impossible warning
1777         "mkstairs: placing stairs up on molten lava at <68,13>"
1778 if the repeat command was used after prefix+command, only the command part got
1779         repeated
1780 the change for repeat after prefix+command would result in a crash if repeat
1781         was attempted after an unassigned key
1782 items obtained via wishing while blind were erroneously being marked as 'seen
1783         up close' so behaving differently from items picked up off the floor
1784 corpses of neuter monsters had random chance to be flagged as female so would
1785         only stack with others that made the same random choice
1786 one-shot food testing ability conferred by blessed scroll of food detection
1787         didn't warn about globs of green slime because the relevant code was
1788         only executed for corpses, eggs, and tins, not for globs
1789 worn ring of slow digestion blocks per-turn hunger but not the hunger caused
1790         by wearing it; white dragon scales/mail was blocking per-turn hunger
1791         and didn't cause any hunger itself; change to treat it like the ring
1792 if the program was built with EXTRA_SANITY_CHECKS enabled, changing levels
1793         while riding would give impossible warning "no monster to remove"
1794 the change to protect Rider corpses from being destroyed by exploding chests
1795         inadvertently prevented them from being used up when Riders revived
1796 force-fight against furniture covered by an object described the attack as
1797         missing an unknown obstacle
1798 using #wizmakemap on Plane of Water added a new set of air bubbles each time
1799         it was run and eventually replaced just about all the water; likewise
1800         with clouds on Plane of Air
1801 avoid new "where are we?" panic if player quits during character selection
1802 add Untrap as a potential 'autounlock' action
1803 if a zombie revived near the hero, a busy hero would keep doing whatever
1804         action was in progress instead of stopping because the zombify didn't
1805         walk across the threshold from no-threat to threat
1806 revised monster teleportation message handling caused magic whistle to be
1807         changed to not operate on pets that were already adjacent; change back
1808 revised monster teleportation message handling could produce duplicate message
1809         when shopkeeper who left shop got returned to it
1810 revised magic whistle produced message sequencing issues when summoned pet
1811         arrived on a trap, particularly if killed or sent away or shape changed
1812 recent changes in removing a dead monster from the map didn't update screen
1813         to show objects it dropped; they were present, just not displayed
1814 further changes resulted in dead monsters' corpses be placed at <0,0>;
1815         reverse the part(s) that cleared stale monst->mx,my
1816 adding name/rename choice to #therecmdmenu caused it to crash when picking an
1817         adjacent unnamed, untame monster
1818 for menustyle:Full, fix the combination of 'A' auto-pick all plus 'P' just
1819         picked up to limit what "all" means
1820 for menustyle:Traditional, fix 'P' for just picked up items in inventory when
1821         filtering what items to put into a container
1822 restrict stunning effect to is_xport trap types
1823 lua's garbage collection didn't like the way nethack was trying to use it and
1824         issued a pair of warnings each time the relevant code got run
1825 items flagged as just-picked-up were unflagged if you stepped on other items
1826         without picking anything up
1827 activating a magic portal still gave "you feel dizzy for a moment, but the
1828         sensation passes" after portal traversal was changed to make the hero
1829         be stunned for a few turns
1830 after the fix for zombie reviving near hero (which now interrupts hero's
1831         occupation), could get "revive panic" when eating a troll corpse if
1832         it revived on the same turn that eating the corpse would finish
1833 a wizard's starting equipment was supposed to include a random spellbook of
1834         spell level 1 through 3 but it was being foced to be level 1
1835 earlier fix for prices of unpaid objects going away in persistent inventory
1836         display when hero bought something during itemized billing didn't work
1837         if paying for a used-up shop item--prices of any unpaid items vanished
1838         when inventory got updated to reflect transfer of hero's gold to shk
1839 save files created with SCORE_ON_BOTL disabled were erroneously being rejected
1840         if the program was rebuilt with it enabled and vice versa
1841 avoid "It suddenly appears!" if a monster with the STRAT_APPEARMSG attribute
1842         is seen to teleport away then not seen at its destination
1843 avoid boulder-on/in-water sanity_check warnings on the Plane of Water
1844 when one monster swallowed/engulfed another and killed it, impossible
1845         "placing <mon> over itself ..." could be given by place_monster()
1846 if the game crashed or the process was killed, recovering a save file ended
1847         up with incorrect stairway connections between levels
1848 when using --nethackrc=file on the command line (currently only implemented
1849         for ports that use unixmain.c), options parsing freed the string
1850         containing 'file' before using it as the RC file name
1851 using 'o'pen as a synonym for #loot of a container at the hero's location did
1852         not work if the hero was in a pit
1853 update '?' menu to reflect change to 'O' command
1854 end of game with DUMPLOG could panic due to perm_invent handling, even when
1855         the persistent inventory window wasn't in use
1856 with color Off and the screen symbol for ice the same as for floor, the black
1857         and white ice was supposed to be rendered in inverse video but that
1858         got broken by the symbols and glyphs overhaul
1859 command line processing interleaved with options file processing is complex:
1860         a recent change to make 'color' show up for tty in the short options
1861         menu resulted in 'nethack --windowtype:X11' running X11 with ascii map
1862         ('NETHACKOPTIONS=windowtype:X11 nethack' continued to default to tiles)
1863 when the Astral level got created, any fake player character monsters that
1864         were seen or sensed when created were reported as "<mon> suddenly
1865         appears!" rather than be treated as part of level's initial population
1866 tipping contents of one container directly into another allowed transferring
1867         wands of cancellation and bags of holding or tricks that were inside
1868         a sack, box, or chest into a bag of holding without blowing it up
1869 prevent random traps from being created inside the shops in the tourist quest
1870 if hero's steed got hit by knockback effect, impossible "no monster to remove"
1871         would occur (plus more warnings if 'sanity_check' was On)
1872 the #saveoptions command included options changed via doset_simple() but not
1873         ones changed via full doset()
1874 fix 'nethack --scores' as alias for 'nethack -s'
1875 adding command line 'nethack --usage' broke 'nethack -u name' (however,
1876         'nethack -uname' still worked for names other than "sage")
1877 being hit by a big monster and getting knockback effect could send hero out
1878         of a shop (or into its "free spot") while carrying unpaid goods;
1879         robbery wasn't noticed until hero eventually moved to a different spot
1880 hallucination of objects incorrectly included generic objects as candidates
1881         for what objects looked like; if an object had its dknown flag set,
1882         formatting a generic object in its place was unreliable (Null pointer
1883         deference prior to static analyzer fix, odd fake name "generic" after)
1884 some actions that ask the user to pick a location allow typing '$' to show
1885         valid spots, accept typing a second '$' prior to moving the cursor to
1886         toggle the highlights off; ^R already did that; moving the cursor too
1887 change 'm' prefix for #tip from 'use menu to pick among floor containers'
1888         (since that's already the default) to 'skip floor containers' so that
1889         context-sensitive item-action Tip directly operates on the item
1890 anti-magic field's reduction of hero's maximum energy could result in current
1891         energy being one point higher than maximum
1892 if hero was killed by a wand zapped by a monster, cause of death was reported
1893         as "killed by a bolt of <damage type> imagined by <monster>"
1894 throttle the difficulty of the monsters in theme room "buried zombies"
1895 buried troll whose auto-revive timer expired might trigger panic with
1896         "revive default case 6"
1897 throwing a helm of brilliance could yield "breaking odd object?"
1898 sanity checking of engravings was stopping after first problem found
1899 the fuzzer could get stuck in a loop if hero died in a way where life-saving
1900         just resulted in a repeat death (cited case was burning up in lava,
1901         where life-saving teleports you out of it; if the level is full, the
1902         teleport will fail and you'll immediately burn up again)
1903 fix unicorn horn's ability to repair blindness
1904 quest nemesis and a few other special monsters are suppressed from bones;
1905         their death feedback could be given when they were removed
1906 running the tutorial until completion and returning to normal play but left
1907         the 'no followers' flag set; adjacent pets wouldn't tag along when
1908         hero moved to other levels
1909 when a magic whistle moved a hidden pet it brought that out of hiding and
1910         gave a message about "your <pet> appears" but the map was updated
1911         while it was still hidden so nothing seemed to appear
1912 entering the tutorial stashed hero's equipment for eventual return to normal
1913         play but going down stairs to the second tutorial level returned it
1914         too soon and allowed any items gathered on the first level to be kept
1915 entering the tutorial disables the Save command; exiting it is supposed to
1916         re-enable that but the change to fix the second level broke that
1917 entering the tutorial and then returning to play made the tutorial branch be
1918         eligible for a portal destination via wizard's Eye of the Aethiopica
1919 'hard helmet' was based on being metallic so overlooked crystal helmet
1920 don't blame/credit hero for stinking cloud if dying quest nemesis releases one
1921 Lua selection operations 'subtract' and 'xor' didn't always work as intended
1922 accept 'true' or 'false' as value for des.object field 'trapped'
1923 special level loader didn't check for bad coordinates supplied by <level>.lua
1924         file thorougnly enough
1925 hero might not be credited with "entered Mine Town" achievement for the town
1926         variations which treat the whole level as the town if that level gets
1927         entered via falling or level teleport
1928 in the theme room "water-surrounded vault", guarantee an item which can
1929         be used to escape from the room in one of the four chests
1930 pets capable of using items would pick up and wear cursed armor
1931 if something breakable was set up as alternate weapon and the second of two
1932         bare-handed hits succeeded, it would be broken and trigger impossible
1933         "objfree: deleting worn obj"
1934 strength cap for hero poly'd into an orc captain was 18/50 even though it is
1935         10/100 for Uruk-Hai and monster Uruk-Hai can grow into orc captains
1936 status_hilite rule for critical-hp takes precedence over up/down/changed HP
1937 livelog/#chronicle of multiple high priests reported their deaths as
1938         "killed high priest" and "killed high priest (2nd time)" instead of
1939         "killed high priest of Foo" and "killed high priest of Bar"
1940 using wizard mode #wizkill outside the endgame followed by m^V to enter the
1941         endgame without any intervening moves would result in impossible
1942         "dmonsfree: 0 removed doesn't match N pending on <endgame level>"
1943 dwarf/elf/orc/gnome hero killed by zombie would rise as human zombie for bones
1944 paranoid_confirm:Autoall for menustyle:full has the test handling backward and
1945         was treating 'yes' as no and 'n' or ESC as 'y'
1946 applying a wielded lump of royal jelly but not picking something to rub it on
1947         while other lumps of jelly were quivered would trigger a panic,
1948         "addinv: null obj after quiver merge" (like applying lit potion of oil)
1949 ceiling hider could become hidden when there was no ceiling, triggering a
1950         warning if sanity_check was On
1951 hero could be forced onto a monster's location if a level was full and an
1952         engulfer was occupying an adjacent but inaccessible spot, engulfed
1953         hero, then expelled hero while now occupying hero's accessible spot,
1954         triggering sanity_check warning "you over monster"
1955 experimental #saveoptions wasn't saving the set of cond_xyz options correctly;
1956         if player viewed the 'm O' submenu for status conditions, they would
1957         get saved even if not changed; otherwise, ones that came in from the
1958         old RC file wouldn't be included in the new one
1959 knockback or recoil while levitating could hurtle the hero through a wall of
1960         water to the spot beyond unless it happened on the Plane of Water
1961 if recoil from throwing an item while levitating sent hero into a wall of
1962         water, the thrown item got placed in that water rather than at its
1963         intended destination
1964 include '-' as suggested item in "what to dip?" prompt if dipping at pool or
1965         fountain or sink with slippery hands
1966 don't attempt a second hit for bare handed/martial arts if wearing a shield
1967 when using 'm #overview' to annotate a level other than current the one,
1968         include level number, and dungeon branch if not current one, in the
1969         prompt instead of generic "this level"
1970 when using 'm #overview' in the endgame, don't include non-endgame levels
1971 when a tethered aklys gets caught in a web, make sure it doesn't return
1972         and that the display of the tether gets cleaned up
1973 add 'X' as a potential context-sensitive item-action for uwep and uswapwep
1974 monsters weren't noticing hero's possession or lack of magic resistance when
1975         hero getting zapped by a wand of striking was or wasn't resisted
1976 discard monsters' observations about hero's resistances when saving bones
1977 autopickup while levitating shares code with 'mention_decor'; after being told
1978         about ice covered by an object, moving over some other object later
1979         when mention_decor is Off could give "you are back on solid ground"
1980         long after leaving the ice
1981 duration of temporary stoning resistance would be extended while eating a
1982         cockatrice corpse, as intended, but not while eating Medusa's corpse
1983         so if it timed out during the meal, player got the message about hero
1984         no longer being protected against stoning but was able to finish the
1985         meal safely
1986 farlook at something that was on top of an engraving or grave would report
1987         the engraving text or headstone epitaph along with the 'something'
1988 when carrying 52 items (excluding gold), hero couldn't pick up a thrown,
1989         stolen, or dropped item which was split off from a still-carried stack
1990 supply chests on early levels weighed the same as empty chests until something
1991         was added or removed
1992 stacked pair of potions of healing in supply chest weighed same as one potion;
1993         drinking one of the two gave a healing message, then both had their
1994         weight updated as their stack was split; if close to an encumbrance
1995         threshold, new weight would trigger an encumbrance increase message,
1996         immediately followed a decrease message when the potion got used up
1997 bounds checking for object name formatting inadvertently introduced a change
1998         that hid BUC prefix for charged rings
1999 debug fuzzer was triggering out of bounds array access in loseexp() if
2000         life-saving at level 1 used blessed restore ability to regain lost
2001         levels and restored those all the way to level 30; introducing an
2002         assert(u.ulevel < MAXULEV) changed bounds issue to assertion failure
2003 strength less than 25 was unintentionally being capped at 18/07
2004 if an amulet of flying got stolen while hero was over lava without other
2005         protection against lava, it would be destroyed even though it's not
2006         flammable, then attempting to format it for messages would trigger an
2007         impossible warning about "glorkum", then a crash occurred
2008 poison gas breath from green dragon or iron golem that hit and was reflected
2009         left target enveloped in a gas cloud (reflection now takes precedence;
2010         somewhat odd though: gas that misses still leaves target enveloped)
2011 Warning didn't show nearby monsters who were inside poison gas/steam/smoke
2012         regions
2013 map didn't show adjacent monsters if they were inside a gas region unless
2014         they were seen via telepathy or extended monster detection, but they
2015         were described as if visible in messages (combat, for instance)
2016 OPTIONS=symset:blank and symset:plain didn't load the specified symbols if
2017         used from the RC file or NETHACKOPTIONS
2018 for OPTIONS=symset:blank, S_engroom (engraving on a room floor spot) and
2019         S_engrcorr (engraving on a corridor spot) retained their default
2020         symbols ('`' and '#', respectively) instead of switching to space
2021 setting perm_invent in RC file before setting windowtype (whether later in
2022         that file or via NETHACKOPTIONS) could result in it staying False
2023         depending upon whether the default windowtype supported it
2024 if hero was wielding potion(s) of unholy water and a magic trap gave its
2025         remove curse effect, scroll of remove curse would become discovered
2026 object discoveries during the tutorial carried over when normal play resumed;
2027         counts of monsters created and vanquished carried over too
2028 end-of-game attribute disclosure in wizard mode reported incorrect text for
2029         for apron/alchemy smock's conferral of poison+acid resistances
2030         (3.6.x was susceptible to this for T-shirt text but since T-shirts
2031         don't confer any attributes, it wasn't noticeable)
2032 if a tame or peaceful monster was trapped and blind hero hadn't seen the trap
2033         yet, attempting to swap places would report "You stop.  <Mon> can't
2034         move out of that trap." and if the 'tips' option was On, #untrap would
2035         be suggested; but #untrap would fail due "you know of no traps there"
2036 camera flash hitting a hidden mimic mentioned it as being a mimic but didn't
2037         bring it out of hiding
2038 when chain lightning hit a sleeping monster, the victim didn't wake up
2039 on medusa-4, Medusa and the downstairs were located in different chambers
2040 on medusa-3 and medusa-4, Perseus's statue was located in a different chamber
2041         from Medusa
2042 omit "a" from "drowned in a limitless water" when drowning on Plane of Water
2043 restoring a save file could trigger impossible "rnd(0) attempted" if it tried
2044         to make an unhidden mimic hide as an object; if the code was marked as
2045         a released version, it would crash due to divide by 0 error instead
2046 fix regression of a post-3.6 fix:  if 2 Wizards of Yendor were in play and 1
2047         escaped the dungeon, bookkeeping for current number of Wizards stayed
2048         at 2, interferring with future Wizard behavior
2049 sometimes a repeat count from the preceding command carried over to most
2050         recent one when using do-again (^A); if the most recent one was an
2051         extended command, the spurious repeat was for '#'
2052 if peaceful monsters react when seeing hero attack a peaceful monster, don't
2053         have quest guardians run away; also, quest leader only becomes angry
2054         if the monster being attacked is a quest guardian
2055 farlook of water/lava location listed wall of lava before molten lava; because
2056         of that, lava was omitted ("molten" suppressed to reduce vebosity,
2057         resulting in "lava" which got skipped as substring of "wall of lava")
2058 having #terrain display gas cloud regions as if they were traps didn't work
2059         for monsters in such regions that are shown when adjacent to hero or
2060         sensed via ESP
2061 when a monster within a gas cloud was displayed on the map because the hero
2062         was next to it, it remained displayed if hero moved away
2063 eating a pyrolisk egg on the floor triggered an "object lost" panic
2064 core object creation and the curses interface's window handling both became
2065         confused by the 'pauper' option/conduct because they assumed that
2066         invent being Null meant that the game hadn't started yet
2067 wizards were discovering unread spellbooks whenever any skill was advanced;
2068         do so only when a spell skill is advanced
2069 if tips were enabled, the getpos/farlook tip clobbered the initial prompt (at
2070         least for tty's one line message window), so reissue the prompt after
2071         the tip has been displayed
2072 a post-3.6 change to try to cope with invalid light source data when restoring
2073         corrupted save file caused "panic: relink_light_sources" for valid
2074         save file if saved while hero was poly'd into a light emitting monster
2075 priestname() didn't handle "a" vs" "an" prefix correctly; normally priests are
2076         named as "the priest of <deity>" but hearing an unseen priest read a
2077         scroll doesn't force "the" and yielded "You hear an priest of <deity>
2078         incant <scroll>."
2079 non-fireproof water walking boots wouldn't be burnt up if fire resistant hero
2080         walked on molten lava
2081 1x1 poison gas clouds for green dragon and iron golem breath could be placed
2082         at wall locations
2083 if a pile of objects had plain arrow(s) on top, map location classification
2084         got confused and reported 'unexplored area'
2085 when the 'fireassist' option was on, 'f' would choose uquiver over wielded
2086         throw-and-return uwep
2087 knockback could move hero diagonally into or out of an open doorway
2088 farlook of /e or /E stopped reporting engraving and headstone text after a fix
2089         for the situation where // or ; reported such text when there was an
2090         object or monster in the way
2091 message was garbled when lightning or acid breath hit iron bars
2092 shop bug: buying a container with unpaid items in it could produce impossible
2093         "unpaid_cost: object not on any bill" warnings
2094 when walking into/against a locked closed door, 'autounlock'==kick didn't
2095         execute kick when player answered yes to "Door is locked.  Kick it?"
2096 having a 1% chance of creating rideable monsters with worn saddle gave knights
2097         a 1% chance of creating an extra saddle for starting pony; it wasn't
2098         tracked with other objects so produced a trivial memory leak
2101 Fixes to 3.7.0-x Platform and/or Interface Problems Exposed Via git Repository
2102 ------------------------------------------------------------------------------
2103 curses: 'msg_window' option wasn't functional for curses unless the binary
2104         also included tty support
2105 curses: line input that doesn't take place on the bottom line of the message
2106         window uses a canned curses routine and doesn't support ESC to kill
2107         partial input or to cancel; "Who are you?" prompt was willing to name
2108         a character "^["; have the popup version of getlin() fake the usual
2109         ESC handling, but player has to type <escape><return> for that to work
2110 curses: menu headings didn't use default text color
2111 curses: #perminv changes disabled menu_headings attribute for persistent
2112         inventory window headings; reinstate that
2113 curses: messages were tagged by turn in 3.6.x so that ^P can place a separator
2114         between groups of messages; somehow the line of code that recorded
2115         the turn vanished so ^P behaved as if every message came on its own
2116         distinct turn, resulting in lots of "---" separators
2117 curses: when entering a count while in a menu, cursor would jump to the spot
2118         on screen where the hero was, even if menu covered that part of map;
2119         post-3.6--started when curses was changed to use core's get_count()
2120 curses: clipped map crashed due to uninitialized memory
2121 curses: changes for tty's TTY_PERM_INVENT resulted in viewing inventory under
2122         curses while carrying only gold to crash; didn't matter if perm_invent
2123         was On or if TTY_PERM_INVENT was enabled
2124 curses: for screen refresh, don't attempt to refresh windows that haven't been
2125         set up yet or have already been shut down
2126 curses: for raw_print() in #if PDCURSES config, don't attempt to write to
2127         message window if it isn't set up yet or has already been shut down
2128 curses: scrollbar 'framecolor' wasn't being initialized before use
2129         causing an asan crash because the value is used to index an array
2130 curses: typing ESC to cancel something issued a beep; if the terminal was set
2131         to 'visible bell', the screen flashed; only beep when the ESC is part
2132         of an escape sequence--other than M-c generating ESC c--and nethack
2133         is expecting text rather than a command or direction
2134 curses: with window borders on and align_status:left, restoring brought up a
2135         screen where the message window's border wasn't shown; once it needed
2136         to be scrolled to fit a new message, the border appeared
2137 curses: after changing curses_mark_synch() to do something, making a menu
2138         selection by entering a count that uses more than 1 digit caused the
2139         menu to vanish
2140 curses: setting up default roguesymset at startup clobbered primary symset if
2141         config file picked Enhanced1 for primary (core bug exposed by curses)
2142 Qt: at Xp levels above 20 with 'showexp' On, the combined status field
2143         "Level:NN/nnnnnnnn" was too big and truncated by a char at each end
2144 Qt: searching a text window for something that wasn't found and then searching
2145         for some other target could crash
2146 Qt: changes in glyph handling in the core introduced a bug in the "paper doll"
2147         display for inventory subset
2148 Qt: during role selection, icons for role and race showed giant ant tile after
2149         the glyph overhaul changes
2150 Qt: resolve a use-after-free error when saving message history
2151 Qt: with a pick-one menu containing a pre-selected entry, clicking on that
2152         worked to re-select it, as intended; clicking on any other entry
2153         instead of typing the selector letter toggled off preselected entry
2154         but failed to toggle on the explicitly selected one; clicking again
2155         after nothing was pre-selected anymore refused to toggle anything on
2156 Qt: don't show main window and tombstone window maximized by default
2157 tty: redraw unexplored locations as S_unexplored rather than <space> after
2158         map has been partially overwritten by popup menu or text display
2159 tty: previous change resulted in remnants of previous level being shown on
2160         new level after level change when S_unexplored is <space>
2161 tty: for #wizidentify, using ^I as an unseen group accelerator to pick the
2162         'all' choice was incorrectly checking menuitem_invert_test() and
2163         failing, so the 'all' choice wasn't being toggled on if user typed ^I
2164 tty: changes to support utf8 resulted in lines of text windows being shown
2165         starting at their second character
2166 tty: changes to support TTY_PERM_INVENT resulted in blank inventory menu when
2167         using the 'i' command while carrying only gold; didn't matter whether
2168         or not TTY_PERM_INVENT was enabled during build
2169 tty: for the !DEF_PAGER configuration, redraw screen properly if attempting
2170         to display a file fails and tty_display_file()'s caller requests
2171         feedback for that situation
2172 tty: if a group accelerator matched a menu command ('^' in menu for '/')
2173         it wouldn't work to select, just to manipulate the menu
2174 tty: after resize changes which included screen erasure changes, ^C and yes|y
2175         to "Really quit?" while a menu was open would lead to a panic
2176 tty: make cursor visible again when using ! or ^Z to temporarily leave nethack
2177 Unix: after lua changes to Makefiles, 'make spotless' for dat subdirectory
2178         left some generated data files which should have been deleted
2179 Unix: reject "--sX" on command line except if "X" is "cores" (so "--scores");
2180         single dash form still accepts "-sX" to lookup scores for "X"
2181 Windows: new tile additions in win/share did not trigger the creation of a new
2182         NetHackW.res file
2183 Windows: nhl_loadlua() was missing the RDBMODE argument on the [dlb_]fopen(),
2184         which is required on Windows to set binary mode; binary mode is
2185         required in order to be able to reliably navigate through a file using
2186         fseek(), ftell() and fread()
2187 Windows: when VIRTUAL_TERMINAL_SEQUENCES was not defined, the preprocessing
2188         would fail on consoletty.c
2189 Windows: original fix for GLYPH_UNEXPLORED background tile merging resulted
2190         in a new issue where the map wasn't being cleared on level changes
2191 Windows: don't dupstr the return value of setlocale if it is NULL
2192 Windows: nethackw.exe calculated vertical spacing for menu items based on
2193         the height of the tileset in use, even though the tiles in the
2194         menu were drawn at the default height of 16 anyway; get rid of
2195         the extraneous vertical spacing between menu rows
2196 X11: fix build failure if STATUS_HILITES is disabled
2197 X11: was still initializing map to 'stone' instead of 'unexplored' after they
2198         became separate glyphs
2199 X11: for text map without color, add support for black&white ice; draw it in
2200         inverse video to distinguish from ordinary floor
2201 X11: if perm_invent is set in NETHACKOPTIONS or config file, start with the
2202         persistent inventory window displayed
2203 X11: use visctrl(response) when X11_yn_function() echoes prompt+response in
2204         message window
2205 X11: when trying to lookup scrollbars in order to handle scrolling via keys,
2206         menu handling always ended up finding the top window
2207 X11: enable horizontal scrollbar for persistent inventory window
2208 X11: if a group accelerator matched a menu command ('^' in menu for '/')
2209         it wouldn't work to select, just to manipulate the menu
2210 X11+macOS: after the "bad Atom" fix (below), the persistent inventory window
2211         crept downward every time it got updated
2214 Platform- and/or Interface-Specific Fixes
2215 -----------------------------------------
2216 SYSCF: treat most sysconf directives that have invalid values as warnings
2217         rather than errors; use a conservative default value and continue
2218 curses: for vertical status, line up conditions in columns; usually two but
2219         condense to three per line if the status window isn't tall enough
2220         [at present, highlighting with inverse video includes trailing spaces
2221         used to align entries in their columns--that's a feature...]
2222 curses: indent items in perm_invent window by one space
2223 curses: don't change the terminal's default colors
2224 curses: remove unnecessary special handling for dark gray
2225 curses: sometimes entering a count during menu selection caused the menu to
2226         disappear (example was apply/loot in-out container menu with two or
2227         more digits typed followed by non-digit); in-out menu was still active
2228         but no longer displayed
2229 curses: support backspace/delete when entering a count during menu selection
2230 curses: was failing to honor menu_xxx option settings for menu interaction
2231 curses: make extended command prompt behave more sensibly
2232 curses: if a menu of objects contains at least one iron ball, and player is
2233         not already in the midst of entering a count, recognize '0' as a
2234         group accelerator rather than the start of a count
2235 curses: obey timed_delay option
2236 curses: support tty-style extended role/race/&c selection at start of new game
2237 curses: implement mark_synch() and wait_synch()
2238 curses: only convert arrow keys to hjkl or 4286 if nethack wants a direction
2239 curses: conversion of arrows and other numpad-related function keys to digit
2240         ignored phone-layout setting (inverted up/down) of the num_pad option
2241 curses: ensure alt+'A' through alt+'Z' and alt+'a' through alt+'z' work
2242         correctly with PDCURSES
2243 curses: fix an off-by-one error when deciding whether a long line on the
2244         bottom line of the message window can fit ">>" (curses' "--More--")
2245 curses: selecting a partial stack, unselecting it, and then selecting it
2246         normally did not reset the quantity to the whole stack
2247 curses: if user's terminal was set to 'application keypad mode' (DEC VTxxx
2248         nomenclature; set via 2 char "ESC =") and the terminfo or termcap
2249         entry told the terminal to send 8-bit escape sequences (via 3 char
2250         "ESC SPC G"), nethack wasn't recognizing number pad keys
2251 curses: change petattr attributes, dropping support for curses-only ones
2252 curses: swap the grey and no-color color initialization
2253 curses+Qt: allow changing default colors with the 'palette' config option
2254         (only if compiled with CHANGE_COLOR)
2255 curses: if messages have been issued during start-up (for instance, warnings
2256         about issues in run-time config file), prompt user to press <return>
2257         so that they can be read before curses erases the screen
2258 curses: when the map was narrower than the space set aside for it, wide popup
2259         windows could write into the unused space and whatever was written
2260         there would stick after the popup was removed
2261 documentation: when building plain text Guidebook.txt from Guidebook.mn, avoid
2262         attempting to use CR font; change doesn't affect building Guidebook.ps
2263         which utilizes CR to get various instances of fixed-width text
2264 documentation: improve Guidebook *roff formatting and prepare for use of
2265         future release of groff 1.24.0 (pr #1280 by g-branden-robinson)
2266 macOS: Xcode project was failing to build if the path to the NetHack source
2267         tree contained a space; the issue was within some shell script code
2268         contained within the project
2269 MS-DOS: add -DSTATUES_LOOK_LIKE_MONSTERS to Makefile1.cross so the VESA mode
2270         can display statue glyphs
2271 MS-DOS: sample config file had same MENUCOLOR flaw as Windows (see below)
2272 MS-DOS: implement inverse text attribute
2273 Qt: quit if can't load tiles file instead of continuing and then segfaulting
2274 Qt: [later] tiles load failure at startup now continues using an ascii map
2275 Qt: use more columns for extended command selection dialog so that the number
2276         of rows needed doesn't result in some commands being unaccessible
2277 Qt: suppress wizard mode commands from '#' handling when not in wizard mode
2278 Qt: organize extended command selection grid by columns instead of by rows
2279         (first N entries down left column, next N entries down 2nd column, &c)
2280 Qt: when selecting an extended command by typing its name, support <delete>
2281         (aka <rubout>) in addition to <backspace> to go back a character
2282 Qt: switch to fixed-width font for menus
2283 Qt: don't disable [cancel] button when viewing inventory or other pick-none
2284         menus; ESC works to dismiss those and [cancel] should be the same
2285 Qt: clicking on the window's Close button brought up a dialog offering
2286         choices of "Save" and "Cancel"; picking Cancel sent nethack into an
2287         infinite loop with complaints about Qt's event loop already being
2288         active; change dialog: offer "Save and exit" or "Quit without saving"
2289         with no opportunity to try to back out of the Close operation
2290 Qt: add 3.6 status fields Stone, Slime, Strngl, Deaf, Lev, Fly, Ride
2291 Qt: add Attributes, Overview, and Annotate to the "Info" pull down menu
2292 Qt: rename menu entries game->Save to game->Save-and-exit and game->Quit
2293         to game->Quit-without-saving
2294 Qt: menu commands are now working; commands invoked via M-c were having that
2295         keystroke changed to '?', bringing up nethack's help menu; now those
2296         send #abc with just enough letters to disambiguate from other commands
2297         ("Compilation" is one remaining problem; it yields "#version" which
2298         brings up '#' menu subset with choices of "version" and "versionshort")
2299 Qt: "paper doll" subset of persistent inventory has undergone several changes:
2300         show previously missing quiver below weapon instead of duplicating
2301         gloves there; show secondary weapon in shield slot and blank out
2302         alternate weapon slot when two-weapon combat is active; show wielded
2303         two-handed weapon in both the shield and primary weapon slots; show
2304         first active light source in a previously unused slot on lower right;
2305         show first leash-in-use in a previously unused slot on lower left
2306 Qt: paper doll inventory view was inconsistently updated during Hallucination
2307 Qt: when hero died, gold on tombstone only included gold in inventory, not
2308         any additional gold inside carried containers; also, inventory gold
2309         will be zero if bones get created for all 3.6.x and for 3.4.x+GOLDOBJ
2310 Qt: tombstone showed newly constructed date instead of the value set up at
2311         time of death; it only shows year but that could be wrong if player
2312         stared at or ignored prior --More-- for long enough on 31 December
2313 Qt: menu choices All, None, Invert were setting, unsetting, or toggling menu
2314         entry checkboxes internally but didn't redraw the menu to show that
2315 Qt: fix the F1/F2/Tab macro keys to not require that number_pad be On
2316 Qt: unhighlight highlighted message (last one issued) after player has seen it
2317 Qt: update message window's last message with player's response if it's a
2318         prompt string for a single-character of input (ynaq or invent letter)
2319 Qt: for line input, display the prompt+response in the message window
2320 Qt: enable the popup_dialog WC option (result is a bit flakey but usable)
2321 Qt: 3.6 catchup - show unexplored locations as unexplored rather than as stone
2322 Qt: tried to honor 'showexp' but the value was unintentionally suppressed by
2323         [lack of definition for] obsolete conditional EXP_ON_BOTL
2324 Qt: implement --More-- prompt to support MSGTYPE=stop
2325 Qt: for menu search, don't require clicking on the search target popup before
2326         typing target string (was using typed letters to make menu selections
2327         if player didn't click on the popup first)
2328 Qt: rest ("Zz") button on the toolbar only worked when 'rest_on_space' was On
2329         (core issue, not Qt's fault)
2330 Qt: rename toolbar button "Get" and action menu choice "Get" to "Pick up"
2331 Qt: status icons for alignment|hunger|encumbrance which started out centered
2332         relative to the label text below them would shift to being left
2333         justified when status got updated
2334 Qt: handle '&' properly if it occurs as part of yn_function popup dialog
2335 Qt: fix the display side of saved game selection; character names for
2336         available save files are shown in a column of push buttons instead
2337         of each button overwriting all the ones before it
2338 Qt: don't clobber an existing save file after choosing "new game" in the
2339         saved game selection widget
2340 Qt: don't get stuck in a loop after choosing "play" while the character name
2341         field is empty in the character selection widget
2342 Qt: when a new message is issued, pan the message window to its left edge if
2343         player panned it horizontally then didn't manually scroll it back
2344 Qt: there was no way to enter extended command "#version" by typing; command
2345         name matching was waiting to disambiguate it from "#versionshort"
2346         and the only way to that was to type #version<return> but <return>
2347         explicitly triggered rejection, cancelling '#' processing; #drop vs
2348         "droptype, "known vs "knownclass, and #takeoff vs #takeoffall are in
2349         similar ambiguous situation but usually invoked via keystroke
2350 Qt: render all text windows in fixed-width font instead of just ones which
2351         have one or more lines with four consecutive spaces; some data.base
2352         entries do have those (usually final attribution) and some don't,
2353         so display from one entry to another was inconsistent if default
2354         proportional font was ever used
2355 Qt: while a text window was shown (such as the "things that are here" popup
2356         when stepping on items), typing commands had the input passed on to
2357         the map and then executed; sometimes that caused the not-yet-dismissed
2358         text window to hang
2359 Qt: if player's run-time options specified a tiles file and it couldn't be
2360         loaded, Qt was falling back to x11tiles just like when the default
2361         can't be loaded; fallback to player's file plus explicit path instead
2362 Qt: force the 'toptenwin' option On so that high scores display at end of game
2363         is shown in a text window instead of being written to stdout where it
2364         might not be seen (note: doesn't apply to 'nethack -s')
2365 Qt: during role/race/&c selection, update role titles with their icons, and
2366         also Valk eligibility, when gender is toggled
2367 Qt: if a menu of objects contains at least one iron ball, and player is not
2368         already in the midst of entering a count, recognize '0' as a group
2369         accelerator rather than the start of a count
2370 Qt: {maybe just Qt+macOS:} when viewing a text window ('V' to look at 'history'
2371         for instance), clicking on [Search], entering a search target in the
2372         resulting popup and clicking on [Okay] or typing <return>, the text
2373         window got pushed underneath the main window so seemed to go away
2374 Qt: use idPressed signal instead of buttonPressed and mappedString instead
2375         of mapped for recent Qt (pr #913 by chasonr)
2376 Qt: make all NetHack menu and text windows modal
2377 Qt: support Unicode supplementary characters (pr #1047 by chasonr)
2378 Qt: qt_tilewidth and qt_tileheight are allocated with alloc() and need to be
2379         freed with free(); don't use qt_tilewidth and qt_tileheight after
2380         they have been freed; instead, retrieve the size from the glyphs
2381         object (pr #1049 by chasonr)
2382 Qt+macOS: fix control key (fixed all except for ^V); handle ^V as a shortcut
2383 Qt+macOS: rename menu entry "nethack->Preferences..." for invoking nethack's
2384         'O' command to "Game->Run-time options" and entry "Game->Qt settings"
2385         for making persistent Qt customizations to "nethack->Preferences..."
2386 Qt+macOS: prevent game->Quit-without-saving from being hijacked for the nethack
2387         menu by renaming it game->_Quit-without-saving (macOS only)
2388 Qt+macOS: add a separate nethack->Quit menu entry with different functionality;
2389         Command+Q invokes it
2390 Qt+macOS: since menu entry help->"About Qt NetHack" gets hijacked and becomes
2391         "nethack->About nethack", add a separate help->_About_Qt_NetHack_
2392         which stays where intended and brings up the same information
2393 Qt+macOS: suppress unwanted "Search [______]" action from being inserted as the
2394         first entry in the menubar's "Help" dropdown menu
2395 sound: add a soundlib interface that consists of a specification
2396         documented in doc/sound.txt; default 'nosound' soundlib implementation
2397         of the specification in src/sounds.c
2398 sound: added 'macsound' soundlib implementation for use on macOS; the
2399         interface implementation resides in the objective C file
2400         sound/macsound/macsound.m; built on top of the built-in AppKit
2401         NSSound, #import <AppKit/AppKit.h>, linked using -framework AppKit.
2402 sound: added 'windsound' soundlib implementation for use on Windows; the
2403         interface implementation resides in the file
2404         sound/windsound/windsound.c; built on top of the win32 api,
2405         header file mmsystem.h, linked with winmm.
2406 sound: add 'qtsound' soundlib implementation for use on any platform
2407         with Qt; the interface implementation resides win/Qt/qt_bind.cpp;
2408         built on top of Qt.
2409 tiles: add indicator of thonged portion to aklys tile
2410 tty: role and race selection menus weren't filtering out potential choices
2411         which got excluded by OPTIONS=align:!lawful or !neutral or !chaotic
2412 tty: '$' can now select gold in a menu even when it isn't on current page
2413 tty: if a menu used full screen and brought up another menu that wasn't full
2414         screen, sometimes only a small border of background was drawn around
2415         it with most of the map left blank until after the menu was dismissed
2416 tty: have <return> dismiss pick-none menus instead of acting like '>' (not
2417         only wouldn't dismiss when not on last page, wouldn't dismiss at all)
2418 tty: menu search via ':' would clobber part of the menu with a status line
2419         refresh if the menu was tall enough to cover that
2420 tty: add support for petattr
2421 tty: if a ^C interrupt occurred while DECgraphics characters were being drawn
2422         on the map, the "Really quit?" prompt would be illegible due to being
2423         rendered with VT line drawing characters
2424 tty: hide cursor unless waiting for user input; now extended to include tty
2425         platforms that define NO_TERMS, rather than just on those using
2426         termcap/terminfo, namely Windows console and msdos (text-mode
2427         implemented; vga and vesa just have stubs currently)
2428 Unix: when user name is used as default character name, keep hyphenated value
2429         intact instead stripping off dash and whatever follows as if that
2430         specified role/race/&c (worked once upon a time; broken since 3.3.0)
2431 Unix: add "ec2-user" to the list of user names 'sysconf' classifies as generic
2432 Unix: work-around a build issue in ubuntu 21.10 by using ifdef to skip the
2433         define of warn_unused_result to empty string in tradstdc.h whenever
2434         __linux__ is defined during build unless GCC_URWARN is also defined
2435 Unix: re-do command line parsing
2436 Unix: add ../include/nhlua.h to the alloc.o dependencies in Makefile.utl to
2437         match Makefile.src
2438 Unix: implement SELF_RECOVER compile-time option, on by default on linux
2439 user_sounds: move the message hook from inside individual window display ports
2440         to the core where it allows MSGTYP_NOSHOW msgtyp's to still trigger
2441         sounds to correct a reported github issue; also fixes a past reported
2442         issue that the curses port on Windows not working with user_sounds
2443 Windows: update for new status condition fields
2444 Windows: include commented-out 'PORTABLE_DEVICE_PATHS' in sysconf.template
2445 Windows: When there was no interesting background in get_bk_glyph()
2446         in display.c, a default value of GLYPH_UNEXPLORED was returned to
2447         the caller and then passed on to the interface; the graphical
2448         Windows version, NetHackW.exe, was trying to use the tile mapped to
2449         GLYPH_UNEXPLORED as a background tile to merge with the
2450         foreground tile, so check for GLYPH_UNEXPLORED and bypass that
2451 Windows: fix range error detected by address sanitizer in plselInitDialog()
2452 Windows: the .nethackrc template contained a sample MENUCOLOR pattern for
2453         "cursed .* (being worn)" which didn't work; parentheses need quotes
2454 X11: substantial overhaul of status display, both 'fancy' and 'tty-style'
2455 X11: extend fancy status one-turn inverse video status-change highlighting to
2456         hunger, encumbrance, and conditions
2457 X11: stop including unused column 0 in the map
2458 X11: avoid 'bad Atom X Error' when perm_invent is enabled (seemingly window
2459         manager dependent)
2460 X11: toggling 'perm_invent' off via 'O' didn't dismiss persistent inventory
2461         window
2462 X11: with 'slow' resource set to False, the pop up yn_function didn't always
2463         resize properly when re-used
2464 X11: (possibly X11+macOS): if persistent inventory was displayed at time of
2465         end-of-game prompting, prompting would stall until that window was
2466         manually dismissed
2467 X11: (possibly X11+macOS): try harder to resize the getlin() prompt, if needed,
2468         when prompt text changes
2469 X11: set all selectable menu lines to the same length, left justified
2470 X11: initializing the get-extended-command widget modified memory beyond what
2471         it dynamically allocated
2474 General New Features
2475 --------------------
2476 if a killer bee encounters a lump of royal jelly and there is no queen bee on
2477         the level, the bee will eat the jelly and become a new queen
2478 automatic annotation "gateway to Moloch's Sanctum" for vibrating square level
2479         once that square's location becomes known (found or magic mapped);
2480         goes away once sanctum temple is found (entered or high altar mapped)
2481 savefile: add support to deconstruct internal data structures down into their
2482         individual fields and save those fields instead of the entire struct
2483 savefile: use little-endian format for fields where that makes a difference
2484 replace build-time level compiler and dungeon compiler with run-time loading of
2485         the dungeon and level descriptions and interpreting them via Lua
2486 split off some of the functionality that was in makedefs (compiled-in options
2487         build date/time, etc) so that it can be built by a cross-compiler
2488         and accessed on the target platform
2489 replace quest.txt and associated conversion to quest.dat via makedefs with
2490         Lua quest texts loaded at runtime
2491 callback lua functions from core at certain game actions
2492 some altars are displayed in different colors (for tty and curses at least)
2493 add 'quick_farsight' option to provide some control over random clairvoyance
2494         where pausing to be able to browse temporarily visible aspects of the
2495         revealed map can seem intrusive; doesn't affect clairvoyance spell
2496 replace "money" in in-game texts with "gold"
2497 when hallucinating, see hallucinated currencies instead of bits for an ale
2498 when hallucinating, see hallucinated liquids when looking at water or lava
2499         on the map
2500 applying a spellbook hints about read charges left
2501 wizard mode wishing for level topology can now create hidden doors (ask for
2502         "secret door" when at a door or wall location), hidden corridor
2503         spots ("secret corridor" at a corridor location), clouds, walls,
2504         and (melting) ice
2505 tiny chance for randomly created spellbooks to be Discworld novels instead
2506         of having only one in the first book or scroll shop created (won't
2507         occur in hero's initial inventory or NPC priest inventory or be
2508         bestowed as a prayer boon or be found in statues)
2509 'goldX', 'implicit_uncursed', and 'mention_walls' options changed to be
2510         persistent across save/restore
2511 wearing a wet towel confers "half damage from poison gas" attribute
2512 for end of game disclosure and dumplog, show 'achievements' (previously only
2513         available as an encoded value in xlogfile) along with 'conduct'
2514 more grades of self-appearance than beautiful or handsome vs ugly
2515 when 'color' if Off and 'use_inverse' is On, draw ice on the map in inverse
2516         video if it uses the same character as room floor or as dark floor
2517 new 'mention_decor' option; when On, describe dungeon features being stepped
2518         on or floated/flown over even when they're not covered by objects
2519 applying royal jelly on an egg kills, revives, or changes the egg
2520 intelligent monsters pick up and rummage through containers
2521 toggling 'travel' option Off now only inhibits travel by mouse click, not by
2522         '_' command where choosing the destination provides a chance to cancel
2523 different glyphs and symbols for stone and unexplored areas
2524 new glyph GLYPH_NOTHING was added so !dark_room has something to be set to
2525         now that stone could be mapped to an entirely different symbol
2526 added several new status conditions all of which are opt-in except
2527         the new cond_grab and cond_lava which are opt-out
2528 tipping your cap might get a response
2529 special levels can be flipped horizontally and/or vertically
2530 new special level initialization routine, "swamp"
2531 demon lords and princes suppress teleporting in Gehennom
2532 for !fixinv option where inventory letters normally don't stick, try to put
2533         a throw-and-return weapon back into the same inventory slot it gets
2534         thrown from; only works if it does return and is successfully caught
2535 wizard mode #wizborn command
2536 include more skill information in ^X output when dual-wielding
2537 include monk's to-hit penalty for worn suit in the status section of ^X output
2538 item-using monsters will zap wand of undead turning at corpse-wielding hero
2539         when the corpse is harmful
2540 boiling a pool or fountain now creates a temporary cloud of steam
2541 random themed rooms in the dungeons of doom
2542 extended achievement and conduct fields for xlogfile
2543 record amount of gold in hero's possession in xlogfile
2544 new objects:  amulets of flying and guarding, helm of caution,
2545         gold dragon scale mail and set of gold dragon scales
2546 new monsters:  displacer beast ('f') and genetic engineer ('Q'), gold dragon
2547         and baby gold dragon (both 'D')
2548 make camera flash which reveals previously unseen map features or objects or
2549         monsters record those on the hero's map; monsters revert to 'unseen'
2550 boolean options can optionally have the form "name:value" with value taken
2551         from among "true", "yes", "on", or 1 and "false", "no", "off", or 0
2552 record number of wishes and artifact wishes in xlogfile
2553 give feedback for '#chat' directed at walls
2554 add 'Sokoban' conduct, tracking the number of times the special Sokoban rules
2555         which incur luck penalties have been violated; don't report it
2556         unless/until Sokoban branch has been entered
2557 reduce verbosity when a mind flayer attacks a headless monster; when a
2558         tentacle-to-head attack hits but fails to accomplish anything skip
2559         remaining attacks (mind flayer has 3, master mind flayer has 5)
2560 add section marker [] support to run-time config file; CHOOSE section1,section2
2561         followed by [section1] ... [section2] ... forced all the rest of the
2562         file to be part of the last section; that still works the same, but []
2563         can be used to terminate the last section and revert to common options
2564         for the remainder of the file
2565 render the color names in the corresponding color when using the pick-a-color
2566         menu for adding status highlights or menu colors via 'O'
2567 reading blessed scroll of teleportation confers one-shot teleport control
2568 mild zombie apocalypse
2569 list lamps and lanterns in charging prompt
2570 let tourists read conical hats
2571 when "?i" (show key bindings) displays commands and their keys, also show
2572         commands without any key (so ones useable via '#', or possibly menu,
2573         only; the majority are debugging commands)
2574 assign default key binding for <del> or <delete> to execute #terrain
2575 assign M-X to #exploremode
2576 make #herecmdmenu and #therecmdmenu autocomplete
2577 add 'sortdiscoveries' option to control output of '\' and '`' commands
2578 include an indication of monsters' health during farlook feedback (including
2579         /M and autodescribe); also include it in death reason when killed by
2580         a monster: "killed by {an uninjured newt,a heavily injured mumak}"
2581 [later: suppress the indication of monsters' health]
2582 add support for a single monster species to have distinct male, female,
2583         and gender-neutral naming terms
2584 add support for a single monster species to have distinct male and female
2585         tiles
2586 consolidate several monsters that differed only by their gender into their
2587         single species
2588 added wizmgender debugging command to display female monsters in red inverse;
2589         helpful for debugging gender-related matters on tty; currently ignored
2590         on other window ports [later: changed from command to boolean option]
2591 record number of encountered bones levels in xlogfile
2592 add bonesless to extended conducts field in xlogfile
2593 show bones levels information in enlightenment at end of game or in explore
2594         and wizmode
2595 for #wizintrinsic, use any counts entered during menu selection
2596 give feedback when boolean options are toggled interactively ('O' command)
2597 '|' command (#perminv) for interacting with persistent inventory display
2598         (curses and X11 only)
2599 menu_shift_left, menu_shift_right menu command keys; default '{' and '}'
2600         (curses for perm_invent only; implemented for X11 too but menus for
2601         it lack horizontal scroll bars so the shifts don't work there)
2602 using 'f' while quiver is empty and 'autoquiver' is Off when wielding a
2603         thrown-and-return weapon will throw that weapon instead of filling
2604         the quiver (inspired by xNetHack)
2605 3.6's tribute: add one new passage to Sourcery, three to Small Gods, one to
2606         Lords and Ladies, two to Soul Music, three to Interesting Times, four
2607         to Maskerade, three to Hogfather, two to Jingo, four to The Last
2608         Continent, four to Carpe Jugulum, three to The Fifth Elephant, five
2609         to The Truth, six to Thief of Time, six to The Last Hero, four to
2610         The Amazing Maurice, five to Night Watch, four to The Wee Free Men,
2611         four to Monstrous Regiment, two to A Hat Full of Sky
2612 monsters can see and remember hero resistances
2613 monsters can gain resistances by eating corpses
2614 menu for what-is command supports /^ and /" to view a list of nearby or whole
2615         level visible and remembered traps
2616 spiders will occasionally spin webs when moving around
2617 drinking a burning potion of oil will cure being turned into slime
2618 new bigroom variants, a boulder maze and hexagons
2619 vomiting on an altar provokes the deities wrath
2620 branch stairs have a different glyph, show up in yellow color in tty
2621 duration of confusion when drinking booze depends upon hunger state
2622 using 'D' allows dropping items picked up previously
2623 bones piles can be ransacked by adjacent monsters
2624 decaying globs of {ooze,pudding,slime} shrink over time based on their total
2625         weight, eventually to nothing; for combined globs it can take a long
2626         time, and while doing so they no longer give the tainted corpse food
2627         poisoning effect when eaten
2628 track peak maximum HP and peak maximum energy/power; no noticeable effect
2629 give some dragon armor extra effects when worn
2630 issue messages during last stage of food poisoning/terminal illness countdown
2631         when hero's demise is imminent
2632 drinking blessed potion of full healing heals wounded legs, either hero's or
2633         steed's (when riding, wounded leg injury applies to steed, not hero)
2634 drinking uncursed potion of full healing or blessed potion of extra healing
2635         heal hero's wounded legs when not riding; no effect on steed if riding
2636 cancellation explodes most magical traps
2637 reading a blessed scroll of light has a chance to improve bless/curse state
2638         of wielded Sunsword or worn gold dragon scales/mail similar to dipping
2639         those into holy water; cursed scroll has chance to worsen the state
2640 added a chronicle of major events, and optional live logging of those
2641 paranoid_confirm:swim to prevent accidental dunking into dangerous liquids;
2642         joins paranoid_confirm:pray as the default setting
2643 paranoid_confirm:trap to confirm entering a known trap unless it is harmless;
2644         like revised paranoid_confirm:pray, requires y/n response; add
2645         paranoid_confirm:Confirm to require yes/no instead
2646 extend 'paranoid_confirm:trap' to request confirmation when entering visible
2647         gas cloud regions
2648 paranoid_confirm:Autoall to confirm picking 'A' in menustyle:Full filter menu
2649 looking at a monster will indicate whether it is asleep, and waking up a
2650         monster yields a message
2651 extend farlook's "<mon>, asleep" to "<mon>, can't move (paralyzed or sleeping
2652         or busy)" for timed sleep and also "<mon>, meditating" for monster
2653         that is waiting for hero to approach
2654 add body part terminology for spiders; enhance it for cockatrices
2655 context sensitive item usage menu from inventory, aka "item actions"
2656 pets are more likely to follow you closely if you are carrying something they
2657         really like to eat; behave as if you are carrying such whenever you
2658         are standing on stairs so that pets will try harder to come to you
2659 allow setting msgtype in SOUND line
2660 display detected door traps and chest traps as trapped doors and trapped
2661         chests rather than as fake bear traps
2662 if built with DEBUG enabled and running in wizard mode, starting play with
2663         DEBUGFILES=seethru in environment makes clouds on the Plane of Air,
2664         water on Plane of Water, and fumaroles on Plane of Fire be transparent
2665 add wizard mode #wizkill command to remove monster(s) from play
2666 some quest nemeses release a cloud of poisonous gas when they die
2667 taming magic acting on an already tame creature might make it become tamer
2668 eliminate scimitar skill and have scimitars use saber skill
2669 simplified configuration options menu
2670 rudimentary key rebinding in game options
2671 experimental #saveoptions command to allow saving configuration settings
2672 mouse buttons can be bound to extended commands
2673 hero poly'd into purple worm can gain intrinsics from digesting whole monster
2674 add some tins of spinach to monk's quest (vegan => no Str from giant corpses)
2675 very large humanoids can wear mummy wrappings
2676 for ranger characters, shooting any type of arrow while wielding the Longbow
2677         of Diana gets an extra +1 to multi-shot
2678 change the #vanquished command from debug-only to general user command
2679 add 'sortvanquished' option to be able to set the preferred sort order without
2680         using 'm #vanquished' and to have it persist across save/restore
2681 when sorting vanquished monsters by monster class, treat the Riders as a
2682         separate class from major demons
2683 add #genocided command
2684 have 'I u' mention whether there are any unpaid items on the floor (unusual
2685         but not impossible); it doesn't itemize them or show shop price
2686 add items given a Japanese name when playing as a Samurai to discoveries list
2687 make music improvisations more varied and interesting, as well as useful
2688 give a helpful tip when first entering "farlook" mode
2689 add a boolean option tips to disable all of the helpful tips
2690 add a tutorial level
2691 engravings appear on the map display; 'whatis' can list them ('/e', '/E')
2692 option to create the character deaf
2693 add conduct for petless
2694 preceding #overview with the 'm' prefix brings up the overview display as a
2695         menu allowing selection of any visited level to #annotate; it also
2696         shows every level visited rather than just the "interesting" ones
2697 include monster size in feedback for wand of probing and stethoscope
2698 crystal armor is now subject to cracking damage rather than outright breakage
2699 when a doppelganger takes on mplayer (fake hero) form, usually choose role
2700         from the high scores file; name too if visible at the time
2701 can now write unknown spellbook without need of Luck when spell is known;
2702         if spell becomes known without having read its book (potential divine
2703         gift), writing the book while the spell is still fresh will succeed
2704 new status highlight rule type for hitpoints:  "criticalhp" rule overrides
2705         hit point rules if current HP is so low that prayer will consider it
2706         to be major problem; applies to hitpointbar as well as HP status
2707 high skill level in martial arts or bare-handed combat sometimes hits twice
2708 answering '?<return>' at the "genocide what?" prompt (for either monster class
2709         or single species) runs the #genocided command to show what types of
2710         monsters have already been genocided and then re-prompts
2711 throwing the silver bell (or other invocation item, or the Amulet) to the
2712         quest leader will identify it instead of being treated as an attack
2713 applying gold pieces will flip one and report "heads" or "tails"; with a stack
2714         of more than one, normally the flipped coin will rejoin the stack
2715 during enlightenment and end-of-game disclosure, use contraction "<verb>n't"
2716         for "<verb> not"
2717 give feedback about the thaw status of ice terrain
2718 allow #dip '-' in a fountain, pool, or sink to clean slippery fingers/gloves
2719 allow #dip potions into a sink to get a hint about what they are, similar to
2720         dropping rings into a sink; dipping other stuff causes water damage
2721         so could be used to blank out scrolls and books
2722 when restoring, show current level's player-applied annotation if there is one
2723 have farlook of a grave report the engraving on the headstone if it's known
2724 the '*' command (list inventory items in use) now shows items in a specific
2725         order: amulet, ring on main hand (potentially affected by cursed
2726         one-handed weapon), ring on off hand, blindfold, wielded weapon,
2727         secondary or alternate weapon, quiver, suit, cloak, shield, helmet,
2728         gloves, boots, shirt, lit lamps and candles, leashes attached to pets,
2729         instead of by object class (sortpack) or inventory letter (!sortpack);
2730         new perm_invent+perminv_mode==inuse does the same
2731 allow the ')', '[', '(', '=', '"', and '*' commands to be preceded by the 'm'
2732         prefix to force a menu where the player can pick an item and choose
2733         a context-sensitive item action for it; some give a menu even without
2734         the prefix and for those, same item selection and action can be used
2735 hot ground (Gehennom / Plane of Fire) often destroys dropped potions
2736 erinyes overhaul; they now attempt to punish heroes who have violated their
2737         alignment and get stronger with greater alignment abuse
2738 accessibility options to tell where on map a message happened (accessiblemsg),
2739         to notify when a monster is spotted (spot_monsters), and when
2740         a monster moved (mon_movement), when hero takes damage (showdamage),
2741         when interesting map locations change (mention_map)
2742 accessibility command #lookaround which will describe what hero can see
2743 if hero is punished or tethered to a buried iron ball and has no inventory (or
2744         only carries gold or embedded dragon scales or both), a nymph might
2745         remove the chain when finding nothing else to steal
2746 'showvers' option (and companion 'versinfo' option) to include program version
2747         in the status display so that it will be visible for screenshots or
2748         during streaming video
2749 'query_menu' option to use a menu when asked certain yes/no questions
2750 pyrolisk eggs explode when broken
2751 pauper-option to start the character with no possessions
2752 wand of secret door detection, spell of detect unseen, and wizard mode ^E now
2753         flash the cursor at each location where detection finds something
2754 saving-grace: once per game if receiving a killing blow from full or nearly
2755         full HP, survive with 1 HP
2756 livelog/#chronicle for saving-grace: if saving-grace prevents hero's death,
2757         report it [at present, it uses the livelog classification for breaking
2758         a conduct]
2759 enlightenment/attribute disclosure for saving-grace: include a line for have
2760         or haven't been saved (game in progress) or did or didn't get saved
2761         (game over) via saving-grace
2762 'selectsaved' lists "name-role-race-gend-algn" instead of just "name" in the
2763         menu of save files available to be restored
2764 'selectsaved' prefixes "name-role-race-gend-algn" with "- " for normal play,
2765         "X " for explore mode, or "D " for debug mode if any of the games
2766         shown in its menu weren't saved during normal play; if they're all
2767         normal play, the prefix is suppressed
2768 tourists gain experience by "taking photos" of new creatures, and
2769         going to new dungeon levels
2770 healers gain experience by healing pets
2771 blessed scroll of destroy armor asks which armor to destroy
2772 archeologists' fedora is lucky
2773 telepathic hero can discern which particular monster just read a scroll
2776 Platform- and/or Interface-Specific New Features
2777 ------------------------------------------------
2778 user_sounds: provide an experimental mechanism for terminal-side sounds similar
2779         to the method used for vt_tiledata; new option vt_sounddata that also
2780         requires compile-time definition of TTY_SOUND_ESCCODES (also requires
2781         terminal-side code external to NetHack to recognize the sequence and
2782         act on it)
2783 curses: implement 'selectsaved', restore via menu of saved games
2784 curses: implement selecting menu items via mouse
2785 curses: 'windowborders' can be set to 3 or 4 to suppress perm_invent borders
2786         to provide slightly more room for actual inventory info
2787 curses: if panictrace is triggered, reset the terminal before giving backtrace
2788 curses: if a message is marked urgent, override message suppression initiated
2789         by user having typed ESC at previous More>> prompt
2790 curses: implement a dialog for the windowborders option
2791 curses: implement the windowcolors option
2792 Qt: the "paper doll" inventory subset can be controlled via the "Qt Settings"
2793         dialog box ("Preferences..." on macOS)
2794 Qt: draw a border around each tile in the paper doll inventory; when BUC is
2795         known for a doll item, change the border's color and thicken it
2796 Qt: letting the mouse hover over the paper doll shows a tool tip describing
2797         the object--or lack of same--in the slot under the pointer
2798 Qt: clicking on the paper doll runs the #seeall command (inventory of wielded
2799         and worn items plus tools [lamps, leashes] actively in use; in other
2800         words, same set of things whose tiles are used to populate the doll)
2801 Qt: clicking on the status window runs the #attributes command (^X)
2802 Qt: add a Search button to the toolbar
2803 Qt: support the 'hitpointbar' option
2804 Qt: add Filter, Layout, and Reset buttons to the extended command selector;
2805         Filter is only useful in wizard mode, allowing changing the set of
2806         extended commands between "all", "normal mode only", "extra wizard
2807         mode only"; Layout redisplays the grid of command buttons, toggling
2808         from down columns to across rows or vice versa; Reset puts both back
2809         to their default settings and clears any pending typed input
2810 Qt: [later] augment extended command selection dialog's Filter to add a
2811         fourth subset, those commands which autocomplete when typed for tty,
2812         typically commands with no keystroke or only meta character keystroke;
2813         that makes Filter useful in normal mode (much shorter list of choices)
2814 Qt: add '#' as "Extended-commands" to the 'game' dropdown menu
2815 Qt: add tool tips to the extended command selector's buttons to show command
2816         descriptions
2817 Qt: add tool tips to the icons shown in the status window
2818 Qt: to play user sounds with volume, replace QSound with QSoundEffect; also
2819         restores user sound support for Qt6
2820 tiles: male and female variations in monsters.txt; tested only with tile2bmp
2821         conversion utility so far; also supported by tilemap utility to
2822         generate tile.c
2823 tty: use bright colors directly on supporting terminals
2824 tty: if a message is marked urgent, override message suppression initiated
2825         by user having typed ESC at previous --More-- prompt
2826 Unix: can define NOSUSPEND in config.h or src/Makefile's CFLAGS to prevent
2827         unixconf.h from enabling SUSPEND without need to modify unixconf.h
2828 Unix: support --nethackrc=filename on the command line; same effect as
2829         NETHACKOPTIONS='@filename' but leaves NETHACKOPTIONS available for
2830         specifying options; --no-nethackrc is same as --nethackrc=/dev/null
2831 Windows: implement MSGHANDLER (pr #749 by argrath)
2832 Windows: Add configuration to support Curses on WinGUI (pr #1028 by chasonr) 
2833 X11: implement 'selectsaved', restore via menu of saved games
2834 X11: echo getline prompt and response (wishes, applying names) to message
2835         window and dumplog message history
2836 X11: fix map expose area, no longer leaving black bars on the map
2837 tty and curses: support italic as text attribute
2838 tty and curses: when hitpointbar is displayed, make it blink if current HP is
2839         below the "critical HP" threshold (where prayer treats being injured
2840         as major trouble)
2843 NetHack Community Patches (or Variation) Included
2844 -------------------------------------------------
2845 hallucinatory trap names (pr #174 by copperwater)
2846 autounlock feature originally from unnethack (pr #228 by copperwater)
2847 replace "You feel cold" message for freezing unseen door (pr #265 by
2848         copperwater)
2849 applying a candelabrum with no candles gives a tip (pr #265 by copperwater)
2850 candelabrum now reads "(n of 7 candles attached)" (pr #265 by copperwater)
2851 show appropriate message on throne when crowned (pr #265 by copperwater)
2852 choir chanting, bathing in darkness for death by Moloch (pr #265 by
2853         copperwater)
2854 remove "iron hook" unidentified description (pr #265 by copperwater)
2855 suppress "Unknown command" messages in the dumplog. (pr #265 by copperwater)
2856 give player message informing them they can use #enhance (pr #265 by
2857         copperwater)
2858 neutral sacrifices disappear in a cloud of smoke (pr #265 by copperwater)
2859 call potion bottles by nonsensical names if hallucinating (pr #265 by
2860         copperwater)
2861 add a default message for chatting to gnomes (pr #265 by copperwater)
2862 better reporting directions for impossible() (pr #265 by copperwater)
2863 underwater fire scroll causes vaporization (pr #265 by copperwater)
2864 default shk sell prompt to N (pr #265 by copperwater)
2865 teach non-mindless monsters about the Castle trapdoors (pr #265 by copperwater)
2866 always print a message when the hero teleports (pr #265 by copperwater)
2867 always print a message when the hero level teleports (pr #265 by copperwater)
2868 remove Sokoban luck penalties for actions you can't cheat with (pr #260 by
2869         copperwater)
2870 sounds for minotaurs (pr #298 by Kestrel Gregorich-Trevor)
2871 correct the Guidebook descriptions for msdos video_width and video_height to
2872         state that they work with video:vesa; the video:vga setting that was
2873         described there forces the 640x480x16 mode where video_width and
2874         video_height don't operate (pr #294 by chasonr)
2875 redo rndmonst() to operate in a single pass (pr #286 by copperwater )
2876 fix the "stuck pets" issue (issue #329)
2877 allow themed room subrooms to be filled (pr #347 by copperwater)
2878 allow rereading spellbooks to refresh memory at any time (pr #261 by
2879         copperwater)
2880 allow themed rooms constrained by level difficulty (pr #344 by copperwater)
2881 add a varied form of LIBNH nethack library contribution (pr #385, #403
2882         by apowers313)
2883 add cross-compile to WASM (pr #385, #403, #412 by apowers313)
2884 differentiating gendered monster tiles (pr #430 by Kestrel Gregorich-Trevor)
2885 check bones data directly for deja vu messages (pr #374 by entrez)
2886 unify code for extracting an object from a monster's inventory (pr #455 by
2887         copperwater)
2888 make engraving an occupation (pr #460 by copperwater)
2889 fpostfx index out of bounds when eating standard eggs (pr#547 by janne-hmp)
2890 "readable" Hawaiian shirt designs (pr#407 by entrez)
2891 permit blind feeling for objects on trap door and fix up msgs when dropping
2892         on trapdoor (pr#574 by entrez)
2893 travel from 'interesting position' (pr #575 by entrez)
2894 running on ice sent hero in weird directions (pr #588 by copperwater)
2895 delete extra lines in Guidebook.mn (pr #590 by argrath)
2896 supply missing changes on Guidebook.tex (pr #591 by argrath)
2897 fix out-of-bounds access of xdir and ydir in farlook (pr #592 by copperwater)
2898 variation of imp's period-speak (pr #602 by Vivit-R)
2899 fix m-prefix movement into warning symbol (pr #573 by entrez)
2900 pointer precedence fix incrementing flagcounter in do.c (pr #612 by argrath)
2901 MAX_RADIUS defines the outer bound of the radius table, so leave it at 15
2902         to avoid out-of-bound access in view_from() and do_clear_area()
2903         (pr #613 by argrath)
2904 variable attknum was declared without initialization, and was used in
2905         find_roll_to_hit() (pr #615 by argrath)
2906 check for NULL lua_State before calling lua_close() (pr #616 by argrath)
2907 use %lu, not %d, in format string in timer_sanity_check() (pr #617 by argrath)
2908 bad cast making sp_lev chameleon light source (pr #625 by entrez)
2909 add Ray Chason's adaptation of nethack's Qt5 interface to work with Qt6 (issue
2910         #525 followup comment by chasonr)
2911 mingw32 build updates to replace contents of sys/windows/GNUmakefile and new
2912         sys/windows/GNUmakefile.depend (pr #661 by feiyunw)
2913 mark various pointers to const char as const pointers (pr #624 by argrath)
2914 function fill_special_room() in sp_lev.c was dereferencing a pointer
2915         argument prior to a subsequent check for a NULL pointer that
2916         resulted in an early function return (pr #669 by argrath)
2917 function repairable_damage() in shk.c was dereferencing a pointer
2918         argument prior to a subsequent check for a NULL pointer that
2919         resulted in an early function return (pr #671 by argrath)
2920 function savelev() in save.c was dereferencing a NHFILE pointer for
2921         nhfp->mode prior to a subsequent check for nhfp being NULL
2922         to trigger a call to panic() if it was; move the check for NULL
2923         above that usage (pr #675 by argrath)
2924 function tin_details() in eat.c was passing an obj pointer to
2925         tin_variety() where it was dereferenced; move the tin_details()
2926         NULL check above that tin_variety() call (pr #676 by argrath)
2927 remove unnecessary null checks from christen_orc() (pr #681 by argrath)
2928 mark high altars in altarmask (pr #748 by entrez)
2929 split kicking empty space into separate function (pr #754 by argrath)
2930 split adjusting attributes into separate function (pr #757 by argrath)
2931 split getting damages with a kick into separate function (pr #758 by argrath)
2932 split fixing curse trouble into separate function (pr #765 by argrath)
2933 Handle -eaux plurals in makeplural/makesingular (pr #767 by entrez)
2934 mdisplacem stoning and gloves had test backwards (pr #773 by entrez)
2935 writing type-named scrolls (pr #551 by entrez)
2936 more cases where newcham() gives messages (pr #775 by copperwater)
2937 lua: instance cleanup should not be applied to classes (by ToxicFrog)
2938 fix memory leaks related to selection_new() (pr #782 by argrath)
2939 wished-for doors in wizmode always vertical (pr #788 by entrez)
2940 vampire shapeshifting in a door (pr #794 by entrez)
2941 split "act_on_act" into separate function (pr #777 by argrath)
2942 unnecessary null-check on parsesymbols() (pr #793 by argrath)
2943 split cleaning-up on gd_move() into separate function (pr #791 by argrath)
2944 from xNetHack:  better handling for monsters putting on equipment; fixes
2945         issue #843:  "Mon dies.  Mon puts on <armor>.  The seemingly dead Mon
2946         rises as a vampire."
2947 add Unicode support to DOS Curses port (pr #889 by chasonr)
2948 add Unicode support to Win32 (pr #903 by chasonr)
2949 add Unicode support to Qt (pr #910 by chasonr)
2950 add Unicode, IBMgraphics and DECgraphics support to X11 (pr #923 by chasonr)
2951 add some glue code for those that might wish to build with 3rd party fmod
2952         sound library support (pr #962 by MrEveryDay98)
2953 add new options 'nopick_dropped' and 'pickup_stolen' options to avoid
2954         auto-pickup of items dropped by hero and to auto-pickup things
2955         previously stolen from hero if moved upon while autopickup is On; both
2956         bypass pickup_types and autopickup_exceptions (pr #1140 by entrez)
2957 fix msg_window:combination and TTY getlin() ^P (pr #1155 by entrez)
2958 remove a null sobj check from gold_detect that was situated after
2959         dereferences had already been done (pr #1173 by argrath) and
2960         adjust prototype in extern.h
2961 check for valid indexes of def_monsyms[] and def_oc_syms[] in
2962         choose_classes_menu() (pr #1179 by argrath)
2963 split damage from acid potion into separate function (pr #1195 by argrath)
2964 add swallow and explosion glyphs to glyph_to_cmap() (pr #1277 by ars3niy)
2965 split "cannot_push" on moverock_done() into a separate function (pr #1282
2966         by argrath)
2967 split making pits on do_earthquake() into a separate function and
2968         eliminate some gotos on do_earthquake() (pr #1287 by argrath)
2969 update the WASM cross-compile to work with the current
2970         code (pr #1331 by guillaumebrunerie)
2973 Code Cleanup and Reorganization
2974 -------------------------------
2975 new core file insight.c - move enlightenment and conduct from cmd.c to it,
2976         also move vanquished, genocided, and extinct monsters from end.c,
2977         and move one-line stethoscope/probing feedback from priest.c
2978 move majority of global variables into instance_globals struct g
2979 move zeroobj, zeromonst, zeroany into const_globals struct cg
2980 remove STATIC_DCL, STATIC_OVL, STATIC_VAR, STATIC_PTR
2981 old Qt moved from win/Qt to win/Qt3 and files renamed to use qt3_ prefix
2982 more current Qt for Qt version 4 and 5 moved from win/Qt4 to win/Qt; qt4
2983         moniker changed to qt_
2984 window-port-interface: add_menu() modified to take a more general itemflags
2985         parameter to support uses beyond just 'preselected'
2986 window-port-interface: start_menu() modified to take a new mbehavior parameter
2987 add some bounds checking to tabexpand (doesn't prevent the apparent compiler
2988         optimization bug that put homebrew macOS executable into endless loop)
2989 unified breamm and breamu
2990 added some stair helper functions
2991 unified the code for finding a queen bee
2992 unified the code for multishot class bonus code
2993 unified the code for obtaining the inventory letter value for sortloot
2994 unified the code for (un)locking boxes in inventory
2995 unified the code for finding room pos for some features
2996 unified the code for revealing hiding monsters for mvm attacks
2997 options overhaul: moved the option definitions into include/optlist.h;
2998         combined the boolean and compound options into one allopt[] array;
2999         each option has its own individual function for setting the option,
3000         for retrieving the option value, and for processing the option
3001         following its selection in the 'O' menu, added doc/options.txt file.
3002 function reglyph_darkroom() relocated from options.c to display.c
3003 resurrect 'makedefs -m' to be able to derive default mons[].difficulty values
3004         suitable for assigning to new or changed monsters
3005 convert obj->oextra->omid from pointer to scalar
3006 get rid of unused obj->oextra->olong
3007 relocated unmaintained code to outdated folder, specifically sys/amiga,
3008         sys/atari, sys/be, sys/mac, sys/os2, sys/wince, win/Qt3, win/gem,
3009         win/gnome, include/amiconf.h, include/beconf.h, include/def_os2.h,
3010         include/os2conf.h, include/macconf.h, include/tosconf.h,
3011         include/wceconf.h
3012 removed SYSFLAGS conditional code
3013 removed MFLOPPY conditional code
3014 get rid of 3.6.1 workaround needed to retain compatibility with 3.6.0 bones
3015         files after fix for 3.3.0 through 3.6.0 bug for invalid 'bonesid'
3016         designation in bones of quest levels
3017 add an additional note to mextra.h and obj.h comments that reminds people to
3018         appropriately init new fields if they need to initialize to something
3019         other than zero
3020 rework stairs structure into a linked list
3021 move 'restoring' to the program_state struct; add corresponding 'saving';
3022         both used to enforce no updating of status lines or of persistent
3023         inventory when the relevant activity is in progress
3024 unify special attack damages from separate you-hit-monster, monster-hits-you,
3025         and monster-hits-monster into functions by damage type
3026 unify trap effects for hero and monster stepping on the trap by trap type
3027 replace the single permonst mname field with male, female, and gender-neutral
3028         names pmnames[NUM_MGENDERS] fields
3029 adjust window port interface to pass a pointer to a glyph_info struct which
3030         contains the glyph itself, the ttychar, the color, the glyphflags,
3031         and the symset index; this affects two window port calls that get
3032         passed glyphs: print_glyph() and add_menu().
3033 switch from k&r C to C99
3034 remove the game-compile dependencies on any pre-generated header files
3035 date.h dependency and inclusion is removed and comparable functionality is
3036         produced at runtime; REPRODUCIBLE_BUILD capability will need to be
3037         reviewed and adjusted
3038 pm.h dependency and inclusion is removed and comparable functionality is
3039         produced by moving the monster definitions from monst.c into new header
3040         file called monsters.h, then taking advantage of the C preprocessor to
3041         generate appropriate enum values during compile
3042 onames.h dependency and inclusion is removed and comparable functionality is
3043         produced by moving object definitions from objects.c into new header
3044         file called objects.h, then taking advantage of the C preprocessor to
3045         generate appropriate enum values during compile
3046 artilist.h is used to generate appropriate artifact enum values by the C
3047         preprocessor during compile
3048 remove requirement of object probabilities adding to 1000
3049 delete obsolete variable 'g.monstermoves' (copperwater pull request #579)
3050 expand glyphs to map wall styles that can vary between main, mines, gehennom,
3051         knox and sokoban; tile interfaces were already doing that on the fly
3052         by swapping several tiles in and out on those levels
3053 expand glyphs to map altars that can vary between unaligned, chaotic,
3054         neutral, lawful and other; tty was already doing that on the fly
3055         per map cell via display code
3056 explosion types are mapped and can vary between dark, noxious, muddy, wet,
3057         magical, fiery and frosty; tile interfaces already had unique tiles
3058         for each and tty was altering the color on the fly via per map cell
3059         via display code
3060 expand glyphs to uniquely represent things that are at the top of a pile of
3061         objects (piletops); some window ports were already doing that on the
3062         fly via a glyphmap flag, but NetHack itself had no awareness beyond
3063         setting the glyphmap flag within the display code
3064 expand glyphs to uniquely represent male and female variations of monsters,
3065         pets, ridden monsters, detected monsters and the statues of monsters;
3066         tile interfaces were already mapping them uniquely via a glyphmap flag
3067         and mapping to separate tiles within the window port code, but NetHack
3068         itself had very little awareness beyond setting the glyphmap flag
3069         within the display code
3070 added glyph_to_body_corpsenm(glyph) and glyph_to_statue_corpsenm(glyph)
3071         macros to display.h for use by pager.c; the game core code is better
3072         off using such display macros/functions for all glyph_to_* mappings
3073         that are needed, rather than resorting to direct references of glyph
3074         offsets that could change as the set of glyphs expands or gets adjusted
3075 map_glyphinfo() now simply references an internal array that maps each unique
3076         glyph to a color, a ttychar, or a tile, also to a set of glyphflags
3077         that confirm some unique characteristics of that glyph; the glyph
3078         mappings are set at game init/restore after config file processing, and
3079         are reset upon level change, or when some game options are adjusted
3080         in-game that could have an impact on the mappings, but they remain
3081         stable between those events
3082 added MG_MALE glyphflag to complement the MG_FEMALE glyphflag that was there
3083 remove obsolete roles[].femalenum and rename roles[].malenum to roles[].mnum;
3084         likewise for races[]
3085 add git submodule support to the Makefiles by specifying git=1 or GIT=1 on the
3086         make command
3087 add TT_NONE==0, renumber other u.utraptype values so that TT_BEARTRAP isn't 0
3088 for Planes of Water and Air, save the air bubbles and clouds with the level
3089         rather than as game state; affects wizard mode ^V and #wizmakemap
3090 switch to a flags arg on newcham() in place of the pair of boolean args
3091 replace some old 'time_t' hackery in system.h and hacklib.c with something
3092         less obtrusive in unixconf.h
3093 remove the per dungeon level door limit
3094 remove various '#if LINT' hacks used to suppress warnings from pre-ANSI 'lint'
3095 VMS: removed NO_VSNPRINTF conditional code
3096 remove the window port get_menu_coloring() calls from all the existing window
3097         ports, and implement the functionality on the core-side of the
3098         interface prior to calling the window port's foo_add_menu() function
3099 remove TEXTCOLOR build option
3100 relocate general-purpose function choose_classes_menu(), from
3101         options.c to windows.c
3102 remove register from variable declarations
3103 make glyph_to_cmap() a function instead of a macro