mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-27 15:17:01 +01:00
[MIRROR] Penthrite no longer makes you immune to staminacrit, among other things: Not a web edit this time (#597)
* imagine closing a fix PR just because it's a web edit (#53243) Fixes all these issues Some admins and I did some testing with it in the thunderdome (round ID 144991), and we confirmed some !!FUN!! things about penthrite: Penthrite makes you completely immune to staminacrit while it's in your system. This is because it lowers your crit_threshold to -60, but your stamina damage is capped at -20. This means that your stamina can never dip below your crit_threshold, and thus, you can never be staminacritted (no, not even if someone alternates stun baton strikes on your head and chest). The only thing that keeps this from being completely busted is that shovestunning still works on you (but perhaps some bioware and/or implants could get around that...). Penthrite works on mobs that don't have a metabolism, but won't metabolize itself away in them over time. This is because penthrite uses on_mob_add() instead of on_mob_metabolize(). Yes, this means that if you inject yourself with a luxury medipen as an android, a skeleton, or the like, you'll be able to be immune to staminacrit indefinitely (or until someone jabs you once with a normal medipen). In fact, if you're a high-functioning zombie, then you'll be able to abuse your nodeath trait with the nohardcrit and nosoftcrit traits that penthrite gives you, as penthrite's self-purge-if-you're-below-160-HP effect is in on_mob_life(), which doesn't get called by races with the nometabolism trait. I forgot to test this one, but I think that by strapping someone who has penthrite in their system onto and off of a stasis bed repeatedly, you can cause their crit_threshold to rise with each buckling, eventually causing it to go above their maxHealth. This is because the crit_threshold raising effect is in on_mob_end_metabolize() (like it should be), but the crit_threshold lowering effect is in on_mob_add() (instead of on_mob_metabolize()). Also, this changes the description of penthrite to be a bit more clear about which "emergency medications" it reacts violently with. Nobody reads chem descriptions anyway, but maybe they will in the future if doing so gets made easier. * Penthrite no longer makes you immune to staminacrit, among other things: Not a web edit this time Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
This commit is contained in:
@@ -447,22 +447,21 @@
|
||||
*/
|
||||
/datum/reagent/medicine/c2/penthrite
|
||||
name = "Penthrite"
|
||||
description = "An expensive medicine that aids with pumping blood around the body even without a heart, and prevents the heart from slowing down. It reacts violently with other emergency medication."
|
||||
description = "An expensive medicine that aids with pumping blood around the body even without a heart, and prevents the heart from slowing down. Mixing it with epinephrine or atropine will cause an explosion."
|
||||
color = "#F5F5F5"
|
||||
overdose_threshold = 50
|
||||
|
||||
/datum/reagent/medicine/c2/penthrite/on_mob_add(mob/living/M)
|
||||
/datum/reagent/medicine/c2/penthrite/on_mob_metabolize(mob/living/M)
|
||||
. = ..()
|
||||
to_chat(M,"<span class='notice'>Your heart begins to beat with great force!")
|
||||
ADD_TRAIT(M, TRAIT_STABLEHEART, type)
|
||||
ADD_TRAIT(M, TRAIT_NOHARDCRIT,type)
|
||||
ADD_TRAIT(M, TRAIT_NOSOFTCRIT,type)
|
||||
M.crit_threshold = M.crit_threshold + HEALTH_THRESHOLD_FULLCRIT*2 //your heart is still pumping!
|
||||
|
||||
ADD_TRAIT(M, TRAIT_NOCRITDAMAGE,type)
|
||||
|
||||
/datum/reagent/medicine/c2/penthrite/on_mob_life(mob/living/carbon/human/H)
|
||||
H.adjustOrganLoss(ORGAN_SLOT_STOMACH,0.25)
|
||||
if(H.health <= HEALTH_THRESHOLD_CRIT && H.health > H.crit_threshold) //we cannot save someone above our raised crit threshold.
|
||||
if(H.health <= HEALTH_THRESHOLD_CRIT && H.health > (H.crit_threshold + HEALTH_THRESHOLD_FULLCRIT*2)) //we cannot save someone below our lowered crit threshold.
|
||||
|
||||
H.adjustToxLoss(-2 * REM, 0)
|
||||
H.adjustBruteLoss(-2 * REM, 0)
|
||||
@@ -480,8 +479,8 @@
|
||||
if(prob(33))
|
||||
to_chat(H,"<span class='danger'>Your body is trying to give up, but your heart is still beating!</span>")
|
||||
|
||||
if(H.health <= H.crit_threshold) //certain death above this threshold
|
||||
REMOVE_TRAIT(H, TRAIT_STABLEHEART, type) //we have to remove the stable heart before we give him heart attack
|
||||
if(H.health <= (H.crit_threshold + HEALTH_THRESHOLD_FULLCRIT*2)) //certain death below this threshold
|
||||
REMOVE_TRAIT(H, TRAIT_STABLEHEART, type) //we have to remove the stable heart trait before we give them a heart attack
|
||||
to_chat(H,"<span class='danger'>You feel something rupturing inside your chest!</span>")
|
||||
H.emote("scream")
|
||||
H.set_heartattack(TRUE)
|
||||
@@ -489,10 +488,10 @@
|
||||
. = ..()
|
||||
|
||||
/datum/reagent/medicine/c2/penthrite/on_mob_end_metabolize(mob/living/M)
|
||||
M.crit_threshold = M.crit_threshold - HEALTH_THRESHOLD_FULLCRIT*2 //your heart is still pumping!
|
||||
REMOVE_TRAIT(M, TRAIT_STABLEHEART, type)
|
||||
REMOVE_TRAIT(M, TRAIT_NOHARDCRIT,type)
|
||||
REMOVE_TRAIT(M, TRAIT_NOSOFTCRIT,type)
|
||||
REMOVE_TRAIT(M, TRAIT_NOCRITDAMAGE,type)
|
||||
. = ..()
|
||||
|
||||
/datum/reagent/medicine/c2/penthrite/overdose_process(mob/living/carbon/human/H)
|
||||
|
||||
Reference in New Issue
Block a user