Compare commits

772 Commits
Author SHA1 Message Date
karafruit f981f44949 Merge branch 'NetHack-5.0' into twitch-interact 2026-09-22 08:36:33 -07:00
Pasi Kallinen c94fd5225b Vault guard shouldn't be heard from too far away
When you were asked for a name and teleported out of the vault without
any gold on you, the vault guard says "Well, begone" - which could be
heard from anywhere on the level.

Limit that verbalization to 10 tiles away.
2026-09-20 17:30:07 +03:00
Pasi Kallinen f11a4b168b More strict checking of dishonourable attacks
Move the caitiff check into thitmonst, the code responsible
for object hitting a monster, intead of checking the caitiff
in multiple places before calling that.

Previously there were some cases where caitiff was not checked,
eg. samurai could fire arrows at a peaceful monster without
the dishonourable behaviour check.

Now you will get the check even if you miss with the projectile.

This may need to be adjusted for throwing beneficial potions
at monsters...
2026-09-19 15:07:43 +03:00
Crissman Loomis c63ee6ac7e Account for pet hunger while away from a level 2026-09-14 15:57:14 +09:00
Crissman Loomis aec687db2c Qt: use idClicked(); buttonClicked(int) is gone in Qt 6
Closes #1670
2026-09-11 10:06:18 -04:00
Crissman Loomis 55769ca9f0 fix Qt use-after-free reading the player name
Closes #1673
2026-09-11 10:02:18 -04:00
Crissman Loomis 1106456195 Preserve inactive level clocks on save pr #1677
Close #1677
2026-09-11 09:37:45 -04:00
nhmall 02dda03f56 update tested versions of Visual Studio 2026-09-10 2026-09-10 08:09:09 -04:00
nhmall fc75a55d86 fix "killed by a died"
This is a follow-up to commit 9114a33 that was intended to fix a "killed by a died" situation.
In that commit, the generic case could be encountered with variable str set to "explosion",
but that never got copied to svk.killer.name, and svk.killer.name remained set to "died"
during testing.

svk.killer.format = KILLED_BY_AN; is done whether the generic case, or not.

Close #1676
2026-09-09 21:15:43 -04:00
nhmall 017fbcf510 follow-up 2026-09-09 20:00:58 -04:00
nhmall 3a496219f3 macOS generated tile build fix 2026-09-09 19:55:33 -04:00
nhmall 2d3aa59065 X11: support BMP, GIF and PNG tiles pr #1666
"This plugs into the same code that provides support for BMP and GIF tiles for MS-DOS, and also populates the stub to read PNG tiles.
PNG is a compile-time option, and depends on libpng."

pull request #1666 by chasonr
2026-09-09 11:25:38 -04:00
nhmall 96c564f09d Merge branch 'x11-bmp-gif' of https://github.com/chasonr/NetHack into NetHack-5.0 2026-09-09 11:23:34 -04:00
nhmall 05d2e88950 style uppercase tidbit 2026-09-09 11:21:30 -04:00
nhmall 2c9600713d X11: several bug fixes pr #1668 by chasonr 2026-09-09 11:17:42 -04:00
nhmall 4efcce2995 Merge branch 'X11-bug-fixes' of https://github.com/chasonr/NetHack into NetHack-5.0 2026-09-09 11:12:38 -04:00
nhmall 0d64c3f1fd attempt to fix a reported regression in consoletty.c 2026-09-08 09:21:29 -04:00
nhmall 50b868f67a remove obsolete VISION_TABLES reference
VISION_TABLES removed as part of commit 3ffd330c31.
2026-09-06 13:52:20 -04:00
Pasi Kallinen 8695c4959c Add some wishing aliases
Things people playing on NAO have wished for which should
give a correct item
2026-09-05 15:10:05 +03:00
nhmall 04834a9316 follow-up: Makefile.top was left out of previous commit 2026-09-01 13:48:47 -04:00
nhmall cc4768f1c9 adjust some Makefile dependencies
Reported by @benknoble in https://github.com/NetHack/NetHack/issues/1669

Some undeclared dependencies could arise when building with make --shuffle

This attempts to resolve those.
2026-09-01 13:38:05 -04:00
Ray Chason 2f42bd7e27 Display tabs in the text window
Actually a menu, but menu windows convert to text if only displaying
text.
2026-08-30 19:03:45 -04:00
Ray Chason 393130a629 Handle tabs in the message window 2026-08-30 17:51:10 -04:00
Ray Chason 98815bc739 Tabify the #wizcustom menu 2026-08-30 16:44:44 -04:00
Ray Chason c88403f4ec Correct display of tabified PICK_NONE menu 2026-08-30 16:44:26 -04:00
Ray Chason 564affea88 Remove limit in size of widget_table
It is difficult, but possible, to exceed 1024 widgets. One way is to
set a very large Unicode symbol set, and then use #wizcustom. As there
is no limit to how many objects can occupy a square, this limit is a
possible hazard even to a normal game.
2026-08-30 15:52:15 -04:00
nhmall 1b752f0e11 follow-up 2026-08-30 10:29:53 -04:00
nhmall 9c8b8249eb Linux build doc and a comment update 2026-08-30 09:59:10 -04:00
nhmall 845be15439 follow-up: stale comment removed altogether
The external reference was moved out of files.c elsewhere,
so the comment was no longer accurate.
2026-08-28 11:19:00 -04:00
nhmall 988eaa44b4 relocate declaration of sounddir
It shouldn't have been located inside an #ifdef USER_SOUNDS block.
2026-08-28 10:46:50 -04:00
Ray Chason d9194cb4df Make hero visible at start
Scroll to make the hero visible when starting and when the main window
is resized.
2026-08-27 18:10:26 -04:00
nhmall ebe14f87d9 corpse age comment cleanup 2026-08-26 10:22:46 -04:00
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
Ray Chason f3e0dc49b8 Adjust screen height to allow for a task bar 2026-08-24 12:02:35 -04:00
Ray Chason a575fccf08 Add PNG support 2026-08-24 12:02:35 -04:00
Ray Chason cc47605531 Add BMP and GIF support 2026-08-24 12:02:35 -04:00
nhmall 97a6c131a9 Merge branch 'menu-columns' of https://github.com/chasonr/NetHack into NetHack-5.0 2026-08-24 07:28:33 -04:00
nhmall b67553ccc7 follow-up 2026-08-23 19:33:39 -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
Ray Chason b61aef834e Set menu font to proportional 2026-08-22 20:46:13 -04:00
Ray Chason 7840d75365 X11: set menu font to proportional
Menus that needed to be tabified now are.
2026-08-22 20:43:46 -04:00
Pasi Kallinen f913cb3704 X11: support tab-separated menu columns 2026-08-22 10:59:12 +03:00
Ray Chason db32a639a7 Extend last column to end of line
If a line in the menu has fewer columns than the others, the last one
is deemed to extend to the right margin, and does not count toward the
maximum width of that column.

Also, revert the change to NetHack.font_menu.
2026-08-22 10:57:25 +03:00
Ray Chason cadde6d317 Use text window for display_file
The text window is assumed to use a monospaced font.
2026-08-22 10:57:25 +03:00
Ray Chason 84bf23640c Line up selectable items 2026-08-22 10:57:24 +03:00
Ray Chason ffb08d3be6 Don't set columns for rows without tabs 2026-08-22 10:57:24 +03:00
Ray Chason bc14bd7f30 Adjust extra menu width 2026-08-22 10:57:24 +03:00
Ray Chason ae8b4bf12a Add support for tabbed menu columns 2026-08-22 10:57:24 +03:00
nhmall 44b04064be static analyzer: use of uninitialized value 'origarg'
../sys/unix/unixmain.c: In function ‘process_options’:
  ../sys/unix/unixmain.c:458:9: warning: use of uninitialized value ‘origarg’ [CWE-457] [-Wanalyzer-use-of-uninitialized-value]
    458 |         config_error_add("Unknown option: %.60s", origarg);
        |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-08-21 09:36:17 -04:00
Ray Chason 94834df5d1 Revise the column width calculation
The last column in a line continues to the end of the line, and may
overhang any subsequent columns in other lines.
2026-08-21 08:19:04 -04:00
0xb1aded c99b485c78 fix: init color256 value to prevent color flickering 2026-08-21 19:54:05 +08:00
Ray Chason b08c4f92b2 Tabify more menus
* Status hilites
* Disclose option
* Symbol set selection
2026-08-20 08:14:13 -04:00
Ray Chason b52ea09e25 Tabify the extended command list 2026-08-20 07:28:01 -04:00
Ray Chason c5181b9cb8 Improve support for tabbed columns
* Set the menu font to proportional
* Do not consider the last column of a line when calculating maximum
  column widths
* Use U+200A HAIR SPACE for finer column padding
* Track errors in column padding and adjust subsequent columns so that
  these errors do not accumulate across a row
2026-08-20 07:25:36 -04:00
nhmall 540c0549d8 follow-up: MSYS2 build fix 2026-08-19 08:00:15 -04:00
nhmall 6950543bb9 build fix under MSYS2
../src/pline.c: In function 'execplinehandler':
../src/pline.c:678:15: error: implicit declaration of function '_spawnv' [-Wimplicit-function-declaration]
  678 |         ret = _spawnv(_P_NOWAIT, sysopt.msghandler, args);
      |               ^~~~~~~
../src/pline.c:678:23: error: '_P_NOWAIT' undeclared (first use in this function); did you mean 'MM_NOWAIT'?
  678 |         ret = _spawnv(_P_NOWAIT, sysopt.msghandler, args);
      |                       ^~~~~~~~~
      |                       MM_NOWAIT
../src/pline.c:678:23: note: each undeclared identifier is reported only once for each function it appears in
make: *** [GNUmakefile:1376: o/nethack/pline.o] Error 1
2026-08-19 07:36:21 -04:00
nhmall 4c4867d586 map_mode may appear more than once without a gripe 2026-08-19 07:16:57 -04:00
nhmall a2e805aee2 CI: fontconfig 2026-08-19 06:43:27 -04:00
nhmall dd94830c10 CI: add libxft-dev 2026-08-19 06:39:36 -04:00
nhmall f61709ab36 update CI Linux versions 2026-08-19 06:07:11 -04:00
Pasi Kallinen 94336e6b63 fixes update 2026-08-19 09:47:11 +03:00
Ray Chason 6dc9ac1c31 Adjust font hights so underscores are not cut off 2026-08-19 09:37:41 +03:00
Ray Chason b8dc070d07 Fix right side of border rectangle 2026-08-19 09:37:41 +03:00
Ray Chason 392142d322 For menu items, set up pixmap and then manage
The widget is created with a label but not a pixmap, and then a pixmap
is set up for display. If the label is already realized and managed, it
will not resize when the pixmap is set up. This causes problems when
the inventory window is updated: unlike other menus, the parent Form
widget is already realized. The fix is to create the item widget in an
unmanaged state (XtCreateWidget), set up the pixmap (X11_wrap_widget
and X11_set_attrs), and then manage it (XtManageChild).
2026-08-19 09:37:41 +03:00
Ray Chason 9179d5d960 Adjustments for MacOS compile
per comments by Michael Allison
2026-08-19 09:37:41 +03:00
Ray Chason e3170cdedc Provide more space between TTY-style status fields 2026-08-19 09:37:41 +03:00
Ray Chason 3f8e704231 More ifdefs; use Xft font to split messages 2026-08-19 09:37:41 +03:00
Ray Chason cada45a786 Apply appropriate #ifdefs and static declarations 2026-08-19 09:37:41 +03:00
Ray Chason 5883fe4abb Declutter the rendering code a bit 2026-08-19 09:37:41 +03:00
Ray Chason 7e39b3faf1 Note Xft support in option window 2026-08-19 09:37:41 +03:00
Ray Chason faba01dd25 Dismiss the text window on key press 2026-08-19 09:37:41 +03:00
Ray Chason 6e80039c49 Convert the tombstone window to Xft 2026-08-19 09:37:41 +03:00
Ray Chason 31f5ca334d Convert the text window to Xft 2026-08-19 09:37:41 +03:00
Ray Chason cfe67ecc62 Convert dialogs to Xft 2026-08-19 09:37:41 +03:00
Ray Chason 8ae58f9347 Convert the one line message prompt to Xft 2026-08-19 09:37:41 +03:00
Ray Chason 7c9cf20d1d Convert fancy status and menus to Xft 2026-08-19 09:37:41 +03:00
Ray Chason 9e57c85b16 Condition should be USE_XFT, not USE_XPM 2026-08-19 09:37:40 +03:00
Ray Chason 737b3ac89a Implement italic fonts 2026-08-19 09:37:40 +03:00
Ray Chason 9d1aac189e Convert TTY status to Xft 2026-08-19 09:37:40 +03:00
Ray Chason e53b76b0e5 Convert message window to use Xft 2026-08-19 09:37:40 +03:00
Ray Chason fbc586bf44 Convert map to use Xft 2026-08-19 09:37:40 +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
nhmall 4474d3cb2a pcmain.c: remove added second early_init() call
early_init() was already being called at pcmain.c line 70,
so the recently added call at line 132 was problematic
because it cleared program_state values that had been
intentionally set since the call at line 70.
2026-08-18 07:54:46 -04:00
Pasi Kallinen 9de03944e8 fixes update 2026-08-18 13:42:24 +03:00
Ray Chason 23315cf857 Combine XLoadFont and XQueryFont calls
The separate calls crash if the font does not exist; the combined call
returns NULL, as the caller expects.

Resolves #1508 and possibly #569.
2026-08-18 13:40:35 +03:00
nhmall ef5beb917a fixes5-0-1.txt catch-up 2026-08-17 21:25:34 -04:00
k21971 7c13477d33 Fix: don't leak in_checkpoint on a failed level write.
save_currentstate() increments program_state.in_checkpoint and then
returns early without decrementing it when currentlevel_rewrite()
fails (full disk, quota, unwritable directory). The guard at the top
of the function suppresses every later checkpoint for the rest of the
game, leaving recover with nothing newer than the last checkpoint that
did get written, and nothing says so.
2026-08-18 00:30:41 +00:00
k21971 370c282240 Fix: first INSURANCE checkpoint is never written.
savestateinlock() returns early unless
program_state.something_worth_saving is set, but both call sites that
are meant to lay down the initial checkpoint run before that flag is
set: newgame() calls save_currentstate() two lines early, and
dorecover() calls savestateinlock() 73 lines before it, ahead of the
pass that writes out the level files.

Both calls are therefore no-ops, and the <uid><plname>.0 lock file
holds nothing but the pid written by getlock() until the hero first
changes dungeon level. A game that dies without a chance to save
during that window (SIGKILL, OOM killer, watchdog, host reboot)
cannot be rebuilt: recover has no save file name, no current level
number and no game state, and reports "Checkpointing was not in
effect", which is true of the outcome but misleading about the cause.
The window covers the whole of a long stay on one level, and in
particular the entire period right after a restore.

Set the flag before the call in newgame(). In dorecover(), drop the
ineffective call and checkpoint once the restore is complete instead;
at the original spot no level file for this session has been written
yet, so a checkpoint there would name a current level and save file
that are not on disk. The new call goes after program_state.restoring
is cleared, so that stairs and traps are written with the same
relative dlevel encoding a normal save uses, and it is
save_currentstate() rather than savestateinlock() so that
in_checkpoint is set while savegamestate() writes u.ustuck_mid and
u.usteed_mid.

This arrived with the something_worth_saving guard; 3.4.3, which has
no guard, is unaffected. Looks like this issue has been around since
version 3.6.0.
2026-08-18 00:30:23 +00:00
nhmall d8ea2087bc fixes5-0-1.txt update for prior commit 2026-08-16 10:35:31 -04:00
nhmall f11b65c680 don't call it "your pet" until after it is tamed
Reported directly to devteam, the code was using "Your little dog
devours the tripe ration" during the taming process, prior to the
pet becoming yours.
2026-08-16 10:31:31 -04:00
nhw_cron 845603e2d8 This is cron-daily v1-May-7-2026. 000files updated: Files 2026-08-16 07:47:27 -04:00
nhmall 9cf2b1bac9 early arg support for older platforms
The startup had fallen behind NetHack 5.0 startup for other platforms,
and lacked support for some of the early command line options.

Following this, if PC_EARLY_OPTIONS is defined in pcconf.h, the
port will support those options, such as --version, --showpaths,
--dumpenums, etc.)

Currently, MSDOS #defines's PC_EARLY_OPTIONS, but AMIGA, ATARI,
and MAC68K do not.
2026-08-16 07:09:22 -04:00
Pasi Kallinen 0a6c355678 fixes update 2026-08-14 11:08:26 +03:00
Pasi Kallinen 4652cd3ae7 Remove extra array indices 2026-08-14 11:08:26 +03:00
Ray Chason 0454838d13 Arrange labels more compactly 2026-08-14 11:08:26 +03:00
Ray Chason ddbea3b727 Implement remaining status labels 2026-08-14 11:08:26 +03:00
Ray Chason fbfac21aac Fix menu group accelerators
If there are, say, two or more potions in the menu, and multiple
selections are allowed, then '!' should select all potions. Such keys
were selecting only the first matching item.
2026-08-14 11:08:26 +03:00
Ray Chason 2d261f1398 Implement all text attributes for menus 2026-08-14 11:08:26 +03:00
Ray Chason 84ff4f8b7e Fix a null dereference when freeing fonts 2026-08-14 11:08:26 +03:00
Ray Chason 3398d250aa Implement blink on fancy status
and fix a bug with condition labels on the TTY status
2026-08-14 11:08:26 +03:00
Ray Chason 24d9c19378 Parenthesize the HL_ATTCLR_* symbols 2026-08-14 11:08:26 +03:00
Ray Chason 514669823b Implement bold, dim, italic, inverse, underline
Didn't get everything the last time.
2026-08-14 11:08:26 +03:00
Ray Chason 8d7d609a56 Implement attributes: bold, dim, italic, inverse
Track highlighting of recent changes separately from inverse, and
display highlight plus inverse as bordered text
2026-08-14 11:08:25 +03:00
Ray Chason 0ee7eef3ef Implement a hit point bar 2026-08-14 11:08:25 +03:00
Ray Chason 6043d189e1 Define wrapper for Label widgets
Renders to a Pixmap and then sets the Pixmap. This in itself does not
change the appearance, but provides a means to do percentage bars,
italics and more.
2026-08-14 11:08:25 +03:00
Ray Chason f7bb4eaae8 Fix timeout of fancy status colors
This was trying to retrieve the foreground color of the form created
in create_value(). Forms don't have colors, and so this was failing,
and update_color() didn't update the color.
2026-08-14 11:08:25 +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
nhmall feaa9ed334 update tested versions of Visual Studio 2026-08-11 2026-08-11 14:15:24 -04: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
Ray Chason c50f9d8176 Draw the hitpoint bar in the hitpoint colors 2026-08-10 09:28:04 +03:00
Ray Chason b9bf823100 Implement a hit point bar 2026-08-10 09:28:04 +03:00
Ray Chason ac169e7100 Clean up, and block out with STATUS_HILITES 2026-08-10 09:28:04 +03:00
Ray Chason ba2c99f28c Remove old code 2026-08-10 09:28:04 +03:00
Ray Chason b763944fb4 Implement three line status 2026-08-10 09:28:04 +03:00
Ray Chason 7521e7120a Implement blink 2026-08-10 09:28:04 +03:00
Ray Chason 8137f6cf3d Remove some debug code 2026-08-10 09:28:03 +03:00
Ray Chason 0f39437315 Implement underline and italic 2026-08-10 09:28:03 +03:00
Ray Chason a7eb50fb36 Query font for status window height 2026-08-10 09:28:03 +03:00
Ray Chason 647fd71a2d Implement bold and dim attributes 2026-08-10 09:28:03 +03:00
Ray Chason 5dd1673678 Implement colors 2026-08-10 09:28:03 +03:00
Ray Chason 725bb3d05f Display gold symbol as Unicode if so configured
Some Unicode bits from winmap.c are moved to winX.c, so that winstat.c
can also use them.
2026-08-10 09:28:03 +03:00
Ray Chason c2b4ee53e5 Begin reimplemented TTY-style status 2026-08-10 09:28:03 +03:00
nhmall cd493962b1 don't catch thrown objects while asleep
Reported directly to devteam.
2026-08-07 08:46:53 -04:00
nhmall 411c8becb9 follow-up
scope of cmdstr
2026-08-06 10:35:46 -04:00
nhmall c3ce341434 Re: "Key binding failed?!--More--"; Strcat to an empty character buffer, causing garbage
This is intended to resolve GitHub Issue #1650, which I was unable to directly reproduce
on my test system.

This fix assumes that the reported issue was related to cmdstr[BUFSZ] buffer not
getting initialized, thus containing random memory values.
2026-08-06 10:22:24 -04:00
nhmall 15cfe90d62 follow-up: build with Qt6 support on Linux with Qt 6.1
1d3178a quieted the g++ build, but made the warnings even
worse with a clang build.

The addition of the -Wno-sfinae-incomplete caused an unrecognized
option warning using recent clang.

Recent clang build with Qt6.1 also caused several warnings
during the processing of the Qt6.1 header files related to
c++26-extensions.

This adds (under Linux) -Wnoc++-26-extensions to the clang++
command line to quiet those warnings and restricts the
-Wno-sfinae-incomplete command line option to the g++ build.
2026-08-06 10:05:27 -04:00
Ray Chason e0ecf0e5f2 Fix highlighting in 16 color text map
vga_redrawmap did not have the inverse flag available. Provide it.
2026-08-04 16:05:27 -04:00
Ray Chason 3e800b90d3 Support pet and tile decals in 16 color mode 2026-08-04 15:55:36 -04:00
Ray Chason 9d5184562e More decal support for VESA
* Support decals in overview mode
* Draw decals when redrawing the map
2026-08-04 09:38:38 -04:00
Ray Chason 85bb8c1fbc Simplify the 24-bit case 2026-08-03 22:20:18 -04:00
Ray Chason 0c044e9c90 Add hilite flags 2026-08-03 22:12:32 -04:00
Ray Chason bd68058327 Extend decal support to all VESA modes 2026-08-03 22:12:14 -04:00
nhmall a8a13bed81 fixes5-0-1.txt update for previous commit 2026-07-31 15:07:53 -04:00
nhmall 29cb8b7d9a Windows: group accelerator and menu item collision
In the event that there is a collision between a menu group accelerator
and an individual menu item's accelerator, disregard the group
accelerator.

'$' is the only known collision in NetHack 5.0 presently.

Close #805
2026-07-31 14:53:19 -04:00
nhmall 9447bba227 Windows: don't revert -D on command line
Reported by @youbo0 in GitHub issue #1616

This issue text stated:
"To enter wizard mode, I have a shortcut with -D -u wizard as suggested by
the wiki for Windows players. However, the name is now overridden by a name
in .nethackrc since 5.0, resulting in me not actually entering wizard mode
due to having the wrong name despite using -u wizard. In the previous
version, -u wizard was applying properly regardless."

Closes #1616
2026-07-31 08:59:20 -04:00
nhmall 193da97bac fixes5-0-1.txt catch-up 2026-07-31 06:49:39 -04:00
nhmall 05733d28f4 food_disappears is missing a tin check #1648
Reported in GitHub issue #1648 by @janne-hmp
2026-07-31 06:25:58 -04:00
nhmall 404e949e95 one more follow-up 2026-07-30 22:35:47 -04:00
nhmall 1e749c28ce follow-up
adjust the mon_offmap(mon) macro to test any of the bits that
constitute being off the map, while ignoring some of the other bits
that do not.
2026-07-30 22:30:34 -04:00
nhmall 59080106b9 include clearing of MON_ENDGAME_FREE, MON_ENDGAME_MIGR bits in place_monster
Issue reported by @ars3niy

Fix #1647
2026-07-30 21:58:42 -04:00
nhw_cron 5f1183d1ef This is cron-daily v1-May-7-2026. 000files updated: Files 2026-07-30 08:15:08 -04:00
nhmall ff87463e47 initial hilite_pet and hilite_pile msdos tiles
This is an initial attempt at adding support for hilite_pet and
hilite_pile to the msdos tile implementation, using the new
decal.txt tiles.

This initial attempt only supports a 16-bit vesa mode.

Other vesa modes and vga have not been done as of yet.
Hopefully, someone more familiar with vesa might contribute
improvements and support of the other modes at some point.
2026-07-29 20:48:44 -04:00
nhmall de842ec483 add a set of decals to stock tileset
win/share/decals.txt contains (initially) a decal_delimiter tile,
a decal_pet tile, and a decal_pile tile.
The latter two can be used for hilite_pet and hilite_pile implementations
that don't have something in place already. The implementation would
just need to apply (merge) the non-background decal pixels over a
regular tile.

The special decal_delimiter tile can be used to confirm the presence
of the delimiter tiles in the tileset and mark the end of the regular tiles,
and the start of the decal tiles.
   row 1 contains the background color whose pixels should be
   ignored when applying a decal to a tile.
   row 2 contains a row of pixels colored (0, 0, 0).
   row 3 contains a row of pixels colored pure green (0, 255, 0).
   row 3 contains a row of pixels colored pure blue  (0, 0, 255).
2026-07-29 20:47:50 -04:00
nhmall 1d3178a199 build with Qt6 support on Linux with Qt 6.1 2026-07-27 16:27:20 -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 812a9f1435 Cross-compiling doc bit 2026-07-24 08:36:39 -04:00
nhmall 86cb47dd6b address a warning in cmd.c
cmd.c: In function ‘dokeylist’:
cmd.c:2961:23: warning: ‘]’ directive writing 1 byte into a region of size between 0 and 255 [-Wformat-overflow=]
 2961 |     Sprintf(buf2, "[%s]", key2txt(key, buf));
      |                       ^
2026-07-23 10:01:55 -04:00
nhmall d6da7e9819 fixes entry for pull request #1632 2026-07-23 09:46:03 -04:00
nhmall d428fb6708 Merge branch 'msdos-config' of https://github.com/chasonr/NetHack into NetHack-5.0 2026-07-23 09:36:48 -04:00
nhmall 1a4cdff17f update tested versions of Visual Studio 2026-07-23 2026-07-23 09:34:33 -04:00
Ingo Paschke 3b05012624 sfstruct: buffered stdio writes on amiga and atari st
Enable USE_BUFFERING for the structlevel savefile write path on AMIGA
and TOS via a new SFSTRUCT_BUFFERING config define, with a 16 KB
setvbuf on the fdopen'd write stream so many small bwrite()s coalesce
into few dos.library Write() packets.  Leaves mread() unbuffered.

Mainline UNIX/WIN32 are unchanged (setvbuf is gated on the new define);
MAC68K is not enabled, avoiding fdopen()/fclose() on its remapped
non-libc file handles.
2026-07-23 09:01:57 -04:00
nhmall c2a3321684 follow-up bit 2026-07-21 12:13:17 -04:00
nhmall eb13f4de6d LUA version checking in nhl_init()
Use LUA_VERSION_NUM, not LUA_VERSION_RELEASE_NUM, for the check.

Move the definitions of the versions supported by this release of
NetHack to the top of nhlua.c, rather than 2300 lines into the file.

Close #1633
2026-07-21 12:07:45 -04:00
nhmall 85e080bb5d windows calls genl_prag() during startup
genl_prag() will process  the prag@ command line options, if present

Close #1634
2026-07-20 16:11:01 -04:00
Francium-223 1821a6b2e3 a typo fix in data.base
Close #1618
2026-07-11 15:40:30 -04:00
Ray Chason e00b32263e Support the Curses-only configuration 2026-07-10 09:08:55 -04:00
Ray Chason 7889eedfa5 MS-DOS: Support no-tiles and no-graphics builds
In previous versions of NetHack, setting -DUSE_TILES enabled the tile
support, while setting -DSUPPRESS_GRAPHICS produced a NetHack that
would write its TTY output to standard output, and rely on ANSI.SYS or
similar to do screen control. (USE_TILES is now TILES_IN_GLYPHMAP.)

This change ensures that the current NetHack can be built the same
ways.

One twist is that previous NetHacks would drop all support for graphical
modes when tiles were not supported. Thus sys/msdos/vid{vga,vesa}.c have
very disordered use of TILES_IN_GLYPHMAP. There was no need to check
this. But now, the graphical modes also support Unicode. A non-tiled
build should have the graphical modes, with only the text functions
present, provided that ENHANCED_SYMBOLS is defined.

Some unused and locally used symbols were cleaned up along the way.
2026-07-09 23:48:14 -04:00
nhmall f41f1aa09a resolve a cross-compile link error 2026-07-09 16:42:56 -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 ec0f2f0f48 Merge branch 'msdos-vga-colors' of https://github.com/chasonr/NetHack into NetHack-5.0 2026-07-08 07:22:52 -04:00
Ray Chason f3f39311e5 MS-DOS: Define a separate palette for VGA text
In 16 color mode, text colors are mapped onto the colors available in
the tileset. The mapping is a compromise, and is not one-to-one: cyan
and bright cyan are the same, and magenta and bright magenta are the
same.

This change defines a separate palette for use by the text map, and
switches palettes on any transition between text and tiled maps.
2026-07-07 16:24:35 -04:00
nhmall ac151181d2 more u.ustuck issues on save/restore
During a synchronous save operation initiated by the player (or
other trigger for dosave0()), the u.usteed_mid and u.ustuck_mid
values get set by savemonch(), and the monst pointers that
u.ustuck and u.usteed point to are no longer valid, but not
cleared.

The checkpoint operation, which also needs to ensure that
u.ustuck_mid and u.usteed_mid are set, must set them during
the checkpoint, which is okay because the u.usteed and
u.ustuck pointers _are_ valid during a checkpoint operation.

So, we need to distinguish between a save game sequence,
and a checkpoint sequence when writing out the u struct.
2026-07-06 14:16:15 -04:00
nhmall 81ac4deb1e follow-up: fixes5-0-1.txt update 2026-07-06 11:04:13 -04:00
nhmall 98bb86ab33 Windows: fix ascii map hilite_pet
hilite_pet was working with tiles, but not with ascii map.
2026-07-06 11:00:50 -04:00
nhmall bb0016db0a Windows:OPTIONS=windowtype:tty NetHackW.exe issue 2026-07-06 10:59:53 -04:00
nhmall 749646e8d3 follow-up: fix a paste error 2026-07-06 08:17:38 -04:00
nhmall a6308ad5db follow-up: eliminate a fall through warning 2026-07-06 08:03:58 -04:00
nhmall 2f76934ded Merge branch 'preserve-ghost-info' of https://github.com/copperwater/NetHack into NetHack-5.0 2026-07-06 08:01:56 -04:00
nhmall 3d0fe29ff7 Merge branch 'improve-herecmd' of https://github.com/JodiJodington/NetHack into NetHack-5.0 2026-07-06 07:59:37 -04:00
nhmall f5f498eb9e fixes5-0-1.txt entry for pull request #1617 2026-07-06 07:58:16 -04:00
nhmall a4dbd17d15 Merge branch 'msdos-tile-processing' of https://github.com/chasonr/NetHack into NetHack-5.0 2026-07-06 07:53:06 -04:00
Ray Chason 12560f9b13 Add return value where needed. 2026-07-05 22:26:42 -04:00
nhmall 4761d45deb Guidebook.txt update - July 4, 2026 2026-07-04 23:43:41 -04:00
PatR 9004f49b01 GENERICUSERS in Guidebook 2026-07-04 19:12:00 -07:00
nhmall 25be684830 trailing spaces removed from generated nhlua.h 2026-07-04 14:29:54 -04:00
nhmall adbab7f767 periodic style check: whitespace cleanup
leading tabs and trailing blanks
2026-07-04 14:17:43 -04:00
Ray Chason af79ad629c MS-DOS: some optimizations for tile handling
* In both the 16 color and the VESA mode, the tileset image is loaded
      and split into individual tiles; the tiles are then processed into a
      form that is compatible with the video mode in use. For 16 color mode,
      a tile is processed each time it is displayed, leading to slow
      redrawing. For VESA mode, each tile is processed at startup, leading
      to long startup times. Both modes are changed so that the tile is
      processed once, when it is first displayed, and the result is cached.

    * Use memcpy when splitting the image into tiles.

    * Only load the tileset once. In 16 color mode, for reasons I do not
      understand, the gr_init function is called twice, leading to delay
      in startup. This does not happen in VESA mode.
