Merge remote-tracking branch 'origin/NetHack-3.6.0'

This commit is contained in:
keni
2017-10-01 17:19:23 -04:00
53 changed files with 3458 additions and 1640 deletions

View File

@@ -2567,6 +2567,9 @@ The behavior of this option depends on the type of windowing you use.
In text windowing, text highlighting or inverse video is often used;
with tiles, generally displays a small plus-symbol beside the object
on the top of the pile.
.lp hitpointbar
Show a hit point bar graph behind your name and title.
Only available for TTY and Windows GUI, and only when statushilites is on.
.lp horsename
Name your starting horse (ex. ``horsename:Trigger'').
Cannot be set with the `O' command.
@@ -2910,7 +2913,8 @@ attack to which it is resistant (default on). Persistent.
.lp standout
Boldface monsters and ``\fB--More--\fP'' (default off). Persistent.
.lp statushilites
Enable coloring of status fields (default off).
Controls how many turns status hilite behaviors highlight
the field. If negated or set to zero, disables status hiliting.
See ``Configuring Status Hilites'' for further information.
.lp status_updates
Allow updates to the status lines at the bottom of the screen (default true).
@@ -3479,17 +3483,22 @@ Your copy of NetHack may have been compiled with support for ``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:
.si
.lp "OPTION=hilite_status: field-name/behavior/color&attributes"
.ei
.pg
For example, the following line in your config 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"
.lp "OPTION=hilite_status: hitpoints/<30%/red/normal"
.ei
.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/updown/red/green"
.lp "OPTION=hilite_status: wisdom/down/red/up/green"
.ei
.pg
You can adjust the display of the following status fields:
@@ -3508,18 +3517,73 @@ experience condition
.\"TABLE_END Do not delete this line.
.TE
.lp ""
The pseudo-field `characteristics' can be used to set all six
of Str, Dex, Con, Int, Wis, and Cha at once. `HD' is `hit dice',
an approximation of experience level displayed when polymorphed.
`experience', `time', and `score' are conditionally displayed
depending upon your other option settings.
.lp ""
Instead of a behavior, `condition' takes the following condition flags:
stone, slime, strngl, foodpois, termill, blind, deaf, stun, conf, hallu,
lev, fly, and ride. You can use `major_troubles' as an alias
for stone through termill, `minor_troubles' for blind through hallu,
`movement' for lev, fly, and ride, and `all' for every condition.
.lp ""
Allowed behaviors are "always", "up", "down", "changed", a
percentage or absolute number threshold, or a text to match against.
.si
.lp "*"
"always" will set the default attributes for that field.
.lp "*"
"up" and "down" set the field attributes for when the field
value changes upwards or downwards. This attribute times out after
statushilites turns.
.lp "*"
"changed" sets the field attribute for when the field value
changes. This attribute times out after statushilites turns.
.lp "*"
percentage sets the field attribute when the field value
matches the percentage. If the percentage is prefixed with '<'
or '>', it also matches when value is below or above the percentage.
Only valid for `power' and `hitpoints' fields.
.lp "*"
absolute value sets the attribute when the field value
matches that number. If the number is prefixed with '<'
or '>', it also matches when value is below or above.
.lp "*"
text match sets the attribute when the field value
matches the text. Text matches can only be used for `alignment',
`carrying-capacity', and `dungeon-level'.
.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, normal.
Allowed attributes are bold, inverse, underline, blink, dim, and normal.
Note that the platform used may interpret the attributes any way it
wants.
.lp ""
Behaviours can occur based on percentage thresholds, updown, or absolute values.
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 off.
The whole feature can be disabled by setting option
statushilites to 0.
.lp ""
Example hilites:
.sd
.si
OPTION=hilite_status: gold/up/yellow/down/brown
OPTION=hilite_status: characteristics/up/green/down/red
OPTION=hilite_status: hitpoints/100%/gray&normal
OPTION=hilite_status: hitpoints/<100%/green&normal
OPTION=hilite_status: hitpoints/<66%/yellow&normal
OPTION=hilite_status: hitpoints/<50%/orange&normal
OPTION=hilite_status: hitpoints/<33%/red&bold
OPTION=hilite_status: hitpoints/<15%/red&inverse
OPTION=hilite_status: condition/major/orange&inverse
OPTION=hilite_status: condition/lev+fly/red&inverse
.ei
.ed
.pg
.hn 2
Modifying NetHack Symbols

