X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=advent.h;h=fa87028c966fb7e38d799906dda50dae6b25d8b8;hb=234da6b468a5014a622d1dfd3c5a55bf019ff922;hp=0cbe7fb01648d73d01153f33e9edf10d2c60f237;hpb=5d3205e1e9e29bc477e7f785a263cd43dd9cd1bd;p=open-adventure.git diff --git a/advent.h b/advent.h index 0cbe7fb..fa87028 100644 --- a/advent.h +++ b/advent.h @@ -64,11 +64,12 @@ * * 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 peoperty when + * can be recovered later. Various objects get this property when * the cave starts to close. On;y seems to be signifucant for the bird * and readable objects, notably the clam/oyster - but the code around - * those test is difficult to read. */ -#define PROP_STASHED(obj) (-1 - game.objects[obj].prop) + * those test is difficult to read. + */ +#define PROP_STASHIFY(n) (-1 - (n)) #define PROP_IS_STASHED(obj) (game.objects[obj].prop < STATE_NOTFOUND) #define PROP_IS_NOTFOUND(obj) (game.objects[obj].prop == STATE_NOTFOUND) #define PROP_IS_FOUND(obj) (game.objects[obj].prop == STATE_FOUND) @@ -81,11 +82,13 @@ /* (ESR) Only the boldest of adventurers will explore here. This * alternate set of definitions for the macros above was an attempt to * break from out of the state encoding a per-object "found" member - * telling whether or not the player has seen the object. These is one - * accompanying change in misc.c. What's broken when you try to use - * thus is PROP_IS_STASHED_OR_UNSEEN. + * telling whether or not the player has seen the object. + * + * What's broken when you try to use thus is + * PROP_IS_STASHED_OR_UNSEEN. The symptom is game.tally getting + * decremented on non-treasures. */ -#define PROP_STASHED(obj) (-game.objects[obj].prop) +#define PROP_STASHIFY(n) (-(n)) #define PROP_IS_STASHED(obj) (game.objects[obj].prop < 0) #define PROP_IS_NOTFOUND(obj) (!game.objects[obj].found) #define PROP_IS_FOUND(obj) (game.objects[obj].found && game.objects[obj].prop == 0) @@ -94,7 +97,9 @@ #define PROP_SET_NOT_FOUND(obj) game.objects[obj].found = false #define PROP_IS_NOTFOUND2(g, o) (!g.objects[o].found) #define PROP_IS_INVALID(val) (val < -MAX_STATE || val > MAX_STATE) +#define PROP_SET_SEEN(obj) game.objects[object].found = true #endif +#define PROP_STASHED(obj) PROP_STASHIFY(game.objects[obj].prop) #define PROMPT "> " @@ -244,11 +249,7 @@ struct game_t { } objects[NOBJECTS + 1]; struct { bool used; // hints[i].used = true iff hint i has been used. -#ifndef FOUNDBOOL int lc; // hints[i].lc = show int at LOC with cond bit i -#else - int lc; // hints[i].lc = show int at LOC with cond bit i -#endif } hints[NHINTS]; obj_t link[NOBJECTS * 2 + 1];// object-list links };