or overLoaded), you will be asked if you want to continue. [S]
pickup_types a list of default symbols for kinds of objects to autopickup
when that option is on [all]
+pile_limit for feedback when walking across floor objects, threshold at
+ which "there are many objects here" is displayed instead of
+ listing the objects. (0 means "always list objects.") [5]
runmode controls how often the map window is updated when performing
multi-step movement (various running modes or travel command):
teleport -- don't update map until movement stops;
configuration file lines to further refine
.op autopickup
behavior.
+.lp pile_limit
+When walking across a pile of objects on the floor, threshold at which
+the message "there are few/several/many objects here" is given instead
+of showing a popup list of those objects. A value of 0 means "no limit"
+(always list the objects); a value of 1 effectively means "never show
+the objects" since the pile size will always be at least that big;
+default value is 5.
.lp playmode
Values are `normal', `explore', or `debug'.
Allows selection of explore mode (also known as discovery mode) or debug
\begin{document}
%
% input file: guidebook.mn
-% $Revision: 1.103 $ $Date: 2007/02/15 05:22:32 $
+% $Revision: 1.104 $ $Date: 2007/02/18 04:49:19 $
%
%.ds h0 "
%.ds h1 %.ds h2 \%
you may be able to use ``{\it autopickup\_exception\/}'' configuration
file lines to further refine ``{\it autopickup\/}'' behavior.
%.lp
+\item[\ib{pile\_limit}]
+When walking across a pile of objects on the floor, threshold at which
+the message ``there are few/several/many objects here'' is given instead
+of showing a popup list of those objects. A value of 0 means ``no limit''
+(always list the objects); a value of 1 effectively means ``never show
+the objects'' since the pile size will always be at least that big;
+default value is 5.
+%.lp
\item[\ib{playmode}]
Values are {\it normal\/}, {\it explore\/}, or {\it debug\/}.
Allows selection of explore mode (also known as discovery mode) or debug
likewise when asked about type for #monpolycontrol
scroll of taming/spell of charm monster now gives some feedback
doppelgangers can take on the shape of alternate roles' quest guardians
+pile_limit option to control when to switch to "there are objects here"
+ vs listing objects on floor when hero goes over objects while moving
Platform- and/or Interface-Specific New Features
-/* SCCS Id: @(#)flag.h 3.5 2007/02/16 */
+/* SCCS Id: @(#)flag.h 3.5 2007/04/26 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
#define NEW_MOON 0
#define FULL_MOON 4
int pickup_burden; /* maximum burden before prompt */
+ int pile_limit; /* controls feedback when walking over objects */
char inv_order[MAXOCLASSES];
char pickup_types[MAXOCLASSES];
#define NUM_DISCLOSURE_OPTIONS 5
* Incrementing EDITLEVEL can be used to force invalidation of old bones
* and save files.
*/
-#define EDITLEVEL 38
+#define EDITLEVEL 39
#define COPYRIGHT_BANNER_A \
"NetHack, Copyright 1985-2007"
return dfeature;
}
-/* look at what is here; if there are many objects (5 or more),
+/* look at what is here; if there are many objects (pile_limit or more),
don't show them unless obj_cnt is 0 */
int
look_here(obj_cnt, picked_some)
const char *dfeature = (char *)0;
char fbuf[BUFSZ], fbuf2[BUFSZ];
winid tmpwin;
- boolean skip_objects = (obj_cnt >= 5), felt_cockatrice = FALSE;
+ boolean skip_objects, felt_cockatrice = FALSE;
+ /* default pile_limit is 5; a value of 0 means "never skip"
+ (and 1 effectively forces "always skip") */
+ skip_objects = (flags.pile_limit > 0 && obj_cnt >= flags.pile_limit);
if (u.uswallow && u.ustuck) {
struct monst *mtmp = u.ustuck;
Sprintf(fbuf, "Contents of %s %s",
if (skip_objects) {
if (dfeature) pline(fbuf);
read_engr_at(u.ux, u.uy); /* Eric Backus */
- There("are %s%s objects here.",
- (obj_cnt <= 10) ? "several" : "many",
- picked_some ? " more" : "");
+ if (obj_cnt == 1 && otmp->quan == 1L)
+ There("is %s object here.", picked_some ? "another" : "an");
+ else
+ There("are %s%s objects here.",
+ (obj_cnt < 5) ? "a few" :
+ (obj_cnt < 10) ? "several" : "many",
+ picked_some ? " more" : "");
for ( ; otmp; otmp = otmp->nexthere)
if (otmp->otyp == CORPSE && will_feel_cockatrice(otmp, FALSE)) {
- pline("Including %s%s.",
+ pline("%s %s%s.",
+ (obj_cnt > 1) ? "Including" :
+ (otmp->quan > 1L) ? "They're" : "It's",
corpse_xname(otmp, (const char *)0, CXN_ARTICLE),
poly_when_stoned(youmonst.data) ? "" :
", unfortunately");
You("%s here %s.", verb, doname(otmp));
if (otmp->otyp == CORPSE) feel_cockatrice(otmp, FALSE);
} else {
+ char buf[BUFSZ];
+
display_nhwindow(WIN_MESSAGE, FALSE);
tmpwin = create_nhwindow(NHW_MENU);
if(dfeature) {
putstr(tmpwin, 0, fbuf);
putstr(tmpwin, 0, "");
}
- putstr(tmpwin, 0, Blind ? "Things that you feel here:" :
- "Things that are here:");
+ Sprintf(buf, "%s that %s here:",
+ picked_some ? "Other things" : "Things",
+ Blind ? "you feel" : "are");
+ putstr(tmpwin, 0, buf);
for ( ; otmp; otmp = otmp->nexthere) {
if (otmp->otyp == CORPSE && will_feel_cockatrice(otmp, FALSE)) {
- char buf[BUFSZ];
felt_cockatrice = TRUE;
- Strcpy(buf, doname(otmp));
- Strcat(buf, "...");
+ Sprintf(buf, "%s...", doname(otmp));
putstr(tmpwin, 0, buf);
break;
}
-/* SCCS Id: @(#)options.c 3.5 2007/02/14 */
+/* SCCS Id: @(#)options.c 3.5 2007/04/26 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
#define MENU_OPTION 4
#define TEXT_OPTION 5
+#define PILE_LIMIT_DFLT 5
+
/*
* NOTE: If you add (or delete) an option, please update the short
* options help (option_help()), the long options help (dat/opthelp),
20, SET_IN_GAME },
{ "pickup_types", "types of objects to pick up automatically",
MAXOCLASSES, SET_IN_GAME },
+ { "pile_limit", "threshold for \"there are many objects here\"",
+ 24, SET_IN_GAME },
{ "playmode",
#ifdef WIZARD
"normal play, non-scoring explore mode, or debug mode",
flags.end_own = FALSE;
flags.end_top = 3;
flags.end_around = 2;
+ flags.pile_limit = PILE_LIMIT_DFLT; /* 5 */
flags.runmode = RUN_LEAP;
iflags.msg_history = 20;
#ifdef TTY_GRAPHICS
return;
}
+ /* pile limit: when walking over objects, number which triggers
+ "there are several/many objects here" instead of listing them */
+ fullname = "pile_limit";
+ if (match_optname(opts, fullname, 4, TRUE)) {
+ if (duplicate) complain_about_duplicate(opts, 1);
+ op = string_for_opt(opts, negated);
+ if ((negated && !op) || (!negated && op))
+ flags.pile_limit = negated ? 0 : atoi(op);
+ else if (negated)
+ bad_negation(fullname, TRUE);
+ else /* !op */
+ flags.pile_limit = PILE_LIMIT_DFLT;
+ /* sanity check */
+ if (flags.pile_limit < 0) flags.pile_limit = PILE_LIMIT_DFLT;
+ return;
+ }
+
/* play mode: normal, explore/discovery, or debug/wizard */
fullname = "playmode";
if (match_optname(opts, fullname, 4, TRUE)) {
oc_to_str(flags.pickup_types, ocl);
Sprintf(buf, "%s", ocl[0] ? ocl : "all" );
}
+ else if (!strcmp(optname, "pile_limit"))
+ Sprintf(buf, "%d", flags.pile_limit);
else if (!strcmp(optname, "playmode")) {
Strcpy(buf,
wizard ? "debug" : discover ? "explore" : "normal");