home · contact · privacy
Server: Fix buggy initialization of new thing types.
authorChristian Heller <c.heller@plomlompom.de>
Thu, 24 Jul 2014 01:16:35 +0000 (03:16 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Thu, 24 Jul 2014 01:16:35 +0000 (03:16 +0200)
src/server/god_commands.c
src/server/things.c
src/server/things.h

index eee8b1105e22a5c5cfe22c9bdb6b1f6a867eaacc..02c091aa548edb9e912967964eff7cb03f324227 100644 (file)
@@ -157,7 +157,7 @@ static uint8_t parse_thingaction_manipulation(char * tok0, char * tok1)
             }
         }
     }
-    else if (parse_val(tok0, tok1, s[S_CMD_THINGACTION], '8', (char *) &id))
+    else if (parse_val(tok0, tok1, s[S_CMD_THINGACTION], 'i', (char *) &id))
     {
         ta = get_thing_action(id);
         if (!ta)
@@ -286,7 +286,7 @@ static uint8_t parse_thing_manipulation(char * tok0, char * tok1)
         return 1;
     }
     uint8_t id;
-    if (    parse_thing_type(tok0, tok1, t)
+    if (   parse_thing_type(tok0, tok1, t)
         || parse_thing_command(tok0, tok1, t)
         || parse_val(tok0,tok1, s[S_CMD_T_ARGUMENT], '8', (char *)&t->arg)
         || parse_val(tok0,tok1, s[S_CMD_T_PROGRESS], '8', (char *)&t->progress)
index 4097f61a65707fc01dfe07a11a7cfa77b65c8dbd..4a5a490dbcc6f3f93abeace2576cd7c88b838159 100644 (file)
@@ -31,8 +31,8 @@ struct NextAndId
 /* To linked list of NextAndId structs (or rather structs whose start region is
  * compatible to it) starting at "start", add newly allocated element of
  * "n_size" and an ID that is either "id" or, if "id" is <= UINT8_MAX and >=
- * "id_start", get lowest ID for new thing ("struct_id"==0), thing type
- * ("struct_id"==1) or thing action ("struct_id"==2).
+ * "id_start", get lowest ID >= "start_id" and <= UINT8_MAX for new thing
+ * ("struct_id"=0), thing type ("struct_id"=1) or thing action ("struct_id"=2).
  */
 static struct NextAndId * add_to_struct_list(size_t n_size, uint8_t start_id,
                                              int16_t id, uint8_t struct_id,
@@ -99,6 +99,7 @@ extern struct ThingType * add_thing_type(int16_t id)
                                                  &world.thing_types);
     set_cleanup_flag(CLEANUP_THING_TYPES);
     tt->name = strdup("(none)");
+    tt->corpse_id = tt->id;
     return tt;
 }
 
index 599d877ac2b858257480b8c09fd3aab0392971e0..d5ef508a4aa5bd3034aa2e182d2ead9bd47265b3 100644 (file)
@@ -55,14 +55,14 @@ struct ThingAction
  */
 extern struct ThingAction * add_thing_action(uint8_t id);
 
-/* Add thing type of "id", with .corpse_id defaulting to "id" to
- * world.thing_types, .name to "(none)" and the remaining values to 0. If "id"
- * is not >= 0 and <= UINT8_MAX, use lowest unused id. Return thing type.
+/* Add thing type of "id" to world.thing_types, with .corpse_id defaulting to
+ * the new thing type's .id, .name to "(none)" and the remaining values to 0. If
+ * "id" is not >= 0 and <= UINT8_MAX, use lowest unused id. Return thing type.
  */
 extern struct ThingType * add_thing_type(int16_t id);
 
-/* Add thing of "id" and "type" on position of "y"/x" to world.things.If "id" is
- * not >= 0 and <= UINT8_MAX, use lowest unused id. Return thing.
+/* Add thing of "id" and "type" on position of "y"/x" to world.things. If "id"
+ * is not >= 0 and <= UINT8_MAX, use lowest unused id. Return thing.
  */
 extern struct Thing * add_thing(int16_t id, uint8_t type, uint8_t y, uint8_t x);