From: PatR Date: Thu, 13 May 2021 16:38:53 +0000 (-0700) Subject: more object->dknown handling X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=dae25564bc6a3889862f81709e7e0b17dee4e270;p=nethack more object->dknown handling Fix a couple of places that set obj->dknown to 0 to deal with some special cases where it should be left at 1. (Other places do that but deal with potions where hardcoded 0 remains appropriate.) --- diff --git a/include/extern.h b/include/extern.h index 0e87812ad..d14b4875f 100644 --- a/include/extern.h +++ b/include/extern.h @@ -1,4 +1,4 @@ -/* NetHack 3.7 extern.h $NHDT-Date: 1620861202 2021/05/12 23:13:22 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.970 $ */ +/* NetHack 3.7 extern.h $NHDT-Date: 1620923916 2021/05/13 16:38:36 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.971 $ */ /* Copyright (c) Steve Creps, 1988. */ /* NetHack may be freely redistributed. See license for details. */ @@ -1307,6 +1307,7 @@ extern void replace_object(struct obj *, struct obj *); extern struct obj *unknwn_contnr_contents(struct obj *); extern void bill_dummy_object(struct obj *); extern void costly_alteration(struct obj *, int); +extern void clear_dknown(struct obj *); extern void unknow_object(struct obj *); extern struct obj *mksobj(int, boolean, boolean); extern int bcsign(struct obj *); diff --git a/src/mkobj.c b/src/mkobj.c index fe1565380..4873c85e4 100644 --- a/src/mkobj.c +++ b/src/mkobj.c @@ -1,4 +1,4 @@ -/* NetHack 3.7 mkobj.c $NHDT-Date: 1620861208 2021/05/12 23:13:28 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.199 $ */ +/* NetHack 3.7 mkobj.c $NHDT-Date: 1620923920 2021/05/13 16:38:40 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.200 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Derek S. Ray, 2015. */ /* NetHack may be freely redistributed. See license for details. */ @@ -706,13 +706,12 @@ costly_alteration(struct obj* obj, int alter_type) static const char dknowns[] = { WAND_CLASS, RING_CLASS, POTION_CLASS, SCROLL_CLASS, GEM_CLASS, SPBOOK_CLASS, - WEAPON_CLASS, TOOL_CLASS, 0 }; + WEAPON_CLASS, TOOL_CLASS, VENOM_CLASS, 0 }; -/* some init for a brand new object, or partial re-init when hero loses - potentially known info about an object (called when an unseen monster - picks up or uses it); moved from invent.c to here for access to dknowns */ +/* set obj->dknown to 0 for most types of objects, to 1 otherwise; + split off from unknow_object() */ void -unknow_object(struct obj *obj) +clear_dknown(struct obj *obj) { obj->dknown = index(dknowns, obj->oclass) ? 0 : 1; if ((obj->otyp >= ELVEN_SHIELD && obj->otyp <= ORCISH_SHIELD) @@ -723,6 +722,15 @@ unknow_object(struct obj *obj) object, globby flag won't be set yet so isn't available to check */ if (Is_pudding(obj)) obj->dknown = 1; +} + +/* some init for a brand new object, or partial re-init when hero loses + potentially known info about an object (called when an unseen monster + picks up or uses it); moved from invent.c to here for access to dknowns */ +void +unknow_object(struct obj *obj) +{ + clear_dknown(obj); /* obj->dknown = 0; */ obj->bknown = obj->rknown = 0; obj->cknown = obj->lknown = 0; diff --git a/src/mon.c b/src/mon.c index 1297f5d28..368d4c1ba 100644 --- a/src/mon.c +++ b/src/mon.c @@ -1,4 +1,4 @@ -/* NetHack 3.7 mon.c $NHDT-Date: 1614074654 2021/02/23 10:04:14 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.370 $ */ +/* NetHack 3.7 mon.c $NHDT-Date: 1620923921 2021/05/13 16:38:41 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.375 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Derek S. Ray, 2015. */ /* NetHack may be freely redistributed. See license for details. */ @@ -663,7 +663,7 @@ make_corpse(register struct monst* mtmp, unsigned int corpseflags) * if the corpse's obj->dknown is 0. */ if (Blind && !sensemon(mtmp)) - obj->dknown = 0; + clear_dknown(obj); /* obj->dknown = 0; */ stackobj(obj); newsym(x, y); diff --git a/src/mthrowu.c b/src/mthrowu.c index 827f661f4..a65b09c16 100644 --- a/src/mthrowu.c +++ b/src/mthrowu.c @@ -1,4 +1,4 @@ -/* NetHack 3.7 mthrowu.c $NHDT-Date: 1620329778 2021/05/06 19:36:18 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.113 $ */ +/* NetHack 3.7 mthrowu.c $NHDT-Date: 1620923922 2021/05/13 16:38:42 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.114 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Pasi Kallinen, 2016. */ /* NetHack may be freely redistributed. See license for details. */ @@ -505,7 +505,7 @@ m_throw( singleobj->owornmask = 0; /* threw one of multiple weapons in hand? */ if (!canseemon(mon)) - singleobj->dknown = 0; + clear_dknown(singleobj); /* singleobj->dknown = 0; */ if ((singleobj->cursed || singleobj->greased) && (dx || dy) && !rn2(7)) { if (canseemon(mon) && flags.verbose) {