From c00f7d53a32801b7afd923f268da30fb2f99bbd5 Mon Sep 17 00:00:00 2001 From: MGOOOOOO <97645027+MGOOOOOO@users.noreply.github.com> Date: Tue, 28 Nov 2023 09:53:09 -0500 Subject: [PATCH] The Inversenning : Superior Healing Medications (#79342) Introducing new inverse reagents for existing superior healing medications! This push includes... **Benzoic Acid** : Inverse of Salicylic Acid. Robust fertilizer that provides a decent range of benefits for plant life. **Oxymetholone** : Inverse of Oxandrolone. Anabolic steroid that promotes the growth of muscle during and after exercise. **Bamethan** : Inverse of Salbutamol. Blood thinner that drastically increases the chance of receiving bleeding wounds. **Pendetide** : Inverse of Pentetic Acid. An unusual bioradioactive drug that purges basic radiation healing chems. Also increases the severity of radiation poisoning. **Hyoscyamine** : Inverse of Atropine. Heals heart and stomach damage, and slowly removes minor toxin damage. **Ammoniated Sludge** : Inverse of Ammoniated Mercury. A ghastly looking mess of mercury by-product which causes bursts of manic hysteria. **Inreziniver** : Inverse of Rezadone. Makes the user horribly afraid of all things related to carps. This is an effort to add more variety to the existing inverse reagent system within chemistry. Not only should this variety serve to provide additional options for a Chemist to experiment with, they should also broaden the possibilities for already existing strategies. --- code/__DEFINES/traits/declarations.dm | 2 + code/_globalvars/phobias.dm | 26 +++ code/_globalvars/traits/_traits.dm | 1 + code/datums/brain_damage/phobia.dm | 4 + code/datums/status_effects/buffs.dm | 4 + .../impure_medicine_reagents.dm | 151 ++++++++++++++++++ .../chemistry/reagents/medicine_reagents.dm | 14 ++ code/modules/surgery/bodyparts/wounds.dm | 3 + strings/phobia.json | 17 ++ 9 files changed, 222 insertions(+) diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index f01bb7f9102e55..a2c4f7fd0d8d6d 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -190,6 +190,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_EASILY_WOUNDED "easy_limb_wound" #define TRAIT_HARDLY_WOUNDED "hard_limb_wound" #define TRAIT_NEVER_WOUNDED "never_wounded" +/// Species with this trait have 50% extra chance of bleeding from piercing and slashing wounds +#define TRAIT_EASYBLEED "easybleed" #define TRAIT_TOXINLOVER "toxinlover" /// Doesn't get overlays from being in critical. #define TRAIT_NOCRITOVERLAY "no_crit_overlay" diff --git a/code/_globalvars/phobias.dm b/code/_globalvars/phobias.dm index 3aa6c41de4f7f5..412902b0c56078 100644 --- a/code/_globalvars/phobias.dm +++ b/code/_globalvars/phobias.dm @@ -8,6 +8,7 @@ GLOBAL_LIST_INIT(phobia_types, sort_list(list( "authority", "birds", "blood", + "carps", "clowns", "doctors", "falling", @@ -32,6 +33,7 @@ GLOBAL_LIST_INIT(phobia_regexes, list( "authority" = construct_phobia_regex("authority"), "birds" = construct_phobia_regex("birds"), "blood" = construct_phobia_regex("blood"), + "carps" = construct_phobia_regex("carps"), "clowns" = construct_phobia_regex("clowns"), "conspiracies" = construct_phobia_regex("conspiracies"), "doctors" = construct_phobia_regex("doctors"), @@ -64,6 +66,9 @@ GLOBAL_LIST_INIT(phobia_mobs, list( /mob/living/basic/parrot, /mob/living/basic/pet/penguin, )), + "carps" = typecacheof(list( + /mob/living/basic/carp, + )), "conspiracies" = typecacheof(list( /mob/living/basic/drone, /mob/living/basic/pet/penguin, @@ -234,6 +239,27 @@ GLOBAL_LIST_INIT(phobia_objs, list( /obj/item/reagent_containers/syringe, /obj/machinery/iv_drip, )), + "carps" = typecacheof(list( + /obj/item/clothing/head/hooded/carp_hood, + /obj/item/clothing/suit/hooded/carp_costume, + /obj/item/clothing/head/fedora/carpskin, + /obj/item/clothing/mask/gas/carp, + /obj/item/clothing/mask/cigarette/carp, + /obj/item/clothing/under/suit/carpskin, + /obj/item/food/cubancarp, + /obj/item/food/fishmeat/carp, + /obj/item/grenade/clusterbuster/spawner_spesscarp, + /obj/item/grenade/spawnergrenade/spesscarp, + /obj/item/knife/carp, + /obj/item/nullrod/carp, + /obj/item/organ/internal/lungs/carp, + /obj/item/organ/internal/tongue/carp, + /obj/item/organ/internal/brain/carp, + /obj/item/organ/internal/heart/carp, + /obj/item/storage/fancy/cigarettes/cigpack_carp, + /obj/item/stack/sheet/animalhide/carp, + /obj/item/toy/plush/carpplushie, + )), "clowns" = typecacheof(list( /obj/item/bedsheet/clown, /obj/item/clothing/head/chaplain/clownmitre, diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 94aa3a5d099f78..080faa2d888515 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -172,6 +172,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_DWARF" = TRAIT_DWARF, "TRAIT_EASILY_WOUNDED" = TRAIT_EASILY_WOUNDED, "TRAIT_EASYDISMEMBER" = TRAIT_EASYDISMEMBER, + "TRAIT_EASYBLEED" = TRAIT_EASYBLEED, "TRAIT_ECHOLOCATION_EXTRA_RANGE" = TRAIT_ECHOLOCATION_EXTRA_RANGE, "TRAIT_ECHOLOCATION_RECEIVER" = TRAIT_ECHOLOCATION_RECEIVER, "TRAIT_ELITE_CHALLENGER" = TRAIT_ELITE_CHALLENGER, diff --git a/code/datums/brain_damage/phobia.dm b/code/datums/brain_damage/phobia.dm index 3360ed360527da..725c92ab7e8d1d 100644 --- a/code/datums/brain_damage/phobia.dm +++ b/code/datums/brain_damage/phobia.dm @@ -163,6 +163,10 @@ return TRUE return ..() +/datum/brain_trauma/mild/phobia/carps + phobia_type = "carps" + random_gain = FALSE + /datum/brain_trauma/mild/phobia/clowns phobia_type = "clowns" random_gain = FALSE diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index fe2c281a3380f0..51f8cea7b22a3a 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -173,6 +173,7 @@ /// Having any of these reagents in your system extends the duration var/static/list/supplementary_reagents_bonus = list( /datum/reagent/consumable/ethanol/protein_blend = 30 SECONDS, // protein shakes are very robust + /datum/reagent/inverse/oxandrolone = 25 SECONDS, /datum/reagent/consumable/eggwhite = 20 SECONDS, /datum/reagent/consumable/eggyolk = 15 SECONDS, /datum/reagent/consumable/nutriment/protein = 15 SECONDS, @@ -201,6 +202,9 @@ if(new_owner.reagents.has_reagent(/datum/reagent/drug/pumpup)) // steriods? yes please! modifier += 3 + if(new_owner.reagents.has_reagent(/datum/reagent/inverse/oxandrolone)) // MOREEEEE + modifier += 2 + var/food_boost = 0 for(var/datum/reagent/workout_reagent in supplementary_reagents_bonus) if(new_owner.reagents.has_reagent(workout_reagent)) diff --git a/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm index b317bfafa1ac7c..2256d7ca653374 100644 --- a/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/impure_reagents/impure_medicine_reagents.dm @@ -790,3 +790,154 @@ Basically, we fill the time between now and 2s from now with hands based off the return hearing_args[HEARING_RAW_MESSAGE] = "[hearing_args[HEARING_RAW_MESSAGE]]" + +/datum/reagent/inverse/sal_acid + name = "Benzoic Acid" + description = "Robust fertilizer that provides a decent range of benefits for plant life." + taste_description = "flowers" + reagent_state = LIQUID + color = "#e6c843" + ph = 3.4 + tox_damage = 0 + +/datum/reagent/inverse/sal_acid/on_hydroponics_apply(obj/machinery/hydroponics/mytray, mob/user) + mytray.adjust_plant_health(round(volume * 0.5)) + mytray.myseed?.adjust_production(-round(volume * 0.2)) + mytray.myseed?.adjust_potency(round(volume * 0.25)) + mytray.myseed?.adjust_yield(round(volume * 0.2)) + +/datum/reagent/inverse/oxandrolone + name = "Oxymetholone" + description = "Anabolic steroid that promotes the growth of muscle during and after exercise." + reagent_state = LIQUID + color = "#520c23" + taste_description = "sweat" + metabolization_rate = 0.4 * REM + overdose_threshold = 25 + ph = 12.2 + tox_damage = 0 + +/datum/reagent/inverse/oxandrolone/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) + . = ..() + var/high_message = pick("You feel unstoppable.", "Giving it EVERYTHING!!", "You feel ready for anything.", "You feel like doing a thousand jumping jacks!") + if(SPT_PROB(2, seconds_per_tick)) + to_chat(affected_mob, span_notice("[high_message]")) + +/datum/reagent/inverse/oxandrolone/overdose_process(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) + . = ..() + if(SPT_PROB(25, seconds_per_tick)) + affected_mob.adjust_bodytemperature(30 * TEMPERATURE_DAMAGE_COEFFICIENT * REM * seconds_per_tick) + affected_mob.set_jitter_if_lower(3 SECONDS) + affected_mob.adjustStaminaLoss(5 * REM * seconds_per_tick) + else if(SPT_PROB(5, seconds_per_tick)) + affected_mob.vomit(VOMIT_CATEGORY_BLOOD, lost_nutrition = 0, distance = 3) + affected_mob.Paralyze(3 SECONDS) + +/datum/reagent/inverse/salbutamol + name = "Bamethan" + description = "Blood thinner that drastically increases the chance of receiving bleeding wounds." + reagent_state = LIQUID + color = "#ecd4d6" + taste_description = "paint thinner" + ph = 4.5 + metabolization_rate = 0.08 * REM + tox_damage = 0 + +/datum/reagent/inverse/salbutamol/on_mob_metabolize(mob/living/affected_mob) + . = ..() + ADD_TRAIT(affected_mob, TRAIT_EASYBLEED, type) + +/datum/reagent/inverse/salbutamol/on_mob_end_metabolize(mob/living/affected_mob) + . = ..() + REMOVE_TRAIT(affected_mob, TRAIT_EASYBLEED, type) + +/datum/reagent/inverse/pen_acid + name = "Pendetide" + description = "Purges basic toxin healing medications and increases the severity of radiation poisoning." + reagent_state = LIQUID + color = "#09ff00" + ph = 3.7 + taste_description = "venom" + metabolization_rate = 0.25 * REM + tox_damage = 0 + +/datum/reagent/inverse/pen_acid/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) + holder.remove_reagent(/datum/reagent/medicine/c2/seiver, 5 * REM * seconds_per_tick) + holder.remove_reagent(/datum/reagent/medicine/potass_iodide, 5 * REM * seconds_per_tick) + holder.remove_reagent(/datum/reagent/medicine/c2/multiver, 5 * REM * seconds_per_tick) + + . = ..() + if(HAS_TRAIT(affected_mob, TRAIT_IRRADIATED)) + affected_mob.set_jitter_if_lower(10 SECONDS) + affected_mob.adjust_disgust(3 * REM * seconds_per_tick) + if(SPT_PROB(2.5, seconds_per_tick)) + to_chat(affected_mob, span_warning("A horrible ache spreads in your insides!")) + affected_mob.adjust_confusion_up_to(10 SECONDS, 15 SECONDS) + +/datum/reagent/inverse/atropine + name = "Hyoscyamine" + description = "Slowly regenerates all damaged organs, but cannot restore non-functional organs." + reagent_state = LIQUID + color = "#273333" + ph = 13.6 + metabolization_rate = 0.2 * REM + tox_damage = 0 + overdose_threshold = 40 + +/datum/reagent/inverse/atropine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) + . = ..() + var/need_mob_update + need_mob_update = affected_mob.adjustOrganLoss(ORGAN_SLOT_STOMACH, -1 * REM * seconds_per_tick) + need_mob_update += affected_mob.adjustOrganLoss(ORGAN_SLOT_HEART, -1 * REM * seconds_per_tick) + if(affected_mob.getToxLoss() <= 25) + need_mob_update = affected_mob.adjustToxLoss(-0.5, updating_health = FALSE, required_biotype = affected_biotype) + if(need_mob_update) + return UPDATE_MOB_HEALTH + +/datum/reagent/inverse/atropine/overdose_process(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) + . = ..() + var/static/list/possible_organs = list( + ORGAN_SLOT_HEART, + ORGAN_SLOT_LIVER, + ORGAN_SLOT_LUNGS, + ORGAN_SLOT_STOMACH, + ORGAN_SLOT_EYES, + ORGAN_SLOT_EARS, + ORGAN_SLOT_BRAIN, + ORGAN_SLOT_APPENDIX, + ORGAN_SLOT_TONGUE, + ) + affected_mob.adjustOrganLoss(pick(possible_organs) ,2 * seconds_per_tick) + affected_mob.reagents.remove_reagent(type, 1 * REM * seconds_per_tick) + +/datum/reagent/inverse/ammoniated_mercury + name = "Ammoniated Sludge" + description = "A ghastly looking mess of mercury by-product. Causes bursts of manic hysteria." + reagent_state = LIQUID + color = "#353535" + ph = 10.2 + metabolization_rate = 0.4 * REM + tox_damage = 0 + +/datum/reagent/inverse/ammoniated_mercury/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) + . = ..() + if(SPT_PROB(7.5, seconds_per_tick)) + affected_mob.emote("scream") + affected_mob.say(pick("AAAAAAAHHHHH!!","OOOOH NOOOOOO!!","GGGUUUUHHHHH!!","AIIIIIEEEEEE!!","HAHAHAHAHAAAAAA!!","OORRRGGGHHH!!","AAAAAAAJJJJJJJJJ!!"), forced = type) + +/datum/reagent/inverse/rezadone + name = "Inreziniver" + description = "Makes the user horribly afraid of all things related to carps." + reagent_state = LIQUID + color = "#c92eb4" + ph = 13.9 + metabolization_rate = 0.05 * REM + tox_damage = 0 + +/datum/reagent/inverse/rezadone/on_mob_metabolize(mob/living/carbon/affected_mob) + . = ..() + affected_mob.gain_trauma(/datum/brain_trauma/mild/phobia/carps, TRAUMA_RESILIENCE_ABSOLUTE) + +/datum/reagent/inverse/rezadone/on_mob_end_metabolize(mob/living/carbon/affected_mob) + . = ..() + affected_mob.cure_trauma_type(/datum/brain_trauma/mild/phobia/carps, resilience = TRAUMA_RESILIENCE_ABSOLUTE) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 204ac96fce4e9a..399b2d662bec2f 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -231,6 +231,8 @@ ph = 12.2 taste_description = "fish" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + inverse_chem_val = 0.25 + inverse_chem = /datum/reagent/inverse/rezadone /datum/reagent/medicine/rezadone/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) . = ..() @@ -285,6 +287,8 @@ overdose_threshold = 25 ph = 10.7 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + inverse_chem_val = 0.3 + inverse_chem = /datum/reagent/inverse/oxandrolone /datum/reagent/medicine/oxandrolone/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) . = ..() @@ -478,6 +482,8 @@ overdose_threshold = 10 ph = 7 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + inverse_chem_val = 0.50 + inverse_chem = /datum/reagent/inverse/ammoniated_mercury /datum/reagent/medicine/ammoniated_mercury/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) . = ..() @@ -528,6 +534,8 @@ metabolization_rate = 0.5 * REAGENTS_METABOLISM ph = 1 //One of the best buffers, NEVERMIND! chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + inverse_chem_val = 0.4 + inverse_chem = /datum/reagent/inverse/pen_acid /datum/reagent/medicine/pen_acid/on_mob_metabolize(mob/living/affected_mob) . = ..() @@ -554,6 +562,8 @@ overdose_threshold = 25 ph = 2.1 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + inverse_chem_val = 0.3 + inverse_chem = /datum/reagent/inverse/sal_acid /datum/reagent/medicine/sal_acid/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) . = ..() @@ -579,6 +589,8 @@ metabolization_rate = 0.25 * REAGENTS_METABOLISM ph = 2 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + inverse_chem_val = 0.25 + inverse_chem = /datum/reagent/inverse/salbutamol /datum/reagent/medicine/salbutamol/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) . = ..() @@ -821,6 +833,8 @@ overdose_threshold = 35 ph = 12 chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + inverse_chem_val = 0.35 + inverse_chem = /datum/reagent/inverse/atropine /datum/reagent/medicine/atropine/on_mob_add(mob/living/affected_mob) . = ..() diff --git a/code/modules/surgery/bodyparts/wounds.dm b/code/modules/surgery/bodyparts/wounds.dm index 94c503614a2a21..deaa734dd641f0 100644 --- a/code/modules/surgery/bodyparts/wounds.dm +++ b/code/modules/surgery/bodyparts/wounds.dm @@ -67,6 +67,9 @@ if(HAS_TRAIT(owner, TRAIT_EASYDISMEMBER)) damage *= 1.1 + if(HAS_TRAIT(owner, TRAIT_EASYBLEED) && ((woundtype == WOUND_PIERCE) || (woundtype == WOUND_SLASH))) + damage *= 1.5 + var/base_roll = rand(1, round(damage ** WOUND_DAMAGE_EXPONENT)) var/injury_roll = base_roll injury_roll += check_woundings_mods(woundtype, damage, wound_bonus, bare_wound_bonus) diff --git a/strings/phobia.json b/strings/phobia.json index 3f45b9f2364497..88ad23b774d6d5 100644 --- a/strings/phobia.json +++ b/strings/phobia.json @@ -113,6 +113,23 @@ "transfusion" ], + "carps": [ + "aquarium", + "carp", + "carps", + "carpotoxin", + "fin", + "fins", + "fish", + "fang", + "gnash", + "migration", + "slash", + "shred", + "teeth", + "tooth" + ], + "clowns": [ "banana", "clown",