senseself()/canspotself()

Make the names of the macros for handling the hero be similar to those
for monsters (where mis-use of `sensemon()' was the cause of a recently
reported bug).  `senseself()' becomes more restrictive in what it specifies,
and current uses of it are replaced by new `canspotself()'.
This commit is contained in:
nethack.rankin
2005-06-18 04:38:50 +00:00
parent a092740e67
commit 254b521add
3 changed files with 12 additions and 9 deletions

View File

@@ -1,4 +1,4 @@
/* SCCS Id: @(#)display.h 3.5 1999/11/30 */ /* SCCS Id: @(#)display.h 3.5 2005/06/21 */
/* Copyright (c) Dean Luick, with acknowledgements to Kevin Darcy */ /* Copyright (c) Dean Luick, with acknowledgements to Kevin Darcy */
/* and Dave Cohrs, 1990. */ /* and Dave Cohrs, 1990. */
/* NetHack may be freely redistributed. See license for details. */ /* NetHack may be freely redistributed. See license for details. */
@@ -126,14 +126,17 @@
/* /*
* canseeself() * canseeself()
* senseself() * senseself()
* canspotself()
* *
* This returns true if the hero can see her/himself. * This returns true if the hero can see her/himself.
* *
* The u.uswallow check assumes that you can see yourself even if you are * Sensing yourself by touch is treated as seeing yourself, even if
* invisible. If not, then we don't need the check. * unable to see. So when blind, being invisible won't affect your
* self-perception, and when swallowed, the enclosing monster touches.
*/ */
#define canseeself() (Blind || u.uswallow || (!Invisible && !u.uundetected)) #define canseeself() (Blind || u.uswallow || (!Invisible && !u.uundetected))
#define senseself() (canseeself() || Unblind_telepat || Detect_monsters) #define senseself() (Unblind_telepat || Detect_monsters)
#define canspotself() (canseeself() || senseself())
/* /*
* random_monster() * random_monster()

View File

@@ -1,4 +1,4 @@
/* SCCS Id: @(#)display.c 3.5 2003/02/19 */ /* SCCS Id: @(#)display.c 3.5 2005/06/21 */
/* Copyright (c) Dean Luick, with acknowledgements to Kevin Darcy */ /* Copyright (c) Dean Luick, with acknowledgements to Kevin Darcy */
/* and Dave Cohrs, 1990. */ /* and Dave Cohrs, 1990. */
/* NetHack may be freely redistributed. See license for details. */ /* NetHack may be freely redistributed. See license for details. */
@@ -672,7 +672,7 @@ newsym(x,y)
return; return;
} }
if (x == u.ux && y == u.uy) { if (x == u.ux && y == u.uy) {
if (senseself()) { if (canspotself()) {
_map_location(x,y,0); /* map *under* self */ _map_location(x,y,0); /* map *under* self */
display_self(); display_self();
} else } else
@@ -714,7 +714,7 @@ newsym(x,y)
if (x == u.ux && y == u.uy) { if (x == u.ux && y == u.uy) {
feel_location(u.ux, u.uy); /* forces an update */ feel_location(u.ux, u.uy); /* forces an update */
if (senseself()) display_self(); if (canspotself()) display_self();
} }
else if ((mon = m_at(x,y)) else if ((mon = m_at(x,y))
&& ((see_it = (tp_sensemon(mon) || MATCH_WARN_OF_MON(mon) && ((see_it = (tp_sensemon(mon) || MATCH_WARN_OF_MON(mon)

View File

@@ -1,4 +1,4 @@
/* SCCS Id: @(#)pager.c 3.5 2003/08/13 */ /* SCCS Id: @(#)pager.c 3.5 2005/06/21 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */ /* NetHack may be freely redistributed. See license for details. */
@@ -64,7 +64,7 @@ lookat(x, y, buf, monbuf)
buf[0] = monbuf[0] = 0; buf[0] = monbuf[0] = 0;
glyph = glyph_at(x,y); glyph = glyph_at(x,y);
if (u.ux == x && u.uy == y && senseself()) { if (u.ux == x && u.uy == y && canspotself()) {
char race[QBUFSZ]; char race[QBUFSZ];
/* if not polymorphed, show both the role and the race */ /* if not polymorphed, show both the role and the race */