X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=advent.h;h=b24eed78f5dcd005f59b6dff42f5adac1a9106a1;hb=1af01ff91fd0fee206d096449a564996ea85abed;hp=62a54acf4ca4711048119f6c01951d5e6e4e6c96;hpb=8d4d64fafbff1191bf221e32ed4a8aba48ac63f4;p=open-adventure.git diff --git a/advent.h b/advent.h index 62a54ac..b24eed7 100644 --- a/advent.h +++ b/advent.h @@ -48,10 +48,20 @@ #define IS_FIXED -1 #define IS_FREE 0 -/* Map a state property value to a negative range, where the object cannot be +/* STASH map a state property value to a negative range, where the object cannot be * picked up but the value can be recovered later. Avoid colliding with -1, * which has its own meaning as STATE_NOTFOUND. */ -#define STASHED(obj) (-1 - game.objects[obj].prop) +#define PROP_STASHED(obj) (STATE_NOTFOUND - game.objects[obj].prop) +#define PROP_IS_STASHED(obj) (game.objects[obj].prop < STATE_NOTFOUND) +#define PROP_IS_NOTFOUND(obj) (game.objects[obj].prop == STATE_NOTFOUND) +/* Don't use this on an object wi nore thab 2 (unstashed) states */ +#define PROP_IS_FOUND(obj) (game.objects[obj].prop == STATE_FOUND) +/* Magic number -2 allows a PROP_STASHED version of state 1 */ +#define PROP_IS_INVALID(val) (val < -2 || val > 1) +#define PROP_IS_STASHED_OR_UNSEEN(obj) (game.objects[obj].prop < 0) +#define PROP_SET_FOUND(obj) (game.objects[obj].prop = STATE_FOUND) +#define PROP_SET_NOT_FOUND(obj) (game.objects[obj].prop = STATE_NOTFOUND) +#define PROP_IS_NOTFOUND2(g, o) (g.objects[o].prop == STATE_NOTFOUND) #define PROMPT "> " @@ -276,7 +286,7 @@ extern bool silent_yes_or_no(void); extern bool yes_or_no(const char*, const char*, const char*); extern void juggle(obj_t); extern void move(obj_t, loc_t); -extern loc_t put(obj_t, loc_t, int); +extern void put(obj_t, loc_t, int); extern void carry(obj_t, loc_t); extern void drop(obj_t, loc_t); extern int atdwrf(loc_t);