fix #S14667 - livelog of genocide when hallucinating

Uncursed genocide while hallucinating deliberately reports hero's
role to the player as the affected target, but it was also showing
that for livelog and #chronicle.

Making the true target be visible for #chronicle gives away a little
information but that should be inconsequential in this siutation
since the player specifies the target.

Not sure why this report got misclassified as spam.
This commit is contained in:
PatR
2025-11-07 13:03:46 -08:00
parent 82edcca402
commit 3113387371
2 changed files with 13 additions and 11 deletions
+3 -1
View File
@@ -1,4 +1,4 @@
NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1535 $ $NHDT-Date: 1740629713 2025/02/26 20:15:13 $ NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1572 $ $NHDT-Date: 1762577372 2025/11/07 20:49:32 $
General Fixes and Modified Features General Fixes and Modified Features
----------------------------------- -----------------------------------
@@ -2825,6 +2825,8 @@ archeologists' fedora is lucky
telepathic hero can discern which particular monster just read a scroll telepathic hero can discern which particular monster just read a scroll
add "make fetch-docs" to download pre-formatted documentation add "make fetch-docs" to download pre-formatted documentation
monsters will use throw-and-return weapons such as an aklys monsters will use throw-and-return weapons such as an aklys
uncursed genocide while hallucinating deliberately mis-reports hero's role as
target but was also inappropriately showing it to livelog/#chronicle
Platform- and/or Interface-Specific New Features Platform- and/or Interface-Specific New Features
+10 -10
View File
@@ -1,4 +1,4 @@
/* NetHack 3.7 read.c $NHDT-Date: 1715889745 2024/05/16 20:02:25 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.308 $ */ /* NetHack 3.7 read.c $NHDT-Date: 1762577372 2025/11/07 20:49:32 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.323 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2012. */ /*-Copyright (c) Robert Patrick Rankin, 2012. */
/* NetHack may be freely redistributed. See license for details. */ /* NetHack may be freely redistributed. See license for details. */
@@ -2755,7 +2755,7 @@ do_genocide(
* 3 = forced genocide of player * 3 = forced genocide of player
* 5 (4 | 1) = normal genocide from throne */ * 5 (4 | 1) = normal genocide from throne */
{ {
char buf[BUFSZ], promptbuf[QBUFSZ]; char buf[BUFSZ], realbuf[BUFSZ], promptbuf[QBUFSZ];
int i, killplayer = 0; int i, killplayer = 0;
int mndx; int mndx;
struct permonst *ptr; struct permonst *ptr;
@@ -2860,27 +2860,27 @@ do_genocide(
} }
which = "all "; which = "all ";
Strcpy(buf, ptr->pmnames[NEUTRAL]); /* standard singular */
if ((ptr->geno & G_UNIQ) && ptr != &mons[PM_HIGH_CLERIC])
which = !type_is_pname(ptr) ? "the " : "";
Strcpy(realbuf, buf); /* save true name, to avoid Hallu for livelog */
if (Hallucination) { if (Hallucination) {
if (Upolyd) if (Upolyd) {
Strcpy(buf, pmname(gy.youmonst.data, Strcpy(buf, pmname(gy.youmonst.data,
flags.female ? FEMALE : MALE)); flags.female ? FEMALE : MALE));
else { } else {
Strcpy(buf, (flags.female && gu.urole.name.f) ? gu.urole.name.f Strcpy(buf, (flags.female && gu.urole.name.f) ? gu.urole.name.f
: gu.urole.name.m); : gu.urole.name.m);
buf[0] = lowc(buf[0]); buf[0] = lowc(buf[0]);
} }
} else {
Strcpy(buf, ptr->pmnames[NEUTRAL]); /* standard singular */
if ((ptr->geno & G_UNIQ) && ptr != &mons[PM_HIGH_CLERIC])
which = !type_is_pname(ptr) ? "the " : "";
} }
if (how & REALLY) { if (how & REALLY) {
if (!num_genocides()) if (!num_genocides())
livelog_printf(LL_CONDUCT | LL_GENOCIDE, livelog_printf(LL_CONDUCT | LL_GENOCIDE,
"performed %s first genocide (%s)", "performed %s first genocide (%s)",
uhis(), makeplural(buf)); uhis(), makeplural(realbuf));
else else
livelog_printf(LL_GENOCIDE, "genocided %s", makeplural(buf)); livelog_printf(LL_GENOCIDE, "genocided %s", makeplural(realbuf));
/* setting no-corpse affects wishing and random tin generation */ /* setting no-corpse affects wishing and random tin generation */
svm.mvitals[mndx].mvflags |= (G_GENOD | G_NOCORPSE); svm.mvitals[mndx].mvflags |= (G_GENOD | G_NOCORPSE);