2026-07-04 13:43:23 -04:00
nhmall 2afd03e015 Guidebook update - July 4, 2026 2026-07-04 13:16:31 -04:00
nhmall 228576628c fix spot_monsters give-away
Resolves #1603
2026-07-04 12:53:33 -04:00
nhmall 7c418cff6a follow-up: a compiler warning fix 2026-07-03 09:39:02 -04:00
nhmall ece0c3ce3c fixes5-0-1.txt entries for three pull requests 2026-07-03 08:45:04 -04:00
nhmall d912ab5e6a Merge branch 'start-time' of https://github.com/chasonr/NetHack into NetHack-5.0 2026-07-03 08:36:12 -04:00
nhmall 454ab83a36 Merge branch 'msdos-font-null-ptr' of https://github.com/chasonr/NetHack into NetHack-5.0 2026-07-03 08:35:32 -04:00
nhmall 9abb13dfcf Merge branch 'msdos-fonts' of https://github.com/chasonr/NetHack into NetHack-5.0 2026-07-03 08:34:53 -04:00
nhmall edb99dcf8f fixes5-0-1.txt catch-up; also fix some whitespace 2026-07-03 08:30:40 -04:00
Ray Chason b3fd7330ef Fix operator precedence 2026-07-03 00:24:17 -04:00
Ray Chason 1de1b531b3 Some optimizations of the glyph lookup
* src/glyphs.c: Don't produce names for swallow glyphs that can never
  appear. This speeds up the building of the glyph index in
  populate_glyphname_hash_indices.

* src/symbols.c: Build a sorted index for loadsyms so that it can be
  searched with bsearch.

Benchmarking results, using the MS-DOS port on an emulated 386SX at
16 MHz; times are as measured with clock() from the entry to main()
to the appearance of the "Who are you?" prompt:

* Unmodified:  48.5 seconds
* With the loadsyms index: 40.4 seconds
* With impossible swallow glyphs left unnamed: 34.5 seconds

These changes should also be helpful for the Amiga and Atari ST ports.
2026-07-02 23:08:42 -04:00
Ray Chason ae8982fe3e MS-DOS: Check font pointer for null
The 16 color mode loads the font specified in font_map, and accepts it
only if its size is 8 by 16 pixels. This change avoids a null
dereference if the font is not found.
2026-07-02 21:34:35 -04:00
Ray Chason 3384619431 MS-DOS: Add Extended2 symbols to the bundled fonts
This change adds U+2299, U+2601 and U+2980 to the bundled fonts, so
that all symbols specified in the Extended2 symbol set are available.

Also, a few more directives are added to the files, so that FontForge
can load them and display their contents.
2026-07-02 21:22:30 -04:00
nhmall 5e80fd3b93 wand of stasis when off level
Account for the time spent on other levels for
wand of stasis

Resolves #1608
2026-07-02 17:48:29 -04:00
nhmall aaf601ffc8 follow-up bit 2026-06-28 17:49:00 -04:00
nhmall bfa924bb0e replace hardcoded number with correct enum value 2026-06-28 17:46:17 -04:00
nhmall c918878299 follow-up: field name typo 2026-06-27 11:45:36 -04:00
nhmall 90aaeb53cd follow-up: zero out puzzling_criteria 2026-06-27 11:41:54 -04:00
nhmall ac3d71a82a give player an inkling of why corpses didn't stack
When corpses haven't stacked, and there is no player-discernable
reason why, provide some additional information in some cases,
but only when it is required.

Gender variance is the supported case in this commit.

Related to GitHub issue #1607.

This commit doesn't change the underlying mechanics to allow
the corpses to stack, but it does help the player understand
why that's the case in this instance.
2026-06-27 11:18:44 -04:00
nhmall 6fee8a4e78 yet another warning bit
In file included from ../include/hack.h:34,
                 from sp_lev.c:14:
In function ‘create_monster’,
    inlined from ‘lspo_monster’ at sp_lev.c:3386:5:
../include/rm.h:528:32: warning: array subscript -1 is below array bounds of ‘struct monst *[80][21]’ [-Warray-bounds=]
  528 |         if (!svl.level.monsters[x][y])                     \
      |              ~~~~~~~~~~~~~~~~~~^~~
sp_lev.c:2045:25: note: in expansion of macro ‘remove_monster’
 2045 |                         remove_monster(x, y);
      |                         ^~~~~~~~~~~~~~
../include/rm.h: In function ‘lspo_monster’:
../include/rm.h:476:19: note: while referencing ‘monsters’
  476 |     struct monst *monsters[COLNO][ROWNO];
      |                   ^~~~~~~~
In function ‘create_monster’,
    inlined from ‘lspo_monster’ at sp_lev.c:3386:5:
../include/rm.h:530:27: warning: array subscript -1 is below array bounds of ‘struct monst *[80][21]’ [-Warray-bounds=]
  530 |         svl.level.monsters[x][y] = (struct monst *) 0;     \
      |         ~~~~~~~~~~~~~~~~~~^~~
sp_lev.c:2045:25: note: in expansion of macro ‘remove_monster’
 2045 |                         remove_monster(x, y);
      |                         ^~~~~~~~~~~~~~
../include/rm.h: In function ‘lspo_monster’:
../include/rm.h:476:19: note: while referencing ‘monsters’
  476 |     struct monst *monsters[COLNO][ROWNO];
      |                   ^~~~~~~~
2026-06-26 15:21:19 -04:00
nhmall 2b2f949484 address another warning
sounds.c: In function ‘domonnoise’:
sounds.c:818:40: warning: array subscript [0, 1] is outside array bounds of ‘const char * const[2]’ [-Warray-bounds=]
  818 |                     verbl_msg = vampmsg[vampindex];
      |                                 ~~~~~~~^~~~~~~~~~~
