Merge branch 'NetHack-3.6.2'
This commit is contained in:
@@ -111,6 +111,9 @@ add window port status_update() value BL_RESET to use as a flag to
|
||||
redraw all status fields, distinguished from BL_FLUSH which now only
|
||||
specifies that the bot() call has completed so any buffered changes
|
||||
should now be rendered
|
||||
for hilite_status of string status fields (title, dungeon-level, alignment),
|
||||
the types value-goes-up and -down aren't meaningful; treat them as
|
||||
value-changed if from config file and don't offer as choices with 'O'
|
||||
|
||||
|
||||
Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository
|
||||
@@ -146,6 +149,7 @@ windows: Added ntassert() mechanism for Windows based port use
|
||||
tty: significant optimizations for performance and per field rendering
|
||||
tty: use WC2_FLUSH_STATUS to buffer changes until BL_FLUSH is received
|
||||
tty: support BL_RESET in status_update to force an update to all status fields
|
||||
tty: stop hitpointbar from jumping to 100% health at zero hit points
|
||||
unix: Makefile.src and Makefile.utl inadvertently relied on a 'gnu make'
|
||||
extension when using $(VERBOSEMAKE) to reduce build-time feedback;
|
||||
replace with $(QUIETCC) which operates the same but defaults to
|
||||
@@ -165,7 +169,7 @@ sortloot option has been enhanced to improve object ordering; primarily,
|
||||
items of undiscovered type come out before items of discovered type
|
||||
within each class or sub-class of objects
|
||||
YAFM when stumbling on an undetected monster while hallucinating
|
||||
Make it clear when a leprechaun dodges your attack
|
||||
make it clear when a leprechaun dodges your attack
|
||||
wizard mode #wizidentify can now select individual items for permanent
|
||||
identification and don't display the selection to permanently
|
||||
identify everything if everything is already fully identified
|
||||
|
||||
30
src/botl.c
30
src/botl.c
@@ -1851,7 +1851,13 @@ boolean from_configfile;
|
||||
if (*s[sidx + 1] == '\0')
|
||||
sidx--;
|
||||
} else if (!strcmpi(s[sidx], "up") || !strcmpi(s[sidx], "down")) {
|
||||
if (!strcmpi(s[sidx], "down"))
|
||||
if (initblstats[fld].anytype == ANY_STR)
|
||||
/* ordered string comparison is supported but LT/GT for
|
||||
the string fields (title, dungeon-level, alignment)
|
||||
is pointless; treat 'up' or 'down' for string fields
|
||||
as 'changed' rather than rejecting them outright */
|
||||
;
|
||||
else if (!strcmpi(s[sidx], "down"))
|
||||
down = TRUE;
|
||||
else
|
||||
up = TRUE;
|
||||
@@ -2054,8 +2060,6 @@ boolean from_configfile;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
const struct condmap valid_conditions[] = {
|
||||
{"stone", BL_MASK_STONE},
|
||||
{"slime", BL_MASK_SLIME},
|
||||
@@ -3039,12 +3043,22 @@ choose_value:
|
||||
hilite.rel = lt_gt_eq;
|
||||
hilite.value = aval;
|
||||
} else if (behavior == BL_TH_UPDOWN) {
|
||||
boolean ltok = (fld != BL_TIME), gtok = TRUE;
|
||||
if (initblstats[fld].anytype != ANY_STR) {
|
||||
boolean ltok = (fld != BL_TIME), gtok = TRUE;
|
||||
|
||||
lt_gt_eq = status_hilite_menu_choose_updownboth(fld, (char *)0,
|
||||
ltok, gtok);
|
||||
if (lt_gt_eq == NO_LTEQGT)
|
||||
goto choose_behavior;
|
||||
lt_gt_eq = status_hilite_menu_choose_updownboth(fld, (char *)0,
|
||||
ltok, gtok);
|
||||
if (lt_gt_eq == NO_LTEQGT)
|
||||
goto choose_behavior;
|
||||
} else { /* ANY_STR */
|
||||
/* player picked '<field> value changes' in outer menu;
|
||||
ordered string comparison is supported but LT/GT for the
|
||||
string status fields (title, dungeon level, alignment)
|
||||
is pointless; rather than calling ..._choose_updownboth()
|
||||
with ltok==False plus gtok=False and having a menu with a
|
||||
single choice, skip it altogether and just use 'changed' */
|
||||
lt_gt_eq = EQ_VALUE;
|
||||
}
|
||||
Sprintf(colorqry, "Choose a color for when %s %s:",
|
||||
initblstats[fld].fldname,
|
||||
(lt_gt_eq == EQ_VALUE) ? "changes"
|
||||
|
||||
@@ -2486,7 +2486,7 @@ int final;
|
||||
else if (u.moreluck < 0)
|
||||
you_have("reduced luck", "");
|
||||
if (carrying(LUCKSTONE) || stone_luck(TRUE)) {
|
||||
ltmp = stone_luck(0);
|
||||
ltmp = stone_luck(FALSE);
|
||||
if (ltmp <= 0)
|
||||
enl_msg("Bad luck ", "does", "did", " not time out for you", "");
|
||||
if (ltmp >= 0)
|
||||
|
||||
@@ -4244,16 +4244,23 @@ render_status(VOID_ARGS)
|
||||
}
|
||||
}
|
||||
if (iflags.hilite_delta) {
|
||||
char *s = bar;
|
||||
tty_putstatusfield(nullfield, "[", x++, y);
|
||||
if (hpbar_color != NO_COLOR && coloridx != CLR_MAX)
|
||||
term_start_color(hpbar_color);
|
||||
term_start_attr(ATR_INVERSE);
|
||||
tty_putstatusfield(nullfield, bar, x, y);
|
||||
x += (int) strlen(bar);
|
||||
term_end_attr(ATR_INVERSE);
|
||||
if (hpbar_color != NO_COLOR && coloridx != CLR_MAX)
|
||||
term_end_color();
|
||||
if (twoparts) {
|
||||
if (hpbar_percent > 0) {
|
||||
if (hpbar_color != NO_COLOR && coloridx != CLR_MAX)
|
||||
term_start_color(hpbar_color);
|
||||
term_start_attr(ATR_INVERSE);
|
||||
}
|
||||
if (hpbar_percent == 0)
|
||||
s = text;
|
||||
tty_putstatusfield(nullfield, s, x, y);
|
||||
x += (int) strlen(s);
|
||||
if (hpbar_percent > 0) {
|
||||
term_end_attr(ATR_INVERSE);
|
||||
if (hpbar_color != NO_COLOR && coloridx != CLR_MAX)
|
||||
term_end_color();
|
||||
}
|
||||
if (twoparts && hpbar_percent > 0) {
|
||||
*bar2 = savedch;
|
||||
tty_putstatusfield(nullfield, bar2, x, y);
|
||||
x += (int) strlen(bar2);
|
||||
|
||||
Reference in New Issue
Block a user