Option to create the character deaf

Allows creating your character permanently deaf,
for that added challenge.

Breaks saves.
This commit is contained in:
Pasi Kallinen
2023-04-11 13:19:46 +03:00
parent 699473e03f
commit ffb61612e3
12 changed files with 29 additions and 9 deletions

View File

@@ -3355,6 +3355,8 @@ Reached the Elemental Planes.
Reached the Astral Plane level.
.PL Blind
Blind from birth.
.PL Deaf
Deaf from birth.
.PL Nudist
Never wore any armor.
.PL Ascended
@@ -3393,10 +3395,10 @@ instrument played closely
enough\(embut not too close!\(emto
the Castle level's drawbridge or can be given to you via prayer boon.
.pg
\fIBlind\fP and \fINudist\fP are also conducts, and they can only be
\fIBlind\fP, \fIDeaf\fP, and \fINudist\fP are also conducts, and they can only be
enabled by setting the correspondingly named option in NETHACKOPTIONS
or run-time configuration file prior to game start.
In the case of \fIBlind\fP, the option also enforces the conduct.
In the case of \fIBlind\fP and \fIDeaf\fP, the option also enforces the conduct.
They aren't really significant accomplishments unless/until you make
substantial progress into the dungeon.
.
@@ -3815,6 +3817,9 @@ Have user confirm attacks on pets, shopkeepers, and other
peaceable creatures (default on). Persistent.
.lp dark_room
Show out-of-sight areas of lit rooms (default on). Persistent.
.lp "deaf "
Start the character permanently deaf (default false).
Persistent.
.lp disclose
Controls what information the program reveals when the game ends.
Value is a space separated list of prompting/category pairs

View File

@@ -3635,6 +3635,8 @@ Reached the Elemental Planes.
Reached the Astral Plane level.
\item[{\tt Blind}]
Blind from birth.
\item[{\tt Deaf}]
Deaf from birth.
\item[{\tt Nudist}]
Never wore any armor.
\item[{\tt Ascended}]
@@ -3683,10 +3685,10 @@ enough---but not too close!---to
the Castle level's drawbridge or can be given to you via prayer boon.
%.pg
{\it Blind\/} and {\it Nudist\/} are also conducts, and they can only be
{\it Blind\/}, {\it Deaf\/}, and {\it Nudist\/} are also conducts, and they can only be
enabled by setting the correspondingly named option in {\tt NETHACKOPTIONS}
or run-time configuration file prior to game start.
In the case of {\it Blind\/}, the option also enforces the conduct.
In the case of {\it Blind\/} and {\it Deaf\/}, the option also enforces the conduct.
They aren't really significant accomplishments unless/until you make
substantial progress into the dungeon.
@@ -4161,6 +4163,9 @@ peaceable creatures (default on). Persistent.
\item[\ib{dark\verb+_+room}]
Show out-of-sight areas of lit rooms (default on). Persistent.
%.lp
\item[\ib{deaf}]
Start the character permanently deaf (default false). Persistent.
%.lp
\item[\ib{disclose}]
Controls what information the program reveals when the game ends.
Value is a space separated list of prompting/category pairs

View File

@@ -2037,6 +2037,7 @@ give a helpful tip when first entering "farlook" mode
add a boolean option tips to disable all of the helpful tips
add a tutorial level
engravings appear on the map display
option to create the character deaf
Platform- and/or Interface-Specific New Features

View File

@@ -215,6 +215,8 @@ static int optfn_##a(int, int, boolean, char *, char *);
#endif
NHOPTB(dark_room, Advanced, 0, opt_out, set_in_game,
On, Yes, No, No, NoAlias, &flags.dark_room, Term_False)
NHOPTB(deaf, Advanced, 0, opt_in, set_in_config,
Off, Yes, No, No, "permadeaf", &u.uroleplay.deaf, Term_False)
#ifdef BACKWARD_COMPAT
NHOPTC(DECgraphics, Advanced, 70, opt_in, set_in_config,
Yes, Yes, No, No, NoAlias,

View File

@@ -17,7 +17,7 @@
* Incrementing EDITLEVEL can be used to force invalidation of old bones
* and save files.
*/
#define EDITLEVEL 80
#define EDITLEVEL 81
/*
* Development status possibilities.

View File

@@ -160,6 +160,7 @@ struct u_conduct { /* number of times... */
struct u_roleplay {
boolean blind; /* permanently blind */
boolean nudist; /* has not worn any armor, ever */
boolean deaf; /* permanently deaf */
long numbones; /* # of bones files loaded */
};

View File

@@ -114,7 +114,7 @@
/* Timeout, plus a worn mask */
#define HDeaf u.uprops[DEAF].intrinsic
#define EDeaf u.uprops[DEAF].extrinsic
#define Deaf (HDeaf || EDeaf)
#define Deaf (HDeaf || EDeaf || u.uroleplay.deaf)
#define HFumbling u.uprops[FUMBLING].intrinsic
#define EFumbling u.uprops[FUMBLING].extrinsic

View File

@@ -886,7 +886,8 @@ from_what(int propidx) /* special cases can have negative values */
* There are exceptions. Versatile jumping from spell or boots
* takes priority over knight's innate but limited jumping.
*/
if (propidx == BLINDED && u.uroleplay.blind)
if ((propidx == BLINDED && u.uroleplay.blind)
|| (propidx == DEAF && u.uroleplay.deaf))
Sprintf(buf, " from birth");
else if (innateness == FROM_ROLE || innateness == FROM_RACE)
Strcpy(buf, " innately");

View File

@@ -2013,6 +2013,8 @@ show_conduct(int final)
if (u.uroleplay.blind)
you_have_been("blind from birth");
if (u.uroleplay.deaf)
you_have_been("deaf from birth");
if (u.uroleplay.nudist)
you_have_been("faithfully nudist");

View File

@@ -448,7 +448,8 @@ make_deaf(long xtime, boolean talk)
if ((xtime != 0L) ^ (old != 0L)) {
gc.context.botl = TRUE;
if (talk)
You(old ? "can hear again." : "are unable to hear anything.");
You(old && !Deaf ? "can hear again."
: "are unable to hear anything.");
}
}

View File

@@ -817,7 +817,8 @@ nh_timeout(void)
* to this number must be thoroughly play tested.
*/
if ((inv_weight() > -500)) {
You("make a lot of noise!");
if (!Deaf)
You("make a lot of noise!");
wake_nearby();
}
}

View File

@@ -591,6 +591,7 @@ encode_extended_conducts(char *buf)
if (sokoban_in_play())
add_achieveX(buf, "sokoban", !u.uconduct.sokocheat);
add_achieveX(buf, "blind", u.uroleplay.blind);
add_achieveX(buf, "deaf", u.uroleplay.deaf);
add_achieveX(buf, "nudist", u.uroleplay.nudist);
add_achieveX(buf, "bonesless", !flags.bones);