From 8129a6828ac1b459d0f1b062b73020f934896f34 Mon Sep 17 00:00:00 2001 From: Couls Date: Fri, 4 Oct 2019 14:48:20 -0400 Subject: [PATCH] Change reviver to be new-crit friendly (#12464) --- .../surgery/organs/augments_internal.dm | 47 +++++++++---------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm index 8f80b4e58e3..e9626a6b76d 100644 --- a/code/modules/surgery/organs/augments_internal.dm +++ b/code/modules/surgery/organs/augments_internal.dm @@ -268,33 +268,32 @@ desc += " The implant has been hardened. It is invulnerable to EMPs." /obj/item/organ/internal/cyberimp/chest/reviver/on_life() + if(cooldown > world.time || owner.suiciding) // don't heal while you're in cooldown! + return if(reviving) - if(owner.stat == UNCONSCIOUS && (owner.sleeping == 0)) //!owner.sleeping didn't work for whatever dumb reason - spawn(30) - if(prob(90) && owner.getOxyLoss()) - owner.adjustOxyLoss(-3) - revive_cost += 5 - if(prob(75) && owner.getBruteLoss()) - owner.adjustBruteLoss(-1) - revive_cost += 20 - if(prob(75) && owner.getFireLoss()) - owner.adjustFireLoss(-1) - revive_cost += 20 - if(prob(40) && owner.getToxLoss()) - owner.adjustToxLoss(-1) - revive_cost += 50 + if(owner.health <= HEALTH_THRESHOLD_CRIT) + addtimer(CALLBACK(src, .proc/heal), 30) else - cooldown = revive_cost + world.time - reviving = 0 - return - if(cooldown > world.time) - return - if(owner.stat != UNCONSCIOUS) - return - if(owner.suiciding) - return + reviving = FALSE + return + cooldown = revive_cost + world.time revive_cost = 0 - reviving = 1 + reviving = TRUE + +/obj/item/organ/internal/cyberimp/chest/reviver/proc/heal() + if(prob(90) && owner.getOxyLoss()) + owner.adjustOxyLoss(-3) + revive_cost += 5 + if(prob(75) && owner.getBruteLoss()) + owner.adjustBruteLoss(-1) + revive_cost += 20 + if(prob(75) && owner.getFireLoss()) + owner.adjustFireLoss(-1) + revive_cost += 20 + if(prob(40) && owner.getToxLoss()) + owner.adjustToxLoss(-1) + revive_cost += 50 + /obj/item/organ/internal/cyberimp/chest/reviver/emp_act(severity) if(!owner || emp_proof)