From f98428001c2b31a6f7bdbde41c8a6ac665b58860 Mon Sep 17 00:00:00 2001 From: Alex Smith Date: Thu, 30 Apr 2026 01:17:01 +0100 Subject: [PATCH 01/14] 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. --- src/objnam.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/objnam.c b/src/objnam.c index 1246029fd..cd50e0bb5 100644 --- a/src/objnam.c +++ b/src/objnam.c @@ -1673,9 +1673,11 @@ doname_base( nochrg ? "contents" : "for sale", pricebuf); } else if (nochrg > 0) { Concat(bp, 0, " (no charge)"); + } else { + append_price_quote(bp, &bp_eos, obj->otyp); } - if (price) + if (price > 0L) record_price_quote(obj->otyp, price / obj->quan, TRUE); } else if (iflags.pricequotes && !objects[obj->otyp].oc_name_known) { append_price_quote(bp, &bp_eos, obj->otyp); From 702fbfa06ed5bbdb1bc6d72c2226d84764fa6b49 Mon Sep 17 00:00:00 2001 From: nhmall Date: Wed, 29 Apr 2026 21:48:52 -0400 Subject: [PATCH 02/14] 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. --- sys/unix/hints/include/multiw-2.370 | 4 --- sys/unix/hints/linux.370 | 41 ++++++++++++++++++++++++++--- sys/unix/hints/macOS.370 | 9 ++++++- 3 files changed, 46 insertions(+), 8 deletions(-) diff --git a/sys/unix/hints/include/multiw-2.370 b/sys/unix/hints/include/multiw-2.370 index ca732f6c8..e1cf1633d 100644 --- a/sys/unix/hints/include/multiw-2.370 +++ b/sys/unix/hints/include/multiw-2.370 @@ -168,10 +168,6 @@ CPLUSPLUS_NEED_DEPSUPPRESS = 1 endif # WANT_WIN_QT6 endif # WANT_WIN_QT -ifdef WANT_NHUUID -USE_UUIDLIB=1 -endif - ifeq "$(GIT)" "1" ifndef GITSUBMODULES GITSUBMODULES=1 diff --git a/sys/unix/hints/linux.370 b/sys/unix/hints/linux.370 index ea239260e..a8c4bc212 100755 --- a/sys/unix/hints/linux.370 +++ b/sys/unix/hints/linux.370 @@ -227,11 +227,46 @@ ifdef MAKEFILE_SRC ifdef CURSESLIB WINLIB += $(CURSESLIB) endif #CURSESLIB -ifdef WANT_NHUUID + +ifneq "$(NO_NHUUID)" "1" +UUID_LIB_CHECK := $(shell echo `/sbin/ldconfig -p | grep libuuid`) +#$(info UUID_LIB_CHECK=$(UUID_LIB_CHECK)) +ifneq "$(UUID_LIB_CHECK)" "" +UUID_LIB=1 +else +UUID_LIB=0 +endif +#$(info UUID_LIB=$(UUID_LIB)) +# +# check for uuid development headers +UUID_HEADERS_CHECK := $(wildcard /usr/include/uuid/uuid.h) +#$(info UUID_HEADERS_CHECK=$(UUID_HEADERS_CHECK)) +ifneq "$(UUID_HEADERS_CHECK)" "" +UUID_HEADERS = 1 +else +UUID_HEADERS = 0 +endif +#$(info UUID_HEADERS=$(UUID_HEADERS)) + +ifeq "$(UUID_LIB)" "1" +ifeq "$(UUID_HEADERS)" "1" +ifndef WANT_NHUUID +WANT_NHUUID=1 +endif +endif +endif +else # NO_NHUUID +WANT_NHUUID=0 +endif # NO_NHUUID + +ifeq "$(WANT_NHUUID)" "1" +#$(info NHUUID support will be included) CFLAGS+= -DNHUUID LIBS+=-luuid -endif #NHUUID -endif #MAKEFILE_SRC +else # WANT_NHUUID +$(info Attention - No NHUUID support will be included) +endif # WANT_NHUUID +endif # MAKEFILE_SRC ifdef WANT_WIN_X11 USE_XPM=1 diff --git a/sys/unix/hints/macOS.370 b/sys/unix/hints/macOS.370 index 006c54a45..c48926805 100755 --- a/sys/unix/hints/macOS.370 +++ b/sys/unix/hints/macOS.370 @@ -216,11 +216,18 @@ LFLAGS += -framework AVFoundation endif ifdef MAKEFILE_SRC +ifndef NO_NHUUID +# macOS doesn't need any extra prerequisite libraries +# so do this unconditionally, unless NO_NHUUID=1 is +# passed on the Make command line. +WANT_NHUUID=1 +endif #NO_NHUUID + ifdef WANT_NHUUID CFLAGS += -DNHUUID UUIDOBJ = macuuid.o endif -endif +endif #MAKEFILE_SRC # #-INCLUDE multisnd1-pre.370 From 84a6eb5e224d3cece2a888cc85501b682b17b1d5 Mon Sep 17 00:00:00 2001 From: nhmall Date: Wed, 29 Apr 2026 23:43:01 -0400 Subject: [PATCH 03/14] avoid impossible() with inbound migrating mon --- include/monst.h | 1 + src/display.c | 2 ++ src/dog.c | 4 ++++ 3 files changed, 7 insertions(+) diff --git a/include/monst.h b/include/monst.h index 6b3262706..1d16a05db 100644 --- a/include/monst.h +++ b/include/monst.h @@ -64,6 +64,7 @@ enum m_ap_types { #define MON_ENDGAME_FREE 0x20 #define MON_ENDGAME_MIGR 0x40 #define MON_OBLITERATE 0x80 +#define MON_STILL_ARRIVING 0x100 #define M_AP_TYPMASK 0x7 #define M_AP_F_DKNOWN 0x8 diff --git a/src/display.c b/src/display.c index d3241ce9f..cb8f0f6be 100644 --- a/src/display.c +++ b/src/display.c @@ -1505,6 +1505,8 @@ see_monsters(void) for (mon = fmon; mon; mon = mon->nmon) { if (DEADMONSTER(mon)) continue; + if ((mon->mstate & MON_STILL_ARRIVING) != 0) + continue; newsym(mon->mx, mon->my); if (mon->wormno) see_wsegs(mon); diff --git a/src/dog.c b/src/dog.c index f9676050c..675ca4676 100644 --- a/src/dog.c +++ b/src/dog.c @@ -427,6 +427,7 @@ mon_arrive(struct monst *mtmp, int when) stairway *stway; d_level fromdlev; + mtmp->mstate |= MON_STILL_ARRIVING; mtmp->nmon = fmon; fmon = mtmp; if (mtmp->isshk) @@ -475,6 +476,7 @@ mon_arrive(struct monst *mtmp, int when) rloc_to(mtmp, u.ux, u.uy); else mnexto(mtmp, RLOC_NOMSG); + mtmp->mstate &= ~MON_STILL_ARRIVING; return; } else if (when == Wiz_arrive) { /* resurrect() is bringing existing wizard to harass the hero */ @@ -604,6 +606,8 @@ mon_arrive(struct monst *mtmp, int when) mtmp->mx = 0; /*(already is 0)*/ mtmp->my = xyflags; + mtmp->mstate &= ~MON_STILL_ARRIVING; + if (xlocale) failed_to_place = !mnearto(mtmp, xlocale, ylocale, FALSE, RLOC_NOMSG); else From 5035b3695604f167101f1b097dad9986beb19a32 Mon Sep 17 00:00:00 2001 From: nhmall Date: Wed, 29 Apr 2026 23:48:19 -0400 Subject: [PATCH 04/14] possible macOS build fix I need someone with arm64 Mac to confirm. --- sys/unix/hints/macOS.370 | 1 + 1 file changed, 1 insertion(+) diff --git a/sys/unix/hints/macOS.370 b/sys/unix/hints/macOS.370 index c48926805..ba54d72ab 100755 --- a/sys/unix/hints/macOS.370 +++ b/sys/unix/hints/macOS.370 @@ -226,6 +226,7 @@ endif #NO_NHUUID ifdef WANT_NHUUID CFLAGS += -DNHUUID UUIDOBJ = macuuid.o +LFLAGS += -framework foundation endif endif #MAKEFILE_SRC From 6c36009ce428b116650b6d08a9b94de79684dd5b Mon Sep 17 00:00:00 2001 From: nhmall Date: Wed, 29 Apr 2026 23:55:48 -0400 Subject: [PATCH 05/14] case bit --- sys/unix/hints/macOS.370 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/unix/hints/macOS.370 b/sys/unix/hints/macOS.370 index ba54d72ab..5b78f6245 100755 --- a/sys/unix/hints/macOS.370 +++ b/sys/unix/hints/macOS.370 @@ -226,7 +226,7 @@ endif #NO_NHUUID ifdef WANT_NHUUID CFLAGS += -DNHUUID UUIDOBJ = macuuid.o -LFLAGS += -framework foundation +LFLAGS += -framework Foundation endif endif #MAKEFILE_SRC From 52c74222c2f036348b9038ce42d3642e997bff4e Mon Sep 17 00:00:00 2001 From: Pasi Kallinen Date: Thu, 30 Apr 2026 07:07:44 +0300 Subject: [PATCH 06/14] Update perm_inventory when returning to human form Embedded dragon scales weren't updated to worn --- src/polyself.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/polyself.c b/src/polyself.c index 2461a1b79..db3824bb4 100644 --- a/src/polyself.c +++ b/src/polyself.c @@ -1408,6 +1408,7 @@ rehumanize(void) disp.botl = TRUE; gv.vision_full_recalc = 1; encumber_msg(); + update_inventory(); if (was_flying && !Flying && u.usteed) You("and %s return gently to the %s.", mon_nam(u.usteed), surface(u.ux, u.uy)); From c99da87c7006cac968e0243775afebda8cfc11fa Mon Sep 17 00:00:00 2001 From: PatR Date: Wed, 29 Apr 2026 21:17:31 -0700 Subject: [PATCH 07/14] 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 --- src/weapon.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/weapon.c b/src/weapon.c index b400ac91c..708e2bc3a 100644 --- a/src/weapon.c +++ b/src/weapon.c @@ -954,14 +954,19 @@ abon(void) if (Upolyd) return (adj_lev(&mons[u.umonnum]) - 3); + + /* this used to be '<= 18/50' for bonus of 1 but got changed to '< 18/50' + so that '18/50' gives a bonus of 2; gnome and orc player characters + have max Str of 18/50 and giving an extra bonus at that break point + provides an incentive for them to max out that characteristic */ if (str < 6) sbon = -2; else if (str < 8) sbon = -1; else if (str < 17) sbon = 0; - else if (str <= STR18(50)) - sbon = 1; /* up to 18/50 */ + else if (str < STR18(50)) + sbon = 1; /* up to 18/49 */ else if (str < STR18(100)) sbon = 2; else From 2b985be3b9e9dc65a46bad0fd925e72d29d62f35 Mon Sep 17 00:00:00 2001 From: nhmall Date: Thu, 30 Apr 2026 01:13:40 -0400 Subject: [PATCH 08/14] macOS fixes --- sys/unix/NetHack.xcodeproj/project.pbxproj | 10 ++++++++ sys/unix/macuuid.m | 27 +++++++++++++++++----- sys/unix/unixmain.c | 20 ++++++---------- 3 files changed, 38 insertions(+), 19 deletions(-) diff --git a/sys/unix/NetHack.xcodeproj/project.pbxproj b/sys/unix/NetHack.xcodeproj/project.pbxproj index e379e51f8..81a1eb1b9 100644 --- a/sys/unix/NetHack.xcodeproj/project.pbxproj +++ b/sys/unix/NetHack.xcodeproj/project.pbxproj @@ -209,6 +209,7 @@ F5857AA22DED026700A8CB4F /* version.c in Sources */ = {isa = PBXBuildFile; fileRef = 31B8A32721A238010055BD01 /* version.c */; }; F5857AA42DED032D00A8CB4F /* cfgfiles.c in Sources */ = {isa = PBXBuildFile; fileRef = F5857AA32DED032C00A8CB4F /* cfgfiles.c */; }; F5857AA62DED03BB00A8CB4F /* sfbase.c in Sources */ = {isa = PBXBuildFile; fileRef = F5857AA52DED03BB00A8CB4F /* sfbase.c */; }; + F5E1A4CF2FA2F74C0014D115 /* macuuid.m in Sources */ = {isa = PBXBuildFile; fileRef = F5E1A4CE2FA2F74C0014D115 /* macuuid.m */; }; F5E66A222F7D4B30000E30B7 /* earlyarg.c in Sources */ = {isa = PBXBuildFile; fileRef = F5E66A212F7D4B30000E30B7 /* earlyarg.c */; }; /* End PBXBuildFile section */ @@ -635,6 +636,7 @@ F54C1AE42E43D22A006CAA8E /* sfprocs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = sfprocs.h; path = ../../include/include/sfprocs.h; sourceTree = ""; }; F5857AA32DED032C00A8CB4F /* cfgfiles.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = cfgfiles.c; path = ../../src/cfgfiles.c; sourceTree = ""; }; F5857AA52DED03BB00A8CB4F /* sfbase.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = sfbase.c; path = ../../src/sfbase.c; sourceTree = ""; }; + F5E1A4CE2FA2F74C0014D115 /* macuuid.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = macuuid.m; sourceTree = ""; }; F5E66A212F7D4B30000E30B7 /* earlyarg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = earlyarg.c; path = ../../src/earlyarg.c; sourceTree = ""; }; /* End PBXFileReference section */ @@ -695,6 +697,7 @@ 3189576821A1FCC100FB2ABE = { isa = PBXGroup; children = ( + F5E1A4CE2FA2F74C0014D115 /* macuuid.m */, F5E66A212F7D4B30000E30B7 /* earlyarg.c */, F50818302F6F564300D2AAFA /* iactions.c */, F515A73B2DED0B47006E1F63 /* hacklib.c */, @@ -1883,6 +1886,7 @@ 31B8A38621A238060055BD01 /* mondata.c in Sources */, 31B8A41921A244940055BD01 /* objects.c in Sources */, 31B8A3AA21A238060055BD01 /* wizard.c in Sources */, + F5E1A4CF2FA2F74C0014D115 /* macuuid.m in Sources */, 31B8A3D021A238060055BD01 /* explode.c in Sources */, 31B8A3DE21A238060055BD01 /* sys.c in Sources */, 31B8A38021A238060055BD01 /* sit.c in Sources */, @@ -2190,6 +2194,7 @@ "DEBUG=1", "$(inherited)", ); + "GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = "NHUUID=1"; GCC_WARN_64_TO_32_BIT_CONVERSION = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_PEDANTIC = YES; @@ -2318,6 +2323,10 @@ DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 5J8MP36Y73; GCC_C_LANGUAGE_STANDARD = c99; + "GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = ( + "DEBUG=1", + "$(inherited)", + ); INSTALL_PATH = "$(NH_INSTALL_DIR)"; MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)"; OTHER_CFLAGS = ( @@ -2351,6 +2360,7 @@ DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 5J8MP36Y73; GCC_C_LANGUAGE_STANDARD = c99; + "GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = "NHUUID=1"; INSTALL_PATH = "$(NH_INSTALL_DIR)"; MACOSX_DEPLOYMENT_TARGET = "$(RECOMMENDED_MACOSX_DEPLOYMENT_TARGET)"; OTHER_CFLAGS = ( diff --git a/sys/unix/macuuid.m b/sys/unix/macuuid.m index 67a4f2486..fb5dc6699 100644 --- a/sys/unix/macuuid.m +++ b/sys/unix/macuuid.m @@ -5,7 +5,7 @@ #include "hack.h" void free_macos_uuid(void); -const char *get_macos_uuid(void); +void get_macos_uuid(char *); #ifdef DEBUG #undef DEBUG @@ -25,19 +25,34 @@ free_macos_uuid(void) } } -const char * -get_macos_uuid(void) +void +get_macos_uuid(char *target) { NSString *uuidString = [[NSUUID UUID] UUIDString]; - const char *str_uuid; - + const char *str_uuid, *src; + char *dst; + int i; + if (macos_uuid) free_macos_uuid(); /* str_uuid = [uuidString cStringUsingEncoding:NSUTF8StringEncoding]; */ str_uuid = [uuidString cStringUsingEncoding:NSASCIIStringEncoding]; macos_uuid = dupstr(str_uuid); - return macos_uuid; + + if (macos_uuid) { + src = macos_uuid; + dst = target; + for (i = 0; i < 36; ++i) { + *dst = *src; + ++src; + ++dst; + } + dst[36] = '\0'; + } + free_macos_uuid(); + macos_uuid = 0; + return; } diff --git a/sys/unix/unixmain.c b/sys/unix/unixmain.c index a197056cc..73318c506 100644 --- a/sys/unix/unixmain.c +++ b/sys/unix/unixmain.c @@ -842,19 +842,16 @@ sys_random_seed(void) } #if defined(MACOS) && defined(NHUUID) -extern char *get_macos_uuid(char **); /* sys/unix/macuuid.m */ +extern void get_macos_uuid(char *); /* sys/unix/macuuid.m */ extern void free_macos_uuid(void); /* sys/unix/macuuid.m */ #endif void get_nhuuid(void) { -#if !defined(MACOS) #if defined(NHUUID) char struuid[37] = { 0 }; -#endif -#endif - char *struuidptr = NULL; + char *struuidptr = &struuid[0]; #if defined(LINUX) && defined(NHUUID) uuid_t binuuid; #endif @@ -862,20 +859,17 @@ get_nhuuid(void) if (svn.nhuuid[0]) return; -#if defined(MACOS) && defined(NHUUID) - get_macos_uuid(&struuidptr); -#elif defined(LINUX) && defined(NHUUID) +#if defined(MACOS) + get_macos_uuid(&struuid[0]); +#elif defined(LINUX) uuid_generate_random(binuuid); uuid_unparse(binuuid, struuid); - struuidptr = &struuid[0]; #endif /* MACOS || LINUX */ - if (struuidptr) + if (*struuidptr) Snprintf(svn.nhuuid, sizeof svn.nhuuid, "%s", struuidptr); -#if defined(MACOS) && defined(NHUUID) - free_macos_uuid(); -#endif +#endif /* NHUUID */ } void From 22ab0456d0dedfbb22bbd447863c03e4a25af302 Mon Sep 17 00:00:00 2001 From: nhmall Date: Thu, 30 Apr 2026 01:28:07 -0400 Subject: [PATCH 09/14] follow-up: don't clear the bit until end of function --- src/dog.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dog.c b/src/dog.c index 675ca4676..742af8dc8 100644 --- a/src/dog.c +++ b/src/dog.c @@ -606,7 +606,6 @@ mon_arrive(struct monst *mtmp, int when) mtmp->mx = 0; /*(already is 0)*/ mtmp->my = xyflags; - mtmp->mstate &= ~MON_STILL_ARRIVING; if (xlocale) failed_to_place = !mnearto(mtmp, xlocale, ylocale, FALSE, RLOC_NOMSG); @@ -620,6 +619,7 @@ mon_arrive(struct monst *mtmp, int when) else /* when==Wiz_arrive => not being called by losedogs() */ m_into_limbo(mtmp); } + mtmp->mstate &= ~MON_STILL_ARRIVING; } /* heal monster for time spent elsewhere */ From 82854b79364f60dca68ba57e01f726224ae1cdc1 Mon Sep 17 00:00:00 2001 From: nhmall Date: Thu, 30 Apr 2026 01:39:18 -0400 Subject: [PATCH 10/14] documentation updates more Dungeoneers list updates for valued contributors --- dat/history | 86 +++++++++++++++++++++++------------------------ doc/Guidebook.mn | 86 +++++++++++++++++++++++------------------------ doc/Guidebook.tex | 86 +++++++++++++++++++++++------------------------ 3 files changed, 129 insertions(+), 129 deletions(-) diff --git a/dat/history b/dat/history index 10bfa67a9..5b495b2ca 100644 --- a/dat/history +++ b/dat/history @@ -292,46 +292,46 @@ particularly intriguing modification to help out with the game. The NetHack Development Team sometimes makes note of the names of the worst of these miscreants in this, the list of Dungeoneers: - Adam Aronow Izchak Miller Mike Stephenson - Alex Kompel J. Ali Harlow Mikko Juola - Alex Smith Janet Walz Nathan Eady - Andreas Dorn Janne Salmijarvi Norm Meluch - Andy Church Jean-Christophe Collet Olaf Seibert - Andy Swanson Jeff Bailey Pasi Kallinen - Andy Thomson Jochen Erwied Pat Rankin - Ari Huttunen John Kallen Patric Mueller - Bart House John Rupley Paul Winner - Benson I. Margulies John S. Bien Pierre Martineau - Bill Dyer Johnny Lee Ralf Brown - Boudewijn Waijers Jon W{tte Ray Chason - Bruce Cox Jonathan Handler Richard Addison - Bruce Holloway Joshua Delahunty Richard Beigel - Bruce Mewborne Karl Garrison Richard P. Hughey - Carl Schelin Keizo Yamamoto Rob Menke - Chris Russo Keith Simpson Robin Bandy - David Cohrs Ken Arnold Robin Johnson - David Damerell Ken Arromdee Roderick Schertler - David Gentzel Ken Lorber Roland McGrath - David Hairston Ken Washikita Ron Van Iwaarden - Dean Luick Kevin Darcy Ronnen Miller - Del Lamb Kevin Hugo Ross Brown - Derek S. Ray Kevin Sitze Sascha Wostmann - Deron Meranda Kevin Smolkowski Scott Bigham - Dion Nicolaas Kevin Sweet Scott R. Turner - Dylan O'Donnell Lars Huttar Sean Hunt - Eric Backus Leon Arnott Stephen Spackman - Eric Hendrickson M. Drew Streib Stefan Thielscher - Eric R. Smith Malcolm Ryan Stephen White - Eric S. Raymond Mark Gooderum Steve Creps - Erik Andersen Mark Modrall Steve Linhart - Fredrik Ljungdahl Marvin Bressler Steve VanDevender - Frederick Roeber Matthew Day Teemu Suikki - G. Branden Robinson Merlyn LeRoy Tim Lennan - Gil Neiger Michael Allison Timo Hakulinen - Greg Laskin Michael Feir Tom Almy - Greg Olson Michael Hamel Tom West - Gregg Wonderly Michael Meyer Warren Cheung - Hao-yang Wang Michael Sokolov Warwick Allison - Helge Hafting Mike Engber Yitzhak Sapir - Ingo Paschke Mike Gallop - Irina Rempt-Drijfhout Mike Passaretti + Adam Aronow Irina Rempt-Drijfhout Mike Gallop + Alex Kompel Izchak Miller Mike Passaretti + Alex Smith J. Ali Harlow Mike Stephenson + Andreas Dorn Janet Walz Mikko Juola + Andy Church Janne Salmijarvi Nathan Eady + Andy Swanson Jean-Christophe Collet Norm Meluch + Andy Thomson Jeff Bailey Olaf Seibert + Ari Huttunen Jochen Erwied Pasi Kallinen + Bart House John Kallen Pat Rankin + Benson I. Margulies John Rupley Patric Mueller + Bill Dyer John S. Bien Paul Winner + Boudewijn Waijers Johnny Lee Pierre Martineau + Bruce Cox Jon W{tte Ralf Brown + Bruce Holloway Jonathan Handler Ray Chason + Bruce Mewborne Joshua Delahunty Richard Addison + Cameron Root Karl Garrison Richard Beigel + Carl Schelin Keizo Yamamoto Richard P. Hughey + Chris Russo Keith Simpson Rob Menke + David Cohrs Ken Arnold Robin Bandy + David Damerell Ken Arromdee Robin Johnson + David Gentzel Ken Lorber Roderick Schertler + David Hairston Ken Washikita Roland McGrath + Dean Luick Kestrel Gregorich-Trevor Ron Van Iwaarden + Del Lamb Kevin Darcy Ronnen Miller + Derek S. Ray Kevin Hugo Ross Brown + Deron Meranda Kevin Sitze Sascha Wostmann + Dion Nicolaas Kevin Smolkowski Scott Bigham + Dylan O'Donnell Kevin Sweet Scott R. Turner + Eric Backus Lars Huttar Sean Hunt + Eric Hendrickson Leon Arnott Stephen Spackman + Eric R. Smith M. Drew Streib Stefan Thielscher + Eric S. Raymond Malcolm Ryan Stephen White + Erik Andersen Mark Gooderum Steve Creps + Fredrik Ljungdahl Mark Modrall Steve Linhart + Frederick Roeber Marvin Bressler Steve VanDevender + G. Branden Robinson Matthew Day Teemu Suikki + Gil Neiger Merlyn LeRoy Tim Lennan + Greg Laskin Michael Allison Timo Hakulinen + Greg Olson Michael Feir Tom Almy + Gregg Wonderly Michael Hamel Tom West + Hao-yang Wang Michael Meyer Warren Cheung + Helge Hafting Michael Sokolov Warwick Allison + Ingo Paschke Mike Engber Yitzhak Sapir diff --git a/doc/Guidebook.mn b/doc/Guidebook.mn index 44801028e..4d1499510 100644 --- a/doc/Guidebook.mn +++ b/doc/Guidebook.mn @@ -6811,49 +6811,49 @@ miscreants in this, the list of Dungeoneers: center; c2 c2 c. .\"TABLE_START -Adam Aronow Izchak Miller Mike Stephenson -Alex Kompel J. Ali Harlow Mikko Juola -Alex Smith Janet Walz Nathan Eady -Andreas Dorn Janne Salmijarvi Norm Meluch -Andy Church Jean-Christophe Collet Olaf Seibert -Andy Swanson Jeff Bailey Pasi Kallinen -Andy Thomson Jochen Erwied Pat Rankin -Ari Huttunen John Kallen Patric Mueller -Bart House John Rupley Paul Winner -Benson I. Margulies John S. Bien Pierre Martineau -Bill Dyer Johnny Lee Ralf Brown -Boudewijn Waijers Jon W{tte Ray Chason -Bruce Cox Jonathan Handler Richard Addison -Bruce Holloway Joshua Delahunty Richard Beigel -Bruce Mewborne Karl Garrison Richard P. Hughey -Carl Schelin Keizo Yamamoto Rob Menke -Chris Russo Keith Simpson Robin Bandy -David Cohrs Ken Arnold Robin Johnson -David Damerell Ken Arromdee Roderick Schertler -David Gentzel Ken Lorber Roland McGrath -David Hairston Ken Washikita Ron Van Iwaarden -Dean Luick Kevin Darcy Ronnen Miller -Del Lamb Kevin Hugo Ross Brown -Derek S. Ray Kevin Sitze Sascha Wostmann -Deron Meranda Kevin Smolkowski Scott Bigham -Dion Nicolaas Kevin Sweet Scott R. Turner -Dylan O'Donnell Lars Huttar Sean Hunt -Eric Backus Leon Arnott Stephen Spackman -Eric Hendrickson M. Drew Streib Stefan Thielscher -Eric R. Smith Malcolm Ryan Stephen White -Eric S. Raymond Mark Gooderum Steve Creps -Erik Andersen Mark Modrall Steve Linhart -Fredrik Ljungdahl Marvin Bressler Steve VanDevender -Frederick Roeber Matthew Day Teemu Suikki -G. Branden Robinson Merlyn LeRoy Tim Lennan -Gil Neiger Michael Allison Timo Hakulinen -Greg Laskin Michael Feir Tom Almy -Greg Olson Michael Hamel Tom West -Gregg Wonderly Michael Meyer Warren Cheung -Hao-yang Wang Michael Sokolov Warwick Allison -Helge Hafting Mike Engber Yitzhak Sapir -Ingo Paschke Mike Gallop -Irina Rempt-Drijfhout Mike Passaretti +Adam Aronow Irina Rempt-Drijfhout Mike Gallop +Alex Kompel Izchak Miller Mike Passaretti +Alex Smith J. Ali Harlow Mike Stephenson +Andreas Dorn Janet Walz Mikko Juola +Andy Church Janne Salmijarvi Nathan Eady +Andy Swanson Jean-Christophe Collet Norm Meluch +Andy Thomson Jeff Bailey Olaf Seibert +Ari Huttunen Jochen Erwied Pasi Kallinen +Bart House John Kallen Pat Rankin +Benson I. Margulies John Rupley Patric Mueller +Bill Dyer John S. Bien Paul Winner +Boudewijn Waijers Johnny Lee Pierre Martineau +Bruce Cox Jon W{tte Ralf Brown +Bruce Holloway Jonathan Handler Ray Chason +Bruce Mewborne Joshua Delahunty Richard Addison +Cameron Root Karl Garrison Richard Beigel +Carl Schelin Keizo Yamamoto Richard P. Hughey +Chris Russo Keith Simpson Rob Menke +David Cohrs Ken Arnold Robin Bandy +David Damerell Ken Arromdee Robin Johnson +David Gentzel Ken Lorber Roderick Schertler +David Hairston Ken Washikita Roland McGrath +Dean Luick Kestrel Gregorich-Trevor Ron Van Iwaarden +Del Lamb Kevin Darcy Ronnen Miller +Derek S. Ray Kevin Hugo Ross Brown +Deron Meranda Kevin Sitze Sascha Wostmann +Dion Nicolaas Kevin Smolkowski Scott Bigham +Dylan O'Donnell Kevin Sweet Scott R. Turner +Eric Backus Lars Huttar Sean Hunt +Eric Hendrickson Leon Arnott Stephen Spackman +Eric R. Smith M. Drew Streib Stefan Thielscher +Eric S. Raymond Malcolm Ryan Stephen White +Erik Andersen Mark Gooderum Steve Creps +Fredrik Ljungdahl Mark Modrall Steve Linhart +Frederick Roeber Marvin Bressler Steve VanDevender +G. Branden Robinson Matthew Day Teemu Suikki +Gil Neiger Merlyn LeRoy Tim Lennan +Greg Laskin Michael Allison Timo Hakulinen +Greg Olson Michael Feir Tom Almy +Gregg Wonderly Michael Hamel Tom West +Hao-yang Wang Michael Meyer Warren Cheung +Helge Hafting Michael Sokolov Warwick Allison +Ingo Paschke Mike Engber Yitzhak Sapir .\"TABLE_END Do not delete this line. .TE .BR 1 diff --git a/doc/Guidebook.tex b/doc/Guidebook.tex index b48d5c53e..3539b0242 100644 --- a/doc/Guidebook.tex +++ b/doc/Guidebook.tex @@ -7555,49 +7555,49 @@ of these miscreants in this, the list of Dungeoneers: \begin{center} \begin{tabular}{llll} %TABLE_START -Adam Aronow & Izchak Miller & Mike Stephenson\\ -Alex Kompel & J. Ali Harlow & Mikko Juola\\ -Alex Smith & Janet Walz & Nathan Eady\\ -Andreas Dorn & Janne Salmij\"{a}rvi & Norm Meluch\\ -Andy Church & Jean-Christophe Collet & Olaf Seibert\\ -Andy Swanson & Jeff Bailey & Pasi Kallinen\\ -Andy Thomson & Jochen Erwied & Pat Rankin\\ -Ari Huttunen & John Kallen & Patric Mueller\\ -Bart House & John Rupley & Paul Winner\\ -Benson I. Margulies & John S. Bien & Pierre Martineau\\ -Bill Dyer & Johnny Lee & Ralf Brown\\ -Boudewijn Waijers & Jon W\{tte & Ray Chason\\ -Bruce Cox & Jonathan Handler & Richard Addison\\ -Bruce Holloway & Joshua Delahunty & Richard Beigel\\ -Bruce Mewborne & Karl Garrison & Richard P. Hughey\\ -Carl Schelin & Keizo Yamamoto & Rob Menke\\ -Chris Russo & Keith Simpson & Robin Bandy\\ -David Cohrs & Ken Arnold & Robin Johnson\\ -David Damerell & Ken Arromdee & Roderick Schertler\\ -David Gentzel & Ken Lorber & Roland McGrath\\ -David Hairston & Ken Washikita & Ron Van Iwaarden\\ -Dean Luick & Kevin Darcy & Ronnen Miller\\ -Del Lamb & Kevin Hugo & Ross Brown\\ -Derek S. Ray & Kevin Sitze & Sascha Wostmann\\ -Deron Meranda & Kevin Smolkowski & Scott Bigham\\ -Dion Nicolaas & Kevin Sweet & Scott R. Turner\\ -Dylan O'Donnell & Lars Huttar & Sean Hunt\\ -Eric Backus & Leon Arnott & Stephen Spackman\\ -Eric Hendrickson & M. Drew Streib & Stefan Thielscher\\ -Eric R. Smith & Malcolm Ryan & Stephen White\\ -Eric S. Raymond & Mark Gooderum & Steve Creps\\ -Erik Andersen & Mark Modrall & Steve Linhart\\ -Fredrik Ljungdahl & Marvin Bressler & Steve VanDevender\\ -Frederick Roeber & Matthew Day & Teemu Suikki\\ -G. Branden Robinson & Merlyn LeRoy & Tim Lennan\\ -Gil Neiger & Michael Allison & Timo Hakulinen\\ -Greg Laskin & Michael Feir & Tom Almy\\ -Greg Olson & Michael Hamel & Tom West\\ -Gregg Wonderly & Michael Meyer & Warren Cheung\\ -Hao-yang Wang & Michael Sokolov & Warwick Allison\\ -Helge Hafting & Mike Engber & Yitzhak Sapir\\ -Ingo Paschke & Mike Gallop\\ -Irina Rempt-Drijfhout & Mike Passaretti +Adam Aronow & Irina Rempt-Drijfhout & Mike Gallop\\ +Alex Kompel & Izchak Miller & Mike Passaretti\\ +Alex Smith & J. Ali Harlow & Mike Stephenson\\ +Andreas Dorn & Janet Walz & Mikko Juola\\ +Andy Church & Janne Salmij\"{a}rvi & Nathan Eady\\ +Andy Swanson & Jean-Christophe Collet & Norm Meluch\\ +Andy Thomson & Jeff Bailey & Olaf Seibert\\ +Ari Huttunen & Jochen Erwied & Pasi Kallinen\\ +Bart House & John Kallen & Pat Rankin\\ +Benson I. Margulies & John Rupley & Patric Mueller\\ +Bill Dyer & John S. Bien & Paul Winner\\ +Boudewijn Waijers & Johnny Lee & Pierre Martineau\\ +Bruce Cox & Jon W\{tte & Ralf Brown\\ +Bruce Holloway & Jonathan Handler & Ray Chason\\ +Bruce Mewborne & Joshua Delahunty & Richard Addison\\ +Cameron Root & Karl Garrison & Richard Beigel\\ +Carl Schelin & Keizo Yamamoto & Richard P. Hughey\\ +Chris Russo & Keith Simpson & Rob Menke\\ +David Cohrs & Ken Arnold & Robin Bandy\\ +David Damerell & Ken Arromdee & Robin Johnson\\ +David Gentzel & Ken Lorber & Roderick Schertler\\ +David Hairston & Ken Washikita & Roland McGrath\\ +Dean Luick & Kestrel Gregorich-Trevor & Ron Van Iwaarden\\ +Del Lamb & Kevin Darcy & Ronnen Miller\\ +Derek S. Ray & Kevin Hugo & Ross Brown\\ +Deron Meranda & Kevin Sitze & Sascha Wostmann\\ +Dion Nicolaas & Kevin Smolkowski & Scott Bigham\\ +Dylan O'Donnell & Kevin Sweet & Scott R. Turner\\ +Eric Backus & Lars Huttar & Sean Hunt\\ +Eric Hendrickson & Leon Arnott & Stephen Spackman\\ +Eric R. Smith & M. Drew Streib & Stefan Thielscher\\ +Eric S. Raymond & Malcolm Ryan & Stephen White\\ +Erik Andersen & Mark Gooderum & Steve Creps\\ +Fredrik Ljungdahl & Mark Modrall & Steve Linhart\\ +Frederick Roeber & Marvin Bressler & Steve VanDevender\\ +G. Branden Robinson & Matthew Day & Teemu Suikki\\ +Gil Neiger & Merlyn LeRoy & Tim Lennan\\ +Greg Laskin & Michael Allison & Timo Hakulinen\\ +Greg Olson & Michael Feir & Tom Almy\\ +Gregg Wonderly & Michael Hamel & Tom West\\ +Hao-yang Wang & Michael Meyer & Warren Cheung\\ +Helge Hafting & Michael Sokolov & Warwick Allison\\ +Ingo Paschke & Mike Engber & Yitzhak Sapir %TABLE_END Do not delete this line. \end{tabular} \end{center} From 7fdaf923679d670492f4c07435e792f1d56c1a4e Mon Sep 17 00:00:00 2001 From: Alex Smith Date: Thu, 30 Apr 2026 09:15:22 +0100 Subject: [PATCH 11/14] 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. --- doc/fixes3-7-0.txt | 1 + include/objects.h | 8 ++++---- src/makemon.c | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/doc/fixes3-7-0.txt b/doc/fixes3-7-0.txt index d9a068c73..65da5b0cf 100644 --- a/doc/fixes3-7-0.txt +++ b/doc/fixes3-7-0.txt @@ -1603,6 +1603,7 @@ when starting a new game as a monk, newsym(0,0) was being called (adjabil -> became level 1; seen 'monster' was the hero who hadn't been placed on the map yet) incorporate a fix to prevent segfault due to rolling boulder trap +wands of digging generate less often lategame Fixes to 3.7.0-x General Problems Exposed Via git Repository diff --git a/include/objects.h b/include/objects.h index 41076db28..b9c35f273 100644 --- a/include/objects.h +++ b/include/objects.h @@ -1453,7 +1453,7 @@ WAND("secret door detection", WAN_SECRET_DOOR_DETECTION), WAND("enlightenment", "crystal", 15, 150, 1, NODIR, GLASS, HI_GLASS, WAN_ENLIGHTENMENT), -WAND("create monster", "maple", 45, 200, 1, NODIR, WOOD, HI_WOOD, +WAND("create monster", "maple", 50, 200, 1, NODIR, WOOD, HI_WOOD, WAN_CREATE_MONSTER), WAND("wishing", "pine", 5, 500, 1, NODIR, WOOD, HI_WOOD, WAN_WISHING), @@ -1477,13 +1477,13 @@ WAND("cancellation", "platinum", 45, 200, 1, IMMEDIATE, PLATINUM, CLR_WHITE, WAN_CANCELLATION), WAND("teleportation", "iridium", 45, 200, 1, IMMEDIATE, METAL, CLR_BRIGHT_CYAN, WAN_TELEPORTATION), -WAND("opening", "zinc", 25, 150, 1, IMMEDIATE, METAL, HI_METAL, +WAND("opening", "zinc", 30, 150, 1, IMMEDIATE, METAL, HI_METAL, WAN_OPENING), -WAND("locking", "aluminum", 25, 150, 1, IMMEDIATE, METAL, HI_METAL, +WAND("locking", "aluminum", 30, 150, 1, IMMEDIATE, METAL, HI_METAL, WAN_LOCKING), WAND("probing", "uranium", 30, 150, 1, IMMEDIATE, METAL, HI_METAL, WAN_PROBING), -WAND("digging", "iron", 55, 150, 1, RAY, IRON, HI_METAL, +WAND("digging", "iron", 40, 150, 1, RAY, IRON, HI_METAL, WAN_DIGGING), /* magic missile ... lightning must be in this order; see buzz() */ WAND("magic missile", "steel", 50, 150, 1, RAY, IRON, HI_METAL, diff --git a/src/makemon.c b/src/makemon.c index 6f158ee01..5cbb98cb3 100644 --- a/src/makemon.c +++ b/src/makemon.c @@ -738,7 +738,7 @@ m_initinv(struct monst *mtmp) break; case S_GIANT: if (ptr == &mons[PM_MINOTAUR]) { - if (!rn2(3) || (gi.in_mklev && Is_earthlevel(&u.uz))) + if (!rn2(8) || (gi.in_mklev && Is_earthlevel(&u.uz))) (void) mongets(mtmp, WAN_DIGGING); } else if (is_giant(ptr)) { for (cnt = rn2((int) (mtmp->m_lev / 2)); cnt; cnt--) { From c5b258c2cf9237500f418ef867e27330429dcd2b Mon Sep 17 00:00:00 2001 From: nhmall Date: Thu, 30 Apr 2026 09:08:29 -0400 Subject: [PATCH 12/14] more empty bonesfile --- include/hack.h | 1 + src/bones.c | 12 ++++++------ src/sfstruct.c | 3 ++- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/include/hack.h b/include/hack.h index 19f543ac0..b59a712b1 100644 --- a/include/hack.h +++ b/include/hack.h @@ -798,6 +798,7 @@ struct sinfo { int config_error_ready; /* config_error_add is ready, available */ int beyond_savefile_load; /* set when past savefile loading */ int savefile_completed; /* savefile has completed writing */ + int reading_bonesfile; /* in the midst of trying to read bones file */ #ifdef PANICLOG int in_paniclog; /* writing a panicloc entry */ #endif diff --git a/src/bones.c b/src/bones.c index 3e484279f..85431390f 100644 --- a/src/bones.c +++ b/src/bones.c @@ -659,19 +659,19 @@ getbones(void) return 0; } - restoreinfo.mread_flags = 1; /* return despite error for a bones file */ + program_state.reading_bonesfile = 1; if (validate(nhfp, gb.bones, FALSE) != SF_UPTODATE) { if (!wizard) pline("Discarding unusable bones; no need to panic..."); ok = FALSE; - restoreinfo.mread_flags = 0; + program_state.reading_bonesfile = 0; } else { ok = TRUE; if (wizard) { if (y_n("Get bones?") == 'n') { close_nhfile(nhfp); compress_bonesfile(); - restoreinfo.mread_flags = 0; + program_state.reading_bonesfile = 0; return 0; } } @@ -687,7 +687,7 @@ getbones(void) close_nhfile(nhfp); compress_bonesfile(); /* ToDo: maybe unlink these problematic bones? */ - restoreinfo.mread_flags = 0; + program_state.reading_bonesfile = 0; return 0; } if (strcmp(bonesid, oldbonesid) != 0) { @@ -699,7 +699,7 @@ getbones(void) pline1(errbuf); ok = FALSE; /* won't die of trickery */ } - restoreinfo.mread_flags = 0; + program_state.reading_bonesfile = 0; trickery(errbuf); } else { struct monst *mtmp; @@ -731,8 +731,8 @@ getbones(void) fix_shop_damage(); } } - restoreinfo.mread_flags = 0; close_nhfile(nhfp); + program_state.reading_bonesfile = 0; sanitize_engravings(); u.uroleplay.numbones++; diff --git a/src/sfstruct.c b/src/sfstruct.c index 8a15a0c17..5e793079b 100644 --- a/src/sfstruct.c +++ b/src/sfstruct.c @@ -572,7 +572,8 @@ mread(int fd, genericptr_t buf, unsigned len) /* Not perfect, but we don't have ssize_t available. */ rlen = (readLenType) read(fd, buf, (readLenType) len); if ((readLenType) rlen != (readLenType) len) { - if (restoreinfo.mread_flags == 1) { /* means "return anyway" */ + if ((restoreinfo.mread_flags == 1) /* means "return anyway" */ + || (program_state.reading_bonesfile == 1)) { restoreinfo.mread_flags = -1; return; } else { From 319dd3887338b00c61c516eac58fe317894ee12a Mon Sep 17 00:00:00 2001 From: nhmall Date: Thu, 30 Apr 2026 09:27:50 -0400 Subject: [PATCH 13/14] simplify get_macos_uuid() also remove a magic number 37 by replacing it with NHUUIDSZ --- include/decl.h | 2 +- include/hack.h | 4 ++++ sys/unix/macuuid.m | 33 +++++---------------------------- sys/unix/unixmain.c | 8 +++----- 4 files changed, 13 insertions(+), 34 deletions(-) diff --git a/include/decl.h b/include/decl.h index 1ea39d6f9..8ca46678a 100644 --- a/include/decl.h +++ b/include/decl.h @@ -1175,7 +1175,7 @@ struct instance_globals_saved_n { /* dungeon.c */ int n_dgns; /* number of dungeons (also used in mklev.c and do.c) */ /* files.c */ - char nhuuid[37]; + char nhuuid[NHUUIDSZ]; /* mkroom.c */ int nroom; /* region.c */ diff --git a/include/hack.h b/include/hack.h index b59a712b1..425094f5b 100644 --- a/include/hack.h +++ b/include/hack.h @@ -709,6 +709,10 @@ enum nhcb_calls { NUM_NHCB }; +#ifdef NHUUID +#define NHUUIDSZ 37 +#endif + struct plinemsg_type { xint16 msgtype; /* one of MSGTYP_foo */ struct nhregex *regex; diff --git a/sys/unix/macuuid.m b/sys/unix/macuuid.m index fb5dc6699..26b86e3b6 100644 --- a/sys/unix/macuuid.m +++ b/sys/unix/macuuid.m @@ -4,7 +4,6 @@ #include "hack.h" -void free_macos_uuid(void); void get_macos_uuid(char *); #ifdef DEBUG @@ -14,44 +13,22 @@ void get_macos_uuid(char *); /* #import */ #import -static const char *macos_uuid = 0; - -void -free_macos_uuid(void) -{ - if (macos_uuid) { - free((genericptr_t) macos_uuid); - macos_uuid = 0; - } -} - void get_macos_uuid(char *target) { NSString *uuidString = [[NSUUID UUID] UUIDString]; - const char *str_uuid, *src; - char *dst; + const char *str_uuid; int i; - if (macos_uuid) - free_macos_uuid(); - /* str_uuid = [uuidString cStringUsingEncoding:NSUTF8StringEncoding]; */ str_uuid = [uuidString cStringUsingEncoding:NSASCIIStringEncoding]; - macos_uuid = dupstr(str_uuid); - if (macos_uuid) { - src = macos_uuid; - dst = target; - for (i = 0; i < 36; ++i) { - *dst = *src; - ++src; - ++dst; + if (str_uuid && target) { + for (i = 0; i < (NHUUIDSZ -1 ); ++i) { + target[i] = str_uuid[i]; } - dst[36] = '\0'; + target[(NHUUIDSZ - 1)] = '\0'; } - free_macos_uuid(); - macos_uuid = 0; return; } diff --git a/sys/unix/unixmain.c b/sys/unix/unixmain.c index 73318c506..265e73619 100644 --- a/sys/unix/unixmain.c +++ b/sys/unix/unixmain.c @@ -843,15 +843,13 @@ sys_random_seed(void) #if defined(MACOS) && defined(NHUUID) extern void get_macos_uuid(char *); /* sys/unix/macuuid.m */ -extern void free_macos_uuid(void); /* sys/unix/macuuid.m */ #endif void get_nhuuid(void) { #if defined(NHUUID) - char struuid[37] = { 0 }; - char *struuidptr = &struuid[0]; + char struuid[NHUUIDSZ] = { 0 }; #if defined(LINUX) && defined(NHUUID) uuid_t binuuid; #endif @@ -866,8 +864,8 @@ get_nhuuid(void) uuid_unparse(binuuid, struuid); #endif /* MACOS || LINUX */ - if (*struuidptr) - Snprintf(svn.nhuuid, sizeof svn.nhuuid, "%s", struuidptr); + if (struuid[0]) + Snprintf(svn.nhuuid, sizeof svn.nhuuid, "%s", struuid); #endif /* NHUUID */ } From c5e48213d24ab335a171528fce583d7a6b8e6a41 Mon Sep 17 00:00:00 2001 From: nhmall Date: Thu, 30 Apr 2026 09:37:40 -0400 Subject: [PATCH 14/14] Qt and c++ use a different set of CFLAGS --- include/hack.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/include/hack.h b/include/hack.h index 425094f5b..6cde43efe 100644 --- a/include/hack.h +++ b/include/hack.h @@ -709,9 +709,7 @@ enum nhcb_calls { NUM_NHCB }; -#ifdef NHUUID #define NHUUIDSZ 37 -#endif struct plinemsg_type { xint16 msgtype; /* one of MSGTYP_foo */