From 33f6facdb466dc032ce8008682ac6e927071341a Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Fri, 18 Mar 2016 09:14:35 -0700 Subject: [PATCH] Organs can now be made viable again with an application of mitocholide --- .../reagents/oldchem/reagents/reagents_med.dm | 5 +++++ code/modules/surgery/organs/organ.dm | 19 +++++++++++-------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/code/modules/reagents/oldchem/reagents/reagents_med.dm b/code/modules/reagents/oldchem/reagents/reagents_med.dm index ae6fd9bb8a3..63318122b4f 100644 --- a/code/modules/reagents/oldchem/reagents/reagents_med.dm +++ b/code/modules/reagents/oldchem/reagents/reagents_med.dm @@ -87,6 +87,11 @@ ..() return +/datum/reagent/mitocholide/reaction_obj(var/obj/O, var/volume) + if(istype(O, /obj/item/organ)) + var/obj/item/organ/Org = O + Org.rejuvenate() + /datum/reagent/cryoxadone name = "Cryoxadone" id = "cryoxadone" diff --git a/code/modules/surgery/organs/organ.dm b/code/modules/surgery/organs/organ.dm index e3b7f49abc4..c4ab2e26331 100644 --- a/code/modules/surgery/organs/organ.dm +++ b/code/modules/surgery/organs/organ.dm @@ -57,7 +57,7 @@ var/list/organ_cache = list() /obj/item/organ/proc/set_dna(var/datum/dna/new_dna) if(new_dna) dna = new_dna.Clone() - blood_DNA.Cut() + blood_DNA = list() blood_DNA[dna.unique_enzymes] = dna.b_type /obj/item/organ/proc/die() @@ -86,11 +86,11 @@ var/list/organ_cache = list() return if(!owner) - if(reagents && prob(40)) - reagents.remove_any(0.1) - for(var/datum/reagent/R in reagents.reagent_list) - R.reaction_turf(get_turf(src), 0.1) - + if(reagents) + var/datum/reagent/blood/B = locate(/datum/reagent/blood) in reagents.reagent_list + if(B && prob(40)) + reagents.remove_reagent("blood",0.1) + blood_splatter(src,B,1) // Maybe scale it down a bit, have it REALLY kick in once past the basic infection threshold // Another mercy for surgeons preparing transplant organs germ_level++ @@ -173,6 +173,9 @@ var/list/organ_cache = list() /obj/item/organ/proc/rejuvenate() damage = 0 germ_level = 0 + status &= ~ORGAN_DEAD + if(!owner) + processing_objects |= src /obj/item/organ/proc/is_damaged() return damage > 0 @@ -268,8 +271,8 @@ var/list/organ_cache = list() loc = get_turf(owner) processing_objects |= src var/datum/reagent/blood/organ_blood - if(reagents) organ_blood = reagents.get_reagent_from_id(owner.get_blood_name()) - if((!organ_blood || !organ_blood.data["blood_DNA"]) && (owner && !(owner.species.flags & NO_BLOOD))) + if(reagents) organ_blood = locate(/datum/reagent/blood) in reagents.reagent_list + if(!organ_blood || !organ_blood.data["blood_DNA"]) owner.vessel.trans_to(src, 5, 1, 1) if(owner && vital && is_primary_organ()) // I'd do another check for species or whatever so that you couldn't "kill" an IPC by removing a human head from them, but it doesn't matter since they'll come right back from the dead