diff --git a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm index 0cece4d7ec4..9a382efb37f 100644 --- a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm @@ -432,23 +432,72 @@ /******ORGAN HEALING******/ /*Suffix: -rite*/ +/* +*How this medicine works: +*Penthrite if you are not in crit only stabilizes your heart. +*As soon as you pass crit threshold it's special effects kick in. Penthrite forces your heart to beat preventing you from entering +*soft and hard crit, but there is a catch. During this you will be healed and you will sustain +*heart damage that will not imapct you as long as penthrite is in your system. +*If you reach the threshold of -60 HP penthrite stops working and you get a heart attack, penthrite is flushed from your system in that very moment, +*causing you to loose your soft crit, hard crit and heart stabilization effects. +*Overdosing on penthrite also causes a heart failure. +*/ /datum/reagent/medicine/C2/penthrite name = "Penthrite" - description = "An explosive compound used to stabilize heart conditions. May interfere with stomach acid!" + 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." color = "#F5F5F5" - self_consuming = TRUE + overdose_threshold = 50 /datum/reagent/medicine/C2/penthrite/on_mob_add(mob/living/M) . = ..() + to_chat(M,"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! -/datum/reagent/medicine/C2/penthrite/on_mob_metabolize(mob/living/M) + +/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. + + H.adjustToxLoss(-2 * REM, 0) + H.adjustBruteLoss(-2 * REM, 0) + H.adjustFireLoss(-2 * REM, 0) + H.adjustOxyLoss(-6 * REM, 0) + + H.losebreath = 0 + + H.adjustOrganLoss(ORGAN_SLOT_HEART,max(1,volume/10)) // your heart is barely keeping up! + + H.Jitter(rand(0,2)) + H.Dizzy(rand(0,2)) + + + if(prob(33)) + to_chat(H,"Your body is trying to give up, but your heart is still beating!") + + 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 + to_chat(H,"You feel something rupturing inside your chest!") + H.emote("scream") + H.set_heartattack(TRUE) + volume = 0 . = ..() - M.adjustOrganLoss(ORGAN_SLOT_STOMACH,0.5 * REM) /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) . = ..() +/datum/reagent/medicine/C2/penthrite/overdose_process(mob/living/carbon/human/H) + REMOVE_TRAIT(H, TRAIT_STABLEHEART, type) + H.adjustStaminaLoss(10) + H.adjustOrganLoss(ORGAN_SLOT_HEART,10) + H.set_heartattack(TRUE) + + /******NICHE******/ //todo diff --git a/code/modules/reagents/chemistry/recipes/cat2_medicines.dm b/code/modules/reagents/chemistry/recipes/cat2_medicines.dm index 136cd443c9a..4e4205d6f80 100644 --- a/code/modules/reagents/chemistry/recipes/cat2_medicines.dm +++ b/code/modules/reagents/chemistry/recipes/cat2_medicines.dm @@ -61,5 +61,5 @@ required_reagents = list(/datum/reagent/sulfur = 1, /datum/reagent/fluorine = 1, /datum/reagent/toxin = 1, /datum/reagent/nitrous_oxide = 2) /datum/chemical_reaction/penthrite - results = list(/datum/reagent/medicine/C2/penthrite = 4) - required_reagents = list(/datum/reagent/pentaerythritol = 4, /datum/reagent/acetone = 1, /datum/reagent/toxin/acid/nitracid = 1) + results = list(/datum/reagent/medicine/C2/penthrite = 3) + required_reagents = list(/datum/reagent/pentaerythritol = 1, /datum/reagent/acetone = 1, /datum/reagent/toxin/acid/nitracid = 1 , /datum/reagent/wittel = 1) diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm index 2171015ab4f..9653a448bc9 100644 --- a/code/modules/reagents/chemistry/recipes/medicine.dm +++ b/code/modules/reagents/chemistry/recipes/medicine.dm @@ -169,3 +169,4 @@ var/location = get_turf(holder.my_atom) for(var/i = 1, i <= created_volume, i++) new /obj/item/stack/medical/mesh/advanced(location) + diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index 169caf3a93d..dba45bfd615 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -115,11 +115,15 @@ required_temp = 550 + rand(-49,49) -/datum/chemical_reaction/reagent_explosion/penthrite_explosion - required_reagents = list(/datum/reagent/medicine/C2/penthrite = 1, /datum/reagent/phenol = 1, /datum/reagent/acetone_oxide = 1) - required_temp = 315 +/datum/chemical_reaction/reagent_explosion/penthrite_explosion_epinephrine + required_reagents = list(/datum/reagent/medicine/C2/penthrite = 1, /datum/reagent/medicine/epinephrine = 1) strengthdiv = 5 +/datum/chemical_reaction/reagent_explosion/penthrite_explosion_atropine + required_reagents = list(/datum/reagent/medicine/C2/penthrite = 1, /datum/reagent/medicine/atropine = 1) + strengthdiv = 5 + modifier = 5 + /datum/chemical_reaction/reagent_explosion/potassium_explosion required_reagents = list(/datum/reagent/water = 1, /datum/reagent/potassium = 1) strengthdiv = 20