View File

@@ -3141,6 +3141,10 @@ on the top of the pile.
Name your starting horse (ex.\ ``{\tt horsename:Trigger}'').
Cannot be set with the `{\tt O}' command.
%.lp
\item[\ib{hitpointbar}]
Show a hit point bar graph behind your name and title.
Only available for TTY and Windows GUI, and only when statushilites is on.
%.lp
\item[\ib{ignintr}]
Ignore interrupt signals, including breaks (default off). Persistent.
%.lp
@@ -3535,7 +3539,8 @@ attack to which it is resistant (default on). Persistent.
Boldface monsters and ``{\tt --More--}'' (default off). Persistent.
%.lp
\item[\ib{statushilites}]
Enable coloring of status fields (default off).
Controls how many turns status hilite behaviors highlight
the field. If negated or set to zero, disables status hiliting.
See ``{\it Configuring Status Hilites\/}'' for further information.
%.lp
\item[\ib{status\verb+_+updates}]
@@ -4271,18 +4276,23 @@ The pattern should be a regular expression.
Your copy of 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:
\begin{verbatim}
OPTION=hilite_status: field-name/behavior/color&attributes
\end{verbatim}
%.pg
For example, the following line in your config file will cause
the hitpoints field to display in the color red if your hitpoints
drop to or below a threshold of 30%:
\begin{verbatim}
OPTION=hilite_status: hitpoints/30%/red/normal
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.
\begin{verbatim}
OPTION=hilite_status: wisdom/updown/red/green
OPTION=hilite_status: wisdom/down/red/up/green
\end{verbatim}
You can adjust the display of the following status fields:
%.sd
@@ -4301,6 +4311,56 @@ experience & condition\\
\end{tabular}
\end{center}
%.ed
%.lp ""
The pseudo-field `characteristics' can be used to set all six
of Str, Dex, Con, Int, Wis, and Cha at once. `HD' is `hit dice',
an approximation of experience level displayed when polymorphed.
`experience', `time', and `score' are conditionally displayed
depending upon your other option settings.
%.lp ""
Instead of a behavior, `condition' takes the following condition flags:
{\it stone}, {\it slime}, {\it strngl}, {\it foodpois}, {\it termill},
{\it blind}, {\it deaf}, {\it stun}, {\it conf}, {\it hallu},
{\it lev}, {\it fly}, and {\it ride}. You can use `major\_troubles' as an alias
for stone through termill, `minor\_troubles' for blind through hallu,
`movement' for lev, fly, and ride, and `all' for every condition.
%.lp ""
Allowed behaviors are "always", "up", "down", "changed", a
percentage or absolute number threshold, or a text to match against.
\blist{}
%.lp "*"
\item{\bb{}}
"always" will set the default attributes for that field.
%.lp "*"
\item{\bb{}}
"up" and "down" set the field attributes for when the field
value changes upwards or downwards. This attribute times out after
statushilites turns.
%.lp "*"
\item{\bb{}}
"changed" sets the field attribute for when the field value
changes. This attribute times out after statushilites turns.
%.lp "*"
\item{\bb{}}
percentage sets the field attribute when the field value
matches the percentage. If the percentage is prefixed with `{\tt <}'
or `{\tt >}', it also matches when value is below or above the percentage.
Only valid for `power' and `hitpoints' fields.
%.lp "*"
\item{\bb{}}
absolute value sets the attribute when the field value
matches that number. If the number is prefixed with `{\tt <}'
or `{\tt >}', it also matches when value is below or above.
%.lp "*"
\item{\bb{}}
text match sets the attribute when the field value
matches the text. Text matches can only be used for `alignment',
`carrying-capacity', and `dungeon-level'.
%.ei
\elist
%.lp ""
Allowed colors are {\it black}, {\it red}, {\it green}, {\it brown},
@@ -4309,12 +4369,32 @@ Allowed colors are {\it black}, {\it red}, {\it green}, {\it brown},
{\it lightcyan}, and {\it white}.
%.lp ""
Behaviours can occur based on percentage thresholds, updown, or absolute values.
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} off.
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
OPTION=hilite_status: characteristics/up/green/down/red
OPTION=hilite_status: hitpoints/100%/gray&normal
OPTION=hilite_status: hitpoints/<100%/green&normal
OPTION=hilite_status: hitpoints/<66%/yellow&normal
OPTION=hilite_status: hitpoints/<50%/orange&normal
OPTION=hilite_status: hitpoints/<33%/red&bold
OPTION=hilite_status: hitpoints/<15%/red&inverse
OPTION=hilite_status: condition/major/orange&inverse
OPTION=hilite_status: condition/lev+fly/red&inverse
\end{verbatim}
%.lp
%.hn 2

