diff --git a/dat/opthelp b/dat/opthelp index ee9092ede..0bcc8547e 100644 --- a/dat/opthelp +++ b/dat/opthelp @@ -99,7 +99,7 @@ altmeta For unix and VMS, treat two character sequence "ESC c" as M-c (Meta+c, 8th bit set) when nethack [FALSE] obtains a command from player's keyboard. -Boolean option if USE_TILES was set at compile time (MSDOS protected mode only): +Boolean option if USE_TILES was set at compile time (MSDOS protected mode): preload_tiles control whether tiles get pre-loaded into RAM at [TRUE] the start of the game. Doing so enhances performance of the tile graphics, but uses more memory. @@ -157,9 +157,13 @@ paranoid_confirmation space separated list [paranoid_confirmation:pray] die -- yes vs y to confirm dying (for explore or debug mode) bones -- yes vs y to confirm saving bones data in debug mode attack -- yes vs y to confirm attacking a peaceful monster + wand-break -- yes vs y to confirm breaking a wand + eating -- yes vs y to confirm whether to continue eating + Were-change -- yes vs y to confirm changing form due to + lycanthropy when hero has polymorph control; pray -- y to confirm an attempt to pray; on by default Remove -- always pick from inventory for 'R' and 'T' even when - wearing just one applicable item to remove or take off + wearing just one applicable item to remove or take off pickup_burden when you pick up an item that exceeds this encumbrance [S] level (Unencumbered, Burdened, streSsed, straiNed, overTaxed, or overLoaded), you will be asked if you want to continue. diff --git a/doc/Guidebook.mn b/doc/Guidebook.mn index c039e3bba..5bf417b7a 100644 --- a/doc/Guidebook.mn +++ b/doc/Guidebook.mn @@ -1,4 +1,4 @@ -.\" $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.331 $ $NHDT-Date: 1573943499 2019/11/16 22:31:39 $ +.\" $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.333 $ $NHDT-Date: 1574900824 2019/11/28 00:27:04 $ .\" .\" 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 "November 17, 2019 +.ds f2 "November 27, 2019 . .\" A note on some special characters: .\" \(lq = left double quote @@ -693,6 +693,14 @@ Normally checks for edible item(s) on the floor, then if none are found or none are chosen, checks for edible item(s) in inventory. Precede \(oqe\(cq with the \(oqm\(cq prefix to bypass attempting to eat anything off the floor. +.lp "" +If you attempt to eat while already satiated, you might choke to death. +If you risk it, you will be asked whether +to \(lqcontinue eating?\(rq \fIif you survive the first bite\fP. +You can set the +.op paranoid_confirmation:eating +option to require a response of \f(CRyes\fP instead of just \f(CRy\fP. +. .\" Make sure Elbereth is not hyphenated below, the exact spelling matters .hw Elbereth .lp E @@ -3307,6 +3315,8 @@ bones data when dying in debug mode; require \(lqyes\(rq rather than \(oqy\(cq to confirm attacking a peaceful monster; .PL wand-break require \(lqyes\(rq rather than \(oqy\(cq to confirm breaking a wand; +.PL eating +require \(lqyes\(rq rather than \(oqy\(cq to confirm whether to continue eating; .PL Were-change require \(lqyes\(rq rather than \(oqy\(cq to confirm changing form due to lycanthropy when hero has polymorph control; diff --git a/doc/Guidebook.tex b/doc/Guidebook.tex index 4c0edfabc..8a37b106f 100644 --- a/doc/Guidebook.tex +++ b/doc/Guidebook.tex @@ -45,7 +45,7 @@ %.au \author{Original version - Eric S. Raymond\\ (Edited and expanded for 3.6 by Mike Stephenson and others)} -\date{November 17, 2019} +\date{November 27, 2019} \maketitle @@ -796,7 +796,14 @@ Eat food.\\ Normally checks for edible item(s) on the floor, then if none are found or none are chosen, checks for edible item(s) in inventory. Precede `{\tt e}' with the `{\tt m}' prefix to bypass attempting to eat -anything off the floor. +anything off the floor.\\ +%.lp "" +If you attempt to eat while already satiated, you might choke to death. +If you risk it, you will be asked whether +to ``continue eating?'' {\it if you survive the first bite\/}. +You can set the +{\it paranoid\verb+_+confirmation:eating\/} +option to require a response of ``{\tt yes}'' instead of just `{\tt y}'. %.lp % Make sure Elbereth is not hyphenated below, the exact spelling matters. % (Only specified here to parallel Guidebook.mn; use of \tt font implicity @@ -1333,7 +1340,7 @@ Autocompletes. Debug mode only.\\ %.lp "" Asks for confirmation; default is `{\tt n}' (no); continue playing. -To really panic, respond with `{\tt y}''. +To really panic, respond with `{\tt y}'. You can set the {\it paranoid\verb+_+confirmation:quit\/} option to require a response of ``{\tt yes}'' instead. @@ -3640,6 +3647,9 @@ a peaceful monster; \item[{\tt wand-break}] require ``{\tt yes}'' rather than `{\tt y}' to confirm breaking a wand; +\item[{\tt eating}] +require ``{\tt yes}'' rather than `{\tt y}' to confirm whether to +continue eating; \item[{\tt Were-change}] require ``{\tt yes}'' rather than `{\tt y}' to confirm changing form due to lycanthropy diff --git a/include/flag.h b/include/flag.h index 5370faab7..3b429e01f 100644 --- a/include/flag.h +++ b/include/flag.h @@ -1,4 +1,4 @@ -/* NetHack 3.6 flag.h $NHDT-Date: 1569276988 2019/09/23 22:16:28 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.155 $ */ +/* NetHack 3.6 flag.h $NHDT-Date: 1574900824 2019/11/28 00:27:04 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.160 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Michael Allison, 2006. */ /* NetHack may be freely redistributed. See license for details. */ @@ -106,6 +106,7 @@ struct flag { #define PARANOID_REMOVE 0x0040 #define PARANOID_BREAKWAND 0x0080 #define PARANOID_WERECHANGE 0x0100 +#define PARANOID_EATING 0x0200 int pickup_burden; /* maximum burden before prompt */ int pile_limit; /* controls feedback when walking over objects */ char inv_order[MAXOCLASSES]; @@ -520,6 +521,9 @@ enum runmode_types { /* werechange: accepting randomly timed werecreature change to transform from human to creature or vice versa while having polymorph control */ #define ParanoidWerechange ((flags.paranoia_bits & PARANOID_WERECHANGE) != 0) +/* continue eating: prompt given _after_first_bite_ when eating something + while satiated */ +#define ParanoidEating ((flags.paranoia_bits & PARANOID_EATING) != 0) /* command parsing, mainly dealing with number_pad handling; not saved and restored */ diff --git a/src/eat.c b/src/eat.c index 9620c372f..5e2aa1a09 100644 --- a/src/eat.c +++ b/src/eat.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 eat.c $NHDT-Date: 1573346189 2019/11/10 00:36:29 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.205 $ */ +/* NetHack 3.6 eat.c $NHDT-Date: 1574900825 2019/11/28 00:27:05 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.206 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Robert Patrick Rankin, 2012. */ /* NetHack may be freely redistributed. See license for details. */ @@ -2875,23 +2875,20 @@ int num; /* Have lesshungry() report when you're nearly full so all eating * warns when you're about to choke. */ - if (u.uhunger >= 1500) { - if (!context.victual.eating - || (context.victual.eating && !context.victual.fullwarn)) { - pline("You're having a hard time getting all of it down."); - nomovemsg = "You're finally finished."; - if (!context.victual.eating) { - multi = -2; - } else { - context.victual.fullwarn = TRUE; - if (context.victual.canchoke - && context.victual.reqtime > 1) { - /* a one-gulp food will not survive a stop */ - if (yn_function("Continue eating?", ynchars, 'n') - != 'y') { - reset_eat(); - nomovemsg = (char *) 0; - } + if (u.uhunger >= 1500 + && (!context.victual.eating + || (context.victual.eating && !context.victual.fullwarn))) { + pline("You're having a hard time getting all of it down."); + nomovemsg = "You're finally finished."; + if (!context.victual.eating) { + multi = -2; + } else { + context.victual.fullwarn = TRUE; + if (context.victual.canchoke && context.victual.reqtime > 1) { + /* a one-gulp food will not survive a stop */ + if (!paranoid_query(ParanoidEating, "Continue eating?")) { + reset_eat(); + nomovemsg = (char *) 0; } } } diff --git a/src/options.c b/src/options.c index ecb0d773b..77fd14b79 100644 --- a/src/options.c +++ b/src/options.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 options.c $NHDT-Date: 1573505739 2019/11/11 20:55:39 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.386 $ */ +/* NetHack 3.6 options.c $NHDT-Date: 1574900826 2019/11/28 00:27:06 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.388 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Michael Allison, 2008. */ /* NetHack may be freely redistributed. See license for details. */ @@ -1313,12 +1313,13 @@ STATIC_VAR const struct paranoia_opts { and "d"ie vs "d"eath, synonyms for each other so doesn't matter; (also "p"ray vs "P"aranoia, "pray" takes precedence since "Paranoia" is just a synonym for "Confirm"); "b"ones vs "br"eak-wand, the - latter requires at least two letters; "wand"-break vs "Were"-change, + latter requires at least two letters; "e"at vs "ex"plore, + "cont"inue eating vs "C"onfirm; "wand"-break vs "Were"-change, both require at least two letters during config processing and use case-senstivity for 'O's interactive menu */ { PARANOID_CONFIRM, "Confirm", 1, "Paranoia", 2, "for \"yes\" confirmations, require \"no\" to reject" }, - { PARANOID_QUIT, "quit", 1, "explore", 1, + { PARANOID_QUIT, "quit", 1, "explore", 2, "yes vs y to quit or to enter explore mode" }, { PARANOID_DIE, "die", 1, "death", 2, "yes vs y to die (explore mode or debug mode)" }, @@ -1328,6 +1329,8 @@ STATIC_VAR const struct paranoia_opts { "yes vs y to attack a peaceful monster" }, { PARANOID_BREAKWAND, "wand-break", 2, "break-wand", 2, "yes vs y to break a wand via (a)pply" }, + { PARANOID_EATING, "eat", 1, "continue", 4, + "yes vs y to continue eating after first bite when satiated" }, { PARANOID_WERECHANGE, "Were-change", 2, (const char *) 0, 0, "yes vs y to change form when lycanthropy is controllable" }, { PARANOID_PRAY, "pray", 1, 0, 0,