From abdf2643727f013534e9ec514d43b226038fecb2 Mon Sep 17 00:00:00 2001 From: Celtic Minstrel Date: Sat, 31 Aug 2024 01:07:06 -0400 Subject: [PATCH] Expose rechargeable flag in the scenario editor --- rsrc/dialogs/edit-item-abils.xml | 1 + src/scenedit/scen.core.cpp | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/rsrc/dialogs/edit-item-abils.xml b/rsrc/dialogs/edit-item-abils.xml index 47ba7eb1..4ade2c1a 100644 --- a/rsrc/dialogs/edit-item-abils.xml +++ b/rsrc/dialogs/edit-item-abils.xml @@ -41,6 +41,7 @@ Cursed Conceal ability Shops won't buy + Rechargeable Item treasure class: (0 is lowest level of treasure, 4 is highest) diff --git a/src/scenedit/scen.core.cpp b/src/scenedit/scen.core.cpp index de37770e..63cfe1da 100644 --- a/src/scenedit/scen.core.cpp +++ b/src/scenedit/scen.core.cpp @@ -1838,11 +1838,17 @@ static void put_item_abils_in_dlog(cDialog& me, cItem& item, short which) { me["use-type"].hide(); } + if(item.charges <= 0 || item.type_flag != 0) { + // Only unstackable items with charges can be rechargeable. + me["recharge"].hide(); + } + dynamic_cast(me["always-id"]).setState(item.ident ? led_red : led_off); dynamic_cast(me["magic"]).setState(item.magic ? led_red : led_off); dynamic_cast(me["cursed"]).setState(item.cursed ? led_red : led_off); dynamic_cast(me["conceal"]).setState(item.concealed ? led_red : led_off); dynamic_cast(me["no-sell"]).setState(item.unsellable ? led_red : led_off); + dynamic_cast(me["recharge"]).setState(item.rechargeable ? led_red : led_off); } static void save_item_abils(cDialog& me, cItem& item) { @@ -1857,6 +1863,7 @@ static void save_item_abils(cDialog& me, cItem& item) { item.cursed = dynamic_cast(me["cursed"]).getState() != led_off; item.unsellable = dynamic_cast(me["no-sell"]).getState() != led_off; item.concealed = dynamic_cast(me["conceal"]).getState() != led_off; + item.rechargeable = dynamic_cast(me["recharge"]).getState() != led_off; } static bool edit_item_abil_event_filter(cDialog& me, std::string hit, cItem& item, short which) {