View File

@@ -443,9 +443,16 @@ fix buffer overflow in wizard mode for '#' command when 'extmenu' option is on
"you suddenly vomit" was given two turns before actually vomiting, so you
could get that message, move a bit, then get "you can move again"
after the 2 turn freeze applied along with the actual vomit
fix mention_walls reporting secret doors as solid walls
corpses and other flammable items not subject to direct burning or fire-based
erosion which were thrown or dropped into lava remained intact
if a potion on the floor survived a land mine explosion and got propelled at
the hero, it didn't behave like a potion if it hit
adjust candelabrum's weight when candles are attached
when lit candelabrum burned out, persistent inventory window showed that it
was no longer lit but still showed phantom candles attached
improve hilite_status, allowing multiple stops per field, and temporarily or
permanently hilited fields
give feedback when released from a bear trap
Fixes to Post-3.6.0 Problems that Were Exposed Via git Repository
@@ -502,6 +509,7 @@ hero poly'd into vampire could drain monster down to 0 HP without killing it,
triggering impossible "dmonsfree: 1 removed doesn't match 0 pending"
"you observe a fog cloud where a vampire/bat was" if an unseen vampire on the
far side of a closed door shifted shape to pass under that door
fix mention_walls reporting secret doors as solid stone
Platform- and/or Interface-Specific Fixes
@@ -666,6 +674,7 @@ new paranoid_confirm settings: wand-break to require "yes" rather than 'y'
than 'y' when hero inflicted with lycanthropy has polymorph control
option force_invmenu to make commands asking for inventory items always
use a menu instead of a text line query
option hitpointbar to show a bar graph of hit points behind title field
Platform- and/or Interface-Specific New Features

View File

