Merge branch 'NetHack-3.6'
This commit is contained in:
@@ -2629,11 +2629,9 @@ On Windows, it is \(lq.nethackrc\(rq in
|
||||
\(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
|
||||
text editor.
|
||||
.pg
|
||||
After running NetHack for the first time, you should find a default
|
||||
template for the configuration file named \(lq.nethackrc.template\(rq
|
||||
in \(lq\\%USERPROFILE%\\NetHack\\3.6\(rq.
|
||||
.pg
|
||||
If you had not created the configuration file, NetHack will create
|
||||
the configuration file for you using the default template file.
|
||||
.pg
|
||||
|
||||
@@ -2878,14 +2878,10 @@ can be created with any text editor.\\
|
||||
On Windows, it is \mbox{``.nethackrc''} in the foler
|
||||
\mbox{{``\%USERPROFILE\%\textbackslash NetHack\textbackslash 3.6''}}. The
|
||||
file may not exist, but it is a normal ASCII text file and can be created
|
||||
with any text editor.\\
|
||||
|
||||
%.lp ""
|
||||
with any text editor.
|
||||
After runing {\it NetHack\/} for the first time, you should find a default
|
||||
template for ths configuration file named \mbox{``.nethackrc.template''} in
|
||||
\mbox{{``\%USERPROFILE\%\textbackslash NetHack\textbackslash 3.6''}}.
|
||||
|
||||
%.lp ""
|
||||
If you had not created the configuration file, {\it NetHack\/} will create
|
||||
the configuration file for you using the default template file.
|
||||
|
||||
|
||||
@@ -347,7 +347,8 @@
|
||||
# How the map window is shown? Windows GUI only.
|
||||
# possible map_mode options include: tiles, ascii4x6,
|
||||
# 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
|
||||
|
||||
# Define alternative file for the files, and the tile size
|
||||
|
||||
@@ -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
|
||||
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
|
||||
fix a leashed pet polymorphed into a long worm staying leashed
|
||||
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
|
||||
|
||||
13
src/dokick.c
13
src/dokick.c
@@ -1192,9 +1192,16 @@ dokick()
|
||||
exercise(A_DEX, TRUE);
|
||||
return 1;
|
||||
} else if (!rn2(3)) {
|
||||
pline("Flupp! %s.",
|
||||
(Blind ? "You hear a sloshing sound"
|
||||
: "Muddy waste pops up from the drain"));
|
||||
if (Blind && Deaf)
|
||||
Sprintf(buf, " %s", body_part(FACE));
|
||||
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 (!Blind)
|
||||
You_see("a ring shining in its midst.");
|
||||
|
||||
73
src/music.c
73
src/music.c
@@ -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 */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -170,7 +170,7 @@ struct monst *bugler; /* monster that played instrument */
|
||||
mtmp->mstrategy &= ~STRAT_WAITMASK;
|
||||
if (canseemon(mtmp))
|
||||
pline("%s is now ready for battle!", Monnam(mtmp));
|
||||
else
|
||||
else if (!Deaf)
|
||||
Norep("You hear the rattle of battle gear being readied.");
|
||||
} else if ((distm = ((bugler == &g.youmonst)
|
||||
? distu(mtmp->mx, mtmp->my)
|
||||
@@ -284,7 +284,7 @@ int force;
|
||||
/*FALLTHRU*/
|
||||
case ROOM:
|
||||
case CORR: /* Try to make a pit */
|
||||
do_pit:
|
||||
do_pit:
|
||||
chasm = maketrap(x, y, PIT);
|
||||
if (!chasm)
|
||||
break; /* no pit if portal at that location */
|
||||
@@ -467,6 +467,7 @@ struct obj *instr;
|
||||
mundane = TRUE;
|
||||
}
|
||||
|
||||
|
||||
#define PLAY_NORMAL 0x00
|
||||
#define PLAY_STUNNED 0x01
|
||||
#define PLAY_CONFUSED 0x02
|
||||
@@ -484,10 +485,16 @@ struct obj *instr;
|
||||
You("start playing %s.", yname(instr));
|
||||
break;
|
||||
case PLAY_STUNNED:
|
||||
You("produce an obnoxious droning sound.");
|
||||
if (!Deaf)
|
||||
You("produce an obnoxious droning sound.");
|
||||
else
|
||||
You_feel("a monotonous vibration.");
|
||||
break;
|
||||
case PLAY_CONFUSED:
|
||||
You("produce a raucous noise.");
|
||||
if (!Deaf)
|
||||
You("produce a raucous noise.");
|
||||
else
|
||||
You_feel("a jarring vibration.");
|
||||
break;
|
||||
case PLAY_HALLU:
|
||||
You("produce a kaleidoscopic display of floating butterfiles.");
|
||||
@@ -511,13 +518,17 @@ struct obj *instr;
|
||||
case MAGIC_FLUTE: /* Make monster fall asleep */
|
||||
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);
|
||||
exercise(A_DEX, TRUE);
|
||||
break;
|
||||
case WOODEN_FLUTE: /* May charm snakes */
|
||||
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)
|
||||
charm_snakes(u.ulevel * 3);
|
||||
exercise(A_DEX, TRUE);
|
||||
@@ -543,26 +554,38 @@ struct obj *instr;
|
||||
makeknown(instr->otyp);
|
||||
break;
|
||||
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);
|
||||
exercise(A_WIS, FALSE);
|
||||
break;
|
||||
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);
|
||||
exercise(A_WIS, FALSE);
|
||||
break;
|
||||
case MAGIC_HARP: /* Charm monsters */
|
||||
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);
|
||||
exercise(A_DEX, TRUE);
|
||||
break;
|
||||
case WOODEN_HARP: /* May calm Nymph */
|
||||
do_spec &= (rn2(ACURR(A_DEX)) + u.ulevel > 25);
|
||||
pline("%s %s.", Yname2(instr),
|
||||
do_spec ? "produces a lilting melody" : "twangs");
|
||||
if (!Deaf)
|
||||
pline("%s %s.", Yname2(instr),
|
||||
do_spec ? "produces a lilting melody" : "twangs");
|
||||
else
|
||||
You_feel("soothing vibrations.");
|
||||
if (do_spec)
|
||||
calm_nymphs(u.ulevel * 3);
|
||||
exercise(A_DEX, TRUE);
|
||||
@@ -583,8 +606,12 @@ struct obj *instr;
|
||||
break;
|
||||
case LEATHER_DRUM: /* Awaken monsters */
|
||||
if (!mundane) {
|
||||
You("beat a deafening row!");
|
||||
incr_itimeout(&HDeaf, rn1(20, 30));
|
||||
if (!Deaf) {
|
||||
You("beat a deafening row!");
|
||||
incr_itimeout(&HDeaf, rn1(20, 30));
|
||||
} else {
|
||||
You("pound on the drum.");
|
||||
}
|
||||
exercise(A_WIS, FALSE);
|
||||
} else
|
||||
You("%s %s.",
|
||||
@@ -649,7 +676,10 @@ struct obj *instr;
|
||||
*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
|
||||
* 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++)
|
||||
if (isok(x, y))
|
||||
if (find_drawbridge(&x, &y)) {
|
||||
u.uevent.uheard_tune =
|
||||
2; /* tune now fully known */
|
||||
/* tune now fully known */
|
||||
u.uevent.uheard_tune = 2;
|
||||
if (levl[x][y].typ == DRAWBRIDGE_DOWN)
|
||||
close_drawbridge(x, y);
|
||||
else
|
||||
@@ -696,7 +726,7 @@ struct obj *instr;
|
||||
if (buf[x] == g.tune[x]) {
|
||||
gears++;
|
||||
matched[x] = TRUE;
|
||||
} else
|
||||
} else {
|
||||
for (y = 0; y < 5; y++)
|
||||
if (!matched[y] && buf[x] == g.tune[y]
|
||||
&& buf[y] != g.tune[y]) {
|
||||
@@ -704,8 +734,9 @@ struct obj *instr;
|
||||
matched[y] = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tumblers)
|
||||
if (tumblers) {
|
||||
if (gears)
|
||||
You_hear("%d tumbler%s click and %d gear%s turn.",
|
||||
tumblers, plur(tumblers), gears,
|
||||
@@ -713,7 +744,7 @@ struct obj *instr;
|
||||
else
|
||||
You_hear("%d tumbler%s click.", tumblers,
|
||||
plur(tumblers));
|
||||
else if (gears) {
|
||||
} else if (gears) {
|
||||
You_hear("%d gear%s turn.", gears, plur(gears));
|
||||
/* could only get `gears == 5' by playing five
|
||||
correct notes followed by excess; otherwise,
|
||||
@@ -728,7 +759,7 @@ struct obj *instr;
|
||||
} else
|
||||
return do_improvisation(instr);
|
||||
|
||||
nevermind:
|
||||
nevermind:
|
||||
pline1(Never_mind);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -3354,7 +3354,8 @@ boolean tinitial, tfrom_file;
|
||||
/* WINCAP
|
||||
*
|
||||
* 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";
|
||||
if (match_optname(opts, fullname, sizeof "map_mode" - 1, TRUE)) {
|
||||
@@ -3362,7 +3363,7 @@ boolean tinitial, tfrom_file;
|
||||
complain_about_duplicate(opts, 1);
|
||||
op = string_for_opt(opts, negated);
|
||||
if (op && !negated) {
|
||||
if (!strncmpi(op, "tiles", sizeof "tiles" - 1))
|
||||
if (!strcmpi(op, "tiles"))
|
||||
iflags.wc_map_mode = MAP_MODE_TILES;
|
||||
else if (!strncmpi(op, "ascii4x6", sizeof "ascii4x6" - 1))
|
||||
iflags.wc_map_mode = MAP_MODE_ASCII4x6;
|
||||
@@ -3385,6 +3386,12 @@ boolean tinitial, tfrom_file;
|
||||
else if (!strncmpi(op, "fit_to_screen",
|
||||
sizeof "fit_to_screen" - 1))
|
||||
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 {
|
||||
config_error_add("Unknown %s parameter '%s'", fullname, op);
|
||||
return FALSE;
|
||||
|
||||
@@ -2983,8 +2983,9 @@ boolean peaceful, silent;
|
||||
if (canseemon(shkp)) {
|
||||
Norep("%s booms: \"%s, you are a thief!\"",
|
||||
Shknam(shkp), g.plname);
|
||||
} else
|
||||
} else if (!Deaf) {
|
||||
Norep("You hear a scream, \"Thief!\"");
|
||||
}
|
||||
}
|
||||
hot_pursuit(shkp);
|
||||
(void) angry_guards(FALSE);
|
||||
|
||||
@@ -4433,7 +4433,9 @@ short exploding_wand_typ;
|
||||
if (is_ice(x, y)) {
|
||||
melt_ice(x, y, (char *) 0);
|
||||
} 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 (see_it)
|
||||
|
||||
@@ -104,7 +104,8 @@ OPTIONS=suppress_alert:3.3.1
|
||||
# Map window settings
|
||||
# possible map_mode options include: tiles|ascii4x6|ascii6x8|ascii8x8|ascii16x8|
|
||||
# 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
|
||||
|
||||
# Message window settings
|
||||
|
||||
@@ -259,6 +259,7 @@ NHSplashWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
|
||||
case WM_COMMAND:
|
||||
switch (LOWORD(wParam)) {
|
||||
case IDCANCEL:
|
||||
case IDOK:
|
||||
mswin_window_mark_dead(mswin_winid_from_handle(hWnd));
|
||||
if (GetNHApp()->hMainWnd == hWnd)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?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">
|
||||
<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>
|
||||
<DisplayName>NetHack 3.6</DisplayName>
|
||||
<PublisherDisplayName>NetHack DevTeam</PublisherDisplayName>
|
||||
|
||||
Reference in New Issue
Block a user