paranoid_confirmation [expanded user patch] (trunk only; 2 of 2)
[Short writeup; see 'cvs log' of flag.h or options.c for the long one.]
This is a reworking of user contributed patch known as Paranoid_Quit.
Add a new compound option, paranoid_confirmation, accepting a space
separated list of values "quit die attack pray Remove"; default is "pray".
paranoid:quit - yes vs y for "really quit?" and "enter explore mode?"
paranoid:die - yes vs y for "die?" in explore mode or wizard mode
paranoid:attack - yes vs y for "really attack <peacful monster>?"
paranoid:pray - y to pray; supersedes prayconfirm boolean; on by default
paranoid:Remove - always issue an inventory prompt for 'R' an 'T', even
when only one applicable item is currently worn.
This commit is contained in:
@@ -25,7 +25,6 @@ null allow nulls to be sent to your terminal [TRUE]
|
|||||||
delay code) if moving objects seem to teleport across rooms
|
delay code) if moving objects seem to teleport across rooms
|
||||||
perm_invent keep inventory in a permanent window [FALSE]
|
perm_invent keep inventory in a permanent window [FALSE]
|
||||||
pickup_thrown override pickup_types for thrown objects [TRUE]
|
pickup_thrown override pickup_types for thrown objects [TRUE]
|
||||||
prayconfirm use confirmation prompt when #pray command issued [TRUE]
|
|
||||||
pushweapon when wielding a new weapon, put your previously
|
pushweapon when wielding a new weapon, put your previously
|
||||||
wielded weapon into the secondary weapon slot [FALSE]
|
wielded weapon into the secondary weapon slot [FALSE]
|
||||||
rawio allow the use of raw I/O [FALSE]
|
rawio allow the use of raw I/O [FALSE]
|
||||||
@@ -113,6 +112,14 @@ packorder a list of default symbols for kinds of objects that gives the
|
|||||||
order in which your pack will be displayed [")[%?+!=/(*`0_]
|
order in which your pack will be displayed [")[%?+!=/(*`0_]
|
||||||
(If you specify only some kinds of items, the others from the
|
(If you specify only some kinds of items, the others from the
|
||||||
default order will be appended to the end.)
|
default order will be appended to the end.)
|
||||||
|
paranoid_confirmation space separated list of situations where alternate
|
||||||
|
prompting is desired [paranoid_confirmation:pray]
|
||||||
|
quit -- yes vs y to confirm quitting or to enter explore mode
|
||||||
|
die -- yes vs y to confirm dying (for explore or debug mode)
|
||||||
|
attack -- yes vs y to confirm attacking a peaceful monster
|
||||||
|
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
|
||||||
pickup_burden when you pick up an item that exceeds this encumberance
|
pickup_burden when you pick up an item that exceeds this encumberance
|
||||||
level (Unencumbered, Burdened, streSsed, straiNed, overTaxed,
|
level (Unencumbered, Burdened, streSsed, straiNed, overTaxed,
|
||||||
or overLoaded), you will be asked if you want to continue. [S]
|
or overLoaded), you will be asked if you want to continue. [S]
|
||||||
|
|||||||
@@ -1973,6 +1973,28 @@ Specify the order to list object types in (default ``")[%?+!=/(*`0_'').
|
|||||||
The value of this option should be a string containing the
|
The value of this option should be a string containing the
|
||||||
symbols for the various object types. Any omitted types are filled in
|
symbols for the various object types. Any omitted types are filled in
|
||||||
at the end from the previous order.
|
at the end from the previous order.
|
||||||
|
.lp paranoid_confirmation
|
||||||
|
A space separated list of specific situations where alternate
|
||||||
|
prompting is desired. The default is paranoid_confirmation:pray.
|
||||||
|
.sd
|
||||||
|
.si
|
||||||
|
quit - require "yes" rather than 'y' to confirm quitting
|
||||||
|
the game or switching into non-scoring explore mode;
|
||||||
|
die - require "yes" rather than 'y' to confirm dying (not
|
||||||
|
useful in normal play; applies to explore mode);
|
||||||
|
attack - require "yes" rather than 'y' to confirm attacking
|
||||||
|
a peaceful monster;
|
||||||
|
pray - require 'y' to confirm an attempt to pray rather
|
||||||
|
than immediately praying; on by default;
|
||||||
|
Remove - require selection from inventory for 'R' and 'T'
|
||||||
|
commands even when wearing just one applicable item.
|
||||||
|
.ei
|
||||||
|
.ed
|
||||||
|
By default, the pray choice is enabled, the others disabled.
|
||||||
|
To disable it without setting
|
||||||
|
any of the other choices, use ``paranoid_confirmation:none''. To keep
|
||||||
|
it enabled while setting any of the others, include it in the list,
|
||||||
|
such as ``paranoid_confirmation:attack pray Remove''.
|
||||||
.lp perm_invent
|
.lp perm_invent
|
||||||
If true, always display your current inventory in a window. This only
|
If true, always display your current inventory in a window. This only
|
||||||
makes sense for windowing system interfaces that implement this feature.
|
makes sense for windowing system interfaces that implement this feature.
|
||||||
@@ -2021,8 +2043,6 @@ user name (on multi-user systems) or specifying a particular character
|
|||||||
name (on single-user systems) or it might be disabled entirely. Requesting
|
name (on single-user systems) or it might be disabled entirely. Requesting
|
||||||
it when not allowed or not possible results in explore mode instead.
|
it when not allowed or not possible results in explore mode instead.
|
||||||
Default is normal play.
|
Default is normal play.
|
||||||
.lp prayconfirm
|
|
||||||
Prompt for confirmation before praying (default on).
|
|
||||||
.lp pushweapon
|
.lp pushweapon
|
||||||
Using the `w' (wield) command when already wielding
|
Using the `w' (wield) command when already wielding
|
||||||
something pushes the old item into your alternate weapon slot (default off).
|
something pushes the old item into your alternate weapon slot (default off).
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
\begin{document}
|
\begin{document}
|
||||||
%
|
%
|
||||||
% input file: guidebook.mn
|
% input file: guidebook.mn
|
||||||
% $Revision: 1.109 $ $Date: 2009/10/18 23:52:34 $
|
% $Revision: 1.110 $ $Date: 2009/10/20 22:48:30 $
|
||||||
%
|
%
|
||||||
%.ds h0 "
|
%.ds h0 "
|
||||||
%.ds h1 %.ds h2 \%
|
%.ds h1 %.ds h2 \%
|
||||||
@@ -2454,6 +2454,37 @@ Specify the order to list object types in (default
|
|||||||
containing the symbols for the various object types. Any omitted types
|
containing the symbols for the various object types. Any omitted types
|
||||||
are filled in at the end from the previous order.
|
are filled in at the end from the previous order.
|
||||||
%.lp
|
%.lp
|
||||||
|
\item[\ib{paranoid_confirmation}]
|
||||||
|
A space separated list of specific situations where alternate
|
||||||
|
prompting is desired. The default is ``{\tt paranoid_confirmation:pray}''.
|
||||||
|
%.sd
|
||||||
|
%.si
|
||||||
|
\blist{} % this might look better as a table
|
||||||
|
\item[{\tt quit}]
|
||||||
|
require ``{\tt yes}'' rather than `{\tt y}' to confirm quitting
|
||||||
|
the game or switching into non-scoring explore mode;
|
||||||
|
\item[{\tt die}]
|
||||||
|
require ``{\tt yes}'' rather than '{\tt y}' to confirm dying (not
|
||||||
|
useful in normal play; applies to explore mode);
|
||||||
|
\item[{\tt attack}]
|
||||||
|
require ``{\tt yes}'' rather than '{\tt y}' to confirm attacking
|
||||||
|
a peaceful monster;
|
||||||
|
\item[{\tt pray}]
|
||||||
|
require `{\tt y}' to confirm an attempt to pray rather
|
||||||
|
than immediately praying; on by default;
|
||||||
|
\item[{\tt Remove}] require selection from inventory for `{\tt R}' and `{\tt T}'
|
||||||
|
commands even when wearing just one applicable item.
|
||||||
|
\elist
|
||||||
|
%.ei
|
||||||
|
%.ed
|
||||||
|
{\relax
|
||||||
|
By default, the pray choice is enabled, the others disabled.
|
||||||
|
To disable it without setting
|
||||||
|
any of the other choices, use ``{\tt paranoid_confirmation:none}''. To keep
|
||||||
|
it enabled while setting others, include it in the list,
|
||||||
|
such as ``{\tt paranoid_con\-fir\-ma\-tion:\-attack~pray~Remove}''.
|
||||||
|
}%relax
|
||||||
|
%.lp
|
||||||
\item[\ib{perm\_invent}]
|
\item[\ib{perm\_invent}]
|
||||||
If true, always display your current inventory in a window. This only
|
If true, always display your current inventory in a window. This only
|
||||||
makes sense for windowing system interfaces that implement this feature.
|
makes sense for windowing system interfaces that implement this feature.
|
||||||
@@ -2467,7 +2498,7 @@ If the choice is not allowed for the role you are currently playing,
|
|||||||
it will be silently ignored. For example, ``{\tt horse}'' will only be
|
it will be silently ignored. For example, ``{\tt horse}'' will only be
|
||||||
honored when playing a knight.
|
honored when playing a knight.
|
||||||
Cannot be set with the `{\tt O}' command.
|
Cannot be set with the `{\tt O}' command.
|
||||||
%.Ip
|
%.lp
|
||||||
\item[\ib{pickup\_burden}]
|
\item[\ib{pickup\_burden}]
|
||||||
When you pick up an item that would exceed this encumbrance
|
When you pick up an item that would exceed this encumbrance
|
||||||
level (Unencumbered, Burdened, streSsed, straiNed, overTaxed,
|
level (Unencumbered, Burdened, streSsed, straiNed, overTaxed,
|
||||||
@@ -2504,9 +2535,6 @@ name (on single-user systems) or it might be disabled entirely. Requesting
|
|||||||
it when not allowed or not possible results in explore mode instead.
|
it when not allowed or not possible results in explore mode instead.
|
||||||
Default is normal play.
|
Default is normal play.
|
||||||
%.lp
|
%.lp
|
||||||
\item[\ib{prayconfirm}]
|
|
||||||
Prompt for confirmation before praying (default on).
|
|
||||||
%.lp
|
|
||||||
\item[\ib{pushweapon}]
|
\item[\ib{pushweapon}]
|
||||||
Using the `w' (wield) command when already wielding
|
Using the `w' (wield) command when already wielding
|
||||||
something pushes the old item into your alternate weapon slot (default off).
|
something pushes the old item into your alternate weapon slot (default off).
|
||||||
|
|||||||
@@ -477,6 +477,12 @@ chatting to a gecko or shopkeeper while hallucinating gives alternate message
|
|||||||
mimic posing as door might steal hero's key when [un]locking is attempted
|
mimic posing as door might steal hero's key when [un]locking is attempted
|
||||||
polymorphing into a dragon while wearing dragon scale mail will cause that
|
polymorphing into a dragon while wearing dragon scale mail will cause that
|
||||||
mail to revert to dragon scales
|
mail to revert to dragon scales
|
||||||
|
adopt/adapt/improve the Paranoid_Quit patch; default is paranoid_confirm:pray
|
||||||
|
paranoid_confirm:quit yes vs y to quit or to enter explore mode
|
||||||
|
paranoid_confirm:die yes vs y to die in explore or wizard mode
|
||||||
|
paranoid_confirm:attack yes vs y to attack a peaceful monster
|
||||||
|
paranoid_confirm:pray y to confirm #pray; supersedes prayconfirm
|
||||||
|
paranoid_confirm:Remove always pick from inventory for 'R' and 'T'
|
||||||
|
|
||||||
|
|
||||||
Platform- and/or Interface-Specific New Features
|
Platform- and/or Interface-Specific New Features
|
||||||
|
|||||||
@@ -216,6 +216,7 @@ E char NDECL(readchar);
|
|||||||
E void NDECL(sanity_check);
|
E void NDECL(sanity_check);
|
||||||
#endif
|
#endif
|
||||||
E char FDECL(yn_function, (const char *, const char *, CHAR_P));
|
E char FDECL(yn_function, (const char *, const char *, CHAR_P));
|
||||||
|
E boolean FDECL(paranoid_query, (BOOLEAN_P,const char *));
|
||||||
|
|
||||||
/* ### dbridge.c ### */
|
/* ### dbridge.c ### */
|
||||||
|
|
||||||
|
|||||||
@@ -13,10 +13,10 @@
|
|||||||
* Incrementing EDITLEVEL can be used to force invalidation of old bones
|
* Incrementing EDITLEVEL can be used to force invalidation of old bones
|
||||||
* and save files.
|
* and save files.
|
||||||
*/
|
*/
|
||||||
#define EDITLEVEL 44
|
#define EDITLEVEL 45
|
||||||
|
|
||||||
#define COPYRIGHT_BANNER_A \
|
#define COPYRIGHT_BANNER_A \
|
||||||
"NetHack, Copyright 1985-2009"
|
"NetHack, Copyright 1985-2011"
|
||||||
|
|
||||||
#define COPYRIGHT_BANNER_B \
|
#define COPYRIGHT_BANNER_B \
|
||||||
" By Stichting Mathematisch Centrum and M. Stephenson."
|
" By Stichting Mathematisch Centrum and M. Stephenson."
|
||||||
|
|||||||
53
src/cmd.c
53
src/cmd.c
@@ -503,19 +503,26 @@ domonability(VOID_ARGS)
|
|||||||
int
|
int
|
||||||
enter_explore_mode(VOID_ARGS)
|
enter_explore_mode(VOID_ARGS)
|
||||||
{
|
{
|
||||||
if(!discover && !wizard) {
|
if (wizard) {
|
||||||
pline("Beware! From explore mode there will be no return to normal game.");
|
#ifdef WIZARD
|
||||||
if (yn("Do you want to enter explore mode?") == 'y') {
|
You("are in debug mode.");
|
||||||
clear_nhwindow(WIN_MESSAGE);
|
#endif
|
||||||
You("are now in non-scoring explore mode.");
|
} else if (discover) {
|
||||||
discover = TRUE;
|
You("are already in explore mode.");
|
||||||
}
|
} else {
|
||||||
else {
|
pline(
|
||||||
clear_nhwindow(WIN_MESSAGE);
|
"Beware! From explore mode there will be no return to normal game.");
|
||||||
pline("Resuming normal game.");
|
if (paranoid_query(ParanoidQuit,
|
||||||
}
|
"Do you want to enter explore mode?")) {
|
||||||
|
clear_nhwindow(WIN_MESSAGE);
|
||||||
|
You("are now in non-scoring explore mode.");
|
||||||
|
discover = TRUE;
|
||||||
|
} else {
|
||||||
|
clear_nhwindow(WIN_MESSAGE);
|
||||||
|
pline("Resuming normal game.");
|
||||||
}
|
}
|
||||||
return 0;
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef DUNGEON_OVERVIEW
|
#ifdef DUNGEON_OVERVIEW
|
||||||
@@ -3616,6 +3623,28 @@ char def;
|
|||||||
return (*windowprocs.win_yn_function)(qbuf, resp, def);
|
return (*windowprocs.win_yn_function)(qbuf, resp, def);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* for paranoid_confirm:quit,die,attack prompting */
|
||||||
|
boolean
|
||||||
|
paranoid_query(be_paranoid, prompt)
|
||||||
|
boolean be_paranoid;
|
||||||
|
const char *prompt;
|
||||||
|
{
|
||||||
|
char qbuf[QBUFSZ], ans[BUFSZ];
|
||||||
|
boolean confirmed_ok;
|
||||||
|
|
||||||
|
/* when paranoid, player must respond with "yes" rather than just 'y'
|
||||||
|
to give the go-ahead for this query; default is "no", obviously */
|
||||||
|
if (be_paranoid) {
|
||||||
|
Sprintf(qbuf, "%s (yes) [no]", prompt);
|
||||||
|
getlin(qbuf, ans);
|
||||||
|
(void) mungspaces(ans);
|
||||||
|
confirmed_ok = !strcmpi(ans, "yes");
|
||||||
|
} else
|
||||||
|
confirmed_ok = (yn(prompt) == 'y');
|
||||||
|
|
||||||
|
return confirmed_ok;
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
dosuspend_core(){
|
dosuspend_core(){
|
||||||
#ifdef SUSPEND
|
#ifdef SUSPEND
|
||||||
|
|||||||
@@ -1232,12 +1232,12 @@ dotakeoff()
|
|||||||
" Use 'R' command to remove accessories." : "");
|
" Use 'R' command to remove accessories." : "");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (armorpieces > 1)
|
if (armorpieces > 1 || ParanoidRemove)
|
||||||
otmp = getobj(clothes, "take off");
|
otmp = getobj(clothes, "take off");
|
||||||
if (otmp == 0) return(0);
|
if (!otmp) return 0;
|
||||||
if (!(otmp->owornmask & W_ARMOR)) {
|
if (!(otmp->owornmask & W_ARMOR)) {
|
||||||
You("are not wearing that.");
|
You("are not wearing that.");
|
||||||
return(0);
|
return 0;
|
||||||
}
|
}
|
||||||
/* note: the `uskin' case shouldn't be able to happen here; dragons
|
/* note: the `uskin' case shouldn't be able to happen here; dragons
|
||||||
can't wear any armor so will end up with `armorpieces == 0' above */
|
can't wear any armor so will end up with `armorpieces == 0' above */
|
||||||
@@ -1295,11 +1295,12 @@ doremring()
|
|||||||
" Use 'T' command to take off armor." : "");
|
" Use 'T' command to take off armor." : "");
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
if (Accessories != 1) otmp = getobj(accessories, "remove");
|
if (Accessories > 1 || ParanoidRemove)
|
||||||
if(!otmp) return(0);
|
otmp = getobj(accessories, "remove");
|
||||||
if(!(otmp->owornmask & (W_RING | W_AMUL | W_TOOL))) {
|
if (!otmp) return 0;
|
||||||
|
if (!(otmp->owornmask & (W_RING | W_AMUL | W_TOOL))) {
|
||||||
You("are not wearing that.");
|
You("are not wearing that.");
|
||||||
return(0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
reset_remarm(); /* clear context.takeoff.mask and context.takeoff.what */
|
reset_remarm(); /* clear context.takeoff.mask and context.takeoff.what */
|
||||||
|
|||||||
@@ -298,7 +298,7 @@ int sig_unused;
|
|||||||
int
|
int
|
||||||
done2()
|
done2()
|
||||||
{
|
{
|
||||||
if(yn("Really quit?") == 'n') {
|
if (!paranoid_query(ParanoidQuit, "Really quit?")) {
|
||||||
#ifndef NO_SIGNAL
|
#ifndef NO_SIGNAL
|
||||||
(void) signal(SIGINT, (SIG_RET_TYPE) done1);
|
(void) signal(SIGINT, (SIG_RET_TYPE) done1);
|
||||||
#endif
|
#endif
|
||||||
@@ -865,7 +865,7 @@ int how;
|
|||||||
wizard ||
|
wizard ||
|
||||||
#endif
|
#endif
|
||||||
discover) && (how <= GENOCIDED)) {
|
discover) && (how <= GENOCIDED)) {
|
||||||
if(yn("Die?") == 'y') goto die;
|
if (paranoid_query(ParanoidDie, "Die?")) goto die;
|
||||||
pline("OK, so you don't %s.",
|
pline("OK, so you don't %s.",
|
||||||
(how == CHOKING) ? "choke" : "die");
|
(how == CHOKING) ? "choke" : "die");
|
||||||
savelife(how);
|
savelife(how);
|
||||||
|
|||||||
@@ -1648,9 +1648,8 @@ int
|
|||||||
dopray()
|
dopray()
|
||||||
{
|
{
|
||||||
/* Confirm accidental slips of Alt-P */
|
/* Confirm accidental slips of Alt-P */
|
||||||
if (flags.prayconfirm)
|
if (ParanoidPray && yn("Are you sure you want to pray?") != 'y')
|
||||||
if (yn("Are you sure you want to pray?") == 'n')
|
return 0;
|
||||||
return 0;
|
|
||||||
|
|
||||||
u.uconduct.gnostic++;
|
u.uconduct.gnostic++;
|
||||||
|
|
||||||
|
|||||||
@@ -205,7 +205,7 @@ struct obj *wep; /* uwep for attack(), null for kick_monster() */
|
|||||||
}
|
}
|
||||||
if (canspotmon(mtmp)) {
|
if (canspotmon(mtmp)) {
|
||||||
Sprintf(qbuf, "Really attack %s?", mon_nam(mtmp));
|
Sprintf(qbuf, "Really attack %s?", mon_nam(mtmp));
|
||||||
if (yn(qbuf) != 'y') {
|
if (!paranoid_query(ParanoidHit, qbuf)) {
|
||||||
context.move = 0;
|
context.move = 0;
|
||||||
return(TRUE);
|
return(TRUE);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user