Options to create the character blind or nudist
For those pro players who really want to try their hand at that zen samurai, without needing to reroll thousands of times to start with blindfold. Nudist starts without any armor, and keeps tabs whether you wore any during the game, for even more bragging rights. Also makes the Book of the Dead readable even while blind, for obvious reasons.
This commit is contained in:
@@ -691,6 +691,8 @@ int propidx; /* special cases can have negative values */
|
||||
Sprintf(buf, because_of,
|
||||
obj->oartifact ? bare_artifactname(obj) :
|
||||
ysimple_name(obj));
|
||||
else if (propidx == BLINDED && u.uroleplay.blind)
|
||||
Sprintf(buf, " from birth");
|
||||
else if (propidx == BLINDED && Blindfolded_only)
|
||||
Sprintf(buf, because_of, ysimple_name(ublindf));
|
||||
|
||||
|
||||
@@ -2246,6 +2246,9 @@ int final;
|
||||
en_win = create_nhwindow(NHW_MENU);
|
||||
putstr(en_win, 0, "Voluntary challenges:");
|
||||
|
||||
if (u.uroleplay.blind) you_have_been("blind from birth");
|
||||
if (u.uroleplay.nudist) you_have_been("faithfully nudist");
|
||||
|
||||
if (!u.uconduct.food)
|
||||
enl_msg(You_, "have gone", "went", " without food", "");
|
||||
/* But beverages are okay */
|
||||
|
||||
@@ -85,6 +85,7 @@ static struct Bool_Opt
|
||||
#else
|
||||
{"BIOS", (boolean *)0, FALSE, SET_IN_FILE},
|
||||
#endif
|
||||
{"blind", &u.uroleplay.blind, FALSE, DISP_IN_GAME},
|
||||
{"bones", &flags.bones, TRUE, SET_IN_FILE},
|
||||
#ifdef INSURANCE
|
||||
{"checkpoint", &flags.ins_chkpt, TRUE, SET_IN_GAME},
|
||||
@@ -149,6 +150,7 @@ static struct Bool_Opt
|
||||
#else
|
||||
{"news", (boolean *)0, FALSE, SET_IN_FILE},
|
||||
#endif
|
||||
{"nudist", &u.uroleplay.nudist, FALSE, DISP_IN_GAME},
|
||||
{"null", &flags.null, TRUE, SET_IN_GAME},
|
||||
#if defined(SYSFLAGS) && defined(MAC)
|
||||
{"page_wait", &sysflags.page_wait, TRUE, SET_IN_GAME},
|
||||
|
||||
@@ -287,7 +287,7 @@ doread()
|
||||
&& scroll->oclass != SPBOOK_CLASS) {
|
||||
pline(silly_thing_to, "read");
|
||||
return(0);
|
||||
} else if (Blind) {
|
||||
} else if (Blind && (scroll->otyp != SPE_BOOK_OF_THE_DEAD)) {
|
||||
const char *what = 0;
|
||||
if (scroll->oclass == SPBOOK_CLASS)
|
||||
what = "mystic runes";
|
||||
|
||||
@@ -397,6 +397,8 @@ encodeachieve()
|
||||
if(u.uachieve.mines_luckstone) r |= 1L << 9;
|
||||
if(u.uachieve.finish_sokoban) r |= 1L << 10;
|
||||
if(u.uachieve.killed_medusa) r |= 1L << 11;
|
||||
if(u.uroleplay.blind) r |= 1L << 12;
|
||||
if(u.uroleplay.nudist) r |= 1L << 13;
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
10
src/u_init.c
10
src/u_init.c
@@ -491,6 +491,7 @@ void
|
||||
u_init()
|
||||
{
|
||||
register int i;
|
||||
struct u_roleplay tmpuroleplay = u.uroleplay; /* these set by rcfile options */
|
||||
|
||||
flags.female = flags.initgend;
|
||||
flags.beginner = 1;
|
||||
@@ -502,6 +503,8 @@ u_init()
|
||||
(void) memset((genericptr_t)&ubirthday, 0, sizeof(ubirthday));
|
||||
(void) memset((genericptr_t)&urealtime, 0, sizeof(urealtime));
|
||||
|
||||
u.uroleplay = tmpuroleplay; /* restore options set via rcfile */
|
||||
|
||||
#if 0 /* documentation of more zero values as desirable */
|
||||
u.usick_cause[0] = 0;
|
||||
u.uluck = u.moreluck = 0;
|
||||
@@ -922,6 +925,13 @@ register struct trobj *trop;
|
||||
nocreate4 = otyp;
|
||||
}
|
||||
|
||||
/* nudist gets no armor */
|
||||
if (u.uroleplay.nudist && obj->oclass == ARMOR_CLASS) {
|
||||
dealloc_obj(obj);
|
||||
trop++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (trop->trclass == COIN_CLASS) {
|
||||
/* no "blessed" or "identified" money */
|
||||
obj->quan = u.umoney0;
|
||||
|
||||
@@ -57,6 +57,7 @@ long mask;
|
||||
uskin = obj;
|
||||
/* assert( !uarm ); */
|
||||
} else {
|
||||
if ((mask & W_ARMOR)) u.uroleplay.nudist = FALSE;
|
||||
for(wp = worn; wp->w_mask; wp++) if(wp->w_mask & mask) {
|
||||
oobj = *(wp->w_obj);
|
||||
if(oobj && !(oobj->owornmask & wp->w_mask))
|
||||
|
||||
Reference in New Issue
Block a user