Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[MIRROR] The Inversenning : Superior Healing Medications #872

Merged
merged 1 commit into from
Nov 29, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions code/__DEFINES/traits/declarations.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
26 changes: 26 additions & 0 deletions code/_globalvars/phobias.dm
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ GLOBAL_LIST_INIT(phobia_types, sort_list(list(
"authority",
"birds",
"blood",
"carps",
"clowns",
"doctors",
"falling",
Expand All @@ -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"),
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down
1 change: 1 addition & 0 deletions code/_globalvars/traits/_traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,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,
Expand Down
4 changes: 4 additions & 0 deletions code/datums/brain_damage/phobia.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 4 additions & 0 deletions code/datums/status_effects/buffs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -791,3 +791,154 @@ Basically, we fill the time between now and 2s from now with hands based off the
return

hearing_args[HEARING_RAW_MESSAGE] = "<span class='[randomSpan]'>[hearing_args[HEARING_RAW_MESSAGE]]</span>"

/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)
14 changes: 14 additions & 0 deletions code/modules/reagents/chemistry/reagents/medicine_reagents.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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)
. = ..()
Expand Down Expand Up @@ -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)
. = ..()
Expand Down Expand Up @@ -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)
. = ..()
Expand Down Expand Up @@ -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)
. = ..()
Expand All @@ -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)
. = ..()
Expand All @@ -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)
. = ..()
Expand Down Expand Up @@ -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)
. = ..()
Expand Down
3 changes: 3 additions & 0 deletions code/modules/surgery/bodyparts/wounds.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
17 changes: 17 additions & 0 deletions strings/phobia.json
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,23 @@
"transfusion"
],

"carps": [
"aquarium",
"carp",
"carps",
"carpotoxin",
"fin",
"fins",
"fish",
"fang",
"gnash",
"migration",
"slash",
"shred",
"teeth",
"tooth"
],

"clowns": [
"banana",
"clown",
Expand Down
Loading