]> granicus.if.org Git - nethack/commitdiff
container status bits (trunk only)
authornethack.rankin <nethack.rankin>
Thu, 3 Nov 2005 06:15:59 +0000 (06:15 +0000)
committernethack.rankin <nethack.rankin>
Thu, 3 Nov 2005 06:15:59 +0000 (06:15 +0000)
     Couple of post-3.4.3 things:  using ':' to view the contents when
looting or applying a container wasn't setting its cknown flag (contents
known); probing a container wasn't setting lknown flag (lock state known).

src/end.c
src/pickup.c
src/zap.c

index de1929d7f01d3dbe3aac45ee5138683ef2d72c72..73657647bc9c6d3d3df52076eca882411fc89f70 100644 (file)
--- a/src/end.c
+++ b/src/end.c
@@ -1,4 +1,4 @@
-/*     SCCS Id: @(#)end.c      3.5     2005/03/11      */
+/*     SCCS Id: @(#)end.c      3.5     2005/11/02      */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /* NetHack may be freely redistributed.  See license for details. */
 
@@ -972,6 +972,8 @@ boolean identified, all_containers;
 
        for (box = list; box; box = box->nobj) {
            if (Is_container(box) || box->otyp == STATUE) {
+               box->cknown = 1;        /* we're looking at the contents now */
+               if (identified) box->lknown = 1;
                cat = deadcat = FALSE;
                if (box->otyp == LARGE_BOX &&
                    box->spe == 1 && !Schroedingers_cat) {
@@ -980,7 +982,6 @@ boolean identified, all_containers;
                        if (cat) Schroedingers_cat = TRUE;
                        else deadcat = TRUE;
                        box->spe = 0;
-                       box->cknown = box->lknown = 1;
                }
                if (box->otyp == BAG_OF_TRICKS) {
                    continue;   /* wrong type of container */
index bcea28a95c403323966765ebe85e0f9537f377e3..08b131245a2a2cd85fc112854973200272c1e26c 100644 (file)
@@ -1,4 +1,4 @@
-/*     SCCS Id: @(#)pickup.c   3.5     2005/06/02      */
+/*     SCCS Id: @(#)pickup.c   3.5     2005/11/02      */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /* NetHack may be freely redistributed.  See license for details. */
 
@@ -219,6 +219,10 @@ ask_again:
                    else if (sym == 'a') *everything = TRUE;
                    else if (sym == ':') {
                        simple_look(objs, here);  /* dumb if objs==invent */
+                       /* if we just scanned the contents of a container
+                          then mark it as having known contents */
+                       if (objs->where == OBJ_CONTAINED)
+                           objs->ocontainer->cknown = 1;
                        goto ask_again;
                    } else if (sym == 'i') {
                        (void) display_inventory((char *)0, TRUE);
index 95297223c3c820281edf0a6c54517d7578985e38..822e7cbc8c85b307ad1a49d922b6214b0a6e9142 100644 (file)
--- a/src/zap.c
+++ b/src/zap.c
@@ -1,4 +1,4 @@
-/*     SCCS Id: @(#)zap.c      3.5     2005/09/20      */
+/*     SCCS Id: @(#)zap.c      3.5     2005/11/02      */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /* NetHack may be freely redistributed.  See license for details. */
 
@@ -1527,6 +1527,7 @@ struct obj *obj, *otmp;
                /* target object has now been "seen (up close)" */
                obj->dknown = 1;
                if (Is_container(obj) || obj->otyp == STATUE) {
+                   obj->cknown = obj->lknown = 1;
                    if (!obj->cobj)
                        pline("%s empty.", Tobjnam(obj, "are"));
                    else {
@@ -1536,7 +1537,6 @@ struct obj *obj, *otmp;
                            o->dknown = 1;      /* "seen", even if blind */
                        (void) display_cinventory(obj);
                    }
-                   obj->cknown = 1;
                    res = 1;
                }
                if (res) makeknown(WAN_PROBING);