diff --git a/.travis.yml b/.travis.yml index b93ed982c..e2522cfa9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -114,5 +114,5 @@ deploy: tags: true prerelease: true name: "Pre-release build of NetHack 3.6.3" - body: "This is auto generated pre-release build of NetHack 3.6.3." + body: "This is an auto generated pre-release build of NetHack 3.6.3." diff --git a/doc/Guidebook.mn b/doc/Guidebook.mn index cd96e04aa..02f561fe1 100644 --- a/doc/Guidebook.mn +++ b/doc/Guidebook.mn @@ -24,7 +24,7 @@ .ds vr "NetHack 3.7 .ds f0 "\*(vr .ds f1 -.ds f2 "November 7, 2019 +.ds f2 "November 17, 2019 . .\" A note on some special characters: .\" \(lq = left double quote diff --git a/doc/Guidebook.tex b/doc/Guidebook.tex index ae03d9a4e..44f89c18a 100644 --- a/doc/Guidebook.tex +++ b/doc/Guidebook.tex @@ -45,7 +45,7 @@ %.au \author{Original version - Eric S. Raymond\\ (Edited and expanded for 3.6 by Mike Stephenson and others)} -\date{November 7, 2019} +\date{November 17, 2019} \maketitle diff --git a/doc/fixes36.3 b/doc/fixes36.3 index 1b2caaebf..16ab5de31 100644 --- a/doc/fixes36.3 +++ b/doc/fixes36.3 @@ -235,6 +235,9 @@ dipping lichen corpse into acid when not blind and acid was undicovered would pluralization improvement for words ending in a k-sound like "biotech" check for whether a monster was entering a region (gas cloud) erroneously depended upon whether or not the hero was inside the same region +all Is_*_level tests during early startup would test as true until + dungeon_topology was initialized in a new game or restored from + a save file Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository diff --git a/include/dungeon.h b/include/dungeon.h index 4037511e4..c25494001 100644 --- a/include/dungeon.h +++ b/include/dungeon.h @@ -98,31 +98,36 @@ typedef struct branch { * * Depth corresponds to the number of floors below the surface. */ -#define Is_astralevel(x) (on_level(x, &astral_level)) -#define Is_earthlevel(x) (on_level(x, &earth_level)) -#define Is_waterlevel(x) (on_level(x, &water_level)) -#define Is_firelevel(x) (on_level(x, &fire_level)) -#define Is_airlevel(x) (on_level(x, &air_level)) -#define Is_medusa_level(x) (on_level(x, &medusa_level)) -#define Is_oracle_level(x) (on_level(x, &oracle_level)) -#define Is_valley(x) (on_level(x, &valley_level)) -#define Is_juiblex_level(x) (on_level(x, &juiblex_level)) -#define Is_asmo_level(x) (on_level(x, &asmodeus_level)) -#define Is_baal_level(x) (on_level(x, &baalzebub_level)) -#define Is_wiz1_level(x) (on_level(x, &wiz1_level)) -#define Is_wiz2_level(x) (on_level(x, &wiz2_level)) -#define Is_wiz3_level(x) (on_level(x, &wiz3_level)) -#define Is_sanctum(x) (on_level(x, &sanctum_level)) -#define Is_portal_level(x) (on_level(x, &portal_level)) -#define Is_rogue_level(x) (on_level(x, &rogue_level)) -#define Is_stronghold(x) (on_level(x, &stronghold_level)) -#define Is_bigroom(x) (on_level(x, &bigroom_level)) -#define Is_qstart(x) (on_level(x, &qstart_level)) -#define Is_qlocate(x) (on_level(x, &qlocate_level)) -#define Is_nemesis(x) (on_level(x, &nemesis_level)) -#define Is_knox(x) (on_level(x, &knox_level)) -#define Is_mineend_level(x) (on_level(x, &mineend_level)) -#define Is_sokoend_level(x) (on_level(x, &sokoend_level)) + +/* These both can't be zero, or dungeon_topology isn't init'd / restored */ +#define Lassigned(y) ((y)->dlevel || (y)->dnum) +#define Lcheck(x,z) (Lassigned(z) && on_level(x, z)) + +#define Is_astralevel(x) (Lcheck(x, &astral_level)) +#define Is_earthlevel(x) (Lcheck(x, &earth_level)) +#define Is_waterlevel(x) (Lcheck(x, &water_level)) +#define Is_firelevel(x) (Lcheck(x, &fire_level)) +#define Is_airlevel(x) (Lcheck(x, &air_level)) +#define Is_medusa_level(x) (Lcheck(x, &medusa_level)) +#define Is_oracle_level(x) (Lcheck(x, &oracle_level)) +#define Is_valley(x) (Lcheck(x, &valley_level)) +#define Is_juiblex_level(x) (Lcheck(x, &juiblex_level)) +#define Is_asmo_level(x) (Lcheck(x, &asmodeus_level)) +#define Is_baal_level(x) (Lcheck(x, &baalzebub_level)) +#define Is_wiz1_level(x) (Lcheck(x, &wiz1_level)) +#define Is_wiz2_level(x) (Lcheck(x, &wiz2_level)) +#define Is_wiz3_level(x) (Lcheck(x, &wiz3_level)) +#define Is_sanctum(x) (Lcheck(x, &sanctum_level)) +#define Is_portal_level(x) (Lcheck(x, &portal_level)) +#define Is_rogue_level(x) (Lcheck(x, &rogue_level)) +#define Is_stronghold(x) (Lcheck(x, &stronghold_level)) +#define Is_bigroom(x) (Lcheck(x, &bigroom_level)) +#define Is_qstart(x) (Lcheck(x, &qstart_level)) +#define Is_qlocate(x) (Lcheck(x, &qlocate_level)) +#define Is_nemesis(x) (Lcheck(x, &nemesis_level)) +#define Is_knox(x) (Lcheck(x, &knox_level)) +#define Is_mineend_level(x) (Lcheck(x, &mineend_level)) +#define Is_sokoend_level(x) (Lcheck(x, &sokoend_level)) #define In_sokoban(x) ((x)->dnum == sokoban_dnum) #define Inhell In_hell(&u.uz) /* now gehennom */ diff --git a/include/global.h b/include/global.h index 4ca1dd77e..e98cdf84d 100644 --- a/include/global.h +++ b/include/global.h @@ -18,7 +18,7 @@ /* * Development status of this NetHack version. */ -#define NH_DEVEL_STATUS NH_STATUS_WIP +#define NH_DEVEL_STATUS NH_STATUS_BETA #ifndef DEBUG /* allow tool chains to define without causing warnings */ #define DEBUG diff --git a/src/files.c b/src/files.c index e1bcf88aa..f84e7d7b4 100644 --- a/src/files.c +++ b/src/files.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 files.c $NHDT-Date: 1573869063 2019/11/16 01:51:03 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.269 $ */ +/* NetHack 3.6 files.c $NHDT-Date: 1574037901 2019/11/18 00:45:01 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.270 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Derek S. Ray, 2015. */ /* NetHack may be freely redistributed. See license for details. */ @@ -2833,8 +2833,8 @@ char *origbuf; #endif /* SYSCF */ } else if (match_varname(buf, "BOULDER", 3)) { - (void) get_uchars(bufp, &g.ov_primary_syms[SYM_BOULDER + SYM_OFF_X], TRUE, 1, - "BOULDER"); + (void) get_uchars(bufp, &g.ov_primary_syms[SYM_BOULDER + SYM_OFF_X], + TRUE, 1, "BOULDER"); } else if (match_varname(buf, "MENUCOLOR", 9)) { if (!add_menu_coloring(bufp)) retval = FALSE; @@ -4325,13 +4325,13 @@ reveal_paths(VOID_ARGS) if (cstrp && (int) strlen(cstrp) < maxlen) Sprintf(buf, " (in %s)", cstrp); #endif /* PREFIXES_IN_USE */ - raw_printf("%s loadable symbols file%s:", s_suffix(gamename), buf); + raw_printf("The loadable symbols file%s:", buf); #endif /* UNIX */ #ifdef UNIX envp = getcwd(cwdbuf, PATH_MAX); if (envp) { - raw_printf("%s loadable symbols file:", s_suffix(gamename)); + raw_print("The loadable symbols file:"); raw_printf(" \"%s/%s\"", envp, SYMBOLS); } #else /* UNIX */ @@ -4348,6 +4348,27 @@ reveal_paths(VOID_ARGS) raw_printf(" \"%s\"", filep); #endif /* UNIX */ + /* dlb vs non-dlb */ + + buf[0] = '\0'; +#ifdef PREFIXES_IN_USE + cstrp = fqn_prefix_names[DATAPREFIX]; + maxlen = BUFSZ - sizeof " (in )"; + if (cstrp && (int) strlen(cstrp) < maxlen) + Sprintf(buf, " (in %s)", cstrp); +#endif +#ifdef DLB + raw_printf("Basic data files%s are collected inside:", buf); + filep = DLBFILE; + raw_printf(" \"%s\"", filep); +#ifdef DLBFILE2 + filep = DLBFILE2; + raw_printf(" \"%s\"", filep); +#endif +#else /* !DLB */ + raw_printf("Basic data files%s are in many separate files.", buf); +#endif /* ?DLB */ + /* personal configuration file */ buf[0] = '\0'; diff --git a/src/options.c b/src/options.c index 3eb4f389e..f3384f214 100644 --- a/src/options.c +++ b/src/options.c @@ -4091,14 +4091,12 @@ boolean tinitial, tfrom_file; } } -#if 0 /* Is it a symbol? */ if (strstr(opts, "S_") == opts && parsesymbols(opts, PRIMARY)) { switch_symbols(TRUE); check_gold_symbol(); return retval; } -#endif /* out of valid options */ config_error_add("Unknown option '%s'", opts);