@@ -401,7 +401,7 @@ status_enablefield(int fldindex, char fldname, char fieldfmt, boolean enable)
BL_XP, BL_AC, BL_HD, BL_TIME, BL_HUNGER, BL_HP, BL_HPMAX,
BL_LEVELDESC, BL_EXP, BL_CONDITION
-- There are MAXBLSTATS status fields (from botl.h)
status_update(int fldindex, genericptr_t ptr, int chg, int percentage)
status_update(int fldindex, genericptr_t ptr, int chg, int percentage, int color, long *colormasks)
-- update the value of a status field.
-- the fldindex identifies which field is changing and
is an integer index value from botl.h
@@ -417,58 +417,124 @@ status_update(int fldindex, genericptr_t ptr, int chg, int percentage)
-- ptr is usually a "char *", unless fldindex is BL_CONDITION.
If fldindex is BL_CONDITION, then ptr is a long value with
any or none of the following bits set (from botl.h):
BL_MASK_BLIND 0x00000001L
BL_MASK_CONF 0x00000002L
BL_MASK_FOODPOIS 0x00000004L
BL_MASK_ILL 0x00000008L
BL_MASK_HALLU 0x00000010L
BL_MASK_STUNNED 0x00000020L
BL_MASK_SLIMED 0x00000040L
BL_MASK_STONE 0x00000001L
BL_MASK_SLIME 0x00000002L
BL_MASK_STRNGL 0x00000004L
BL_MASK_FOODPOIS 0x00000008L
BL_MASK_TERMILL 0x00000010L
BL_MASK_BLIND 0x00000020L
BL_MASK_DEAF 0x00000040L
BL_MASK_STUN 0x00000080L
BL_MASK_CONF 0x00000100L
BL_MASK_HALLU 0x00000200L
BL_MASK_LEV 0x00000400L
BL_MASK_FLY 0x00000800L
BL_MASK_RIDE 0x00001000L
-- The value passed for BL_GOLD includes a leading
symbol for GOLD "$:nnn". If the window port needs to use
the textual gold amount without the leading "$:" the port
will have to add 2 to the passed "ptr" for the BL_GOLD case.
-- color is an unsigned int.
int & 0x00FF = color CLR_*
int >> 8 = attribute (if any)
This contains the color and attribute that the field should
be displayed in.
This is relevant for everything except BL_CONDITION fldindex.
If fldindex is BL_CONDITION, this parameter should be ignored,
as condition hilighting is done via the next colormasks
parameter instead.
-- colormasks - pointer to cond_hilites[] array of colormasks.
Only relevant for BL_CONDITION fldindex. The window port
should ignore this parameter for other fldindex values.
Each condition bit must only ever appear in one of the
CLR_ array members, but can appear in multiple HL_ATTCLR_
offsets (because more than one attribute can co-exist).
For the user's chosen set of BL_MASK_ condition bits,
They are stored internally in the cond_hilites[] array,
at the array offset aligned to the color those condtion
bits should display in.
For example, if the user has chosen to display strngl
and stone and termill in red and inverse,
BL_MASK_SLIME 0x00000002
BL_MASK_STRNGL 0x00000004
BL_MASK_TERMILL 0x00000010
The bitmask corresponding to those conditions is
0x00000016 (or 00010110 in binary) and the color
is at offset 1 (CLR_RED).
Here is how that is stored in the cond_hilites[] array:
+------+----------------------+--------------------+
|array | | |
|offset| macro for indexing | bitmask |
|------+----------------------+--------------------+
| 0 | CLR_BLACK | |
+------+----------------------+--------------------+
| 1 | CLR_RED | 00010110 |
+------+----------------------+--------------------+
| 2 | CLR_GREEN | |
+------+----------------------+--------------------+
| 3 | CLR_BROWN | |
+------+----------------------+--------------------+
| 4 | CLR_BLUE | |
+------+----------------------+--------------------+
| 5 | CLR_MAGENTA | |
+------+----------------------+--------------------+
| 6 | CLR_CYAN | |
+------+----------------------+--------------------+
| 7 | CLR_GRAY | |
+------+----------------------+--------------------+
| 8 | NO_COLOR | |
+------+----------------------+--------------------+
| 9 | CLR_ORANGE | |
+------+----------------------+--------------------+
| 10 | CLR_BRIGHT_GREEN | |
+------+----------------------+--------------------+
| 11 | CLR_BRIGHT_YELLOW | |
+------+----------------------+--------------------+
| 12 | CLR_BRIGHT_BLUE | |
+------+----------------------+--------------------+
| 13 | CLR_BRIGHT_MAGENTA | |
+------+----------------------+--------------------+
| 14 | CLR_BRIGHT_CYAN | |
+------+----------------------+--------------------+
| 15 | CLR_WHITE | |
+------+----------------------+--------------------+
| 16 | HL_ATTCLR_DIM | | CLR_MAX
+------+----------------------+--------------------+
| 17 | HL_ATTCLR_BLINK | |
+------+----------------------+--------------------+
| 18 | HL_ATTCLR_ULINE | |
+------+----------------------+--------------------+
| 19 | HL_ATTCLR_INVERSE | 00010110 |
+------+----------------------+--------------------+
| 20 | HL_ATTCLR_BOLD | |
+------+----------------------+--------------------+
| 21 | beyond array boundary | BL_ATTCLR_MAX
The window port can AND (&) the bits passed in the
ptr argument to status_update() with any non-zero
entries in the cond_hilites[] array to determine
the color and attributes for displaying the
condition on the screen for the user.
If the bit for a particular condition does not
appear in any of the cond_hilites[] array offsets,
that condition should be displayed in the default
color and attributes.
status_finish() -- called when it is time for the window port to tear down
the status display and free allocated memory, etc.
status_threshold(int fldidx, int threshholdtype, anything threshold,
int behavior, int under, int over)
-- called when a hiliting preference is added, changed, or
removed.
-- the fldindex identifies which field is having its hiliting
preference set. It is an integer index value from botl.h
-- fldindex could be any one of the following from botl.h:
BL_TITLE, BL_STR, BL_DX, BL_CO, BL_IN, BL_WI, BL_CH,
BL_ALIGN, BL_SCORE, BL_CAP, BL_GOLD, BL_ENE, BL_ENEMAX,
BL_XP, BL_AC, BL_HD, BL_TIME, BL_HUNGER, BL_HP, BL_HPMAX,
BL_LEVELDESC, BL_EXP, BL_CONDITION
-- datatype is P_INT, P_UINT, P_LONG, or P_MASK.
-- threshold is an "anything" union which can contain the
datatype value.
-- behavior is used to define how threshold is used and can
be BL_TH_NONE, BL_TH_VAL_PERCENTAGE, BL_TH_VAL_ABSOLUTE,
or BL_TH_UPDOWN. BL_TH_NONE means don't do anything above
or below the threshold. BL_TH_VAL_PERCENTAGE treats the
threshold value as a precentage of the maximum possible
value. BL_TH_VAL_ABSOLUTE means that the threshold is an
actual value. BL_TH_UPDOWN means that threshold is not
used, and the two below/above hilite values indicate how
to display something going down (under) or rising (over).
-- under is the hilite attribute used if value is below the
threshold. The attribute can be BL_HILITE_NONE,
BL_HILITE_INVERSE, BL_HILITE_BOLD (-1, -2, or -3), or one
of the color indexes of CLR_BLACK, CLR_RED, CLR_GREEN,
CLR_BROWN, CLR_BLUE, CLR_MAGENTA, CLR_CYAN, CLR_GRAY,
CLR_ORANGE, CLR_BRIGHT_GREEN, CLR_YELLOW, CLR_BRIGHT_BLUE,
CLR_BRIGHT_MAGENTA, CLR_BRIGHT_CYAN, or CLR_WHITE (0 - 15).
-- over is the hilite attribute used if value is at or above
the threshold. The attribute can be BL_HILITE_NONE,
BL_HILITE_INVERSE, BL_HILITE_BOLD (-1, -2, or -3), or one
of the color indexes of CLR_BLACK, CLR_RED, CLR_GREEN,
CLR_BROWN, CLR_BLUE, CLR_MAGENTA, CLR_CYAN, CLR_GRAY,
CLR_ORANGE, CLR_BRIGHT_GREEN, CLR_YELLOW, CLR_BRIGHT_BLUE,
CLR_BRIGHT_MAGENTA, CLR_BRIGHT_CYAN, or CLR_WHITE (0 - 15).
E. Misc. Routines
@@ -703,6 +769,7 @@ to support:
| softkeyboard | WC2_SOFTKEYBOARD | wc2_softkeyboard |boolean |
| wraptext | WC2_WRAPTEXT | wc2_wraptext |boolean |
| selectsaved | WC2_SELECTSAVED | wc2_selectsaved |boolean |
| hitpointbar | WC2_HITPOINTBAR | wc2_hitpointbar |boolean |
+--------------------+--------------------+--------------------+--------+
align_message -- where to place message window (top, bottom, left, right)
@@ -723,6 +790,7 @@ font_status -- port should use a font by this name for status display.
font_text -- port should use a font by this name for text windows.
fullscreen -- port should try to use the whole screen.
hilite_pet -- port should mark pets in some special way on the map.
hitpointbar -- port should show a graphical bar representing hit points
map_mode -- port should display the map in the manner specified.
player_selection
-- dialog or prompts for choosing character.