File: fixes36.2

package info (click to toggle)
nethack 3.6.7-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 21,468 kB
  • sloc: ansic: 266,495; cpp: 13,652; yacc: 2,903; perl: 1,426; lex: 581; sh: 535; xml: 372; awk: 98; makefile: 68; fortran: 51; sed: 11
file content (732 lines) | stat: -rw-r--r-- 46,908 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.318 $ $NHDT-Date: 1557447310 2019/05/10 00:15:10 $

This fixes36.2 file is here to capture information about updates in the 3.6.x
lineage following the release of 3.6.1 in April 2018. Please note, however,
that another 3.6.x release is not anticipated after 3.6.2, and most developer
focus will shift to the next major release.

General Fixes and Modified Features
-----------------------------------
last line of config file wasn't being heeded if it had no newline
list MSGTYPE values shows empty strings as reported in H7140
Killing Vlad while he was in bat/fog cloud/wolf form gave poorly worded
	feedback when he reverted to vampire form
spaces in hilite_status option title text field not working
numeric hilite_status values didn't allow negative numbers (needed for AC);
	change them to accept leading '-', also accept unary '+' as a no-op
permanent inventory window was updated too soon when a scroll of charging
	was used to [re]charge an item, not reflecting the item's change(s)
for starting inventory, don't give an orc hero lembas wafers or cram rations
targetting with a polearm could give away location of hidden monster
static prototype could be left orphaned depending on #defines in rip.c
config file error handling routines were calling xx_wait_synch early
	even before the window system was initialized; add a default routine
status_finish() in botl.c would unconditionally invoke the window port's
	win_status_finish() routine which was problematic if the windowport
	wasn't initialized yet
using 'O' to set up a hilite_status rule for string comparison, the menu for
	color was titled "choose attribute for when <foo> is 'bar'" and the
	one prompting for attribute used the default "pick an attribute"
when finishing using 'O' to examine or set hilite_status rules, if the
	'statushilites' option is 0 and there is at least one rule, give a
	reminder about setting it to non-zero to activate highlighting
if player creates any menu colors via 'O' while menucolors is off, issue a
	reminder that it needs to be on in order for those to become effective
end of game disclosure was exercising Wisdom when revealing inventory and
	also repeatedly updating persistent inventory window if enabled
internals for 'sortloot' option have been changed to not reorder the actual
	list of objects, so changing it to 'n'one will get the original order
	back and having a persistent inventory window open when performing
	full-pack identify won't result in possibly skipping some items
give vault guards a cursed tin whistle since there is a shrill whistling
	sound if hero teleports out of vault while being confronted by guard
polymorphing worn amulet triggered panic if it turned into an amulet of change
wishing for small mimic corpse or large mimic corpse failed with 'nothing
	matching that exists'; wishing for large {dog,cat,kobold} corpse
	yielded normal size one (size prefix was being stripped off for globs)
wishing for "glob of grey ooze" failed even though grey ooze is recognized
	as a variant spelling for gray ooze
spells of healing and extra healing cast at monsters handled monster blindness
	inconsistently compared to other healing
when using the 'O' command to create a status highlight that specifies
	multiple attributes (blink+inverse, &c), pick all of them in one menu
	selection and create a single hilite_status rule instead of having
	separate rules for each attribute to be merged when highlighting
highlighting status conditions would fail to use attributes if a rule with
	them was followed by another one without (color only or color&normal)
when using 'O' to set hilite_status rules, hide the 'score' status field if
	game has been built without SCORE_ON_BOTL; latent rules for 'score'
	can still be set in config file and removed via 'O' but can't be added
make stone-to-flesh behave the same on statues of petrified monsters as it
	does on random 'dungeon art' ones (revive at a nearby spot instead of
	becoming a corpse when there's already a monster at statue's location)
special level loader didn't support populating several types of special rooms
	(ant hole, cockatrice nest, leprechaun hall)
eating rings while polymorphed didn't handle bonus/penalty for increase damage,
	increase accuracy, or protection correctly
shopkeeper's position in front of shop door didn't correctly handle bottom
	edge of irregularly shaped shop due to typo or copy+paste error
	(latent bug; no such shops are present in 3.6.x)
attempting to update permanent inventory window during restore had problems
	with unpaid items (needed shop bill before shop and its shopkeeper
	were restored) and also with named fruit
remembered corpse which isn't there anymore would be described by farlook as
	the corpse of a random monster type
when eating a tin of spinach, don't "feel like Popeye" if sustain-abilities
	prevents any strength gain
summary text [for message history] of quest message Pri 00081 (Priest quest
	success message given when bringing quest artifact to leader)
	misspelled "congratulations"
verbal charm/seduce messages were given even when hero was deaf
succubus/incubus seduction might result in loss of levitation which in turn
	could drop the hero onto a trap that transports him/her elsewhere;
	seduction was proceeding as if nothing unusual had happened
#turn command which aggravated monsters did so without using a turn (not a pun)
fix hole/trapdoor passage inconsistency when polymorphed into a giant
making a wide-open special level with FLAGS:inaccessibles could trigger a
	"floodfill stack overrun" panic (no 3.6.x levels were affected)
