Eliminated bivalve function. 206/head
authorAaron Traas <aaron@traas.org>
Tue, 4 Jul 2017 13:55:02 +0000 (09:55 -0400)
committerAaron Traas <aaron@traas.org>
Tue, 4 Jul 2017 14:06:41 +0000 (10:06 -0400)
Reason: only called in lock(), you can't be TOTING a clam, you can't
have the trident at a carryable oyster, and the code IMHO is more
readable this way.

actions.c
tests/breakmirror.chk
tests/breakmirror.log

index cfbb186e66963579528402d2e74fbad18b135ec9..c05cfb0ffd3fd2710776dd6b9ea5b464caa516a5 100644 (file)
--- a/actions.c
+++ b/actions.c
@@ -210,38 +210,6 @@ static int bigwords(token_t foo)
     }
 }
 
-static int bivalve(token_t verb, token_t obj)
-/* Clam/oyster actions */
-{
-    bool is_oyster = (obj == OYSTER);
-    if (verb == LOCK) {
-        rspeak(HUH_MAN);
-        return GO_CLEAROBJ;
-    }
-    if (!TOTING(TRIDENT)) {
-        rspeak(is_oyster ?
-               OYSTER_OPENER :
-               CLAM_OPENER);
-        return GO_CLEAROBJ;
-    }
-    if (TOTING(obj)) {
-        rspeak( is_oyster ?
-                DROP_OYSTER :
-                DROP_CLAM);
-        return GO_CLEAROBJ;
-    }
-
-    if (!is_oyster) {
-        DESTROY(CLAM);
-        drop(OYSTER, game.loc);
-        drop(PEARL, LOC_CULDESAC);
-    }
-    rspeak(is_oyster ?
-           OYSTER_OPENS :
-           PEARL_FALLS);
-    return GO_CLEAROBJ;
-}
-
 static void blast(void)
 /*  Blast.  No effect unless you've got dynamite, which is a neat trick! */
 {
@@ -946,8 +914,24 @@ static int lock(token_t verb, token_t obj)
 
     switch (obj) {
     case CLAM:
+        if (verb == LOCK)
+            rspeak(HUH_MAN);
+        else if (!TOTING(TRIDENT))
+            rspeak(OYSTER_OPENER);
+        else {
+            DESTROY(CLAM);
+            drop(OYSTER, game.loc);
+            drop(PEARL, LOC_CULDESAC);
+            rspeak(PEARL_FALLS);
+        }
+        return GO_CLEAROBJ;
     case OYSTER:
-        return bivalve(verb, obj);
+        if (verb == LOCK)
+            rspeak(HUH_MAN);
+        else
+            rspeak(OYSTER_OPENER);
+
+        return GO_CLEAROBJ;
     case DOOR:
         rspeak((game.prop[DOOR] == DOOR_UNRUSTED) ? OK_MAN : RUSTY_DOOR);
         break;
index 31844d54724a351d18bb5c61f591ce247e564a14..2cfc5e34e224aa6d183830274db1ab8fa95fee3f 100644 (file)
@@ -2933,6 +2933,10 @@ Huh?
 
 Huh?
 
+> unlock oyster
+
+You don't have anything strong enough to open the oyster.
+
 > drop oyster
 
 OK
@@ -2977,7 +2981,7 @@ The resulting ruckus has awakened the dwarves.  There are now several
 threatening little dwarves in the room with you!  Most of them throw
 knives at you!  All of them get you!
 
-You scored 383 out of a possible 430, using 475 turns.
+You scored 383 out of a possible 430, using 476 turns.
 
 Your score puts you in Master Adventurer Class B.
 
index 7f92bb2ca604aa4c5234846673803d1ce0264c29..b9534e1712be5b98d7eb3fdc2589bf4725011a86 100644 (file)
@@ -473,6 +473,7 @@ take oyster
 find oyster
 lock
 lock oyster
+unlock oyster
 drop oyster
 take oyster
 read oyster