display buglet: newsym(0,0)
Starting a new game as a monk was calling newsym(0,0). <0,0> is within array bounds but off the map. Have newsym() check the coordinates it receives.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1614 $ $NHDT-Date: 1769342601 2026/01/25 04:03:21 $
|
||||
NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.1649 $ $NHDT-Date: 1777000050 2026/04/23 19:07:30 $
|
||||
|
||||
General Fixes and Modified Features
|
||||
-----------------------------------
|
||||
@@ -1598,6 +1598,10 @@ prevent selecting all options in #optionsfull menu
|
||||
shapeshifters change shape less
|
||||
rolling boulder traps aren't removed when stepped on and move boulders
|
||||
pushed onto them
|
||||
when starting a new game as a monk, newsym(0,0) was being called (adjabil ->
|
||||
postadjabil -> see_monsters when initializing See_invisible as hero
|
||||
became level 1; seen 'monster' was the hero who hadn't been placed
|
||||
on the map yet)
|
||||
|
||||
|
||||
Fixes to 3.7.0-x General Problems Exposed Via git Repository
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.7 attrib.c $NHDT-Date: 1754979443 2025/08/11 22:17:23 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.134 $ */
|
||||
/* NetHack 3.7 attrib.c $NHDT-Date: 1777000050 2026/04/23 19:07:30 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.137 $ */
|
||||
/* Copyright 1988, 1989, 1990, 1992, M. Stephenson */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -107,7 +107,7 @@ static const struct innate {
|
||||
staticfn void exerper(void);
|
||||
staticfn int rnd_attr(void);
|
||||
staticfn int init_attr_role_redist(int, boolean);
|
||||
staticfn void postadjabil(long *);
|
||||
staticfn void postadjabil(long *) NONNULLARG1;
|
||||
staticfn const struct innate *role_abil(int);
|
||||
staticfn const struct innate *check_innate_abil(long *, long);
|
||||
staticfn int innately(long *);
|
||||
@@ -779,7 +779,7 @@ staticfn
|
||||
void
|
||||
postadjabil(long *ability)
|
||||
{
|
||||
if (!ability)
|
||||
if (!u.ulevel) /* initializing hero; don't attempt screen update yet */
|
||||
return;
|
||||
if (ability == &(HWarning) || ability == &(HSee_invisible))
|
||||
see_monsters();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.7 display.c $NHDT-Date: 1745114235 2025/04/19 17:57:15 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.260 $ */
|
||||
/* NetHack 3.7 display.c $NHDT-Date: 1777000050 2026/04/23 19:07:30 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.263 $ */
|
||||
/* Copyright (c) Dean Luick, with acknowledgements to Kevin Darcy */
|
||||
/* and Dave Cohrs, 1990. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
@@ -753,10 +753,9 @@ feel_location(coordxy x, coordxy y)
|
||||
/* replicate safeguards used by newsym(); might not be required here */
|
||||
if (_suppress_map_output())
|
||||
return;
|
||||
|
||||
if (!isok(x, y))
|
||||
return;
|
||||
lev = &(levl[x][y]);
|
||||
lev = &levl[x][y];
|
||||
/* If hero's memory of an invisible monster is accurate, we want to keep
|
||||
* him from detecting the same monster over and over again on each turn.
|
||||
* We must return (so we don't erase the monster). (We must also, in the
|
||||
@@ -917,15 +916,24 @@ feel_location(coordxy x, coordxy y)
|
||||
void
|
||||
newsym(coordxy x, coordxy y)
|
||||
{
|
||||
struct rm *lev;
|
||||
struct engr *ep;
|
||||
struct monst *mon;
|
||||
int see_it;
|
||||
boolean worm_tail;
|
||||
struct rm *lev = &(levl[x][y]);
|
||||
struct engr *ep;
|
||||
|
||||
/* don't try to produce map output when level is in a state of flux */
|
||||
if (_suppress_map_output())
|
||||
return;
|
||||
/* should never happen; same error handling as u_on_newpos() */
|
||||
if (!isok(x, y)) {
|
||||
void (*errfunc)(const char *, ...) PRINTF_F_PTR(1, 2);
|
||||
|
||||
errfunc = (x < 0 || y < 0 || x > COLNO - 1 || y > ROWNO - 1) ? panic
|
||||
: impossible; /* misuse of column 0 is less severe */
|
||||
(*errfunc)("newsym: attempting screen update for <%d,%d>", x, y);
|
||||
return;
|
||||
}
|
||||
|
||||
/* only permit updating the hero when swallowed */
|
||||
if (u.uswallow) {
|
||||
@@ -939,6 +947,7 @@ newsym(coordxy x, coordxy y)
|
||||
if (!(is_pool_or_lava(x, y) || is_ice(x, y)) || !next2u(x, y))
|
||||
return;
|
||||
}
|
||||
lev = &levl[x][y];
|
||||
|
||||
/* Can physically see the location. */
|
||||
if (cansee(x, y)) {
|
||||
|
||||
Reference in New Issue
Block a user