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

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
-----------------------------------
@@ -2825,6 +2825,8 @@ archeologists' fedora is lucky
telepathic hero can discern which particular monster just read a scroll
add "make fetch-docs" to download pre-formatted documentation
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

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) Robert Patrick Rankin, 2012. */
/* NetHack may be freely redistributed. See license for details. */
@@ -2755,7 +2755,7 @@ do_genocide(
* 3 = forced genocide of player
* 5 (4 | 1) = normal genocide from throne */
{
char buf[BUFSZ], promptbuf[QBUFSZ];
char buf[BUFSZ], realbuf[BUFSZ], promptbuf[QBUFSZ];
int i, killplayer = 0;
int mndx;
struct permonst *ptr;
@@ -2860,27 +2860,27 @@ do_genocide(
}
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 (Upolyd)
if (Upolyd) {
Strcpy(buf, pmname(gy.youmonst.data,
flags.female ? FEMALE : MALE));
else {
} else {
Strcpy(buf, (flags.female && gu.urole.name.f) ? gu.urole.name.f
: gu.urole.name.m);
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 (!num_genocides())
livelog_printf(LL_CONDUCT | LL_GENOCIDE,
"performed %s first genocide (%s)",
uhis(), makeplural(buf));
uhis(), makeplural(realbuf));
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 */
svm.mvitals[mndx].mvflags |= (G_GENOD | G_NOCORPSE);