Commit Graph
72 Commits
Author SHA1 Message Date
nhmall 15a017c030 fix undead corpses being edible now
In 3.6.x, zombie corpses were always aged an extra 100:

NetHack/src/mon.c

Line 375 in 23d331a

 obj->age -= 100; /* this is an *OLD* corpse */
in 5.0.x, zombie corpses are always aged TAINT_AGE, which is only 50:

NetHack/src/mon.c

Line 648 in 97a6c13

 obj->age -= (TAINT_AGE + 1); /* this is an *OLD* corpse */

This is the result of commit 408321b.
The accompanying comment states that the purpose of that patch was meant to
just replace hard-coded numbers with symbolic values, but the commit set
two differing numeric values to the same symbol name, thus causing the
regression reported in:

https://github.com/NetHack/NetHack/issues/1664

Revert the values to match those of 3.6, and add the additional symbolic value.

Closes #1664
2026-08-24 21:56:18 -04:00
nhmall 9b4a8dfb05 mon interaction with terrain was postponed
Fix #576

Reported initially by @copperwater for polymorphed monsters:
"observe how the [polymorphed-monster] hovers placidly above the water for
several turns like Wile E. Coyote before it gets a move, realizes it's
above water, and drowns. Ditto for lava."

A comment in the GitHub issue thread by @Tomsod pointed out that a
revived corpse could do the same.

This should set things up for other terrain fallout if discovered or
implemented in the future.
   - consume an additional bit in enum mon_terrain_effects (hack.h)
   - include the additional bit in TERRAIN_FALLOUT_MASK (monst.h)
   - add detection to maybe_set_terrain_effects (mon.c)
   - add action to terrain_effects (mon.c)

Implemented by stealing some upper unused mstate bits to avoid
invalidating existing save and bones.
2026-08-23 18:51:13 -04:00
Pasi Kallinen f913cb3704 X11: support tab-separated menu columns 2026-08-22 10:59:12 +03:00
Pasi Kallinen 94336e6b63 fixes update 2026-08-19 09:47:11 +03:00
Pasi Kallinen d44b6385d7 Don't complain about MAXPLAYERS with unknown command line param
Unix command line handling treated an unknown command line parameter
as a maximum number of allowed concurrent players.  This emitted
a complaint about expected MAXPLAYERS, and as it can be now set
in sysconf, remove this - most likely unused - functionality.
2026-08-18 19:44:48 +03:00
nhmall f6a592b7f9 glob nutrition should match owt reduction
reported directly to devteam as an impossible() call
within eaten_stat()

