diff options
Diffstat (limited to 'src/emap/craft.c')
-rw-r--r-- | src/emap/craft.c | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/src/emap/craft.c b/src/emap/craft.c index 69f2547..c790836 100644 --- a/src/emap/craft.c +++ b/src/emap/craft.c @@ -32,20 +32,27 @@ void do_init_craft(void) craftvar_db = idb_alloc(DB_OPT_RELEASE_BOTH); } -static int delete_craft_sub(DBKey key __attribute__ ((unused)), - DBData *data, - va_list args __attribute__ ((unused))) +static void delete_craft_var(struct craft_vardata *craft) { - struct craft_vardata *craft = DB->data2ptr(data); if (!craft) - return 0; - + return; int index; for (index = 0; index < craft_inventory_size; index ++) { struct craft_slot *slot = &craft->slots[index]; VECTOR_CLEAR(slot->items); } +} + +static int delete_craft_sub(DBKey key __attribute__ ((unused)), + DBData *data, + va_list args __attribute__ ((unused))) +{ + struct craft_vardata *craft = DB->data2ptr(data); + if (!craft) + return 0; + + delete_craft_var(craft); return 0; } @@ -255,3 +262,15 @@ void craft_dump(TBL_PC *sd, const int id) } } } + +void craft_delete(const int id) +{ + struct craft_vardata *craft = idb_get(craftvar_db, id); + if (!craft) + { + ShowError("Craft object with id %d not exists.\n", id); + return; + } + delete_craft_var(craft); + idb_remove(craftvar_db, id); +} |