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