Merge branch 'NetHack-3.6.2'
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
.\" $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.303 $ $NHDT-Date: 1554134322 2019/04/01 15:58:42 $
|
||||
.\" $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.304 $ $NHDT-Date: 1554849951 2019/04/09 22:45:51 $
|
||||
.\"
|
||||
.\" This is an excerpt from the 'roff' man page from the 'groff' package.
|
||||
.\" NetHack's Guidebook.mn currently does *not* adhere to these guidelines.
|
||||
@@ -24,7 +24,7 @@
|
||||
.ds vr "NetHack 3.6
|
||||
.ds f0 "\*(vr
|
||||
.ds f1
|
||||
.ds f2 "March 24, 2019
|
||||
.ds f2 "April 9, 2019
|
||||
.
|
||||
.\" A note on some special characters:
|
||||
.\" \(lq = left double quote
|
||||
@@ -4112,9 +4112,12 @@ If no attribute is defined, no attribute is used.
|
||||
The pattern should be a regular expression.
|
||||
.lp ""
|
||||
Allowed colors are black, red, green, brown, blue, magenta, cyan, gray,
|
||||
orange, lightgreen, yellow, lightblue, lightmagenta, lightcyan, and white.
|
||||
orange, light-green, yellow, light-blue, light-magenta, light-cyan, and white.
|
||||
And \f(CRno-color\fP, the default foreground color, which isn't necessarily
|
||||
the same as any of the other colors.
|
||||
.lp ""
|
||||
Allowed attributes are none, bold, dim, underline, blink, and inverse.
|
||||
\(lqNormal\(rq is a synonym for \(lqnone\(rq.
|
||||
Note that the platform used may interpret the attributes any way it
|
||||
wants.
|
||||
.lp ""
|
||||
@@ -4179,36 +4182,62 @@ If so, you can customize your game display by setting thresholds to
|
||||
change the color or appearance of fields in the status display.
|
||||
.pg
|
||||
The format for defining status colors is:
|
||||
.si
|
||||
.lp "OPTION=hilite_status: field-name/behavior/color&attributes"
|
||||
.ei
|
||||
.SD n
|
||||
\f(CROPTION=hilite_status:\fIfield-name\fP/\fIbehavior\fP/\fIcolor\fP&\fIattributes\fP\fP
|
||||
.ED
|
||||
.pg
|
||||
For example, the following line in your config file will cause
|
||||
For example, the following line in your configuration file will cause
|
||||
the hitpoints field to display in the color red if your hitpoints
|
||||
drop to or below a threshold of 30%:
|
||||
.si
|
||||
.lp "OPTION=hilite_status: hitpoints/<=30%/red/normal"
|
||||
.ei
|
||||
.SD n
|
||||
\f(CROPTION=hilite_status:hitpoints/<=30%/red/normal\fP
|
||||
.ED
|
||||
(That example is actually specifying \f(CRred&normal\fP for <=30%
|
||||
and \f(CRno-color&normal\fP for >30%.)
|
||||
.pg
|
||||
For another example, the following line in your config file will cause
|
||||
wisdom to be displayed red if it drops and green if it rises.
|
||||
.si
|
||||
.lp "OPTION=hilite_status: wisdom/down/red/up/green"
|
||||
.ei
|
||||
For another example, the following line in your configuration file will cause
|
||||
wisdom to be displayed red if it drops and green if it rises:
|
||||
.SD n
|
||||
\f(CROPTION=hilite_status:wisdom/down/red/up/green\fP
|
||||
.ED
|
||||
.pg
|
||||
You can adjust the display of the following status fields:
|
||||
Allowed colors are black, red, green, brown, blue, magenta, cyan, gray,
|
||||
orange, light-green, yellow, light-blue, light-magenta, light-cyan, and white.
|
||||
And \(lqno-color\(rq, the default foreground color on the display, which
|
||||
is not necessarily the same as black or white or any of the other colors.
|
||||
.pg
|
||||
Allowed attributes are none, bold, dim, underline, blink, and inverse.
|
||||
\(lqNormal\(rq is a synonym for \(lqnone\(rq; they should not be used in
|
||||
combination with any of the other attributes.
|
||||
.pg
|
||||
To specify both a color and an attribute, use \(oq&\(cq to combine them.
|
||||
To specify multiple attributes, use \(oq\+\(cq to combine those.
|
||||
For example: \(lqmagenta&inverse\+dim\(rq.
|
||||
.pg
|
||||
Note that the display may substitute or ignore particular attributes
|
||||
depending upon its capabilities, and in general may interpret the
|
||||
attributes any way it wants.
|
||||
For example, on some display systems a request for bold might yield
|
||||
blink or vice versa.
|
||||
On others, issuing an attribute request while another is already
|
||||
set up will replace the earlier attribute rather than combine with it.
|
||||
Since NetHack issues attribute requests sequentially (at least with
|
||||
the \f(CRtty\fP interface) rather than all at once, the only way a
|
||||
situation like that can be controlled is to specify just one attribute.
|
||||
.pg
|
||||
You can adjust the appearance of the following status fields:
|
||||
.TS S
|
||||
center;
|
||||
c c c.
|
||||
.\"TABLE_START
|
||||
title strength dexterity
|
||||
constitution intelligence wisdom
|
||||
charisma alignment score
|
||||
carrying-capacity gold power
|
||||
power-max experience-level armor-class
|
||||
HD time hunger
|
||||
hitpoints hitpoints-max dungeon-level
|
||||
experience condition
|
||||
title dungeon-level experience-level
|
||||
strength gold experience
|
||||
dexterity hitpoints HD
|
||||
constitution hitpoints-max time
|
||||
intelligence power hunger
|
||||
wisdom power-max carrying-capacity
|
||||
charisma armor-class condition
|
||||
alignment score
|
||||
.\"TABLE_END Do not delete this line.
|
||||
.TE
|
||||
.lp ""
|
||||
@@ -4274,20 +4303,14 @@ and \(lqtitle\(rq.
|
||||
For title, only the role's rank title
|
||||
is tested; the character's name is ignored.
|
||||
.ei
|
||||
.lp ""
|
||||
Allowed colors are black, red, green, brown, blue, magenta, cyan, gray,
|
||||
orange, lightgreen, yellow, lightblue, lightmagenta, lightcyan, and white.
|
||||
.lp ""
|
||||
Allowed attributes are bold, inverse, underline, blink, dim, and normal.
|
||||
Note that the platform used may interpret the attributes any way it
|
||||
wants.
|
||||
.lp ""
|
||||
.pg
|
||||
The in-game options menu can help you determine the correct syntax for a
|
||||
config file.
|
||||
.lp ""
|
||||
The whole feature can be disabled by setting option
|
||||
statushilites to 0.
|
||||
.lp ""
|
||||
.pg
|
||||
The whole feature can be disabled by setting option
|
||||
.op statushilites
|
||||
to 0.
|
||||
.pg
|
||||
Example hilites:
|
||||
.sd
|
||||
.si
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
%.au
|
||||
\author{Original version - Eric S. Raymond\\
|
||||
(Edited and expanded for 3.6 by Mike Stephenson and others)}
|
||||
\date{March 24, 2019}
|
||||
\date{April 9, 2019}
|
||||
|
||||
\maketitle
|
||||
|
||||
@@ -4582,12 +4582,15 @@ The pattern should be a regular expression.
|
||||
%.lp ""
|
||||
Allowed colors are {\it black}, {\it red}, {\it green}, {\it brown},
|
||||
{\it blue}, {\it magenta}, {\it cyan}, {\it gray}, {\it orange},
|
||||
{\it lightgreen}, {\it yellow}, {\it lightblue}, {\it lightmagenta},
|
||||
{\it lightcyan}, and {\it white}.
|
||||
{\it light-green}, {\it yellow}, {\it light-blue}, {\it light-magenta},
|
||||
{\it light-cyan}, and {\it white}.
|
||||
And {\itno-color}, the default foreground color, which isn't necessarily
|
||||
the same as any of the other colors.
|
||||
|
||||
%.lp ""
|
||||
Allowed attributes are {\it none}, {\it bold}, {\it dim}, {\it underline},
|
||||
{\it blink}, and {\it inverse}.
|
||||
{\it Normal\/} is a synonym for {\it none}.
|
||||
Note that the platform used may interpret the attributes any way it
|
||||
wants.
|
||||
|
||||
@@ -4657,40 +4660,68 @@ The pattern should be a regular expression.
|
||||
\subsection*{Configuring Status Hilites}
|
||||
|
||||
%.pg
|
||||
Your copy of {\it NetHack\/} may have been compiled with support for {\it Status Hilites}.
|
||||
Your copy of {\it NetHack\/} may have been compiled with support
|
||||
for {\it Status Hilites}.
|
||||
If so, you can customize your game display by setting thresholds to
|
||||
change the color or appearance of fields in the status display.
|
||||
%.pg
|
||||
The format for defining status colors is:
|
||||
|
||||
The format for defining status colors is:\\
|
||||
\begin{verbatim}
|
||||
OPTION=hilite_status: field-name/behavior/color&attributes
|
||||
OPTION=hilite_status:field-name/behavior/color&attributes
|
||||
\end{verbatim}
|
||||
%.pg
|
||||
For example, the following line in your config file will cause
|
||||
|
||||
For example, the following line in your configuration file will cause
|
||||
the hitpoints field to display in the color red if your hitpoints
|
||||
drop to or below a threshold of 30%:
|
||||
drop to or below a threshold of 30%:\\
|
||||
\begin{verbatim}
|
||||
OPTION=hilite_status: hitpoints/<=30%/red/normal
|
||||
\end{verbatim}
|
||||
%.pg
|
||||
For another example, the following line in your config file will cause
|
||||
wisdom to be displayed red if it drops and green if it rises.
|
||||
OPTION=hilite_status:hitpoints/<=30%/red/normal
|
||||
\end{verbatim}\\
|
||||
(That example is actually specifying {\tt red\&normal} for <=30\%
|
||||
and {\tt no-color\&normal} for >30\%.)\\
|
||||
|
||||
For another example, the following line in your configuration file will cause
|
||||
wisdom to be displayed red if it drops and green if it rises:\\
|
||||
\begin{verbatim}
|
||||
OPTION=hilite_status: wisdom/down/red/up/green
|
||||
OPTION=hilite_status:wisdom/down/red/up/green
|
||||
\end{verbatim}
|
||||
|
||||
Allowed colors are black, red, green, brown, blue, magenta, cyan, gray,
|
||||
orange, light-green, yellow, light-blue, light-magenta, light-cyan, and white.
|
||||
And {\it no-color}, the default foreground color on the display, which
|
||||
is not necessarily the same as black or white or any of the other colors.
|
||||
|
||||
Allowed attributes are none, bold, dim, underline, blink, and inverse.
|
||||
``Normal'' is a synonym for ``none''; they should not be used in
|
||||
combination with any of the other attributes.
|
||||
|
||||
To specify both a color and an attribute, use `\&' to combine them.
|
||||
To specify multiple attributes, use `+' to combine those.
|
||||
For example: {\tt magenta\&inverse+dim}.
|
||||
|
||||
Note that the display may substitute or ignore particular attributes
|
||||
depending upon its capabilities, and in general may interpret the
|
||||
attributes any way it wants.
|
||||
For example, on some display systems a request for bold might yield
|
||||
blink or vice versa.
|
||||
On others, issuing an attribute request while another is already
|
||||
set up will replace the earlier attribute rather than combine with it.
|
||||
Since nethack issues attribute requests sequentially (at least with
|
||||
the {\it tty} interface) rather than all at once, the only way a
|
||||
situation like that can be controlled is to specify just one attribute.
|
||||
|
||||
You can adjust the display of the following status fields:
|
||||
%.sd
|
||||
\begin{center}
|
||||
\begin{tabular}{lll}
|
||||
%TABLE_START
|
||||
title & strength & dexterity\\
|
||||
constitution & intelligence & wisdom\\
|
||||
charisma & alignment & score\\
|
||||
carrying-capacity & gold & power\\
|
||||
power-max & experience-level & armor-class\\
|
||||
HD & time & hunger\\
|
||||
hitpoints & hitpoints-max & dungeon-level\\
|
||||
experience & condition\\
|
||||
title & dungeon-level & experience-level\\
|
||||
strength & gold & experience\\
|
||||
dexterity & hitpoints & HD\\
|
||||
constitution & hitpoints-max & time\\
|
||||
intelligence & power & hunger\\
|
||||
wisdom & power-max & carrying-capacity\\
|
||||
charisma & armor-class & condition\\
|
||||
alignment & & score\\
|
||||
%TABLE_END Do not delete this line.
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
@@ -4764,26 +4795,11 @@ is tested; the character's name is ignored.
|
||||
%.ei
|
||||
\elist
|
||||
|
||||
%.lp ""
|
||||
Allowed colors are {\it black}, {\it red}, {\it green}, {\it brown},
|
||||
{\it blue}, {\it magenta}, {\it cyan}, {\it gray}, {\it orange},
|
||||
{\it lightgreen}, {\it yellow}, {\it lightblue}, {\it lightmagenta},
|
||||
{\it lightcyan}, and {\it white}.
|
||||
|
||||
%.lp ""
|
||||
Allowed attributes are {\it bold}, {\it inverse}, {\it underline},
|
||||
{\it blink}, {\it dim}, and {\it normal}.
|
||||
Note that the platform used may interpret the attributes any way it
|
||||
wants.
|
||||
|
||||
%.lp ""
|
||||
The in-game options menu can help you determine the correct syntax for a
|
||||
config file.
|
||||
|
||||
%.lp ""
|
||||
The whole feature can be disable by setting option {\it statushilites} to 0.
|
||||
|
||||
%.lp ""
|
||||
Example hilites:
|
||||
\begin{verbatim}
|
||||
OPTION=hilite_status: gold/up/yellow/down/brown
|
||||
|
||||
@@ -642,7 +642,9 @@ struct instance_globals {
|
||||
boolean blinit;
|
||||
boolean update_all;
|
||||
boolean valset[MAXBLSTATS];
|
||||
#ifdef STATUS_HILITES
|
||||
long bl_hilite_moves;
|
||||
#endif
|
||||
unsigned long cond_hilites[BL_ATTCLR_MAX];
|
||||
int now_or_before_idx; /* 0..1 for array[2][] first index */
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 extern.h $NHDT-Date: 1554554180 2019/04/06 12:36:20 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.699 $ */
|
||||
/* NetHack 3.6 extern.h $NHDT-Date: 1554857123 2019/04/10 00:45:23 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.700 $ */
|
||||
/* Copyright (c) Steve Creps, 1988. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -160,13 +160,13 @@ E void NDECL(max_rank_sz);
|
||||
E long NDECL(botl_score);
|
||||
#endif
|
||||
E int FDECL(describe_level, (char *));
|
||||
E void NDECL(status_eval_next_unhilite);
|
||||
E void FDECL(status_initialize, (BOOLEAN_P));
|
||||
E void NDECL(status_finish);
|
||||
E int NDECL(stat_cap_indx);
|
||||
E int NDECL(stat_hunger_indx);
|
||||
E const char *FDECL(bl_idx_to_fldname, (int));
|
||||
#ifdef STATUS_HILITES
|
||||
E void NDECL(status_eval_next_unhilite);
|
||||
E void NDECL(reset_status_hilites);
|
||||
E boolean FDECL(parse_status_hl1, (char *op, BOOLEAN_P));
|
||||
E void FDECL(status_notify_windowport, (BOOLEAN_P));
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 allmain.c $NHDT-Date: 1554591223 2019/04/06 22:53:43 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.97 $ */
|
||||
/* NetHack 3.6 allmain.c $NHDT-Date: 1554895741 2019/04/10 11:29:01 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.99 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/*-Copyright (c) Robert Patrick Rankin, 2012. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
@@ -325,7 +325,10 @@ boolean resuming;
|
||||
/* once-per-hero-took-time things go here */
|
||||
/******************************************/
|
||||
|
||||
status_eval_next_unhilite();
|
||||
#ifdef STATUS_HILITES
|
||||
if (iflags.hilite_delta)
|
||||
status_eval_next_unhilite();
|
||||
#endif
|
||||
if (g.context.bypasses)
|
||||
clear_bypasses();
|
||||
if ((u.uhave.amulet || Clairvoyant) && !In_endgame(&u.uz)
|
||||
|
||||
90
src/botl.c
90
src/botl.c
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 botl.c $NHDT-Date: 1554591223 2019/04/06 22:53:43 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.143 $ */
|
||||
/* NetHack 3.6 botl.c $NHDT-Date: 1554857126 2019/04/10 00:45:26 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.144 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/*-Copyright (c) Michael Allison, 2006. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
@@ -505,6 +505,8 @@ STATIC_VAR struct istat_s initblstats[MAXBLSTATS] = {
|
||||
#undef INIT_BLSTAT
|
||||
#undef INIT_THRESH
|
||||
|
||||
#ifdef STATUS_HILITES
|
||||
#endif
|
||||
/* we don't put this next declaration in #ifdef STATUS_HILITES.
|
||||
* In the absence of STATUS_HILITES, each array
|
||||
* element will be 0 however, and quite meaningless,
|
||||
@@ -860,51 +862,6 @@ boolean *valsetlist;
|
||||
g.update_all = FALSE;
|
||||
}
|
||||
|
||||
/* called from moveloop(); sets context.botl if temp hilites have timed out */
|
||||
void
|
||||
status_eval_next_unhilite()
|
||||
{
|
||||
int i;
|
||||
struct istat_s *curr;
|
||||
long next_unhilite, this_unhilite;
|
||||
|
||||
g.bl_hilite_moves = g.moves; /* simpllfied; used to try to encode fractional
|
||||
* amounts for multiple moves within same turn */
|
||||
/* figure out whether an unhilight needs to be performed now */
|
||||
next_unhilite = 0L;
|
||||
for (i = 0; i < MAXBLSTATS; ++i) {
|
||||
curr = &g.blstats[0][i]; /* g.blstats[0][*].time == g.blstats[1][*].time */
|
||||
|
||||
if (curr->chg) {
|
||||
struct istat_s *prev = &g.blstats[1][i];
|
||||
|
||||
#ifdef STATUS_HILITES
|
||||
if (Is_Temp_Hilite(curr->hilite_rule))
|
||||
curr->time = prev->time = (g.bl_hilite_moves
|
||||
+ iflags.hilite_delta);
|
||||
else
|
||||
curr->time = prev->time = 0L;
|
||||
#endif
|
||||
curr->chg = prev->chg = FALSE;
|
||||
g.context.botl = TRUE;
|
||||
}
|
||||
if (g.context.botl)
|
||||
continue; /* just process other g.blstats[][].time and .chg */
|
||||
|
||||
this_unhilite = curr->time;
|
||||
if (this_unhilite > 0L
|
||||
&& (next_unhilite == 0L || this_unhilite < next_unhilite)
|
||||
#ifdef STATUS_HILITES
|
||||
&& hilite_reset_needed(curr, this_unhilite + 1L)
|
||||
#endif
|
||||
) {
|
||||
next_unhilite = this_unhilite;
|
||||
if (next_unhilite < g.bl_hilite_moves)
|
||||
g.context.botl = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
status_initialize(reassessment)
|
||||
boolean reassessment; /* TRUE: just recheck fields w/o other initialization */
|
||||
@@ -1395,6 +1352,47 @@ long augmented_time;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* called from moveloop(); sets context.botl if temp hilites have timed out */
|
||||
void
|
||||
status_eval_next_unhilite()
|
||||
{
|
||||
int i;
|
||||
struct istat_s *curr;
|
||||
long next_unhilite, this_unhilite;
|
||||
|
||||
g.bl_hilite_moves = g.moves; /* simpllfied; used to try to encode fractional
|
||||
* amounts for multiple moves within same turn */
|
||||
/* figure out whether an unhilight needs to be performed now */
|
||||
next_unhilite = 0L;
|
||||
for (i = 0; i < MAXBLSTATS; ++i) {
|
||||
curr = &g.blstats[0][i]; /* g.blstats[0][*].time == g.blstats[1][*].time */
|
||||
|
||||
if (curr->chg) {
|
||||
struct istat_s *prev = &g.blstats[1][i];
|
||||
|
||||
if (Is_Temp_Hilite(curr->hilite_rule))
|
||||
curr->time = prev->time = (g.bl_hilite_moves
|
||||
+ iflags.hilite_delta);
|
||||
else
|
||||
curr->time = prev->time = 0L;
|
||||
|
||||
curr->chg = prev->chg = FALSE;
|
||||
g.context.botl = TRUE;
|
||||
}
|
||||
if (g.context.botl)
|
||||
continue; /* just process other g.blstats[][].time and .chg */
|
||||
|
||||
this_unhilite = curr->time;
|
||||
if (this_unhilite > 0L
|
||||
&& (next_unhilite == 0L || this_unhilite < next_unhilite)
|
||||
&& hilite_reset_needed(curr, this_unhilite + 1L)) {
|
||||
next_unhilite = this_unhilite;
|
||||
if (next_unhilite < g.bl_hilite_moves)
|
||||
g.context.botl = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* called by options handling when 'statushilites' boolean is toggled */
|
||||
void
|
||||
reset_status_hilites()
|
||||
|
||||
@@ -218,7 +218,9 @@ const struct instance_globals g_init = {
|
||||
FALSE, /* blinit */
|
||||
FALSE, /* update_all */
|
||||
UNDEFINED_VALUES, /* valset */
|
||||
#ifdef STATUS_HILITES
|
||||
0, /* bl_hilite_moves */
|
||||
#endif
|
||||
UNDEFINED_VALUES, /* cond_hilites */
|
||||
0, /* now_or_before_idx */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user