diff --git a/code/datums/elements/shielded.dm b/code/datums/elements/shielded.dm index 913c2df934..b9c8c094f6 100644 --- a/code/datums/elements/shielded.dm +++ b/code/datums/elements/shielded.dm @@ -3,7 +3,7 @@ id_arg_index = 3 var/max_charges = 3 var/recharge_delay = 20 SECONDS //How long after we've been shot before we can start recharging. - var/recharge_rate = 1 //How quickly the shield recharges once it starts charging. Can be a decimal. + var/recharge_rate = 1 //How quickly the shield recharges once it starts charging. Can be a decimal. set to zero to disable. var/accepted_slots var/shield_state = "shield-old" //the state of the shield overlay. var/broken_state //null @@ -85,13 +85,13 @@ var/atom/movable/A = i recharge(A, recharge_rate, checked) -/datum/element/shielded/proc/recharge(atom/movable/A, amount, list/checked = list()) +/datum/element/shielded/proc/recharge(atom/movable/A, amount, list/checked = list(), forced = FALSE) var/old_charges = charges_per_atom[A] - if(old_charges >= max_charges || world.time < last_use_per_atom[A]) + if(old_charges >= max_charges || (!forced && world.time < last_use_per_atom[A])) return - var/new_charges = min(old_charges + recharge_rate, max_charges) + var/new_charges = CLAMP(old_charges + recharge_rate, 0, max_charges) charges_per_atom[A] = new_charges - if(new_charges % 1) + if(round(old_charges) >= round(new_charges)) //only send outputs if it effectively gained at least one charge return var/mob/living/L var/skip_in = FALSE diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm index e4596825d0..6c61cf1255 100644 --- a/code/modules/clothing/suits/wiz_robe.dm +++ b/code/modules/clothing/suits/wiz_robe.dm @@ -239,6 +239,6 @@ to_chat(user, "The rune can only be used on battlemage armour!") return var/datum/element/shielded/S = SSdcs.GetElement(list(/datum/element/shielded, 0, W.max_charges, W.recharge_delay, W.recharge_rate, ITEM_SLOT_OCLOTHING, W.shield_state)) - S.recharge(W, 8) + S.recharge(W, 8, forced = TRUE) to_chat(user, "You charge \the [W]. It can now absorb [S.charges_per_atom[W]] hits.") qdel(src)