sanity check bit - current_wand
'current_wand' should always be Null at the time the sanity checking routine is called, so check for that. Also a couple of formatting bits.
This commit is contained in:
+19
-7
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 mkobj.c $NHDT-Date: 1501725405 2017/08/03 01:56:45 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.124 $ */
|
/* NetHack 3.6 mkobj.c $NHDT-Date: 1513298759 2017/12/15 00:45:59 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.129 $ */
|
||||||
/* 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. */
|
||||||
|
|
||||||
@@ -2168,7 +2168,8 @@ static const char NEARDATA /* pline formats for insane_object() */
|
|||||||
ofmt0[] = "%s obj %s %s: %s",
|
ofmt0[] = "%s obj %s %s: %s",
|
||||||
ofmt3[] = "%s [not null] %s %s: %s",
|
ofmt3[] = "%s [not null] %s %s: %s",
|
||||||
/* " held by mon %p (%s)" will be appended, filled by M,mon_nam(M) */
|
/* " held by mon %p (%s)" will be appended, filled by M,mon_nam(M) */
|
||||||
mfmt1[] = "%s obj %s %s (%s)", mfmt2[] = "%s obj %s %s (%s) *not*";
|
mfmt1[] = "%s obj %s %s (%s)",
|
||||||
|
mfmt2[] = "%s obj %s %s (%s) *not*";
|
||||||
|
|
||||||
/* Check all object lists for consistency. */
|
/* Check all object lists for consistency. */
|
||||||
void
|
void
|
||||||
@@ -2177,6 +2178,13 @@ obj_sanity_check()
|
|||||||
int x, y;
|
int x, y;
|
||||||
struct obj *obj;
|
struct obj *obj;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TODO:
|
||||||
|
* Should check whether the obj->bypass and/or obj->nomerge bits
|
||||||
|
* are set. Those are both used for temporary purposes and should
|
||||||
|
* be clear between moves.
|
||||||
|
*/
|
||||||
|
|
||||||
objlist_sanity(fobj, OBJ_FLOOR, "floor sanity");
|
objlist_sanity(fobj, OBJ_FLOOR, "floor sanity");
|
||||||
|
|
||||||
/* check that the map's record of floor objects is consistent;
|
/* check that the map's record of floor objects is consistent;
|
||||||
@@ -2186,12 +2194,12 @@ obj_sanity_check()
|
|||||||
for (y = 0; y < ROWNO; y++)
|
for (y = 0; y < ROWNO; y++)
|
||||||
for (obj = level.objects[x][y]; obj; obj = obj->nexthere) {
|
for (obj = level.objects[x][y]; obj; obj = obj->nexthere) {
|
||||||
/* <ox,oy> should match <x,y>; <0,*> should always be empty */
|
/* <ox,oy> should match <x,y>; <0,*> should always be empty */
|
||||||
if (obj->where != OBJ_FLOOR || x == 0 || obj->ox != x
|
if (obj->where != OBJ_FLOOR || x == 0
|
||||||
|| obj->oy != y) {
|
|| obj->ox != x || obj->oy != y) {
|
||||||
char at_fmt[BUFSZ];
|
char at_fmt[BUFSZ];
|
||||||
|
|
||||||
Sprintf(at_fmt, "%%s obj@<%d,%d> %%s %%s: %%s@<%d,%d>", x,
|
Sprintf(at_fmt, "%%s obj@<%d,%d> %%s %%s: %%s@<%d,%d>",
|
||||||
y, obj->ox, obj->oy);
|
x, y, obj->ox, obj->oy);
|
||||||
insane_object(obj, at_fmt, "location sanity",
|
insane_object(obj, at_fmt, "location sanity",
|
||||||
(struct monst *) 0);
|
(struct monst *) 0);
|
||||||
}
|
}
|
||||||
@@ -2219,7 +2227,11 @@ obj_sanity_check()
|
|||||||
if (kickedobj)
|
if (kickedobj)
|
||||||
insane_object(kickedobj, ofmt3, "kickedobj sanity",
|
insane_object(kickedobj, ofmt3, "kickedobj sanity",
|
||||||
(struct monst *) 0);
|
(struct monst *) 0);
|
||||||
/* [how about current_wand too?] */
|
/* current_wand isn't removed from invent while in use, but should
|
||||||
|
be Null between moves when we're called */
|
||||||
|
if (current_wand)
|
||||||
|
insane_object(current_wand, ofmt3, "current_wand sanity",
|
||||||
|
(struct monst *) 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* sanity check for objects on specified list (fobj, &c) */
|
/* sanity check for objects on specified list (fobj, &c) */
|
||||||
|
|||||||
Reference in New Issue
Block a user