Replace magic MINTRS/MAXTRS with a treasure attribute in YAML.
[open-adventure.git] / main.c
diff --git a/main.c b/main.c
index c2e28b5635c31946a5c6528075ad6c443366bf20..069c8651c808ea312a150a4b9246713226a7a52a 100644 (file)
--- a/main.c
+++ b/main.c
@@ -189,7 +189,7 @@ static bool fallback_handler(char *buf)
 static void checkhints(void)
 {
     if (conditions[game.loc] >= game.conds) {
-        for (int hint = 0; hint < HINT_COUNT; hint++) {
+        for (int hint = 0; hint < NHINTS; hint++) {
             if (game.hinted[hint])
                 continue;
             if (!CNDBIT(game.loc, hint + 1 + COND_HBASE))
@@ -289,7 +289,9 @@ static bool spotted_by_pirate(int i)
         return true;
     int snarfed = 0;
     bool movechest = false, robplayer = false;
-    for (int treasure = MINTRS; treasure <= MAXTRS; treasure++) {
+    for (int treasure = 1; treasure <= NOBJECTS; treasure++) {
+       if (!object_descriptions[treasure].is_treasure)
+           continue;
         /*  Pirate won't take pyramid from plover room or dark
          *  room (too easy!). */
         if (treasure == PYRAMID && (game.loc == PLAC[PYRAMID] || game.loc == PLAC[EMERALD])) {
@@ -323,7 +325,9 @@ static bool spotted_by_pirate(int i)
     }
     if (robplayer) {
         rspeak(PIRATE_POUNCES);
-        for (int treasure = MINTRS; treasure <= MAXTRS; treasure++) {
+       for (int treasure = 1; treasure <= NOBJECTS; treasure++) {
+           if (!object_descriptions[treasure].is_treasure)
+               continue;
             if (!(treasure == PYRAMID && (game.loc == PLAC[PYRAMID] || game.loc == PLAC[EMERALD]))) {
                 if (AT(treasure) && game.fixed[treasure] == 0)
                     CARRY(treasure, game.loc);
@@ -468,7 +472,7 @@ static bool dwarfmove(void)
 /*  "You're dead, Jim."
  *
  *  If the current loc is zero, it means the clown got himself killed.
- *  We'll allow this maxdie times.  maximum_deaths is automatically set based
+ *  We'll allow this maxdie times.  NDEATHS is automatically set based
  *  on the number of snide messages available.  Each death results in
  *  a message (81, 83, etc.)  which offers reincarnation; if accepted,
  *  this results in message 82, 84, etc.  The last time, if he wants
@@ -496,7 +500,7 @@ static void croak(void)
          *  death and exit. */
         rspeak(DEATH_CLOSING);
         terminate(endgame);
-    } else if (game.numdie == maximum_deaths || !YES(query, yes_response, arbitrary_messages[OK_MAN]))
+    } else if (game.numdie == NDEATHS || !YES(query, yes_response, arbitrary_messages[OK_MAN]))
         terminate(endgame);
     else {
         game.place[WATER] = game.place[OIL] = LOC_NOWHERE;
@@ -812,7 +816,7 @@ static bool closecheck(void)
          *  Reuse sign. */
         PUT(GRATE, LOC_SW, 0);
         PUT(SIGN, LOC_SW, 0);
-        ++OBJTXT[SIGN];
+        game.prop[SIGN] = ENDGAME_SIGN;
         game.prop[SNAKE] = PUT(SNAKE, LOC_SW, 1);
         game.prop[BIRD] = PUT(BIRD, LOC_SW, 1);
         game.prop[CAGE] = PUT(CAGE, LOC_SW, 0);
@@ -1022,7 +1026,7 @@ L2607:
 
        /* If a turn threshold has been met, apply penalties and tell
         * the player about it. */
-       for (int i = 0; i < turn_threshold_count; ++i)
+       for (int i = 0; i < NTHRESHOLDS; ++i)
          {
            if (game.turns == turn_thresholds[i].threshold + 1)
              {