diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index addeca87398..8eff08691ca 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -61,7 +61,9 @@ #define isplasmaman(A) (is_species(A, /datum/species/plasmaman)) #define ispodperson(A) (is_species(A, /datum/species/podperson)) #define isflyperson(A) (is_species(A, /datum/species/fly)) +#define isjellyperson(A) (is_species(A, /datum/species/jelly)) #define isslimeperson(A) (is_species(A, /datum/species/jelly/slime)) +#define isluminescent(A) (is_species(A, /datum/species/jelly/luminescent)) #define isshadowperson(A) (is_species(A, /datum/species/shadow)) #define iszombie(A) (is_species(A, /datum/species/zombie)) #define ishumanbasic(A) (is_species(A, /datum/species/human)) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index d49ddd57a1d..199317f1aa0 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -41,7 +41,7 @@ M.setOxyLoss(0, 0) M.radiation = 0 M.heal_bodypart_damage(5,5, 0) - M.adjustToxLoss(-5, 0) + M.adjustToxLoss(-5, 0, TRUE) M.hallucination = 0 M.setBrainLoss(0) M.remove_all_disabilities() @@ -134,7 +134,7 @@ M.adjustOxyLoss(-3 * power, 0) M.adjustBruteLoss(-power, 0) M.adjustFireLoss(-power, 0) - M.adjustToxLoss(-power, 0) + M.adjustToxLoss(-power, 0, TRUE) //heals TOXINLOVERs M.adjustCloneLoss(-power, 0) M.status_flags &= ~DISFIGURED . = 1 @@ -157,6 +157,35 @@ metabolization_rate = REAGENTS_METABOLISM * (0.000015 * (M.bodytemperature ** 2) + 0.75) ..() +/datum/reagent/medicine/pyroxadone + name = "Pyroxadone" + id = "pyroxadone" + description = "A mixture of cryoxadone and slime jelly, that apparently inverses the requirement for its activation." + color = "#f7832a" + taste_description = "spicy jelly" + +/datum/reagent/medicine/pyroxadone/on_mob_life(mob/living/M) + if(M.bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT) + var/power = 0 + switch(M.bodytemperature) + if(BODYTEMP_HEAT_DAMAGE_LIMIT to 400) + power = 2 + if(400 to 460) + power = 3 + else + power = 5 + if(M.on_fire) + power *= 2 + + M.adjustOxyLoss(-2 * power, 0) + M.adjustBruteLoss(-power, 0) + M.adjustFireLoss(-1.5 * power, 0) + M.adjustToxLoss(-power, 0, TRUE) + M.adjustCloneLoss(-power, 0) + M.status_flags &= ~DISFIGURED + . = 1 + ..() + /datum/reagent/medicine/rezadone name = "Rezadone" id = "rezadone" @@ -979,6 +1008,22 @@ ..() . = 1 +/datum/reagent/medicine/regen_jelly + name = "Regenerative Jelly" + id = "regen_jelly" + description = "Gradually regenerates all types of damage, without harming slime anatomy." + reagent_state = LIQUID + color = "#91D865" + taste_description = "jelly" + +/datum/reagent/medicine/regen_jelly/on_mob_life(mob/living/M) + M.adjustBruteLoss(-1.5*REM, 0) + M.adjustFireLoss(-1.5*REM, 0) + M.adjustOxyLoss(-1.5*REM, 0) + M.adjustToxLoss(-1.5*REM, 0, TRUE) //heals TOXINLOVERs + . = 1 + ..() + /datum/reagent/medicine/syndicate_nanites //Used exclusively by Syndicate medical cyborgs name = "Restorative Nanites" id = "syndicate_nanites" diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index bee92b0416d..60ea2cfa731 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -559,9 +559,9 @@ if(!H.dna || !H.dna.species || !(H.dna.species.species_traits & SPECIES_ORGANIC)) return - if(istype(H.dna.species, /datum/species/jelly/slime) || istype(H.dna.species, /datum/species/jelly/stargazer) || istype(H.dna.species, /datum/species/jelly/luminescent)) + if(isjellyperson(H)) to_chat(H, "Your jelly shifts and morphs, turning you into another subspecies!") - var/species_type = pick(/datum/species/jelly/slime,/datum/species/jelly/stargazer,/datum/species/jelly/luminescent) + var/species_type = pick(subtypesof(/datum/species/jelly)) H.set_species(species_type) H.reagents.del_reagent(id) @@ -576,7 +576,7 @@ if(prob(10)) to_chat(H, "[pick("You feel your internal organs turning into slime.", "You feel very slimelike.")]") if(20 to INFINITY) - var/species_type = pick(/datum/species/jelly/slime,/datum/species/jelly/stargazer,/datum/species/jelly/luminescent) + var/species_type = pick(subtypesof(/datum/species/jelly)) H.set_species(species_type) H.reagents.del_reagent(id) to_chat(H, "You've become \a jellyperson!") diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm index 7f4e481a29b..ae625cc5543 100644 --- a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm @@ -226,3 +226,25 @@ M.electrocute_act(rand(5,20), "Teslium in their body", 1, 1) //Override because it's caused from INSIDE of you playsound(M, "sparks", 50, 1) ..() + +/datum/reagent/teslium/energized_jelly + name = "Energized Jelly" + id = "energized_jelly" + description = "Electrically-charged jelly. Boosts jellypeople's nervous system, but only shocks other lifeforms." + reagent_state = LIQUID + color = "#CAFF43" + taste_description = "jelly" + +/datum/reagent/teslium/energized_jelly/on_mob_life(mob/living/M) + if(isjellyperson(M)) + shock_timer = 0 //immune to shocks + M.AdjustStun(-40, 0) + M.AdjustKnockdown(-40, 0) + M.AdjustUnconscious(-40, 0) + M.adjustStaminaLoss(-2, 0) + if(isluminescent(M)) + var/mob/living/carbon/human/H = M + var/datum/species/jelly/luminescent/L = H.dna.species + L.extract_cooldown = max(0, L.extract_cooldown - 20) + ..() + diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm index 7123267eb32..fe988ba1b41 100644 --- a/code/modules/reagents/chemistry/recipes/medicine.dm +++ b/code/modules/reagents/chemistry/recipes/medicine.dm @@ -184,6 +184,12 @@ results = list("cryoxadone" = 3) required_reagents = list("stable_plasma" = 1, "acetone" = 1, "mutagen" = 1) +/datum/chemical_reaction/pyroxadone + name = "Pyroxadone" + id = "pyroxadone" + results = list("pyroxadone" = 2) + required_reagents = list("cryoxadone" = 1, "slimejelly" = 1) + /datum/chemical_reaction/clonexadone name = "Clonexadone" id = "clonexadone" @@ -221,6 +227,12 @@ results = list("tricordrazine" = 3) required_reagents = list("bicaridine" = 1, "kelotane" = 1, "antitoxin" = 1) +/datum/chemical_reaction/regen_jelly + name = "Regenerative Jelly" + id = "regen_jelly" + results = list("regen_jelly" = 2) + required_reagents = list("tricordrazine" = 1, "slimejelly" = 1) + /datum/chemical_reaction/corazone name = "Corazone" id = "corazone" diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index 9f11498ee5d..e3183fae888 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -379,6 +379,13 @@ mix_message = "A jet of sparks flies from the mixture as it merges into a flickering slurry." required_temp = 400 +/datum/chemical_reaction/energized_jelly + name = "Energized Jelly" + id = "energized_jelly" + results = list("energized_jelly" = 2) + required_reagents = list("slimejelly" = 1, "teslium" = 1) + mix_message = "The slime jelly starts glowing intermittently." + /datum/chemical_reaction/reagent_explosion/teslium_lightning name = "Teslium Destabilization" id = "teslium_lightning" diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm index cd068f47d9a..44f904b0a74 100644 --- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm +++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm @@ -329,11 +329,11 @@ new /obj/item/slimepotion/steroid(get_turf(holder.my_atom)) ..() -/datum/chemical_reaction/slime/slimejam - name = "Slime Jam" - id = "m_jam" - results = list("slimejelly" = 10) - required_reagents = list("sugar" = 1) +/datum/chemical_reaction/slime/slimeregen + name = "Slime Regen" + id = "m_regen" + results = list("regen_jelly" = 5) + required_reagents = list("blood" = 1) required_container = /obj/item/slime_extract/purple required_other = 1 diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index 3445fc4fc9a..8a90499eb3c 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -148,7 +148,7 @@ if(SLIME_ACTIVATE_MAJOR) to_chat(user, "You activate [src], and it releases regenerative chemicals!") - user.reagents.add_reagent("tricordrazine",10) + user.reagents.add_reagent("regen_jelly",10) return 600 /obj/item/slime_extract/darkpurple @@ -261,7 +261,7 @@ to_chat(user, "You activate [src]. You start feeling colder!") user.ExtinguishMob() user.adjust_fire_stacks(-20) - user.reagents.add_reagent("frostoil",5) + user.reagents.add_reagent("frostoil",4) user.reagents.add_reagent("cryoxadone",5) return 100