Magic-number elimination.
[open-adventure.git] / actions.c
index 51a3f599a6cddde9b9d7d590e7b5bfb70826b6b0..076a2b29bd61cf67140e25a5208ebbbaefeff593 100644 (file)
--- a/actions.c
+++ b/actions.c
@@ -528,7 +528,9 @@ static int extinguish(token_t verb, int obj)
             obj = LAMP;
         if (HERE(URN) && game.prop[URN] == URN_LIT)
             obj = URN;
-        if (obj == INTRANSITIVE)
+        if (obj == INTRANSITIVE ||
+            HERE(LAMP) && game.prop[LAMP] == LAMP_BRIGHT &&
+            HERE(URN) && game.prop[URN] == URN_LIT)
             return GO_UNKNOWN;
     }
 
@@ -739,7 +741,9 @@ static int light(token_t verb, token_t obj)
             obj = LAMP;
         if (HERE(URN) && game.prop[URN] == URN_DARK)
             obj =  URN;
-        if (obj == INTRANSITIVE || obj == 0 || obj > NOBJECTS)
+        if (obj == INTRANSITIVE ||
+            HERE(LAMP) && game.prop[LAMP] == LAMP_DARK && game.limit >= 0 &&
+            HERE(URN) && game.prop[URN] == URN_DARK)
             return GO_UNKNOWN;
     }
 
@@ -807,8 +811,6 @@ static int lock(token_t verb, token_t obj)
             obj = DOOR;
         if (AT(GRATE))
             obj = GRATE;
-        if (obj != 0 && HERE(CHAIN))
-            return GO_UNKNOWN;
         if (HERE(CHAIN))
             obj = CHAIN;
         if (obj == 0 || obj == INTRANSITIVE) {
@@ -823,7 +825,7 @@ static int lock(token_t verb, token_t obj)
         return bivalve(verb, obj);
     if (obj == DOOR)
         spk = RUSTY_DOOR;
-    if (obj == DOOR && game.prop[DOOR] == 1)
+    if (obj == DOOR && game.prop[DOOR] == DOOR_UNRUSTED)
         spk = OK_MAN;
     if (obj == CAGE)
         spk = NO_LOCK;
@@ -867,7 +869,7 @@ static int pour(token_t verb, token_t obj)
         rspeak(spk);
         return GO_CLEAROBJ;
     }
-    if (HERE(URN) && game.prop[URN] == 0)
+    if (HERE(URN) && game.prop[URN] == URN_EMPTY)
         return fill(verb, URN);
     game.prop[BOTTLE] = EMPTY_BOTTLE;
     game.place[obj] = LOC_NOWHERE;
@@ -950,7 +952,7 @@ static int rub(token_t verb, token_t obj)
     int spk = actions[verb].message;
     if (obj != LAMP)
         spk = PECULIAR_NOTHING;
-    if (obj == URN && game.prop[URN] == 2) {
+    if (obj == URN && game.prop[URN] == URN_LIT) {
         DESTROY(URN);
         drop(AMBER, game.loc);
         game.prop[AMBER] = 1;