From bf63b120b535762f69acff5144f62c8346e1747f Mon Sep 17 00:00:00 2001 From: Cameron Lennox Date: Sun, 9 Mar 2025 19:37:52 -0400 Subject: [PATCH] Myelamine fixes and adjustments (#17297) * Update medicine.dm - myelamine now ACTUALLY heals internal wounds if you take a 10u dose of it. No more 'I took 10u and it had 0.1 damage remaining and I bled out 10 minutes later' - myelamine has an updated description, informing you that it doesn't heal JUST internal wounds, but it also heals external wounds. * grep --- .../animal/alien animals/jellyfish.dm | 2 +- .../animal/giant_spider/_giant_spider.dm | 2 +- .../simple_mob/subtypes/animal/space/carp.dm | 2 +- .../subtypes/mechanical/viscerator.dm | 2 +- .../living/simple_mob/subtypes/vore/bee.dm | 2 +- code/modules/reagents/reagents/medicine.dm | 34 +++++++++---------- 6 files changed, 22 insertions(+), 22 deletions(-) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/jellyfish.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/jellyfish.dm index d75f3ad4c2b..de0eb06a881 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/jellyfish.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/jellyfish.dm @@ -81,7 +81,7 @@ GLOBAL_VAR_INIT(jellyfish_count, 0) var/reproduction_cooldown = 0 -/mob/living/simple_mob/vore/alienanimals/space_jellyfish/Initialize() +/mob/living/simple_mob/vore/alienanimals/space_jellyfish/Initialize(mapload) . = ..() AddComponent(/datum/component/swarming) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm index aea882fcfde..4e72596d6c1 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm @@ -120,7 +120,7 @@ allow_mind_transfer = TRUE -/mob/living/simple_mob/animal/giant_spider/Initialize() +/mob/living/simple_mob/animal/giant_spider/Initialize(mapload) . = ..() AddComponent(/datum/component/swarming) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/carp.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/carp.dm index a476e9ea7d2..ef40595c1c2 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/space/carp.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/carp.dm @@ -87,7 +87,7 @@ "silver" = "#fdfbf3", \ ) -/mob/living/simple_mob/animal/space/carp/Initialize() +/mob/living/simple_mob/animal/space/carp/Initialize(mapload) . = ..() carp_randomify(rarechance) update_icons() diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/viscerator.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/viscerator.dm index 98bd0a7ec22..0ae66fded99 100644 --- a/code/modules/mob/living/simple_mob/subtypes/mechanical/viscerator.dm +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/viscerator.dm @@ -50,7 +50,7 @@ ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive -/mob/living/simple_mob/mechanical/viscerator/Initialize() +/mob/living/simple_mob/mechanical/viscerator/Initialize(mapload) . = ..() AddComponent(/datum/component/swarming) diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/bee.dm b/code/modules/mob/living/simple_mob/subtypes/vore/bee.dm index 95d97b26dd9..fc899683a52 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/bee.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/bee.dm @@ -46,7 +46,7 @@ allow_mind_transfer = TRUE -/mob/living/simple_mob/vore/bee/Initialize() +/mob/living/simple_mob/vore/bee/Initialize(mapload) . = ..() AddComponent(/datum/component/swarming) diff --git a/code/modules/reagents/reagents/medicine.dm b/code/modules/reagents/reagents/medicine.dm index 183eb518fc5..124d7bfa81e 100644 --- a/code/modules/reagents/reagents/medicine.dm +++ b/code/modules/reagents/reagents/medicine.dm @@ -736,7 +736,7 @@ /datum/reagent/myelamine name = REAGENT_MYELAMINE id = REAGENT_ID_MYELAMINE - description = "Used to rapidly clot internal hemorrhages by increasing the effectiveness of platelets." + description = "Used to rapidly clot hemorrhages by increasing the effectiveness of platelets. An ideal dosage of 10 units will fully heal any internal hemorrhages." reagent_state = LIQUID color = "#4246C7" metabolism = REM * 0.75 @@ -755,30 +755,30 @@ for(var/obj/item/organ/external/O in H.bad_external_organs) for(var/datum/wound/W in O.wounds) if(W.bleeding()) - W.damage = max(W.damage - wound_heal, 0) - if(W.damage <= 0) - O.wounds -= W - if(W.internal) - W.damage = max(W.damage - wound_heal, 0) - if(W.damage <= 0) + W.bandage() //This is the ACTUAL clotting being performed. + W.damage = max(W.damage - (wound_heal*3.5), 0) //Removed should be 0.15 (can be higher if you have high/apex metabolism). repair_strength is 6. Making wound_heal .9. Multiply by 3.5 and that gives us a heal of 3.15 on our wounds. + if(W.damage <= 0) //We do this since this will only happen once per bleeding wound, as it's then bandaged (clotted). We do the heal as we want it to be somewhat like slapping them with an advanceed/bruise_pack. (Bruise packs heal 3.5 on application, as of the time of writing.) O.wounds -= W + break //We only heal ONE external wound per go around. + for(var/datum/wound/internal_bleeding/W in O.wounds) + W.damage = max(W.damage - wound_heal, 0) + if(W.damage <= 0) + O.wounds -= W + else if(dose >= 9.5 && dose < 11) //If you are in the 'sweet zone' of 9.5u to 11u, your internal wounds instantly heal. This is to prevent people from using a clotting pen or taking a 10u clotting pill from medical and it not actually fixing their wounds. + W.damage = 0 + O.wounds -= W /datum/reagent/myelamine/overdose(var/mob/living/carbon/M, var/alien, var/removed) - // Copypaste of affect_blood with slight adjustment. Heals slightly faster at the cost of high toxins + //Heals slightly faster at the cost of high toxins. Honestly you should never do this, but whatever. ..() if(ishuman(M)) var/mob/living/carbon/human/H = M var/wound_heal = removed * repair_strength / 2 for(var/obj/item/organ/external/O in H.bad_external_organs) - for(var/datum/wound/W in O.wounds) - if(W.bleeding()) - W.damage = max(W.damage - wound_heal, 0) - if(W.damage <= 0) - O.wounds -= W - if(W.internal) - W.damage = max(W.damage - wound_heal, 0) - if(W.damage <= 0) - O.wounds -= W + for(var/datum/wound/internal_bleeding/W in O.wounds) + W.damage = max(W.damage - wound_heal, 0) + if(W.damage <= 0) + O.wounds -= W /datum/reagent/respirodaxon name = REAGENT_RESPIRODAXON