self-genocide's "you feel dead inside"
It seems to me that the reaction to "you feel dead inside" when you're polymorphed into an undead creature at the time would be "so what else is new?". Vary the "dead" when current form is something which gets reported as "destroyed" rather than "killed" when killed. That happens for things flagged as non-living. Now undead "feel condemned inside" and golems "feel empty inside". Neither of those are ideal but they're more interesting than "feel dead inside". After becoming dead inside, give a reminder about that during enlightenment and if you restore a saved game in that condition. It was the latter that set this in motion: I wanted to confirm that restoring with u.uhp == -1 didn't give "you aren't healthy enough to survive restoration" when polymorphed. (It doesn't; the game resumes and you'll die if/when you rehumanize.)
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 polyself.c $NHDT-Date: 1497485548 2017/06/15 00:12:28 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.112 $ */
|
||||
/* NetHack 3.6 polyself.c $NHDT-Date: 1513130017 2017/12/13 01:53:37 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.115 $ */
|
||||
/* Copyright (C) 1987, 1988, 1989 by Ken Arromdee */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -189,12 +189,7 @@ const char *fmt, *arg;
|
||||
|
||||
You(fmt, arg);
|
||||
/* check whether player foolishly genocided self while poly'd */
|
||||
if ((mvitals[urole.malenum].mvflags & G_GENOD)
|
||||
|| (urole.femalenum != NON_PM
|
||||
&& (mvitals[urole.femalenum].mvflags & G_GENOD))
|
||||
|| (mvitals[urace.malenum].mvflags & G_GENOD)
|
||||
|| (urace.femalenum != NON_PM
|
||||
&& (mvitals[urace.femalenum].mvflags & G_GENOD))) {
|
||||
if (ugenocided()) {
|
||||
/* intervening activity might have clobbered genocide info */
|
||||
struct kinfo *kptr = find_delayed_killer(POLYMORPH);
|
||||
|
||||
@@ -1813,4 +1808,31 @@ polysense()
|
||||
}
|
||||
}
|
||||
|
||||
/* True iff hero's role or race has been genocided */
|
||||
boolean
|
||||
ugenocided()
|
||||
{
|
||||
return (boolean) ((mvitals[urole.malenum].mvflags & G_GENOD)
|
||||
|| (urole.femalenum != NON_PM
|
||||
&& (mvitals[urole.femalenum].mvflags & G_GENOD))
|
||||
|| (mvitals[urace.malenum].mvflags & G_GENOD)
|
||||
|| (urace.femalenum != NON_PM
|
||||
&& (mvitals[urace.femalenum].mvflags & G_GENOD)));
|
||||
}
|
||||
|
||||
/* how hero feels "inside" after self-genocide of role or race */
|
||||
const char *
|
||||
udeadinside()
|
||||
{
|
||||
/* self-genocide used to always say "you feel dead inside" but that
|
||||
seems silly when you're polymorphed into something undead;
|
||||
monkilled() distinguishes between living (killed) and non (destroyed)
|
||||
for monster death message; we refine the nonliving aspect a bit */
|
||||
return !nonliving(youmonst.data)
|
||||
? "dead" /* living, including demons */
|
||||
: !weirdnonliving(youmonst.data)
|
||||
? "condemned" /* undead plus manes */
|
||||
: "empty"; /* golems plus vortices */
|
||||
}
|
||||
|
||||
/*polyself.c*/
|
||||
|
||||
Reference in New Issue
Block a user