-/* PROP_STASHED needs ro avoid colliding with -1,
- * which has its own meaning as STATE_NOTFOUND. */
-#define PROP_STASHED(obj) (STATE_NOTFOUND - game.objects[obj].prop)
+/* (ESR) It is fitting that translation of the original ADVENT should
+ * have left us a maze of twisty little conditionals that resists all
+ * understanding. Setting and use of what is now the per-object state
+ * member (which used to be an array of its own) is our mystery. This
+ * state tangles together information about whether the object is a
+ * treasure, whether the player has seen it yet, and its activation
+ * state.
+ *
+ * Things we think we know:
+ *
+ * STATE_NOTFOUND is only set on treasures. Non-treasures start the
+ * game in STATE_FOUND.
+ *
+ * PROP_STASHED is supposed to map a state property value to a
+ * negative range, where the object cannot be picked up but the value
+ * can be recovered later. Various objects get this property when
+ * the cave starts to close. Only seems to be significant for the bird
+ * and readable objects, notably the clam/oyster - but the code around
+ * those test is difficult to read.
+ */
+#define PROP_STASHIFY(n) (-1 - (n))