fix #S15496 - #chronicle oversight

Add a livelog/#chronicle message for quest leader opening the quest.

A similar message for being expelled doesn't seem possible to be
triggered.

Log the initial visit to each level in the quest branch.  They record
when the hero actually visits the quest levels, beyond the new one
about permission to do the quest.
This commit is contained in:
PatR
2026-03-22 22:01:40 -07:00
parent e94a2f2bf2
commit 10eedbe2f0
2 changed files with 28 additions and 4 deletions

View File

@@ -1,4 +1,4 @@
/* NetHack 3.7 do.c $NHDT-Date: 1737287889 2025/01/19 03:58:09 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.399 $ */
/* NetHack 3.7 do.c $NHDT-Date: 1774269965 2026/03/23 04:46:05 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.404 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Derek S. Ray, 2015. */
/* NetHack may be freely redistributed. See license for details. */
@@ -1942,8 +1942,18 @@ goto_level(
if (new) {
char dloc[QBUFSZ];
/* Astral is excluded as a major event here because entry to it
is already one due to that being an achievement */
boolean major = In_endgame(&u.uz) && !Is_astralevel(&u.uz);
is already one such due to that being an achievement;
for the quest, listing the start, locate, and goal levels would
seem reasonable but all quest levels are included for simplicity--
level 2 (or 3 if hero level teleports after obtaining permission
to enter) is useful to show since it indicates that hero has
actually entered the quest rather than just received permission
to do so, and listing the goal level could be used to figure out
whether level 5 is the end or there's another level (ESP reveals
the same thing, but is part of normal game play as opposed to
#chronicle leaking information that hero hasn't discovered yet) */
boolean major = ((In_endgame(&u.uz) && !Is_astralevel(&u.uz))
|| In_quest(&u.uz));
(void) describe_level(dloc, 2);
livelog_printf(major ? LL_ACHIEVE : LL_DEBUG, "entered %s", dloc);

View File

@@ -1,4 +1,4 @@
/* NetHack 3.7 quest.c $NHDT-Date: 1687036547 2023/06/17 21:15:47 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.38 $ */
/* NetHack 3.7 quest.c $NHDT-Date: 1774269965 2026/03/23 04:46:05 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.46 $ */
/* Copyright 1991, M. Stephenson */
/* NetHack may be freely redistributed. See license for details. */
@@ -339,6 +339,12 @@ chat_with_leader(struct monst *mtmp)
com_pager("banished");
Qstat(pissed_off) = TRUE;
expulsion(FALSE);
/* being expelled is hardly an achievement but none of the
other livelog classifications fit */
livelog_printf(LL_ACHIEVE,
"%s has expelled you from the quest",
noit_mon_nam(mtmp));
}
} else if (purity == 0) {
qt_pager("badalign");
@@ -349,6 +355,14 @@ chat_with_leader(struct monst *mtmp)
qt_pager("assignquest");
exercise(A_WIS, TRUE);
Qstat(got_quest) = TRUE;
/* phrasing is a bit clumsy but allows #chronicle to provide a
clue to players who are reaching the quest for first time;
matters most for Home 1 that has stairs down which aren't
easily found */
livelog_printf(LL_ACHIEVE,
"%s has granted access to proceed deeper into the quest",
noit_mon_nam(mtmp));
}
}
}