(internal tracking number 3216)
2026-08-18 10:24:35 -04:00
Pasi Kallinen 9de03944e8 fixes update 2026-08-18 13:42:24 +03:00
nhmall ef5beb917a fixes5-0-1.txt catch-up 2026-08-17 21:25:34 -04:00
nhmall d8ea2087bc fixes5-0-1.txt update for prior commit 2026-08-16 10:35:31 -04:00
Pasi Kallinen 0a6c355678 fixes update 2026-08-14 11:08:26 +03:00
Pasi Kallinen b56189cfcd X11: toggle off perm_invent if the window is closed manually 2026-08-13 11:16:45 +03:00
Pasi Kallinen a64c7c64e5 X11: Allow scrolling menus with PageUp/PageDown/Home/End
Change the menu_key() translation table command so it accepts
a parameter, and we can pass a (default) menu control key to it.
2026-08-12 12:37:37 +03:00
Pasi Kallinen f019d03a2f X11: fix menu windows being taller than the screen
Menu windows with lots of entries (such as #optionsfull) were taller
than the screen, making them awkward to use.

The widget needs to be realized before we can get the size.
Also, we need to set the size of the parent popup, not the
acting widget.
2026-08-11 11:46:24 +03:00
Pasi Kallinen e9a9f63b4f fixes-5-0-1.txt update 2026-08-10 09:36:40 +03:00
nhmall a8a13bed81 fixes5-0-1.txt update for previous commit 2026-07-31 15:07:53 -04:00
nhmall 193da97bac fixes5-0-1.txt catch-up 2026-07-31 06:49:39 -04:00
PatR a3a587dcf3 fix #K4498 - stethoscope vs double trouble Wizard
When the Wizard is diguised as some other monster, applying a stethscope
described him as "that <foo> is really a <foo>".
2026-07-25 13:33:39 -07:00
nhmall d6da7e9819 fixes entry for pull request #1632 2026-07-23 09:46:03 -04:00
nhmall 05d1ed365f follow-up fixes5-0-1.txt 2026-07-08 07:38:37 -04:00
nhmall 00ad0e6f76 fixes5-0-1.txt entry for pull request #1620 2026-07-08 07:24:16 -04:00
nhmall 81ac4deb1e follow-up: fixes5-0-1.txt update 2026-07-06 11:04:13 -04:00
nhmall 749646e8d3 follow-up: fix a paste error 2026-07-06 08:17:38 -04:00
nhmall f5f498eb9e fixes5-0-1.txt entry for pull request #1617 2026-07-06 07:58:16 -04:00
nhmall ece0c3ce3c fixes5-0-1.txt entries for three pull requests 2026-07-03 08:45:04 -04:00
nhmall edb99dcf8f fixes5-0-1.txt catch-up; also fix some whitespace 2026-07-03 08:30:40 -04:00
nhkeni 7c694ad785 Remove deprecated option --version:paste
This should have been deleted before the 5.0.0 release.
2026-06-20 19:43:26 -04:00
nhkeni f5724ff9e6 fixes entry for my previous commit 2026-06-20 17:57:48 -04:00
G. Branden Robinson d7ce2410b0 fixes5-0-1.txt update 2026-06-20 15:31:53 -04:00
nhmall 43ae611d64 fixes5-0-1.txt entries following pull request 2026-06-19 10:20:50 -04:00
PatR dfd6e0739f fix issue #1580 - item action for leash in use
Issue reported by JodiJodington:  the item action for a leash didn't
distringuish a leash that is already in use from one that isn't.

Fixes 1580
2026-06-12 01:11:43 -07:00
nhmall 6c11cac0f7 fixes5-0-1.txt entry for pull request #1581 2026-06-11 14:09:25 -04:00
nhmall e5a3ec9219 follow-up: whitespace bit 2026-06-09 22:50:33 -04:00
nhmall 9d44b1dbce follow-up: fixes5-0-1.txt 2026-06-09 22:49:36 -04:00
nhmall e34238d2bc MS-DOS: several fixes for the tiled map 2026-06-09 16:48:02 -04:00
PatR c8b15fe854 pull request #1557 - erinyes level adjustments
Pull request from youbo0: when hero's alignment gets low enough, the
adjusted experience level for erinyes effetively dropped instead of
increased.  It was being capped at 50 which has a special meaning for
monsters.

Change the level limit to 49 which is as high as ordinary monsters go.

Does not affect saved data.

Fixes #1557
2026-06-09 13:00:22 -07:00
Alex Smith b309392b5a Fixes entry for the recent bugfix 2026-06-08 04:42:44 +01:00
Alex Smith 738aa5c076 Make monsters not scared of the Sokoban rolling boulder traps
They aren't initially loaded with boulders, thus aren't dangerous.

This is particularly relevant for pets, who would otherwise be very
reluctant to follow their owners up to the level above.
2026-06-08 04:41:31 +01:00
nhmall 498db90437 follow-up: fixes5-0-1.txt entry 2026-06-06 12:29:39 -04:00
nhmall 93e7928a6f follow-up: fixes5-0-1.txt update 2026-06-04 15:44:41 -04:00
nhmall 006867cf0d catch-up entry for fixes5-0-1.txt 2026-06-03 19:48:46 -04:00
Pasi Kallinen eb4d098717 X11: Obey timed_delay
I noticed a strange thing where the X11 windowport didn't show the tethered
thrown aklys animation correctly.  Interestingly, other stuff, such as zapped
wands did show the path.  I didn't bother trying to figure out what the core
was doing differently, as the animation worked in all the other windowports,
so instead fix the issue in X11, so it behaves the same as all the others.

The issue seems to be that the event loop exited on any(?) event, instead
of our specific timed event.  So, create our event with a magic id number,
and exit only when we encounter that.

Also: Obey the timed_delay option, and change the delay from 30ms to 50ms,
like in other windowports.
2026-06-03 23:06:30 +03:00
nhmall 29c300b4e0 stale engraving marker still showing at prompt 2026-06-01 20:44:17 -04:00
nhmall 055caaffbf revisit shop_keeper() readiness
During a restore from a savefiles is not the only
time that levels are processed by getlev() in NetHack.
They are read back in as the hero moves up and down
between levels and dungeons.

The previous fix checked for program_state.beyond_savefile_load,
but once set, that remains static through level changes.

It would be better to check the status of the level
being read, because those operations do placements as well.

Add the following:
    struct levelstatus level_status;
    level_status.making   - in the midst of makelevel processing
    level_status.loading  - in the midst of loading a level via getlev()
    level_status.ready    - the level is fully ready

    (all 3 of the above status settings are mutually exclusive)

    level_status.shkready - the level processing is far enough
                            along to allow shop keeper tests and actions

This also relocates the find_lev_obj() call in getlev() down several
lines, so that it falls after any set_residency() calls, so that it
has a better chance of carrying out what it was intending to do with
the shop_keeper() checks made by its subfunctions.
2026-05-31 13:26:34 -04:00
nhmall b6b35a8d0f yet-another fixes5-0-1.txt update 2026-05-30 11:48:31 -04:00
nhmall 13ff430b14 Alter the fixes5-0-1.txt entry to match code 2026-05-30 11:45:20 -04:00
nhmall bb407a84da follow-up: fixes5-0-1.txt entry re:previous commit 2026-05-30 11:38:38 -04:00
nhmall 8b3eb77305 cherry-pick pr #1548 52e0404 glyphname indexes 2026-05-25 14:30:02 -04:00
nhmall 752af5b435 add fixes5-0-1.txt entry for pr #1547
fix off-by-one in glyph_is_normal_piletop_obj
2026-05-25 12:19:47 -04:00
nhmall 2680476825 fixes entry for the big-endian fix 2026-05-23 21:37:56 -04:00
nhmall ff4abc9b8c 3rd time is the charm3rd time is the charm3rd time is the charm 2026-05-23 20:05:54 -04:00