Confine uses of PROP_STASHIFY() to advent.h

Now it shouyld be possible to manipulate a stashed flag by only
changing macros.
This commit is contained in:
Eric S. Raymond 2024-09-22 23:09:16 -04:00
parent 08f0351817
commit 9a6e4406f5
2 changed files with 2 additions and 2 deletions

View file

@ -406,8 +406,7 @@ static phase_codes_t vcarry(verb_t verb, obj_t obj) {
game.objects[BIRD].prop = BIRD_CAGED; game.objects[BIRD].prop = BIRD_CAGED;
} }
if ((obj == BIRD || obj == CAGE) && if ((obj == BIRD || obj == CAGE) &&
(game.objects[BIRD].prop == BIRD_CAGED || OBJECT_STATE_EQUALS(BIRD, BIRD_CAGED)) {
PROP_STASHIFY(game.objects[BIRD].prop) == BIRD_CAGED)) {
/* expression maps BIRD to CAGE and CAGE to BIRD */ /* expression maps BIRD to CAGE and CAGE to BIRD */
carry(BIRD + CAGE - obj, game.loc); carry(BIRD + CAGE - obj, game.loc);
} }

View file

@ -77,6 +77,7 @@
#define OBJECT_SET_FOUND(obj) (game.objects[obj].prop = STATE_FOUND) #define OBJECT_SET_FOUND(obj) (game.objects[obj].prop = STATE_FOUND)
#define OBJECT_SET_NOT_FOUND(obj) (game.objects[obj].prop = STATE_NOTFOUND) #define OBJECT_SET_NOT_FOUND(obj) (game.objects[obj].prop = STATE_NOTFOUND)
#define OBJECT_IS_NOTFOUND2(g, o) (g.objects[o].prop == STATE_NOTFOUND) #define OBJECT_IS_NOTFOUND2(g, o) (g.objects[o].prop == STATE_NOTFOUND)
#define OBJECT_STATE_EQUALS(obj, pval) ((game.objects[obj].prop == pval) || (game.objects[obj].prop == PROP_STASHIFY(pval)))
#else #else
/* (ESR) Only the boldest of adventurers will explore here. This /* (ESR) Only the boldest of adventurers will explore here. This
* alternate set of definitions for the macros above was an attempt to * alternate set of definitions for the macros above was an attempt to