diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm
index bb66b2282f6..9df95782499 100644
--- a/code/modules/surgery/organs/augments_internal.dm
+++ b/code/modules/surgery/organs/augments_internal.dm
@@ -403,15 +403,16 @@
if(cooldown > world.time || owner.suiciding) // don't heal while you're in cooldown!
return
if(reviving)
- if(owner.health <= HEALTH_THRESHOLD_CRIT)
+ reviving = FALSE
+ if(owner.health <= HEALTH_THRESHOLD_CRIT + 10) //We do not want to leave them on the end of crit constantly.
addtimer(CALLBACK(src, PROC_REF(heal)), 30)
- else
- reviving = FALSE
- if(owner.HasDisease(new /datum/disease/critical/shock(0)) && prob(15)) //If they are no longer in crit, but have shock, and pass a 15% chance:
- for(var/datum/disease/critical/shock/S in owner.viruses)
- S.cure()
- revive_cost += 150
- to_chat(owner, "You feel better.")
+ reviving = TRUE
+ if(owner.health > HEALTH_THRESHOLD_CRIT && owner.HasDisease(new /datum/disease/critical/shock(0)) && prob(15)) //We do not do an else, as we need them to cure shock inside this magic zone of 10 damage
+ for(var/datum/disease/critical/shock/S in owner.viruses)
+ S.cure()
+ revive_cost += 150
+ to_chat(owner, "You feel better.")
+ if(!reviving)
return
cooldown = revive_cost + world.time
revive_cost = 0
@@ -424,14 +425,14 @@
owner.adjustOxyLoss(-3)
revive_cost += 5
if(prob(75) && owner.getBruteLoss())
- owner.adjustBruteLoss(-1)
- revive_cost += 20
+ owner.adjustBruteLoss(-2)
+ revive_cost += 15
if(prob(75) && owner.getFireLoss())
- owner.adjustFireLoss(-1)
- revive_cost += 20
+ owner.adjustFireLoss(-2)
+ revive_cost += 15
if(prob(40) && owner.getToxLoss())
owner.adjustToxLoss(-1)
- revive_cost += 50
+ revive_cost += 25
/obj/item/organ/internal/cyberimp/chest/reviver/emp_act(severity)