Merge branch 'NetHack-3.6'
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.84 $ $NHDT-Date: 1562203850 2019/07/04 01:30:50 $
|
$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.86 $ $NHDT-Date: 1562462061 2019/07/07 01:14:21 $
|
||||||
|
|
||||||
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,
|
||||||
@@ -98,6 +98,7 @@ if an engulfer has any worn items, hero could pick them up from inside and
|
|||||||
they wouldn't be unworn properly, eventually triggering warnings or
|
they wouldn't be unworn properly, eventually triggering warnings or
|
||||||
worse (Juiblex will wear an amulet if created with one; a shapechanger
|
worse (Juiblex will wear an amulet if created with one; a shapechanger
|
||||||
might wear one and then turn into an engulfer)
|
might wear one and then turn into an engulfer)
|
||||||
|
kicking an altar ignored god's wrath if hero injured himself during the kick
|
||||||
|
|
||||||
|
|
||||||
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
|
||||||
@@ -169,6 +170,7 @@ curses: when map window was clipped, the 'scrollbars' shown to indicate which
|
|||||||
the 2nd and 3rd fifths (for example) were currently within view
|
the 2nd and 3rd fifths (for example) were currently within view
|
||||||
curses: support users's setting for erase char and kill char when getting a
|
curses: support users's setting for erase char and kill char when getting a
|
||||||
line of input with 'popup_dialog' Off (already supported for popup On)
|
line of input with 'popup_dialog' Off (already supported for popup On)
|
||||||
|
curses: attempting to use ^H to rush left actually executed ^G (#wizgenesis)
|
||||||
curses+'perm_invent': entries were wrapping without any control; usually not
|
curses+'perm_invent': entries were wrapping without any control; usually not
|
||||||
noticeable because next entry overwrote, but visible for final entry
|
noticeable because next entry overwrote, but visible for final entry
|
||||||
when whole inventory fit within the available height; looked ok with
|
when whole inventory fit within the available height; looked ok with
|
||||||
|
|||||||
@@ -5944,8 +5944,8 @@ char def;
|
|||||||
res = (*windowprocs.win_yn_function)(query, resp, def);
|
res = (*windowprocs.win_yn_function)(query, resp, def);
|
||||||
#ifdef DUMPLOG
|
#ifdef DUMPLOG
|
||||||
if (idx == g.saved_pline_index) {
|
if (idx == g.saved_pline_index) {
|
||||||
/* when idx is still the same as saved_pline_index, the interface
|
/* when idx is still the same as g.saved_pline_index, the interface
|
||||||
didn't put the prompt into saved_plines[]; we put a simplified
|
didn't put the prompt into g.saved_plines[]; we put a simplified
|
||||||
version in there now (without response choices or default) */
|
version in there now (without response choices or default) */
|
||||||
Sprintf(dumplog_buf, "%s ", query);
|
Sprintf(dumplog_buf, "%s ", query);
|
||||||
(void) key2txt((uchar) res, eos(dumplog_buf));
|
(void) key2txt((uchar) res, eos(dumplog_buf));
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 dokick.c $NHDT-Date: 1551920353 2019/03/07 00:59:13 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.131 $ */
|
/* NetHack 3.6 dokick.c $NHDT-Date: 1562462061 2019/07/07 01:14:21 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.133 $ */
|
||||||
/* Copyright (c) Izchak Miller, Mike Stephenson, Steve Linhart, 1989. */
|
/* Copyright (c) Izchak Miller, Mike Stephenson, Steve Linhart, 1989. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -1053,9 +1053,9 @@ dokick()
|
|||||||
if (Levitation)
|
if (Levitation)
|
||||||
goto dumb;
|
goto dumb;
|
||||||
You("kick %s.", (Blind ? something : "the altar"));
|
You("kick %s.", (Blind ? something : "the altar"));
|
||||||
|
altar_wrath(x, y);
|
||||||
if (!rn2(3))
|
if (!rn2(3))
|
||||||
goto ouch;
|
goto ouch;
|
||||||
altar_wrath(x, y);
|
|
||||||
exercise(A_DEX, TRUE);
|
exercise(A_DEX, TRUE);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|||||||
14
src/mklev.c
14
src/mklev.c
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 mklev.c $NHDT-Date: 1560304468 2019/06/12 01:54:28 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.61 $ */
|
/* NetHack 3.6 mklev.c $NHDT-Date: 1562455089 2019/07/06 23:18:09 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.63 $ */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Alex Smith, 2017. */
|
/*-Copyright (c) Alex Smith, 2017. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -581,6 +581,10 @@ clear_level_structures()
|
|||||||
register int x, y;
|
register int x, y;
|
||||||
register struct rm *lev;
|
register struct rm *lev;
|
||||||
|
|
||||||
|
/* note: normally we'd start at x=1 because map column #0 isn't used
|
||||||
|
(except for placing vault guard at <0,0> when removed from the map
|
||||||
|
but not from the level); explicitly reset column #0 along with the
|
||||||
|
rest so that we start the new level with a completely clean slate */
|
||||||
for (x = 0; x < COLNO; x++) {
|
for (x = 0; x < COLNO; x++) {
|
||||||
lev = &levl[x][0];
|
lev = &levl[x][0];
|
||||||
for (y = 0; y < ROWNO; y++) {
|
for (y = 0; y < ROWNO; y++) {
|
||||||
@@ -635,6 +639,7 @@ clear_level_structures()
|
|||||||
xdnstair = ydnstair = xupstair = yupstair = 0;
|
xdnstair = ydnstair = xupstair = yupstair = 0;
|
||||||
g.sstairs.sx = g.sstairs.sy = 0;
|
g.sstairs.sx = g.sstairs.sy = 0;
|
||||||
xdnladder = ydnladder = xupladder = yupladder = 0;
|
xdnladder = ydnladder = xupladder = yupladder = 0;
|
||||||
|
g.dnstairs_room = g.upstairs_room = g.sstairs_room = (struct mkroom *) 0;
|
||||||
g.made_branch = FALSE;
|
g.made_branch = FALSE;
|
||||||
clear_regions();
|
clear_regions();
|
||||||
}
|
}
|
||||||
@@ -1014,6 +1019,13 @@ mklev()
|
|||||||
for (ridx = 0; ridx < SIZE(g.rooms); ridx++)
|
for (ridx = 0; ridx < SIZE(g.rooms); ridx++)
|
||||||
g.rooms[ridx].orig_rtype = g.rooms[ridx].rtype;
|
g.rooms[ridx].orig_rtype = g.rooms[ridx].rtype;
|
||||||
|
|
||||||
|
/* something like this usually belongs in clear_level_structures()
|
||||||
|
but these aren't saved and restored so might not retain their
|
||||||
|
values for the life of the current level; reset them to default
|
||||||
|
now so that they never do and no one will be tempted to introduce
|
||||||
|
a new use of them for anything on this level */
|
||||||
|
g.dnstairs_room = g.upstairs_room = g.sstairs_room = (struct mkroom *) 0;
|
||||||
|
|
||||||
reseed_random(rn2);
|
reseed_random(rn2);
|
||||||
reseed_random(rn2_on_display_rng);
|
reseed_random(rn2_on_display_rng);
|
||||||
}
|
}
|
||||||
|
|||||||
16
src/pray.c
16
src/pray.c
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 pray.c $NHDT-Date: 1561061321 2019/06/20 20:08:41 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.115 $ */
|
/* NetHack 3.6 pray.c $NHDT-Date: 1562462064 2019/07/07 01:14:24 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.116 $ */
|
||||||
/* Copyright (c) Benson I. Margulies, Mike Stephenson, Steve Linhart, 1989. */
|
/* Copyright (c) Benson I. Margulies, Mike Stephenson, Steve Linhart, 1989. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -2222,13 +2222,21 @@ register int x, y;
|
|||||||
{
|
{
|
||||||
aligntyp altaralign = a_align(x, y);
|
aligntyp altaralign = a_align(x, y);
|
||||||
|
|
||||||
if (!strcmp(align_gname(altaralign), u_gname())) {
|
if (u.ualign.type == altaralign && u.ualign.record > -rn2(4)) {
|
||||||
godvoice(altaralign, "How darest thou desecrate my altar!");
|
godvoice(altaralign, "How darest thou desecrate my altar!");
|
||||||
(void) adjattrib(A_WIS, -1, FALSE);
|
(void) adjattrib(A_WIS, -1, FALSE);
|
||||||
|
u.ualign.record--;
|
||||||
} else {
|
} else {
|
||||||
pline("A voice (could it be %s?) whispers:", align_gname(altaralign));
|
pline("%s %s%s:",
|
||||||
|
!Deaf ? "A voice (could it be"
|
||||||
|
: "Despite your deafness, you seem to hear",
|
||||||
|
align_gname(altaralign),
|
||||||
|
!Deaf ? "?) whispers" : " say");
|
||||||
verbalize("Thou shalt pay, infidel!");
|
verbalize("Thou shalt pay, infidel!");
|
||||||
change_luck(-1);
|
/* higher luck is more likely to be reduced; as it approaches -5
|
||||||
|
the chance to lose another point drops down, eventually to 0 */
|
||||||
|
if (Luck > -5 && rn2(Luck + 6))
|
||||||
|
change_luck(rn2(20) ? -1 : -2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -661,7 +661,7 @@ curses_message_win_getline(const char *prompt, char *answer, int buffer)
|
|||||||
goto alldone;
|
goto alldone;
|
||||||
case '\177': /* DEL/Rubout */
|
case '\177': /* DEL/Rubout */
|
||||||
case KEY_DC: /* delete-character */
|
case KEY_DC: /* delete-character */
|
||||||
case '\b': /* ^H (Backspace: '\011') */
|
case '\b': /* ^H (Backspace: '\010') */
|
||||||
case KEY_BACKSPACE:
|
case KEY_BACKSPACE:
|
||||||
if (len < 1) {
|
if (len < 1) {
|
||||||
len = 1;
|
len = 1;
|
||||||
@@ -887,7 +887,7 @@ boolean restoring_msghist;
|
|||||||
static int stash_count;
|
static int stash_count;
|
||||||
static nhprev_mesg *stash_head = 0;
|
static nhprev_mesg *stash_head = 0;
|
||||||
#ifdef DUMPLOG
|
#ifdef DUMPLOG
|
||||||
extern unsigned saved_pline_index; /* pline.c */
|
/* extern unsigned g.saved_pline_index; */ /* pline.c */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (restoring_msghist && !initd) {
|
if (restoring_msghist && !initd) {
|
||||||
@@ -899,8 +899,8 @@ boolean restoring_msghist;
|
|||||||
last_mesg = (nhprev_mesg *) 0; /* no need to remember the tail */
|
last_mesg = (nhprev_mesg *) 0; /* no need to remember the tail */
|
||||||
initd = TRUE;
|
initd = TRUE;
|
||||||
#ifdef DUMPLOG
|
#ifdef DUMPLOG
|
||||||
/* this suffices; there's no need to scrub saved_pline[] pointers */
|
/* this suffices; there's no need to scrub g.saved_pline[] pointers */
|
||||||
saved_pline_index = 0;
|
g.saved_pline_index = 0;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -792,6 +792,13 @@ curses_convert_keys(int key)
|
|||||||
|
|
||||||
/* Handle arrow keys */
|
/* Handle arrow keys */
|
||||||
switch (key) {
|
switch (key) {
|
||||||
|
case KEY_BACKSPACE:
|
||||||
|
/* we can't distinguish between a separate backspace key and
|
||||||
|
explicit Ctrl+H intended to rush to the left; without this,
|
||||||
|
a value for ^H greater than 255 is passed back to core's
|
||||||
|
readchar() and stripping the value down to 0..255 yields ^G! */
|
||||||
|
ret = C('H');
|
||||||
|
break;
|
||||||
case KEY_LEFT:
|
case KEY_LEFT:
|
||||||
if (iflags.num_pad) {
|
if (iflags.num_pad) {
|
||||||
ret = '4';
|
ret = '4';
|
||||||
|
|||||||
Reference in New Issue
Block a user