From da51a3315ce7f5c242f0ae56ecf9a1caeec9d400 Mon Sep 17 00:00:00 2001 From: Citinited Date: Sat, 18 May 2019 13:02:06 +0100 Subject: [PATCH] Fix for infinite boo --- code/datums/spell.dm | 19 +++++++++++++------ code/modules/mob/dead/observer/spells.dm | 1 + 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/code/datums/spell.dm b/code/datums/spell.dm index 813604a1431..33c84d2eba3 100644 --- a/code/datums/spell.dm +++ b/code/datums/spell.dm @@ -62,6 +62,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin var/charge_type = "recharge" //can be recharge or charges, see charge_max and charge_counter descriptions; can also be based on the holder's vars now, use "holder_var" for that var/charge_max = 100 //recharge time in deciseconds if charge_type = "recharge" or starting charges if charge_type = "charges" + var/starts_charged = TRUE //Does this spell start ready to go? var/charge_counter = 0 //can only cast spells if it equals recharge, ++ each decisecond if charge_type = "recharge" or -- each cast if charge_type = "charges" var/still_recharging_msg = "The spell is still recharging." @@ -193,9 +194,11 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin /obj/effect/proc_holder/spell/New() ..() action = new(src) - still_recharging_msg = "[name] is still recharging." - charge_counter = charge_max + if(starts_charged) + charge_counter = charge_max + else + start_recharge() /obj/effect/proc_holder/spell/Destroy() QDEL_NULL(action) @@ -212,10 +215,14 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin /obj/effect/proc_holder/spell/proc/start_recharge() if(action) action.UpdateButtonIcon() - while(charge_counter < charge_max) - sleep(1) - charge_counter++ - if(action) + addtimer(CALLBACK(src, .add_charge), 10) + +/obj/effect/proc_holder/spell/proc/add_charge() + charge_counter += 10 + if(charge_counter < charge_max) //Needs to charge some more + addtimer(CALLBACK(src, .add_charge), 10) + return + if(action) //We got this far, it's charged action.UpdateButtonIcon() /obj/effect/proc_holder/spell/proc/perform(list/targets, recharge = 1, mob/user = usr) //if recharge is started is important for the trigger spells diff --git a/code/modules/mob/dead/observer/spells.dm b/code/modules/mob/dead/observer/spells.dm index 523e27c0621..916ff9aa9b8 100644 --- a/code/modules/mob/dead/observer/spells.dm +++ b/code/modules/mob/dead/observer/spells.dm @@ -17,6 +17,7 @@ GLOBAL_LIST_INIT(boo_phrases, list( school = "transmutation" charge_max = 600 + starts_charged = FALSE clothes_req = 0 stat_allowed = 1 invocation = ""