From ab79fc78144cd1433c6e8276ab133067be28083e Mon Sep 17 00:00:00 2001 From: NHOrus Date: Sat, 1 Jul 2017 18:12:25 +0300 Subject: [PATCH] Do not compare state to magic numbers --- actions.c | 14 +++++++------- adventure.yaml | 6 +++--- main.c | 14 ++++++++------ 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/actions.c b/actions.c index dd68f8e..43a570e 100644 --- a/actions.c +++ b/actions.c @@ -170,8 +170,8 @@ static int bigwords(token_t foo) } else { /* Bring back troll if we steal the eggs back from him before * crossing. */ - if (game.place[EGGS] == LOC_NOWHERE && game.place[TROLL] == LOC_NOWHERE && game.prop[TROLL] == 0) - game.prop[TROLL] = 1; + if (game.place[EGGS] == LOC_NOWHERE && game.place[TROLL] == LOC_NOWHERE && game.prop[TROLL] == TROLL_UNPAID) + game.prop[TROLL] = TROLL_PAIDONCE; k = 2; if (HERE(EGGS)) k = 1; @@ -354,21 +354,21 @@ static int chain(token_t verb) spk = CHAIN_UNLOCKED; if (game.prop[BEAR] == UNTAMED_BEAR) spk = BEAR_BLOCKS; - if (game.prop[CHAIN] == 0) + if (game.prop[CHAIN] == CHAIN_HEAP) spk = ALREADY_UNLOCKED; if (spk != CHAIN_UNLOCKED) { rspeak(spk); return GO_CLEAROBJ; } - game.prop[CHAIN] = 0; - game.fixed[CHAIN] = 0; + game.prop[CHAIN] = CHAIN_HEAP; + game.fixed[CHAIN] = CHAIN_HEAP; if (game.prop[BEAR] != BEAR_DEAD) game.prop[BEAR] = CONTENTED_BEAR; /* FIXME: Arithmetic on state numbers */ game.fixed[BEAR] = 2 - game.prop[BEAR]; } else { spk = CHAIN_LOCKED; - if (game.prop[CHAIN] != 0) + if (game.prop[CHAIN] != CHAIN_HEAP) spk = ALREADY_LOCKED; if (game.loc != objects[CHAIN].plac) spk = NO_LOCKSITE; @@ -376,7 +376,7 @@ static int chain(token_t verb) rspeak(spk); return GO_CLEAROBJ; } - game.prop[CHAIN] = 2; + game.prop[CHAIN] = CHAIN_FIXED; if (TOTING(CHAIN)) drop(CHAIN, game.loc); game.fixed[CHAIN] = -1; diff --git a/adventure.yaml b/adventure.yaml index 943b78f..8998d15 100644 --- a/adventure.yaml +++ b/adventure.yaml @@ -3724,9 +3724,9 @@ objects: !!omap immovable: true treasure: true descriptions: - - 'There is a golden chain lying in a heap on the floor!' - - 'The bear is locked to the wall with a golden chain!' - - 'There is a golden chain locked to the wall!' + - [CHAIN_HEAP, 'There is a golden chain lying in a heap on the floor!'] + - [CHAINING_BEAR, 'The bear is locked to the wall with a golden chain!'] + - [CHAIN_FIXED, 'There is a golden chain locked to the wall!'] - RUBY: words: ['ruby'] inventory: 'Giant ruby' diff --git a/main.c b/main.c index df6f9aa..0a5ce3d 100644 --- a/main.c +++ b/main.c @@ -770,8 +770,8 @@ static bool closecheck(void) juggle(CHASM); if (game.prop[BEAR] != BEAR_DEAD) DESTROY(BEAR); - game.prop[CHAIN] = 0; - game.fixed[CHAIN] = 0; + game.prop[CHAIN] = CHAIN_HEAP; + game.fixed[CHAIN] = CHAIN_HEAP; game.prop[AXE] = 0; game.fixed[AXE] = 0; rspeak(CAVE_CLOSING); @@ -873,8 +873,8 @@ static void listobjects(void) /* Print out descriptions of objects at this location. If * not closing and property value is negative, tally off * another treasure. Rug is special case; once seen, its - * game.prop is 1 (dragon on it) till dragon is killed. - * Similarly for chain; game.prop is initially 1 (locked to + * game.prop is RUG_DRAGON (dragon on it) till dragon is killed. + * Similarly for chain; game.prop is initially CHAINING_BEAR (locked to * bear). These hacks are because game.prop=0 is needed to * get full score. */ { @@ -890,8 +890,10 @@ static void listobjects(void) if (game.closed) continue; game.prop[obj] = 0; - if (obj == RUG || obj == CHAIN) - game.prop[obj] = 1; + if (obj == RUG) + game.prop[RUG] = RUG_DRAGON; + if (obj == CHAIN) + game.prop[CHAIN] = CHAINING_BEAR; --game.tally; /* Note: There used to be a test here to see whether the * player had blown it so badly that he could never ever see -- 2.31.1