From 0db38cb75b7f95f4af1e0221a0b91ee511ccbf28 Mon Sep 17 00:00:00 2001 From: Mechoid Date: Mon, 14 Jan 2019 21:34:35 -0800 Subject: [PATCH] Wooooooork --- .../Chemistry-Reagents-Medicine.dm | 211 ++++++++++++++++++ code/modules/reagents/Chemistry-Recipes.dm | 52 +++++ 2 files changed, 263 insertions(+) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm index ea9e17d581..09aebdf2c8 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm @@ -507,6 +507,217 @@ if(W.damage <= 0) O.wounds -= W +/datum/reagent/respirodaxon + name = "Respirodaxon" + id = "respirodaxon" + description = "Used to repair the tissue of the lungs and similar organs." + taste_description = "metallic" + reagent_state = LIQUID + color = "#4444FF" + overdose = 10 + scannable = 1 + +/datum/reagent/respirodaxon/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + var/repair_strength = 1 + if(alien == IS_SLIME) + repair_strength = 0.6 + if(ishuman(M)) + var/mob/living/carbon/human/H = M + for(var/obj/item/organ/I in H.internal_organs) + if(I.robotic >= ORGAN_ROBOT || !(I.organ_tag in list(O_LUNGS, O_VOICE, O_GBLADDER))) + continue + if(I.damage > 0) + I.damage = max(I.damage - 2 * removed * repair_strength, 0) + H.Confuse(2) + if(M.reagents.has_reagent("gastirodaxon") || M.reagents.has_reagent("peridaxon")) + if(H.losebreath >= 15 && prob(H.losebreath)) + H.Stun(2) + else + H.losebreath = Clamp(H.losebreath + 3, 0, 20) + +/datum/reagent/gastirodaxon + name = "Gastirodaxon" + id = "gastirodaxon" + description = "Used to repair the tissues of the digestive system." + taste_description = "chalk" + reagent_state = LIQUID + color = "#8B4513" + overdose = 10 + scannable = 1 + +/datum/reagent/gastirodaxon/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + var/repair_strength = 1 + if(alien == IS_SLIME) + repair_strength = 0.6 + if(ishuman(M)) + var/mob/living/carbon/human/H = M + for(var/obj/item/organ/I in H.internal_organs) + if(I.robotic >= ORGAN_ROBOT || !(I.organ_tag in list(O_APPENDIX, O_NUTRIENT, O_PLASMA, O_POLYP))) + continue + if(I.damage > 0) + I.damage = max(I.damage - 2 * removed * repair_strength, 0) + H.Confuse(2) + if(M.reagents.has_reagent("hepanephrodaxon") || M.reagents.has_reagent("peridaxon")) + if(prob(10)) + H.vomit(1) + else if(H.nutrition > 30) + H.nutrition = max(0, H.nutrition - round(30 * removed)) + +/datum/reagent/hepanephrodaxon + name = "Hepanephrodaxon" + id = "hepanephrodaxon" + description = "Used to repair the common tissues involved in filtration." + taste_description = "glue" + reagent_state = LIQUID + color = "#D2691E" + overdose = 10 + scannable = 1 + +/datum/reagent/hepanephrodaxon/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + var/repair_strength = 1 + if(alien == IS_SLIME) + repair_strength = 0.4 + if(ishuman(M)) + var/mob/living/carbon/human/H = M + for(var/obj/item/organ/I in H.internal_organs) + if(I.robotic >= ORGAN_ROBOT || !(I.organ_tag in list(O_LIVER, O_KIDNEYS, O_APPENDIX, O_ACID, O_HIVE))) + continue + if(I.damage > 0) + I.damage = max(I.damage - 2 * removed * repair_strength, 0) + H.Confuse(2) + if(M.reagents.has_reagent("cordradaxon") || M.reagents.has_reagent("peridaxon")) + if(prob(5)) + H.vomit(1) + else if(prob(5)) + to_chat(H,"Something churns inside you.") + H.adjustToxLoss(10 * removed) + H.vomit(0, 1) + +/datum/reagent/cordradaxon + name = "Cordradaxon" + id = "cordradaxon" + description = "Used to repair the specialized tissues involved in the circulatory system." + taste_description = "rust" + reagent_state = LIQUID + color = "#FF4444" + overdose = 10 + scannable = 1 + +/datum/reagent/cordradaxon/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + var/repair_strength = 1 + if(alien == IS_SLIME) + repair_strength = 0.6 + if(ishuman(M)) + var/mob/living/carbon/human/H = M + for(var/obj/item/organ/I in H.internal_organs) + if(I.robotic >= ORGAN_ROBOT || !(I.organ_tag in list(O_HEART, O_RESPONSE, O_ANCHOR, O_EGG))) + continue + if(I.damage > 0) + I.damage = max(I.damage - 2 * removed * repair_strength, 0) + H.Confuse(2) + if(M.reagents.has_reagent("respirodaxon") || M.reagents.has_reagent("peridaxon")) + H.losebreath = Clamp(H.losebreath + 1, 0, 10) + +/datum/reagent/immunosuprizine + name = "Immunosuprizine" + id = "immunosuprizine" + description = "An experimental powder believed to have the ability to prevent any organ rejection." + taste_description = "flesh" + reagent_state = SOLID + color = "#7B4D4F" + overdose = 20 + scannable = 1 + +/datum/reagent/immunosuprizine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + var/strength_mod = 1 + + if(alien == IS_DIONA) // It's a tree. + strength_mod = 0.25 + + if(alien == IS_SLIME) // Diffculty bonding with internal cellular structure. + strength_mod = 0.75 + + if(alien == IS_SKRELL) // Natural inclination toward toxins. + strength_mod = 1.5 + + if(alien == IS_UNATHI) // Natural regeneration, robust biology. + strength_mod = 1.75 + + if(alien == IS_TAJARA) // Highest metabolism. + strength_mod = 2 + + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(alien != IS_DIONA) + H.adjustToxLoss((30 / strength_mod) * removed) + + var/list/organtotal = list() + organtotal |= H.organs + organtotal |= H.internal_organs + + for(var/obj/item/organ/I in organtotal) // Don't mess with robot bits, they don't reject. + if(I.robotic >= ORGAN_ROBOT) + organtotal -= I + + if(dose >= 15) + for(var/obj/item/organ/I in organtotal) + if(I.transplant_data && prob(round(15 * strength_mod))) // Reset the rejection process, toggle it to not reject. + I.rejecting = 0 + I.can_reject = FALSE + + if(H.reagents.has_reagent("spaceacillin") || H.reagents.has_reagent("corophizine")) // Chemicals that increase your immune system's aggressiveness make this chemical's job harder. + for(var/obj/item/organ/I in organtotal) + if(I.transplant_data) + var/rejectmem = I.can_reject + I.can_reject = initial(I.can_reject) + if(rejectmem != I.can_reject) + H.adjustToxLoss((15 / strength_mod)) + I.take_damage(1) + +/datum/reagent/skrellimmuno + name = "Malish-Qualem" + id = "malish-qualem" + description = "A strange, oily powder used by Malish-Katish to prevent organ rejection." + taste_description = "mordant" + reagent_state = SOLID + color = "#84B2B0" + overdose = 20 + scannable = 1 + +/datum/reagent/skrellimmuno/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + var/strength_mod = 0.5 + + if(alien == IS_SKRELL) + strength_mod = 1 + + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(alien != IS_SKRELL) + H.adjustToxLoss(20 * removed) + + var/list/organtotal = list() + organtotal |= H.organs + organtotal |= H.internal_organs + + for(var/obj/item/organ/I in organtotal) // Don't mess with robot bits, they don't reject. + if(I.robotic >= ORGAN_ROBOT) + organtotal -= I + + if(dose >= 15) + for(var/obj/item/organ/I in organtotal) + if(I.transplant_data && prob(round(15 * strength_mod))) + I.rejecting = 0 + I.can_reject = FALSE + + if(H.reagents.has_reagent("spaceacillin") || H.reagents.has_reagent("corophizine")) + for(var/obj/item/organ/I in organtotal) + if(I.transplant_data) + var/rejectmem = I.can_reject + I.can_reject = initial(I.can_reject) + if(rejectmem != I.can_reject) + H.adjustToxLoss((10 / strength_mod)) + I.take_damage(1) + /datum/reagent/ryetalyn name = "Ryetalyn" id = "ryetalyn" diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 2117ca9ae3..4ad6cb9d49 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -299,6 +299,42 @@ inhibitors = list("clonexadone" = 1) // Messes with cryox result_amount = 2 +/datum/chemical_reaction/respirodaxon + name = "Respirodaxon" + id = "respirodaxon" + result = "respirodaxon" + required_reagents = list("dexalinp" = 2, "biomass" = 2, "phoron" = 1) + catalysts = list("phoron" = 5) + inhibitors = list("dexalin" = 1) + result_amount = 2 + +/datum/chemical_reaction/gastirodaxon + name = "Gastirodaxon" + id = "gastirodaxon" + result = "gastirodaxon" + required_reagents = list("carthatoline" = 1, "biomass" = 2, "tungsten" = 2) + catalysts = list("phoron" = 5) + inhibitors = list("lithium" = 1) + result_amount = 3 + +/datum/chemical_reaction/hepanephrodaxon + name = "Hepanephrodaxon" + id = "hepanephrodaxon" + result = "hepanephrodaxon" + required_reagents = list("carthatoline" = 2, "biomass" = 2, "lithium" = 1) + catalysts = list("phoron" = 5) + inhibitors = list("tungsten" = 1) + result_amount = 2 + +/datum/chemical_reaction/cordradaxon + name = "Cordradaxon" + id = "cordradaxon" + result = "cordradaxon" + required_reagents = list("potassium_chlorophoride" = 1, "biomass" = 2, "bicaridine" = 2) + catalysts = list("phoron" = 5) + inhibitors = list("clonexadone" = 1) + result_amount = 2 + /datum/chemical_reaction/virus_food name = "Virus Food" id = "virusfood" @@ -425,6 +461,14 @@ catalysts = list("phoron" = 5) result_amount = 2 +/datum/chemical_reaction/immunosuprizine + name = "Immunosuprizine" + id = "immunosuprizine" + result = "immunosuprizine" + required_reagents = list("corophizine" = 1, "tungsten" = 1, "sacid" = 1) + catalysts = list("phoron" = 5) + result_amount = 2 + /datum/chemical_reaction/imidazoline name = "imidazoline" id = "imidazoline" @@ -2320,6 +2364,14 @@ required_reagents = list("nicotine" = 1, "carbon" = 1, "sugar" = 2) result_amount = 4 +/datum/chemical_reaction/malish_qualem + name = "Malish-Qualem" + id = "malish-qualem" + result = "malish-qualem" + required_reagents = list("immunosuprizine" = 1, "qerr_quem" = 1, "inaprovaline" = 1) + catalysts = list("phoron" = 5) + result_amount = 2 + // Biomass, for cloning and bioprinters /datum/chemical_reaction/biomass name = "Biomass"