Merge branch 'NetHack-3.6'

This commit is contained in:
nhmall
2019-11-04 01:18:24 -05:00
12 changed files with 86 additions and 39 deletions
-2
View File
@@ -2629,11 +2629,9 @@ On Windows, it is \(lq.nethackrc\(rq in
\(lq\\%USERPROFILE%\\NetHack\\3.6\(rq. The file may not exist, \(lq\\%USERPROFILE%\\NetHack\\3.6\(rq. The file may not exist,
but it is a normal ASCII text file can can be created with any but it is a normal ASCII text file can can be created with any
text editor. text editor.
.pg
After running NetHack for the first time, you should find a default After running NetHack for the first time, you should find a default
template for the configuration file named \(lq.nethackrc.template\(rq template for the configuration file named \(lq.nethackrc.template\(rq
in \(lq\\%USERPROFILE%\\NetHack\\3.6\(rq. in \(lq\\%USERPROFILE%\\NetHack\\3.6\(rq.
.pg
If you had not created the configuration file, NetHack will create If you had not created the configuration file, NetHack will create
the configuration file for you using the default template file. the configuration file for you using the default template file.
.pg .pg
+1 -5
View File
@@ -2878,14 +2878,10 @@ can be created with any text editor.\\
On Windows, it is \mbox{``.nethackrc''} in the foler On Windows, it is \mbox{``.nethackrc''} in the foler
\mbox{{``\%USERPROFILE\%\textbackslash NetHack\textbackslash 3.6''}}. The \mbox{{``\%USERPROFILE\%\textbackslash NetHack\textbackslash 3.6''}}. The
file may not exist, but it is a normal ASCII text file and can be created file may not exist, but it is a normal ASCII text file and can be created
with any text editor.\\ with any text editor.
%.lp ""
After runing {\it NetHack\/} for the first time, you should find a default After runing {\it NetHack\/} for the first time, you should find a default
template for ths configuration file named \mbox{``.nethackrc.template''} in template for ths configuration file named \mbox{``.nethackrc.template''} in
\mbox{{``\%USERPROFILE\%\textbackslash NetHack\textbackslash 3.6''}}. \mbox{{``\%USERPROFILE\%\textbackslash NetHack\textbackslash 3.6''}}.
%.lp ""
If you had not created the configuration file, {\it NetHack\/} will create If you had not created the configuration file, {\it NetHack\/} will create
the configuration file for you using the default template file. the configuration file for you using the default template file.
+2 -1
View File
@@ -347,7 +347,8 @@
# How the map window is shown? Windows GUI only. # How the map window is shown? Windows GUI only.
# possible map_mode options include: tiles, ascii4x6, # possible map_mode options include: tiles, ascii4x6,
# ascii6x8, ascii8x8, ascii16x8, ascii7x12, ascii8x12, ascii16x12, # ascii6x8, ascii8x8, ascii16x8, ascii7x12, ascii8x12, ascii16x12,
# ascii12x16, ascii10x18, fit_to_screen # ascii12x16, ascii10x18, fit_to_screen, ascii_fit_to_screen,
# tiles_fit_to_screen
#OPTIONS=map_mode:tiles #OPTIONS=map_mode:tiles
# Define alternative file for the files, and the tile size # Define alternative file for the files, and the tile size
+3 -1
View File
@@ -1,4 +1,4 @@
$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.151 $ $NHDT-Date: 1572530225 2019/10/31 13:57:05 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.155 $ $NHDT-Date: 1572833562 2019/11/04 02:12:42 $
This fixes36.3 file is here to capture information about updates in the 3.6.x This fixes36.3 file is here to capture information about updates in the 3.6.x
lineage following the release of 3.6.2 in May 2019. Please note, however, lineage following the release of 3.6.2 in May 2019. Please note, however,
@@ -212,6 +212,8 @@ when entering Astral level, initial rendering of guardian angel didn't show
it as tame; noticeable if the level was entered with 'hilite_pet' On it as tame; noticeable if the level was entered with 'hilite_pet' On
fix a leashed pet polymorphed into a long worm staying leashed fix a leashed pet polymorphed into a long worm staying leashed
prevent leashing unsolid monsters and monsters with no extremities prevent leashing unsolid monsters and monsters with no extremities
playing musical instruments gave feedback which ignored deafness
some other deafness-related message corrections
Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository
+10 -3
View File
@@ -1192,9 +1192,16 @@ dokick()
exercise(A_DEX, TRUE); exercise(A_DEX, TRUE);
return 1; return 1;
} else if (!rn2(3)) { } else if (!rn2(3)) {
pline("Flupp! %s.", if (Blind && Deaf)
(Blind ? "You hear a sloshing sound" Sprintf(buf, " %s", body_part(FACE));
: "Muddy waste pops up from the drain")); else
buf[0] = '\0';
pline("%s%s%s.", !Deaf ? "Flupp! " : "",
!Blind
? "Muddy waste pops up from the drain"
: !Deaf
? "You hear a sloshing sound"
: "Something splashes you in the", buf);
if (!(g.maploc->looted & S_LRING)) { /* once per sink */ if (!(g.maploc->looted & S_LRING)) { /* once per sink */
if (!Blind) if (!Blind)
You_see("a ring shining in its midst."); You_see("a ring shining in its midst.");
+52 -21
View File
@@ -1,4 +1,4 @@
/* NetHack 3.6 music.c $NHDT-Date: 1544442713 2018/12/10 11:51:53 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.57 $ */ /* NetHack 3.6 music.c $NHDT-Date: 1572833563 2019/11/04 02:12:43 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.58 $ */
/* Copyright (c) 1989 by Jean-Christophe Collet */ /* Copyright (c) 1989 by Jean-Christophe Collet */
/* NetHack may be freely redistributed. See license for details. */ /* NetHack may be freely redistributed. See license for details. */
@@ -170,7 +170,7 @@ struct monst *bugler; /* monster that played instrument */
mtmp->mstrategy &= ~STRAT_WAITMASK; mtmp->mstrategy &= ~STRAT_WAITMASK;
if (canseemon(mtmp)) if (canseemon(mtmp))
pline("%s is now ready for battle!", Monnam(mtmp)); pline("%s is now ready for battle!", Monnam(mtmp));
else else if (!Deaf)
Norep("You hear the rattle of battle gear being readied."); Norep("You hear the rattle of battle gear being readied.");
} else if ((distm = ((bugler == &g.youmonst) } else if ((distm = ((bugler == &g.youmonst)
? distu(mtmp->mx, mtmp->my) ? distu(mtmp->mx, mtmp->my)
@@ -284,7 +284,7 @@ int force;
/*FALLTHRU*/ /*FALLTHRU*/
case ROOM: case ROOM:
case CORR: /* Try to make a pit */ case CORR: /* Try to make a pit */
do_pit: do_pit:
chasm = maketrap(x, y, PIT); chasm = maketrap(x, y, PIT);
if (!chasm) if (!chasm)
break; /* no pit if portal at that location */ break; /* no pit if portal at that location */
@@ -467,6 +467,7 @@ struct obj *instr;
mundane = TRUE; mundane = TRUE;
} }
#define PLAY_NORMAL 0x00 #define PLAY_NORMAL 0x00
#define PLAY_STUNNED 0x01 #define PLAY_STUNNED 0x01
#define PLAY_CONFUSED 0x02 #define PLAY_CONFUSED 0x02
@@ -484,10 +485,16 @@ struct obj *instr;
You("start playing %s.", yname(instr)); You("start playing %s.", yname(instr));
break; break;
case PLAY_STUNNED: case PLAY_STUNNED:
You("produce an obnoxious droning sound."); if (!Deaf)
You("produce an obnoxious droning sound.");
else
You_feel("a monotonous vibration.");
break; break;
case PLAY_CONFUSED: case PLAY_CONFUSED:
You("produce a raucous noise."); if (!Deaf)
You("produce a raucous noise.");
else
You_feel("a jarring vibration.");
break; break;
case PLAY_HALLU: case PLAY_HALLU:
You("produce a kaleidoscopic display of floating butterfiles."); You("produce a kaleidoscopic display of floating butterfiles.");
@@ -511,13 +518,17 @@ struct obj *instr;
case MAGIC_FLUTE: /* Make monster fall asleep */ case MAGIC_FLUTE: /* Make monster fall asleep */
consume_obj_charge(instr, TRUE); consume_obj_charge(instr, TRUE);
You("produce %s music.", Hallucination ? "piped" : "soft"); You("%sproduce %s music.", !Deaf ? "" : "seem to ",
Hallucination ? "piped" : "soft");
put_monsters_to_sleep(u.ulevel * 5); put_monsters_to_sleep(u.ulevel * 5);
exercise(A_DEX, TRUE); exercise(A_DEX, TRUE);
break; break;
case WOODEN_FLUTE: /* May charm snakes */ case WOODEN_FLUTE: /* May charm snakes */
do_spec &= (rn2(ACURR(A_DEX)) + u.ulevel > 25); do_spec &= (rn2(ACURR(A_DEX)) + u.ulevel > 25);
pline("%s.", Tobjnam(instr, do_spec ? "trill" : "toot")); if (!Deaf)
pline("%s.", Tobjnam(instr, do_spec ? "trill" : "toot"));
else
You_feel("%s %s.", yname(instr), do_spec ? "trill" : "toot");
if (do_spec) if (do_spec)
charm_snakes(u.ulevel * 3); charm_snakes(u.ulevel * 3);
exercise(A_DEX, TRUE); exercise(A_DEX, TRUE);
@@ -543,26 +554,38 @@ struct obj *instr;
makeknown(instr->otyp); makeknown(instr->otyp);
break; break;
case TOOLED_HORN: /* Awaken or scare monsters */ case TOOLED_HORN: /* Awaken or scare monsters */
You("produce a frightful, grave sound."); if (!Deaf)
You("produce a frightful, grave sound.");
else
You("blow into the horn.");
awaken_monsters(u.ulevel * 30); awaken_monsters(u.ulevel * 30);
exercise(A_WIS, FALSE); exercise(A_WIS, FALSE);
break; break;
case BUGLE: /* Awaken & attract soldiers */ case BUGLE: /* Awaken & attract soldiers */
You("extract a loud noise from %s.", yname(instr)); if (!Deaf)
You("extract a loud noise from %s.", yname(instr));
else
You("blow into the bugle.");
awaken_soldiers(&g.youmonst); awaken_soldiers(&g.youmonst);
exercise(A_WIS, FALSE); exercise(A_WIS, FALSE);
break; break;
case MAGIC_HARP: /* Charm monsters */ case MAGIC_HARP: /* Charm monsters */
consume_obj_charge(instr, TRUE); consume_obj_charge(instr, TRUE);
pline("%s very attractive music.", Tobjnam(instr, "produce")); if (!Deaf)
pline("%s very attractive music.", Tobjnam(instr, "produce"));
else
You_feel("very soothing vibrations.");
charm_monsters((u.ulevel - 1) / 3 + 1); charm_monsters((u.ulevel - 1) / 3 + 1);
exercise(A_DEX, TRUE); exercise(A_DEX, TRUE);
break; break;
case WOODEN_HARP: /* May calm Nymph */ case WOODEN_HARP: /* May calm Nymph */
do_spec &= (rn2(ACURR(A_DEX)) + u.ulevel > 25); do_spec &= (rn2(ACURR(A_DEX)) + u.ulevel > 25);
pline("%s %s.", Yname2(instr), if (!Deaf)
do_spec ? "produces a lilting melody" : "twangs"); pline("%s %s.", Yname2(instr),
do_spec ? "produces a lilting melody" : "twangs");
else
You_feel("soothing vibrations.");
if (do_spec) if (do_spec)
calm_nymphs(u.ulevel * 3); calm_nymphs(u.ulevel * 3);
exercise(A_DEX, TRUE); exercise(A_DEX, TRUE);
@@ -583,8 +606,12 @@ struct obj *instr;
break; break;
case LEATHER_DRUM: /* Awaken monsters */ case LEATHER_DRUM: /* Awaken monsters */
if (!mundane) { if (!mundane) {
You("beat a deafening row!"); if (!Deaf) {
incr_itimeout(&HDeaf, rn1(20, 30)); You("beat a deafening row!");
incr_itimeout(&HDeaf, rn1(20, 30));
} else {
You("pound on the drum.");
}
exercise(A_WIS, FALSE); exercise(A_WIS, FALSE);
} else } else
You("%s %s.", You("%s %s.",
@@ -649,7 +676,10 @@ struct obj *instr;
*s = 'B'; *s = 'B';
} }
} }
You("extract a strange sound from %s!", the(xname(instr)));
You(!Deaf ? "extract a strange sound from %s!"
: "can feel %s emitting vibrations.", the(xname(instr)));
/* Check if there was the Stronghold drawbridge near /* Check if there was the Stronghold drawbridge near
* and if the tune conforms to what we're waiting for. * and if the tune conforms to what we're waiting for.
@@ -662,8 +692,8 @@ struct obj *instr;
for (x = u.ux - 1; x <= u.ux + 1; x++) for (x = u.ux - 1; x <= u.ux + 1; x++)
if (isok(x, y)) if (isok(x, y))
if (find_drawbridge(&x, &y)) { if (find_drawbridge(&x, &y)) {
u.uevent.uheard_tune = /* tune now fully known */
2; /* tune now fully known */ u.uevent.uheard_tune = 2;
if (levl[x][y].typ == DRAWBRIDGE_DOWN) if (levl[x][y].typ == DRAWBRIDGE_DOWN)
close_drawbridge(x, y); close_drawbridge(x, y);
else else
@@ -696,7 +726,7 @@ struct obj *instr;
if (buf[x] == g.tune[x]) { if (buf[x] == g.tune[x]) {
gears++; gears++;
matched[x] = TRUE; matched[x] = TRUE;
} else } else {
for (y = 0; y < 5; y++) for (y = 0; y < 5; y++)
if (!matched[y] && buf[x] == g.tune[y] if (!matched[y] && buf[x] == g.tune[y]
&& buf[y] != g.tune[y]) { && buf[y] != g.tune[y]) {
@@ -704,8 +734,9 @@ struct obj *instr;
matched[y] = TRUE; matched[y] = TRUE;
break; break;
} }
}
} }
if (tumblers) if (tumblers) {
if (gears) if (gears)
You_hear("%d tumbler%s click and %d gear%s turn.", You_hear("%d tumbler%s click and %d gear%s turn.",
tumblers, plur(tumblers), gears, tumblers, plur(tumblers), gears,
@@ -713,7 +744,7 @@ struct obj *instr;
else else
You_hear("%d tumbler%s click.", tumblers, You_hear("%d tumbler%s click.", tumblers,
plur(tumblers)); plur(tumblers));
else if (gears) { } else if (gears) {
You_hear("%d gear%s turn.", gears, plur(gears)); You_hear("%d gear%s turn.", gears, plur(gears));
/* could only get `gears == 5' by playing five /* could only get `gears == 5' by playing five
correct notes followed by excess; otherwise, correct notes followed by excess; otherwise,
@@ -728,7 +759,7 @@ struct obj *instr;
} else } else
return do_improvisation(instr); return do_improvisation(instr);
nevermind: nevermind:
pline1(Never_mind); pline1(Never_mind);
return 0; return 0;
} }
+9 -2
View File
@@ -3354,7 +3354,8 @@ boolean tinitial, tfrom_file;
/* WINCAP /* WINCAP
* *
* map_mode:[tiles|ascii4x6|ascii6x8|ascii8x8|ascii16x8|ascii7x12 * map_mode:[tiles|ascii4x6|ascii6x8|ascii8x8|ascii16x8|ascii7x12
* |ascii8x12|ascii16x12|ascii12x16|ascii10x18|fit_to_screen] * |ascii8x12|ascii16x12|ascii12x16|ascii10x18|fit_to_screen
* |ascii_fit_to_screen|tiles_fit_to_screen]
*/ */
fullname = "map_mode"; fullname = "map_mode";
if (match_optname(opts, fullname, sizeof "map_mode" - 1, TRUE)) { if (match_optname(opts, fullname, sizeof "map_mode" - 1, TRUE)) {
@@ -3362,7 +3363,7 @@ boolean tinitial, tfrom_file;
complain_about_duplicate(opts, 1); complain_about_duplicate(opts, 1);
op = string_for_opt(opts, negated); op = string_for_opt(opts, negated);
if (op && !negated) { if (op && !negated) {
if (!strncmpi(op, "tiles", sizeof "tiles" - 1)) if (!strcmpi(op, "tiles"))
iflags.wc_map_mode = MAP_MODE_TILES; iflags.wc_map_mode = MAP_MODE_TILES;
else if (!strncmpi(op, "ascii4x6", sizeof "ascii4x6" - 1)) else if (!strncmpi(op, "ascii4x6", sizeof "ascii4x6" - 1))
iflags.wc_map_mode = MAP_MODE_ASCII4x6; iflags.wc_map_mode = MAP_MODE_ASCII4x6;
@@ -3385,6 +3386,12 @@ boolean tinitial, tfrom_file;
else if (!strncmpi(op, "fit_to_screen", else if (!strncmpi(op, "fit_to_screen",
sizeof "fit_to_screen" - 1)) sizeof "fit_to_screen" - 1))
iflags.wc_map_mode = MAP_MODE_ASCII_FIT_TO_SCREEN; iflags.wc_map_mode = MAP_MODE_ASCII_FIT_TO_SCREEN;
else if (!strncmpi(op, "ascii_fit_to_screen",
sizeof "ascii_fit_to_screen" - 1))
iflags.wc_map_mode = MAP_MODE_ASCII_FIT_TO_SCREEN;
else if (!strncmpi(op, "tiles_fit_to_screen",
sizeof "tiles_fit_to_screen" - 1))
iflags.wc_map_mode = MAP_MODE_TILES_FIT_TO_SCREEN;
else { else {
config_error_add("Unknown %s parameter '%s'", fullname, op); config_error_add("Unknown %s parameter '%s'", fullname, op);
return FALSE; return FALSE;
+2 -1
View File
@@ -2983,8 +2983,9 @@ boolean peaceful, silent;
if (canseemon(shkp)) { if (canseemon(shkp)) {
Norep("%s booms: \"%s, you are a thief!\"", Norep("%s booms: \"%s, you are a thief!\"",
Shknam(shkp), g.plname); Shknam(shkp), g.plname);
} else } else if (!Deaf) {
Norep("You hear a scream, \"Thief!\""); Norep("You hear a scream, \"Thief!\"");
}
} }
hot_pursuit(shkp); hot_pursuit(shkp);
(void) angry_guards(FALSE); (void) angry_guards(FALSE);
+3 -1
View File
@@ -4433,7 +4433,9 @@ short exploding_wand_typ;
if (is_ice(x, y)) { if (is_ice(x, y)) {
melt_ice(x, y, (char *) 0); melt_ice(x, y, (char *) 0);
} else if (is_pool(x, y)) { } else if (is_pool(x, y)) {
const char *msgtxt = "You hear hissing gas."; const char *msgtxt = (!Deaf)
? "You hear hissing gas."
: "That seemed remarkably uneventful.";
if (lev->typ != POOL) { /* MOAT or DRAWBRIDGE_UP */ if (lev->typ != POOL) { /* MOAT or DRAWBRIDGE_UP */
if (see_it) if (see_it)
+2 -1
View File
@@ -104,7 +104,8 @@ OPTIONS=suppress_alert:3.3.1
# Map window settings # Map window settings
# possible map_mode options include: tiles|ascii4x6|ascii6x8|ascii8x8|ascii16x8| # possible map_mode options include: tiles|ascii4x6|ascii6x8|ascii8x8|ascii16x8|
# ascii7x12|ascii8x12|ascii16x12|ascii12x16| # ascii7x12|ascii8x12|ascii16x12|ascii12x16|
# ascii10x18|fit_to_screen # ascii10x18|fit_to_screen|ascii_fit_to_screen|
# tiles_fit_to_screen
OPTIONS=map_mode:tiles,scroll_margin:10 OPTIONS=map_mode:tiles,scroll_margin:10
# Message window settings # Message window settings
+1
View File
@@ -259,6 +259,7 @@ NHSplashWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
case WM_COMMAND: case WM_COMMAND:
switch (LOWORD(wParam)) { switch (LOWORD(wParam)) {
case IDCANCEL:
case IDOK: case IDOK:
mswin_window_mark_dead(mswin_winid_from_handle(hWnd)); mswin_window_mark_dead(mswin_winid_from_handle(hWnd));
if (GetNHApp()->hMainWnd == hWnd) if (GetNHApp()->hMainWnd == hWnd)
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" IgnorableNamespaces="uap mp rescap"> <Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" IgnorableNamespaces="uap mp rescap">
<Identity Name="30485NetHackDevTeam.NetHack3.6" Publisher="CN=8BDC628A-FAAA-4EBA-8B5B-EB61BA93BA1F" Version="363.0.20.0" /> <Identity Name="30485NetHackDevTeam.NetHack3.6" Publisher="CN=8BDC628A-FAAA-4EBA-8B5B-EB61BA93BA1F" Version="363.0.21.0" />
<Properties> <Properties>
<DisplayName>NetHack 3.6</DisplayName> <DisplayName>NetHack 3.6</DisplayName>
<PublisherDisplayName>NetHack DevTeam</PublisherDisplayName> <PublisherDisplayName>NetHack DevTeam</PublisherDisplayName>