From 76ccfbd19e9cb96fdfd0627f1a8f6493ed960c0b Mon Sep 17 00:00:00 2001 From: Asheraf Date: Mon, 4 Nov 2019 17:00:12 +0100 Subject: Add support for defining status icons in the sc config --- db/sc_config.conf | 1 + src/map/status.c | 11 ++++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/db/sc_config.conf b/db/sc_config.conf index 12b0e2293..abc73e793 100644 --- a/db/sc_config.conf +++ b/db/sc_config.conf @@ -43,6 +43,7 @@ SC_TYPE: { NoMadoReset: (bool) SC cannot be reset when MADO Gear is taken off. NoAllReset: (bool) SC cannot be reset by 'sc_end SC_ALL' and status change clear. } + Icon: (string, defaults to SI_BLANK) The status icon attached to the SC } **************************************************************************/ SC_PROVOKE: { diff --git a/src/map/status.c b/src/map/status.c index d2c67b84e..1d856a4a3 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -13458,19 +13458,24 @@ static bool status_read_scdb_libconfig_sub(struct config_setting_t *it, int idx, nullpo_retr(false, source); int i32; + int status_id; const char *name = config_setting_name(it); - if (!script->get_constant(name, &i32) || i32 <= SC_NONE || i32 >= SC_MAX) { + if (!script->get_constant(name, &status_id) || status_id <= SC_NONE || status_id >= SC_MAX) { ShowWarning("status_read_scdb_libconfig_sub: Invalid status type (%s) in \"%s\" entry #%d, skipping.\n", name, source, idx); return false; } - libconfig->setting_lookup_bool_real(it, "Visible", &status->dbs->DisplayType[i32]); + libconfig->setting_lookup_bool_real(it, "Visible", &status->dbs->DisplayType[status_id]); struct config_setting_t *fg = libconfig->setting_get_member(it, "Flags"); if (fg != NULL) - status->read_scdb_libconfig_sub_flag(fg, i32, source); + status->read_scdb_libconfig_sub_flag(fg, status_id, source); + if (itemdb->lookup_const(it, "Icon", &i32) && i32 >= 0) + status->dbs->IconChangeTable[status_id] = i32; + else + status->dbs->IconChangeTable[status_id] = SI_BLANK; return true; } -- cgit v1.2.3-70-g09d2