Merge branch 'NetHack-3.6.2-beta01' into NetHack-3.6.2

This commit is contained in:
nhmall
2019-02-10 00:05:44 -05:00
8 changed files with 37 additions and 35 deletions

View File

@@ -1,4 +1,4 @@
$NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.252 $ $NHDT-Date: 1549666475 2019/02/08 22:54:35 $
$NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.253 $ $NHDT-Date: 1549757225 2019/02/10 00:07:05 $
This fixes36.2 file is here to capture information about updates in the 3.6.x
lineage following the release of 3.6.1 in April 2018. Please note, however,
@@ -368,6 +368,9 @@ if game ends while hero is in a vault wall breach or in guard's temporary
DUMPLOG: output from '/' (#whatis) and ';' went into ^P message recall history
but was missing from DUMPLOG's message history due to special handling
for the first character which might be graphical rather than text
when donning armor, defer flagging its +/- value--which can be deduced from
the status line--as known until finished in case it gets stolen before
then (player might still deduce the +/- value but hero won't learn it)
Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository

View File

@@ -181,7 +181,7 @@ extern void curses_del_menu(winid wid);
/* cursstat.c */
extern void curses_status_init(void);
extern void curses_teardown_status(void);
extern void curses_status_finish(void);
extern void curses_status_update(int, genericptr_t, int, int, int,
unsigned long *);

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 botl.c $NHDT-Date: 1545705812 2018/12/25 02:43:32 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.132 $ */
/* NetHack 3.6 botl.c $NHDT-Date: 1549755174 2019/02/09 23:32:54 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.134 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Michael Allison, 2006. */
/* NetHack may be freely redistributed. See license for details. */
@@ -926,14 +926,12 @@ status_finish()
free((genericptr_t) blstats[1][i].val), blstats[1][i].val = 0;
#ifdef STATUS_HILITES
if (blstats[0][i].thresholds) {
struct hilite_s *temp = blstats[0][i].thresholds,
*next = (struct hilite_s *)0;
while (temp) {
struct hilite_s *temp, *next = 0;
for (temp = blstats[0][i].thresholds; temp; temp = next) {
next = temp->next;
free(temp);
blstats[0][i].thresholds = (struct hilite_s *)0;
blstats[1][i].thresholds = blstats[0][i].thresholds;
temp = next;
free((genericptr_t) temp);
blstats[0][i].thresholds = blstats[1][i].thresholds = 0;
}
}
#endif /* STATUS_HILITES */

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 do_wear.c $NHDT-Date: 1549406868 2019/02/05 22:47:48 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.104 $ */
/* NetHack 3.6 do_wear.c $NHDT-Date: 1549758452 2019/02/10 00:27:32 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.106 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2012. */
/* NetHack may be freely redistributed. See license for details. */
@@ -197,6 +197,7 @@ Boots_on(VOID_ARGS)
default:
impossible(unknown_type, c_boots, uarmf->otyp);
}
uarmf->known = 1; /* boots' +/- evident because of status line AC */
return 0;
}
@@ -310,6 +311,7 @@ Cloak_on(VOID_ARGS)
default:
impossible(unknown_type, c_cloak, uarmc->otyp);
}
uarmc->known = 1; /* cloak's +/- evident because of status line AC */
return 0;
}
@@ -425,6 +427,7 @@ Helmet_on(VOID_ARGS)
default:
impossible(unknown_type, c_helmet, uarmh->otyp);
}
uarmh->known = 1; /* helmet's +/- evident because of status line AC */
return 0;
}
@@ -497,6 +500,7 @@ Gloves_on(VOID_ARGS)
default:
impossible(unknown_type, c_gloves, uarmg->otyp);
}
uarmg->known = 1; /* gloves' +/- evident because of status line AC */
return 0;
}
@@ -587,7 +591,7 @@ Shield_on(VOID_ARGS)
default:
impossible(unknown_type, c_shield, uarms->otyp);
}
uarms->known = 1; /* shield's +/- evident because of status line AC */
return 0;
}
@@ -627,7 +631,7 @@ Shirt_on(VOID_ARGS)
default:
impossible(unknown_type, c_shirt, uarmu->otyp);
}
uarmu->known = 1; /* shirt's +/- evident because of status line AC */
return 0;
}
@@ -659,6 +663,7 @@ Armor_on(VOID_ARGS)
* suits are set up as intrinsics (actually 'extrinsics') by setworn()
* which is called by armor_or_accessory_on() before Armor_on().
*/
uarm->known = 1; /* suit's +/- evident because of status line AC */
return 0;
}
@@ -1908,23 +1913,20 @@ struct obj *obj;
if (armor) {
int delay;
/*
* FIXME: [#H8124]
* This (setting 'obj->known=1') takes places as soon as hero
* starts donning armor and sticks even if interrupted before
* finishing. (Most glaring instance is theft of this armor
* by a nymph but any interruption applies.)
*
* Perhaps setworn() (the reason to set obj->known=1) should
* be deferred until the (*aftermv)() action? But Boots_on()/
* Helmet_on()/&c aren't passed this 'obj', they rely to uarmf/
* uarmh/&c being assigned by setworn() before they're called.
*/
obj->known = 1; /* since AC is shown on the status line */
/* if the armor is wielded, release it for wearing (won't be
welded even if cursed; that only happens for weapons/weptools) */
if (obj->owornmask & W_WEAPON)
remove_worn_item(obj, FALSE);
/*
* Setting obj->known=1 is done because setworn() causes hero's AC
* to change so armor's +/- value is evident via the status line.
* We used to set it here because of that, but then it would stick
* if a nymph stole the armor before it was fully worn. Delay it
* until the aftermv action. The player may still know this armor's
* +/- amount if donning gets interrupted, but the hero won't.
*
obj->known = 1;
*/
setworn(obj, mask);
delay = -objects[obj->otyp].oc_delay;
if (delay) {

View File

@@ -75,7 +75,7 @@ struct window_procs curses_procs = {
genl_getmsghistory,
genl_putmsghistory,
curses_status_init,
genl_status_finish,
curses_status_finish,
genl_status_enablefield,
curses_status_update,
genl_can_suspend_yes,

View File

@@ -58,15 +58,16 @@ curses_status_init()
}
void
curses_teardown_status()
curses_status_finish()
{
#ifdef STATUS_HILITES
int i;
for (i = 0; i < MAXBLSTATS; ++i) {
free(status_vals_long[i]);
status_vals_long[i] = (char *) 0;
if (status_vals_long[i])
free(status_vals_long[i]), status_vals_long[i] = (char *) 0;
}
genl_status_finish();
#endif /* STATUS_HILITES */
return;
}

View File

@@ -313,9 +313,7 @@ curses_del_nhwin(winid wid)
return;
}
if (wid == MESSAGE_WIN) {
curses_teardown_messages();
} else if (wid == STATUS_WIN) {
curses_teardown_status();
curses_teardown_messages();
}
nhwins[wid].curwin = NULL;
nhwins[wid].nhwin = -1;

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 wintty.c $NHDT-Date: 1549333450 2019/02/05 02:24:10 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.194 $ */
/* NetHack 3.6 wintty.c $NHDT-Date: 1549755185 2019/02/09 23:33:05 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.195 $ */
/* Copyright (c) David Cohrs, 1991 */
/* NetHack may be freely redistributed. See license for details. */
@@ -1526,7 +1526,7 @@ boolean free_data;
tty_menu_item *temp;
while ((temp = cw->mlist) != 0) {
cw->mlist = cw->mlist->next;
cw->mlist = temp->next;
if (temp->str)
free((genericptr_t) temp->str);
free((genericptr_t) temp);