Expand safe_wait to deadly status afflictions
Searching or waiting with safe_wait on will now consider sliming, stoning, or deadly illness to be hazardous and prevent the command.
This commit is contained in:
@@ -174,6 +174,8 @@ revival via undead turning of corpse carried by hero said "your <mon> corpse
|
|||||||
comes alive" even when revived monster was undead
|
comes alive" even when revived monster was undead
|
||||||
prevent searching or waiting next to a hostile monster if boolean option
|
prevent searching or waiting next to a hostile monster if boolean option
|
||||||
safe_wait is on - override with 'm'
|
safe_wait is on - override with 'm'
|
||||||
|
prevent searching or waiting if hero is slimed, stoning, or deadly ill
|
||||||
|
if safe_wait is on - override with 'm'
|
||||||
allow random mimics to show up mimicing more furniture than just stairs
|
allow random mimics to show up mimicing more furniture than just stairs
|
||||||
scatter exploding bag of holding contents instead of outright deleting them
|
scatter exploding bag of holding contents instead of outright deleting them
|
||||||
male hero poly'd into nymph chooses charm vs seduce message based on being
|
male hero poly'd into nymph chooses charm vs seduce message based on being
|
||||||
|
|||||||
+2
-1
@@ -479,7 +479,8 @@ extern void deferred_goto(void);
|
|||||||
extern boolean revive_corpse(struct obj *);
|
extern boolean revive_corpse(struct obj *);
|
||||||
extern void revive_mon(union any *, long);
|
extern void revive_mon(union any *, long);
|
||||||
extern void zombify_mon(union any *, long);
|
extern void zombify_mon(union any *, long);
|
||||||
extern boolean cmd_safety_prevention(const char *, const char *, int *);
|
extern boolean cmd_safety_prevention(const char *, const char *,
|
||||||
|
const char *, int *);
|
||||||
extern int donull(void);
|
extern int donull(void);
|
||||||
extern int dowipe(void);
|
extern int dowipe(void);
|
||||||
extern void legs_in_no_shape(const char *, boolean);
|
extern void legs_in_no_shape(const char *, boolean);
|
||||||
|
|||||||
+1
-1
@@ -1948,7 +1948,7 @@ dosearch0(int aflag) /* intrinsic autosearch vs explicit searching */
|
|||||||
int
|
int
|
||||||
dosearch(void)
|
dosearch(void)
|
||||||
{
|
{
|
||||||
if (cmd_safety_prevention("another search",
|
if (cmd_safety_prevention("Searching", "another search",
|
||||||
"You already found a monster.",
|
"You already found a monster.",
|
||||||
&ga.already_found_flag))
|
&ga.already_found_flag))
|
||||||
return ECMD_OK;
|
return ECMD_OK;
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ static void dosinkring(struct obj *);
|
|||||||
static int drop(struct obj *);
|
static int drop(struct obj *);
|
||||||
static int menudrop_split(struct obj *, long);
|
static int menudrop_split(struct obj *, long);
|
||||||
static boolean engulfer_digests_food(struct obj *);
|
static boolean engulfer_digests_food(struct obj *);
|
||||||
|
static boolean danger_uprops(void);
|
||||||
static int wipeoff(void);
|
static int wipeoff(void);
|
||||||
static int menu_drop(int);
|
static int menu_drop(int);
|
||||||
static NHFILE *currentlevel_rewrite(void);
|
static NHFILE *currentlevel_rewrite(void);
|
||||||
@@ -2132,19 +2133,34 @@ zombify_mon(anything *arg, long timeout)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean
|
/* return TRUE if hero properties are dangerous to hero */
|
||||||
cmd_safety_prevention(const char *cmddesc, const char *act, int *flagcounter)
|
static boolean
|
||||||
|
danger_uprops(void)
|
||||||
{
|
{
|
||||||
if (flags.safe_wait && !iflags.menu_requested
|
return (((Stoned && !Stone_resistance)
|
||||||
&& !gm.multi && monster_nearby()) {
|
|| Slimed
|
||||||
|
|| ((Sick & SICK_NONVOMITABLE) && !Sick_resistance)));
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean
|
||||||
|
cmd_safety_prevention(const char *ucverb, const char *cmddesc,
|
||||||
|
const char *act, int *flagcounter)
|
||||||
|
{
|
||||||
|
if (flags.safe_wait && !iflags.menu_requested && !gm.multi) {
|
||||||
char buf[QBUFSZ];
|
char buf[QBUFSZ];
|
||||||
|
|
||||||
buf[0] = '\0';
|
buf[0] = '\0';
|
||||||
if (iflags.cmdassist || !(*flagcounter)++)
|
if (iflags.cmdassist || !(*flagcounter)++)
|
||||||
Sprintf(buf, " Use '%s' prefix to force %s.",
|
Sprintf(buf, " Use '%s' prefix to force %s.",
|
||||||
visctrl(cmd_from_func(do_reqmenu)), cmddesc);
|
visctrl(cmd_from_func(do_reqmenu)), cmddesc);
|
||||||
Norep("%s%s", act, buf);
|
|
||||||
return TRUE;
|
if (monster_nearby()) {
|
||||||
|
Norep("%s%s", act, buf);
|
||||||
|
return TRUE;
|
||||||
|
} else if (danger_uprops()) {
|
||||||
|
Norep("%s doesn't feel like a good idea right now.", ucverb);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
*flagcounter = 0;
|
*flagcounter = 0;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@@ -2155,7 +2171,7 @@ cmd_safety_prevention(const char *cmddesc, const char *act, int *flagcounter)
|
|||||||
int
|
int
|
||||||
donull(void)
|
donull(void)
|
||||||
{
|
{
|
||||||
if (cmd_safety_prevention("a no-op (to rest)",
|
if (cmd_safety_prevention("Waiting", "a no-op (to rest)",
|
||||||
"Are you waiting to get hit?",
|
"Are you waiting to get hit?",
|
||||||
&gd.did_nothing_flag))
|
&gd.did_nothing_flag))
|
||||||
return ECMD_OK;
|
return ECMD_OK;
|
||||||
|
|||||||
Reference in New Issue
Block a user