wallifying a special level might go out of map bounds (not with 3.6.x levels)
	and corrupt other level data
if a random grave produced during level creation included some gold, that gold
	was left on the ground instead of being buried with other treasure
multiple instances of shop damage at same spot (before repairs, so a broken
	door or dug wall plus trap creation) only charged hero for first one
shop door repair which took place when hero was on another level only worked
	correctly if a trap at the same spot was removed
object scattering during shop wall repair was skipped if a trap at the same
	spot was also being removed
augmented death reason for "while helpless" was broken for record and logfile
	(but still correct for xlogfile)
prevent wish prompt input from remembering the previous wish
parchment and vellum are made from animal skin so change material composition
	and color for spellbooks with those descriptions from paper to leather;
	eating those books now breaks vegetarian conduct
fix monsters not wielding digging implements
wizard mode ^I^I didn't make temporary identifications become persistent if
	the build configuration makes plain 'char' unsigned
wizard mode #wizidentify didn't disclose extra information for unID'd items if
	key bindings took away ^I and didn't bind #wizidentify to another key
make transformation message of a deliberate apply of a figurine seem a bit
	less definite when blind and place unseen monster marker at the spot
	you think it should be
add window port status_update() value BL_RESET to use as a flag to redraw
	all status fields, distinguished from BL_FLUSH which now only
	specifies that the bot() call has completed so any buffered changes
	should now be rendered
for hilite_status of string status fields (title, dungeon-level, alignment),
	the types value-goes-up and -down aren't meaningful; treat them as
	value-changed if from config file and don't offer as choices with 'O'
jumping into or over a Sokoban pit, or over a fire trap, triggers trap twice
mimics created by #wizgenesis could block or not block vision incorrectly
handle monsters inside the invocation area
give monsters who have had a worn item stolen or who have been life-saved
	(used up amulet) a chance to wear replacement gear on next move
	instead of having to wait until they pick something up
Unchanging hero in clay golem form will be killed when cancelled
poly'd shapechanger and hiding mimic will revert to normal when cancelled,
	like werecreature in beast form and non-Unchanging hero
cancelled shapeshifter is no longer able to change shape
cancelled shapeshifter hit by polymorph magic will become uncancelled
polymorph zap which created a new long worm (or retains an old one via wizard
	mode monpolycontrol) could hit that worm multiple times (tail segments)
wishing for "orange" could yield orange or orange colored gem/potion/spellbook
a sleeping or paralyzed mon would be frightened by its reflection when
	applying a mirror
prevent leash showing unseen monster as "attached to it"
gremlins seemed impervious to Sunsword's light yet a flash from a camera
	caused them to cry out in pain
when objects migrated (fell down stairs) and invisible hero (w/o see invisible,
	no-autopickup) descended, stairs got shown instead of object(s) on them
drum of earthquake was causing deafness but oddly enough only when used up
known bear trap was being forgotten about by a player polymorphed into a
	flying monster if the player unsuccessfully tried to #untrap it and
	moved onto the trap square as a result
no leash-related message is given when a leashed pet yellow light explodes
shop messages refer to shk by name even when shk is not visible but some
	used pronoun "it" or "its" in same sentence; ditto for vault guards
poly'd hero and monsters could eat through iron bars in areas where walls
	were flagged as non-diggable
Samurai seeing items at a distance could have them be described by their
	ordinary names rather than by their Japanese names
wizard mode ^T shouldn't have been diminishing player power but it was
	and hilite_status:power settings really drew attention to that
fix missing space in "would flyif you weren't levitating"
a wand of polymorph lost its magical ability for the turn just because the
	player using it to engrave happened to be blind, which didn't make
	much sense
floating eye is classified as a flyer but flying is blocked while levitating,
	so don't set intrinsic flying when hero is polymorphed into one
change default value for the 'autodescribe' option to 'on'
Elbereth hypocrisy penalty doesn't apply if attacking a monster which isn't
	frightened by Elbereth; normal scuffing of engravings still applies
Elbereth hypocrisy penalty reduced when alignment is already low
during character creation, don't unset alternate weapon when a shield gets
	worn (was preventing knight from having lance set up as uswapwep)
preformatted Guidebook.txt split line in middle of "' '" for #wait command
prevent simiulated screenshot in Guidebook.txt from spanning page boundary
overview information for former hero was not being set properly when bones
	file was saved, so current hero coming across a dead hero's grave
	didn't have #overview feedback augmented with "final resting place"
