diff --git a/code/modules/mob/living/carbon/brain/brain_item.dm b/code/modules/mob/living/carbon/brain/brain_item.dm index 0b6bcededaf..10e57b5a893 100644 --- a/code/modules/mob/living/carbon/brain/brain_item.dm +++ b/code/modules/mob/living/carbon/brain/brain_item.dm @@ -26,11 +26,9 @@ mmi_icon = 'icons/mob/alien.dmi' mmi_icon_state = "AlienMMI" -/obj/item/organ/internal/brain/New() - ..() - spawn(5) - if(brainmob && brainmob.client) - brainmob.client.screen.len = null //clear the hud +/obj/item/organ/internal/brain/Destroy() + QDEL_NULL(brainmob) + return ..() /obj/item/organ/internal/brain/proc/transfer_identity(var/mob/living/carbon/H) brainmob = new(src) diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm index 510d3b32171..19ff7fa37d8 100644 --- a/code/modules/surgery/organs/augments_internal.dm +++ b/code/modules/surgery/organs/augments_internal.dm @@ -141,9 +141,11 @@ /obj/item/organ/internal/cyberimp/brain/anti_stun/emp_act(severity) if(crit_fail || emp_proof) return - crit_fail = 1 - spawn(90 / severity) - crit_fail = 0 + crit_fail = TRUE + addtimer(CALLBACK(src, .proc/reboot), 90 / severity) + +/obj/item/organ/internal/cyberimp/brain/anti_stun/proc/reboot() + crit_fail = FALSE /obj/item/organ/internal/cyberimp/brain/clown_voice name = "Comical implant" @@ -230,11 +232,13 @@ if(owner.stat == DEAD) return if(owner.nutrition <= hunger_threshold) - synthesizing = 1 + synthesizing = TRUE to_chat(owner, "You feel less hungry...") owner.adjust_nutrition(50) - spawn(50) - synthesizing = 0 + addtimer(CALLBACK(src, .proc/synth_cool), 50) + +/obj/item/organ/internal/cyberimp/chest/nutriment/proc/synth_cool() + synthesizing = FALSE /obj/item/organ/internal/cyberimp/chest/nutriment/emp_act(severity) if(!owner || emp_proof) @@ -309,10 +313,15 @@ var/mob/living/carbon/human/H = owner if(H.stat != DEAD && prob(50 / severity)) H.set_heartattack(TRUE) - spawn(600 / severity) - H.set_heartattack(FALSE) - if(H.stat == CONSCIOUS) - to_chat(H, "You feel your heart beating again!") + addtimer(CALLBACK(src, .proc/undo_heart_attack), 600 / severity) + +/obj/item/organ/internal/cyberimp/chest/reviver/proc/undo_heart_attack() + var/mob/living/carbon/human/H = owner + if(!istype(H)) + return + H.set_heartattack(FALSE) + if(H.stat == CONSCIOUS) + to_chat(H, "You feel your heart beating again!") //BOX O' IMPLANTS diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm index 51175fd53be..8308a793ca9 100644 --- a/code/modules/surgery/organs/heart.dm +++ b/code/modules/surgery/organs/heart.dm @@ -23,9 +23,8 @@ Stop() return - spawn(120) - if(!owner) - Stop() + if(!special) + addtimer(CALLBACK(src, .proc/stop_if_unowned), 120) /obj/item/organ/internal/heart/emp_act(intensity) if(!is_robotic() || emp_proof) @@ -43,14 +42,16 @@ return if(!beating) Restart() - spawn(80) - if(!owner) - Stop() + addtimer(CALLBACK(src, .proc/stop_if_unowned), 80) /obj/item/organ/internal/heart/safe_replace(mob/living/carbon/human/target) Restart() ..() +/obj/item/organ/internal/heart/proc/stop_if_unowned() + if(!owner) + Stop() + /obj/item/organ/internal/heart/proc/Stop() beating = FALSE update_icon()