diff --git a/code/modules/spells/spell_types/aimed.dm b/code/modules/spells/spell_types/aimed.dm index 597f3185a4..cdac152ed2 100644 --- a/code/modules/spells/spell_types/aimed.dm +++ b/code/modules/spells/spell_types/aimed.dm @@ -21,6 +21,9 @@ return if(active) msg = "[deactive_msg]" + if(charge_type == "recharge") + var/refund_percent = current_amount/projectile_amount + charge_counter = charge_max * refund_percent remove_ranged_ability(msg) else msg = "[active_msg]Left-click to shoot it at a target!" @@ -36,12 +39,12 @@ /obj/effect/proc_holder/spell/aimed/InterceptClickOn(mob/living/caller, params, atom/target) if(..()) return FALSE - var/ignore = (current_amount >= 1) - if(!cast_check(ignore, ranged_ability_user)) + var/ran_out = (current_amount <= 0) + if(!cast_check(!ran_out, ranged_ability_user)) remove_ranged_ability() return FALSE var/list/targets = list(target) - perform(targets,user = ranged_ability_user) + perform(targets, ran_out, user = ranged_ability_user) return TRUE /obj/effect/proc_holder/spell/aimed/cast(list/targets, mob/living/user) @@ -52,11 +55,14 @@ return FALSE fire_projectile(user, target) user.newtonian_move(get_dir(U, T)) - if(--current_amount <= 0) + if(current_amount <= 0) remove_ranged_ability() //Auto-disable the ability once you run out of bullets. + charge_counter = 0 + start_recharge() return TRUE /obj/effect/proc_holder/spell/aimed/proc/fire_projectile(mob/living/user, atom/target) + current_amount-- var/obj/item/projectile/P = new projectile_type(user.loc) P.current = get_turf(user) P.firer = user