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
|