]> granicus.if.org Git - nethack/commitdiff
more object->dknown handling
authorPatR <rankin@nethack.org>
Thu, 13 May 2021 16:38:53 +0000 (09:38 -0700)
committerPatR <rankin@nethack.org>
Thu, 13 May 2021 16:38:53 +0000 (09:38 -0700)
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.)

include/extern.h
src/mkobj.c
src/mon.c
src/mthrowu.c

index 0e87812ad5d5b43be1a4b6f92fef22e321413245..d14b4875fa0a29ba463dcabcb98d728ba3310d22 100644 (file)
@@ -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 *);
index fe1565380ebc84c9702200e2cd7860fc644b7f28..4873c85e410ebe1b3d3808215f8b92b9a7feaac6 100644 (file)
@@ -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;
index 1297f5d282b8fd441dea54513691e1ea1f899083..368d4c1ba6bd5cf835414f8e0d3b80b6372856da 100644 (file)
--- 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);
index 827f661f4a64d5dc828c804cfcb963e92b7a564e..a65b09c16f8b219de3b1cff4c8a893cdbf77fe52 100644 (file)
@@ -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) {