sounds.c:786:38: note: while referencing ‘vampmsg’
  786 |             static const char *const vampmsg[] = {
      |                                      ^~~~~~~
2026-06-26 15:11:42 -04:00
nhmall c40bf4658d more warning cleanup
The use of strncat and eos(buf) together was odd anyway.
2026-06-26 14:56:26 -04:00
nhmall e3407a923f address some compiler complaints 2026-06-26 12:30:36 -04:00
JodiJodington ae011af026 added a button that shows previous messages to herecmdmenu 2026-06-24 13:11:20 -05:00
JodiJodington 8c3a553f4b added an attributes button to herecmdmenu 2026-06-24 12:17:12 -05:00
JodiJodington 3574a99d35 added a jump button to herecmdmenu 2026-06-24 12:17:12 -05:00
JodiJodington 06436b69d3 added an engrave button to herecmdmenu 2026-06-24 12:17:00 -05:00
JodiJodington 164c057d5f added a pray button to herecmdmenu 2026-06-24 12:16:37 -05:00
nhw_cron 5911ee19d0 This is cron-daily v1-May-7-2026. 005guidebook updated: doc/Guidebook.txt 2026-06-23 21:36:13 -04:00
Kevin Nowaczyk e381605bba Remove wintype.h include from hack.h
Removed unnecessary second include for wintype.h
2026-06-23 18:18:59 -07:00
nhkeni 2c58864b1c CRASHREPORTURL should have been updated at 5.0.0 release 2026-06-23 19:14:54 -04:00
JodiJodington f119ab3dcf made it so the drop button in herecmdmenu does a multi-drop 2026-06-23 15:22:10 -05:00
nhmall e6b5338441 some windows build updates 2026-06-21 14:18:00 -04:00
nhkeni 1fa60f7536 Add a new T-shift slogan. 2026-06-21 14:10:51 -04:00
copperwater 43c302d927 Copy bones monster info to recorporealized ghost
This is a reimplementation of commit ec32748 in TNNT by entrez:

    If you use undead turning on a dead hero's corpse from a bones file,
    its ghost will get sucked back into its body when it comes back to
    life.  In such cases, treat the newly revived corpse/recorporealized
    ghost as a "former hero" for the purposes of livelogging bones
    monster kills.

Part of this change was to remove a bit of weirdness in the game - the
odd situation where you revive a corpse-ghost combo on a bones pile, and
get the messages:

    The human corpse glows iridescently.
    Foo's ghost is suddenly drawn into its former body!
    The human is resurrected!

and subsequently the monster is just a generic human (or elf, etc)
without anything indicating it used to be a player. With this change,
the monster will retain the name that the ghost had, and its struct
ebones prevents the player from renaming it.

This commit also adjusts the "resurrected" message to explicitly use the
monster's name if it has one, and to use YMonnam in the unrelated case
where the monster was a pet (so reviving an unnamed tame kitten will
print as "Your kitten is resurrected!")
2026-06-21 06:42:10 -04:00
nhmall 186d9524de missed a line in this file 2026-06-20 20:02:31 -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
nhmall 6808e87869 yet more 3.7 cleanup 2026-06-20 18:55:28 -04:00
nhmall 6399e0070b dat/*.lua 3.7 vestiges 2026-06-20 18:35:38 -04:00
nhmall 198ac655e5 more 3.7 vestiges
A little later than this probably should have been committed.
2026-06-20 18:26:43 -04:00
nhkeni f5724ff9e6 fixes entry for my previous commit 2026-06-20 17:57:48 -04:00
nhkeni 39434c9a2c Merge branch 'NetHack-5.0' of https://rodney.nethack.org:20040/git/NHsource into NetHack-5.0 2026-06-20 17:50:30 -04:00
G. Branden Robinson d7ce2410b0 fixes5-0-1.txt update 2026-06-20 15:31:53 -04:00
nhmall f5f87c7ee9 missed version bit 2026-06-20 11:18:14 -04:00
nhkeni 11dc617483 Merge branch 'NetHack-5.0' of https://rodney.nethack.org:20040/git/NHsource into NetHack-5.0 2026-06-19 20:59:55 -04:00
nhkeni 10d87c4b9d nhgitset: Deprecate PRE and POST hooks.
nhgitset version 6
prepare for future phases to get rid of those hooks
fix some minor bugs
2026-06-19 20:44:46 -04:00
Patric Mueller bb040cc2e1 Merge branch 'ars3niy-curses256' into NetHack-5.0
Closes #1561
2026-06-19 16:36:53 +02:00
Doktor L 08ac68b754 Use 256 colours in curses window port
Only glyphs that are customised via config can have colours different
from the basic 16. For such glyphs, when curses supports 256 colours,
use them.
2026-06-19 16:36:27 +02:00
Doktor L 19c87585fa Create curses colour pairs for 256 colours
Keep only 8 background colours but if curses supports 256 colours and
256*8 colours pairs, create colours pairs for 256 foregrounds rather
than just 16.
2026-06-19 16:36:27 +02:00
Doktor L 7036f902d2 Pass base-256 colour index to curses_putch
And to its inner function write_char
2026-06-19 16:36:27 +02:00
Doktor L f3d292e111 Combine three arguments of curses_putch into one
It will need another parameter for 256-colour support. To avoid having
too many arguments, put glyph colour, background colour and attributes
into a struct and, since to curses library all of that is attributes
that are handled by same function, call the struct "gryph attributes".

curses_putch was also declared in two different headers, remove one of
those declarations.
2026-06-19 16:36:27 +02:00
Doktor L 24adb1c592 curses: use existing background parameter for pile
The blue background colour for piles was implemented by changing glyph
colour to curses colour pair with the desired background, and then
passed to curses_putch which takes character and background colour and
makes curses colour pair out of them once again.

Pass blue background to curses_putch instead and let it create curses
colour pair just once.
2026-06-19 16:36:27 +02:00
nhmall 43ae611d64 fixes5-0-1.txt entries following pull request 2026-06-19 10:20:50 -04:00
nhmall 33e2f54e7c Merge branch 'correct-regions-with-ball-travel' of https://github.com/copperwater/NetHack into NetHack-5.0 2026-06-19 10:17:40 -04:00
nhmall 04963ecf81 follow-up: add a general catch for "says" 2026-06-19 10:08:42 -04:00
nhmall 8705d12046 Merge branch 'shopkeeper-voice-respects-deaf' of https://github.com/copperwater/NetHack into NetHack-5.0 2026-06-19 10:07:11 -04:00
copperwater 7a23470c33 Fix: thrown ball travel did not check for regions
This is an issue that we discovered in TNNT last year when we added a
custom region with effects that trigger upon entry: it was possible to
bypass those effects by entering the region via a thrown iron ball.

This can be demonstrated by creating a poison gas cloud and then
dragging oneself inside the cloud behind a thrown ball: you land in the
cloud and are surrounded by poisonous gas, but are unharmed by it.

This commit fixes the iron ball code to call in_out_region when
appropriate, which handles the side effects of entering and exiting
regions in addition to preventing travel into or out of a hypothetical
region that blocks entry or exit.
2026-06-19 09:35:23 -04:00
copperwater b54c38c65b Fix: a shopkeeper msg was printed even when deaf
The message in question is '[shopkeeper] says "You be careful with my
[item]!"' when you wield a shop-owned item, but it was being printed
even when the hero is deaf.

Following other examples of shopkeeper dialogue, the correct thing to do
here is not to suppress the message if deaf but instead provide some
nonverbal feedback, so that is what I did.
2026-06-19 09:12:57 -04:00
nhmall 118899a5f0 update tested versions of Visual Studio 2026-06-18 2026-06-18 09:48:34 -04:00
nhmall 6d0757fc86 Fix MS-DOS crosscompile on macOS host 2026-06-16 19:56:30 -04:00
nhmall d13eceb28b eliminate one more source of vault guard newsym msgs
see_monsters() was producing spurious vault guard at 0,0
messages

Reproduce issue by:
    1. Entering vault via teleport.
    2. Wait for guard to enter.
    3. Drop gold (if necessary) and follow guard.
    4. Right after the guard disappears, but before
       the corridor does, the following can lead to
       the messages:
       a) control-R to refresh the display.
          or
       b) save the game and restore.

       In both cases, see_monsters() will get called and lead
       to the spurious messages for the vault guard that is
       parked.

Also, add a macro PARKEDMONSTER(mon) instead of checking the
the isgd bit and the value of mon->mx being zero in multiple
places

Also, adds MON_PARKED bit to mstate.
Currently the PARKEDMONSTER(mon) macro mentioned above,
does not use the new bit.
2026-06-14 14:31:18 -04:00
nhmall 8e9d23b578 msdos warning bit
../sys/msdos/font.c: In function 'load_font':
../sys/msdos/font.c:89:22: warning: unused variable 'j' [-Wunused-variable]
   89 |             unsigned j;
      |                      ^
2026-06-12 11:00:28 -04:00
nhmall b0e24236e3 update tested versions of Visual Studio 2026-06-12 2026-06-12 06:07:27 -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
Ray Chason 0248dbf550 MSDOS: Accept only single character font mappings
* makefont.lua generates incorrect PSF fonts. There can be multiple
  characters mapped to a single glyph, but the mappings should be
  separated by FE bytes.

* font.c should accept only single character mappings -- not combining
  sequences. The bundled fonts have no combining sequences, but I am
  exploring other options that provide more Unicode coverate.
2026-06-10 23:14:09 -04:00
nhmall 958415607b periodic style check: whitespace cleanup
leading tabs and trailing blanks
2026-06-10 15:52:13 -04:00
Patric Mueller 49ac961884 replace NOTPARMDECL with TPARM_WORKAROUND
The old logic used a negative check to emit an extern declaration for
tparm(). This guarded against old platforms whose curses implementations
did not declare their own functions.

If there are still any platforms left that need this declaration, they
can set TPARM_WORKAROUND to get the old behavior back.
2026-06-10 10:16:44 +02:00
nhmall 178b295701 Merge branch 'fix/overflow-checks' of https://github.com/0x0b1ade/NetHack into NetHack-5.0 2026-06-09 22:54:20 -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
nhkeni 383d810357 re-write fetch-Lua target
cleaner output
better structure
better error checking and recovery
2026-06-09 17:22:12 -04:00
nhmall e34238d2bc MS-DOS: several fixes for the tiled map 2026-06-09 16:48:02 -04:00
nhmall 1faa85010d Merge branch 'msdos-map-fixes' of https://github.com/chasonr/NetHack into NetHack-5.0 2026-06-09 16:36:21 -04:00
Ray Chason 1ac6ec5d1e MS-DOS: several fixes for the tiled map
VESA mode: Set the viewport size correctly so the position bar does
not overlay the map.

VESA mode: Correctly set the size to which tiles are stretched when
overview mode (F4) is selected.

Both VESA and 16 color modes: Pass correct parameters to vga_userpan
and vesa_userpan, so the pan keys (CTRL+arrow) work correctly.
Some emulations don't report CTRL with up or down arrows, so accept
CTRL-home, CTRL-page up, CTRL page down and CTRL-end.

16 color mode: Set the panning direction so CTRL-left and CTRL-right
pan in the same direction as 3.4.3.
2026-06-09 16:25:46 -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
nhmall 57111e3c1f update pdcursesmod submodule 2026-06-09 09:40:15 -04:00
nhmall 917cc1a596 add pair of generated files to .gitignore 2026-06-08 13:47:55 -04:00
nhmall 7e18df3c5f ensure sane values for monst fields from bones 2026-06-08 00:06:59 -04:00
nhmall c0f06ac4fd follow-up to 84a6eb5e
Ensure MON_STILL_ARRIVING bit is cleared before an early return.
2026-06-07 23:54:43 -04: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
Alex Smith 9f7a9d2c88 Prevent off-map monsters banking turns
If a monster is marked as off the map, then it is included in
iterations over the monster list, but not allowed to move. This
meant that such monsters would gain movement points on every turn
but not spend them, which could lead to the monster taking a lot of
turns in a row when placed back onto the map.

This commit removes the movement allocation from monsters that are
flagged as dead or removed from the map, meaning that they neve
get more than one turn's worth of movement allocation.
2026-06-08 04:04:12 +01:00
nhmall 28cc7cb6bf Merge branch 'msdos-colors' of https://github.com/chasonr/NetHack into NetHack-5.0 2026-06-07 17:29:42 -04:00
Ray Chason a160322aef MS-DOS: Fix custom colors in VESA BIOS mode
The basic colors are being displayed as black. Colors specified as RGB
are not being converted to the pixel format for the current mode.  This
manifests as walls in dungeon branches being drawn in black when the
symbol set is IBMgraphics, and in the wrong color when Enhanced1 is in
use and the display mode uses 15 or 16 bits per pixel. A particular
mode that shows this bug is 1024 by 768 under DOSBox.
2026-06-07 17:09:27 -04:00
0x0b1ade 4d590abac1 Add length checks in init_dungeon_dungeons 2026-06-07 22:02:20 +08:00
nhmall cbfd3aa944 placement for the added save_currentstate() call wasn't right
in gulpmu() that particular placement would result in u.uswallow = 0,
and u.ustuck set.

A better optimal location needs to be sought.
2026-06-07 01:52:54 -04:00
nhmall 51486d0c02 fix recover failure after unexpected exit
u.ustuck and u.usteed are handled differently in 5.0.0 than
in previous releases, and an unexpected halt to NetHack could
result in an inability to use recover to get the game back.

If the hero was engulfed, u.uswallow, could get saved to the
checkpoint file with a value of 1 without a corresponding
u.ustuck_mid value representing the m_id of the engulfing monster.

Recover had no information to use to restore the u.ustuck pointer
when loading the monsters on the level.

With u.uswallow set to 1, the game would proceed to enter if-blocks
based on that, and then crash/fault when it attempted to dereference
u.ustuck, during the recover attempt.

This updates the values of u.ustuck_mid immediately before saving
struct you during a checkpoint, so that the resulting file had
u.uswallow and u.ustuck_mid values that were in concert.

It does the same for u.usteed and u.usteed_mid.

This also now adds a save_currentstate() checkpoint call when
the swallowed/unswallowed status changes, that is whenever set_ustuck()
is called.
2026-06-07 01:31:19 -04:00
nhmall 1f4198c705 aklys message improvements 2026-06-06 15:01:54 -04:00
nhmall 498db90437 follow-up: fixes5-0-1.txt entry 2026-06-06 12:29:39 -04:00
nhmall 7f787a372a Merge branch 'pl_character-overflow' of https://github.com/chasonr/NetHack into NetHack-5.0 2026-06-06 12:27:03 -04:00
Ray Chason 19c85c1987 Don't overflow svp.plname on restore 2026-06-06 12:10:15 -04:00
nhmall ed1b4af5cd fix build on Windows arm64 2026-06-06 10:36:47 -04:00
nhmall 393f42cd6f follow-up: grammar and format string 2026-06-05 20:17:48 -04:00
Ingo Paschke 78f59660d0 mac: drop the obsolete exit getreturn
The revived mac68k port (on the m68k-wip branch) removed it: it runs
an event loop after exit_nhwindows() has torn the windowing system
down and crashes; the tombstone already pauses.  Removing it here too
keeps the block from resurfacing in NetHack-5.0 <-> m68k-wip merges.
2026-06-05 19:46:05 +02:00
Ingo Paschke 28ca8b26c3 rename MACOS9 to MAC68K to avoid confusion with modern macOS 2026-06-05 16:30:09 +02:00
nhmall 2950bd85cb Revert "don't attempt with a blank host name in fetch-lua"
This reverts commit 9566605ba2.
2026-06-04 21:17:41 -04:00
nhmall f2fc324bef Revert "follow-up"
This reverts commit 0ea0de5301.
2026-06-04 21:17:15 -04:00
nhmall d1f9c17418 Revert "yet another follow-up for Makefile.top fetch-Lua"
This reverts commit 784692fd40.
2026-06-04 21:16:44 -04:00
nhmall c20f5acbb5 Revert "one more follow-up"
This reverts commit 1c649facea.
2026-06-04 21:16:17 -04:00
nhmall 1c649facea one more follow-up 2026-06-04 20:32:50 -04:00
nhmall 784692fd40 yet another follow-up for Makefile.top fetch-Lua 2026-06-04 20:22:50 -04:00
nhmall 0ea0de5301 follow-up 2026-06-04 20:14:29 -04:00
nhmall 9566605ba2 don't attempt with a blank host name in fetch-lua
After exhausting the three URL's for fetch-lua, exit with error,
don't try to connect to a URL with a blank host name.
2026-06-04 20:01:46 -04:00
nhmall cdd42b88a2 curl was not returning an error to shell on 404 error
Add the --fail option to curl to make it do so.
2026-06-04 19:21:26 -04:00
nhmall 19f0ae07cc follow-up: regression reported, so comment out until researched 2026-06-04 16:55:33 -04:00
nhmall 3d46ee9523 follow-up from yesterday: ascii_map done uniquely 2026-06-04 15:57:53 -04:00
nhmall 6c1d7c074d follow-up: do the flush_screen(0) at end always 2026-06-04 15:54:11 -04:00
nhmall 93e7928a6f follow-up: fixes5-0-1.txt update 2026-06-04 15:44:41 -04:00
nhmall 2edf27f0f0 aklys fixes
track which locations had updates that could be seen in tmp_at()
to aid in cleanup.

ensure that nothing is shown for places that the hero can't see
(internal buglist entry 3161).

adjust several aklys messages to better reflect the tethering
aspect.
2026-06-04 15:36:12 -04:00
nhmall ecfa78f974 cherry-pick for CROSS; use "?=" for MAKELUAFLAGS
Using "?=" allows a hints file to set that ahead of Makefile
2026-06-04 07:21:22 -04:00
Ingo Paschke 63cb04f410 hints: keep host CC for top-level lua in cross builds
LUAMAKEFLAGS uses TARGET_CC, which the cross hints override to the
target compiler.  The top-level liblua.a is a host-side prerequisite
of the generated include/nhlua.h; the target lua is built separately
under BUILD_TARGET_LUA.
2026-06-04 07:17:35 -04:00
nhmall 006867cf0d catch-up entry for fixes5-0-1.txt 2026-06-03 19:48:46 -04:00
nhmall fd0a4ec878 optlist.h maintenance
A very small number of boolean options had drifted, such that
their initval setting did not match its opt_in or opt_out value.

Correct that, by ensuring opt_in or opt_out reflects what was
actually happening.

The only option whose initial value is changing as a result
of this is timed_delay. It was listed as an opt_out option, but
was not being initialized as such. Now it is. This makes the
Mac X11 throwing animations work correctly with the earlier
timed_delay option adjustments for X11. There was nothing
displaying on Mac X11 after those earlier changes, unless
the timed_delay option was turned on.

Going forward, for boolean options, setting opt_in or opt_out
is all that is required, as that was the original intention
of those fields. It will take precedence if they fall out of
sync again.
2026-06-03 17:44:49 -04:00
nhmall cd047cc6b8 thinko in comment 2026-06-03 16:38:53 -04:00
nhmall 8182cf3982 required after TIMED_DELAY fix previously committed 2026-06-03 16:29:51 -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 d4e2c577ba follow-up: CC override was in MAKELUAFLAGS
Just make sure it is uing the correct one
remove the addition in the previous commit
2026-06-03 13:49:43 -04:00
nhmall 4b65360d3c allow hints file to specify compiler for Lua 2026-06-03 13:45:49 -04:00
nhmall 49d3d5ecd8 Makefile.utl would allow hints file to specify TARGET_CC 2026-06-03 13:27:19 -04:00
Pasi Kallinen 4fadc7c96f Fix qt compile
Some recent Makefile hints reorg messed with the Qt compile,
it needs to be linked tiles
2026-06-03 10:54:16 +03:00
nhmall 0aba284106 better placement for ensuring graving vanishes
This is better placement for making the original
engraving vanish when told that it vanishes;
helps to ensure that it isn't showing for any
next steps.

also, a warning bit
2026-06-02 09:34:52 -04:00
nhmall 29c300b4e0 stale engraving marker still showing at prompt 2026-06-01 20:44:17 -04:00
nhmall a31a9cb152 Makefile.nmake updates for git_sha 2026-05-31 18:28:06 -04:00
nhmall c112e50afe follow-up: indentation bit 2026-05-31 13:57:56 -04:00
nhmall ef48aa3c18 Merge branch 'fix-libnh-glyphpiletop-constant' of https://github.com/avgas3/NetHack into NetHack-5.0 2026-05-31 13:46:23 -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
Housebot 3096da48fe libnh: export GLYPH_PILETOP_OFF constant
Expose GLYPH_PILETOP_OFF in libnh JS constants so embedding apps
can distinguish statue glyphs from piletop glyphs.
2026-05-31 11:21:25 -06:00
nhmall f72554a238 avoid shk interaction too early 2026-05-30 15:54:18 -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 78e7b23b1e follow-up: Unix uses different code; build fix 2026-05-30 11:40:54 -04:00
nhmall bb407a84da follow-up: fixes5-0-1.txt entry re:previous commit 2026-05-30 11:38:38 -04:00
nhmall 2a912fe001 SELECTSAVE update
In SELECTSAVE implementations, out of date savefiles in the
tree were triggering error messages to the user during the
building of the pick list. The file with the error never
ended up on the pick list, or got removed, so the error was
perpetual on every SELECTSAVE startup.

This passes the UTD_QUIETLY flag down the the small set of
callers involved, so that when it was received by uptodate(),
it went about its verification work quietly.
2026-05-30 11:32:37 -04:00
nhmall e82a1f3276 Merge branch 'glyphs-fixes-take2' of https://github.com/ingpaschke/NetHack into pr1559 2026-05-30 08:12:32 -04:00
Patric Mueller 207db14301 tty: handle indexed colors separately from RGB color space
The terminfo entries from the standard ncurses distribution have
peculiar settings for entries supporting 24 bit colors. The direct
entries mix indexed and RGB values into an incompatible mess.

This commit adds a simple workaround for the tty port.  Colors are
initialised as if only 8 ANSI colors are available.  This does not
affect color customisation from the symsets.

The curses port is affected as well. But I am not yet comfortable to
refactor a large part of the code for an absolute edge case.
2026-05-30 13:53:13 +02:00
nhw_cron a24a0240ce This is cron-daily v1-May-7-2026. 000files updated: Files 2026-05-29 15:40:37 -04:00
nhw_cron 526ffaa582 This is cron-daily v1-May-7-2026. 005guidebook updated: doc/Guidebook.txt 2026-05-29 15:40:22 -04:00
nhmall 0c7070037d yet another Guidebook follow-up 2026-05-29 06:42:39 -04:00
nhmall d676206200 follow-up bit Contributing.md 2026-05-29 06:31:01 -04:00
nhmall 898a430617 follow-up bits for Guidebook.mn processing 2026-05-29 06:27:02 -04:00
nhmall 942f34c883 fix file name in header line 2026-05-28 21:11:38 -04:00
nhmall 287d3f60b5 tone down header lines on GitHub Contributing pg 2026-05-28 21:06:39 -04:00
nhmall 883620699f Guidebook.txt update
Created from make. The cron repo did not have today's updates.
2026-05-28 17:43:02 -04:00
Ingo Paschke 5f817fe9ad glyphs: code-review fixes and parse_id off-by-one
- cmap_offset was calculated on every compose_glyph_name() call;
    calculate it once with a static function.
  - Drop parse_id's G_ auto-populate: an unbracketed lookup allocated
    the index with no matching free.  Linear-scan instead when absent.
  - compose_glyph_name: require bufsz >= BUFSZ, build names with
    bounded Snprintf instead of Strcpy/Strcat, drop the dead memchr.
  - parse_id's permonst scan used i <= pm_count, reading one past the
    SYM_MON block (S_nothing) and matching it as a monster; use <.
  - Drop a stale NO_GLYPH empty-bucket comment from the open-addressed
    table.
2026-05-28 21:08:54 +02:00
nhmall 29380dfdb9 follow-up: TeX doesn't require special handling for ']' 2026-05-28 11:32:06 -04:00
nhmall f47edf59c3 Guidebook update
Make it clear that the *DIR options are not available on Unix.

Related to discussion on GitHub Issue #1552
2026-05-28 11:17:46 -04:00
nhmall a9401fd78a Guidebook bits for Jon Wätte (Jon W{tte)
There is no unintentional spelling mistake.
Close #1523
2026-05-27 23:02:19 -04:00
nhmall 6c950d958f util project needed strutil.c and alloc.c
It was using dupstr(), so strutil had to be added to the project.
2026-05-27 20:58:29 -04:00
nhmall 4e80fda312 build fix for util 2026-05-27 20:51:51 -04:00
nhmall f88d410ba2 typos 2026-05-27 20:14:50 -04:00
nhmall 38d8d2972d README 3.6 vestige 2026-05-27 20:05:59 -04:00
nhmall 0bf0498155 add dirs-perms.500 and a default build change
The directories and permissions portion of the linux.500 and macOS.500
hints files and their included files has been consolidated to
dirs-perms.500.

The builder can edit that one file now, to identify
the folders that will be utilised as part of the build.

Alternatively, you can set those folders and permissions in a
make.perms file in the top of the NetHack folder tree and
they should take precedence over the ones in dirs-perms.500
because dirs-perms.500 uses '?=' variable assignment, which
means "set the value of the variable if no value has been set."

* NOTE: BUILD CHANGE *

This also makes WANT_SOURCE_INSTALL=1 the default over
WANT_SHARED_INSTALL=1, if neither is explicitly set.
The new default is the safer and less-impacting default,
but it will change where things get installed over earlier
Makefile builds. You can be explicit with WANT_SHARED_INSTALL=1
in your make command to get that..

These are the differences between the two:

make WANT_SHARED_INSTALL=1    Place the results of the install/update portion
                              of the build into a shared area on a multiuser
                              system.

make WANT_SOURCE_INSTALL=1    Place the results of the install/update portion
                              of the build into a subfolder of the source
                              tree, rather than in a system-wide shared area.

Also note that the macOS hints file behaves slightly differntly depending
on whether WANT_SOURCE_INSTALL=1 was set versus letting it be the default.
That's not new, it behaved that way before.
2026-05-27 19:32:40 -04:00
nhmall 5d2dc1c85e update tested versions of Visual Studio 2026-05-27 2026-05-27 19:25:11 -04:00
nhw_cron e31a104542 This is cron-daily v1-May-7-2026. 000files updated: Files 2026-05-27 17:49:25 -04:00
nhmall 94d3946ef1 follow-up: fix a couple of paste errors 2026-05-27 17:09:43 -04:00
nhmall d7d0e9061a follow-up: trailing whitespace 2026-05-27 16:44:51 -04:00
nhmall ce31feb231 add some foundational work for uplifts
Be able to carry out uplifts during minor release
lifetimes.

Document a way to be able to uplift struct content
without incrementing EDITLEVEL and breaking existing savefiles.
Use the mechanics outlined to uplift the contents instead, where
it is feasible to do so. The uplift is currently one-way only. An
uplifted savefile cannot be used with an earlier build of NetHack
, one built with a lower SAVEFILE_REVISION_LEVEL, than the one which
wrote the savefile.

The final byte (byte 79) of the 80 critical bytes in the savefile,
of which 10 are reserved for future expansion and not currently
used, will now be used for holding the savefile revision level
(SAVEFILE_REVISION_LEVEL in include/patchlevel.h) at the time
the savefile was written.

That leaves 9 of the bytes available for future use.
2026-05-27 16:14:20 -04:00
nhmall e352048612 include MAXTCHARS in --dumpenums 2026-05-26 22:00:12 -04:00
Ingo Paschke 598253eac8 glyphs: rotate-5 in glyph_hash eliminates true collisions
The previous rotate-1-xor put consecutive characters' bits in
adjacent positions, so short similar names like fox/bat or
jaguar/lichen collided -- 164 colliding buckets across the 9577
named glyphs.  Rotate-5 spreads each character across a 5-bit
window: zero true collisions, one m68k ROL.L, no multiplication.

The 16 remaining same-hash buckets are name duplicates from a
separate compose_glyph_name bug, addressed by its own fix.
2026-05-25 15:45:25 -04:00
nhw_cron b4f417f2ca This is cron-daily v1-May-7-2026. 005guidebook updated: doc/Guidebook.txt 2026-05-25 15:41:24 -04:00
nhmall bd67f3d0d6 merge bit 2026-05-25 15:33:54 -04:00
nhmall fee9516d9b Merge branch 'fix-piletop-generic-obj-prefix' of https://github.com/ingpaschke/NetHack into pr1549 2026-05-25 15:30:40 -04:00
Ingo Paschke 95d70ef5d8 glyphs: add piletop_ prefix to piletop-generic-obj canonical names
parse_id's glyph_is_object branch only emitted the "piletop_" prefix
when glyph_is_normal_piletop_obj(glyph) was true.  Piletop-generic
objects (the GLYPH_OBJ_PILETOP_OFF + 1 .. + LAST_GENERIC range) hit
glyph_is_piletop_generic_obj() instead and got no prefix, so they
produced the same canonical name as their non-piletop generic
counterparts.

For example glyph 3449 (GLYPH_OBJ_OFF + GENERIC_STRANGE) and glyph
7993 (GLYPH_OBJ_PILETOP_OFF + GENERIC_STRANGE) both yielded
"G_generic_strange".  14 such pairs exist; the piletop variant is
unreachable by name from nethackrc, and the runtime hashtable's
"assume no id occurs twice" populate loop silently dropped them.

Emit "piletop_" for both piletop predicates so each glyph gets a
distinct canonical name.  --dumpglyphnames now shows the 14
"G_piletop_generic_*" entries (and the count goes from 9577 to 9591;
the existing off-by-one in glyph_is_normal_piletop_obj still hides
slot GLYPH_OBJ_PILETOP_OFF + FIRST_OBJECT - 1, which is addressed by
its own fix).
2026-05-25 21:19:51 +02:00
nhmall 503355bb11 yet another function and date name update
Related to the overhaul of glyphname hash indices
2026-05-25 14:44:32 -04:00
nhmall 8b3eb77305 cherry-pick pr #1548 52e0404 glyphname indexes 2026-05-25 14:30:02 -04:00
Ingo Paschke be9e430ebb glyphs: replace open-addressed glyphname hashtable with sorted index
The open-addressed glyphname_hashtable stored each canonical
"G_xxx" name as a dupstr'd string in its bucket: ~9577 small heap
allocations and ~290 KB of resident name strings, on top of ~256 KB
of 32768-bucket scaffolding kept at <50% load for probe performance.
On classic Mac OS the populate cost (quadratic small-allocation in a
fragmented Memory Manager heap) dominated startup time -- many
seconds on an SE/30 -- and ~800 KB resident is meaningful on the
small machines the port targets.

Switch to a sorted (hash, glyph) index sized exactly to the number
of named glyphs:

  struct glyphname_hashtable_entry_t {
      uint32 hash;
      int glyphnum;
  };

populate_glyphname_hashtable() allocates one block of MAX_GLYPH
entries (no per-name strings), fills it via compose_glyph_name() +
glyph_hash(), and qsort()s ascending by hash.  Lookup binary-searches
the hash column, then walks any equal-hash neighbours verifying each
candidate by reconstructing its canonical name and strcmpi'ing it
back -- collisions are rare with 9577 uniformly-distributed 32-bit
hashes.

Other changes that fall out:

 * Extract compose_glyph_name() from parse_id's bulk-iteration switch
   so it is the single source of truth for "glyph number -> canonical
   name".  Called by find_glyph_in_hashtable for collision
   verification, by populate_glyphname_hashtable, by the
   --dumpglyphnames path, and by wizcustom_glyphnames.
 * empty_glyphname_hashtable() reduces to free(ptr); no per-entry
   strings to release.
 * Drop find_glyphname_in_hashtable_by_glyphnum (no longer used --
   wizcustom_glyphnames iterates compose_glyph_name directly).
 * Drop the res_fill_hashtable parse_id mode; populate iterates
   directly.

Memory drops from ~800 KB to ~75 KB.  One allocation instead of
~9578.  Lookup goes from O(1) to O(log N) but N ~ 9577 means ~14
comparisons per probe -- well under what the upstream cache ever
cost in practice.

Function names (populate_glyphname_hashtable, etc.) are kept for
extern.h compatibility; the data structure is now a sorted index,
"hashtable" in the names is historical.

--dumpglyphnames output is byte-identical.
2026-05-25 14:22:19 -04:00
nhmall b7c7f051b4 update Guidebook to refer to glyphname 2026-05-25 13:49:44 -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
Ingo Paschke 87a0bdf26c display: fix off-by-one in glyph_is_normal_piletop_obj
glyph_is_normal_object includes its boundary slot
GLYPH_OBJ_OFF + FIRST_OBJECT - 1 via >=, but its piletop sibling
glyph_is_normal_piletop_obj used > and excluded the matching
GLYPH_OBJ_PILETOP_OFF + FIRST_OBJECT - 1 slot.  That leaves
exactly one glyph (the would-be G_piletop_generic_venom) matching
neither the piletop-generic nor the piletop-normal predicate, so
parse_id never builds a name for it and --dumpglyphnames emits a
blank line for the slot.

Change > to >= so the two ranges are inclusive on the same side.
--dumpglyphnames now produces (8009) G_piletop_generic_venom.
2026-05-25 17:06:24 +02:00
nhmall 0e39c11be9 update --dumpenums
Include the glyph_offsets from display.h
2026-05-24 22:24:50 -04:00
nhmall 7a38d29363 nomenclature: glyphids
glyphids shall be known as glyphnames henceforth
glyphid_cache shall be known as glyphname_hashtable
2026-05-24 18:30:46 -04:00
nhmall 7996090a19 Merge branch 'no-bees-in-these-trees' of https://github.com/copperwater/NetHack into NetHack-5.0 2026-05-24 15:57:03 -04:00
copperwater c1697c0042 Don't print "low buzzing" for bee-less trees when kicked
Noticed this when testing a level with some barren trees which were set
in the special level to not contain bees; the barren trees are still
able to produce a low buzzing. This may convince players that they can
get bees from the tree if only they kick it enough times, which will not
happen.

To avoid that, only print this message when the tree can release bees,
augmenting the existing check for killer bees being non-extinct.
2026-05-24 15:37:35 -04:00
nhmall 0a332657f1 methods of disabling glyphid cache prefill
Two methods are now provided for slow ports/platforms that
need to do this for performance reasons.

Hopefully, this will avoid proliferation of more platform-specific
conditional code within initoptions_init().

Method (1): #define DISABLE_GLYPHID_CACHE_PREFILL in platform/OS's
            include/*conf.h.

or

Method (2): set gd.disable_glyphid_cache_prefill = TRUE in startup code
            after decl_global_init(), and prior to initoptions_init().
	    It has to be done after decl_global_init() because
	    decl_global_init() sets the value to its initialization
	    default.
2026-05-24 12:40:24 -04:00
nhmall c22b21e3bd follow-up: spelling fix in comment 2026-05-24 11:49:12 -04:00
nhmall c506c73fbe X11 bit 2026-05-24 00:21:40 -04:00
nhmall 05371dd481 some tipping fixes
- adjust the surface name in prompts (resolves a TODO in the code).
- be more player-friendly with the prompting, and don't prompt a
second time if the floor/surface is the only tip-destination, as
that can be annoyng and viewed as unnecessary. Instead, include
that information in the first decision prompt.

Resolves #1537
2026-05-24 00:01:50 -04:00
nhmall 7025945d2a Get CROSSCOMPILE defined earlier in the Makefiles 2026-05-23 22:50:12 -04:00
nhmall 2680476825 fixes entry for the big-endian fix 2026-05-23 21:37:56 -04:00
nhmall 58f2ef3a9e Merge branch 'lua-coordxy-bigendian' of https://github.com/ingpaschke/NetHack into NetHack-5.0 2026-05-23 21:31:44 -04:00
Ingo Paschke 4470ce348e lua: read coordxy fields with the right width (big-endian fix)
Add ANY_INT16 to any_types and use it for u.ux/uy/tx/ty and uz
dlevel/dnum.  These are coordxy (int16_t) but the Lua bindings were
treating them as 1-byte fields, so on big-endian m68k Lua read the
high byte (0) instead of the actual value.  Symptom: place_object
off map <0,0> in the tutorial.
2026-05-24 02:55:57 +02:00
nhmall ff4abc9b8c 3rd time is the charm3rd time is the charm3rd time is the charm 2026-05-23 20:05:54 -04:00
nhmall d7726e6069 follow-up grammar bit 2026-05-23 20:03:30 -04:00
nhmall 94e7d0bcf3 fixes5-0-1.txt catch-up 2026-05-23 20:01:06 -04:00
nhw_cron 0536318099 This is cron-daily v1-May-7-2026. 000files updated: Files 2026-05-23 19:16:10 -04:00
nhmall fd4fd6ef86 README-hints -> README.hints 2026-05-23 13:43:06 -04:00
nhmall 6aed21933d add paragraph about README.hints to NewInstall.unx 2026-05-23 13:33:35 -04:00
nhw_cron 2808f45c70 This is cron-daily v1-May-7-2026. 005guidebook updated: doc/Guidebook.txt 2026-05-22 16:37:10 -04:00
nhmall 3ea7fd3d67 stamp Guidebook with date of most recent commit to it 2026-05-22 15:41:18 -04:00
Ingo Paschke 1e34b52648 share: extend pcmain.c nhuuid to CROSS_TO_MSDOS, drop stub
The MSDOS branch carried a zero-filled placeholder with a FIXME; it
can use the same RFC 4122 v4 path as Atari and Amiga.
2026-05-22 15:21:00 -04:00
Ingo Paschke ced5744fe6 share+amiga: gate pcmain.c nhuuid for CROSS_TO_AMIGA, drop amidos.c copy
amidos.c had a byte-identical copy of the RFC 4122 v4 generator
already living under CROSS_TO_ATARI in sys/share/pcmain.c.
2026-05-22 15:20:50 -04:00
nhmall 189a0b8c3f update tested versions of Visual Studio 2026-05-22 2026-05-22 14:46:17 -04:00
nhmall be4d613bff follow-up curses idlecheckpoint 2026-05-22 14:20:13 -04:00
nhmall e394dc341b prevent a checkpoint from executing too early 2026-05-22 12:25:13 -04:00
nhmall a1fad59f2d idlecheckpoint support in curses 2026-05-22 12:24:32 -04:00
nhmall 4c7f2dfaac some Windows curses adjustments dialog on startup 2026-05-22 12:21:42 -04:00
Alex Smith 3f837939ba Change the MAX_REROLLS option to be MAX_REROLL_RATE
Having a hard cap on the number of rerolls doesn't help save CPU
usage from excessive rerolling, because if the cap is set low
enough to keep the CPU usage reasonable it isn't high enough for
players to actually use the feature.

Instead, allow capping the number of rerolls per second. (Sensible
values seem to be in the 5-10 range.) If the player attempts more
rerolls than this, show a paranoid confirmation prompt: the need to
type the answer to the prompt will slow a human user down (and if
the prompt is filled in too quickly, it will simply just be shown
again, preventing attempts to use automation to skip the prompt).
2026-05-22 06:02:00 +01:00
Ingo Paschke 7d512fd8ce shk: show item glyphs in the pay-bill menu
menu_pick_pay_items() passed &nul_glyphinfo to add_menu so
port windowports never had a tile/glyph to render alongside
each entry on the bill.  Compute the proper glyph_info from
the bill's obj, matching the pattern src/invent.c already
uses for inventory menus.
2026-05-21 16:05:47 -04:00
nhmall 3beaf04c45 fixes update for menu glyphs: shop bills, tip/loot 2026-05-21 15:54:27 -04:00
Ingo Paschke e14cb40a6e pickup: show container glyphs in tip/loot menus
doloot_core(), choose_tip_container_menu(), and
tipcontainer_gettarget() each iterate carried or floor containers
and offer them as menu rows, but passed &nul_glyphinfo so port
windowports had nothing to render alongside.  Compute proper
glyph_info from each container the same way src/invent.c
already does for inventory menus.
2026-05-21 15:47:55 -04:00
nhmall b9d87fea6d fix a buffer overlow introduced in recent commit 2026-05-21 12:04:01 -04:00
nhmall 18845b6f67 match magic object tiles with mundane counterparts
Fixes #1533
2026-05-21 10:44:29 -04:00
nhmall 65646e2a8c fix recently appearing warnings in clang-22 and visual studio
clang-22:

invent.c:2621:16: warning: variable 'option' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
 2621 |     } else if (!hit_reroll_limit(u.uroleplay.numrerolls)) {
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
invent.c:2629:9: note: uninitialized use occurs here
 2629 |     if (option == 'y') {
      |         ^~~~~~
invent.c:2621:12: note: remove the 'if' if its condition is always true
 2621 |     } else if (!hit_reroll_limit(u.uroleplay.numrerolls)) {
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
invent.c:2570:16: note: initialize the variable 'option' to silence this warning
 2570 |     char option;
      |                ^
      |                 = '\0'
1 warning generated.

visual studio:

src/invent.c(2629,1): warning C4701: potentially uninitialized local variable 'option' used
2026-05-21 10:36:22 -04:00
Pasi Kallinen 51f486589c Add sysconf MAX_REROLLS option
Public servers probably want to set this.
2026-05-21 09:11:24 +03:00
nhmall 0f8f8f4892 Windows console dev debug line 2026-05-21 01:26:29 -04:00
nhmall f9165e66fc curses display sizes on Windows console, GUI 2026-05-20 08:55:28 -04:00
nhmall 93786ddfd9 add a fixes5-0-1.txt entry for WANT_SYSTEM_LUA=1 2026-05-20 08:00:02 -04:00
nhw_cron 1eb91a61af This is cron-daily v1-May-7-2026. 000files updated: Files 2026-05-20 07:41:49 -04:00
nhmall 1b7e529732 cross-compile and build adjustments
Tested:
    Ubuntu: make WANT_WIN_TTY=1 WANT_WIN_CURSES=1 resp=1 update
    Ubuntu: make WANT_SYSTEM_LUA=1 WANT_WIN_TTY=1 WANT_WIN_CURSES=1 resp=1 update
    make CROSS_TO_MSDOS=1 package
    make CROSS_TO_AMIGA=1 all
    make CROSS_TO_AMIGA=1 package
2026-05-20 00:37:02 -04:00
nhmall 4c825ed9a9 typo CROSS_TO_MSDOS=1 2026-05-19 15:38:37 -04:00
nhmall b17eafa0ab CROSS_TO_AMIGA=1 build fix
Fallout from other work this past weekend.
2026-05-19 12:18:23 -04:00
nhmall 182dd93a38 remove a debug line 2026-05-19 11:53:54 -04:00
nhmall 46735de8a6 extend WANT_SYSTEM_LUA=1 to other distros
Only tested on Ubuntu at this point.

feedback on other distros is welcome
2026-05-19 11:38:05 -04:00
nhmall 5333747f02 Add some support for Alpine Linux system Lua package
Requires apk add lua5.4-dev (for the C Lua headers)
2026-05-19 00:49:30 -04:00
nhmall 721dc27f26 remove an unneeded change from earlier CROSS_TO_MSDOS 2026-05-18 16:09:36 -04:00
nhmall 68e36aff74 CROSS_TO_AMIGA fix 2026-05-18 16:06:15 -04:00
nhmall 9841830460 some more follow-up
CROSS_TO_MSDOS build
2026-05-18 15:46:54 -04:00
nhmall 95151d99fc more follow-up
CI still had a duplicate tile.o
2026-05-18 14:18:24 -04:00
nhmall 0607d6426c follow-up 2026-05-18 13:53:02 -04:00
nhmall 3a892160df macOS follow-up 2026-05-18 13:07:13 -04:00
nhmall 29951cccd1 add support for optional builder-created make.prefs
Set things up so that the Makefile build will look for 'make.prefs'
at the top of the NetHack source tree.

If 'make.prefs' is present, the Makefile build will include it
just ahead of the PRE section of a hints file specified to
sys/unix/setup.sh, or practically the first thing during a
Makefile build if no hints file was specified.

The advantage of using a 'make.prefs' is that instead of putting a
series of Makefile variable value assignments on the command line
each time, like this:
    make WANT_WIN_X11=1 WANT_WIN_TTY=1 WANT_WIN_CURSES=1 c2x=1 resp=1 update
you can, instead, put those preferences into make.prefs, like this:

# start of make.prefs
WANT_WIN_X11=1
WANT_WIN_TTY=1
WANT_WIN_CURSES=1
c2x=1
resp=1
# end of make.prefs

Now, my make command just needs to specify a target:
    make update

The syntax for checking whether make.prefs exists, and for including
it, is GNU make, or bsd make, specific, so sys/unix/mkmkfile.sh will
insert the correct syntax for the make that is in-use when
sys/unix/setup.sh is executed.

The 'make.prefs' file isn't limited to Makefile variable assignments, and
can contain any valid make syntax for the version of make on your system,
but adding make syntax beyond Makefile variable assignment will cause
your make.prefs file to become specific to that version of make. There
are syntactical differences between GNU make and bsd make, particularly
for directives and conditional tests.

The 'make.prefs' file can potentially eliminate much/all of the manual
editing of distributed repository Makefiles or hints files that you, as
a NetHack developer or builder, might routinely carry out.
You have the option of placing your preference changes in 'make.prefs'
instead.

Related reference for .500 hints file variables:

In the NetHack source tree:
sys/unix/README.hints

On GitHub:
https://github.com/NetHack/NetHack/blob/NetHack-5.0/sys/unix/README-hints

For example, on macOS, where GNU make is being used, and I typically
set things up using the macOS.500 hints file:
    sys/unix/setup.sh sys/unix/hints/macOS.500
I might have the following make.prefs in the root of my NetHack source tree:
#---- snip -------
$(info Attention - Using make.prefs)
WANT_MACSOUND=1
resp=1
#---- end-snip ---

For another example, on Linux, where GNU make is being used, and I
typically set things up using the linux.500 hints file:
    sys/unix/setup.sh sys/unix/hints/linux.500
I might have the following make.prefs file in the root of my NetHack
source tree:
#---- snip -------
$(info Using make.prefs)
WANT_WIN_X11=1
WANT_WIN_TTY=1
WANT_WIN_CURSES=1
c2x=1
resp=1
#---- end-snip ---
2026-05-18 13:03:31 -04:00
nhmall d9bc6d7b8a Revert "add #-EARLY section"
This reverts commit 85ca1cce74.
2026-05-17 20:54:08 -04:00
nhmall 85ca1cce74 add #-EARLY section 2026-05-17 20:38:10 -04:00
nhmall 8ce430bd89 put the values on other pdcurses platforms back
They were set this way on other pdcurses platforms prior
to this recent change, so leave them at those values.
2026-05-16 22:13:40 -04:00
nhmall 125800404b fixes5-0-1.txt catch-up 2026-05-16 21:45:30 -04:00
nhmall 51011e234d build fix attempt for msdos cross-compile
Recent change was #ifdef PDCURSES, but that is
also used on msdos and other platforms
2026-05-16 21:41:05 -04:00
nhmall 476d0717a7 CI NetHack version 2026-05-16 21:02:38 -04:00
nhmall 083e55e905 Windows curses-related follow-up 2026-05-16 12:22:03 -04:00
nhmall d78a875110 more Windows curses size tinkering 2026-05-16 12:15:20 -04:00
nhmall b2458e679a recently-appeared warning bit
mkroom.c(598): warning C4389: '!=': signed/unsigned mismatch
2026-05-16 11:37:51 -04:00
nhmall 4434b14884 more hints file readiness in Makefiles 2026-05-16 10:59:48 -04:00
Pasi Kallinen 5199921c05 Fix experience-level up/down hilighting
The highlighting worked correctly for #levelchange in wizard mode,
but not for gaining experience levels by killing monsters.
2026-05-16 16:51:34 +03:00
nhmall e1ee404ecc warning workaround led to a build error on some platforms & compilers
Use another method for the warning workaround.

allmain.c:33:56: error: 'maybe_unused' attribute cannot be applied to types
   33 | early_init(int argc USED_FOR_CRASHREPORT, char *argv[] USED_FOR_CRASHREPORT)
      |                                                        ^
allmain.c:28:30: note: expanded from macro 'USED_FOR_CRASHREPORT'
   28 | #define USED_FOR_CRASHREPORT UNUSED
      |                              ^
../include/tradstdc.h:510:16: note: expanded from macro 'UNUSED'
  510 | #define UNUSED ATTRUNUSED
      |                ^
../include/tradstdc.h:397:22: note: expanded from macro 'ATTRUNUSED'
  397 | #define ATTRUNUSED [[maybe_unused]]
      |                      ^
allmain.c:33:49: warning: unused parameter 'argv' [-Wunused-parameter]
   33 | early_init(int argc USED_FOR_CRASHREPORT, char *argv[] USED_FOR_CRASHREPORT)
      |                                                 ^
1 warning and 1 error generated.
2026-05-16 09:05:29 -04:00
nhmall 2445b97a10 build fix with hints file linux.500 and musl=1
This fix was suggested by @PPN-SD in the comments on
GitHub issue https://github.com/NetHack/NetHack/issues/1530#issuecomment-4466027729

Resolves #1530
2026-05-16 08:57:54 -04:00
Pasi Kallinen 0f0e7c99bf Fix random attended shrines in irregular rooms 2026-05-16 14:57:12 +03:00
nhmall a8f97a3926 OpenBSD build bits
An issue still remains with fetch-Lua in the top Makefile.
2026-05-15 21:58:51 -04:00
Patric Mueller 3a0c6f17c7 fix buffer overflow in update_topl
Buffer overflows could occur when interacting with containers while
inputting or outputting many items.

This commit ensures topline updates do not exceed buffer limits by
checking against TBUFSZ.

Issue reported by k21971 on IRC.
2026-05-15 23:32:14 +02:00
PatR e11ff5f703 another try at removing static analyzer complaints
The one in options hasn't been addressed this time.
2026-05-15 13:40:34 -07:00
nhmall c558ef0b33 Makefile syntax did not work on OpenBSD
Trying another approach for whichbsd.500
2026-05-15 15:29:25 -04:00
Pasi Kallinen a533350537 TTY: allow custom glyph colors on more limited terminals
Previously changing glyph colors required a terminal with more
than 256 colors, even if the color was one of the basic 16 colors
used by NetHack.
2026-05-15 20:21:52 +03:00
nhw_cron e05864544c This is cron-daily v1-May-7-2026. 000files updated: Files 2026-05-15 12:25:20 -04:00
nhmall d81d47b81e new file header info 2026-05-15 12:18:29 -04:00
nhmall 8d0cfb05fa rename netbsd.500 to bsd.500
In past releases of NetHack, there was a myriad of different hints
files for different operating systems, and even different versions
of operating systems.

It made maintenance a chore, because all the variable hints files
had to be updated for a wanted change, or (as typically was the
case), some lesser-used hints files were left behind and became
outdated.

Instead of going down that road again, this renames
    sys/unix/hints/netbsd.500
to
    sys/unix/hints/bsd.500

Where things need to differ for a different bsd flavour,
the differences can be shrouded in things like

    .if ${WHICHBSD} == "NETBSD"
    .else
    .endif

This change is being done to make maintenance easier, at the
cost of making the resulting Makefiles a little more complex,
but there won't be as many separate Makefile hints to maintain.

This commit is being done instead of merging pull request #1531
which would add a new sys/unix/hints/openbsd.500 file.

Only tested on NetBSD so far. Please let us know if there's
an issue on other bsd's, and we will attempt to fix thos issues.

Closes #1531

Close
2026-05-15 12:11:34 -04:00
PatR 9ec26da4ff static analysis fix attempt
These three changes compile but I don't know whether thay succeed in
suppressing the new static analyzer complaints.
2026-05-15 08:11:56 -07:00
nhmall 99f559fe18 utilize more real estate on Windows GUI curses
Some inventory items were being hidden in a lengthy list.
2026-05-15 01:21:45 -04:00
nhmall accb14b797 free up some console alloc()'d memory under curses
tty takes care of this, but it wasn't being done under curses
2026-05-14 23:57:25 -04:00
nhmall 5edb093e14 pdcurses: don't truncate curses window width
The curses windows were being capped at 110 columns
inappropriately.

Use the full width of the console.
2026-05-14 22:40:48 -04:00
nhmall 2eb817af07 OS bit in sp_lev.c 2026-05-14 13:03:48 -04:00
PatR c6a58c5c5a warning fix 2026-05-14 08:48:19 -07:00
Pasi Kallinen f000fed16d Fix statue and figurine genders in special levels
When a random statue or a figurine was generated in special levels,
the gender was not initialized correctly, so you ended up getting
eg. "dwarf ruler"

It now works correctly, and you can still specifically request
a non-gendered version with the montype-parameter.

For example

des.object({ id = "statue" });
des.object({ id = "statue", montype = "dwarf ruler" });
2026-05-14 17:38:29 +03:00
nhmall 342bbc85c4 warning bit for clang-22 and tiletext.c 2026-05-14 08:31:33 -04:00
nhmall 7e50882ffb Files updated from cron daily 2026-05-14 07:29:02 -04:00
nhmall bc20ccd659 README wording bit 2026-05-13 20:38:52 -04:00
nhmall 11cd021063 update header info on netbsd.500 2026-05-13 17:34:46 -04:00
Pasi Kallinen 17f5642faf Obey statue type gender
The gnome king statue in minetn-5 was generated as a gnome leader,
obey the gender of the statue name, so generating a statue of
for example "gnome king" and "gnome queen" works correctly.
2026-05-13 23:08:27 +03:00
Anthony C Howe afeb2f55c9 bsd build support
Originating from https://github.com/NetHack/NetHack/pull/1519,
there was an issue with the pull request's back-end fork or with
the pull request itself.

The code changes were applied manually instead, with credit to the
pull request's author, instead of being directly merged in via the
pull request.

Contributed by @SirWumpus on GitHub.

Also,
- fixed a bit of conditional code in include/unixconf.h, where the
  #else clause remained out of reach for non-bsd systems, but was
  needed..
- added a disclaimer to the contributed sys/unix/hints/netbsd.500.
2026-05-13 12:49:45 -04:00
nhmall 46ab1ae213 follow-up: remove previous line 2026-05-13 12:43:15 -04:00
nhmall b9da5b7ced update tested versions of Visual Studio 2026-05-13 2026-05-13 12:40:12 -04:00
nhmall b17392a985 innocuous commit 2026-05-13 11:39:40 -04:00
nhmall 17ae931003 fixes5-0-1.txt catch-up 2026-05-12 19:08:44 -04:00
nhmall 1b1beaa5bb spelling correction 2026-05-12 18:00:39 -04:00
nhmall 82d7b2b249 Merge branch 'cleanup-followup' of https://github.com/ingpaschke/NetHack into NetHack-5.0 2026-05-12 12:46:25 -04:00
nhmall e0ccf22d84 One of our TeX tools leaves .out files behind 2026-05-12 12:44:26 -04:00
Ingo Paschke 6736f878aa Amiga: graphical tombstone RTG-screen fallback
amii_outrip relies on LoadRGB4/transpalette fade and raw BltBitMap
to a SMART_REFRESH window -- chipset-era idioms that do not reach
the visible display on Picasso96 or CyberGraphX screens.  On RTG
the screen stayed black and the user saw nothing between the
death messages and the high-score list.  Detect RTG by screen
size > 800x600 and fall through to genl_outrip so RTG users get
the ASCII tombstone instead.

Switch the still-graphical path to BltBitMapRastPort so the blit
goes through the layer system, and move CloseWindow(ripwin)
outside the Forbid()/Permit() pair (same fix as amii_cleanup).

Rename cmap_white/cmap_black to cmap_outline/cmap_fill -- those
variables actually hold the indices of the darkest and lightest
palette entries, used for the four offset outline strokes and
the centered fill stroke respectively; the old names were
backwards.
2026-05-12 15:33:29 +02:00
Ingo Paschke 89971a5fc9 Amiga: fix extended-command menu mouse-pick
The amii_get_ext_cmd menu used the first character of each command
as the item identity (id.a_char) and then linearly searched
extcmdlist for the first command starting with that character.
Many commands share a first letter, so picking #airlevel returned
#adjust, #wipe returned #wear, etc.  Store the actual index in
id.a_int and read it back directly.

While in that function, size obufp at BUFSZ (was 100) and replace
the unbounded strcpy from extcmdlist[i].ef_txt with strncpy +
explicit NUL.
2026-05-12 15:31:44 +02:00
Ingo Paschke 146fbf20d8 Amiga: clamp amii_numcolors and guard tile CMAP loop
Reject tile/tomb IFF files whose nPlanes field exceeds DEPTH:
the CMAP loop writes 1<<np entries into amii_initmap[] /
amiv_init_map[], both sized AMII_MAXCOLORS = 1<<DEPTH = 64, so
a malformed file with nPlanes >= 7 would corrupt adjacent BSS.

After OpenScreen succeeds, clamp amii_numcolors to the actually
populated portion of the init-map arrays (AMII_PALETTE_SIZE for
text mode, AMIV_PALETTE_SIZE for tile mode).  On a 64-color
screen this stops LoadRGB4 from loading the zero-initialized
tail entries as black.  Replace the matching magic 32 in the
tilefile selection with AMIV_PALETTE_SIZE.

While there, add the (char) cast on amii_glyph_buffer's
truncating assignment to make the contract explicit.
2026-05-12 15:30:48 +02:00
Ingo Paschke 459113a48e Amiga: fix --more-- infinite loop on overlong words
When a single word exceeds the visible message-window width the
wrap loop found no whitespace, called outmore(cw), and continued
without advancing str -- and on the next iteration curx==0 took
it straight back to the same spot.  Force-break the word at the
column boundary when we are already at the start of a line.

Also reset the wrapping static flag to 0 after the NHW_BASE wrap
cleanup runs, so the cleanup fires once after a wrap instead of
on every subsequent putstr.
2026-05-12 15:29:37 +02:00
Ingo Paschke 4e63ba90ca Amiga: bound BufferQueueChar; move CloseWindow out of Forbid()
Make the BufferQueueChar macro bounds-check KbdBuffered against
KBDBUFFER internally so the RAWKEY and NEWSIZE 'R'-64 paths can
no longer push past the 10-byte queue; widen KbdBuffered to int
so the counter cannot wrap silently in the queue-scan loops.

In amii_cleanup move kill_nhwindows()/DeleteMsgPort() outside
the Forbid()/Permit() pair: CloseWindow can wait on layers.library
semaphores on OS 3.x and that is unsafe under Forbid.  Keep only
the IDCMP-flush loop inside.
2026-05-12 15:28:43 +02:00
Ingo Paschke 252ca5bef7 Amiga: defensive NULL/bounds guards in menus and window creation
Guard the gd lookup in DoMenuScroll's GADGETUP/MOUSEMOVE branches
so a window with no GadgetID==1 does not deref NULL; match the
existing guards in the keyboard-scroll branches.  In the keyboard
selector and MENU_UNSELECT_ALL paths, only mutate items with
canselect set so a non-selectable header cannot have its str
stomped.  Clamp MENU_LAST_PAGE topidx to >= 0.  Make find_menu_item
return NULL on negative idx instead of the head item.  Guard the
PROMPTFIRST data[] shuffle behind cury > 0.

In amii_destroy_nhwindow's NHW_OVER branch use cw->win with a NULL
guard instead of dereferencing amii_wins[WIN_OVER]->win blindly.
Range-check the type argument to amii_create_nhwindow.  Fix the
*argv_in[1] precedence bug so the -L/-l flag does not deref NULL
when it is the last argument.  Wrap AllocAslRequest result in a
NULL check before AslRequestTags/FreeAslRequest.

Defensively bounds-check the idx argument to DispCol.  Replace
the -25937 signed-int literal in clipwin's PropInfo with the
equivalent UWORD value 39599.  Simplify amii_start_menu's free
loop; switch DoMenuScroll's inventory title and Count display to
Snprintf, and stop passing countString to pline as a format.
2026-05-12 15:27:13 +02:00
Ingo Paschke 15e3973ac2 Amiga: tighten input/dialog buffer bounds
Right-size the Intuition string-gadget buffer to BUFSZ so a caller
with a BUFSZ-sized buffer cannot be overflowed.  Enlarge the
amii_yn_function prompt buffer to fit the worst-case query + resp
+ def + trailing space and switch the appends to Snprintf with
remaining-space tracking.  Replace sprintf in amii_display_file's
"Can't display X: Y" path with Snprintf.  In EditColor's Save path
drop the strcpy/strcat chain that could trail off the end of
oname/nname when dirname returned a near-full path; use Snprintf
instead.  Rewrite dirname() to copy first and truncate the copy,
so it no longer briefly NULs the caller's string.
2026-05-12 15:24:15 +02:00
Ingo Paschke d99eeb17c2 Amiga: header hygiene and palette-size constants
Add AMII_PALETTE_SIZE / AMIV_PALETTE_SIZE in amiconf.h to make the
actual populated portion of the init-map arrays explicit.  Drop the
redundant extern void exit() declaration.  Annotate Abort with
NORETURN in both amiconf.h and winproto.h; drop the duplicate Abort
declaration further down winproto.h.

Convert the bare-token "CLIPPING must be defined" assertion in
windefs.h into a real #error directive.

Comment in winext.h to disambiguate the three similarly named
amii*_init*map palette arrays.
2026-05-12 15:21:23 +02:00
Ingo Paschke ebcf31a4da Amiga: drop UNTESTED AROS path; tighten fopenp separator write
The UNTESTED #ifdef in freediskspace was never gated by any hints
file, so the unsigned-long-long path could only be enabled by a
stray manual #define -- in which case the return type is still
long and silently truncates.  Remove the branches.

In fopenp the separator '/' write was unchecked: when the path
segment exactly filled the buffer to BUFSIZ-2 it would land at
buf[BUFSIZ-1] and the follow-on NUL would write past the end.
Guard the write.
2026-05-12 15:19:28 +02:00
Ingo Paschke 157c005f02 Amiga: harden host-side bmp/xpm to iff converters
Replace #pragma-pack BMP header reads with little-endian byte
readers so the tool works on any host endianness.  Add dimension
and color-count range checks, zero-init pixel remap table, check
calloc, free bmpdata on early returns, send malloc errors to
stderr.  Add bp>xbuf guards to xpmgetline's strip loop.
2026-05-12 15:18:44 +02:00
Ingo Paschke cb46d9effd Amiga: tighten two minor issues from review
- amii_set_text_font called CloseLibrary(DiskfontBase) outside the
  OpenLibrary guard; on Kickstart V36+ that is a no-op for a NULL
  handle, but on V33/V34 it is undefined.  Move the close inside
  the if-block where DiskfontBase is known non-NULL.
- amii_get_ext_cmd's bounds check used BUFSZ for an obufp[100]
  buffer; the tighter COLNO check actually bounded it but the
  expression was misleading.  Use sizeof obufp.
2026-05-12 15:12:07 +02:00
Ingo Paschke 74c87caac3 Amiga: fix bitmap/IFF resource handling in winchar.c
- MyAllocBitMap left bm->bm.Planes[] uninitialized; InitBitMap only
  fills BytesPerRow/Rows/Flags/Depth, not Planes[].  If AllocRaster
  fails mid-loop, MyFreeBitMap was iterating up to Depth and would
  pass uninitialized stack-garbage pointers to FreeRaster.  Zero
  Planes[] before the alloc loop.
- ReadImageFile leaked iffparse.library, the IFFHandle, the DOS file
  handle, and any open-IFF state on every panic path.  On AmigaOS
  those handles are not auto-reclaimed when the process dies, so
  each failure stranded resources until reboot.  Restructure to a
  single cleanup label and free in reverse-acquisition order before
  panicking.
- OpenIFF returns an error code that was being thrown away, so a
  failed open would feed corrupt state to ParseIFF.  Check and
  bail.
2026-05-12 15:12:07 +02:00
Ingo Paschke f583787825 Amiga: fix overview-window crashes
- MyAllocBitMap left bm->mflags uninitialized, so MyFreeBitMap took the
  wrong path between FreeRaster and FreeMem and intermittently corrupted
  exec's free list (Software Failure 0x81000005, DEADEND in FreeMem).
- The NHW_OVER window is BORDERLESS, so attaching WINDOWSIZING |
  WINDOWDRAG | WINDOWCLOSE created phantom gadgets that hit-test against
  unrelated input.  Pressing ESC while the overview was selected fired
  CLOSEWINDOW and destroyed the window underneath the running code,
  leading to wild-PC crashes.  Drop the gadget flags; SHIFT-HELP already
  toggles the overview cleanly via delayed_key_action.
- amii_destroy_nhwindow only reset WIN_MAP / WIN_STATUS / WIN_MESSAGE /
  WIN_INVEN; WIN_OVER and WIN_BASE kept pointing at freed slots, so any
  later 'WIN_X != WIN_ERR && amii_wins[WIN_X]->win' check dereferenced
  NULL.  Reset them too.
2026-05-12 15:12:07 +02:00
Ingo Paschke 7c8524ae37 Amiga: make amigapkg depend on $(GAMEBIN)
Without the dependency, 'make amigapkg' would copy whatever was
already in targets/amiga/ without ever rebuilding when sources
changed -- silently shipping a stale binary.
2026-05-12 15:12:07 +02:00
Ingo Paschke 657f6eaad9 Amiga: fix latent issues found in code review
- fname[18]/sprintf risks overflow for >=10 in any version field;
  switch to snprintf into a wider static buffer.
- (1L << i) for i==31 (or shifting into the depth-loop terminator)
  is undefined for signed long; use 1UL.
- Drop unused cnt= from amii_display_nhwindow's DoMenuScroll call;
  the menu return value is consumed elsewhere, not here.
2026-05-12 15:12:07 +02:00
nhmall 7d802883bc replace hard-coded nroff with $(NROFF) 2026-05-12 09:07:06 -04:00
nhmall 80a99d1ed1 stop init of allopt[] from wiping out disregards 2026-05-12 00:10:38 -04:00
nhmall f5456fa92c another Windows issue causing startup grief 2026-05-11 22:59:42 -04:00
nhmall d62b56e0f2 yet more hints file prep 2026-05-11 20:45:49 -04:00
nhmall ccb3db39d7 more hints file prep 2026-05-11 19:59:53 -04:00
nhmall ef600a41f6 allow a hints file to be able to specify GUIDECMD
define GUIDECMD in sys/unix/Makefile.doc using '?=' notation
2026-05-11 19:16:03 -04:00
PatR c42d35eac0 avoid newsym(0,0) for vault guard
When a vault guard is being moving off the map to <0,0> to wait until
his temporary corridor gets removed, don't try to update the map for
that off-the-screen location in order to avoid triggering impossible()
from newsym().

Plus a trivial tweak to NH_abort().  Its argument is never modified so
declare it as such.
2026-05-11 15:06:13 -07:00
nhmall 45ab4eb1aa follow-up: paste error snuck in 2026-05-11 17:40:50 -04:00
nhmall f06e2389b6 more fixes5-0-1.txt updates 2026-05-11 17:36:21 -04:00
nhmall 3b5e784c69 fixes5-0-1.txt catch-up 2026-05-11 17:07:17 -04:00
nhw_cron 34204d0874 This is cron-daily v1-May-7-2026. 000files updated: Files 2026-05-11 16:27:48 -04:00
nhmall 48fa545cf5 update Contributing.md 2026-05-11 16:25:14 -04:00
nhmall 9bfaa066e2 Merge branch 'cleanup' of https://github.com/ingpaschke/NetHack into NetHack-5.0 2026-05-11 15:43:56 -04:00
nhmall 3ca18c8e44 be more cautious on gcc version for warning 2026-05-11 15:40:29 -04:00
nhmall 0991b0e770 tiletext.c warning suppression 2026-05-11 15:30:53 -04:00
nhkeni 3973944a93 Fix subst for luahelper. 2026-05-11 15:22:06 -04:00
Ingo Paschke 1cfff0f002 Amiga: correct command-line flag doc in amii.hlp
Wizard mode is gated on player name == WIZARD_NAME, not on -D or
-debug.  Document -uwizard as the working entry point.
2026-05-11 20:51:06 +02:00
Ingo Paschke d1a84de8fc Amiga: delete outdated/sys/amiga/
These 3.4.1-era files are superseded: Build/Install.ami -> README.amiga;
Makefile.ami/.agc -> sys/unix/hints/include/cross-*.500;
NetHack.cnf -> sys/amiga/nethack.cnf;
txt2iff/xpm2iff.c -> sys/amiga/*_host.c.
2026-05-11 20:51:06 +02:00
Ingo Paschke 2e61bf768f Amiga: fix port_help double-prefix path
display_file -> dlb_fopen -> fopen_datafile already prepends DATAPREFIX;
wrapping PORT_HELP in fqname() too produced "NetHack:NetHack:amii.hlp".
2026-05-11 20:51:06 +02:00
Ingo Paschke 344063afb6 Amiga: route non-menu messages from DoMenuScroll to ProcessMessage
DoMenuScroll dropped IDCMP messages for non-owner windows -- so a
resize of WIN_INVEN or close-gadget on WIN_OVER during a menu never
reached the game state.  Forward those to ProcessMessage;
VANILLAKEY/RAWKEY stay with the menu.
2026-05-11 20:51:06 +02:00
Ingo Paschke 8dbbbc2fef Amiga: deduplicate amii_procs and amiv_procs
Factor common body into AMI_WIN_PROCS_BODY.  The POSITIONBAR / CLIPPING /
CHANGE_COLOR guards in the original were dead.
2026-05-11 20:51:06 +02:00
Ingo Paschke c85a8cf607 Amiga: drop redundant 'either windowtype' guards
Six if(WINVERS_AMIV || WINVERS_AMII) sites are always true with
amitty.c gone.
2026-05-11 20:51:06 +02:00
Ingo Paschke 5d86dfccb5 Amiga: replace WINVERS_AMI* strcmp with WINDOWPORT() id compare
The macros were strcmp("amiv", windowprocs.name)==0 at every reference
-- 72 sites including inner loops.  Use the 5.0 core's WINDOWPORT(wn)
which compares wp_id.
2026-05-11 20:51:06 +02:00
Ingo Paschke 688f9344cd Amiga: route port paths through fqname()
Tile loading hard-coded "NetHack:tiles/tiles{16,32}.iff" and PORT_HELP
hard-coded "nethack:amii.hlp".  Route through fqname(DATAPREFIX) so
DATADIR= overrides apply.  Refresh amii.hlp to 5.0 content, ship it via
amigapkg, and document HACKDIR / SAVEDIR / BONESDIR examples in
nethack.cnf.
2026-05-11 20:51:06 +02:00
nhkeni df9673c96e Make all top-level .md files subject to nhsub substitutions. 2026-05-11 14:46:06 -04:00
Ingo Paschke c5d8ab1985 Amiga: collapse #ifndef CROSS_TO_AMIGA include forks
Every #include block had a paired NH: assign path for native builds.
Only the cross-compile path is built now.
2026-05-11 20:43:08 +02:00
Ingo Paschke 010c068861 Amiga: clean up amiconf.h
Remove legacy compiler guards and stale extern declarations (the
ami_wbench_* family, CopyFile, ami_argset, ami_mkargline, FromWBench).
Drop unused AMII_*_VOLUME / DEFAULT_ICON macros and the
IDCMP_CLOSEWINDOW auto-define.
2026-05-11 20:43:08 +02:00
Ingo Paschke 94a74b84d8 Amiga: drop OPT_DISPMAP / display_map / fast_map machinery
display_map() was never integrated; no .c defines it.  All OPT_DISPMAP /
DISPMAP / sysflags.fast_map conditionals were unreachable.
2026-05-11 20:43:08 +02:00
Ingo Paschke 7b559f4d02 Amiga: delete dead files and dead-macro code
Delete amigst.c (empty) and amitty.c (TTY/BBS stub).  Drop WINVERS_AMIT,
SUPERBITMAP_MAP, EXTMENU, SHELL/dosh(), and the bbs_id reference in
src/files.c.
2026-05-11 20:30:45 +02:00
Ingo Paschke beaed3aa08 Amiga: delete the .p prototype headers
amidos.p, amiwind.p, winami.p duplicated and partly contradicted
winproto.h.  Switch amidos.c and amigst.c to winproto.h.
2026-05-11 20:30:45 +02:00
Ingo Paschke e90a297021 Amiga: drop #if 0 dead-code blocks
Includes a dead amii_player_selection / RandomWindow pair (~280 lines),
eraseall / CopyFile in amidos.c, and smaller fragments.
2026-05-11 20:30:45 +02:00
Ingo Paschke 00433c7998 Amiga: drop TESTING dev toggle in winchar.c 2026-05-11 20:30:45 +02:00
Ingo Paschke a8e54185eb Amiga: drop SHAREDLIB dead build flavor 2026-05-11 20:29:47 +02:00
Ingo Paschke 7b67da20b7 Amiga: make INTUI_NEW_LOOK unconditional
OS 2.0+ Intuition is required; the pre-2.0 fallback paths are unreachable.
2026-05-11 20:29:47 +02:00
Ingo Paschke f0b6ddc6f8 Amiga: drop legacy non-gcc compiler guards
Remove AZTEC_C, _DCC, SASC, LATTICE, MANX arms. The port targets bebbo gcc.
2026-05-11 20:29:47 +02:00
Ingo Paschke 22ddba7c1e Amiga: more review fixes
- NHW_BASE / NHW_OVER collided with NHW_PERMINVENT=6; renumber off NHW_LAST_TYPE.
- GlyphToIcon used > 10000 instead of >=.
- make_menu_items sized array by sizeof(amii_menu_item) instead of menu_item.
- DoMenuScroll could deref NULL amip on SELECTUP.
- get_nhuuid uses ISAAC64 rn2() instead of hand-rolled LCG.
- fopenp's bound check fired one byte too late.
- winami.p had stale signatures for amii_end_menu, amii_select_menu, amii_suspend_nhwindows.
2026-05-11 20:29:47 +02:00
Ingo Paschke f8ea34489f Amiga: fix three latent bugs found in code review
amiv_lprint_glyph used uninitialized 'base'; amii_clear_nhwindow
compared cw->type to a winid; amii_sethipens fell through.
2026-05-11 20:29:47 +02:00
nhw_cron 66c97eaab3 This is cron-daily v1-May-7-2026. 005guidebook updated: doc/Guidebook.txt 2026-05-11 13:44:16 -04:00
nhmall b2cf7d5a84 Guidebook datestamp to most recent commit 2026-05-11 12:33:35 -04:00
nhmall e8e8749c25 move header to bottom of the Contributing.md file 2026-05-11 12:18:17 -04:00
nhw_cron 7c14ed2723 This is cron-daily v1-May-7-2026. 000files updated: Files 2026-05-11 11:55:40 -04:00
nhmall b4f28edfe4 some malloc() 2026-05-11 11:33:15 -04:00
nhmall a5a4bc6b4a remove an outdated file that brought a complaint
All the files in outdated are mostly source as they were prior to
the move to the outdated part of the NetHack tree. They are left
there in case somone wants to try to resurrect a port.

They are not meant to be compiled, or used as-is.
2026-05-11 06:38:11 -04:00
nhmall a583201f15 check malloc() return in bmp2iff_host.c 2026-05-11 06:34:20 -04:00
nhmall 16986710d5 follow-up grammar 2026-05-10 23:23:17 -04:00
nhmall 430c84aef7 catch up fixes5-0-1.txt 2026-05-10 23:21:34 -04:00
nhmall f10fe47505 dat/history sync with Guidebook 2026-05-10 22:58:47 -04:00
nhmall 610bd839ee update the code for portable Windows configuration
Restrict which options in sysconf will be processed
when seeking PORTABLE_DEVICE_PATHS.
2026-05-10 21:11:17 -04:00
nhmall 2337a2bae5 Windows follow-up
Remove some unused temporary code
2026-05-10 16:04:09 -04:00
nhmall 745c7fb8d8 some windows fixes
Resolves #1526
2026-05-10 16:00:33 -04:00
nhmall 9d5b02d912 NetHack 5.0.0 packaging error from visual studio
A remnant hard-coded 370 was in package.nmake.

Note: The errant file was not used to construct the official
binaries. Those were done using sys/windows/Makefile.nmake.

Closes #1525
2026-05-10 14:43:26 -04:00
nhmall 5cf9086c84 Windows: don't demand keypress on intentional exit 2026-05-10 12:10:26 -04:00
nhmall aa63616118 spelling correction 2026-05-10 11:36:43 -04:00
nhmall f64b996899 optional package sequencer for building binary
Add Makefile support for an optional AMIGPKGSEQ to
append a suffix to the Amiga binary, without having to
rename the zip file manually after the
    make CROSS_TO_AMIGA=1 package
step.
2026-05-10 10:33:20 -04:00
nhmall edafe39f5d add awareness of possible updated binary with numeric suffix
Close #1514
2026-05-10 09:07:10 -04:00
nhmall 029ed6eabd Merge branch 'amiga-menu-glyphs' of https://github.com/ingpaschke/NetHack into NetHack-5.0 2026-05-10 08:50:38 -04:00
nhmall ce92a979dd Merge branch 'linux-tty-cflags' of https://github.com/torakoya/NetHack into NetHack-5.0 2026-05-10 08:48:30 -04:00
Ingo Paschke c1ae9d5d8c Amiga: restore glyph icons in menus
Core changes routed transient inventory away from WIN_INVEN, so the
port's win == WIN_INVEN gate stopped matching and glyphs vanished.
Track has_glyphs on the menu and key rendering and sizing off that.
2026-05-09 17:11:33 +02:00
nhw_cron 13bbbf6a13 This is cron-daily v1-May-7-2026. 005guidebook updated: doc/Guidebook.txt 2026-05-07 23:25:42 -04:00
nhw_cron b02f28fec2 This is cron-daily v1-May-7-2026. 000files updated: Files 2026-05-07 23:25:25 -04:00
nhw_cron 669e44c670 This is cron-daily v1-May-7-2026. 005manpages updated: makedefs.txt 2026-05-07 23:25:06 -04:00
nhw_cron fed12887ca This is cron-daily v1-May-7-2026. 005manpages updated: mnh.txt 2026-05-07 23:24:48 -04:00
nhw_cron 3f02b77f2e This is cron-daily v1-May-7-2026. 005manpages updated: nethack.txt 2026-05-07 23:24:35 -04:00
nhw_cron 92734c3283 This is cron-daily v1-May-7-2026. 005manpages updated: recover.txt 2026-05-07 23:24:22 -04:00
nhmall 4938a85068 relocate Contributing.md to the root 2026-05-07 11:40:14 -04:00
nhmall 39f31a8f06 fix a CROSS_TO_WASM=1 build issue 2026-05-07 10:43:24 -04:00
Yoichiro Takahashi 4a4b4498a8 Respect ncurses cflags on Linux tty 2026-05-07 21:22:15 +09:00
nhmall 88bacb00c2 fixes update 2026-05-07 07:14:56 -04:00
nhmall 22009c300a update to DEVEL/Contributing.md 2026-05-07 07:11:55 -04:00
nhmall 1c1f64dc19 Issue #1521 asks for Contributing.md file
This is expected to improve and fill out over time, with more
guidelines for contributing.
2026-05-07 07:02:26 -04:00
nhmall d52b1daf50 bring fixes5-0-1.txt up to date 2026-05-07 00:23:16 -04:00
nhmall 89c6b49b0c spelling correction in nethack.6 2026-05-06 23:19:13 -04:00
nhmall 6204679bfd Guidebook type fix 2026-05-06 23:02:29 -04:00
nhmall 6ed95bebba paste error in Guidebook.tex 2026-05-06 22:58:34 -04:00
nhmall d5673a948e Merge branch 'gbr-NetHack-5.0-man-page-fixes' of https://github.com/g-branden-robinson/NetHack into g-branden-robinson-gbr-NetHack-5.0-man-page-fixes 2026-05-06 21:25:06 -04:00
nhmall dcf8752e92 Merge branch 'fix/libnh-native-build' of https://github.com/YttriumOx/NetHack into YttriumOx-fix/libnh-native-build 2026-05-06 21:07:23 -04:00
nhkeni cc4c5227af use full URL for nethack.org in Guidebook.mn 2026-05-06 16:19:02 -04:00
G. Branden Robinson 48ae0eb46e doc/nethack.6: Rewrite initial description
I noticed that the "Dungeons & Dragons" trademark acknowledgement should
be using the _registered_ trade mark sign instead of the more general
one, as the mark's enjoyed registered status (in the U.S.) since 1978.

https://tmsearch.uspto.gov/search/search-results/73123558

It occurred to me that updating the game description for a 2026 audience
might be an improvement on one that assumes the reader is familiar with
D&D, with Teletype machines ("TTYs"), and with the Rogue game, which
NetHack arguably eclipsed in notoriety decades ago.

So I rewrote it, and dropped the references to D&D.  Besides, as of
commit c99da87c70, NetHack is incompatible with "Strength Table I." in
the AD&D Player's Handbook (TSR 2010, p. 9), so any grognard who lifts
would snatch NetHack's D&D membership card away anyway.  ;-)
2026-05-06 04:53:12 -05:00
G. Branden Robinson 76303faeab doc/*.6: Use typographer's double quotes
...where available.

groff_man_style(7):

Notes
...
     • When and how should I use quotation marks?

       ... groff, Heirloom Doctools troff, neatroff, and mandoc support
       all of the special characters \[oq], \[cq], \[lq], \[rq], \[aq],
       and \[dq] described in subsection “Portability” above.  DWB, Plan
       9, and Solaris troffs do not.  Interpolating the strings \*(lq
       and \*(rq portably yields directional double quotation marks, if
       available, in all these formatters (though neatroff does not
       supply a man macro package), but they cannot reliably be used in
       macro arguments.
2026-05-06 04:53:12 -05:00
G. Branden Robinson 1d13d2ce62 doc/nethack.6: Fix markup nits
Drop unnecessary quotation marks from macro call arguments.
2026-05-06 04:53:12 -05:00
G. Branden Robinson 74a3dc9d71 doc/makedefs.6: Fix style and markup nits
* Set cross reference to "nethack" man page in lowercase, because that's
  the name under which it's installed, and POSIX systems are
  case-sensitive.
* Refer to the "nethack" command using a man page cross reference only
  on its first occurrence.
* Favor bullets over hyphens for itemized list.
* Drop explicit indentation amounts from lists.  The man(7) package's
  default suffices on all of Solaris 10, DWB 3.3, Plan 9, Heirloom
  Doctools, and GNU *roffs, and on mandoc(1).
* Use tagged paragraphs to set synopses of syntax productions used in
  the documented file format.
* Drop inset (indentation) of itemized and tagged lists; the bullets
  make the structure clear, and (with the foregoing change) this way the
  paragraphs align.
2026-05-06 04:53:12 -05:00
G. Branden Robinson 61a16e6983 doc/recover.6: Fix style and markup nits
* Identify NETHACKDIR and HACKDIR as environment variables.
* ...and set them italics, not roman.
* Set default playground directory name in italics, not roman.
* Set command names in italics.
* Refer to command operands as such, not as "options".
* Use man page cross reference on first occurrence of "nethack" when
  referring to the command executable as opposed to the overall game.
  Because some text is commented out (`ig`nored), meaning the "first"
  occurrence appears twice (what's lexically present vs. what's
  formatted) do this twice as future-proofing.
* Set file names in italics, not roman.  Set variable parts of file
  names in roman.
* Refer to "single-user systems" instead of "microcomputers"; the latter
  is becoming antiquated terminology.
* Favor present tense over future.
* Tighten wording.
* Spell "save files" consistently as two words.
2026-05-06 04:53:12 -05:00
G. Branden Robinson 2d3f9b8c21 doc/recover.6: Revise synopsis
Tighten formatting: set synopsis syntax characters adjacently to
operands.  Rename `-d` option argument from "directory" to
"playground-directory" for clarity.

Set operands more idiomatically.  They are not given in pairs; instead
"base" can be repeated arbitrarily.  See, for example, the POSIX
reference page for ls(1).
  https://pubs.opengroup.org/onlinepubs/9799919799/utilities/ls.html

Format ellipsis idiomatically.

groff_man_style(7):

Notes
       ... The idiomatic roff ellipsis is three dots (periods) with thin
       space escape sequences \| internally separating them.  Since dots
       both begin control lines and are candidate end‐of‐sentence
       characters, however, it is sometimes necessary to prefix and/or
       suffix an ellipsis with the dummy character escape sequence \&.
2026-05-06 04:53:12 -05:00
G. Branden Robinson 561d08e53b doc/*.6: Improve formatting of carets
...on typesetters and UTF-8 terminals.

groff_man_style(7):
   Portability
...
     Several special characters are also widely portable.  Except for
     \-, \[em], and \[ga], AT&T troff did not consistently define the
     characters listed below, but its descendants, like DWB, Plan 9, or
     Solaris troff, can be made to support them by defining them in font
     description files, making them aliases of existing glyphs if
     necessary; see groff_font(5).  groff’s extended notation for
     special characters, \[xx], is also supported by mandoc(1), Heirloom
     Doctools troff, and neatroff, but not DWB, Plan 9, or Solaris
     troffs.
...
     \[ha]  Basic Latin circumflex accent (“hat”).  Some output devices
            format “^” as U+02C6 (modifier letter circumflex accent).
Notes
     Some tips on composing and troubleshooting your man pages follow.
...
     • Escape sequences of the form \[xx] don’t format correctly.

       The \[xx] special character escape sequence is a GNU troff
       extension also supported by mandoc, Heirloom Doctools troff, and
       neatroff.  DWB, Plan 9, and Solaris troffs don’t implement it.
       If your man page requires portability to these formatters, spell
       such escape sequences as “\(xx”; no closing parenthesis is used.
       xx must be exactly two characters; groff_char(7) lists portable
       special character identifiers.
2026-05-06 04:53:12 -05:00
G. Branden Robinson b602b495bb doc/makedefs.6: Clarify - as option argument
Quote it, use fuller C standard I/O terminology, and use active voice.
2026-05-06 04:53:12 -05:00
G. Branden Robinson 4ab9ec36de doc/makedefs.6: Tigthen formatting
Set synopsis syntax characters adjacently to operands.
2026-05-06 04:53:12 -05:00
G. Branden Robinson bdae11c61d doc/nethack.6: Revise role info in synopsis
Revise presentation of backward-compatible role options.

- Give them a metasyntactic variable name and present them in the main
  command synopsis.

- Present the possible values in a typographical display, indented with
  filling disabled.
2026-05-06 04:53:12 -05:00
G. Branden Robinson 44c8405000 doc/nethack.6: Revise primary synopsis
Set it as a hanging paragraph, as is idiomatic for Unix command
synopses.  Tighten formatting: set synopsis syntax characters adjacently
to operands.  Also drop explicit line breaks, permitting synopsis to
exercise the configured line length of the selected output device.

Temporarily disable adjustment in a manner more friendly to the system's
(or user's) configuration.[1]  Stop attempting to manipulate
hyphenation; there's no portable way to do that.[2]

Before and after, as rendered with Solaris 10, DWB 3.3, and Plan 9
troffs:

-     nethack [ -d|--directory directory ] [ -w|--windowtype
-     interface ]
-     [ --nethackrc:rc-file | --no-nethackrc ] [ -n ] [ -dec |
-     -ibm ]
-     [ -u player-name ] [ -X | -D ] [ -p profession ] [ -r race ]
-     [ -@ ]
+     nethack [-d|--directory directory]
+          [-w|--windowtype interface]
+          [--nethackrc:rc-file|--no-nethackrc] [-n] [-dec|-ibm]
+          [-u player-name] [-X|-D] [-p profession] [-r race] [-@]

Not shown: Literal text is in bold, and option arguments in italics.

(Full disclosure: The aforementioned formatters use different page
offsets [left margin sizes], and Plan 9 nroff doesn't render _any_
typeface changes, ever, for any document using any macro package.)

Before and after, as rendered with groff, mandoc, and Heirloom Doctools
troff:

-       [ --nethackrc:rc-file | --no-nethackrc ] [ -n ] [ -dec | -ibm ]
-       [ -u player-name ] [ -X | -D ] [ -p profession ] [ -r race ] [ -@ ]
+       nethack [-d|--directory directory] [-w|--windowtype interface]
+              [--nethackrc:rc-file|--no-nethackrc] [-n] [-dec|-ibm]
+              [-u player-name] [-X|-D] [-p profession] [-r race] [-@]

(Full disclosure: groff 1.24.x man(7) uses a default line length of
80n,[3] up from the 78n of its previous releases going back to 2002, and
used by Heirloom Doctools and mandoc.)

[1] https://cgit.git.savannah.gnu.org/cgit/groff.git/tree/tmac/an.tmac?h=1.24.1#n159
[2] https://cgit.git.savannah.gnu.org/cgit/groff.git/tree/tmac/an.tmac?h=1.24.1#n202
[3] https://cgit.git.savannah.gnu.org/cgit/groff.git/tree/NEWS?h=1.24.1#n509
2026-05-06 04:53:12 -05:00
G. Branden Robinson e4476516cd doc/nethack.6: Revise scoreboard mode synopsis
Set it as a hanging paragraph, as is idiomatic for Unix command
synopses.  Tighten formatting: set synopsis syntax characters adjacently
to operands.  Since viewing the scoreboard is a separate mode of
operation, arrange first the options that select this mode.[1]  Also
drop explicit line breaks, permitting synopsis to exercise the
configured line length of the selected output device.

Before and after, as rendered with Solaris 10 troff:

-     nethack [ -d|--directory directory ] -s|--scores [ -v ]
-     [ -p profession ] [ -r race ] [ player-name ...]
+     nethack {-s|--scores} [-d|--directory directory] [-v]
+          [-p profession] [-r race] [player-name ...]

Before and after, as rendered with groff, mandoc, and Heirloom Doctools
troff:

-     nethack [ -d|--directory directory ] -s|--scores [ -v ]
-     [ -p profession ] [ -r race ] [ player‐name ...]
+     nethack {-s|--scores} [-d|--directory directory] [-v] [-p profession]
+            [-r race] [player‐name ...]

Not shown: Literal text is in bold, and option arguments in italics.

[1] See, for example,
<https://pubs.opengroup.org/onlinepubs/9799919799.2024edition/utilities/compress.html>.
2026-05-06 04:53:12 -05:00
G. Branden Robinson 2011f8b4c1 doc/nethack.6: Split non-playing synopses
The `--showpaths` and `--version` options can't be (usefully) combined
with `--usage` or `--help`, nor with each other.
2026-05-06 04:53:12 -05:00
G. Branden Robinson 2b4b589a63 doc/nethack.6: Spell option argument as "rc-file"
...that is, not in capitals.  Lowercase seems more consistent with Unix
practice.
2026-05-06 04:53:12 -05:00
G. Branden Robinson 2c9bda8660 doc/nethack.6: Respell playername option argument
Spell it as a hyphenated noun phrase.  Use an ellipsis instead of
pluralization to mark its repeatability.  Slightly recast its
description.
2026-05-06 04:53:12 -05:00
G. Branden Robinson 4a76d66ad9 doc/nethack.6: Be more portable to old roffs (4/4)
Define strings for directional single quotation marks.

groff_man_style(7):

Notes
     Some tips on composing and troubleshooting your man pages follow.
...
     • When and how should I use quotation marks?
...
       Obtaining directional single quotation marks is more of a
       challenge.  Historically, man pages used ` and ', which troff
       rendered on typesetters as ‘ and ’, exclusively for them.
       However, in recent years, some distributors of groff have chosen
       to override the meanings of these characters in man pages,
       remapping them to their Unicode Basic Latin code points.
       Unfortunately, ` and ' are the only reliable means of obtaining
       directional single quotation marks in AT&T troff; in that
       implementation, often no special character escape sequences exist
       to obtain them.  Further, AT&T troff’s special character
       identifiers, like its font names, were device‐specific.  To
       achieve quotation portably in man pages rendered both by AT&T and
       more modern troffs, consider adding a preamble to your page after
       the TH call as follows.

              .ie \n(.g \{\
              .  ds oq \[oq]\"
              .  ds cq \[cq]\"
              .\}
              .el \{\
              .  ds oq `\"
              .  ds cq '\"
              .\}

       You must then use the \* escape sequence to interpolate the
       quotation mark strings.

              The command
              .RB \*(oq "while !\& git pull; do sleep 10; done" \*(cq
              retries an update from the repository until it succeeds.

       If this procedure seems complex, petition your distributor to
       revert their remapping of the ` and ' characters.
2026-05-06 04:53:12 -05:00
G. Branden Robinson 1922fb687d doc/nethack.6: Be more portable to old roffs (3/4)
Unbreakable spaces in AT&T troff were always non-adjustable.

Define a string to use groff's `\~` extension if possible.

groff_man_style(7):
   Portability
...
     \~        Adjustable non‐breaking space.  Use this escape sequence
               to prevent a break inside a short phrase or between a
               numerical quantity and its corresponding unit(s).

                      Before starting the motor,
                      set the output speed to\~1.
                      There are 1,024\~bytes in 1\~KiB.
                      CSTR\~#8 documents the B\~language.

               \~ is a GNU extension also supported by Heirloom Doctools
               troff 050915 (September 2005), mandoc 1.9.14
               (2009‐11‐16), neatroff (commit 1c6ab0f6e, 2016‐09‐13),
               and Plan 9 from User Space troff (commit 93f8143600,
               2022‐08‐12), but not by DWB or Solaris troffs.

Fixes bad rendering in DWB 3.3 troff:

@@ -999 +999 @@
-            file.   -s|-s~-v  may  also  be  followed  by  arguments  -p
+            file.   -s|-s -v  may  also  be  followed  by  arguments  -p
@@ -1005 +1005 @@
-            entries  which  match both.  -s|-s~-v may be followed by one
+            entries  which  match both.  -s|-s -v may be followed by one

Solaris 10 troff _would_ misrender as well, but a different portability
problem keeps some of the foregoing text from rendering at all.
2026-05-06 04:53:12 -05:00
G. Branden Robinson afeec3dd65 doc/nethack.6: Be more portable to old roffs (2/4)
Old *roffs don't support the `ti` special character.  Compensate.

Before (DWB, Solaris 10):
            The --nethackrc:RC-file option will use RC-file  instead  of
            the   default   run-time   configuration   file   (typically
            /.nethackrc) and the --no-nethackrc option can  be  used  to
            skip any run-time configuration file.

Before (Plan 9):
          The --nethackrc:RC-file option will use RC-file  instead  of
          the   default   run-time   configuration   file   (typically
          ti/.nethackrc) and the --no-nethackrc option can be  used  to
          skip any run-time configuration file.

After (all):
            The --nethackrc:RC-file option will use RC-file  instead  of
            the   default   run-time   configuration   file   (typically
            ~/.nethackrc) and the --no-nethackrc option can be  used  to
            skip any run-time configuration file.
2026-05-06 04:53:12 -05:00
G. Branden Robinson 14430511bd doc/nethack.6: Be more portable to old roffs (1/4)
Favor the very old `lq` and `rq` extension _strings_ over special
characters of the same name.  This fixes missing punctuation and text
when rendering this document with DWB and Solaris 10 nroffs, and
misrendered text with Plan 9 nroff.

Before (DWB, Solaris 10):
            discovery  mode (also known as explore mode).  -D will start
            the game in debug mode (also known  as  wizard  mode)  after
            changing  the  character  name  to  wizard, if the player is
            allowed.  Otherwise it will switch to -X.  Control of who is
            allowed to use debug mode is done via the

Before (Plan 9):
          discovery  mode (also known as explore mode).  -D will start
          the game in debug mode (also known  as  wizard  mode)  after
          changing  the  character  name to lqwizardrq, if the player is
          allowed.  Otherwise it will switch to -X.  Control of who is
          allowed to use debug mode is done via the lqWIZARDS=rq line in
          NetHack's sysconf file.

After (all):
            The -X option will start the game in a  special  non-scoring
            discovery  mode (also known as explore mode).  -D will start
            the game in debug mode (also known  as  wizard  mode)  after
            changing  the  character  name to "wizard", if the player is
            allowed.  Otherwise it will switch to -X.  Control of who is
            allowed to use debug mode is done via the "WIZARDS=" line in
            NetHack's sysconf file.

(There are minor differences in the page offset amount, and Plan 9 uses
UTF-8 double quotation marks, U+201C and U+201D.)

groff_man(7):
   Strings
     The following strings are defined for use in man pages.  None of
     these is necessary in a contemporary man page; see
     groff_man_style(7). ...
...
     \*(lq
     \*(rq   interpolate special character escape sequences for left and
             right double‐quotation marks, \(lq and \(rq, respectively.

(I see that I should reword the foregoing to something like "None is
necessary in man pages targeting only contemporary *roff formatters".)

   History

     ... 4BSD (1980) added lq and rq strings.  ... Unix System V (1988)
     incorporated the lq and rq strings.

     Except for EX/EE, James Clark implemented the foregoing features in
     early versions of groff.  ... Plan 9 from User Space’s troff ...
     incorporated the lq and rq strings in 2025.

groff_man_style(7):

Notes
     Some tips on composing and troubleshooting your man pages follow.
...
     • When and how should I use quotation marks?

       As noted above in subsection “Font style macros”, apply quotation
       marks to “brief specimens of literal text, such as article
       titles, inline examples, mentions of individual characters or
       short strings, and (sub)section headings in man pages”.  Multi‐
       word literals, such as Unix commands with arguments, when set
       inline (as opposed to displayed between EX and EE), should be
       quoted to ensure that the boundaries of the literal are clear
       even when the material is stripped of font styling by, for
       example, copy‐and‐paste operations.  groff, Heirloom Doctools
       troff, neatroff, and mandoc support all of the special characters
       \[oq], \[cq], \[lq], \[rq], \[aq], and \[dq] described in
       subsection “Portability” above.  DWB, Plan 9, and Solaris troffs
       do not.  Interpolating the strings \*(lq and \*(rq portably
       yields directional double quotation marks, if available, in all
       these formatters (though neatroff does not supply a man macro
       package), but they cannot reliably be used in macro arguments.

Per the final sentence above, do a little dance to avoid using these
strings in macro arguments.
2026-05-06 04:53:12 -05:00
G. Branden Robinson fb611b60bc doc/nethack.6: Spell "NetHack" thus
...when not referring specifically to the command's file name.
2026-05-06 04:53:12 -05:00
G. Branden Robinson 103d5f27e7 doc/makedefs.6: Drop redundant br requests
Paragraphing macros in *roff systems generally break the output line,
and the same is true of all of man(7)'s paragraphing macros.

groff_man(7):
   Paragraphing macros
     These macros break the output line.  An ordinary paragraph (P)
     indents all output lines by the same amount.  A hanging paragraph
     (HP) is a cosmetic variant of P with a hanging indent.  Definition
     lists frequently occur in man pages; these can be set as tagged
     paragraphs, which have one (TP) or more (TQ) leading tags followed
     by a paragraph that has an additional indentation.
2026-05-06 04:53:08 -05:00
G. Branden Robinson 67e724cd75 doc/*.[67]: Set man page xrefs consistently
NetHack's man pages already preponderantly use man(7) `IR` macro for
this purpose.  Align outliers.

The "SEE ALSO" section of doc/mn.7 is a partial exception.  While the
rest of the document sets cross-referenced man page topics in italics,
this section of the page does not.  It seems likely that this decision
was made in deliberate imitation of Seventh Edition Unix manuals (1979)
or their descendants in USG/USL and BSD Unices.  That feature of the
Unix man pages, however, was not deliberate per Doug McIlroy, the author
of the man(7) macros and editor of Volume 1 of the Seventh Edition Unix
Programmer's Manual, per his communication on the groff mailing list.

But NetHack has a policy of not modifying Matt Bishop's "mn" macro
file or its man page, so I leave that exception in place.

References:

https://lists.gnu.org/archive/html/groff/2021-08/msg00023.html
https://lists.gnu.org/archive/html/groff/2021-08/msg00040.html
https://github.com/NetHack/NetHack/pull/977#issuecomment-1424996578
2026-05-06 04:39:57 -05:00
G. Branden Robinson bbcfc474d0 doc/*.[67]: Drop redundant calls and requests
Sectioning and paragraphing macros always break the output line.

(Sub)sectioning macros always set text after the heading as a paragraph.

Fixes:

$ mandoc -T lint doc/*.[67] # output edited
doc/makedefs.6:49:2: WARNING: skipping paragraph macro: PP after SH
doc/nethack.6:367:2: WARNING: skipping paragraph macro: br after PP
doc/nethack.6:365:2: WARNING: skipping paragraph macro: PP empty
doc/nethack.6:157:2: WARNING: skipping paragraph macro: PP after SH
doc/nethack.6:431:2: WARNING: skipping paragraph macro: PP after SH
doc/nethack.6:673:2: WARNING: skipping paragraph macro: PP after SH
doc/nethack.6:676:2: WARNING: skipping paragraph macro: PP after SH
doc/recover.6:29:2: WARNING: skipping paragraph macro: PP after SH
doc/recover.6:125:2: WARNING: skipping paragraph macro: PP after SH
doc/recover.6:141:2: WARNING: skipping paragraph macro: PP after SH
doc/mnh.7:23:2: WARNING: skipping paragraph macro: PP after SH
doc/mnh.7:46:2: WARNING: skipping paragraph macro: PP after SH
2026-05-06 04:39:57 -05:00
G. Branden Robinson d2a49d4f8a doc/nethack.6: Revise "ENVIRONMENT" section
Explain meaning of stacked paragraph tags naming environment variables.

Drop call of deprecated man(7) `DT` macro and invocation of `ta` request
to set tab stops to attempt table-like layout.  (The latter made the
former nilpotent anyway.)  Replace this material with calls of tagged
paragraphing macro `TP` and groff man(7)'s `TQ` extension for setting
multiple tags with a paragraph.  The result takes up more screen lines,
but renders well with more formatters.

Set indentation of tagged paragraph using a constant numeric expression
to accommodate pseudo-roff formatters that don't implement arithmetic
evaluation.  (Some of these ignore _any_ indentation, regardless.)

Slightly recast descriptions of environment variables.

Set file name literals in italics.

Protect file and environment variable names from hyphenation.

Fixes:

an.tmac:doc/nethack.6:608: style: use of deprecated macro: .DT
2026-05-06 04:39:57 -05:00
G. Branden Robinson 6c9e8cb1c9 doc/nethack.6: Revise "FILES" section
* Define string to exercise groff's hyphenless break point feature.
  This helps with file names and URLs.  On formatters that don't claim
  compatibility with groff, define the string as nothing, getting the
  same result as before (a _highly_ ragged right margin, jarring
  adjustment, or overset lines).

* If the formatter does not claim compatibility with groff, define a
  copy of groff man(7)'s `TQ` macro to ease stacking of paragraph tags.

* Set file name literals in italics.  Stop quoting them (which was
  inconsistently done anyway).

* Revise "FILES" section.
  - Drop redundant `PP` paragraphing call.

    $ mandoc -T lint doc/nethack.6
    ...
    mandoc: doc/nethack.6:432:2: WARNING: skipping paragraph macro: PP after SH
    ...

    groff_man(7):

     .SH [heading‐text]
            Set heading‐text as a section heading. ...  Text lines after
            the call are set as an ordinary paragraph (P).

  - Drop call of deprecated man(7) `DT` macro and invocation of `ta`
    request to set tab stops to attempt table-like layout.  (The latter
    made the former nilpotent anyway.)  Replace this material with calls
    of tagged paragraphing macro `TP` and groff man(7)'s `TQ` extension
    for setting multiple tags with a paragraph.  The result takes up
    more screen lines, but renders well with more formatters.

  - Fine-tune styling of file names.

    groff_man_style(7):
            Use italics for file and path names, ... for variant
            (user‐replaceable) portions of syntax synopses, ... and
            anywhere a parameter requiring replacement by the user is
            encountered.  An exception involves variant text in a
            context already typeset in italics, such as file or path
            names with replaceable components; in such cases, follow the
            convention of mathematical typography: set the file or path
            name in italics as usual but use roman for the variant part
            (see IR and RI below), and italics again in running roman
            text when referring to the variant material.

Solaris 10, DWB 3.3, and Plan 9 from User Space nroffs formatted the
table of file names and descriptions quite badly.

Before:
            nethack                     The program itself.
            Guidebook | Guidebook.txt   NetHack's user manual.
            data, oracles, rumors       Data files used by NetHack.
            bogusmon                    Another data file.
            engrave, epitaph, tribute   Still more data files.
            symbols                     Data file holding sets of speci-
            fications
                                        for  how  to  display  monsters,
            objects, and
                                        map features.
            options                     Data file containing a  descrip-
            tion of the
                                        build-time option settings.
            help, hh, cmdhelp           Help data files.  ('cmdhelp'  is
            obsolete.)
...

Now (pagination on AT&T nroffs is omitted):
            nethack
                 The program itself.

            Guidebook
            Guidebook.txt
                 NetHack's user manual.

            data
            oracles
            rumors
                 Data files used by NetHack.

            bogusmon
                 Another data file.

            engrave
            epitaph
            tribute
                 Still more data files.

            symbols
                 Data file holding sets of  specifications  for  how  to
                 display monsters, objects, and map features.

            options
                 Data file containing a description  of  the  build-time
                 option settings.

            help
            hh
            cmdhelp
                 Help data files.  (cmdhelp is obsolete.)

Fixes:

an.tmac:doc/nethack.6:444: style: use of deprecated macro: .DT
2026-05-06 04:39:57 -05:00
G. Branden Robinson a562b80019 doc/makedefs.6: Fix style nits
* End sentence with period, like others in this document.
* Set literal file name in italics like all others in this document, not
  bold.
2026-05-06 04:39:57 -05:00
G. Branden Robinson 0c915adea1 doc/makedefs.6: Break text line at end of sentence
Ensure that *roff programs detect the sentence ending here.

https://www.gnu.org/software/groff/manual/groff.html.node/Sentences.html
2026-05-06 04:39:57 -05:00
G. Branden Robinson 32c1b24f32 doc/makedefs.6: Make punct styling consistent
Elsewhere in this document, punctuation after italicized words is set in
roman, not italics.
2026-05-06 04:39:57 -05:00
G. Branden Robinson 82c174a847 doc/makedefs.6: Fix warning from DWB 3.3 nroff
Not a serious issue in my opinion, but worth fixing.  DWB does not
misrender the document, and the "stack" referred to is not the runtime
stack employed by the operating system, but one in the *roff language
runtime.

The diagnostic appears to be spurious in this case, but it isn't always.

https://github.com/n-t-roff/DWB3.3/issues/10
2026-05-06 04:39:57 -05:00
G. Branden Robinson fc0fd459b1 doc/nethack.6: Drop spurious request arguments
No *roff known to me interprets arguments to the `br` request.  They
don't complain, either, but some day that may change.

https://savannah.gnu.org/bugs/?61450
2026-05-06 04:39:57 -05:00
G. Branden Robinson 9508a133d0 doc/*.6: Fix unescaped hyphens
groff_man_style(7):
     •  Option dashes are specified with the \- escape sequence; this is
        an important practice to make them clearly visible and to
        facilitate copy‐and‐paste from the rendered man page to a shell
        prompt or text file.
...
     \-     Minus sign.  \- produces the basic Latin hyphen‐minus
            (U+002D) specifying Unix command‐line options and frequently
            used in file names.  “-” is a hyphen in roff; some output
            devices format it as U+2010 (hyphen).
2026-05-06 04:39:57 -05:00
G. Branden Robinson 2566ddefdf doc/*.6: Break input lines at sentence endings
...pacifying a warning from the forthcoming groff 1.25.

Fixes:

troff:doc/dlb.6:159: warning: end of sentence detected before end of text line [-w style]
troff:doc/makedefs.6:53: warning: end of sentence detected before end of text line [-w style]
troff:doc/makedefs.6:55: warning: end of sentence detected before end of text line [-w style]
troff:doc/makedefs.6:58: warning: end of sentence detected before end of text line [-w style]
troff:doc/makedefs.6:153: warning: end of sentence detected before end of text line [-w style]
troff:doc/makedefs.6:159: warning: end of sentence detected before end of text line [-w style]
troff:doc/makedefs.6:166: warning: end of sentence detected before end of text line [-w style]
troff:doc/makedefs.6:222: warning: end of sentence detected before end of text line [-w style]
troff:doc/makedefs.6:245: warning: end of sentence detected before end of text line [-w style]
troff:doc/makedefs.6:279: warning: end of sentence detected before end of text line [-w style]
troff:doc/mnh.7:30: warning: end of sentence detected before end of text line [-w style]
troff:doc/nethack.6:225: warning: end of sentence detected before end of text line [-w style]
troff:doc/nethack.6:226: warning: end of sentence detected before end of text line [-w style]
troff:doc/nethack.6:230: warning: end of sentence detected before end of text line [-w style]
troff:doc/nethack.6:234: warning: end of sentence detected before end of text line [-w style]
troff:doc/nethack.6:236: warning: end of sentence detected before end of text line [-w style]
troff:doc/nethack.6:524: warning: end of sentence detected before end of text line [-w style]
troff:doc/nethack.6:577: warning: end of sentence detected before end of text line [-w style]
troff:doc/recover.6:155: warning: end of sentence detected before end of text line [-w style]
2026-05-06 04:39:57 -05:00
G. Branden Robinson a33da92029 doc/*.6: Tweak copyright notices in man pages
Use *roff special character `\(co` for copyright sign.  This special
character identifier is _almost_ universally portable, dating back to
Ossanna troff in 1976.[1]  The exception is Plan 9 nroff, which claims
to be thoroughly UTF-8 oriented and should be able to render a copyright
sign.[2]  If no glyph for the character is available, the output device
driver degrades it to "c" (which is technically correct[3]), except for
groff, which falls back to "(C)"[4] only on its "ascii" output device.
All of groff's other devices have a a proper copyright sign.[5]

References:
[1] https://archive.org/details/unix-programmers-manual-seventh-edition-vol-2-1983/
    (pp. 196ff., see esp. "Table II", p. 227)
[2] https://github.com/9fans/plan9port/pull/735#issuecomment-3391733330
[3] https://www.copyright.gov/circs/circ03.pdf
[4] https://github.com/GitMirroring/groff/blob/a4d6e619afc8042b12084527c3c11eae919533e2/tmac/tty.tmac#L123
[5] https://paste.c-net.org/ComradesCourage
2026-05-06 04:39:57 -05:00
G. Branden Robinson 56d0708ac7 doc/mnh.7: Migrate to use "NH_DATESUB"
Aligns with other NetHack man pages and fixes:
$ nroff -ww -z -rCHECKSTYLE=4 -man doc/*.[67]
an.tmac:doc/mnh.7:2: style: .TH missing fourth argument; suggest package/project name and version (e.g., "groff 1.23.0")
2026-05-06 04:39:57 -05:00
G. Branden Robinson c91ee79dcb doc/nethack.6: Fix inelegant formatting
Replace instances of blank line paragraphing with `PP` macro calls.

There are three problems with the style of paragraphing that this commit
fixes.

1.  A `br` break request is redundant with an adjacent blank text line.
2.  A `br` request is also redundant with a paragraphing macro call.
3.  When you use a paragraphing macro call instead of a blank text line,
    you get the configured amount inter-paragraph space.  When
    typesetting with the man(7) package, the default inter-paragraph
    space amount is 0.4v.  A blank text line usually puts 1v of empty
    space into the document.

See groff_man_style(7).

Fixes:
$ nroff -ww -z -rCHECKSTYLE=4 -man doc/*.[67]
an.tmac:doc/nethack.6:435: style: blank line in input
an.tmac:doc/nethack.6:442: style: blank line in input
an.tmac:doc/nethack.6:535: style: blank line in input
an.tmac:doc/nethack.6:539: style: blank line in input
an.tmac:doc/nethack.6:543: style: blank line in input
an.tmac:doc/nethack.6:568: style: blank line in input
an.tmac:doc/nethack.6:572: style: blank line in input
2026-05-06 04:39:57 -05:00
G. Branden Robinson 723afcd51f doc/*.6: Fix macro usage style errors
Fixes:
$ nroff -ww -z -rCHECKSTYLE=4 -man doc/*.[67]
an.tmac:doc/dlb.6:41: style: .IR expects at least 2 arguments, got 1
an.tmac:doc/makedefs.6:125: style: .IR expects at least 2 arguments, got 1
an.tmac:doc/makedefs.6:131: style: .IR expects at least 2 arguments, got 1
an.tmac:doc/makedefs.6:137: style: .IR expects at least 2 arguments, got 1
an.tmac:doc/nethack.6:89: style: .BR expects at least 2 arguments, got 1
an.tmac:doc/nethack.6:129: style: .BR expects at least 2 arguments, got 1
an.tmac:doc/nethack.6:273: style: .BR expects at least 2 arguments, got 1
2026-05-06 04:39:57 -05:00
G. Branden Robinson d90422f0ce doc/nethack.6: Drop commented-out legacy remark
Unix terminal drivers started transitioning away from paper terminals
and toward video terminals, and therefore away from '#' and '@' as the
"erase" and "kill" characters, respectively, before NetHack was born.
2026-05-06 04:39:57 -05:00
G. Branden Robinson 3871409560 doc/nethack.6: Fix poor commented-out *roff syntax
groff_man_style(7):
   Portability
...
     \e        Format the roff escape character on the output; widely
               used in man pages to render a backslash glyph.  It works
               reliably as long as the “ec” request is not used, which
               should never happen in man pages, and it is slightly more
               portable than the more explicit \[rs] (“reverse solidus”)
               special character escape sequence.

This change's purpose is to put things right in case the change I'm
proposing next to delete this language entirely gets reverted.
2026-05-06 04:39:57 -05:00
G. Branden Robinson 75e2a6a669 doc/nethack.6: Fix invalid *roff syntax
Also fix a case hidden by a comment.

Fixes:
$ nroff -ww -z -man doc/*.[67]
troff:doc/nethack.6:68: warning: escape character ignored before '@'
troff:doc/nethack.6:292: warning: escape character ignored before '@'
2026-05-06 04:39:57 -05:00
Patric Mueller 60de227615 fix ncurses build on macOS with Homebrew 2026-05-06 09:58:00 +02:00
Benjamin de WaalandClaude Opus 4.7 f6afa23e28 libnh: fix native build of libnh.a on macOS
Fixes four issues that prevented `make WANT_LIBNH=1 all` from producing
a libnh.a that could be linked into a host program on macOS.  Before
these patches, it built but the resulting archive was unusable: macOS
ld errored on a nested liblua archive member, was missing date.o and
hacklib symbols (`populate_nomakedefs`, `eos`, `lcase`, `mungspaces`,
...), and had duplicate definitions of `main`, `whoami`, etc.

Specific changes:

1. sys/libnh/libnhmain.c: drop `static` on `whoami()`.  src/earlyarg.c
   declares it `extern` and calls it from `scores_only()`; the static
   makes it file-local and that reference goes unresolved.

2. sys/libnh/libnhmain.c: gate the emscripten-only code in get_nhuuid
   with `#ifdef __EMSCRIPTEN__` instead of `#ifdef NHUUID`.  The macOS
   hints define NHUUID for the libnh build (they did so unconditionally
   before NO_NHUUID even existed), so on native builds the compiler
   tried to call `emscripten_run_script_int` / `_string` and failed
   with implicit-function-declaration errors.  __EMSCRIPTEN__ is the
   real signal for "this is being cross-compiled to WASM."

3. sys/unix/hints/macOS.500: in the WANT_LIBNH block, add an explicit
   `recover: lua_support` dependency (gated by MAKEFILE_TOP).  When
   $(GAME) is overridden to empty, the regular `recover: $(GAME)` chain
   no longer triggers `lua_support`, so include/nhlua.h never gets
   generated and recover.c's transitive #include of hack.h fails.

4. sys/unix/hints/macOS.500: rewrite the libnh.a rule.  The previous
   `ar rcs libnh.a $(HOBJ) $(LIBNHSYSOBJ) liblua-$(LUA_VERSION).a` had
   four problems: (a) ar archives liblua.a as a single opaque member
   that macOS ld can't dereference, (b) date.o (DATE_O, kept separate
   from HOBJ) was never archived, so `populate_nomakedefs` and
   `nomakedefs` were missing, (c) hacklib.a was likewise omitted, and
   (d) HOBJ already contains $(SYSOBJ) (with unixmain.o) and $(WINOBJ)
   (the tty windowport), which duplicated symbols from libnhmain.o /
   winshim.o.

   The fix uses `libtool -static` so hacklib.a and liblua's archive
   have their members merged rather than nested, depends on $(LUALIB)
   so lua_support runs first, includes $(DATE_O) and $(TARGET_HACKLIB),
   and uses $(filter-out $(SYSOBJ) $(WINOBJ),$(HOBJ)) to drop the
   duplicates.

Verified by clean rebuild on macOS 26 (arm64, Apple clang 17):
  make spotless
  make fetch-Lua
  make WANT_LIBNH=1 all
and link-tested with a tiny harness that calls
shim_graphics_set_callback() against the resulting libnh.a.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 07:06:41 +01:00
nhmall 8fcc15a860 mention_decor and tutorial K4372
Bug report stated:
"If 'mention_decor' is set in config file or NETHACKOPTIONS,
starting the game tells you that you are standing on stairs
which lead out of the dungeon.  But if you also start the
tutorial, you won't be on those stairs--they won't even exist
until the tutorial is exited.

The stairs message can't be suppressed until the program
knows whether the tutorial will be entered, and since
prompting is one of the ways to decide that."

What this does:

Don't heed mention_decor option during the primary rcfile()
processing.

Do heed it after the tutorial.

Note:
If mention_decor is expected to actually be active during the
tutorial, then the rcfile_only_this_option(opt_mention_decor)
likely has to be moved to a different line, which should be
easy enough.
2026-05-05 11:03:44 -04:00
nhmall b7735632bf follow-up for issue #1512
The previous fix, while valid, still prompts for input during early
options processing if stdin is a tty. It really shouldn't be doing
that during early options such as --showpaths, so alter the placement
of the program_state.earlyoptions flag within *main().
2026-05-05 06:57:32 -04:00
nhmall d259245a47 Merge branch 'amiga-followups' of https://github.com/ingpaschke/NetHack into NetHack-5.0 2026-05-04 22:58:59 -04:00
Ingo Paschke ed4d100459 Amiga: provide a real v4 UUID via get_nhuuid 2026-05-04 19:13:48 +02:00
Ingo Paschke 5852e8c2a0 Amiga: ship as a NetHack drawer with drawer icon and README 2026-05-04 15:43:12 +02:00
Ingo Paschke d94fb08f8b Amiga: ship Workbench icons for the binary and text files 2026-05-04 15:33:20 +02:00
Ingo Paschke 9a909be7c5 Amiga: auto-assign NetHack: to the program directory 2026-05-04 15:33:14 +02:00
nhmall 400c458fee fix copyright release details
GitHub issue https://github.com/NetHack/NetHack/issues/1513

Starting a new game, at the
'Shall I pick character's race, role, gender and alignment for you? [ynaq]'
prompt, the game shows as 'Version 5.0.0-0 Unix Work-in-progress'
but then once the game has started and you check #version you see
the correct 'Unix NetHack Version 5.0.0-0 post-release' feedback.

Closes #1513
2026-05-04 09:06:52 -04:00
nhmall 60d59f4d55 early startup options could be run non-interactively
https://github.com/NetHack/NetHack/issues/1512

Closes #1512
2026-05-04 08:23:56 -04:00
Ingo Paschke 82efba55f2 Amiga: fix misleading fallback warning and stale comment 2026-05-04 12:42:36 +02:00
Ingo Paschke b72f5cb9a2 Amiga: stop rendering CLR_BLACK and CLR_WHITE as inverse video 2026-05-04 12:42:10 +02:00
Ingo Paschke 548f356cbd Amiga: default number_pad:1 in shipped nethack.cnf 2026-05-04 12:38:21 +02:00
Ingo Paschke 691a8dd7d2 Amiga: promote AMIGA_INTUITION to supported so it shows up in version info 2026-05-04 12:37:34 +02:00
Ingo Paschke f1393bdf6c Amiga: wire altmeta option to sysflags.altmeta 2026-05-04 12:35:33 +02:00
nhmall 3a753dc98e yet another follow-up 2026-05-03 14:13:28 -04:00
nhmall b92c1483bb another libnhmain.c follow-up
Check if it's available before calling.
2026-05-03 14:11:47 -04:00
nhmall b6482d09f4 libnhmain follow-up 2026-05-03 13:26:36 -04:00
nhmall a55ca016eb hints file update for wasm CFLAGS to include -DNHUUID 2026-05-03 13:18:37 -04:00
nhmall ced26a2cea update get_nhuuid() for libnhmain
Try using emscripten_run_script_string("crypto.randomUUID()");
I need to commit this to the repository to test it elsewhere.

If there isn't a revert shortly after this, it must have at least
built without issue.
2026-05-03 13:06:54 -04:00
nhmall 4eefeb30dd Merge branch 'amiga-5.0.0-fixes' of https://github.com/ingpaschke/NetHack into NetHack-5.0 2026-05-03 12:27:14 -04:00
Ingo Paschke b6747f89ca Amiga: fall back to text mode when tile mode is not viable
Detect Workbench depth, display-database MaxDepth, and free chip RAM;
if any signals AMIV can't run (e.g. A1000 with 4-colour WB), swap
windowprocs to amii_procs before opening any screens.
2026-05-03 18:01:07 +02:00
Ingo Paschke 2a59726f18 Amiga: disable SYSCF, drop sysconf from package
SYSCF is for multi-user system-admin lockdown; single-user Amigas
don't need it, and assure_syscf_file() killing the binary when run
outside NetHack: was breaking normal launches.
2026-05-03 17:48:22 +02:00
Ingo Paschke d9da319622 Amiga: honor __stack under libnix
Reference __stkinit so the linker pulls swapstack.o from libnix.a;
without it the program runs on the inherited shell stack and crashes
inside Lua / level-gen.
2026-05-03 17:48:15 +02:00
nhmall 1947eb98a4 CROSS_TO_WASM build fixes 2026-05-03 07:37:13 -04:00
nhmall c2a7bdb369 less prone to overlooking target names next time 2026-05-02 22:05:31 -04:00
nhmall a417ca49a2 tag as post-release 2026-05-02 19:26:05 -04:00
nhmall 6b92be3656 Windows nmake build fix for 5.0.0 2026-05-02 14:12:40 -04:00
nhmall 77040f70c7 cross-compiler build fixes 2026-05-02 14:10:04 -04:00
Alex Smith 16ff591153 check_mongen_order shouldn't be compiled into release builds
This function is only used during development, so if it's included
in a release build, the compiler will warn that it's never used.
2026-05-02 17:47:25 +01:00
nhmall 82bb085616 Merge branch 'to500' into NetHack-next 2026-05-02 11:24:50 -04:00
nhw_cron 681bac6aa1 This is cron-daily v1-Apr-26-2026. 005guidebook updated: doc/Guidebook.txt 2026-05-02 11:23:37 -04:00
nhmall e90bc62d7d Merge branch 'to500' into NetHack-next 2026-05-02 10:54:33 -04:00
nhmall 1db2ee5104 dat/history sync 2026-05-02 10:49:43 -04:00
nhmall 41ba62618a placeholder in you 2026-05-02 10:45:29 -04:00
nhmall f63164efc6 version in NetHackProperties.props 2026-05-02 10:37:47 -04:00
nhmall 3fd34d902c Merge branch 'to500' into NetHack-next 2026-05-02 10:27:50 -04:00
nhmall 5c57ac49bf Guidebook wording update 2026-05-02 10:27:15 -04:00
nhmall c4af3448cf patchlevel.h wording bit 2026-05-02 10:25:34 -04:00
nhmall 1f7b2c0ef4 another README update 2026-05-02 10:19:24 -04:00
nhmall 5228a01cde Guidebook.txt update 2026-05-02 10:15:44 -04:00
nhmall f6e2690a7a Guidebook.txt update 2026-05-02 10:14:56 -04:00
nhmall ed997de587 Merge branch 'to500' into NetHack-next 2026-05-02 10:05:32 -04:00
nhmall ce15b9644e README update 2026-05-02 10:05:02 -04:00
nhmall 2b634b1672 Merge branch 'to500' into NetHack-next 2026-05-02 09:56:30 -04:00
nhmall 596ca7756c Merge branch 'NetHack-3.7' into to500 2026-05-02 09:55:08 -04:00
nhmall a127ec7dca Windows MSGSTOP bit
This is a stop gap fix.
2026-05-02 09:54:12 -04:00
nhmall 0c9382e704 placeholders 2026-05-02 08:25:58 -04:00
nhmall 3db7baf4d3 Merge branch 'to500' into NetHack-next 2026-05-02 07:58:58 -04:00
nhmall ec7ffc6360 Merge branch 'NetHack-3.7' into to500 2026-05-02 07:49:47 -04:00
Alex Smith ec7781b996 Remove saving grace
This feature was no longer fulfilling its intended purpose: the
issue is that when players are aware of it, instead of creating
interesting stories, it becomes a resource the player can rely on.

Alternative mitigation for some "unfair" early-game deaths has been
added (such as the warning shot for early-game attack wands and the
ability of iron shoes to protect against certain early traps), and
the warning shot in particular can create interesting gameplay
moments and stories of its own, especially when saving grace is
*not* present (discovering that a monster has a wand of fire and
can oneshot you is an interesting emergency situation, but less
scary if you know that its first attempt to oneshot you will fail).

The feature was also proving quite hard to code correctly, because
there are numerous cases that it "obviously" shouldn't affect
(most notably beheading due to Vorpal Blade, but also things like
purple worm digestion) which would need to be special-cased, and
because there are grey areas like wand zap bounces (which might or
might not be an intentional attempt by the player to hit themself
with the bounce) and damage from traps. Removing it saves the need
to work out, for every new damage source, whether and when saving
grace should interact with it.

Breaks save compatibility.
2026-05-02 10:25:39 +01:00
nhmall 3b3cfb75b4 Merge branch 'to500' into NetHack-next 2026-05-02 00:22:14 -04:00
nhmall a56cc97d74 Merge branch 'NetHack-3.7' into to500 2026-05-02 00:19:08 -04:00
nhmall b8c1a5dae9 Revert "change gy.youmonst"
This reverts commit 5b66ba4c99.
2026-05-02 00:11:06 -04:00
nhmall fd2e44e24f Revert "mhm initialization"
This reverts commit fcc8d4d3c3.
2026-05-01 23:27:24 -04:00
nhmall fcc8d4d3c3 mhm initialization 2026-05-01 22:36:37 -04:00
nhmall bd74660e06 some documentation updates including date stamp 2026-05-01 21:50:38 -04:00
Alex Smith 4e20ebc7aa Reserve save file space for new conducts and options
This will make it possible to change conducts and options in the
future without breaking the save format.
2026-05-02 01:14:25 +01:00
nhmall 0eda8f288c Merge branch 'NetHack-3.7' into to500 2026-05-01 17:17:17 -04:00
Alex Smith e35af92d13 Fix the fix to the pricequotes option
It was displaying price quotes even with the option off, when
removing items from a container.
2026-05-01 21:41:40 +01:00
nhmall d3f2ed4e47 Guidebook.tex fix 2026-05-01 13:16:33 -04:00
nhmall 7739b382ac Guidebook.tex fix 2026-05-01 13:09:49 -04:00
nhmall 84e2822106 Merge branch 'NetHack-3.7' into to500 2026-05-01 13:03:43 -04:00
PatR 218bb7bffe documentation update: v vs V
Version and history commands.  Plus a quarter-assed description of the
versinfo option.  ('mO' can update and possibly provide enough into to
make sense of it.)

\#history was already revised but the new description was inaccurate.

Guidebook.tex is untested.
2026-05-01 09:56:08 -07:00
nhmall bce8624a07 verb tense bit 2026-05-01 12:41:31 -04:00
nhmall 6c9e7b60e2 Guidebook update 2026-05-01 12:38:03 -04:00
Pasi Kallinen 540e2a999e Couple language nits 2026-05-01 18:31:57 +03:00
nhmall 31d3867ccc Merge branch 'NetHack-3.7' into to500 2026-05-01 09:12:37 -04:00
nhmall a165d9ee42 preprocessor macro: MAC -> MACOS9 2026-05-01 09:11:29 -04:00
nhmall cfcc3bad85 wording/grammar bit in Cross-compiling 2026-05-01 08:37:33 -04:00
nhmall 7937140ec7 Merge branch 'NetHack-3.7' into to500 2026-05-01 08:11:42 -04:00
nhmall 7f824c8d5c Guidebook type 2026-05-01 07:58:02 -04:00
nhmall 88309ebfd1 wording bit 2026-05-01 07:46:38 -04:00
PatR 82dc90c713 newsym() impossible() band-aid
Prevent the main vision_recalc loop from triggering an impossible for
bad coordinates from newsym().  This hack may mean that the underlying
problem will remain unsolved but at least newsym won't cause the fuzzer
to panic or frighten players with impossible warnings.
2026-04-30 22:59:07 -07:00
nhmall e607982c6a whitespace 2026-04-30 20:38:14 -04:00
nhmall 49fac6b422 a couple of typos 2026-04-30 20:12:08 -04:00
nhmall 7d4885e2fd updated Guidebook.mn
history text
2026-04-30 20:06:20 -04:00
nhmall 5167796d13 Merge branch 'NetHack-3.7' into to500 2026-04-30 17:09:02 -04:00
nhmall c5e48213d2 Qt and c++ use a different set of CFLAGS 2026-04-30 09:37:40 -04:00
nhmall 319dd38873 simplify get_macos_uuid()
also remove a magic number 37 by replacing it with NHUUIDSZ
2026-04-30 09:27:50 -04:00
nhmall c5b258c2cf more empty bonesfile 2026-04-30 09:08:29 -04:00
Alex Smith 7fdaf92367 Reduce generation probabilities of the wand of digging
In earlier versions of NetHack, wands of digging generated fairly
often, allowing players to do a large amount of digging through the
maze walls in Gehennom and giving them a chance of an early escape
item.

In the current version, the need for both of these things has been
reduced: supply chests give a supply of early escape items
(including wands of digging), and Gehennom is no longer mostly made
of mazes with diggable walls. As such, there is no longer a reason
to generate wands of digging in such large numbers, even though it
was correct in the past.

This commit modifies some of the generation probabilities for wands
of digging in order to make them less abundant, in order to work
better with the code changes since the previous version.
2026-04-30 09:20:08 +01:00
nhmall 82854b7936 documentation updates
more Dungeoneers list updates for valued contributors
2026-04-30 01:39:18 -04:00
nhmall 22ab0456d0 follow-up: don't clear the bit until end of function 2026-04-30 01:28:07 -04:00
nhmall 2b985be3b9 macOS fixes 2026-04-30 01:13:40 -04:00
PatR c99da87c70 issue #1506 - Str 18/50
Requested by Tomsod:  change the break point for +2 damage bonus from
strength to be 18/50 instead of 18/51 so that gnome and orc heros can
achieve that 'naturally' by maxxing out Str.

Closes #1506
2026-04-29 21:17:31 -07:00
Pasi Kallinen 52c74222c2 Update perm_inventory when returning to human form
Embedded dragon scales weren't updated to worn
2026-04-30 07:07:48 +03:00
nhmall 6c36009ce4 case bit 2026-04-29 23:55:48 -04:00
nhmall 5035b36956 possible macOS build fix
I need someone with arm64 Mac to confirm.
2026-04-29 23:48:19 -04:00
nhmall 84a6eb5e22 avoid impossible() with inbound migrating mon 2026-04-29 23:43:01 -04:00
nhmall 702fbfa06e make the inclusion of NHUUID support the default in hints files
On macOS, the required underlying pieces are in there.

On Linux, we try to test for the presence of libuuid and
the uuid.h header files. If the tests are both successful,
we proceed to include NHUUID support.

On either macOS or Linux, NO_NHUUID=1 on the Make command
line will forcibly prevent the inclusion of the support for NHUUID.
2026-04-29 21:48:52 -04:00
Alex Smith f98428001c Fix a bug in price quote display
They weren't displaying in, e.g., the menu to pick up multiple
objects at once, which is a particularly important place to
display them.
2026-04-30 01:17:01 +01:00
nhmall 1ad11d985e Merge branch 'NetHack-3.7' into to500 2026-04-29 16:54:31 -04:00
nhw_cron a646c3d55e This is cron-daily v1-Apr-26-2026. 005guidebook updated: doc/Guidebook.txt 2026-04-29 16:52:05 -04:00
nhmall 30787e468f Merge branch 'NetHack-3.7' into to500 2026-04-29 15:12:08 -04:00
nhmall cc00eca915 documentation updates
Dungeoneers list updates

Michael Meyer (aka entrez on GitHub) provided a large number
of fixes, updates and suggestions for the next upcoming release.
2026-04-29 14:58:03 -04:00
nhmall 6d8d1b2044 documentation updates
Dungeoneers list updates

Ingo Paschke provided Amiga updates to get the port working
for the release to follow 3.6.7. He used the gcc-15.2 branch
of bebbo's Amiga toolchain on Linux.

G. Branden Robinson contributed several updates and suggestions to
help ensure that the *roff documentation production remains viable.
2026-04-29 14:40:33 -04:00
Pasi Kallinen 2dfc2e7e87 Remove double hallu trap 2026-04-29 21:03:15 +03:00
nhmall 1b28d5e261 update tested versions of Visual Studio 2026-04-29 2026-04-29 12:35:33 -04:00
Pasi Kallinen 8a41076657 Some hallu monster, liquid, trap changes 2026-04-29 19:14:47 +03:00
nhmall ce5459884a Merge branch 'NetHack-3.7' into to500 2026-04-29 09:21:48 -04:00
Pasi Kallinen 0be07d2816 Fix migrating object trying to newsym invalid location 2026-04-29 15:45:12 +03:00
Pasi Kallinen a3fdf22153 Fix monster postmove moving off-map monster 2026-04-29 15:43:55 +03:00
Alex Smith 62cfbdc4a0 Fix the new rolling boulder traps for when monsters step on them
The traps don't disappear when stepped on any more; that should be
true even when monsters step on them.

(This bug was reported privately to me via IRC, rather than via the
devteam's email address, so there isn't a ticket number to close.)
2026-04-29 04:16:56 +01:00
nhmall 662bd9828d Merge branch 'NetHack-3.7' into to500 2026-04-28 17:34:03 -04:00
nhmall dafa24b742 stray tabs 2026-04-28 17:31:21 -04:00
nhmall 4b85aff707 updated doc/fixes3-6-7.txt 2026-04-28 16:59:54 -04:00
nhmall 25c8528a79 3.7 -> 5.0 in DEVEL Porting 2026-04-28 16:46:01 -04:00
nhmall bcdebdb903 Merge branch 'NetHack-3.7' into to500 2026-04-28 16:05:26 -04:00
nhmall ee55f125a0 follow-up bit for consoletty.c
Limit the #ifdef INSURANCE range to only the function call
that requires it.
2026-04-28 16:03:04 -04:00
PatR bb53b29481 simplify picking item up while swallowed 2026-04-28 12:35:39 -07:00
nhmall dfb3331320 Merge branch 'NetHack-3.7' into to500 2026-04-28 12:59:24 -04:00
Pasi Kallinen ed885d3ff6 Guidebook.tex: reroll
Add missing reroll-option
Remove one mangled line.
2026-04-28 19:38:03 +03:00
Pasi Kallinen 75b3c83a1d Guidebook.tex: Archeologists and scrolls 2026-04-28 19:34:17 +03:00
Pasi Kallinen a340d43d3a Guidebook.tex: Add missing price_quotes option 2026-04-28 19:29:44 +03:00
nhmall 00053eaa3e Merge branch 'NetHack-3.7' into to500 2026-04-28 12:23:21 -04:00
nhmall 26e6775591 more 3.7 to 5.0 in win files 2026-04-28 12:22:51 -04:00
nhmall b2c52b6de2 follow-up bit for Qt idlecheckpoint 2026-04-28 12:14:01 -04:00
nhmall 845a9a7b9c a first try at a Qt idlecheckpoint implementation 2026-04-28 12:09:55 -04:00
nhmall 3cc2d072b6 Merge branch 'NetHack-3.7' into to500 2026-04-28 09:04:38 -04:00
nhmall f6761c7d22 fix an impossible() on pick-up from stomach 2026-04-28 01:54:33 -04:00
nhmall a090ba90a1 add option idlecheckpoint
New experimental option

This requires platform support to be useful. Currently an
implementation for Windows TTY console is included.

A Unix TTY implementation should be achievable I would think,
but I haven't pursued that, at least not yet (contributions welcome).
I'm not sure whether Qt or X11 interfaces offer a similar
timeout capability..

How it works:

When idlecheckpoint in on, if the wait for a new input is idle for
10 seconds (length of time to waite is controlled by
IDLECHECKPOINT_WAIT_TIME #define in hack.h), save_currentstate() is
called to bring everything up-to-date should a hangup or crash occur.
The input wait then continues/resumes.

The save_currentstate() call is only executed once per input request.
2026-04-27 19:22:04 -04:00
nhmall 3dbdeb7596 Merge branch 'NetHack-3.7' into to500 2026-04-27 15:03:53 -04:00
nhmall b7f66f9723 fix an issue with internal recover (Windows) 2026-04-27 14:50:01 -04:00
Pasi Kallinen 9098c21421 wizshowuuid return value 2026-04-27 10:22:07 +03:00
PatR e0e87b0aa4 update X11/nh32icon and nh56icon
Updated and previewed with the X11 bitmap program but not with nethack
itself.
2026-04-26 20:47:22 -07:00
nhmall 291972d038 wizmode wizshowuuid to view the game's NHUUID 2026-04-26 22:58:26 -04:00
nhmall 118c317f63 Merge branch 'NetHack-3.7' into to500 2026-04-26 22:33:23 -04:00
nhmall 05b02c7b9b use newer Windows file routines on bones
Also correct a double-open bug that resulted from
earlier code removal.
2026-04-26 22:31:52 -04:00
nhw_cron bfc3eca4f4 This is cron-daily v1-Apr-26-2026. 000files updated: Files 2026-04-26 21:01:20 -04:00
nhw_cron fae32c29d1 This is cron-daily v1-Apr-26-2026. 005manpages updated: makedefs.txt 2026-04-26 21:01:18 -04:00
nhw_cron 226c773ca7 This is cron-daily v1-Apr-26-2026. 005manpages updated: nethack.txt 2026-04-26 21:01:17 -04:00
nhw_cron 8f7f9a8c46 This is cron-daily v1-Apr-26-2026. 005manpages updated: recover.txt 2026-04-26 21:01:15 -04:00
nhkeni 27fa906ebf update CRASHREPORTURL examples 2026-04-26 18:01:10 -04:00
nhmall a396ad1033 force new txt files in doc 2026-04-26 13:29:30 -04:00
nhw_cron 0bacd6fedf This is cron-daily v1-Apr-26-2026. 000files updated: Files 2026-04-26 13:24:23 -04:00
nhmall 97f8ad10b4 more updates 2026-04-26 13:21:18 -04:00
nhw_cron e39a7c31ad This is cron-daily v1-Apr-26-2026. 000files updated: Files 2026-04-26 13:02:30 -04:00
nhmall 45f4c697a7 miscellaneous 2026-04-26 12:54:44 -04:00
nhmall 0e10f82856 update sys win 2026-04-26 12:42:38 -04:00
nhmall d6f8241ac1 update dat src include... 2026-04-26 12:34:02 -04:00
nhmall 11ae226eeb some dat updates 2026-04-26 12:13:14 -04:00
nhmall 89a54b8370 update .gitattributes 2026-04-26 11:58:47 -04:00
nhw_cron 9e248ef8a2 This is cron-daily v1-Apr-26-2026. 000files updated: Files 2026-04-26 11:53:45 -04:00
nhw_cron 5b9df0041c This is cron-daily v1-Apr-26-2026. 005guidebook updated: doc/Guidebook.txt 2026-04-26 11:53:32 -04:00
nhw_cron 3fb81a48a1 This is cron-daily v1-Apr-26-2026. 005manpages updated: nethack.txt 2026-04-26 11:53:20 -04:00
nhw_cron ae1eb87b9d This is cron-daily v1-Apr-26-2026. 005manpages updated: recover.txt 2026-04-26 11:53:08 -04:00
nhmall 74e2062063 README 1st cut 2026-04-26 11:51:02 -04:00
nhmall 84e76bbbcb README-hints bit 2026-04-26 11:13:03 -04:00
nhmall 3cb7bfc0b3 more sys 2026-04-26 11:08:10 -04:00
nhmall ab730b70da revert an external URL change 2026-04-26 11:04:33 -04:00
nhmall 8d1e6b054c Install.dos bit 2026-04-26 10:57:31 -04:00
nhmall d7a6b3085e sys files 2026-04-26 10:47:48 -04:00
nhmall a6cdb6aefd change sys/unix bits and doc 2026-04-26 10:41:11 -04:00
nhmall d5d76f0f14 doc util 2026-04-26 10:10:05 -04:00
nhmall 2a6e7c47ec leave outdated files as 3.6; more to 5.0 2026-04-26 09:29:50 -04:00
nhmall 97b6fad509 "NetHack 3.7" to "NetHack 5.0" in doc include src sys win 2026-04-26 09:25:42 -04:00
nhmall 8ddfa958b1 HINTSVERSION 2026-04-26 09:09:14 -04:00
nhmall ae146b2c7c Merge branch 'NetHack-3.7' into to500 2026-04-26 08:57:38 -04:00
nhmall afefa38dda update a couple of documentation files 2026-04-26 08:56:11 -04:00
nhmall c25528dafe try to prevent panic encountering empty bones file 2026-04-26 08:51:33 -04:00
Patric Mueller 7fc9baa851 Update wall colors for Enhanced symsets
Making the walls in the mines brown and the walls in Fort Ludios
light blue.
2026-04-26 14:47:38 +02:00
nhmall 99525ea7b7 hints files from .370 to .500 2026-04-26 08:15:08 -04:00
nhmall f9ccf24b0b date update 2026-04-26 07:28:04 -04:00
PatR 831251016d vision fix
I have no idea whether this prevents the newly discovered impossible().
However, it does fix an obvious typo--in hindsight--that I made 6 years
ago (dealing with temporary lighting for camera flashes).
2026-04-25 21:17:05 -07:00
nhmall a3fa63f444 typo fix 2026-04-25 20:34:24 -04:00
nhmall 1d5397d35b follow-up with how-to for two Linux distros 2026-04-25 20:28:07 -04:00
nhmall b6503fa52e update README-hints 2026-04-25 20:22:12 -04:00
nhmall 5354943300 pcmain() follow-up 2026-04-25 20:15:48 -04:00
nhmall e08fdc2d1f move the stub routines from pcsys.c to pcmain.c
Fixes broken Amiga build
2026-04-25 20:08:43 -04:00
nhw_cron f4f085891d This is cron-daily v1-Jan-12-2026. 000files updated: Files 2026-04-25 17:00:59 -04:00
nhmall a906ed8236 another follow-up 2026-04-25 16:47:12 -04:00
nhmall 532152ffc0 macOS follow-up 2026-04-25 16:41:16 -04:00
nhmall 98308a8a7d thinko while looking into macOS 2026-04-25 16:19:24 -04:00
PatR 27f6ae340b address issue #1490 - rolling boulder segfault
Issue reported by BartekCupial:  segfault occurred and was tracked to
behavior of a rolling boulder trap.  Suggested fix was included, but it
assumes that the destination spot is valid so is suspect.

A comment pointed out that the path is validated when a rolling boulder
trap is created so the segfault should be impossible.  I didn't find an
explanation but am adding a fix based on the one in the issue report.

Closes #1490
2026-04-25 13:14:33 -07:00
nhmall 89c7435b7a attempt macOS fix 2026-04-25 15:57:36 -04:00
nhmall 4cf78d8f31 add macuuid.m 2026-04-25 15:44:53 -04:00
nhmall b9a46107ef fix up some odd indentation in mcastu.c 2026-04-25 15:05:08 -04:00
nhmall 309afb2eb2 add support for a unique game identifier
A 37 character field for holding a unique identifier is added
to the save file, as well as to an ancestor field in bones files.

Since it requires installation of libuuid package on Linux,
it requires an exlicit WANT_NHUUID=1 on the Make command line there.
Without the libuuid support, the saved nhuuid is empty, which should
be harmless.

This also moves the save and restore of gm.moves higher up so that it
already has a value the first time it is used against a relative saved
timestamp.

Invalidates savefiles and bones files due to new fields.

I need to get this committed before I can test out the macOS portion,
so there may be some build issues there briefly (hopefully), and
follow-up commits to resolve them.

Increments EDITLEVEL.
2026-04-25 14:48:49 -04:00
nhmall 5b66ba4c99 change gy.youmonst
Add a pointer to struct you, and put umonst there. Eliminate
the youmonst struct in gy.

The naming convention better matches the other u related fields,
and u.umonst has the same level of indirection as other monst pointers.

The u.umonst pointer is cleared prior to saving the parent u (struct you),
and u.umonst is reestablished upon restore.

Invalidates existing saves and bones due to the presence of the added
pointer field in struct you.
2026-04-25 14:41:39 -04:00
nhmall 80c08334ab yet another Windows follow-up 2026-04-24 22:02:15 -04:00
nhmall 36df2315c9 another Windows console follow-up 2026-04-24 21:58:33 -04:00
nhmall 8982addb9d revert one Windows change
Windows stores things a bit differently.
Use a static function in consoletty.c to preserve that behavior,
but still utilize the core colortable[] array.
2026-04-24 21:44:48 -04:00
nhmall 15a9acbefb more colortable[] updates
declare colortable[] const and no longer static so it can be shared
by code in window ports..

get rid of the Windows console port rgbtable and use the
core colortable[] instead.

utilize function colortable_to_int32() in Windows console instead
of the rgbtable_to_long() in the Windows port.

delete the Windows rgbtable_to_long() function.
2026-04-24 21:15:48 -04:00
nhmall 88a47cc7b6 colortable[] formatting
remove unused hexval field (show it in a comment)

The rgb values should be the same as they were
previously, just expressed with hex values on the
table initialization.
2026-04-24 20:13:01 -04:00
nhmall b3d9ab5183 revisit the "Welcome back" message
Also takes helm into consideration now

Closes #537
2026-04-24 11:14:53 -04:00
karafruit dc920f6af4 Merge branch 'NetHack-3.7' into twitch-interact 2026-04-23 20:37:34 -07:00
karafruit eee77d0f1b Prevent teleport control from working on twitch redeems to teleport the player 2026-04-22 20:37:00 -07:00
karafruit 6642a731c7 Update submodules 2026-04-19 08:38:22 -07:00
karafruit 85cc045400 Merge branch 'NetHack-3.7' into twitch-interact 2026-04-19 08:36:20 -07:00
karafruit ebed555f0a streamhack hints file 2026-04-19 08:33:57 -07:00
karafruit b7281f0b28 Merge branch 'NetHack-3.7' into twitch-interact 2026-04-15 18:02:20 -07:00
karafruit 71deeb0416 Rate limit checking twitch in fifo 2026-04-14 18:01:29 -07:00
karafruit a34a07bb75 Merge branch 'NetHack-3.7' into twitch-interact 2026-04-13 15:05:44 -07:00
karafruit d03582f685 Merge branch 'NetHack-3.7' into twitch-interact 2025-08-30 11:09:34 -07:00
karafruit ab0dd2de6e Preliminary implementation of twitch integration 2024-10-08 09:03:58 -07:00
741 changed files with 17230 additions and 14444 deletions
+1
View File
@@ -2,6 +2,7 @@
*.cpp NHSUBST
*.sh NHSUBST
*.pl NHSUBST
*.md NHSUBST
Porting NHSUBST
README NHSUBST
* text=auto
+1
View File
@@ -49,6 +49,7 @@ Makefile.gcc
Makefile-orig
Makefile.bcc-orig
Makefile.gcc-orig
make.prefs
*.suo
*.pdb
*.ilk
+15
View File
@@ -0,0 +1,15 @@
If you are making a GitHub pull request for NetHack, please follow these guidelines:
1. The 50/72 Rule: Keep the subject line (the first line) under 50 characters
for readability in git log --oneline. If you need a more detailed description
(the body), wrap it at 72 characters.
2. Separate Subject from Body: Always include a blank line between the subject
and the body. This helps Git tools correctly parse the message.
<!-- NetHack 5.0 Contributing.md $NHDT-Date: 1780016788 2026/05/29 01:06:28 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.4 $-->
<!-- NetHack may be freely redistributed. See license for details.-->
+23 -23
View File
@@ -1,6 +1,6 @@
Cross-compiling NetHack 3.7 Last edit: February 18, 2023
Cross-compiling NetHack 5.0 Last edit: April 26, 2026
The NetHack 3.7 build process differs from the build process of previous
The NetHack 5.0 build process differs from the build process of previous
versions in some important ways. Those differences make it possible to use
a cross-compiler running on one platform (the "host" platform of the build)
to produce a binary NetHack package that can execute on an entirely different
@@ -9,7 +9,7 @@ platform.
Part A Contents:
A1. Why cross-compile?
A2. Building NetHack 3.6 (before)
A3. Building NetHack 3.7 (going forward)
A3. Building NetHack 5.0 (going forward)
A4. How was the build procedure reduced to 5 steps?
A5. How can I help with the cross-compiling initiative?
@@ -18,7 +18,7 @@ Part B Contents:
B2. What needs to be built and executed on the HOST?
B3. What needs to be built for the TARGET?
B4. Case sample: msdos
B5. Case sample: amiga (started but incomplete)
B5. Case sample: amiga
B6. Case sample: Web Assembly, libnh
B7. Case sample: mips
@@ -118,10 +118,10 @@ might, just might, be usable across platforms, but the chances are against it,
and that certainly cannot be counted on.
+------------------------------------------+
| A3. Building NetHack 3.7 (going forward) |
| A3. Building NetHack 5.0 (going forward) |
+------------------------------------------+
Again, very generally, the build of NetHack in 3.7 requires the following
Again, very generally, the build of NetHack in 5.0 requires the following
steps to be carried out:
1. Compile and link util/makedefs.
@@ -152,7 +152,7 @@ executing the native compiler.
| A4. How was the build procedure reduced to 5 steps? |
+-----------------------------------------------------+
The following are among several design changes planned in NetHack 3.7,
The following are among several design changes planned in NetHack 5.0,
and these specific changes are what altered the build process to make
cross-compiling possible:
@@ -412,7 +412,7 @@ Using the cross-compiler, build the following targets:
system support in *sys.c as well as others sources pertaining to your
specific target platform(s).
b) Lua (mandatory in 3.7)
b) Lua (mandatory in 5.0)
lib/lua-5.4.8/src
@@ -479,7 +479,7 @@ Cross-compiler pre-built binary downloads:
bash sys/msdos/fetch-cross-compiler.sh
That script won't install anything, it just does file fetches and stores
them in subfolders of lib. The linux.370 and macOS.370 hints files are
them in subfolders of lib. The linux.500 and macOS.500 hints files are
configured to find the cross-compiler there if you add
CROSS_TO_MSDOS=1
on your make command line.
@@ -490,12 +490,12 @@ Cross-compiler pre-built binary downloads:
On your linux host:
cd sys/unix ; sh setup.sh hints/linux.370 ; cd ../..
cd sys/unix ; sh setup.sh hints/linux.500 ; cd ../..
make fetch-lua
On your macOS host:
cd sys/unix ; sh setup.sh hints/macOS.370 ; cd ../..
cd sys/unix ; sh setup.sh hints/macOS.500 ; cd ../..
make fetch-lua
The MSDOS cross-compile can then be carried out by specifying
@@ -532,7 +532,7 @@ Disclaimer: This is a minimal recipe, just to help someone else get
Cross-compiler used: bebbo's amiga-gcc
Cross-compiler url: https://github.com/AmigaPorts/m68k-amigaos-gcc
Author of 3.7 support: Ingo Paschke
Author of 5.0 support: Ingo Paschke
To our knowledge, a pre-built copy of the cross-compiler isn't available,
so you will likely have to obtain the cross-compiler sources via git and
@@ -577,22 +577,22 @@ Author of 3.7 support: Ingo Paschke
On your linux host:
# Clone NetHack 3.7 source
# Clone NetHack 5.0 source
cd NetHack
sys/unix/setup.sh sys/unix/hints/linux.370
sys/unix/setup.sh sys/unix/hints/linux.500
make fetch-lua
make CROSS_TO_AMIGA=1 fetch-regex
make CROSS_TO_AMIGA=1 all
make CROSS_TO_AMIGA=1 package
The distribution ZIP is created at targets/amiga/NH370AMI.ZIP.
The distribution ZIP is created at targets/amiga/NH500AMI.ZIP.
On your macOS host, the Amiga cross-compile can be carried out by specifying
CROSS_TO_AMIGA=1 on the make command line:
# Clone NetHack 3.7 source
# Clone NetHack 5.0 source
cd NetHack
sys/unix/setup.sh sys/unix/hints/macOS.370
sys/unix/setup.sh sys/unix/hints/macOS.500
make fetch-lua
make CROSS_TO_AMIGA=1 fetch-regex
make CROSS_TO_AMIGA=1 all
@@ -642,7 +642,7 @@ Cross-compiler url: https://emscripten.org/docs/getting_started/downloads.html
sudo apt-get install python3 cmake default-jre
For macOS, you will need to install Xcode, git, cmake, Python 3.5 or new
For macOS, you will need to install Xcode, git, cmake, Python 3.5 or newer
(at time of this writing).
After installing the prerequisite packages above, obtain the cross-compiler
@@ -665,12 +665,12 @@ Cross-compiler url: https://emscripten.org/docs/getting_started/downloads.html
On your linux host, prepare to cross-compile NetHack as follows:
cd sys/unix ; sh setup.sh hints/linux.370 ; cd ../..
cd sys/unix ; sh setup.sh hints/linux.500 ; cd ../..
make fetch-lua
On your macOS host, prepare to cross-compile NetHack as follows:
cd sys/unix ; sh setup.sh hints/macOS.370 ; cd ../..
cd sys/unix ; sh setup.sh hints/macOS.500 ; cd ../..
make fetch-lua
Then, cross-compile to targets/wasm as follows:
@@ -693,7 +693,7 @@ Cross-compiler url: https://emscripten.org/docs/getting_started/downloads.html
The cross-compiler hints additions are enclosed inside ifdef sections
and shouldn't interfere with the non-cross-compile builds using
hints/linux.370 or hints/macOS.370.
hints/linux.500 or hints/macOS.500.
+--------------------------------+
@@ -712,7 +712,7 @@ Cross-compiler url:
sudo apt install g++-mipsel-linux-gnu
On your linux host, prepare to cross-compile NetHack as follows:
cd sys/unix ; sh setup.sh hints/linux.370 ; cd ../..
cd sys/unix ; sh setup.sh hints/linux.500 ; cd ../..
make fetch-lua
Then, cross-compile to targets/mips as follows:
@@ -725,7 +725,7 @@ Cross-compiler url:
The cross-compiler hints additions are enclosed inside ifdef sections
and shouldn't interfere with the non-cross-compile builds using
hints/linux.370 or hints/macOS.370.
hints/linux.500 or hints/macOS.500.
---
+5 -4
View File
@@ -1,4 +1,5 @@
5
Please see "git log DEVEL" for previous changes.
Make documentation of nhgitset.pl easier to find and
find out about.
6
PRE and POST hooks will be dropped at some future date -
see https://www.nethack.org/devel/deprecation.html for details.
See "git log DEVEL" for previous changes.
+2 -2
View File
@@ -1,4 +1,4 @@
# NetHack 3.7 code_features.txt $NHDT-Date: 1596498264 2020/08/03 23:44:24 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.6 $
# NetHack 5.0 code_features.txt $NHDT-Date: 1596498264 2020/08/03 23:44:24 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.6 $
# Copyright (c) 2015 by Michael Allison
# NetHack may be freely redistributed. See license for details.
@@ -115,7 +115,7 @@ and available to all NetHack source files.
decl.c variable definitions are generally laid out in much the same
order as their corresponding declarations in decl.h.
A new header file cstd.h was added to coincide with 3.7's switch to
A new header file cstd.h was added to coincide with 5.0's switch to
C99. It contains calls to some C99 standard header files.
=================== NEXT FEATURE ==========================
+22 -1
View File
@@ -109,7 +109,7 @@ sub version_in_devel {
my $version;
my $verfile = "$path${PDS}DEVEL${PDS}VERSION";
open VERFH,"<",$verfile or die "xCan't open $verfile: $!";
open VERFH,"<",$verfile or die "Can't open $verfile: $!";
$version = 0+<VERFH>;
my $message = join('',<VERFH>);
close VERFH;
@@ -250,7 +250,17 @@ sub do_hook {
my($p) = @_;
my $hname = $0;
$hname =~ s!^((.*$DS)|())(.*)!$1$p-$4!;
my $vig = version_in_git;
if(-x $hname){
if(`git config --bool nethack.NoDepWarn` ne "true\n"){
print STDERR <<~E_O_M;
WARNING: $p hooks will be going away. See
https://www.nethack.org/devel/deprecation.html
To stop seeing this message, run
git config --bool nethack.NoDepWarn true
E_O_M
}
print TRACE "START $p: $hname\n" if($trace);
open TOHOOK, "|-", $hname or die "open $hname: $!";
@@ -370,6 +380,17 @@ Perl module for infrastructure of NetHack Git hooks.
Buffers call information so multiple independent actions may be coded for
Git hooks and similar Git callouts.
=over 4
=item ==>
As of Git 2.54, multiple actions may be specified for each hook
event - that makes this redundant for hooks and will be removed at
some future time when Git 2.54 (or later) is better distributed.
This should speed up hook processing.
=back 4
Maintains C<dat/gitinfo.txt>.
Common routines for dealing with nethack.setupversion git config variable.
+2 -2
View File
@@ -392,9 +392,9 @@ $TEST-Branch: theirs $
TEST 8:
<<< d1
/* NetHack 3.7 objnam.c $TEST-Date$ $TEST-Branch$:$TEST-Revision$ */
/* NetHack 5.0 objnam.c $TEST-Date$ $TEST-Branch$:$TEST-Revision$ */
===
/* NetHack 3.7 objnam.c $TEST-Date: 1426977394 2015/03/21 22:36:34 $ $TEST-Branch: master $:$TEST-Revision: 1.108 $ */
/* NetHack 5.0 objnam.c $TEST-Date: 1426977394 2015/03/21 22:36:34 $ $TEST-Branch: master $:$TEST-Revision: 1.108 $ */
>>> d3
=for nhgitset NHsubst NetHack merge driver
+1 -1
View File
@@ -1,5 +1,5 @@
#!/usr/bin/perl
# $NHDT-Date: 1524689646 2018/04/25 20:54:06 $ Branch: NetHack-3.7 $:$NHDT-Revision: 1.7 $
# $NHDT-Date: 1524689646 2018/04/25 20:54:06 $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.7 $
# Copyright (c) 2015 by Kenneth Lorber, Kensington, Maryland
# NetHack may be freely redistributed. See license for details.
+11 -1
View File
@@ -93,6 +93,16 @@ if($version_old > 0){
if(length $message_new){
print STDERR "Additional information:\n$message_new\n";
}
# This list and the code below will need to be updated if other changes occur
# before this progression is finished.
# 6 announce eventual deprecation of PRE and POST hooks
# 6->7 unset nethack.NoDepWarn, change message, docs in NHgithook.pm
# 7 deprecation of PRE and POST hooks
# 7->8 unset nethack.NoDepWarn, change message, docs in NHgithook.pm and make fail
# 8 PRE and POST throw errors
# 8->9 unset nethack.NoDepWarn, remove code, docs
# 9 removal of PRE and POST code
system('git','config','--unset','nethack.NoDepWarn') unless($opt_n);
}
}
@@ -358,7 +368,7 @@ sub do_file_nhgitset {
open IN, "<", $infile or die "Can't open $infile:$!";
open OUT, ">", $outfile or die "Can't open $outfile:$!";
my $started;
print IN "die \"DO NOT RUN THIS FILE\n\"";
print OUT "=pod\n";
while(<IN>){
m/^__END__/ && do {$started =1; next};
print OUT if($started);
+62 -75
View File
@@ -1,4 +1,4 @@
This is a listing of all files in a full NetHack 3.7 distribution, organized
This is a listing of all files in a full NetHack 5.0 distribution, organized
in their standard manner on a UNIX system. It indicates which files are
necessary for which versions, so that you can tell which files may be deleted
from or not transferred to your system if you wish.
@@ -7,8 +7,9 @@ from or not transferred to your system if you wish.
.:
(files in top directory)
.clang-format Cross-compiling Files
Porting README azure-pipelines.yml
.clang-format Contributing.md Cross-compiling
Files Porting README
azure-pipelines.yml
DEVEL:
(files for people developing changes to NetHack)
@@ -76,11 +77,11 @@ fixes3-2-2.txt fixes3-2-3.txt fixes3-3-0.txt fixes3-3-1.txt
fixes3-4-0.txt fixes3-4-1.txt fixes3-4-2.txt fixes3-4-3.txt
fixes3-5-0.txt fixes3-6-0.txt fixes3-6-1.txt fixes3-6-2.txt
fixes3-6-3.txt fixes3-6-4.txt fixes3-6-5.txt fixes3-6-6.txt
fixes3-6-7.txt fixes3-7-0.txt fixesX-X-X.txt lua.adoc
makedefs.6 makedefs.txt mn.7 mn.txt
mnh.7 mnh.txt nethack.6 nethack.txt
options.txt recover.6 recover.txt sound.txt
tmac.n tmac.nh window.txt
fixes3-6-7.txt fixes5-0-0.txt fixes5-0-1.txt fixesX-X-X.txt
lua.adoc makedefs.6 makedefs.txt mn.7
mn.txt mnh.7 mnh.txt nethack.6
nethack.txt options.txt recover.6 recover.txt
sound.txt tmac.n tmac.nh window.txt
include:
(files for X versions)
@@ -97,13 +98,13 @@ mcastu.h mextra.h mfndpos.h micro.h mkroom.h
monattk.h mondata.h monflag.h monst.h monsters.h
nhmd4.h nhregex.h obj.h objclass.h objects.h
optlist.h patchlevel.h pcconf.h permonst.h prop.h
quest.h rect.h region.h rm.h savefile.h
seffects.h selvar.h sfmacros.h sfprocs.h skills.h
sndprocs.h sp_lev.h spell.h stairs.h sym.h
sys.h tcap.h tileset.h timeout.h tradstdc.h
trap.h unixconf.h vision.h vmsconf.h warnings.h
weight.h winami.h wincurs.h windconf.h winprocs.h
wintype.h you.h youprop.h
quest.h rect.h region.h revision.h rm.h
savefile.h seffects.h selvar.h sfmacros.h sfprocs.h
skills.h sndprocs.h sp_lev.h spell.h stairs.h
sym.h sys.h tcap.h tileset.h timeout.h
tradstdc.h trap.h unixconf.h vision.h vmsconf.h
warnings.h weight.h winami.h wincurs.h windconf.h
winprocs.h wintype.h you.h youprop.h
(file for tty versions)
wintty.h
@@ -131,18 +132,13 @@ wceconf.h
mac-carbon.h mac-qt.h mac-term.h macconf.h macpopup.h
mactty.h macwin.h mttypriv.h
outdated/sys/amiga:
(files for Amiga versions - untested for 3.7)
Build.ami Install.ami Makefile.agc Makefile.ami NetHack.cnf
ifchange mkdmake txt2iff.c xpm2iff.c
outdated/sys/atari:
(files for Atari version - untested for 3.7)
(files for Atari version - untested for 5.0)
Install.tos atarifnt.uue nethack.mnu setup.g tos.c
unx2atar.sed
outdated/sys/be:
(files for BeOS version - untested for 3.7)
(files for BeOS version - untested for 5.0)
README bemain.c
outdated/sys/mac:
@@ -159,7 +155,7 @@ Makefile.BC Makefile.MSC SCHEMA35.MSC moveinit.pat ovlinit.c
schema1.BC schema2.BC schema3.MSC
outdated/sys/os2:
(files for OS/2 version - untested for 3.7)
(files for OS/2 version - untested for 5.0)
Install.os2 Makefile.os2 nhpmico.uu os2.c
outdated/sys/unix:
@@ -182,7 +178,7 @@ outdated/sys/vms:
lev_lex.h
outdated/sys/wince:
(files for Windows CE and PocketPC - untested for 3.7)
(files for Windows CE and PocketPC - untested for 5.0)
Install.ce bootstrp.mak celib.c cesetup.bat cesound.c
defaults.nh keypad.uu menubar.uu mhaskyn.c mhaskyn.h
mhcmd.c mhcmd.h mhcolor.c mhcolor.h mhdlg.c
@@ -195,21 +191,13 @@ resource.h winMS.h winhack.c winhack.rc winhcksp.rc
winmain.c
outdated/sys/wince/ceinc:
(header files for Windows CE and PocketPC - untested for 3.7)
(header files for Windows CE and PocketPC - untested for 5.0)
assert.h errno.h fcntl.h
outdated/sys/wince/ceinc/sys:
(sys/stat.h for Windows CE and PocketPC - untested for 3.6.2)
stat.h
outdated/sys/windows:
(files that are no longer maintained for current game code)
travis-gcc.sh
outdated/sys/windows/vs:
(files that are no longer maintained for current game code)
travisci.sh
outdated/win/Qt3:
(files for the Qt 3 widget library - X11, Windows, Mac OS X, or Qtopia)
Info.plist Install.Qt knethack.lnk
@@ -220,12 +208,12 @@ qt3tableview.cpp qt3tableview.h tileedit.cpp
tileedit.h
outdated/win/gem:
(files for GEM versions - untested for 3.7)
(files for GEM versions - untested for 5.0)
Install.gem bitmfile.c gem_rsc.uu gem_rso.uu gr_rect.c gr_rect.h
load_img.c tile2img.c title.uu wingem.c wingem1.c xpm2img.c
outdated/win/gnome:
(files for GNOME versions - untested for 3.7)
(files for GNOME versions - untested for 5.0)
README gn_xpms.h gnaskstr.c gnaskstr.h gnbind.c gnbind.h
gnglyph.c gnglyph.h gnmain.c gnmain.h gnmap.c gnmap.h
gnmenu.c gnmenu.h gnmesg.c gnmesg.h gnomeprv.h gnopts.c
@@ -301,14 +289,14 @@ mondata.c monmove.c monst.c mplayer.c mthrowu.c muse.c
music.c nhlobj.c nhlsel.c nhlua.c nhmd4.c o_init.c
objects.c objnam.c options.c pager.c pickup.c pline.c
polyself.c potion.c pray.c priest.c quest.c questpgr.c
read.c rect.c region.c report.c restore.c rip.c
rnd.c role.c rumors.c save.c selvar.c sfbase.c
sfstruct.c shk.c shknam.c sit.c sounds.c sp_lev.c
spell.c stairs.c steal.c steed.c strutil.c symbols.c
sys.c teleport.c timeout.c topten.c track.c trap.c
u_init.c uhitm.c utf8map.c vault.c version.c vision.c
weapon.c were.c wield.c windows.c wizard.c wizcmds.c
worm.c worn.c write.c zap.c
read.c rect.c region.c report.c restore.c revision.c
rip.c rnd.c role.c rumors.c save.c selvar.c
sfbase.c sfstruct.c shk.c shknam.c sit.c sounds.c
sp_lev.c spell.c stairs.c steal.c steed.c strutil.c
symbols.c sys.c teleport.c timeout.c topten.c track.c
trap.c u_init.c uhitm.c utf8map.c vault.c version.c
vision.c weapon.c were.c wield.c windows.c wizard.c
wizcmds.c worm.c worn.c write.c zap.c
submodules:
(files in top directory)
@@ -316,14 +304,14 @@ CHKSUMS lua pdcurses pdcursesmod
sys/amiga:
(files for Amiga versions)
README.amiga amidos.c amidos.p amifont.uu
amifont8.uu amigst.c amii.hlp amimenu.c
amirip.c amistack.c amitty.c amiwind.c
amiwind.p bmp2iff_host.c clipwin.c colorwin.c
grave16.xpm nethack.cnf winamenu.c winami.c
winami.p winchar.c windefs.h winext.h
winfuncs.c winkey.c winproto.h winreq.c
winstr.c xpm2iff_host.c
NHinfo.uu README.amiga amidos.c amifont.uu
amifont8.uu amii.hlp amimenu.c amirip.c
amistack.c amiwind.c bmp2iff_host.c clipwin.c
cnf-info.uu colorwin.c drawer-info.uu grave16.xpm
license-info.uu nethack.cnf readme-info.uu txt-info.uu
winamenu.c winami.c winchar.c windefs.h
winext.h winfuncs.c winkey.c winproto.h
winreq.c winstr.c xpm2iff_host.c
sys/libnh:
(files in top directory)
@@ -359,11 +347,8 @@ random.c
(Berkeley uudecode file, which may be used in build process of any version)
uudecode.c
(file for MSDOS, OS/2, Amiga, and Atari versions - only MSDOS tested for 3.7)
pcmain.c
(file for MSDOS, OS/2, and Atari versions - only MSDOS tested for 3.7)
NetHack.cnf pctty.c
(file for MSDOS, Amiga versions)
NetHack.cnf pcmain.c pctty.c
(file for MSDOS, OS/2, and VMS versions)
termcap
@@ -371,10 +356,10 @@ termcap
(file for VMS version)
tclib.c
(files for MSDOS, OS/2 and Atari versions - only MSDOS tested for 3.7)
(files for MSDOS, Amiga versions)
pcsys.c pcunix.c
(files for OS/2 version - untested for 3.7)
(files for OS/2 version - untested for 5.0)
Makefile.lib termcap.uu
(files for UNIX and Be versions)
@@ -393,9 +378,10 @@ sys/unix:
(files for UNIX versions)
Install.unx Makefile.check Makefile.dat Makefile.doc
Makefile.src Makefile.top Makefile.utl NewInstall.unx
README-hints README.xcode XCode.xcconfig depend.awk
gitinfo.sh mkmkfile.sh nethack.sh setup.sh
sysconf unixmain.c unixres.c unixunix.c
README.hints README.xcode XCode.xcconfig depend.awk
gitinfo.sh macuuid.m mkmkfile.sh nethack.sh
setup.sh sysconf unixmain.c unixres.c
unixunix.c
sys/unix/NetHack.xcodeproj:
(file for macOS Xcode)
@@ -415,16 +401,16 @@ NetHack.xcscheme makedefs.xcscheme recover.xcscheme
sys/unix/hints:
(files for configuring UNIX NetHack versions)
linux-minimal linux.370 macOS.370
macosx.sh solaris solaris-playground
unix
bsd.500 linux-minimal linux.500
macOS.500 macosx.sh solaris
solaris-playground unix
sys/unix/hints/include:
(files for configuring UNIX NetHack versions)
compiler.370 cross-post.370 cross-pre1.370 cross-pre2.370
gbdates-post.370 gbdates-pre.370 misc.370 multisnd-post.370
multisnd1-pre.370 multisnd2-pre.370 multiw-1.370 multiw-2.370
response.370
compiler.500 cross-post.500 cross-pre1.500 cross-pre2.500
dirs-perms.500 gbdates-post.500 gbdates-pre.500 linuxdistro.500
misc.500 multisnd-post.500 multisnd1-pre.500 multisnd2-pre.500
multiw-1.500 multiw-2.500 response.500 whichbsd.500
sys/vms:
(files for VMS version)
@@ -620,8 +606,9 @@ Install.X11 NetHack.ad Window.c X11-issues.txt
dialogs.c ibm.bdf nethack.rc nh10.bdf
nh32icon nh56icon nh72icon nh_icon.xpm
pet_mark.xbm pilemark.xbm rip.xpm tile2x11.c
winX.c winmap.c winmenu.c winmesg.c
winmisc.c winstat.c wintext.c winval.c
winX.c winlabel.c winmap.c winmenu.c
winmesg.c winmisc.c winstat.c wintext.c
winval.c
win/chain:
(files for stacking window systems)
@@ -640,10 +627,10 @@ NetHackTerm.applescript recover.pl
win/share:
(files for versions using optional tiles)
bmptiles.c gifread.c giftiles.c monsters.txt nhicns.uu
nhsplash.xpm objects.txt other.txt ppmwrite.c renumtiles.pl
thintile.c tile.doc tile.h tile2bmp.c tilemap.c
tileset.c tiletext.c tiletxt.c
bmptiles.c decals.txt gifread.c giftiles.c monsters.txt
nhicns.uu nhsplash.xpm objects.txt other.txt ppmwrite.c
renumtiles.pl thintile.c tile.doc tile.h tile2bmp.c
tilemap.c tileset.c tiletext.c tiletxt.c
win/shim:
(file in top directory)
@@ -701,7 +688,7 @@ GNUmakefile Makefile
qt_kde0.moc qt_main.moc qt_map.moc qt_menu.moc qt_msg.moc
qt_plsel.moc qt_set.moc qt_stat.moc qt_xcmd.moc qt_yndlg.moc
(file generated by makedefs -m but unused in 3.7)
(file generated by makedefs -m but unused in 5.0)
monstr.c
(file optionally generated by tilemap at compile time)
+2 -2
View File
@@ -1,4 +1,4 @@
NetHack Porting Guidelines v 3.7 2023-04-23
NetHack Porting Guidelines v 5.0 2023-04-23
1.0 Introduction
@@ -229,7 +229,7 @@ libraries.
5.0 Design Updates
The following design updates were introduced in NetHack 3.7.
The following design updates were introduced in NetHack 5.0.
5.1 Quest text files
+44 -108
View File
@@ -1,67 +1,42 @@
NetHack 3.7.0 work-in-progress -- General information
NetHack 5.0.0 -- General information
NetHack 3.7 is an enhancement to the dungeon exploration game NetHack,
which is a distant descendent of Rogue and Hack, and a direct descendent of
NetHack 3.6.
NetHack 5.0 is an enhancement to the dungeon exploration game NetHack,
which is a distant descendent of Rogue and Hack, and a direct descendent
of NetHack 3.6.
NetHack 3.7.0 work-in-progress is not a release of NetHack. As a .0 version,
and still very early in its development cycle, there has already been changes
made, and there will continue to be many more prior to an eventual release.
The file doc/fixes3-7-0.txt in the source distribution will be updated with
a list of fixes as they are committed.
NetHack 5.0.0 is a release of NetHack. As a .0 version, there may be some
bugs encountered. Constructive suggestions, GitHub pull requests, and bug
reports are all welcome and encouraged.
In short -- there are likely to be bugs. Don't treat NetHack-3.7 branch as
released code, and if stability is paramount, then the most recent
NetHack 3.6.7 release is safest for you.
The file doc/fixes5-0-0.txt in the source distribution contains a full list
of fixes and changes as they were committed. The text in there was written
for the development team's own use and is provided "as is", so please do
not ask us to further explain the entries in that file. Some entries might
be considered "spoilers", particularly in the "new features" section.
We're making the .0 work-in-progress available so that you can observe, test
out, and contribute to its development. Constructive suggestions, GitHub pull
requests, and bug reports are all welcome and encouraged.
The file doc/fixes3-7-0.txt in the source distribution has a full list of
bug-fixes included so far, as well as brief mentions of some of the other code
changes. The text in there was written for the development team's own use and is
provided "as is", so please do not ask us to further explain the entries in
that file. Some entries might be considered "spoilers", particularly in the
"new features" section.
Along with the game improvements and bug fixes, NetHack 3.7 strives to make
Along with the game improvements and bug fixes, NetHack 5.0 strives to make
some general architectural improvements to the game or to its building
process. Among them:
process. Among them, 5.0 has:
* Remove barriers to building NetHack on one platform and operating system,
* The source code is compliant with the C99 standard.
* removes barriers to building NetHack on one platform and operating system,
for later execution on another (possibly quite different) platform and/or
operating system. That capability is generally known as "cross-compiling."
See the file "Cross-compiling" in the top-level folder for more information
on that.
* Replace the build-time "yacc and lex"-based level compiler, the "yacc and
lex"-based dungeon compiler, and the quest text file processing done
by NetHack's "makedefs" utility, with Lua text alternatives that are
loaded and processed by the game during play.
* The build-time "yacc and lex"-based level compiler, the
"yacc and lex"-based dungeon compiler, and the quest text file processing
previously done by NetHack's "makedefs" utility, have been replaced with
Lua text alternatives that are loaded and processed by the game during play.
* Write game savefiles and bonesfiles in a more portable and consistent way
to open up the possibility of utilizing them between different platforms,
such as between your desktop computer and your hand-held device.
* Add support to make the game restartable without exit (a.k.a. "play again"
support). Toward that end, many previously scattered and separate variables
have been gathered into central 'ga' through 'gz' structures in
decl.h/decl.c. That central ability to reinitialize the variables will
benefit the porting effort to some platforms that are under consideration
where "play again" is typical.
Here are some other general notes on the changes in NetHack 3.7 that were not
Here are some other general notes on the changes in NetHack 5.0 that were not
considered spoilers:
- automatic annotation "gateway to Moloch's Sanctum" for vibrating square
level once that square's location becomes known (found or magic
mapped); goes away once sanctum temple is found (entered or high altar
mapped)
- savefile: add support for a tool to deconstruct data structures,
that get stored in a savefile, down into their individual fields and
save those individual fields instead of the entire struct. The
intention is to provide a way to export and transport savefiles
between platforms, architectures and data models.
- - - - - - - - - - -
@@ -98,75 +73,36 @@ Please read items (1), (2) and (3) BEFORE doing anything with your new code.
that the default configuration is SysV/Sun/Solaris2.x (simply because
the code was housed on such a system).
The files sys/*/Install.* were written to guide you in configuring the
program for your operating system. The files win/*/Install.* are
available, where necessary, to help you in configuring the program
for particular windowing environments. Reading them, and the man pages,
should answer most of your questions.
The files sys/*/Install.*, or sys/*/NewInstall.* were written to guide
you in configuring the program for your operating system. The files
win/*/Install.* are available, where necessary, to help you in
configuring the program for particular windowing environments.
Reading them, and the man pages, should answer most of your questions.
At the time of the most recent official release, NetHack 3.6, it had
been tested to run/compile on:
At the time of the most recent official release, NetHack 5.0, it had
been tested to run and/or compile on:
Intel Pentium or better running Linux, BSDI
[compiles, runs]
Intel Pentium or better running Windows 10 or 11
[compiles, runs]
Intel-based, or Apple M1, M2, M3, M4, M5 Macs running
macOS 10.11 (El Capitan) to macOS 26 (Tahoe)
[compiles, runs]
(follow the instructions in sys/unix/NewInstall.unx)
Intel 80386 or greater running MS-DOS with DPMI
[cross-compiles on Linux, runs on MS-DOS, emulator/dosbox]
built via djgpp compiler (native or Linux-hosted cross-compiler)
AmigaOS 3.0 or later
[cross-compiles on Linux or macOS, runs on Amiga or emulator]
Running requires Kickstart 39+
6 MB free RAM minimum (8 MB recommended)
Hard drive with ~5 MB free space
There has also been some success runing/comiling on:
OpenVMS (aka VMS) V8.4 on Alpha and on Integrity/Itanium/IA64
Previous versions of NetHack were tested and known to run on the
following systems, but it is unknown if they can still build and
execute NetHack 3.6 or NetHack 3.7:
Apple Macintosh running MacOS 7.5 or higher, LinuxPPC, BeOS 4.0
Atari ST/TT/Falcon running TOS (or MultiTOS) with GCC
AT&T 3B1 running System V (3.51)
AT&T 3B2/600 & 3B2/622 running System V R3.2.1
AT&T 3B2/1000 Model 80 running System V R3.2.2
AT&T 3B4000 running System V
AT&T 6386 running System V R3.2
Commodore Amiga running AmigaDOS 3.0 or higher with SAS/C 6.x
(but see Makefile.ami about DICE and Manx)
Data General AViiON systems running DG/UX
DEC Alpha/VMS (aka OpenVMS AXP), running V1.x through V7.1
DEC VAX/VMS, running V4.6 through V7.1
DEC vaxen running BSD, Ultrix
Decstations running Ultrix 3.1, 4.x
Encore Multimax running UMAX 4.2
Gould NP1 running UTX 3/2
HP 9000s300 running HP-UX
HP 9000s700 running HP-UX 9.x, 10.x, 11.x
H/PC Pro devices running Windows CE 2.11 and higher.
IBM PC/RT and RS/6000 running AIX 3.x
IBM PS/2 and AT compatibles running OS/2 - 2.0 and up with GCC emx
IBM PS/2 and AT compatibles running OS/2 1.1 - 2.0 (and probably
Warp) with Microsoft 6.0, and OS/2 2.0 and up with IBM CSet++ 2.0.
Intel 80386 or greater (or clone) running 386BSD
Intel x86 running a version of Windows 7 or 8 or prior to XP.
Mips M2000 running RiscOS 4.1
NeXT running Mach (using BSD configuration)
Palm Size PC 1.1 devices running Windows CE 2.11
Pocket PC devices running Windows CE 3.0 and higher
Pyramid 9820x running OSx 4.4c
SGI Iris running IRIX
Stardent Vistra 800 running SysV R4.0
Stride 460 running UniStride 2.1
Sun-3s, -4s, and -386is running SunOS 3.x
Sun-3s and -386is running SunOS 4.x
"Sun SPARC"-based machine running SunOS 4.x, Solaris 2.x, or Solaris 7
Valid Logic Systems SCALD-System
Previous versions, using a cross-compiler hosted on another platform,
such as win32, could also build the following from source:
Pocket PC devices running Windows CE 3.0 and higher
H/PC Pro devices running Windows CE 2.11 and higher
Palm Size PC 1.1 devices running Windows CE 2.11
Unless otherwise mentioned, the compiler used was the OS-vendor's
C compiler.
OpenVMS (ask VMS) V9.2-3 on x86-64
- - - - - - - - - - -
@@ -206,13 +142,13 @@ If a feature is not accepted you are free, of course, to post the patches
to the net yourself and let the marketplace decide their worth.
All of this amounts to the following: If you decide to apply a free-lanced
patch to your 3.6 code, you are welcome to do so, of course, but we won't
be able to provide support or receive bug reports for it.
patch to your NetHack 5.0 code, you are welcome to do so, of course, but we
won't be able to provide support or receive bug reports for it.
In our own patches, we will assume that your code is synchronized with ours.
-- Good luck, and happy Hacking --
# $NHDT-Date: 1652133501 2022/05/09 21:58:21 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.97 $
# $NHDT-Date: 1779926755 2026/05/28 00:05:55 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.113 $
# Copyright (c) 2012 by Michael Allison
# NetHack may be freely redistributed. See license for details.
+13 -27
View File
@@ -4,18 +4,14 @@ strategy:
imageName: 'ubuntu-latest'
toolchainName: gcc14
buildTargetName: minimal
linux_noble_clang_all:
imageName: 'ubuntu-24.04'
linux_latest_gcc14:
imageName: 'ubuntu-latest'
toolchainName: gcc14
buildTargetName: all
linux_latest_clang_all:
imageName: 'ubuntu-latest'
toolchainName: clang
buildTargetName: all
linux_jammy_gcc9_all:
imageName: 'ubuntu-22.04'
toolchainName: gcc9
buildTargetName: all
linux_noble_gcc13_all:
imageName: 'ubuntu-24.04'
toolchainName: gcc13
buildTargetName: all
macOS_latest_clang_all:
imageName: 'macOS-latest'
toolchainName: clang
@@ -41,8 +37,8 @@ strategy:
imageName: 'ubuntu-latest'
toolchainName: cross
buildTargetName: msdos
linux_noble_docs:
imageName: 'ubuntu-24.04'
linux_latest_docs:
imageName: 'ubuntu-latest'
toolchainName: docs
buildTargetName: all
continueOnError: true
@@ -65,16 +61,6 @@ variables:
steps:
- bash: |
if [ "$(toolchain)" == "gcc9" ]
then
echo "##vso[task.setvariable variable=CC]gcc-9"
echo "##vso[task.setvariable variable=CXX]g++-9"
fi
if [ "$(toolchain)" == "gcc13" ]
then
echo "##vso[task.setvariable variable=CC]gcc-13"
echo "##vso[task.setvariable variable=CXX]g++-13"
fi
if [ "$(toolchain)" == "gcc14" ]
then
echo "##vso[task.setvariable variable=CC]gcc-14"
@@ -100,7 +86,7 @@ steps:
echo "CXX: $CXX"
displayName: 'Echoing variables'
- checkout: git://NetHack/NetHack@NetHack-3.7
- checkout: git://NetHack/NetHack@NetHack-5.0
submodules: true
path: $(netHackPath) # $(Agent.BuildDirectory)/$(netHackPath)
@@ -172,14 +158,14 @@ steps:
- bash: |
sudo apt-get -qq -y update
sudo apt-get -qq -y install libncurses-dev
sudo apt-get -qq -y install libx11-dev libxaw7-dev xfonts-utils qtbase5-dev qtmultimedia5-dev qtbase5-dev-tools
sudo apt-get -qq -y install libx11-dev libxaw7-dev libxft-dev fontconfig xfonts-utils qtbase5-dev qtmultimedia5-dev qtbase5-dev-tools
condition: and(eq( variables['Agent.OS'], 'Linux' ), eq( variables.buildTarget, 'all'))
workingDirectory: $(Agent.BuildDirectory)/$(netHackPath)
displayName: 'Getting linux build dependencies'
- bash: |
cd sys/unix
sh setup.sh hints/linux.370
sh setup.sh hints/linux.500
cd ../..
make fetch-lua
make WANT_WIN_ALL=1 QT_SELECT=5 MOC=moc all
@@ -221,7 +207,7 @@ steps:
- bash: |
brew install groff
cd sys/unix
sh setup.sh hints/macos.370
sh setup.sh hints/macos.500
cd ../..
make fetch-lua
make WANT_MACSOUND=1 all
@@ -234,7 +220,7 @@ steps:
export GCCVER=gcc1220
export IN_CI=SKIP_FONTS_IN_CI=1
cd sys/unix
sh setup.sh hints/linux.370
sh setup.sh hints/linux.500
cd ../..
make fetch-lua
sys/msdos/fetch-cross-compiler.sh
+1
View File
@@ -2,6 +2,7 @@
*.des NHSUBST
*.txt NHSUBST
*.lua NHSUBST
luahelper NHSUBST
data.base NHSUBST
symbols NHSUBST
tribute NHSUBST
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Archeologist Arc-fila.lua $NHDT-Date: 1652195998 2022/05/10 15:19:58 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack Archeologist Arc-fila.lua $NHDT-Date: 1781994863 2026/06/20 22:34:23 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.2 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Archeologist Arc-filb.lua $NHDT-Date: 1652195998 2022/05/10 15:19:58 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack Archeologist Arc-filb.lua $NHDT-Date: 1781994863 2026/06/20 22:34:23 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.2 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Archeologist Arc-goal.lua $NHDT-Date: 1652195998 2022/05/10 15:19:58 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Archeologist Arc-goal.lua $NHDT-Date: 1781994864 2026/06/20 22:34:24 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Archeologist Arc-loca.lua $NHDT-Date: 1652195999 2022/05/10 15:19:59 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Archeologist Arc-loca.lua $NHDT-Date: 1781994864 2026/06/20 22:34:24 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Archeologist Arc-strt.lua $NHDT-Date: 1652195999 2022/05/10 15:19:59 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Archeologist Arc-strt.lua $NHDT-Date: 1781994864 2026/06/20 22:34:24 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Barbarian Bar-fila.lua $NHDT-Date: 1652195999 2022/05/10 15:19:59 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Barbarian Bar-fila.lua $NHDT-Date: 1781994864 2026/06/20 22:34:24 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Barbarian Bar-filb.lua $NHDT-Date: 1652196000 2022/05/10 15:20:00 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Barbarian Bar-filb.lua $NHDT-Date: 1781994864 2026/06/20 22:34:24 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Barbarian Bar-goal.lua $NHDT-Date: 1652196000 2022/05/10 15:20:00 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack Barbarian Bar-goal.lua $NHDT-Date: 1781994865 2026/06/20 22:34:25 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.2 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Barbarian Bar-loca.lua $NHDT-Date: 1652196000 2022/05/10 15:20:00 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack Barbarian Bar-loca.lua $NHDT-Date: 1781994865 2026/06/20 22:34:25 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.2 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Barbarian Bar-strt.lua $NHDT-Date: 1652196001 2022/05/10 15:20:01 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.4 $
-- NetHack Barbarian Bar-strt.lua $NHDT-Date: 1781994865 2026/06/20 22:34:25 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.5 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Caveman Cav-fila.lua $NHDT-Date: 1652196001 2022/05/10 15:20:01 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Caveman Cav-fila.lua $NHDT-Date: 1781994865 2026/06/20 22:34:25 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Caveman Cav-filb.lua $NHDT-Date: 1652196001 2022/05/10 15:20:01 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Caveman Cav-filb.lua $NHDT-Date: 1781994866 2026/06/20 22:34:26 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Caveman Cav-goal.lua $NHDT-Date: 1652196002 2022/05/10 15:20:02 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack Caveman Cav-goal.lua $NHDT-Date: 1781994866 2026/06/20 22:34:26 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.2 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Caveman Cav-loca.lua $NHDT-Date: 1652196002 2022/05/10 15:20:02 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Caveman Cav-loca.lua $NHDT-Date: 1781994866 2026/06/20 22:34:26 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Caveman Cav-strt.lua $NHDT-Date: 1652196002 2022/05/10 15:20:02 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.3 $
-- NetHack Caveman Cav-strt.lua $NHDT-Date: 1781994866 2026/06/20 22:34:26 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.4 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,5 +1,5 @@
#!/usr/bin/perl
# NetHack 3.7 GENFILES $NHDT-Date: 1596498242 2020/08/03 23:44:02 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
# NetHack 5.0 GENFILES $NHDT-Date: 1596498242 2020/08/03 23:44:02 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
# Copyright (c) 2018 by Kenneth Lorber
# NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Healer Hea-fila.lua $NHDT-Date: 1652196003 2022/05/10 15:20:03 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Healer Hea-fila.lua $NHDT-Date: 1781994866 2026/06/20 22:34:26 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991, 1993 by M. Stephenson, P. Winner
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Healer Hea-filb.lua $NHDT-Date: 1652196003 2022/05/10 15:20:03 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Healer Hea-filb.lua $NHDT-Date: 1781994867 2026/06/20 22:34:27 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991, 1993 by M. Stephenson, P. Winner
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Healer Hea-goal.lua $NHDT-Date: 1652196003 2022/05/10 15:20:03 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Healer Hea-goal.lua $NHDT-Date: 1781994867 2026/06/20 22:34:27 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991, 1993 by M. Stephenson, P. Winner
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Healer Hea-loca.lua $NHDT-Date: 1652196004 2022/05/10 15:20:04 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Healer Hea-loca.lua $NHDT-Date: 1781994867 2026/06/20 22:34:27 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991, 1993 by M. Stephenson, P. Winner
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Healer Hea-strt.lua $NHDT-Date: 1652196004 2022/05/10 15:20:04 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Healer Hea-strt.lua $NHDT-Date: 1781994867 2026/06/20 22:34:27 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991, 1993 by M. Stephenson, P. Winner
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Knight Kni-fila.lua $NHDT-Date: 1652196004 2022/05/10 15:20:04 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Knight Kni-fila.lua $NHDT-Date: 1781994867 2026/06/20 22:34:27 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991,92 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Knight Kni-filb.lua $NHDT-Date: 1652196005 2022/05/10 15:20:05 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Knight Kni-filb.lua $NHDT-Date: 1781994868 2026/06/20 22:34:28 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991,92 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Knight Kni-goal.lua $NHDT-Date: 1652196005 2022/05/10 15:20:05 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack Knight Kni-goal.lua $NHDT-Date: 1781994868 2026/06/20 22:34:28 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.2 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991,92 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Knight Kni-loca.lua $NHDT-Date: 1652196005 2022/05/10 15:20:05 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Knight Kni-loca.lua $NHDT-Date: 1781994868 2026/06/20 22:34:28 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991,92 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Knight Kni-strt.lua $NHDT-Date: 1652196006 2022/05/10 15:20:06 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.4 $
-- NetHack Knight Kni-strt.lua $NHDT-Date: 1781994868 2026/06/20 22:34:28 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.5 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991,92 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Monk Mon-fila.lua $NHDT-Date: 1652196006 2022/05/10 15:20:06 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack Monk Mon-fila.lua $NHDT-Date: 1781994868 2026/06/20 22:34:28 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.2 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991-2 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Monk Mon-filb.lua $NHDT-Date: 1652196006 2022/05/10 15:20:06 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack Monk Mon-filb.lua $NHDT-Date: 1781994869 2026/06/20 22:34:29 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.2 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991-2 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Monk Mon-goal.lua $NHDT-Date: 1652196007 2022/05/10 15:20:07 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack Monk Mon-goal.lua $NHDT-Date: 1781994869 2026/06/20 22:34:29 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.2 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991-2 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Monk Mon-loca.lua $NHDT-Date: 1652196007 2022/05/10 15:20:07 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack Monk Mon-loca.lua $NHDT-Date: 1781994869 2026/06/20 22:34:29 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.4 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991-2 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Monk Mon-strt.lua $NHDT-Date: 1652196007 2022/05/10 15:20:07 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.4 $
-- NetHack Monk Mon-strt.lua $NHDT-Date: 1781994869 2026/06/20 22:34:29 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.9 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991-2 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Priest Pri-fila.lua $NHDT-Date: 1652196008 2022/05/10 15:20:08 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack Priest Pri-fila.lua $NHDT-Date: 1781994870 2026/06/20 22:34:30 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.2 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991-2 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Priest Pri-filb.lua $NHDT-Date: 1652196008 2022/05/10 15:20:08 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack Priest Pri-filb.lua $NHDT-Date: 1781994870 2026/06/20 22:34:30 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.2 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991-2 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Priest Pri-goal.lua $NHDT-Date: 1687033651 2023/06/17 20:27:31 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Priest Pri-goal.lua $NHDT-Date: 1781994870 2026/06/20 22:34:30 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991-2 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Priest Pri-loca.lua $NHDT-Date: 1652196009 2022/05/10 15:20:09 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.4 $
-- NetHack Priest Pri-loca.lua $NHDT-Date: 1781994870 2026/06/20 22:34:30 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.5 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991-2 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Priest Pri-strt.lua $NHDT-Date: 1652196009 2022/05/10 15:20:09 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.5 $
-- NetHack Priest Pri-strt.lua $NHDT-Date: 1781994870 2026/06/20 22:34:30 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.6 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991-2 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Ranger Ran-fila.lua $NHDT-Date: 1652196009 2022/05/10 15:20:09 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Ranger Ran-fila.lua $NHDT-Date: 1781994871 2026/06/20 22:34:31 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Ranger Ran-filb.lua $NHDT-Date: 1652196010 2022/05/10 15:20:10 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Ranger Ran-filb.lua $NHDT-Date: 1781994871 2026/06/20 22:34:31 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Ranger Ran-goal.lua $NHDT-Date: 1652196010 2022/05/10 15:20:10 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack Ranger Ran-goal.lua $NHDT-Date: 1781994871 2026/06/20 22:34:31 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.2 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Ranger Ran-loca.lua $NHDT-Date: 1652196010 2022/05/10 15:20:10 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack Ranger Ran-loca.lua $NHDT-Date: 1781994871 2026/06/20 22:34:31 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.2 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Ranger Ran-strt.lua $NHDT-Date: 1652196011 2022/05/10 15:20:11 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Ranger Ran-strt.lua $NHDT-Date: 1781994871 2026/06/20 22:34:31 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.4 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Rogue Rog-fila.lua $NHDT-Date: 1652196011 2022/05/10 15:20:11 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack Rogue Rog-fila.lua $NHDT-Date: 1781994872 2026/06/20 22:34:32 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.2 $
-- Copyright (c) 1992 by Dean Luick
-- NetHack may be freely redistributed. See license for details.
--
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Rogue Rog-filb.lua $NHDT-Date: 1652196011 2022/05/10 15:20:11 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack Rogue Rog-filb.lua $NHDT-Date: 1781994872 2026/06/20 22:34:32 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.2 $
-- Copyright (c) 1992 by Dean Luick
-- NetHack may be freely redistributed. See license for details.
--
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Rogue Rog-goal.lua $NHDT-Date: 1652196012 2022/05/10 15:20:12 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack Rogue Rog-goal.lua $NHDT-Date: 1781994872 2026/06/20 22:34:32 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.2 $
-- Copyright (c) 1992 by Dean Luick
-- NetHack may be freely redistributed. See license for details.
--
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Rogue Rog-loca.lua $NHDT-Date: 1652196012 2022/05/10 15:20:12 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Rogue Rog-loca.lua $NHDT-Date: 1781994872 2026/06/20 22:34:32 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1992 by Dean Luick
-- NetHack may be freely redistributed. See license for details.
--
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Rogue Rog-strt.lua $NHDT-Date: 1652196012 2022/05/10 15:20:12 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.4 $
-- NetHack Rogue Rog-strt.lua $NHDT-Date: 1781994872 2026/06/20 22:34:32 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.7 $
-- Copyright (c) 1992 by Dean Luick
-- NetHack may be freely redistributed. See license for details.
--
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Samurai Sam-fila.lua $NHDT-Date: 1652196013 2022/05/10 15:20:13 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Samurai Sam-fila.lua $NHDT-Date: 1781994873 2026/06/20 22:34:33 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991-92 by M. Stephenson, P. Winner
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Samurai Sam-filb.lua $NHDT-Date: 1652196013 2022/05/10 15:20:13 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack Samurai Sam-filb.lua $NHDT-Date: 1781994873 2026/06/20 22:34:33 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.2 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991-92 by M. Stephenson, P. Winner
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Samurai Sam-goal.lua $NHDT-Date: 1652196013 2022/05/10 15:20:13 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack Samurai Sam-goal.lua $NHDT-Date: 1781994873 2026/06/20 22:34:33 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.2 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991-92 by M. Stephenson, P. Winner
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Samurai Sam-loca.lua $NHDT-Date: 1652196014 2022/05/10 15:20:14 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack Samurai Sam-loca.lua $NHDT-Date: 1781994873 2026/06/20 22:34:33 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.2 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991-92 by M. Stephenson, P. Winner
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Samurai Sam-strt.lua $NHDT-Date: 1695932714 2023/09/28 20:25:14 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.4 $
-- NetHack Samurai Sam-strt.lua $NHDT-Date: 1781994874 2026/06/20 22:34:34 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.5 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991-92 by M. Stephenson, P. Winner
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Tourist Tou-fila.lua $NHDT-Date: 1652196014 2022/05/10 15:20:14 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Tourist Tou-fila.lua $NHDT-Date: 1781994874 2026/06/20 22:34:34 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991,92 by M. Stephenson, P. Winner
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Tourist Tou-filb.lua $NHDT-Date: 1652196015 2022/05/10 15:20:15 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Tourist Tou-filb.lua $NHDT-Date: 1781994874 2026/06/20 22:34:34 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991,92 by M. Stephenson, P. Winner
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Tourist Tou-goal.lua $NHDT-Date: 1652196015 2022/05/10 15:20:15 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.4 $
-- NetHack Tourist Tou-goal.lua $NHDT-Date: 1781994874 2026/06/20 22:34:34 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.6 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991,92 by M. Stephenson, P. Winner
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Tourist Tou-loca.lua $NHDT-Date: 1652196015 2022/05/10 15:20:15 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Tourist Tou-loca.lua $NHDT-Date: 1781994874 2026/06/20 22:34:34 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.4 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991,92 by M. Stephenson, P. Winner
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Tourist Tou-strt.lua $NHDT-Date: 1652196016 2022/05/10 15:20:16 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.3 $
-- NetHack Tourist Tou-strt.lua $NHDT-Date: 1781994875 2026/06/20 22:34:35 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.4 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991,92 by M. Stephenson, P. Winner
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Valkyrie Val-fila.lua $NHDT-Date: 1652196016 2022/05/10 15:20:16 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Valkyrie Val-fila.lua $NHDT-Date: 1781994875 2026/06/20 22:34:35 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991-2 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Valkyrie Val-filb.lua $NHDT-Date: 1652196016 2022/05/10 15:20:16 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Valkyrie Val-filb.lua $NHDT-Date: 1781994875 2026/06/20 22:34:35 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991-2 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Valkyrie Val-goal.lua $NHDT-Date: 1652196017 2022/05/10 15:20:17 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.5 $
-- NetHack Valkyrie Val-goal.lua $NHDT-Date: 1781994875 2026/06/20 22:34:35 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.6 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991-2 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Valkyrie Val-loca.lua $NHDT-Date: 1652196017 2022/05/10 15:20:17 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Valkyrie Val-loca.lua $NHDT-Date: 1781994875 2026/06/20 22:34:35 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991-2 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Valkyrie Val-strt.lua $NHDT-Date: 1652196017 2022/05/10 15:20:17 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Valkyrie Val-strt.lua $NHDT-Date: 1781994876 2026/06/20 22:34:36 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.4 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1991-2 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Wizard Wiz-fila.lua $NHDT-Date: 1652196018 2022/05/10 15:20:18 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack Wizard Wiz-fila.lua $NHDT-Date: 1781994876 2026/06/20 22:34:36 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.2 $
-- Copyright (c) 1992 by David Cohrs
-- NetHack may be freely redistributed. See license for details.
--
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Wizard Wiz-filb.lua $NHDT-Date: 1652196018 2022/05/10 15:20:18 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack Wizard Wiz-filb.lua $NHDT-Date: 1781994876 2026/06/20 22:34:36 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.2 $
-- Copyright (c) 1992 by David Cohrs
-- NetHack may be freely redistributed. See license for details.
--
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Wizard Wiz-goal.lua $NHDT-Date: 1652196018 2022/05/10 15:20:18 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Wizard Wiz-goal.lua $NHDT-Date: 1781994876 2026/06/20 22:34:36 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1992 by David Cohrs
-- NetHack may be freely redistributed. See license for details.
--
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Wizard Wiz-loca.lua $NHDT-Date: 1652196019 2022/05/10 15:20:19 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack Wizard Wiz-loca.lua $NHDT-Date: 1781994876 2026/06/20 22:34:36 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1992 by David Cohrs
-- NetHack may be freely redistributed. See license for details.
--
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack Wizard Wiz-strt.lua $NHDT-Date: 1652196019 2022/05/10 15:20:19 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.3 $
-- NetHack Wizard Wiz-strt.lua $NHDT-Date: 1781994877 2026/06/20 22:34:37 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.4 $
-- Copyright (c) 1992 by David Cohrs
-- NetHack may be freely redistributed. See license for details.
--
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack endgame air.lua $NHDT-Date: 1652196019 2022/05/10 15:20:19 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack endgame air.lua $NHDT-Date: 1781994877 2026/06/20 22:34:37 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1992,1993 by Izchak Miller, David Cohrs,
-- and Timo Hakulinen
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack gehennom asmodeus.lua $NHDT-Date: 1652196020 2022/05/10 15:20:20 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack gehennom asmodeus.lua $NHDT-Date: 1781994877 2026/06/20 22:34:37 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.4 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1992 by M. Stephenson and Izchak Miller
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack endgame astral.lua $NHDT-Date: 1652196020 2022/05/10 15:20:20 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.7 $
-- NetHack endgame astral.lua $NHDT-Date: 1781994877 2026/06/20 22:34:37 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.9 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1992,1993 by Izchak Miller, David Cohrs,
-- and Timo Hakulinen
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack gehennom baalz.lua $NHDT-Date: 1652196020 2022/05/10 15:20:20 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.4 $
-- NetHack gehennom baalz.lua $NHDT-Date: 1781994878 2026/06/20 22:34:38 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.6 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1992 by M. Stephenson and Izchak Miller
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack bigroom bigrm-1.lua $NHDT-Date: 1652196021 2022/05/10 15:20:21 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.3 $
-- NetHack bigroom bigrm-1.lua $NHDT-Date: 1781994878 2026/06/20 22:34:38 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.5 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1990 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack bigroom bigrm-10.lua $NHDT-Date: 1652196024 2022/05/10 15:20:24 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.2 $
-- NetHack bigroom bigrm-10.lua $NHDT-Date: 1781994878 2026/06/20 22:34:38 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1990 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack bigroom bigrm-11.lua $NHDT-Date: 1652196024 2022/05/10 15:20:24 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.0 $
-- NetHack bigroom bigrm-11.lua $NHDT-Date: 1781994878 2026/06/20 22:34:38 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.1 $
-- Copyright (c) 2021 by Pasi Kallinen
-- NetHack may be freely redistributed. See license for details.
--
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack bigroom bigrm-12.lua $NHDT-Date: $ $NHDT-Branch: NetHack-3.7 $
-- NetHack bigroom bigrm-12.lua $NHDT-Date: $ $NHDT-Branch: NetHack-5.0 $
-- Copyright (c) 2024 by Pasi Kallinen
-- NetHack may be freely redistributed. See license for details.
--
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack bigroom bigrm-13.lua $NHDT-Date: 1652196024 2022/05/10 15:20:24 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.0 $
-- NetHack bigroom bigrm-13.lua $NHDT-Date: 1781994879 2026/06/20 22:34:39 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.5 $
-- Copyright (c) 2026 by Pasi Kallinen
-- NetHack may be freely redistributed. See license for details.
--
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack bigroom bigrm-2.lua $NHDT-Date: 1652196021 2022/05/10 15:20:21 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack bigroom bigrm-2.lua $NHDT-Date: 1781994879 2026/06/20 22:34:39 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1990 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack bigroom bigrm-3.lua $NHDT-Date: 1652196021 2022/05/10 15:20:21 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack bigroom bigrm-3.lua $NHDT-Date: 1781994879 2026/06/20 22:34:39 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1990 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack bigroom bigrm-4.lua $NHDT-Date: 1652196022 2022/05/10 15:20:22 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack bigroom bigrm-4.lua $NHDT-Date: 1781994879 2026/06/20 22:34:39 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.5 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1990 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack bigroom bigrm-5.lua $NHDT-Date: 1652196022 2022/05/10 15:20:22 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack bigroom bigrm-5.lua $NHDT-Date: 1781994879 2026/06/20 22:34:39 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1990 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack bigroom bigrm-6.lua $NHDT-Date: 1652196022 2022/05/10 15:20:22 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack bigroom bigrm-6.lua $NHDT-Date: 1781994880 2026/06/20 22:34:40 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.3 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1990 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack bigroom bigrm-7.lua $NHDT-Date: 1652196023 2022/05/10 15:20:23 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.0 $
-- NetHack bigroom bigrm-7.lua $NHDT-Date: 1781994880 2026/06/20 22:34:40 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.2 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1990 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack bigroom bigrm-8.lua $NHDT-Date: 1652196023 2022/05/10 15:20:23 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack bigroom bigrm-8.lua $NHDT-Date: 1781994880 2026/06/20 22:34:40 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.2 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1990 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack bigroom bigrm-9.lua $NHDT-Date: 1652196023 2022/05/10 15:20:23 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1 $
-- NetHack bigroom bigrm-9.lua $NHDT-Date: 1781994880 2026/06/20 22:34:40 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.2 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- Copyright (c) 1990 by M. Stephenson
-- NetHack may be freely redistributed. See license for details.
+18 -4
View File
@@ -1,4 +1,4 @@
# NetHack 3.7 bogusmon.txt $NHDT-Date: 1596498237 2020/08/03 23:43:57 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.10 $
# NetHack 5.0 bogusmon.txt $NHDT-Date: 1596498237 2020/08/03 23:43:57 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.10 $
# Copyright (c) 2016 by Pasi Kallinen
# NetHack may be freely redistributed. See license for details.
#
@@ -97,6 +97,22 @@ voussoir
barking spider
frog cloud
toothsayer
third eye
owlpug
pugasus
acorn
red dot
robot chicken
doozer
poison cackler
lhurgoyf
phelddagrif
tiktaalik
weremoustache
rapier tapir
choplet
pommelbug
quest sprout
# Quendor (Zork, &c.)
grue
@@ -301,6 +317,7 @@ wiki
peer
COBOL
wire shark
stray tab
# bugs
bohrbug
@@ -384,9 +401,6 @@ little green man
# Portal
weighted Companion Cube
# /b/
/b/tard
# South Park
manbearpig
+1 -1
View File
@@ -1,4 +1,4 @@
-- NetHack castle castle.lua $NHDT-Date: 1652196024 2022/05/10 15:20:24 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.7 $
-- NetHack castle castle.lua $NHDT-Date: 1781994880 2026/06/20 22:34:40 $ $NHDT-Branch: NetHack-5.0 $:$NHDT-Revision: 1.9 $
-- Copyright (c) 1989 by Jean-Christophe Collet
-- NetHack may be freely redistributed. See license for details.
--

Some files were not shown because too many files have changed in this diff Show More