Fix warning on macOS
[open-adventure.git] / misc.c
diff --git a/misc.c b/misc.c
index 0d9405eb589551c5d2b7c21fc40b616af36bc6c6..6db040a1fb3c0f755b3a741d5d9646845df698e5 100644 (file)
--- a/misc.c
+++ b/misc.c
@@ -139,7 +139,7 @@ void sspeak(const int msg, ...)
     va_end(ap);
 }
 
-void pspeak(vocab_t msg, enum speaktype mode, int skip, bool blank, ...)
+void pspeak(vocab_t msg, enum speaktype mode, bool blank, int skip, ...)
 /* Find the skip+1st message from msg and print it.  Modes are:
  * feel = for inventory, what you can touch
  * look = the full description for the state the object is in
@@ -147,7 +147,7 @@ void pspeak(vocab_t msg, enum speaktype mode, int skip, bool blank, ...)
  * study = text on the object. */
 {
     va_list ap;
-    va_start(ap, blank);
+    va_start(ap, skip);
     switch (mode) {
     case touch:
         vspeak(objects[msg].inventory, blank, ap);
@@ -511,6 +511,7 @@ static void tokenize(char* raw, command_t *cmd)
     /* populate command with parsed vocabulary metadata */
     get_vocab_metadata(cmd->word[0].raw, &(cmd->word[0].id), &(cmd->word[0].type));
     get_vocab_metadata(cmd->word[1].raw, &(cmd->word[1].id), &(cmd->word[1].type));
+    cmd->state = TOKENIZED;
 }
 
 bool get_command_input(command_t *command)
@@ -538,6 +539,20 @@ bool get_command_input(command_t *command)
 
     tokenize(inputbuf, command);
 
+#ifdef GDEBUG
+    /* Needs to stay synced with enum word_type_t */
+    const char *types[] = {"NO_WORD_TYPE", "MOTION", "OBJECT", "ACTION", "NUMERIC"};
+    /* needs to stay synced with enum speechpart */
+    const char *roles[] = {"unknown", "intransitive", "transitive"};
+    printf("Command: role = %s type1 = %s, id1 = %ld, type2 = %s, id2 = %ld\n",
+           roles[command->part],
+           types[command->word[0].type],
+           command->word[0].id,
+           types[command->word[1].type],
+           command->word[1].id);
+#endif
+
+    command->state = GIVEN;
     return true;
 }
 
@@ -708,7 +723,7 @@ void state_change(obj_t obj, int state)
 /* Object must have a change-message list for this to be useful; only some do */
 {
     game.prop[obj] = state;
-    pspeak(obj, change, state, true);
+    pspeak(obj, change, true, state);
 }
 
 /* end */