Merge branch 'NetHack-3.6.2'
This commit is contained in:
+1
-1
@@ -219,7 +219,7 @@ On behalf of the NetHack community, thank you very much once again to
|
|||||||
M. Drew Streib and Pasi Kallinen for providing a public NetHack server
|
M. Drew Streib and Pasi Kallinen for providing a public NetHack server
|
||||||
at nethack.alt.org. Thanks to Keith Simpson and Andy Thomson for
|
at nethack.alt.org. Thanks to Keith Simpson and Andy Thomson for
|
||||||
hardfought.org. Thanks to all those unnamed dungeoneers who invest their
|
hardfought.org. Thanks to all those unnamed dungeoneers who invest their
|
||||||
time and effort into annual NetHack tournaments such as Junehack
|
time and effort into annual NetHack tournaments such as Junethack
|
||||||
and in days past, devnull.net (gone for now, but not forgotten).
|
and in days past, devnull.net (gone for now, but not forgotten).
|
||||||
|
|
||||||
- - - - - - - - - -
|
- - - - - - - - - -
|
||||||
|
|||||||
+4
-1
@@ -11,7 +11,6 @@ Debug-Mode Quick Reference:
|
|||||||
|
|
||||||
#levelchange == set hero's experience level
|
#levelchange == set hero's experience level
|
||||||
#lightsources == show mobile light sources
|
#lightsources == show mobile light sources
|
||||||
#monpolycontrol == control monster polymorphs
|
|
||||||
#panic == panic test (warning: current game will be terminated)
|
#panic == panic test (warning: current game will be terminated)
|
||||||
#polyself == polymorph self
|
#polyself == polymorph self
|
||||||
#seenv == show seen vectors
|
#seenv == show seen vectors
|
||||||
@@ -27,3 +26,7 @@ Debug-Mode Quick Reference:
|
|||||||
#wizwhere == show dungeon placement of all special levels
|
#wizwhere == show dungeon placement of all special levels
|
||||||
#wmode == show wall modes
|
#wmode == show wall modes
|
||||||
|
|
||||||
|
Options:
|
||||||
|
monpolycontrol == prompt for new form whenever any monster changes shape
|
||||||
|
sanity_check == evaluate monsters, objects, and map prior to each turn
|
||||||
|
wizweight == augment object descriptions with their objects' weight
|
||||||
|
|||||||
+19
-11
@@ -21,7 +21,7 @@
|
|||||||
.ds vr "NetHack 3.6
|
.ds vr "NetHack 3.6
|
||||||
.ds f0 "\*(vr
|
.ds f0 "\*(vr
|
||||||
.ds f1
|
.ds f1
|
||||||
.ds f2 "August 30, 2018
|
.ds f2 "September 26, 2018
|
||||||
.
|
.
|
||||||
.\" labeled paragraph start (should be part of tmac.n, but I don't want to
|
.\" labeled paragraph start (should be part of tmac.n, but I don't want to
|
||||||
.\" make changes to that file)
|
.\" make changes to that file)
|
||||||
@@ -1121,10 +1121,6 @@ and go directly to removing a saddle.
|
|||||||
Default key is 'M-l', and 'l' if
|
Default key is 'M-l', and 'l' if
|
||||||
.op number_pad
|
.op number_pad
|
||||||
is on.
|
is on.
|
||||||
.lp #monpolycontrol
|
|
||||||
Control monster polymorphs.
|
|
||||||
Autocompletes.
|
|
||||||
Debug mode only.
|
|
||||||
.lp #monster
|
.lp #monster
|
||||||
Use a monster's special ability (when polymorphed into monster form).
|
Use a monster's special ability (when polymorphed into monster form).
|
||||||
Autocompletes. Default key is 'M-m'.
|
Autocompletes. Default key is 'M-m'.
|
||||||
@@ -1316,14 +1312,10 @@ Show what type of thing a symbol corresponds to. Default key is '/'.
|
|||||||
Wield a weapon. Default key is 'w'.
|
Wield a weapon. Default key is 'w'.
|
||||||
.lp #wipe
|
.lp #wipe
|
||||||
Wipe off your face. Autocompletes. Default key is 'M-w'.
|
Wipe off your face. Autocompletes. Default key is 'M-w'.
|
||||||
.lp #wizdebug_bury
|
.lp #wizbury
|
||||||
Bury objects under and around you.
|
Bury objects under and around you.
|
||||||
Autocompletes.
|
Autocompletes.
|
||||||
Debug mode only.
|
Debug mode only.
|
||||||
.lp #wizdebug_traveldisplay
|
|
||||||
Toggle travel display.
|
|
||||||
Autocompletes.
|
|
||||||
Debug mode only.
|
|
||||||
.lp #wizdetect
|
.lp #wizdetect
|
||||||
Search for hidden things (secret doors or traps or unseen monsters)
|
Search for hidden things (secret doors or traps or unseen monsters)
|
||||||
within a modest radius.
|
within a modest radius.
|
||||||
@@ -2895,6 +2887,13 @@ Default '.'.
|
|||||||
Menu character accelerator to select all items on this page of a menu.
|
Menu character accelerator to select all items on this page of a menu.
|
||||||
Implemented by the Amiga, Gem and tty ports.
|
Implemented by the Amiga, Gem and tty ports.
|
||||||
Default ','.
|
Default ','.
|
||||||
|
." .lp menu_tab_sep
|
||||||
|
." Format menu entries using TAB to separate columns (default off).
|
||||||
|
." Only applicable to some menus, and only useful to some interfaces.
|
||||||
|
." Debug mode only.
|
||||||
|
.lp monpolycontrol
|
||||||
|
Prompt for new form whenever any monster changes shape (default off).
|
||||||
|
Debug mode only.
|
||||||
.lp msghistory
|
.lp msghistory
|
||||||
The number of top line messages to save (and recall with ^P) (default 20).
|
The number of top line messages to save (and recall with ^P) (default 20).
|
||||||
Cannot be set with the `O' command.
|
Cannot be set with the `O' command.
|
||||||
@@ -3100,6 +3099,9 @@ used `teleport' only. Whether or not the effect is noticeable will
|
|||||||
depend upon the window port used or on the type of terminal. Persistent.
|
depend upon the window port used or on the type of terminal. Persistent.
|
||||||
.lp safe_pet
|
.lp safe_pet
|
||||||
Prevent you from (knowingly) attacking your pets (default on). Persistent.
|
Prevent you from (knowingly) attacking your pets (default on). Persistent.
|
||||||
|
.lp sanity_check
|
||||||
|
Evaluate monsters, objects, and map prior to each turn (default off).
|
||||||
|
Debug mode only.
|
||||||
.lp scores
|
.lp scores
|
||||||
Control what parts of the score list you are shown at the end (ex.
|
Control what parts of the score list you are shown at the end (ex.
|
||||||
``scores:5 top scores/4 around my score/own scores''). Only the first
|
``scores:5 top scores/4 around my score/own scores''). Only the first
|
||||||
@@ -3172,6 +3174,9 @@ the score list around after game end on a terminal or emulating window.
|
|||||||
Allow the travel command (default on). Turning this option off will
|
Allow the travel command (default on). Turning this option off will
|
||||||
prevent the game from attempting unintended moves if you make inadvertent
|
prevent the game from attempting unintended moves if you make inadvertent
|
||||||
mouse clicks on the map window. Persistent.
|
mouse clicks on the map window. Persistent.
|
||||||
|
." .lp travel_debug
|
||||||
|
." Display intended path during each step of travel (default off).
|
||||||
|
." Debug mode only.
|
||||||
.lp verbose
|
.lp verbose
|
||||||
Provide more commentary during the game (default on). Persistent.
|
Provide more commentary during the game (default on). Persistent.
|
||||||
.lp whatis_coord
|
.lp whatis_coord
|
||||||
@@ -3227,6 +3232,9 @@ move by skipping the same glyphs.
|
|||||||
Select which windowing system to use, such as ``tty'' or ``X11''
|
Select which windowing system to use, such as ``tty'' or ``X11''
|
||||||
(default depends on version).
|
(default depends on version).
|
||||||
Cannot be set with the `O' command.
|
Cannot be set with the `O' command.
|
||||||
|
.lp wizweight
|
||||||
|
Augment object descriptions with their objects' weight (default off).
|
||||||
|
Debug mode only.
|
||||||
.lp zerocomp
|
.lp zerocomp
|
||||||
When writing out a save file, perform zero-comp compression of the
|
When writing out a save file, perform zero-comp compression of the
|
||||||
contents. Not all ports support zero-comp compression. It has no effect
|
contents. Not all ports support zero-comp compression. It has no effect
|
||||||
@@ -4597,7 +4605,7 @@ again to \fBM. Drew Streib\fP and \fBPasi Kallinen\fP for providing a
|
|||||||
public NetHack server at nethack.alt.org. Thanks to \fBKeith Simpson\fP
|
public NetHack server at nethack.alt.org. Thanks to \fBKeith Simpson\fP
|
||||||
and \fBAndy Thomson\fP for hardfought.org. Thanks to all those
|
and \fBAndy Thomson\fP for hardfought.org. Thanks to all those
|
||||||
unnamed dungeoneers who invest their time and effort into annual
|
unnamed dungeoneers who invest their time and effort into annual
|
||||||
NetHack tournaments such as Junehack and in days past,
|
NetHack tournaments such as Junethack and in days past,
|
||||||
devnull.net (gone for now, but not forgotten).
|
devnull.net (gone for now, but not forgotten).
|
||||||
.pg
|
.pg
|
||||||
.ce
|
.ce
|
||||||
|
|||||||
+23
-12
@@ -45,7 +45,7 @@
|
|||||||
%.au
|
%.au
|
||||||
\author{Original version - Eric S. Raymond\\
|
\author{Original version - Eric S. Raymond\\
|
||||||
(Edited and expanded for 3.6 by Mike Stephenson and others)}
|
(Edited and expanded for 3.6 by Mike Stephenson and others)}
|
||||||
\date{August 30, 2018}
|
\date{September 26, 2018}
|
||||||
|
|
||||||
\maketitle
|
\maketitle
|
||||||
|
|
||||||
@@ -1244,11 +1244,6 @@ Default key is '{\tt M-l}', and '{\tt l}' if {\it number\verb+_+pad\/} is on.
|
|||||||
Precede with the `{\tt m}' prefix to skip containers at your location
|
Precede with the `{\tt m}' prefix to skip containers at your location
|
||||||
and go directly to removing a saddle.
|
and go directly to removing a saddle.
|
||||||
%.lp
|
%.lp
|
||||||
\item[\tb{\#monpolycontrol}]
|
|
||||||
Control monster polymorphs.
|
|
||||||
Autocompletes.
|
|
||||||
Debug mode only.
|
|
||||||
%.lp
|
|
||||||
\item[\tb{\#monster}]
|
\item[\tb{\#monster}]
|
||||||
Use a monster's special ability (when polymorphed into monster form).
|
Use a monster's special ability (when polymorphed into monster form).
|
||||||
Autocompletes. Default key is '{\tt M-m}'.
|
Autocompletes. Default key is '{\tt M-m}'.
|
||||||
@@ -1494,16 +1489,11 @@ Wield a weapon. Default key is '{\tt w}'.
|
|||||||
\item[\tb{\#wipe}]
|
\item[\tb{\#wipe}]
|
||||||
Wipe off your face. Autocompletes. Default key is '{\tt M-w}'.
|
Wipe off your face. Autocompletes. Default key is '{\tt M-w}'.
|
||||||
%.lp
|
%.lp
|
||||||
\item[\tb{\#wizdebug\verb+_+bury}]
|
\item[\tb{\#wizbury}]
|
||||||
Bury objects under and around you.
|
Bury objects under and around you.
|
||||||
Autocompletes.
|
Autocompletes.
|
||||||
Debug mode only.
|
Debug mode only.
|
||||||
%.lp
|
%.lp
|
||||||
\item[\tb{\#wizdebug\verb+_+traveldisplay}]
|
|
||||||
Toggle travel display.
|
|
||||||
Autocompletes.
|
|
||||||
Debug mode only.
|
|
||||||
%.lp
|
|
||||||
\item[\tb{\#wizdetect}]
|
\item[\tb{\#wizdetect}]
|
||||||
Search for hidden things (secret doors or traps or unseen monsters)
|
Search for hidden things (secret doors or traps or unseen monsters)
|
||||||
within a modest radius.
|
within a modest radius.
|
||||||
@@ -3370,6 +3360,15 @@ Default `.'.
|
|||||||
Menu character accelerator to select all items on this page of a menu.
|
Menu character accelerator to select all items on this page of a menu.
|
||||||
Implemented by the Amiga, Gem and tty ports.
|
Implemented by the Amiga, Gem and tty ports.
|
||||||
Default `,'.
|
Default `,'.
|
||||||
|
% %.lp
|
||||||
|
% \item[\ib{menu\verb+_+tab\verb+_+sep}]
|
||||||
|
% Format menu entries using TAB to separate columns (default off).
|
||||||
|
% Only applicable to some menus, and only useful to some interfaces.
|
||||||
|
% Debug mode only.
|
||||||
|
%.lp
|
||||||
|
\item[\ib{monpolycontrol}]
|
||||||
|
Prompt for new form whenever any monster changes shape (default off).
|
||||||
|
Debug mode only.
|
||||||
%.lp
|
%.lp
|
||||||
\item[\ib{msghistory}]
|
\item[\ib{msghistory}]
|
||||||
The number of top line messages to save (and recall with `{\tt \^{}P}')
|
The number of top line messages to save (and recall with `{\tt \^{}P}')
|
||||||
@@ -3608,6 +3607,10 @@ depend upon the window port used or on the type of terminal. Persistent.
|
|||||||
%.lp
|
%.lp
|
||||||
\item[\ib{safe\verb+_+pet}]
|
\item[\ib{safe\verb+_+pet}]
|
||||||
Prevent you from (knowingly) attacking your pets (default on). Persistent.
|
Prevent you from (knowingly) attacking your pets (default on). Persistent.
|
||||||
|
%+.lp
|
||||||
|
\item[\ib{sanity\verb+_+check}]
|
||||||
|
+Evaluate monsters, objects, and map prior to each turn (default off).
|
||||||
|
+Debug mode only.
|
||||||
%.lp
|
%.lp
|
||||||
\item[\ib{scores}]
|
\item[\ib{scores}]
|
||||||
Control what parts of the score list you are shown at the end (ex.\
|
Control what parts of the score list you are shown at the end (ex.\
|
||||||
@@ -3698,6 +3701,10 @@ the score list around after game end on a terminal or emulating window.
|
|||||||
Allow the travel command (default on). Turning this option off will
|
Allow the travel command (default on). Turning this option off will
|
||||||
prevent the game from attempting unintended moves if you make inadvertent
|
prevent the game from attempting unintended moves if you make inadvertent
|
||||||
mouse clicks on the map window. Persistent.
|
mouse clicks on the map window. Persistent.
|
||||||
|
% %.lp
|
||||||
|
% \item[ib{travel\verb+_+debug}]
|
||||||
|
% Display intended path during each step of travel (default off).
|
||||||
|
% Debug mode only.
|
||||||
%.lp
|
%.lp
|
||||||
\item[\ib{verbose}]
|
\item[\ib{verbose}]
|
||||||
Provide more commentary during the game (default on). Persistent.
|
Provide more commentary during the game (default on). Persistent.
|
||||||
@@ -3766,6 +3773,10 @@ Select which windowing system to use, such as ``{\tt tty}'' or ``{\tt X11}''
|
|||||||
(default depends on version).
|
(default depends on version).
|
||||||
Cannot be set with the `{\tt O}' command.
|
Cannot be set with the `{\tt O}' command.
|
||||||
%.lp
|
%.lp
|
||||||
|
\item[\ib{wizweight}]
|
||||||
|
Augment object descriptions with their objects' weight (default off).
|
||||||
|
Debug mode only.
|
||||||
|
%.lp
|
||||||
\item[\ib{zerocomp}]
|
\item[\ib{zerocomp}]
|
||||||
When writing out a save file, perform zero-comp compression of the
|
When writing out a save file, perform zero-comp compression of the
|
||||||
contents. Not all ports support zero-comp compression. It has no effect
|
contents. Not all ports support zero-comp compression. It has no effect
|
||||||
|
|||||||
+1
-1
@@ -5731,7 +5731,7 @@
|
|||||||
NetHack server at nethack.alt.org. Thanks to Keith Simpson and
|
NetHack server at nethack.alt.org. Thanks to Keith Simpson and
|
||||||
Andy Thomson for hardfought.org. Thanks to all those unnamed dun-
|
Andy Thomson for hardfought.org. Thanks to all those unnamed dun-
|
||||||
geoneers who invest their time and effort into annual NetHack
|
geoneers who invest their time and effort into annual NetHack
|
||||||
tournaments such as Junehack and in days past, devnull.net (gone
|
tournaments such as Junethack and in days past, devnull.net (gone
|
||||||
for now, but not forgotten).
|
for now, but not forgotten).
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -168,6 +168,8 @@ tty: turn off an optimization that is the suspected cause of Windows reported
|
|||||||
tty: ensure that current status fields are always copied to prior status
|
tty: ensure that current status fields are always copied to prior status
|
||||||
values so that comparisons are correct
|
values so that comparisons are correct
|
||||||
tty: fix an out of bounds error in tty_status_update() for BL_HUNGER case
|
tty: fix an out of bounds error in tty_status_update() for BL_HUNGER case
|
||||||
|
tty: fix leftover display artifact when last field on the row got smaller
|
||||||
|
and optimize so only the right-most field requires the cleanup code
|
||||||
X11: its use of genl_status_update exposed a negative index use that could
|
X11: its use of genl_status_update exposed a negative index use that could
|
||||||
lead to a segfault
|
lead to a segfault
|
||||||
|
|
||||||
@@ -229,6 +231,9 @@ wizard mode #wizidentify can now select individual items for permanent
|
|||||||
identify everything if everything is already fully identified
|
identify everything if everything is already fully identified
|
||||||
spiders will occasionally spin webs when moving around
|
spiders will occasionally spin webs when moving around
|
||||||
make mine town "orctown" variation a multiple level feature of the mines
|
make mine town "orctown" variation a multiple level feature of the mines
|
||||||
|
replace #monpolycontrol command with monpolycontrol boolean option
|
||||||
|
replace #wizdebug_traveldisplay command with travel_debug boolean option
|
||||||
|
rename #wizdebug_bury command to #wizbury
|
||||||
|
|
||||||
|
|
||||||
Code Cleanup and Reorganization
|
Code Cleanup and Reorganization
|
||||||
|
|||||||
+4
-2
@@ -240,11 +240,12 @@ struct instance_flags {
|
|||||||
boolean defer_plname; /* X11 hack: askname() might not set plname */
|
boolean defer_plname; /* X11 hack: askname() might not set plname */
|
||||||
boolean herecmd_menu; /* use menu when mouseclick on yourself */
|
boolean herecmd_menu; /* use menu when mouseclick on yourself */
|
||||||
boolean invis_goldsym; /* gold symbol is ' '? */
|
boolean invis_goldsym; /* gold symbol is ' '? */
|
||||||
int parse_config_file_src; /* hack for parse_config_line() */
|
int failing_untrap; /* move_into_trap() -> spoteffects() -> dotrap() */
|
||||||
int in_lava_effects; /* hack for Boots_off() */
|
int in_lava_effects; /* hack for Boots_off() */
|
||||||
int last_msg; /* indicator of last message player saw */
|
int last_msg; /* indicator of last message player saw */
|
||||||
int purge_monsters; /* # of dead monsters still on fmon list */
|
|
||||||
int override_ID; /* true to force full identification of objects */
|
int override_ID; /* true to force full identification of objects */
|
||||||
|
int parse_config_file_src; /* hack for parse_config_line() */
|
||||||
|
int purge_monsters; /* # of dead monsters still on fmon list */
|
||||||
int suppress_price; /* controls doname() for unpaid objects */
|
int suppress_price; /* controls doname() for unpaid objects */
|
||||||
int terrainmode; /* for getpos()'s autodescribe when #terrain is active */
|
int terrainmode; /* for getpos()'s autodescribe when #terrain is active */
|
||||||
#define TER_MAP 0x01
|
#define TER_MAP 0x01
|
||||||
@@ -257,6 +258,7 @@ struct instance_flags {
|
|||||||
boolean getloc_usemenu;
|
boolean getloc_usemenu;
|
||||||
boolean getloc_moveskip;
|
boolean getloc_moveskip;
|
||||||
coord travelcc; /* coordinates for travel_cache */
|
coord travelcc; /* coordinates for travel_cache */
|
||||||
|
boolean trav_debug; /* display travel path (#if DEBUG only) */
|
||||||
boolean window_inited; /* true if init_nhwindows() completed */
|
boolean window_inited; /* true if init_nhwindows() completed */
|
||||||
boolean vision_inited; /* true if vision is ready */
|
boolean vision_inited; /* true if vision is ready */
|
||||||
boolean sanity_check; /* run sanity checks */
|
boolean sanity_check; /* run sanity checks */
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ struct tty_status_fields {
|
|||||||
boolean valid;
|
boolean valid;
|
||||||
boolean dirty;
|
boolean dirty;
|
||||||
boolean redraw;
|
boolean redraw;
|
||||||
|
boolean padright;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -228,6 +229,8 @@ E short FDECL(set_tty_font_name, (winid, char *));
|
|||||||
#endif
|
#endif
|
||||||
E char *NDECL(tty_get_color_string);
|
E char *NDECL(tty_get_color_string);
|
||||||
#endif
|
#endif
|
||||||
|
E void FDECL(tty_status_enablefield,
|
||||||
|
(int, const char *, const char *, BOOLEAN_P));
|
||||||
E void NDECL(tty_status_init);
|
E void NDECL(tty_status_init);
|
||||||
E void FDECL(tty_status_update, (int, genericptr_t, int, int, int, unsigned long *));
|
E void FDECL(tty_status_update, (int, genericptr_t, int, int, int, unsigned long *));
|
||||||
|
|
||||||
|
|||||||
@@ -47,7 +47,6 @@ extern const char *enc_stat[]; /* encumbrance status from botl.c */
|
|||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
extern int NDECL(wiz_debug_cmd_bury);
|
extern int NDECL(wiz_debug_cmd_bury);
|
||||||
extern int NDECL(wiz_debug_cmd_traveldisplay);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef DUMB /* stuff commented out in extern.h, but needed here */
|
#ifdef DUMB /* stuff commented out in extern.h, but needed here */
|
||||||
@@ -154,7 +153,6 @@ STATIC_PTR int NDECL(wiz_show_seenv);
|
|||||||
STATIC_PTR int NDECL(wiz_show_vision);
|
STATIC_PTR int NDECL(wiz_show_vision);
|
||||||
STATIC_PTR int NDECL(wiz_smell);
|
STATIC_PTR int NDECL(wiz_smell);
|
||||||
STATIC_PTR int NDECL(wiz_intrinsic);
|
STATIC_PTR int NDECL(wiz_intrinsic);
|
||||||
STATIC_PTR int NDECL(wiz_mon_polycontrol);
|
|
||||||
STATIC_PTR int NDECL(wiz_show_wmodes);
|
STATIC_PTR int NDECL(wiz_show_wmodes);
|
||||||
STATIC_DCL void NDECL(wiz_map_levltyp);
|
STATIC_DCL void NDECL(wiz_map_levltyp);
|
||||||
STATIC_DCL void NDECL(wiz_levltyp_legend);
|
STATIC_DCL void NDECL(wiz_levltyp_legend);
|
||||||
@@ -399,14 +397,24 @@ doextlist(VOID_ARGS)
|
|||||||
|
|
||||||
if (!*searchbuf) {
|
if (!*searchbuf) {
|
||||||
any.a_int = 2;
|
any.a_int = 2;
|
||||||
add_menu(menuwin, NO_GLYPH, &any, 's', 0, ATR_NONE,
|
/* was 's', but then using ':' handling within the interface
|
||||||
|
would only examine the two or three meta entries, not the
|
||||||
|
actual list of extended commands shown via separator lines;
|
||||||
|
having ':' as an explicit selector overrides the default
|
||||||
|
menu behavior for it; we retain 's' as a group accelerator */
|
||||||
|
add_menu(menuwin, NO_GLYPH, &any, ':', 's', ATR_NONE,
|
||||||
"Search extended commands", MENU_UNSELECTED);
|
"Search extended commands", MENU_UNSELECTED);
|
||||||
} else {
|
} else {
|
||||||
Strcpy(buf, "Show all, clear search");
|
Strcpy(buf, "Show all, clear search");
|
||||||
if (strlen(buf) + strlen(searchbuf) + strlen(" (\"\")") < QBUFSZ)
|
if (strlen(buf) + strlen(searchbuf) + strlen(" (\"\")") < QBUFSZ)
|
||||||
Sprintf(eos(buf), " (\"%s\")", searchbuf);
|
Sprintf(eos(buf), " (\"%s\")", searchbuf);
|
||||||
any.a_int = 3;
|
any.a_int = 3;
|
||||||
add_menu(menuwin, NO_GLYPH, &any, 's', 0, ATR_NONE,
|
/* specifying ':' as a group accelerator here is mostly a
|
||||||
|
statement of intent (we'd like to accept it as a synonym but
|
||||||
|
also want to hide it from general menu use) because it won't
|
||||||
|
work for interfaces which support ':' to search; use as a
|
||||||
|
general menu command takes precedence over group accelerator */
|
||||||
|
add_menu(menuwin, NO_GLYPH, &any, 's', ':', ATR_NONE,
|
||||||
buf, MENU_UNSELECTED);
|
buf, MENU_UNSELECTED);
|
||||||
}
|
}
|
||||||
if (wizard) {
|
if (wizard) {
|
||||||
@@ -415,7 +423,7 @@ doextlist(VOID_ARGS)
|
|||||||
onelist ? "Show debugging commands in separate section"
|
onelist ? "Show debugging commands in separate section"
|
||||||
: "Show all alphabetically, including debugging commands",
|
: "Show all alphabetically, including debugging commands",
|
||||||
MENU_UNSELECTED);
|
MENU_UNSELECTED);
|
||||||
}
|
}
|
||||||
any = zeroany;
|
any = zeroany;
|
||||||
add_menu(menuwin, NO_GLYPH, &any, 0, 0, ATR_NONE,
|
add_menu(menuwin, NO_GLYPH, &any, 0, 0, ATR_NONE,
|
||||||
"", MENU_UNSELECTED);
|
"", MENU_UNSELECTED);
|
||||||
@@ -434,8 +442,13 @@ doextlist(VOID_ARGS)
|
|||||||
continue;
|
continue;
|
||||||
/* if searching, skip this command if it doesn't match */
|
/* if searching, skip this command if it doesn't match */
|
||||||
if (*searchbuf
|
if (*searchbuf
|
||||||
|
/* first try case-insensitive substring match */
|
||||||
&& !strstri(efp->ef_txt, searchbuf)
|
&& !strstri(efp->ef_txt, searchbuf)
|
||||||
&& !strstri(efp->ef_desc, searchbuf))
|
&& !strstri(efp->ef_desc, searchbuf)
|
||||||
|
/* wildcard support; most interfaces use case-insensitve
|
||||||
|
pmatch rather than regexp for menu searching */
|
||||||
|
&& !pmatchi(searchbuf, efp->ef_txt)
|
||||||
|
&& !pmatchi(searchbuf, efp->ef_desc))
|
||||||
continue;
|
continue;
|
||||||
/* skip wizard mode commands if not in wizard mode;
|
/* skip wizard mode commands if not in wizard mode;
|
||||||
when showing two sections, skip wizard mode commands
|
when showing two sections, skip wizard mode commands
|
||||||
@@ -480,7 +493,7 @@ doextlist(VOID_ARGS)
|
|||||||
menumode = 1 - menumode; /* toggle 0 -> 1, 1 -> 0 */
|
menumode = 1 - menumode; /* toggle 0 -> 1, 1 -> 0 */
|
||||||
redisplay = TRUE;
|
redisplay = TRUE;
|
||||||
break;
|
break;
|
||||||
case 2: /* 's' when not searching yet: enable search */
|
case 2: /* ':' when not searching yet: enable search */
|
||||||
search = TRUE;
|
search = TRUE;
|
||||||
break;
|
break;
|
||||||
case 3: /* 's' when already searching: disable search */
|
case 3: /* 's' when already searching: disable search */
|
||||||
@@ -494,7 +507,7 @@ doextlist(VOID_ARGS)
|
|||||||
onelist = 1 - onelist; /* toggle 0 -> 1, 1 -> 0 */
|
onelist = 1 - onelist; /* toggle 0 -> 1, 1 -> 0 */
|
||||||
redisplay = TRUE;
|
redisplay = TRUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
free((genericptr_t) selected);
|
free((genericptr_t) selected);
|
||||||
} else {
|
} else {
|
||||||
search = FALSE;
|
search = FALSE;
|
||||||
@@ -878,16 +891,6 @@ wiz_level_tele(VOID_ARGS)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* #monpolycontrol command - choose new form for shapechangers, polymorphees */
|
|
||||||
STATIC_PTR int
|
|
||||||
wiz_mon_polycontrol(VOID_ARGS)
|
|
||||||
{
|
|
||||||
iflags.mon_polycontrol = !iflags.mon_polycontrol;
|
|
||||||
pline("Monster polymorph control is %s.",
|
|
||||||
iflags.mon_polycontrol ? "on" : "off");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* #levelchange command - adjust hero's experience level */
|
/* #levelchange command - adjust hero's experience level */
|
||||||
STATIC_PTR int
|
STATIC_PTR int
|
||||||
wiz_level_change(VOID_ARGS)
|
wiz_level_change(VOID_ARGS)
|
||||||
@@ -3062,8 +3065,6 @@ struct ext_func_tab extcmdlist[] = {
|
|||||||
{ '\0', "migratemons", "migrate N random monsters",
|
{ '\0', "migratemons", "migrate N random monsters",
|
||||||
wiz_migrate_mons, IFBURIED | AUTOCOMPLETE | WIZMODECMD },
|
wiz_migrate_mons, IFBURIED | AUTOCOMPLETE | WIZMODECMD },
|
||||||
#endif
|
#endif
|
||||||
{ '\0', "monpolycontrol", "control monster polymorphs",
|
|
||||||
wiz_mon_polycontrol, IFBURIED | AUTOCOMPLETE | WIZMODECMD },
|
|
||||||
{ M('m'), "monster", "use monster's special ability",
|
{ M('m'), "monster", "use monster's special ability",
|
||||||
domonability, IFBURIED | AUTOCOMPLETE },
|
domonability, IFBURIED | AUTOCOMPLETE },
|
||||||
{ 'N', "name", "name a monster or an object",
|
{ 'N', "name", "name a monster or an object",
|
||||||
@@ -3166,10 +3167,8 @@ struct ext_func_tab extcmdlist[] = {
|
|||||||
{ 'w', "wield", "wield (put in use) a weapon", dowield },
|
{ 'w', "wield", "wield (put in use) a weapon", dowield },
|
||||||
{ M('w'), "wipe", "wipe off your face", dowipe, AUTOCOMPLETE },
|
{ M('w'), "wipe", "wipe off your face", dowipe, AUTOCOMPLETE },
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
{ '\0', "wizdebug_bury", "wizard debug: bury objs under and around you",
|
{ '\0', "wizbury", "bury objs under and around you",
|
||||||
wiz_debug_cmd_bury, IFBURIED | AUTOCOMPLETE | WIZMODECMD },
|
wiz_debug_cmd_bury, IFBURIED | AUTOCOMPLETE | WIZMODECMD },
|
||||||
{ '\0', "wizdebug_traveldisplay", "wizard debug: toggle travel display",
|
|
||||||
wiz_debug_cmd_traveldisplay, IFBURIED | AUTOCOMPLETE | WIZMODECMD },
|
|
||||||
#endif
|
#endif
|
||||||
{ C('e'), "wizdetect", "reveal hidden things within a small radius",
|
{ C('e'), "wizdetect", "reveal hidden things within a small radius",
|
||||||
wiz_detect, IFBURIED | AUTOCOMPLETE | WIZMODECMD },
|
wiz_detect, IFBURIED | AUTOCOMPLETE | WIZMODECMD },
|
||||||
|
|||||||
+4
-14
@@ -897,17 +897,6 @@ int mode;
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
static boolean trav_debug = FALSE;
|
|
||||||
|
|
||||||
/* in this case, toggle display of travel debug info */
|
|
||||||
int wiz_debug_cmd_traveldisplay()
|
|
||||||
{
|
|
||||||
trav_debug = !trav_debug;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif /* DEBUG */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Find a path from the destination (u.tx,u.ty) back to (u.ux,u.uy).
|
* Find a path from the destination (u.tx,u.ty) back to (u.ux,u.uy).
|
||||||
* A shortest path is returned. If guess is TRUE, consider various
|
* A shortest path is returned. If guess is TRUE, consider various
|
||||||
@@ -1065,7 +1054,7 @@ int mode;
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
if (trav_debug) {
|
if (iflags.trav_debug) {
|
||||||
/* Use of warning glyph is arbitrary. It stands out. */
|
/* Use of warning glyph is arbitrary. It stands out. */
|
||||||
tmp_at(DISP_ALL, warning_to_glyph(1));
|
tmp_at(DISP_ALL, warning_to_glyph(1));
|
||||||
for (i = 0; i < nn; ++i) {
|
for (i = 0; i < nn; ++i) {
|
||||||
@@ -1121,7 +1110,7 @@ int mode;
|
|||||||
goto found;
|
goto found;
|
||||||
}
|
}
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
if (trav_debug) {
|
if (iflags.trav_debug) {
|
||||||
/* Use of warning glyph is arbitrary. It stands out. */
|
/* Use of warning glyph is arbitrary. It stands out. */
|
||||||
tmp_at(DISP_ALL, warning_to_glyph(2));
|
tmp_at(DISP_ALL, warning_to_glyph(2));
|
||||||
tmp_at(px, py);
|
tmp_at(px, py);
|
||||||
@@ -2053,6 +2042,7 @@ boolean pick;
|
|||||||
|
|
||||||
struct monst *mtmp;
|
struct monst *mtmp;
|
||||||
struct trap *trap = t_at(u.ux, u.uy);
|
struct trap *trap = t_at(u.ux, u.uy);
|
||||||
|
int trapflag = iflags.failing_untrap ? FORCETRAP : 0;
|
||||||
|
|
||||||
/* prevent recursion from affecting the hero all over again
|
/* prevent recursion from affecting the hero all over again
|
||||||
[hero poly'd to iron golem enters water here, drown() inflicts
|
[hero poly'd to iron golem enters water here, drown() inflicts
|
||||||
@@ -2118,7 +2108,7 @@ boolean pick;
|
|||||||
if (!spottrap || spottraptyp != trap->ttyp) {
|
if (!spottrap || spottraptyp != trap->ttyp) {
|
||||||
spottrap = trap;
|
spottrap = trap;
|
||||||
spottraptyp = trap->ttyp;
|
spottraptyp = trap->ttyp;
|
||||||
dotrap(trap, 0); /* fall into arrow trap, etc. */
|
dotrap(trap, trapflag); /* fall into arrow trap, etc. */
|
||||||
spottrap = (struct trap *) 0;
|
spottrap = (struct trap *) 0;
|
||||||
spottraptyp = NO_TRAP;
|
spottraptyp = NO_TRAP;
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-1
@@ -160,6 +160,7 @@ static struct Bool_Opt {
|
|||||||
#else
|
#else
|
||||||
{ "menu_overlay", (boolean *) 0, FALSE, SET_IN_FILE },
|
{ "menu_overlay", (boolean *) 0, FALSE, SET_IN_FILE },
|
||||||
#endif
|
#endif
|
||||||
|
{ "monpolycontrol", &iflags.mon_polycontrol, FALSE, SET_IN_WIZGAME },
|
||||||
{ "mouse_support", &iflags.wc_mouse_support, TRUE, DISP_IN_GAME }, /*WC*/
|
{ "mouse_support", &iflags.wc_mouse_support, TRUE, DISP_IN_GAME }, /*WC*/
|
||||||
#ifdef NEWS
|
#ifdef NEWS
|
||||||
{ "news", &iflags.news, TRUE, DISP_IN_GAME },
|
{ "news", &iflags.news, TRUE, DISP_IN_GAME },
|
||||||
@@ -173,7 +174,7 @@ static struct Bool_Opt {
|
|||||||
#else
|
#else
|
||||||
{ "page_wait", (boolean *) 0, FALSE, SET_IN_FILE },
|
{ "page_wait", (boolean *) 0, FALSE, SET_IN_FILE },
|
||||||
#endif
|
#endif
|
||||||
/* 3.6.2: move perm_invent from flags to inflags and out of save file */
|
/* 3.6.2: move perm_invent from flags to iflags and out of save file */
|
||||||
{ "perm_invent", &iflags.perm_invent, FALSE, SET_IN_GAME },
|
{ "perm_invent", &iflags.perm_invent, FALSE, SET_IN_GAME },
|
||||||
{ "pickup_thrown", &flags.pickup_thrown, TRUE, SET_IN_GAME },
|
{ "pickup_thrown", &flags.pickup_thrown, TRUE, SET_IN_GAME },
|
||||||
{ "popup_dialog", &iflags.wc_popup_dialog, FALSE, SET_IN_GAME }, /*WC*/
|
{ "popup_dialog", &iflags.wc_popup_dialog, FALSE, SET_IN_GAME }, /*WC*/
|
||||||
@@ -221,6 +222,9 @@ static struct Bool_Opt {
|
|||||||
{ "tombstone", &flags.tombstone, TRUE, SET_IN_GAME },
|
{ "tombstone", &flags.tombstone, TRUE, SET_IN_GAME },
|
||||||
{ "toptenwin", &iflags.toptenwin, FALSE, SET_IN_GAME },
|
{ "toptenwin", &iflags.toptenwin, FALSE, SET_IN_GAME },
|
||||||
{ "travel", &flags.travelcmd, TRUE, SET_IN_GAME },
|
{ "travel", &flags.travelcmd, TRUE, SET_IN_GAME },
|
||||||
|
#ifdef DEBUG
|
||||||
|
{ "travel_debug", &iflags.trav_debug, FALSE, SET_IN_WIZGAME }, /*hack.c*/
|
||||||
|
#endif
|
||||||
{ "use_darkgray", &iflags.wc2_darkgray, TRUE, SET_IN_FILE },
|
{ "use_darkgray", &iflags.wc2_darkgray, TRUE, SET_IN_FILE },
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
{ "use_inverse", &iflags.wc_inverse, TRUE, SET_IN_GAME }, /*WC*/
|
{ "use_inverse", &iflags.wc_inverse, TRUE, SET_IN_GAME }, /*WC*/
|
||||||
|
|||||||
+21
-18
@@ -886,8 +886,7 @@ unsigned trflags;
|
|||||||
/* then proceed to normal trap effect */
|
/* then proceed to normal trap effect */
|
||||||
} else if (already_seen && !forcetrap) {
|
} else if (already_seen && !forcetrap) {
|
||||||
if ((Levitation || (Flying && !plunged))
|
if ((Levitation || (Flying && !plunged))
|
||||||
&& (is_pit(ttype) || ttype == HOLE
|
&& (is_pit(ttype) || ttype == HOLE || ttype == BEAR_TRAP)) {
|
||||||
|| ttype == BEAR_TRAP)) {
|
|
||||||
You("%s over %s %s.", Levitation ? "float" : "fly",
|
You("%s over %s %s.", Levitation ? "float" : "fly",
|
||||||
a_your[trap->madeby_u],
|
a_your[trap->madeby_u],
|
||||||
defsyms[trap_to_defsym(ttype)].explanation);
|
defsyms[trap_to_defsym(ttype)].explanation);
|
||||||
@@ -1198,16 +1197,23 @@ unsigned trflags;
|
|||||||
if (ttype == SPIKED_PIT) {
|
if (ttype == SPIKED_PIT) {
|
||||||
oldumort = u.umortality;
|
oldumort = u.umortality;
|
||||||
losehp(Maybe_Half_Phys(rnd(conj_pit ? 4 : adj_pit ? 6 : 10)),
|
losehp(Maybe_Half_Phys(rnd(conj_pit ? 4 : adj_pit ? 6 : 10)),
|
||||||
|
/* note: these don't need locomotion() handling;
|
||||||
|
if fatal while poly'd and Unchanging, the
|
||||||
|
death reason will be overridden with
|
||||||
|
"killed while stuck in creature form" */
|
||||||
plunged
|
plunged
|
||||||
? "deliberately plunged into a pit of iron spikes"
|
? "deliberately plunged into a pit of iron spikes"
|
||||||
: conj_pit ? "stepped into a pit of iron spikes"
|
: conj_pit
|
||||||
: adj_pit ? "stumbled into a pit of iron spikes"
|
? "stepped into a pit of iron spikes"
|
||||||
: "fell into a pit of iron spikes",
|
: adj_pit
|
||||||
|
? "stumbled into a pit of iron spikes"
|
||||||
|
: "fell into a pit of iron spikes",
|
||||||
NO_KILLER_PREFIX);
|
NO_KILLER_PREFIX);
|
||||||
if (!rn2(6))
|
if (!rn2(6))
|
||||||
poisoned("spikes", A_STR,
|
poisoned("spikes", A_STR,
|
||||||
(conj_pit || adj_pit) ? "stepping on poison spikes"
|
(conj_pit || adj_pit)
|
||||||
: "fall onto poison spikes",
|
? "stepping on poison spikes"
|
||||||
|
: "fall onto poison spikes",
|
||||||
/* if damage triggered life-saving,
|
/* if damage triggered life-saving,
|
||||||
poison is limited to attrib loss */
|
poison is limited to attrib loss */
|
||||||
(u.umortality > oldumort) ? 0 : 8, FALSE);
|
(u.umortality > oldumort) ? 0 : 8, FALSE);
|
||||||
@@ -3912,7 +3918,14 @@ struct trap *ttmp;
|
|||||||
there are objects covering this trap */
|
there are objects covering this trap */
|
||||||
ttmp->tseen = 0; /* hack for check_here() */
|
ttmp->tseen = 0; /* hack for check_here() */
|
||||||
/* trigger the trap */
|
/* trigger the trap */
|
||||||
|
iflags.failing_untrap++; /* spoteffects() -> dotrap(,FORCETRAP) */
|
||||||
spoteffects(TRUE); /* pickup() + dotrap() */
|
spoteffects(TRUE); /* pickup() + dotrap() */
|
||||||
|
iflags.failing_untrap--;
|
||||||
|
/* this should no longer be necessary; before the failing_untrap
|
||||||
|
hack, Flying hero would not trigger an unseen bear trap and
|
||||||
|
setting it not-yet-seen above resulted in leaving it hidden */
|
||||||
|
if ((ttmp = t_at(u.ux, u.uy)) != 0)
|
||||||
|
ttmp->tseen = 1;
|
||||||
exercise(A_WIS, FALSE);
|
exercise(A_WIS, FALSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3991,16 +4004,6 @@ boolean force_failure;
|
|||||||
}
|
}
|
||||||
} else if (under_u) {
|
} else if (under_u) {
|
||||||
dotrap(ttmp, 0);
|
dotrap(ttmp, 0);
|
||||||
} else if (ttype == BEAR_TRAP && (Levitation || Flying)) {
|
|
||||||
/* There was a report of oddities of the trap
|
|
||||||
vanishing from view due to tseen being cleared
|
|
||||||
(which was deliberate to work around a check_here()
|
|
||||||
issue). Since you won't actually end up in the trap
|
|
||||||
during the #untrap operation anyway due to
|
|
||||||
Levitation and Flying checks further along,
|
|
||||||
just avoid the whole "vanishing trap" scenario
|
|
||||||
by failing the #untrap operation right here. */
|
|
||||||
You("couldn't reach it from your vantage point.");
|
|
||||||
} else {
|
} else {
|
||||||
move_into_trap(ttmp);
|
move_into_trap(ttmp);
|
||||||
}
|
}
|
||||||
|
|||||||
+55
-4
@@ -103,7 +103,7 @@ struct window_procs tty_procs = {
|
|||||||
#endif
|
#endif
|
||||||
tty_getmsghistory, tty_putmsghistory,
|
tty_getmsghistory, tty_putmsghistory,
|
||||||
tty_status_init,
|
tty_status_init,
|
||||||
genl_status_finish, genl_status_enablefield,
|
genl_status_finish, tty_status_enablefield,
|
||||||
#ifdef STATUS_HILITES
|
#ifdef STATUS_HILITES
|
||||||
tty_status_update,
|
tty_status_update,
|
||||||
#else
|
#else
|
||||||
@@ -187,6 +187,7 @@ STATIC_DCL int NDECL(condition_size);
|
|||||||
STATIC_DCL int FDECL(make_things_fit, (BOOLEAN_P));
|
STATIC_DCL int FDECL(make_things_fit, (BOOLEAN_P));
|
||||||
STATIC_DCL void FDECL(shrink_enc, (int));
|
STATIC_DCL void FDECL(shrink_enc, (int));
|
||||||
STATIC_DCL void FDECL(shrink_dlvl, (int));
|
STATIC_DCL void FDECL(shrink_dlvl, (int));
|
||||||
|
STATIC_DCL void NDECL(do_setlast);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -3530,7 +3531,8 @@ static const char *encvals[3][6] = {
|
|||||||
{ "", "Burden", "Stress", "Strain", "Overtax", "Overload" },
|
{ "", "Burden", "Stress", "Strain", "Overtax", "Overload" },
|
||||||
{ "", "Brd", "Strs", "Strn", "Ovtx", "Ovld" }
|
{ "", "Brd", "Strs", "Strn", "Ovtx", "Ovld" }
|
||||||
};
|
};
|
||||||
static enum statusfields fieldorder[2][15] = { /* 2: two status lines */
|
#define MAX_PER_ROW 15
|
||||||
|
static enum statusfields fieldorder[2][MAX_PER_ROW] = { /* 2: two status lines */
|
||||||
{ BL_TITLE, BL_STR, BL_DX, BL_CO, BL_IN, BL_WI, BL_CH, BL_ALIGN,
|
{ BL_TITLE, BL_STR, BL_DX, BL_CO, BL_IN, BL_WI, BL_CH, BL_ALIGN,
|
||||||
BL_SCORE, BL_FLUSH, BL_FLUSH, BL_FLUSH, BL_FLUSH, BL_FLUSH,
|
BL_SCORE, BL_FLUSH, BL_FLUSH, BL_FLUSH, BL_FLUSH, BL_FLUSH,
|
||||||
BL_FLUSH },
|
BL_FLUSH },
|
||||||
@@ -3539,6 +3541,8 @@ static enum statusfields fieldorder[2][15] = { /* 2: two status lines */
|
|||||||
BL_CAP, BL_CONDITION, BL_FLUSH }
|
BL_CAP, BL_CONDITION, BL_FLUSH }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static int last_on_row[2];
|
||||||
|
static boolean setlast = FALSE;
|
||||||
static boolean windowdata_init = FALSE;
|
static boolean windowdata_init = FALSE;
|
||||||
static int cond_shrinklvl = 0, cond_width_at_shrink = 0;
|
static int cond_shrinklvl = 0, cond_width_at_shrink = 0;
|
||||||
static int enclev = 0, enc_shrinklvl = 0;
|
static int enclev = 0, enc_shrinklvl = 0;
|
||||||
@@ -3584,6 +3588,7 @@ tty_status_init()
|
|||||||
tty_status[NOW][i].valid = FALSE;
|
tty_status[NOW][i].valid = FALSE;
|
||||||
tty_status[NOW][i].dirty = FALSE;
|
tty_status[NOW][i].dirty = FALSE;
|
||||||
tty_status[NOW][i].redraw = FALSE;
|
tty_status[NOW][i].redraw = FALSE;
|
||||||
|
tty_status[NOW][i].padright = FALSE;
|
||||||
tty_status[BEFORE][i] = tty_status[NOW][i];
|
tty_status[BEFORE][i] = tty_status[NOW][i];
|
||||||
}
|
}
|
||||||
tty_condition_bits = 0L;
|
tty_condition_bits = 0L;
|
||||||
@@ -3594,6 +3599,36 @@ tty_status_init()
|
|||||||
genl_status_init();
|
genl_status_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
tty_status_enablefield(fieldidx, nm, fmt, enable)
|
||||||
|
int fieldidx;
|
||||||
|
const char *nm;
|
||||||
|
const char *fmt;
|
||||||
|
boolean enable;
|
||||||
|
{
|
||||||
|
genl_status_enablefield(fieldidx, nm, fmt, enable);
|
||||||
|
/* force re-evaluation of last field on the row */
|
||||||
|
setlast = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
do_setlast()
|
||||||
|
{
|
||||||
|
int i, row, fld;
|
||||||
|
|
||||||
|
setlast = TRUE;
|
||||||
|
for (row = 0; row < 2; ++row)
|
||||||
|
for (i = MAX_PER_ROW - 1; i > 0; --i) {
|
||||||
|
fld = fieldorder[row][i];
|
||||||
|
|
||||||
|
if (fld == BL_FLUSH || !status_activefields[fld])
|
||||||
|
continue;
|
||||||
|
|
||||||
|
last_on_row[row] = fld;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef STATUS_HILITES
|
#ifdef STATUS_HILITES
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -3672,6 +3707,9 @@ unsigned long *colormasks;
|
|||||||
if ((fldidx >= 0 && fldidx < MAXBLSTATS) && !status_activefields[fldidx])
|
if ((fldidx >= 0 && fldidx < MAXBLSTATS) && !status_activefields[fldidx])
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (!setlast)
|
||||||
|
do_setlast();
|
||||||
|
|
||||||
#ifndef TEXTCOLOR
|
#ifndef TEXTCOLOR
|
||||||
color = (color & ~0x00FF) | NO_COLOR;
|
color = (color & ~0x00FF) | NO_COLOR;
|
||||||
#endif
|
#endif
|
||||||
@@ -3845,8 +3883,12 @@ int *topsz, *bottomsz;
|
|||||||
|
|
||||||
/* On a change to the field length, everything
|
/* On a change to the field length, everything
|
||||||
further to the right must be updated as well */
|
further to the right must be updated as well */
|
||||||
if (tty_status[NOW][idx].lth != tty_status[BEFORE][idx].lth)
|
if (tty_status[NOW][idx].lth != tty_status[BEFORE][idx].lth) {
|
||||||
update_right = TRUE;
|
update_right = TRUE;
|
||||||
|
if ((tty_status[NOW][idx].lth < tty_status[BEFORE][idx].lth) &&
|
||||||
|
idx == last_on_row[row])
|
||||||
|
tty_status[NOW][idx].padright = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
if (!update_right && !forcefields) {
|
if (!update_right && !forcefields) {
|
||||||
/*
|
/*
|
||||||
@@ -4297,11 +4339,20 @@ render_status(VOID_ARGS)
|
|||||||
term_end_color();
|
term_end_color();
|
||||||
End_Attr(attridx);
|
End_Attr(attridx);
|
||||||
}
|
}
|
||||||
|
if (tty_status[NOW][fldidx].padright) {
|
||||||
|
int cnt = tty_status[BEFORE][fldidx].lth
|
||||||
|
- tty_status[NOW][fldidx].lth;
|
||||||
|
|
||||||
|
x += (tty_status[NOW][fldidx].lth - 1);
|
||||||
|
while (cnt-- > 0)
|
||||||
|
tty_putstatusfield(nullfield, " ", x++, y);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* reset .redraw and .dirty now that they've been rendered */
|
/* reset .redraw, .dirty, .padright now that they've been rendered */
|
||||||
tty_status[NOW][fldidx].dirty = FALSE;
|
tty_status[NOW][fldidx].dirty = FALSE;
|
||||||
tty_status[NOW][fldidx].redraw = FALSE;
|
tty_status[NOW][fldidx].redraw = FALSE;
|
||||||
|
tty_status[NOW][fldidx].padright = FALSE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Make a copy of the entire tty_status struct for comparison
|
* Make a copy of the entire tty_status struct for comparison
|
||||||
|
|||||||
Reference in New Issue
Block a user