diff options
Diffstat (limited to 'src/emap/itemdb.c')
-rw-r--r-- | src/emap/itemdb.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/emap/itemdb.c b/src/emap/itemdb.c index a64f857..478d88c 100644 --- a/src/emap/itemdb.c +++ b/src/emap/itemdb.c @@ -32,10 +32,12 @@ bool eitemdb_is_item_usable(struct item_data *item) void eitemdb_readdb_additional_fields(int *itemid, config_setting_t *it, int *n __attribute__ ((unused)), - const char *source __attribute__ ((unused))) + const char *source) { struct item_data *item = itemdb->exists(*itemid); int i32 = 0; + const char *str = NULL; + if (!item) { hookStop(); @@ -92,6 +94,9 @@ void eitemdb_readdb_additional_fields(int *itemid, if (itemdb->lookup_const(it, "UnequipFailEffect", &i32)) data->unequipFailEffect = i32; + if (libconfig->setting_lookup_string(it, "OnDropScript", &str)) + data->dropScript = *str ? script->parse(str, source, -item->nameid, SCRIPT_IGNORE_EXTERNAL_BRACKETS, NULL) : NULL; + config_setting_t *group = libconfig->setting_get_member(it, "AllowCards"); if (group) { @@ -120,3 +125,13 @@ void eitemdb_readdb_additional_fields(int *itemid, hookStop(); } + +void edestroy_item_data(struct item_data* self, int *free_selfPtr) +{ + struct ItemdExt *data = itemd_get(self); + if (!data) + return; + + if (data->dropScript) + script->free_code(data->dropScript); +} |