highlighting status condition via 'O' bug
It took me a while to track this down: if you use 'O' to create hilite_status rule(s) for status condition(s) and you specify multiple attributes in the rule creation menu, it accepts them but it was parsing the new rule(s) incorrectly and only supported one attribute. if (mask & bit) something; else if (mask & other_bit) something_else; else if (mask & yet_another_bit) ... effectively stops at the first bit matched. (At the time that that was written, the menu leading to it only accepted a single attribute.)
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
$NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.277 $ $NHDT-Date: 1553204013 2019/03/21 21:33:33 $
|
||||
$NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.278 $ $NHDT-Date: 1553217908 2019/03/22 01:25:08 $
|
||||
|
||||
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,
|
||||
@@ -460,6 +460,9 @@ when persistent inventory window is enabled, wearing armor didn't immediately
|
||||
update it with armor's newly observed +/- value
|
||||
having an artifact wish be refused ("for a moment you feel <artifact> in
|
||||
your hands, but it disappears") would immediately segfault
|
||||
using 'O' to set status hilites for any status condition (Blind, &c) and
|
||||
specifying more than one attribute (Bold, Inverse, &c) it would only
|
||||
retain one of the chosen attributes
|
||||
tty: turn off an optimization that is the suspected cause of Windows reported
|
||||
partial status lines following level changes
|
||||
tty: ensure that current status fields are always copied to prior status
|
||||
|
||||
17
src/botl.c
17
src/botl.c
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 botl.c $NHDT-Date: 1552697495 2019/03/16 00:51:35 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.135 $ */
|
||||
/* NetHack 3.6 botl.c $NHDT-Date: 1553217909 2019/03/22 01:25:09 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.136 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/*-Copyright (c) Michael Allison, 2006. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
@@ -765,7 +765,7 @@ boolean *valsetlist;
|
||||
if (anytype != ANY_MASK32) {
|
||||
#ifdef STATUS_HILITES
|
||||
if ((chg || *curr->val)) {
|
||||
get_hilite_color(idx, fld, (genericptr_t)&curr->a,
|
||||
get_hilite_color(idx, fld, (genericptr_t) &curr->a,
|
||||
chg, pc, &color);
|
||||
if (chg == 2) {
|
||||
color = NO_COLOR;
|
||||
@@ -2322,7 +2322,7 @@ int sidx;
|
||||
/*
|
||||
* We have the conditions_bitmask with bits set for
|
||||
* each ailment we want in a particular color and/or
|
||||
* attribute, but we need to assign it to an arry of
|
||||
* attribute, but we need to assign it to an array of
|
||||
* bitmasks indexed by the color chosen
|
||||
* (0 to (CLR_MAX - 1))
|
||||
* and/or attributes chosen
|
||||
@@ -2363,6 +2363,7 @@ int sidx;
|
||||
|
||||
for (i = 0; i < sf; ++i) {
|
||||
int a = match_str2attr(subfields[i], FALSE);
|
||||
|
||||
if (a == ATR_DIM)
|
||||
cond_hilites[HL_ATTCLR_DIM] |= conditions_bitmask;
|
||||
else if (a == ATR_BLINK)
|
||||
@@ -3275,15 +3276,15 @@ choose_color:
|
||||
|
||||
if (atr & HL_DIM)
|
||||
cond_hilites[HL_ATTCLR_DIM] |= cond;
|
||||
else if (atr & HL_BLINK)
|
||||
if (atr & HL_BLINK)
|
||||
cond_hilites[HL_ATTCLR_BLINK] |= cond;
|
||||
else if (atr & HL_ULINE)
|
||||
if (atr & HL_ULINE)
|
||||
cond_hilites[HL_ATTCLR_ULINE] |= cond;
|
||||
else if (atr & HL_INVERSE)
|
||||
if (atr & HL_INVERSE)
|
||||
cond_hilites[HL_ATTCLR_INVERSE] |= cond;
|
||||
else if (atr & HL_BOLD)
|
||||
if (atr & HL_BOLD)
|
||||
cond_hilites[HL_ATTCLR_BOLD] |= cond;
|
||||
else if (atr == HL_NONE) {
|
||||
if (atr == HL_NONE) {
|
||||
cond_hilites[HL_ATTCLR_DIM] &= ~cond;
|
||||
cond_hilites[HL_ATTCLR_BLINK] &= ~cond;
|
||||
cond_hilites[HL_ATTCLR_ULINE] &= ~cond;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 options.c $NHDT-Date: 1553204012 2019/03/21 21:33:32 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.358 $ */
|
||||
/* NetHack 3.6 options.c $NHDT-Date: 1553217909 2019/03/22 01:25:09 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.359 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/*-Copyright (c) Michael Allison, 2008. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
@@ -1516,14 +1516,14 @@ const char *prompt;
|
||||
: MENU_UNSELECTED);
|
||||
}
|
||||
end_menu(tmpwin, (prompt && *prompt) ? prompt : "Pick an attribute");
|
||||
pick_cnt = select_menu(tmpwin, allow_many ? PICK_ANY: PICK_ONE, &picks);
|
||||
pick_cnt = select_menu(tmpwin, allow_many ? PICK_ANY : PICK_ONE, &picks);
|
||||
destroy_nhwindow(tmpwin);
|
||||
if (pick_cnt > 0) {
|
||||
int j, k = 0;
|
||||
|
||||
if (allow_many) {
|
||||
/* PICK_ANY, with one preselected entry which should be
|
||||
excluded if any other choices were picked */
|
||||
/* PICK_ANY, with one preselected entry (ATR_NONE) which
|
||||
should be excluded if any other choices were picked */
|
||||
for (i = 0; i < pick_cnt; ++i) {
|
||||
j = picks[i].item.a_int - 1;
|
||||
if (attrnames[j].attr != ATR_NONE || pick_cnt == 1) {
|
||||
|
||||
Reference in New Issue
Block a user