Comment polishing.
[open-adventure.git] / main.c
diff --git a/main.c b/main.c
index 4b6165e4e5acf81fc1f27bb41a0aad0b7f897cbf..cbaf92c320378cd28dfaef359d07acc060628ff5 100644 (file)
--- a/main.c
+++ b/main.c
@@ -783,19 +783,19 @@ static bool closecheck(void)
  *  chest, which may of course never show up).  Note that the
  *  treasures need not have been taken yet, just located.  Hence
  *  clock1 must be large enough to get out of the cave (it only ticks
- *  while inside the cave).  When it hits zero, we branch to 10000 to
- *  start closing the cave, and then sit back and wait for him to try
- *  to get out.  If he doesn't within clock2 turns, we close the cave;
- *  if he does try, we assume he panics, and give him a few additional
- *  turns to get frantic before we close.  When clock2 hits zero, we
- *  transport him into the final puzzle.  Note that the puzzle depends
- *  upon all sorts of random things.  For instance, there must be no
- *  water or oil, since there are beanstalks which we don't want to be
- *  able to water, since the code can't handle it.  Also, we can have
- *  no keys, since there is a grate (having moved the fixed object!)
- *  there separating him from all the treasures.  Most of these
- *  problems arise from the use of negative prop numbers to suppress
- *  the object descriptions until he's actually moved the objects. */
+ *  while inside the cave).  When it hits zero, we start closing the
+ *  cave, and then sit back and wait for him to try to get out.  If he
+ *  doesn't within clock2 turns, we close the cave; if he does try, we
+ *  assume he panics, and give him a few additional turns to get
+ *  frantic before we close.  When clock2 hits zero, we transport him
+ *  into the final puzzle.  Note that the puzzle depends upon all
+ *  sorts of random things.  For instance, there must be no water or
+ *  oil, since there are beanstalks which we don't want to be able to
+ *  water, since the code can't handle it.  Also, we can have no keys,
+ *  since there is a grate (having moved the fixed object!)  there
+ *  separating him from all the treasures.  Most of these problems
+ *  arise from the use of negative prop numbers to suppress the object
+ *  descriptions until he's actually moved the objects. */
 {
     /* If a turn threshold has been met, apply penalties and tell
      * the player about it. */
@@ -859,8 +859,8 @@ static bool closecheck(void)
          *  objects come from known locations and/or states (e.g. the
          *  snake is known to have been destroyed and needn't be
          *  carried away from its old "place"), making the various
-         *  objects be handled differently.  We also drop all other
-         *  objects he might be carrying (lest he have some which
+         *  objects be handled differently.  We also drop all other 
+         *  objects he might be acrrying (lest he have some which
          *  could cause trouble, such as the keys).  We describe the
          *  flash of light and trundle back. */
         put(BOTTLE, LOC_NE, EMPTY_BOTTLE);
@@ -868,7 +868,7 @@ static bool closecheck(void)
         put(OYSTER, LOC_NE, STATE_FOUND);
         put(LAMP, LOC_NE, LAMP_DARK);
         put(ROD, LOC_NE, STATE_FOUND);
-        put(DWARF, LOC_NE, 0);
+        put(DWARF, LOC_NE, STATE_FOUND);
         game.loc = LOC_NE;
         game.oldloc = LOC_NE;
         game.newloc = LOC_NE;
@@ -917,6 +917,10 @@ static void listobjects(void)
                 obj = obj - NOBJECTS;
             if (obj == STEPS && TOTING(NUGGET))
                 continue;
+           /* (ESR) Warning: it looks like you could get away with
+            * running this code only on objects with the treasure
+            * property set. Nope.  There is mystery here.
+            */
             if (PROP_IS_STASHED_OR_UNSEEN(obj)) {
                 if (game.closed)
                     continue;
@@ -1094,14 +1098,15 @@ static bool do_command(void)
         while (command.state <= GIVEN) {
 
             if (game.closed) {
-                /*  If closing time, check for any objects being toted with
-                 *  game.prop < 0 and stash them.  This way objects won't be
-                 *  described until they've been picked up and put down
-                 *  separate from their respective piles. */
-                if (game.objects[OYSTER].prop < 0 && TOTING(OYSTER))
+                /*  If closing time, check for any stashed objects
+                 *  being toted and unstash them.  This way objects
+                 *  won't be described until they've been picked up
+                 *  and put down separate from their respective
+                 *  piles. */
+                if ((PROP_IS_NOTFOUND(OYSTER) || PROP_IS_STASHED(OYSTER)) && TOTING(OYSTER))
                     pspeak(OYSTER, look, true, 1);
                 for (size_t i = 1; i <= NOBJECTS; i++) {
-                    if (TOTING(i) && game.objects[i].prop < 0)
+                    if (TOTING(i) && (PROP_IS_NOTFOUND(i) || PROP_IS_STASHED(i)))
                         game.objects[i].prop = PROP_STASHED(i);
                 }
             }