in Guidebook.mn and Guidebook.txt, the 'I' command mis-described `IX' as
	displaying inventory items whose bless/curse state is "known"
	(Guidebook.tex correctly had "unknown")
poison gas (stinking cloud) wasn't shown at drawbridge-up spot
prayer result which enhanced strength (fix weakness from hunger) didn't give
	a message if a change in encumbrance occurred; it came on next move
add current location within the dungeon to the Background section of ^X and
	final disclosure (it's not background but doesn't fit anywhere else)
death from something other than loss of hit points could leave hero with
	non-zero HP at end of game (during "really die?" prompt, disclosure)
added several special cases for genocide and/or wishing prompt: (cookie,
	pie, genie, watchmen)
lightning strike from Mjollnir did not make any noise
with menustyle:Full, picking 'A - autoselect all' when putting items into a
	container actually took everything out of that container
add missing 'A - autoselect all' choice for menustyle:Full when taking items
	out while looting a container
fix odd wording "The boulder triggers and fills a pit"
^X status feedback: don't report "not wearing any armor" when wearing a shield
attempting to #ride a long worm's tail could trigger impossible "worm_cross
	checking for non-adjacent location?"
avoid "The " in "The <known-artifact-but-not-The-artifact> falls down stairs."
avoid potential buffer overflow if object with very long name knocks other
	objects down stairs when dropped, thrown, or kicked there
#wizintrinsic for 'flying' didn't update status line when flying ended
#wizintrinsic for 'warn_of_mon' didn't set any type of monster (now grid bugs)
clairvoyance would show trap instead of a monster on/in that trap, which was
	intentional, but when clairvoyance finished the monster wasn't shown
clairvoyance revealing underwater or under-lava objects left object displayed
	instead of restoring the water or lava
nurse corpse/tin chance to convey poison resistance when eaten was not honored
make tame vampires be more aggressive when shifted to bat/fog/wolf form
a stale gold symbol could be displayed on the status line following a switch
	to a new symset, as observed and reported for Windows RogueEpyx symset
successfully paying for shop damage with shop credit would be followed by
	impossible "zero payment in money2mon"
if a migrating monster was killed off because there was no room on the
	destination level, it would leave a corpse even if it was a type
	which should never leave one (demon, golem, blob, &c)
monsters accompanying hero during level change (usually pets) who failed to
	arrive and tried to re-migrate were being removed from the map after
	already having been removed [impossible "no monster to remove" if
	compiled with EXTRA_SANITY_CHECKS enabled] during migration handling
monsters accompanying hero during level change (usually pets) who failed to
	arrive and tried to re-migrate (for hero's next visit to the level)
	ended up being killed because the migration attempt happened right
	away (same visit by hero, so level still full) and they weren't
	accompanying hero on the second attempt
fix for above (all failed arrivals will re-migrate) makes the earlier fix (for
	invalid corpse being left by monst killed upon migration failure) moot
end of game while carrying Schroedinger's Box would reveal cat-or-corpse
	for inventory disclosure or put that info into dumplog, but not both
attempting to untrap an adjacent trap while on the edge of--not in--a pit
	failed due to not being able to reach the floor
magic trap's deafening roar effect wasn't waking nearby monsters
scattering of objects might leave source location with wrong thing displayed
for configurations with 'long int' larger than 'int', lev_comp wrote some
	garbage into the *.lev files, but nethack seemed unaffected by that
	(at least on little-endian hardware) and loaded the levels successfully
stinking cloud placed near water could kill underwater creatures
applying--rather than wielding--a cursed polearm or weapon-tool didn't report
	that it had become welded to hero's hand(s)
the message when riding a steed into a pit was composed but not shown
dismount that killed steed because there was no room to put it on map blamed
	hero; change that to only blame hero if dismount is voluntary
to emphasize that it's not a light source, change description of wielded Sting
	from "(glowing light blue)" to "(light blue aura)" when sighted and
	from "(glowing)" to nothing (not warm enough to feel) when blind
	[subsequently changed in different manner; see 'exposed via git' below]
glowing Sting quivers if hero becomes blind and quivering Sting glows if
	blindness ends; it worked for timed blindness but not for blindfold
weapon (wielded pie, egg, potion, boomerang) might be destroyed when hitting a
	long worm, then freed memory was accessed to decide whether to cut it
level change after being interruped locking or unlocking a container might
	access freed memory
if a restore attempt failed and a new game was started instead, it would use
	stale context from old game if restoration got far enough to load that
if hero survives turning into slime (life-saving), survive as a green slime
hero hit by something that causes inventory items to be destroyed with loss of
	any of those causing other inventory items to be dropped or destroyed,
	inventory traversal became unreliable (known sequence: potions hit by
	fire then breathing vapor from boiled unholy water triggering 'were'
	transformation to beast form; possible sequence: ring of levitation
	blasted by lightning and dropping hero onto fire trap); [3.6.1 fixed a
	similar problem with more obvious symptom, an "object lost" panic when
	the unholy water was wielded; the fix for that wasn't general enough]
add MM_ASLEEP makemon() flag and honor it when creating group for fill_zoo
add MM_NOGRP makemon() flag as a means of suppressing groups of monsters in
	a couple places that warrant it when a specific monster type isn't
	specified on the call to makemon()
at start of session (new game or restore), HILITE_STATUS for gold was ignored
setting second or later named fruit to value beginning with two or more spaces
	followed by non-space gave "singular of null?" warning
when blocking/unblocking of levitation or flying was updated due to walking
	onto different terrain, the relevant status condition wasn't updated
	on the screen until some other status update happened
if levitating hero in pass-wall creature form jumped or teleported from
	terrain that allowed levitation to terrain that didn't or vice versa,
	blocking of levitation wasn't updated properly
digging down or level teleporting while stuck in solid rock which is blocking
	levitation or flight didn't notice when that should become unblocked
make it easier to clear 'pickup_types' (menustyles Traditional and Combination
	could do so by setting it to 'a'; now ' ' works too; Full and Partial
	allowed unselecting every object class; now 'all classes' is a choice)
distribution of monsters selected by mkclass() didn't match expected distrib
	(cited example was ndemon() creating twice as many incubi as succubi)
while inside a shop, dropping an unpaid item inside an engulfer would leave
	that item 'unpaid' and it would remain so on shop floor after the
	the engulfer was killed; treat dropping shop items inside an engulfer
	as stealing them and giving them to that engulfer--hero must pay for
	them and shop retains ownership of them
while levitating inside a shop, throwing an unpaid item and having recoil move
	hero out of shop (or to shopkeeper's spot in front of door) would
	leave the item unpaid on shop floor and also on the shop's bill but
	not visible via 'Iu' or 'Ix'; leaving the shop after that would anger
	the shopkeeper and summon kops
diluted potion of oil is less effective when filling lamps (adds less fuel)
	or burning (lasts less long) or exploding (inflicts less damage)
apply fix from grunthack to prevent panic "fakecorr overflow" when vault guard
	couldn't figure out how to lead the hero from vault to civilization;
	fixes longstanding bug C343-23
vibrating square is not really a trap so monsters don't need to avoid it
if hero kicks some embedded gold out of a wall while following vault gaurd
	away from vault, don't report "the guard _calms_down_and_ picks up
	the gold" unless he's on brink of going ballistic
for '/?' information lookup, "item named The Artifact" failed to find info
	about "Artifact" due to presence of "The"
identifying or forgetting gem types now adjusts prices for gems already on
	shopping bill
when fire converts an ice location into a water location, dunk any monster on
	that spot immediately instead of waiting until its next move
training riding skill had an off-by-one bug when counting turns riding
message sequencing when vampire shifts to fog cloud to pass under closed door:
	when in sight, give form change message before moving to door spot
limit carrying heavy loads from water to land
failing to carry a wished-for item behaved differenctly from dropping one
life-saving while weak/starving/fainting boosted nutrition without restoring
	lost point of strength, making temporary loss be permanent
unlike #chat in a shop, walking on an item in a shop failed to include price
	for hero-owned container holding shop-owned items
bag of holding explosion inside shop billed hero for unpaid contents if it
	happened when applied while carried but not when looted while on floor
looking into an applied container with ':' showed prices of unpaid items but
	looking into a looted one with ':' did not show prices for shop items
prevent achievement luckstone from merging with other luckstones if kicked or
	dropped by monster (not applicable for dropped by player; achievement
	would have been recorded and luckstone reverted to normal if picked up)
when splitting a stack where internal ID is used to make adjustment to
	shop prices, pick an ID for new stack that yields same prices as old
when merging a stack where internal ID is used to adjust shop prices, always
	keep the ID which induces the higher price (only matters when buying
	from shop, not when selling; doesn't affect items already on bill)
since knives became stackable in 3.6.0, fake player monsters could be given
	multi-quantity stacks for weapons (scalpel, athame) they never throw
using 'O' to attempt to set bouldersym to a monster letter or warning digit
	while it still had its default value would override the display value
	for it to be <NUL> ('\0') after 'badoption' feedback
when ^T resorted to the teleport-away spell if hero didn't have intrinsic
	telepotation, it used different hunger/strength/energy requirements
	than casting with 'Z'; ^T also required that the corresponding book
	be known even though knowing and casting a spell should be (and is
	with 'Z') possible after forgetting the spellbook due to amnesia
setting SEDUCE=0 made all succubus and incubus attacks be described as
	smiling engagingly or seductively rather than hitting or missing
entering Ft.Ludios with a lit candle lit up the entire entry room except for
	one corner spot; that corner is beyond candle radius but other spots
	even further away were being shown; in knox.des, force the walls to
	be unlit in order to prevent those wall spots from showing so soon
a couple of short wall segments in the "Gnome King's Wine Cellar" variant of
	Mines' End were diggable; one stone spot which should have been, wasn't
boulder dropped or launched by a monster onto a monster trapped in a pit and
	killing it credited/blamed the hero and might trigger a deltrap panic
the simulation of dual weapon combat when polymorphed into a form with more
	than one weapon attack allowed off-hand artifact to be used; it also
	used seconary weapon even when wearing a shield, or if it was silver
	even when current shape couldn't handle silver, or if it was cursed;
	cursed is allowed but weapon will be dropped, just like in two-weapon
demons gated in other demons without any message
if a vampire revives from from dead bat/cloud/wolf shape while held by hero
	poly'd into a grabber, release it from hero's grasp
various non-weapon attacks while polymorphed didn't inflict blessed or silver
	weapon damage when worn items contacted vulnerable target monsters
hero poly'd into rope golem form could choke headless or non-breathing monsts
hero poly'd into creature with hug attack could hug a long worm's tail which
	rendered the whole worm immobile
smudging of an engraving has been relocated to after a succesful move
	and both your former location and your resulting location are
	subject to the smudging
monster with multiple items in inventory could trigger 'dealloc_obj with nobj'
	panic when turned into a statue if separate mon->minvent items merged
lock picking context could end up with stale container pointer if container
	being forced/unlocked/locked got destroyed or sent to another level
teleporting out of a vault after guard appears could result in the guard being
	stranded in a one-square long temporary corridor adjacent to vault
	wall and periodically saying "Move along!"
if game ends while hero is in a vault wall breach or in guard's temporary
	corridor, a message "you are encased in the rock" could be given when
	guard repairs things (for possible bones); suppress it if hero is dead
DUMPLOG: output from '/' (#whatis) and ';' went into ^P message recall history
	but was missing from DUMPLOG's message history due to special handling
	for the first character which might be graphical rather than text
when donning armor, defer flagging its +/- value--which can be deduced from
	the status line--as known until finished in case it gets stolen before
	then (player might still deduce the +/- value but hero won't learn it)
a monster with resistances supplied by worn armor would lose them if that
	monster went through a shape change even if the armor stayed worn
when using 'f' to fire/throw--and possibly some ^A's to repeat--then running
	out of ammo (with either 'autoquiver' off or nothing suitable to put
	in quiver), using ^A would put whichever inventory item was assigned
	the same letter as the prior direction into quiver slot (unless item
	was already worn or wielded) and then ask for a direction to fire it
persistent inventory window would show "(being worn)" for armor that was in
	the midst of being put on or taken off; it is 'partly worn' in such
	circumstances so "being worn" could be misleading
toggling perm_invent on didn't immediately show persistent inventory window
some fish should lay their eggs in the water rather than on land
wand or spell of undead turning handled messages and wand-discovery in a
	non-intuitive manner biased toward healers
if steed ate a mimic corpse and began masquerading as something, hero could
	keep riding it; force dismount
kicking an object stack moves the topmost 1, but range calculation used the
	weight of the whole stack to decide how far it would move, possibly
	yielding "thump" result with no movement despite being a light item
status lines' dungeon location field in the elemental planes now shows Earth
	or Air or Fire or Water instead of generic End Game
avoid spurious status refresh when hero gains experience while 'showexp' and
	'showscore' options are off
using Cleaver to attack a worm tail segment but killing adjacent head first
	would result in an impossible warning from cutworm
Valkyrie quest was supposed to have a 50:50 chance that northern drawbridge
	would be raised, but both were always lowered; chances now are: both
	lowered: 3/8, S down+N up: 3/8, N down+S up: 1/8, both raised: 1/8
shorten the getpos prompt for teleport destination so that it won't yield a
	--More-- prompt for the help hint (--More-- still possible when riding)
once a status highlight for a temporary rule ('up', 'down', 'changed') timed
	out, further spurious status updates (evaluating all fields) would
	occur every 'statushilites' turns even if no fields had changed
if a migrating long worm couldn't be placed, or some other monster was given
	an existing long worm's place and it couldn't be put somewhere else,
	a "trying to place monster at <0,0>" warning would occur
if hero throws a pick-axe into a shop and shopkeeper catches it, shk would say
	"get out of my way, scum" even if there was no monster at pick-axe spot
a quantum mechanic hit that teleported the target could also kill it at the
	destination; make sure that the small amount of physical damage isn't
	fatal unless the teleport is negated by cancellation (magic or armor)
if a mimic concealed itself as a corpse, it could pick a monster type which
	never leaves a corpse
message given when shape-shifted vampire cheats death by reverting to its
	original form ignored hallucination when describing old and new forms
Vlad wasn't set up as a vampshifter properly
poly'd hero capable of spitting venom would leave intact venom object if it
	reached end of range at a 'soft' location such as water
avoid impossible if monster cannot be relocated from teleport region
fix cloned monster trapped and hiding states
split monster could be placed on trap without triggering it
turning into green slime would make wielded or carried crysknives revert to
	worm teeth in bones data even though they remained carried


Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository
------------------------------------------------------------------
fix access violation when --debug:xxxx has no other args after it
setting the inverse attribute for gold had the space before "$:"
	getting highlighted along with the gold field
sortloot segfaulted when filtering a subset of items (seen with 'A' command)
orctown: prevent "Bad fruit #0" and some minor tuning
orctown: orcs beyond the mines were being given any left-over booty and named
	as part of the same marauding gang operating within the mines
make long extended commands list be more navigable
simplify #wizidentify; don't rely on having bold menu entries
add object class group accelerators to #wizidentify
ensure tmp_at() structures are initialized for all code paths when swallowed
trapped-vs-levitation/flying change broke Sting releasing hero from web
life-saving while poly'd and Unchanging wasn't restoring u.mh (HP as monster)
change in searching stopped finding unseen monsters except hiders and eels
buliding with EXTRA_SANITY_CHECKS enabled would issue "no monster to remove"
	warning if steed was killed out from under the hero
changing Sting's description to be "(weapon in hand) (light blue aura)" was
	too close to feedback when objects become blessed; change it again,
	to "(weapon in hand, flickering/glimmering/gleaming light blue)"
fix bit-use collision between WC2_TERM_SIZE and WC2_RESET_STATUS in
	include/winprocs.h following a recent merge
fix foxen pluralization again after underflow remedy reintroduced the problem
fix "placing monster over another?" warning for vault guards
status highlighting classifies gold, time, and experience-points as data type
	'long' but when selecting hilite rule to use treated them as 'int'
a config file line with OPTIONS=symset:default, roguesymset:RogueEpyx
	was disabling color on RogueEpyx even though the symset is
	meant to have color; that was due to an errant init_symbols() call
	during the processing of symset:default done after RogueEpyx had
	already been processed
avoid potential segfault when doing 'more information' lookup
when built with STATUS_HILITES enabled (the default), gold on status line
	was missing '$' prefix for symset:Blank
wizard mode ^G, creating a monster of class 'I' yielded impossible "mkclass
	found no class 35 monsters"
wizard mode ^G, creating a monster via class name using "lo" through "long wor"
	or "long worm t" through "long worm tail" yielded impossible "mkclass
	found no class 59 monsters" (class '~' creates a long worm as intended)
if bouldersym bug (via 'O', above) put a <NUL> ('\0') on the map, examining
	that spot matched placeholder monster class #0 and triggered impossible
	"Alphabet soup: 'an("")'."
wizard mode m^T, not selecting a teleport choice didn't teardown the menu
	properly and could eventually lead to "No window slots!" panic
when in a shop and using ':' to look inside a container in inventory, items
	owned by hero showed price they'd be charged if hero was buying them
when in a shop and using ':' to look inside a container on shop floor, items
	that shopkeeper didn't care about weren't shown as "no charge" unless
	the hero owned the container
when engulfed while in a shop, dropping an item into the engulfer and then
	using ':' to look at current location could cause a crash
when items were on the floor just inside a shop's door where the shopkeeper
	doesn't buy and sell stuff, those items showed a 'for sale' price
probing a monster inside a shop (including shopkeeper) showed 'for sale'
	price for items in monster's minvent
applying a container while inside a shop and initiating a put-in operation
	would show non-empty containers in inventory--including the one being
	applied--with "for sale" amounts for the prices of their contents
after 'when donning armor, enchanment becomes known even if interrupted' fix,
	wearing a leather jacket, fedora, or dented pot (no multi-turn delay
	worn in a slot which usually has one) didn't make +/- become known
when persistent inventory window is enabled, wearing armor didn't immediately
	update it with armor's newly observed +/- value
having an artifact wish be refused ("for a moment you feel <artifact> in
	your hands, but it disappears") would immediately segfault
using 'O' to set status hilites for any status condition (Blind, &c) and
	specifying more than one attribute (Bold, Inverse, &c) it would only
	retain one of the chosen attributes
when u.uhp==-1 became a flag to suppress status updating, if game ended when
	hero died with exactly -1 HP, status would be blank during disclosure
mimic mimicking a shop item didn't show any shop price for whatis and glance
the SEDUCE=0 fix broke #chat to succubi/incubi
early rolling boulder trap lacking any boulder might still have the corpse
	of a dead adventurer
tty: turn off an optimization that is the suspected cause of Windows reported
	partial status lines following level changes
tty: ensure that current status fields are always copied to prior status
	values so that comparisons are correct
tty: fix an out of bounds error in tty_status_update() for BL_HUNGER case
tty: fix leftover display artifact when the last field on the row got placed
	to the left of where it was previously due to it, or one of the fields
	to its left, getting shorter
tty: support hitpointbar even when statushilites is set to 0
tty: when status condition names were abbreviated due to lack of room, they
	were inconsistent about re-expanding when more room became available
tty: when encumbrance state was abbreviated due to lack of room, there was no
	separation from preceding status field and the value would not update
	when the state changed (except for removal on change to unencumbered)
tty: when clipping was used to show a subset of the map on a small display,
	panning into a new subset while using the cursor to pick a location
	would ask the core to generate a new view of the map rather than use
	whatever was currently shown, bringing back suppressed monsters/
	objects/traps for #terrain and new hallucinatory monsters for farlook
Qt5, perhaps others: avoid "status 'reassess' before init" panic near start
	of new game (triggered from set_uasmon() if core was built with
	STATUS_HILITES enabled but current interface doesn't support that)
X11: its use of genl_status_update exposed a negative index use that could
	lead to a segfault
X11: rollback disabling of keystroke input for PICK_NONE menus (for scrolling)
X11: make use of the 'extmenu' option:  On to choose among all commands, Off
	to choose among the traditional extended command subset
X11: support menu scrolling via (^ < > |) in the extended commands menu
curses: catch up with tty to not put dolook/whatis autodescribe feedback into
	^P message recall (multi-digit count feedback was already handled)
curses: if the interface code ran out of memory, it would crash rather than
	attempt a controlled panic (though that's fairly likely to crash anyway
	if done when there's no more memory available)
curses: when getting multi-character responses from player, support <delete>
	as well as <backspace> to remove last character entered; also, return
	<escape> to core if ESC is typed when there is no input entered
curses: extend preceding <delete> support to typing of extended command names
curses: support hilite_pet and hilite_pile even when color is disabled
curses: support color hilite_status rules even if 'guicolor' is off
curses: update status if 'O' is used to add/change/remove hilite_status rules
curses: was doing a full status update for every changed field even when more
	than one field was being changed at the same time
curses: 'hitpointbar' now works even when status highlighting is disabled
curses: add 'statuslines' option (value is 2 or 3)
curses: change 'windowborders' option's value (0=Off, 1=On, or 2=Auto instead
	of 1=On, 2=Off, 3=Auto; can now be changed via 'O' during play)
curses: free allocated memory prior to exit; previous attempt at this only
	handled game-over, not saving
curses: the memory deallocation was releasing previous messages when curses
	interface reinitialized its main windows after resize or 'O' was used
	to set align_message, align_status, statuslines, or windowborders;
	using ^P before next new message gave a warning about empty menu
curses: popup window to show ^P output was removed from screen but never
	deleted; further ^P's repeated that cycle; likewise for help which
	displays an external text file
curses: preserve ^P message history across save/restore
curses: highlighting of status conditions was broken by the fix for timing out
	of temporary highlights setting off unnecessary status updates
curses: if player pressed ESC at More>> prompt to suppress remaining messages
	for the current move and then hero got another move on the same turn,
	messages and most prompts would stay suppressed during that extra move
curses: don't let MSGTYPE=hide block prompts from being shown
curses: the --More-- prompt (">>") wasn't always placed in a visible location,
	especially when window borders were displayed


Platform- and/or Interface-Specific Fixes or Features
-----------------------------------------------------
move 'perm_invent' value from flags to iflags to keep it out of save files;
	affects X11, win32, and curses (save file compatibility is preserved)
always define shell and suspend commands so that key bindings copied from one
	platform to another work even if second one disables those commands
amiga: fix missing line continuation characters in Makefile
MacOSX: add curses window port
MacOSX: add Xcode project to sys/unixNetHack.xcodeproj
MacOSX: add Xcode supporting files README.xcode and XCode.xcconfig
	containing important build info
Qt: add Qt5 specific hints file for linux and Mac OS X (Ray Chason)
Qt: enable compiling Qt5 on Windows (Ray Chason)
Qt: entering extended commands, hide non-matching ones
Qt: remember tile and font size
tty: significant optimizations for performance and per field rendering
tty: use WC2_FLUSH_STATUS to buffer changes until BL_FLUSH is received
tty: support BL_RESET in status_update to force an update to all status fields
tty: stop hitpointbar from jumping to 100% health at zero hit points
tty: try harder to prevent a disconnected terminal (SIGHUP) from running amok
	and using up all available CPU time
tty: suppress intermediate 'Count: 123' prompt and getpos autodescribe
	feedback from being included in ^P message recall
tty: ^P feedback with msg_window:full/combination/reverse containing output
	from dolook/whatis could show strange characters for DECgraphics
tty: if eight_bit_tty option is set and current symbol set specifies
	DECgraphics handling, render line-drawing characters (in nethack's
	scheme, the 4th quarter of ASCII--mostly lower case letters--with
	8th-bit forced on) instead of treating that subset as 8-bit characters
tty: enable blink attribute for status highlights (TERMLIB + !NO_TERMS config)
unix: Makefile.src and Makefile.utl inadvertently relied on a 'gnu make'
	extension when using $(VERBOSEMAKE) to reduce build-time feedback;
	replace with $(QUIETCC) which operates the same but defaults to
	verbose so doesn't use '$<' for multi-prerequisite targets unless
	specifically requested; use 'make QUIETCC=1 <target>' to get the
	3.6.1 behavior back
unix: add curses window port
unix: in nethack.sh, use 'test -f' instead of 'test -e' when checking for
	fonts.dir while running under X11
vms: data file processing and playground setup were missing post-3.4.3 files
	engrave, epitaph, and bogusmon made from corresponding *.txt
vms: add compile of isaac64.c to Makefile.src and vmsbuild.com
vms+curses: add compile support but it is known to fail to build
windows: Added ntassert() mechanism for Windows based port use
windows: heed OPTIONS=symset:default in config file if it is present
windows: add curses window port which can co-exist with tty in exe and be
	selectable in user config file via OPTIONS=windowtype:curses
windows-gui: In nethackw, there could be conflicts between menu accelerators
	and an extra choice accelerator to fix H7132.
windows-gui: recognize new BL_RESET in status_update; no change in behavior yet
windows-gui: align hpbar behavior at zero hit points with tty behavior
windows-gui: add support for status_hilites for the player condition field
	such as stone, slime, strngl, blind, deaf, stun, conf, etc.
windows-gui: a shop or vault message could appear in a popup after the
	close-window button was used when game was ending
windows-tty: Specify both width and height when creating font for width testing
windows-tty: To counter lag problems that were occuring with the Win32 console
	port, implement a console back buffer to reduce the number of calls
	made to WriteConsoleOutputXXX
windows-tty: Additional changes to xputc_core() and early_raw_print() to
	manage the cursor position correctly as that is needed to handle
	raw printing correctly
windows-tty: Added check for when we might be running off the bottom of the
	screen when handling msmsg()
windows-tty: Added runtime checks to keep cursor always within bounds
windows-tty: Fix memory leaks as reported in H5779
windows-tty: Use nhraykey by default if the player's keyboard layout is
	non-english as reported in H4216
windows-tty: We now support changing altkeyhandler in game
windows-tty: augment codepage850-to-Unicode mappings that are not displayable
	with codepage437-to-Unicode mappings that are, to help ensure that
	rogue-level characters o status line match their appearance on map
windows-tty: add support for mouse_support:0 (disabled), mouse_support:1
	(fully-functional including disabling QuickEdit on Windows console
	because QuickEdit intercepts the mouse clicks so NetHack never sees
	them), or mouse_support:2 (NetHack support on but QuickEdit left as is)
X11: implement menucolors and allow menus to obey some attributes
X11: make key translations work with menus on Linux
X11: allow mouse wheel scrolling to work in menus by default
X11: handle menu scrolling via first-/previous-/next-/last-page keys (^ < > |)
X11: remember perm_invent window geometry
X11: handle X errors via panic
X11: don't reuse perm_invent window for picking an object
X11: obey mouse_support and allow toggling it in game
X11: obey menu movement keys
X11: enable menu [cancel] button for PICK_NONE menus
X11: text popups on OSX wouldn't accept keyboard input unless the 'autofocus'
	resource was enabled; most noticeable when trying to dismiss 'things
	that are here' while walking over object piles
X11: default to using XPM format tile file and rip screen
X11: when showing graphical tombstone, would crash if file rip.xpm is missing;
	revert to text tombstone instead


General New Features
--------------------
integrate aklys feature introduced in 3.6.1 into display
status_hilite options which use comparisons may now use <= and >= in
	addition to previous < and >; in 3.6.1 the latter operated as if
	they were <= and >= but now behave as conventional less than and
	greater than; old highlight rules using them should be updated
sortloot option has been enhanced to improve object ordering; primarily,
	items of undiscovered type come out before items of discovered type
	within each class or sub-class of objects
YAFM when stumbling on an undetected monster while hallucinating
make it clear when a leprechaun dodges your attack
wizard mode #wizidentify can now select individual items for permanent
	identification and don't display the selection to permanently
	identify everything if everything is already fully identified
make mine town "orctown" variation a multiple level feature of the mines
replace #monpolycontrol command with monpolycontrol boolean option
replace #wizdebug_traveldisplay command with travel_debug boolean option
rename #wizdebug_bury command to #wizbury
life-saving now makes swallower or grabber release hero
for ^X and enlightenment, display the information in a menu rather than a
	plain text popup, so that player can go back within the text via
	'<' (menu_previous_page) and '^' (menu_first_page) menu keys;
	needed for interfaces (tty) without text popup scrollbar support;
	end of game disclosure of attributes remains single-forward-pass
for ^X, include current state of 'autopickup'
being trapped (bear trap, web, molten or solidified lava, chained to buried
	iron ball) blocks both levitation and flight (note: being stuck in a
	pit ends when either of those starts so doesn't apply)
early level traps are sometimes covered by the remains of fake players
fake player characters resist Conflict
when inside a shop, far-look now includes shop prices for items marked as
	having been seen up close
when sortloot is enabled, gems are grouped in subsets (1) unseen gems and
	glass, (2) seen but unidentified gems and glass, (3) identified gems,
	(4) identified glass, (5) unseen stones (includes unseen rocks),
	(6) seen but unidentified gray stones, (7) identified gray stones,
	and (8) seen rocks (IDed/unIDed not applicable)
in wizard mode, ^T can be preceded by 'm' prefix in order to test teleporting
	without having wizard mode override various restrictions
include isaac64 for pseudo random number generation
core prng and display prng use different contexts
when healing magic other than unicorn horn cures blindness, cure deafness too
do less status updating when the 'time' option is on
slightly more thorough feedback when shop damage is repaired in hero's presence
curses: status display substantially revamped for both horizontal (via
	'align_status:bottom' or 'top') and vertical (via 'align_status:left'
	or 'right'); 3-line horizontal layout (via 'statuslines:3') added
curses: support msg_window:full; default is still msg_window:reversed
tty: support statuslines:3 and dynamically switching between 2 and 3 with 'O'
	(requires a display with at least 25 lines or that CLIPPING be enabled)


NetHack Community Patches (or Variation) Included
-------------------------------------------------
curses: the community patch for an optional curses window-port has been
	adopted.  The curses window-port evolved from work originally done
	by Karl Garrison, and has been in use in several NetHack variants
	and on nethack.alt.org and on www.hardfought.org/nethack/ for a
	while.  It is available and tested for 3.6.2 for Windows console
	with PDCurses layered underneath, and for Mac OSX and Unix (using
	ncurses as the layer underneath).  It may also work for MS-DOS with
	PDCurses, but that has not been tested.


Code Cleanup and Reorganization
-------------------------------
generated source file monstr.c is no longer used