diff --git a/dat/history b/dat/history index 06bbf5dae..0d591d81c 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 d62cfb4d2..3ac3b7481 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 a49718408..66e044d94 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} diff --git a/doc/fixes5-0-0.txt b/doc/fixes5-0-0.txt index fb7a2eb47..2f7ff83b7 100644 --- a/doc/fixes5-0-0.txt +++ b/doc/fixes5-0-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 5.0.0-x General Problems Exposed Via git Repository diff --git a/include/decl.h b/include/decl.h index aa02c64f7..9e9349594 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 396537f2c..0db97441f 100644 --- a/include/hack.h +++ b/include/hack.h @@ -709,6 +709,8 @@ enum nhcb_calls { NUM_NHCB }; +#define NHUUIDSZ 37 + struct plinemsg_type { xint16 msgtype; /* one of MSGTYP_foo */ struct nhregex *regex; @@ -798,6 +800,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/include/monst.h b/include/monst.h index d73afd868..27f81e2ee 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/include/objects.h b/include/objects.h index 78d1c9d7a..f5d42510e 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/bones.c b/src/bones.c index e6d67d229..d7837536a 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/display.c b/src/display.c index 2632b3fa8..6f4f5f74a 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 e5ed65996..900d32195 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,7 @@ mon_arrive(struct monst *mtmp, int when) mtmp->mx = 0; /*(already is 0)*/ mtmp->my = xyflags; + if (xlocale) failed_to_place = !mnearto(mtmp, xlocale, ylocale, FALSE, RLOC_NOMSG); else @@ -616,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 */ diff --git a/src/makemon.c b/src/makemon.c index 5a8c7db77..718d7551e 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--) { diff --git a/src/objnam.c b/src/objnam.c index 8ec461019..04b913f98 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); diff --git a/src/polyself.c b/src/polyself.c index 64e27d26d..c99682261 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)); diff --git a/src/sfstruct.c b/src/sfstruct.c index 268e2e3ac..3c8b8fd66 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 { diff --git a/src/weapon.c b/src/weapon.c index 0aeeb526e..299c337ff 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 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/hints/include/multiw-2.500 b/sys/unix/hints/include/multiw-2.500 index 832c3b7ab..01f1fb6c1 100644 --- a/sys/unix/hints/include/multiw-2.500 +++ b/sys/unix/hints/include/multiw-2.500 @@ -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.500 b/sys/unix/hints/linux.500 index c551c5279..b822b6e50 100755 --- a/sys/unix/hints/linux.500 +++ b/sys/unix/hints/linux.500 @@ -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.500 b/sys/unix/hints/macOS.500 index 77d78b9bf..2a400d1a3 100755 --- a/sys/unix/hints/macOS.500 +++ b/sys/unix/hints/macOS.500 @@ -216,11 +216,19 @@ 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 +LFLAGS += -framework Foundation endif -endif +endif #MAKEFILE_SRC # #-INCLUDE multisnd1-pre.500 diff --git a/sys/unix/macuuid.m b/sys/unix/macuuid.m index 67a4f2486..26b86e3b6 100644 --- a/sys/unix/macuuid.m +++ b/sys/unix/macuuid.m @@ -4,8 +4,7 @@ #include "hack.h" -void free_macos_uuid(void); -const char *get_macos_uuid(void); +void get_macos_uuid(char *); #ifdef DEBUG #undef DEBUG @@ -14,30 +13,23 @@ const char *get_macos_uuid(void); /* #import */ #import -static const char *macos_uuid = 0; - void -free_macos_uuid(void) -{ - if (macos_uuid) { - free((genericptr_t) macos_uuid); - macos_uuid = 0; - } -} - -const char * -get_macos_uuid(void) +get_macos_uuid(char *target) { NSString *uuidString = [[NSUUID UUID] UUIDString]; const char *str_uuid; - - if (macos_uuid) - free_macos_uuid(); - + int i; + /* str_uuid = [uuidString cStringUsingEncoding:NSUTF8StringEncoding]; */ str_uuid = [uuidString cStringUsingEncoding:NSASCIIStringEncoding]; - macos_uuid = dupstr(str_uuid); - return macos_uuid; + + if (str_uuid && target) { + for (i = 0; i < (NHUUIDSZ -1 ); ++i) { + target[i] = str_uuid[i]; + } + target[(NHUUIDSZ - 1)] = '\0'; + } + return; } diff --git a/sys/unix/unixmain.c b/sys/unix/unixmain.c index 6cf99918e..eca90d463 100644 --- a/sys/unix/unixmain.c +++ b/sys/unix/unixmain.c @@ -842,19 +842,14 @@ sys_random_seed(void) } #if defined(MACOS) && defined(NHUUID) -extern char *get_macos_uuid(char **); /* sys/unix/macuuid.m */ -extern void free_macos_uuid(void); /* sys/unix/macuuid.m */ +extern void get_macos_uuid(char *); /* 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 struuid[NHUUIDSZ] = { 0 }; #if defined(LINUX) && defined(NHUUID) uuid_t binuuid; #endif @@ -862,20 +857,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) - Snprintf(svn.nhuuid, sizeof svn.nhuuid, "%s", struuidptr); + if (struuid[0]) + Snprintf(svn.nhuuid, sizeof svn.nhuuid, "%s", struuid); -#if defined(MACOS) && defined(NHUUID) - free_macos_uuid(); -#endif +#endif /* NHUUID */ } void