redundant "guard appears" messages
When a vault guard was created it was producing a "guard appears" message, then the vault code immediately produced a "vault's guard enters" message. Suppress the creation message. While testing that, I noticed that if the hero was blind and lacked telepathy, "someone enters" started the guard interrogation sequence but if hero answered and dropped gold, the way out wasn't discernable. Put a "remembered, unseen monster" glyph at the guard's spot in the breeched vault wall. The player will need to do <search><move> over and over to actually follow the guard but at least will know where to start doing that.
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
HDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.952 $ $NHDT-Date: 1655503067 2022/06/17 21:57:47 $
|
HDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.975 $ $NHDT-Date: 1657868310 2022/07/15 06:58:30 $
|
||||||
|
|
||||||
General Fixes and Modified Features
|
General Fixes and Modified Features
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
@@ -963,6 +963,8 @@ similarly, if #wizfliplevel was used to transpose an active level while a
|
|||||||
blessed potion of polymorph will prompt user for monster to poly into
|
blessed potion of polymorph will prompt user for monster to poly into
|
||||||
out of array bounds access attempt occurred when deciding whether to bounce
|
out of array bounds access attempt occurred when deciding whether to bounce
|
||||||
if wand or spell zap reached edge of map
|
if wand or spell zap reached edge of map
|
||||||
|
if blind hero was challanged by a vault guard, it wasn't possible to see how
|
||||||
|
to start following that guard out of the vault
|
||||||
|
|
||||||
|
|
||||||
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
|
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
|
||||||
|
|||||||
46
src/vault.c
46
src/vault.c
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.7 vault.c $NHDT-Date: 1606009006 2020/11/22 01:36:46 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.77 $ */
|
/* NetHack 3.7 vault.c $NHDT-Date: 1657868307 2022/07/15 06:58:27 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.91 $ */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Robert Patrick Rankin, 2011. */
|
/*-Copyright (c) Robert Patrick Rankin, 2011. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -295,7 +295,7 @@ invault(void)
|
|||||||
{
|
{
|
||||||
struct monst *guard;
|
struct monst *guard;
|
||||||
struct obj *otmp;
|
struct obj *otmp;
|
||||||
boolean gsensed;
|
boolean spotted;
|
||||||
int trycount, vaultroom = (int) vault_occupied(u.urooms);
|
int trycount, vaultroom = (int) vault_occupied(u.urooms);
|
||||||
|
|
||||||
if (!vaultroom) {
|
if (!vaultroom) {
|
||||||
@@ -370,7 +370,7 @@ invault(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* make something interesting happen */
|
/* make something interesting happen */
|
||||||
if (!(guard = makemon(&mons[PM_GUARD], x, y, MM_EGD)))
|
if (!(guard = makemon(&mons[PM_GUARD], x, y, MM_EGD | MM_NOMSG)))
|
||||||
return;
|
return;
|
||||||
guard->isgd = 1;
|
guard->isgd = 1;
|
||||||
guard->mpeaceful = 1;
|
guard->mpeaceful = 1;
|
||||||
@@ -402,19 +402,24 @@ invault(void)
|
|||||||
(*func)("%s shatter.",
|
(*func)("%s shatter.",
|
||||||
(bcnt == 1) ? an(bname) : makeplural(bname));
|
(bcnt == 1) ? an(bname) : makeplural(bname));
|
||||||
}
|
}
|
||||||
gsensed = !canspotmon(guard);
|
spotted = canspotmon(guard);
|
||||||
if (!gsensed)
|
if (spotted) {
|
||||||
pline("Suddenly one of the Vault's %s enters!",
|
pline("Suddenly one of the Vault's %s enters!",
|
||||||
makeplural(pmname(guard->data, Mgender(guard))));
|
makeplural(pmname(guard->data, Mgender(guard))));
|
||||||
else
|
newsym(guard->mx, guard->my);
|
||||||
|
} else {
|
||||||
pline("Someone else has entered the Vault.");
|
pline("Someone else has entered the Vault.");
|
||||||
newsym(guard->mx, guard->my);
|
/* make sure that hero who can't see the guard knows where the
|
||||||
|
wall is breeched, otherwise we couldn't follow the guard out;
|
||||||
|
the breech isn't necessarily adjacent to the hero */
|
||||||
|
map_invisible(guard->mx, guard->my);
|
||||||
|
}
|
||||||
|
|
||||||
if (u.uswallow) {
|
if (u.uswallow) {
|
||||||
/* can't interrogate hero, don't interrogate engulfer */
|
/* can't interrogate hero, don't interrogate engulfer */
|
||||||
if (!Deaf)
|
if (!Deaf)
|
||||||
verbalize("What's going on here?");
|
verbalize("What's going on here?");
|
||||||
if (gsensed)
|
if (!spotted)
|
||||||
pline_The("other presence vanishes.");
|
pline_The("other presence vanishes.");
|
||||||
mongone(guard);
|
mongone(guard);
|
||||||
return;
|
return;
|
||||||
@@ -671,11 +676,13 @@ wallify_vault(struct monst *grd)
|
|||||||
static void
|
static void
|
||||||
gd_mv_monaway(struct monst *grd, int nx, int ny)
|
gd_mv_monaway(struct monst *grd, int nx, int ny)
|
||||||
{
|
{
|
||||||
if (MON_AT(nx, ny) && !(nx == grd->mx && ny == grd->my)) {
|
struct monst *mtmp = m_at(nx, ny);
|
||||||
|
|
||||||
|
if (mtmp && mtmp != grd) {
|
||||||
if (!Deaf)
|
if (!Deaf)
|
||||||
verbalize("Out of my way, scum!");
|
verbalize("Out of my way, scum!");
|
||||||
if (!rloc(m_at(nx, ny), RLOC_ERR|RLOC_MSG) || MON_AT(nx, ny))
|
if (!rloc(mtmp, RLOC_ERR | RLOC_MSG) || MON_AT(nx, ny))
|
||||||
m_into_limbo(m_at(nx, ny));
|
m_into_limbo(mtmp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -774,15 +781,14 @@ gd_move_cleanup(
|
|||||||
int x, y;
|
int x, y;
|
||||||
boolean see_guard;
|
boolean see_guard;
|
||||||
|
|
||||||
/* The following is a kludge. We need to keep */
|
/*
|
||||||
/* the guard around in order to be able to make */
|
* The following is a kludge. We need to keep the guard around in
|
||||||
/* the fake corridor disappear as the player */
|
* order to be able to make the fake corridor disappear as the
|
||||||
/* moves out of it, but we also need the guard */
|
* player moves out of it, but we also need the guard out of the
|
||||||
/* out of the way. We send the guard to never- */
|
* way. We send the guard to never-never land. We set ogx ogy to
|
||||||
/* never land. We set ogx ogy to mx my in order */
|
* mx my in order to avoid a check at the top of this function.
|
||||||
/* to avoid a check at the top of this function. */
|
* At the end of the process, the guard is killed in restfakecorr().
|
||||||
/* At the end of the process, the guard is killed */
|
*/
|
||||||
/* in restfakecorr(). */
|
|
||||||
x = grd->mx, y = grd->my;
|
x = grd->mx, y = grd->my;
|
||||||
see_guard = canspotmon(grd);
|
see_guard = canspotmon(grd);
|
||||||
parkguard(grd); /* move to <0,0> */
|
parkguard(grd); /* move to <0,0> */
|
||||||
|
|||||||
Reference in New Issue
Block a user