diff --git a/code/__defines/chemistry.dm b/code/__defines/chemistry.dm index 3fc8da8396d..f3ddf7df8ca 100644 --- a/code/__defines/chemistry.dm +++ b/code/__defines/chemistry.dm @@ -18,8 +18,7 @@ #define REAGENTS_PER_SHEET 20 #define MAX_PILL_SPRITE 20 //max icon state of the pill sprites -#define REAGENTS_OVERDOSE 30 - +#define REAGENTS_OVERDOSE 20 #define REAGENTS_BURNING_TEMP_HIGH T0C + 65 //Temperature at which high temperature burns occur #define REAGENTS_BURNING_TEMP_HIGH_DAMAGE 0.0001 //Damage per celcius per unit above the REAGENTS_BURNING_TEMP_HIGH define per unit. #define REAGENTS_BURNING_TEMP_HIGH_DAMAGE_CAP 20 //Maximum amount of burn damage to deal due to high temperature reagents. @@ -48,6 +47,8 @@ // Apply status effects #define CE_ALCOHOL "alcohol" // Liver filtering #define CE_ANTIEMETIC "antiemetic" // suppresses vomiting +#define CE_ITCH "itch" // causes itching +#define CE_NOITCH "noitch" // suppresses itching #define CE_BERSERK "berserk" #define CE_CLUMSY "clumsy" // Peridaxon side effects, etc #define CE_DROPITEM "dropitem" // keloderm side effect diff --git a/code/datums/uplink/medical.dm b/code/datums/uplink/medical.dm index 94cf1afec1b..376e2e3dd3d 100644 --- a/code/datums/uplink/medical.dm +++ b/code/datums/uplink/medical.dm @@ -10,17 +10,17 @@ path = /obj/item/storage/box/sinpockets /datum/uplink_item/item/medical/combathypo - name = "Combat hypospray" + name = "Combat Hypospray" item_cost = 5 path = /obj/item/reagent_containers/hypospray/combat /datum/uplink_item/item/medical/surgery - name = "Surgery kit" + name = "Surgery Kit" item_cost = 8 path = /obj/item/storage/firstaid/surgery /datum/uplink_item/item/medical/combat - name = "Combat medical kit" + name = "Combat Medical Kit" item_cost = 6 path = /obj/item/storage/firstaid/combat @@ -29,6 +29,11 @@ item_cost = 4 path = /obj/item/storage/box/syndie_kit/stimulants +/datum/uplink_item/item/medical/sideeffectbegone + name = "Box of Sideeffect-Be-Gone Injectors" + item_cost = 3 + path = /obj/item/storage/box/syndie_kit/sideeffectbegone + /datum/uplink_item/item/medical/firstaid name = "Standard First-Aid Kit" item_cost = 2 diff --git a/code/game/gamemodes/changeling/implements/powers/body.dm b/code/game/gamemodes/changeling/implements/powers/body.dm index 31144d928eb..98474b3e80b 100644 --- a/code/game/gamemodes/changeling/implements/powers/body.dm +++ b/code/game/gamemodes/changeling/implements/powers/body.dm @@ -255,6 +255,7 @@ C.lying = FALSE C.reagents.add_reagent(/datum/reagent/hyperzine, 0.10) //Certainly this can't be abused. - Geeves C.reagents.add_reagent(/datum/reagent/oxycomorphine, 0.10) + C.reagents.add_reagent(/datum/reagent/synaptizine, 0.5) //To counter oxycomorphine's side-effects. C.update_canmove() src.verbs -= /mob/proc/changeling_unstun diff --git a/code/game/objects/items/contraband.dm b/code/game/objects/items/contraband.dm index 3da57f3ee66..12b8929c4f9 100644 --- a/code/game/objects/items/contraband.dm +++ b/code/game/objects/items/contraband.dm @@ -11,6 +11,11 @@ desc = "Highly illegal drug. Trade brain for speed." starts_with = list(/obj/item/reagent_containers/pill/zoom = 7) +/obj/item/storage/pill_bottle/tranquility + name = "bottle of Tranquility pills" + desc = "Highly illegal drug. Bang - and your stress is gone." + starts_with = list(/obj/item/reagent_containers/pill/tranquility = 7) + /obj/item/reagent_containers/glass/beaker/vial/random flags = 0 var/list/random_reagent_list = list(list(/datum/reagent/water = 15) = 1, list(/datum/reagent/spacecleaner = 15) = 1) @@ -18,9 +23,12 @@ /obj/item/reagent_containers/glass/beaker/vial/random/toxin random_reagent_list = list( list(/datum/reagent/mindbreaker = 10, /datum/reagent/space_drugs = 20) = 3, + list(/datum/reagent/mercury = 15) = 3, list(/datum/reagent/toxin/carpotoxin = 15) = 2, list(/datum/reagent/impedrezene = 15) = 2, - list(/datum/reagent/toxin/dextrotoxin = 10) = 1) + list(/datum/reagent/toxin/dextrotoxin = 10) = 1, + list(/datum/reagent/mental/neurapan = 15) = 2, + list(/datum/reagent/toxin/spectrocybin = 15) = 1) /obj/item/reagent_containers/glass/beaker/vial/random/Initialize() . = ..() diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm index 36684cebcf3..fe5f633998e 100644 --- a/code/game/objects/items/weapons/storage/firstaid.dm +++ b/code/game/objects/items/weapons/storage/firstaid.dm @@ -95,12 +95,12 @@ icon_state = "bezerk" item_state = "bezerk" starts_with = list( - /obj/item/storage/pill_bottle/bicaridine = 1, + /obj/item/storage/pill_bottle/butazoline = 1, /obj/item/storage/pill_bottle/dermaline = 1, /obj/item/storage/pill_bottle/dexalin_plus = 1, /obj/item/storage/pill_bottle/dylovene = 1, /obj/item/storage/pill_bottle/mortaphenyl = 1, - /obj/item/reagent_containers/inhaler/hyperzine = 1, + /obj/item/reagent_containers/hypospray/autoinjector/sideeffectbgone = 1, /obj/item/stack/medical/splint = 1 ) @@ -135,8 +135,10 @@ icon_state = "brute" item_state = "brute" starts_with = list( - /obj/item/stack/medical/bruise_pack = 4, - /obj/item/stack/medical/advanced/bruise_pack = 2 + /obj/item/stack/medical/bruise_pack = 2, + /obj/item/stack/medical/advanced/bruise_pack = 2, + /obj/item/reagent_containers/pill/bicaridine = 2, + /obj/item/device/healthanalyzer = 1 ) /* @@ -183,61 +185,66 @@ /obj/item/storage/pill_bottle/antitox - name = "bottle of Dylovene pills" - desc = "Contains pills used to counter toxins." + name = "bottle of 10u Dylovene pills" + desc = "Contains pills used to remove toxic substances from the blood." starts_with = list(/obj/item/reagent_containers/pill/antitox = 7) /obj/item/storage/pill_bottle/bicaridine - name = "bottle of Bicaridine pills" - desc = "Contains pills used to stabilize the severely injured." + name = "bottle of 10u Bicaridine pills" + desc = "Contains pills used to treat minor injuries and bleeding." starts_with = list(/obj/item/reagent_containers/pill/bicaridine = 7) /obj/item/storage/pill_bottle/dexalin_plus - name = "bottle of Dexalin Plus pills" + name = "bottle of 15u Dexalin Plus pills" desc = "Contains pills used to treat extreme cases of oxygen deprivation." starts_with = list(/obj/item/reagent_containers/pill/dexalin_plus = 7) /obj/item/storage/pill_bottle/dermaline - name = "bottle of Dermaline pills" - desc = "Contains pills used to treat burn wounds." + name = "bottle of 10u Dermaline pills" + desc = "Contains pills used to treat severe burn wounds." starts_with = list(/obj/item/reagent_containers/pill/dermaline = 7) /obj/item/storage/pill_bottle/dylovene - name = "bottle of Dylovene pills" - desc = "Contains pills used to treat toxic substances in the blood." + name = "bottle of 15u Dylovene pills" + desc = "Contains pills used to remove toxic substances from the blood." starts_with = list(/obj/item/reagent_containers/pill/dylovene = 7) /obj/item/storage/pill_bottle/inaprovaline - name = "bottle of Inaprovaline pills" - desc = "Contains pills used to stabilize patients." + name = "bottle of 10u Inaprovaline pills" + desc = "Contains pills used to stabilize a patient's heart activity." starts_with = list(/obj/item/reagent_containers/pill/inaprovaline = 7) /obj/item/storage/pill_bottle/kelotane - name = "bottle of Kelotane pills" - desc = "Contains pills used to treat burns." + name = "bottle of 10u Kelotane pills" + desc = "Contains pills used to treat minor burns." starts_with = list(/obj/item/reagent_containers/pill/kelotane = 7) +obj/item/storage/pill_bottle/butazoline + name = "bottle of 10u Butazoline pills" + desc = "Contains pills used to severe injuries and bleeding." + starts_with = list(/obj/item/reagent_containers/pill/butazoline = 7) + /obj/item/storage/pill_bottle/cetahydramine - name = "bottle of Cetahydramine pills" - desc = "Often compared to ancient brands, Cetahydramine is a modern chem used to reduce symptoms of allergies. Helps with sneezing." + name = "bottle of 5u Cetahydramine pills" + desc = "Contains pills used to treat coughing, sneezing and itching." starts_with = list(/obj/item/reagent_containers/pill/cetahydramine = 7) /obj/item/storage/pill_bottle/mortaphenyl - name = "bottle of Mortaphenyl pills" - desc = "Contains pills used to relieve pain." + name = "bottle of 10u Mortaphenyl pills" + desc = "Contains pills used to relieve severe pain in a trauma setting." starts_with = list(/obj/item/reagent_containers/pill/mortaphenyl = 7) /obj/item/storage/pill_bottle/perconol - name = "bottle of Perconol pills" - desc = "Contains pills used to relieve pain and reduce fevers." + name = "bottle of 10u Perconol pills" + desc = "Contains pills used to relieve minor-moderate pain and reduce fevers." starts_with = list(/obj/item/reagent_containers/pill/perconol = 7) /obj/item/storage/pill_bottle/minaphobin - name = "bottle of Minaphobin pills" - desc = "Contains pills used to stabilize a patient's mood." + name = "bottle of 5u Minaphobin pills" + desc = "Contains pills used to treat anxiety disorders and depression." starts_with = list(/obj/item/reagent_containers/pill/minaphobin = 7) /obj/item/storage/pill_bottle/rmt - name = "bottle of RMT pills" + name = "bottle of 15u RMT pills" desc = "Contains pills used to remedy the effects of prolonged zero-gravity adaptations." starts_with = list(/obj/item/reagent_containers/pill/rmt = 7) diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 655cc668fb9..53b04107e45 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -242,3 +242,10 @@ /obj/item/storage/box/syndie_kit/random_weapon/Initialize() .=..() desc = "A sleek, sturdy box" + +/obj/item/storage/box/syndie_kit/sideeffectbegone + name = "box of sideeffect-be-gone injectors" + desc = "Comes with 2x autoinjectors filled with drugs to counter chemical side-effects. Each injector has 2 uses." + starts_with = list( + /obj/item/reagent_containers/hypospray/autoinjector/sideeffectbgone = 2 + ) \ No newline at end of file diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm index b1520c7442e..7ea952ab8f3 100644 --- a/code/game/objects/random/random.dm +++ b/code/game/objects/random/random.dm @@ -151,6 +151,7 @@ /obj/item/bodybag = 2, /obj/item/bodybag/cryobag = 1, /obj/item/storage/pill_bottle/kelotane = 2, + /obj/item/storage/pill_bottle/bicaridine = 2, /obj/item/storage/pill_bottle/antitox = 2, /obj/item/storage/pill_bottle/mortaphenyl = 2, /obj/item/reagent_containers/syringe/dylovene = 2, @@ -167,8 +168,9 @@ /obj/item/storage/firstaid/regular = 3, /obj/item/storage/firstaid/toxin = 2, /obj/item/storage/firstaid/o2 = 2, - /obj/item/storage/firstaid/adv = 1, - /obj/item/storage/firstaid/fire = 2 + /obj/item/storage/firstaid/fire = 2, + /obj/item/storage/firstaid/brute = 1, + /obj/item/storage/firstaid/adv = 1 ) /obj/random/contraband diff --git a/code/modules/cargo/random_stock/t1_common.dm b/code/modules/cargo/random_stock/t1_common.dm index 860f0c7ad4e..25a28f27053 100644 --- a/code/modules/cargo/random_stock/t1_common.dm +++ b/code/modules/cargo/random_stock/t1_common.dm @@ -321,6 +321,7 @@ STOCK_ITEM_COMMON(glasses, 1.2) STOCK_ITEM_COMMON(pills, 1.2) var/list/options = pick( \ /obj/item/storage/pill_bottle/bicaridine, \ + /obj/item/storage/pill_bottle/butazoline, \ /obj/item/storage/pill_bottle/dexalin_plus, \ /obj/item/storage/pill_bottle/dermaline, \ /obj/item/storage/pill_bottle/dylovene, \ diff --git a/code/modules/clothing/spacesuits/rig/modules/utility.dm b/code/modules/clothing/spacesuits/rig/modules/utility.dm index c7aa2d4ccfb..9f9ca836e56 100644 --- a/code/modules/clothing/spacesuits/rig/modules/utility.dm +++ b/code/modules/clothing/spacesuits/rig/modules/utility.dm @@ -178,6 +178,7 @@ list("nutrients", "glucose", /datum/reagent/nutriment/glucose, 80), list("saline", "saline", /datum/reagent/saline, 80), list("hyronalin", "hyronalin", /datum/reagent/hyronalin, 80), + list("synaptizine", "synaptizine", /datum/reagent/synaptizine, 80), list("radium", "radium", /datum/reagent/radium, 80) ) @@ -198,6 +199,7 @@ list("nutrients", "glucose", /datum/reagent/nutriment/glucose, 80), list("saline", "saline", /datum/reagent/saline, 80), list("hyronalin", "hyronalin", /datum/reagent/hyronalin, 20), + list("synaptizine", "synaptizine", /datum/reagent/synaptizine, 20), list("radium", "radium", /datum/reagent/radium, 20) ) @@ -250,7 +252,7 @@ if(!charge) return FALSE - var/chems_to_use = 10 + var/chems_to_use = 5 if(charge.charges <= 0) to_chat(user, SPAN_WARNING("Insufficient chems!")) return FALSE diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm index 5e5c46cf5ea..db47923b8eb 100644 --- a/code/modules/hydroponics/seed.dm +++ b/code/modules/hydroponics/seed.dm @@ -386,6 +386,7 @@ /datum/reagent/alkysine, /datum/reagent/aslimetoxin, /datum/reagent/bicaridine, + /datum/reagent/butazoline, /datum/reagent/blood, /datum/reagent/cryoxadone, /datum/reagent/cryptobiolin, diff --git a/code/modules/mob/living/bot/medbot.dm b/code/modules/mob/living/bot/medbot.dm index e832568c504..85d16c5052d 100644 --- a/code/modules/mob/living/bot/medbot.dm +++ b/code/modules/mob/living/bot/medbot.dm @@ -18,7 +18,7 @@ //Healing vars var/obj/item/reagent_containers/glass/reagent_glass = null //Can be set to draw from this for reagents. var/currently_healing = 0 - var/injection_amount = 15 //How much reagent do we inject at a time? + var/injection_amount = 10 //How much reagent do we inject at a time? var/heal_threshold = 10 //Start healing when they have this much damage in a category var/use_beaker = 0 //Use reagents in beaker instead of default treatment agents. var/treatment_brute = /datum/reagent/tricordrazine diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index cf3808dba13..48dfda63836 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -610,6 +610,17 @@ if(prob(nausea)) delayed_vomit() + if(CE_ITCH in chem_effects) + var/itching = chem_effects[CE_ITCH] + if(CE_NOITCH in chem_effects) + itching -= chem_effects[CE_NOITCH] + if(itching < 5) + if(prob(5)) + to_chat(src, SPAN_WARNING(pick("You have an annoying itch.", "You have a slight itch."))) + if(itching >= 5) + if(prob(2)) + to_chat(src, SPAN_WARNING(pick("The itch is becoming progressively worse.", "You need to scratch that itch!", "The itch isn't going!"))) + if(CE_FEVER in chem_effects) var/normal_temp = species?.body_temperature || (T0C+37) var/fever = chem_effects[CE_FEVER] diff --git a/code/modules/mob/living/simple_animal/borer/borer_powers.dm b/code/modules/mob/living/simple_animal/borer/borer_powers.dm index 481201cd115..5093327b834 100644 --- a/code/modules/mob/living/simple_animal/borer/borer_powers.dm +++ b/code/modules/mob/living/simple_animal/borer/borer_powers.dm @@ -205,7 +205,7 @@ to_chat(src, SPAN_WARNING("You don't have enough chemicals!")) return - var/list/choices = list("Inaprovaline" = /datum/reagent/inaprovaline, "Bicaridine" = /datum/reagent/bicaridine, "Kelotane" = /datum/reagent/kelotane, "Dylovene" = /datum/reagent/dylovene, "Hyperzine" = /datum/reagent/hyperzine, "Peridaxon" = /datum/reagent/peridaxon, "Mortaphenyl" = /datum/reagent/mortaphenyl, "Neurostabin" = /datum/reagent/mental/neurostabin) + var/list/choices = list("Inaprovaline" = /datum/reagent/inaprovaline, "Bicaridine" = /datum/reagent/bicaridine, "Kelotane" = /datum/reagent/kelotane, "Dylovene" = /datum/reagent/dylovene, "Hyperzine" = /datum/reagent/hyperzine, "Peridaxon" = /datum/reagent/peridaxon, "Mortaphenyl" = /datum/reagent/mortaphenyl, "Neurapan" = /datum/reagent/mental/neurapan) var/chem = input("Select a chemical to secrete.", "Chemicals") as null|anything in choices if(!chem || chemicals < 20 || !host || controlling || !src || stat) //Sanity check. diff --git a/code/modules/organs/internal/brain.dm b/code/modules/organs/internal/brain.dm index e8e01f3095e..24e90bd1539 100644 --- a/code/modules/organs/internal/brain.dm +++ b/code/modules/organs/internal/brain.dm @@ -120,10 +120,13 @@ var/can_heal = damage && damage < max_damage && (damage % damage_threshold_value || owner.chem_effects[CE_BRAIN_REGEN] || (!past_damage_threshold(3) && owner.chem_effects[CE_STABLE])) var/damprob + var/brain_regen_amount = owner.chem_effects[CE_BRAIN_REGEN] / 10 //Effects of bloodloss switch(blood_volume) if(BLOOD_VOLUME_SAFE to INFINITY) - if(can_heal) + if(can_heal && owner.chem_effects[CE_BRAIN_REGEN]) + damage = max(damage - brain_regen_amount, 0) + else if(can_heal) damage = max(damage-1, 0) if(BLOOD_VOLUME_OKAY to BLOOD_VOLUME_SAFE) if(prob(1)) diff --git a/code/modules/reagents/Chemistry-Readme.dm b/code/modules/reagents/Chemistry-Readme.dm index 05fbae651bb..cb65a65f1cf 100644 --- a/code/modules/reagents/Chemistry-Readme.dm +++ b/code/modules/reagents/Chemistry-Readme.dm @@ -177,7 +177,11 @@ About Reagents: Maximum amount of reagent that has ever been in a mob. Exists so dose won't grow infinitely when small amounts of reagent are added over time. overdose - If [dose] is bigger than [overdose], overdose() proc is called every tick. + od_minimum_dose + If [volume] is bigger than [overdose] + AND + If [dose] is bigger than [od_minimum_dose] + THEN the overdose() proc is called every tick. scannable If set to 1, will show up on health analyzers by name. @@ -239,7 +243,7 @@ About Reagents: Ditto, breathing. Defaults to affect_blood with 75% dose. overdose(var/mob/living/carbon/M, var/alien) - Called when dose is above overdose. Defaults to M.adjustToxLoss(REM). + Called when volume is above overdose and dose is greater than a minimum dose. Defaults to M.adjustToxLoss(REM). initialize_data(var/newdata) Called when reagent is created. Defaults to setting [data] to [newdata]. diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 6f371f3bdce..1a3d54657ec 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -16,7 +16,8 @@ var/breathe_mul = 0.75 var/dose = 0 var/max_dose = 0 - var/overdose = 0 + var/overdose = 0 // Volume of a chemical required in the blood to meet overdose criteria. + var/od_minimum_dose = 5 // Metabolised dose of a chemical required to meet overdose criteria. var/scannable = 0 // Shows up on health analyzers. var/affects_dead = 0 var/glass_icon_state = null @@ -82,8 +83,8 @@ removed = M.get_metabolism(removed) max_dose = max(volume, max_dose) - if(overdose && (dose > overdose) && (location != CHEM_TOUCH)) - overdose(M, alien, removed, dose/overdose) + if(overdose && (volume > overdose) && (dose > od_minimum_dose) && (location != CHEM_TOUCH)) //OD based on volume in blood, but waits for a small amount of the drug to metabolise before kicking in. + overdose(M, alien, removed, dose/overdose) //Actual overdose threshold now = overdose + od_minimum_dose. ie. Synaptizine; 5u OD threshold + 1 unit min. metab'd dose = 6u actual OD threshold. if(dose == 0) initial_effect(M,alien) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm index a64edc0e3cc..f81bff4e486 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm @@ -155,7 +155,7 @@ /datum/reagent/fuel - name = "Welding fuel" + name = "Welding Fuel" description = "Required for welders. Flammable." reagent_state = LIQUID color = "#660000" diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm index 54af590a6f4..e1b62c4880c 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm @@ -63,6 +63,7 @@ taste_description = "sour chalk" taste_mult = 1.5 fallback_specific_heat = 0.018 + scannable = TRUE /datum/reagent/carbon/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) var/datum/reagents/ingested = M.get_ingested_reagents() @@ -88,10 +89,11 @@ color = "#6E3B08" taste_description = "copper" fallback_specific_heat = 1.148 + scannable = TRUE /datum/reagent/copper/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) if (alien & IS_SKRELL) - M.add_chemical_effect(CE_BLOODRESTORE, 8 * removed) + M.add_chemical_effect(CE_BLOODRESTORE, 4 * removed) /datum/reagent/alcohol //Parent class for all alcoholic reagents, though this one shouldn't be used anywhere. name = null // This null name should prevent alcohol from being added to global lists. @@ -285,12 +287,13 @@ reagent_state = SOLID color = "#353535" taste_description = "metal" + scannable = TRUE fallback_specific_heat = 1.181 /datum/reagent/iron/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) if (!(alien & (IS_SKRELL | IS_VAURCA))) - M.add_chemical_effect(CE_BLOODRESTORE, 8 * removed) + M.add_chemical_effect(CE_BLOODRESTORE, 4 * removed) /datum/reagent/lithium name = "Lithium" @@ -309,21 +312,36 @@ /datum/reagent/mercury name = "Mercury" - description = "A chemical element." + description = "A poisonous chemical element, one of two that is a liquid at human room temperature and pressure." reagent_state = LIQUID color = "#484848" - ingest_met = REM*0.2 + ingest_met = REM*0.1 + breathe_met = REM*0.4 + breathe_mul = 2 //mercury vapours and skin absorption more dangerous than eating mercury. + touch_met = REM*0.1 + touch_mul = 1.25 taste_mult = 0 //mercury apparently is tasteless + scannable = TRUE fallback_specific_heat = 0.631 -/datum/reagent/mercury/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - if(M.canmove && !M.restrained() && !(istype(M.loc, /turf/space))) - step(M, pick(cardinal)) - if(prob(5)) - M.emote(pick("twitch", "drool", "moan")) - - M.adjustBrainLoss(removed) +/datum/reagent/mercury/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + M.add_chemical_effect(CE_NEUROTOXIC, 2*removed) + if(dose > 1) + if(prob(dose/2)) + to_chat(M, SPAN_WARNING(pick("You feel a tingly sensation in your body.", "You can smell something unusual.", "You can taste something unusual.", "You hear a faint white-noise that's gradually getting louder."))) + M.confused = max(M.confused, 10) + if(dose > 4) + M.add_chemical_effect(CE_CLUMSY, 1) + if(prob(dose/4)) + M.emote(pick("twitch", "shiver", "drool")) + if(prob(dose/4)) + M.visible_message("[M] chuckles spontaneously.", "You chuckle spontaneously.") + if(dose > 8) + if(prob(2)) + to_chat(M, SPAN_WARNING("You can't feel any sensation in your extremities.")) + M.add_chemical_effect(CE_UNDEXTROUS, 1) //A budget dextrotoxin that's a tad more dangerous and slower to take effect. + M.Weaken(10) /datum/reagent/phosphorus name = "Phosphorus" @@ -372,7 +390,7 @@ return /datum/reagent/acid - name = "Sulphuric acid" + name = "Sulphuric Acid" description = "A very corrosive mineral acid with the molecular formula H2SO4." reagent_state = LIQUID color = "#DB5008" @@ -473,7 +491,7 @@ fallback_specific_heat = 1.710 /datum/reagent/acid/polyacid //Not in dispensers, but it should be here - name = "Polytrinic acid" + name = "Polytrinic Acid" description = "Polytrinic acid is a an extremely corrosive chemical substance." reagent_state = LIQUID color = "#8E18A9" @@ -482,7 +500,7 @@ taste_description = "acid" /datum/reagent/acid/stomach - name = "stomach acid" + name = "Stomach Acid" taste_description = "coppery foulness" power = 2 color = "#d8ff00" @@ -529,12 +547,13 @@ reagent_state = SOLID color = "#BF8C00" taste_description = "rotten eggs" + scannable = TRUE fallback_specific_heat = 0.503 /datum/reagent/sulfur/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) if (alien & IS_VAURCA) - M.add_chemical_effect(CE_BLOODRESTORE, 8 * removed) + M.add_chemical_effect(CE_BLOODRESTORE, 4 * removed) /datum/reagent/tungsten name = "Tungsten" diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Drugs.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Drugs.dm index eebec5c9754..e068d0fd722 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Drugs.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Drugs.dm @@ -1,5 +1,5 @@ /datum/reagent/space_drugs - name = "Space drugs" + name = "Space Drugs" description = "Mercury Monolithium Sucrose, or space drugs, is a potent relaxant commonly found in Ambrosia plants. Lasts twice as long when inhaled." reagent_state = LIQUID color = "#60A584" @@ -88,6 +88,7 @@ /datum/reagent/impedrezene/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) M.jitteriness = max(M.jitteriness - 5, 0) + M.confused = max(M.confused, 10) if(prob(80)) M.add_chemical_effect(CE_NEUROTOXIC, 3*removed) if(prob(50)) @@ -107,10 +108,12 @@ /datum/reagent/mindbreaker/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) M.hallucination = max(M.hallucination, 100) M.add_chemical_effect(CE_HALLUCINATE, 2) + if(prob(10)) + M.add_chemical_effect(CE_NEUROTOXIC, 5*removed) /datum/reagent/psilocybin - name = "psilocybin" - description = "A strong psycotropic derived from certain species of mushroom." + name = "Psilocybin" + description = "A strong psychotropic derived from certain species of mushroom." color = "#E700E7" overdose = REAGENTS_OVERDOSE metabolism = REM * 0.5 diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm index 8cf4321e829..850f2dc64a8 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm @@ -183,7 +183,7 @@ /datum/reagent/nutriment/coating/batter - name = "batter mix" + name = "Batter Mix" cooked_name = "batter" color = "#f5f4e9" reagent_state = LIQUID @@ -193,7 +193,7 @@ taste_description = "batter" /datum/reagent/nutriment/coating/beerbatter - name = "beer batter mix" + name = "Beer Batter Mix" cooked_name = "beer batter" color = "#f5f4e9" reagent_state = LIQUID @@ -208,7 +208,7 @@ //============================== /datum/reagent/nutriment/protein // Bad for Skrell! - name = "animal protein" + name = "Animal Protein" color = "#440000" blood_factor = 3 taste_description = "meat" @@ -220,17 +220,17 @@ ..() /datum/reagent/nutriment/protein/tofu //Good for Skrell! - name = "tofu protein" + name = "Tofu Protein" color = "#fdffa8" taste_description = "tofu" /datum/reagent/nutriment/protein/seafood // Good for Skrell! - name = "seafood protein" + name = "Seafood Protein" color = "#f5f4e9" taste_description = "fish" /datum/reagent/nutriment/protein/egg // Also bad for skrell. - name = "egg yolk" + name = "Egg Yolk" color = "#FFFFAA" taste_description = "egg" @@ -241,14 +241,14 @@ ..() /datum/reagent/nutriment/protein/cheese // Also bad for skrell. - name = "cheese" + name = "Cheese" color = "#EDB91F" taste_description = "cheese" //Fats //========================= /datum/reagent/nutriment/triglyceride - name = "triglyceride" + name = "Triglyceride" description = "More commonly known as fat, the third macronutrient, with over double the energy content of carbs and protein" reagent_state = SOLID @@ -365,7 +365,7 @@ germ_adjust = 5 /datum/reagent/nutriment/flour - name = "flour" + name = "Flour" description = "This is what you rub all over yourself to pretend to be a ghost." reagent_state = SOLID nutriment_factor = 1 @@ -393,7 +393,7 @@ taste_mult = 1.3 /datum/reagent/nutriment/soysauce - name = "Soysauce" + name = "Soy Sauce" description = "A salty sauce made from the soy plant." reagent_state = LIQUID nutriment_factor = 2 @@ -478,6 +478,12 @@ M.adjustNutritionLoss(10*removed) M.overeatduration = 0 +/datum/reagent/lipozine/overdose(var/mob/living/carbon/M, var/alien, var/removed) + M.adjustNutritionLoss(10*removed) + if(prob(2)) + to_chat(M, SPAN_DANGER("You feel yourself wasting away.")) + M.adjustHalLoss(10) + /datum/reagent/nutriment/barbecue name = "Barbecue Sauce" description = "Barbecue sauce for barbecues and long shifts." @@ -832,7 +838,7 @@ glass_desc = "A glass of sweet-sour lime juice" /datum/reagent/drink/orangejuice - name = "Orange juice" + name = "Orange Juice" description = "Both delicious AND rich in Vitamin C, what more do you need?" color = "#E78108" taste_description = "oranges" @@ -1461,7 +1467,7 @@ glass_center_of_mass = list("x"=15, "y"=9) /datum/reagent/drink/coffee/freddo_espresso - name = "Freddo espresso" + name = "Freddo Espresso" description = "Espresso with ice cubes poured over ice." color = "#664300" // rgb: 102, 67, 0 taste_description = "cold and bitter coffee" @@ -2006,7 +2012,7 @@ glass_center_of_mass = list("x"=7, "y"=8) /datum/reagent/drink/toothpaste/kois_odyne - name = "Kois Odyne" + name = "K'ois Odyne" description = "A favourite among the younger vaurca, born from an accident involving nanopaste and the repair of internal augments." strength = 60 taste_description = "chalk" diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm index 7e554453050..b92df7b5b2a 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm @@ -5,37 +5,68 @@ description = "Inaprovaline is a cardiostimulant which stabilises myocardial contractility, working towards maintaining a steady pulse and blood pressure. Inaprovaline also acts as a weak analgesic" reagent_state = LIQUID color = "#00BFFF" - overdose = REAGENTS_OVERDOSE * 2 + overdose = REAGENTS_OVERDOSE metabolism = REM * 0.5 metabolism_min = REM * 0.125 breathe_mul = 0.5 - scannable = 1 + scannable = TRUE taste_description = "bitterness" /datum/reagent/inaprovaline/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) M.add_chemical_effect(CE_STABLE) M.add_chemical_effect(CE_PAINKILLER, 25) +/datum/reagent/inaprovaline/overdose(var/mob/living/carbon/M, var/alien, var/removed) + if(prob(2)) + to_chat(M, SPAN_WARNING(pick("Your chest feels tight.", "Your chest is aching a bit.", "You have a stabbing pain in your chest."))) + M.adjustHalLoss(5) + /datum/reagent/bicaridine name = "Bicaridine" description = "Bicaridine is a complex medication which specifically targets damaged tissues and damaged blood vessels by encouraging the rate at which the damaged tissues are regenerated. Overdosing bicaridine allows the drug to take effect on damaged muscular tissues of arteries." reagent_state = LIQUID - color = "#BF0000" + color ="#BF0000" + scannable = TRUE overdose = REAGENTS_OVERDOSE - scannable = 1 metabolism = REM * 0.5 taste_description = "bitterness" + fallback_specific_heat = 1 taste_mult = 3 /datum/reagent/bicaridine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) M.heal_organ_damage(5 * removed, 0) + if((locate(/datum/reagent/butazoline) in M.reagents.reagent_list)) + M.add_chemical_effect(CE_ITCH, dose * 2) + M.adjustHydrationLoss(2*removed) + M.adjustCloneLoss(2.5*removed) // Cell regeneration spiralling out of control resulting in genetic damage. -/datum/reagent/bicaridine/overdose(var/mob/living/carbon/M, var/alien) - ..()//Bicard overdose heals arterial bleeding - var/mob/living/carbon/human/H = M - for(var/obj/item/organ/external/E in H.organs) - if(E.status & ORGAN_ARTERY_CUT && prob(2)) - E.status &= ~ORGAN_ARTERY_CUT +/datum/reagent/bicaridine/overdose(var/mob/living/carbon/M, var/alien, var/removed) + M.dizziness = max(100, M.dizziness) + M.make_dizzy(5) + M.adjustHydrationLoss(5*removed) + M.adjustNutritionLoss(5*removed) + + var/mob/living/carbon/human/H = M + if(dose > 30) //Bicaridine treats arterial bleeding when dose is greater than 30u and when the drug is overdosing (chemical volume in blood greater than 20). + for(var/obj/item/organ/external/E in H.organs) + if(E.status & ORGAN_ARTERY_CUT && prob(2)) + E.status &= ~ORGAN_ARTERY_CUT + +/datum/reagent/butazoline + name = "Butazoline" + description = "Butazoline, a recent improvement upon Bicaridine, is specialised at treating the most traumatic of wounds, though less so for treating severe bleeding." + reagent_state = LIQUID + color = "#ff5555" + overdose = 15 + scannable = TRUE + metabolism = REM * 0.5 + taste_description = "bitterness" + taste_mult = 3 + +/datum/reagent/butazoline/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + M.heal_organ_damage(8 * removed, 0) + M.add_chemical_effect(CE_ITCH, dose) + M.adjustHydrationLoss(1*removed) /datum/reagent/kelotane name = "Kelotane" @@ -48,32 +79,49 @@ taste_description = "bitterness" /datum/reagent/kelotane/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - if(!(locate(/datum/reagent/dermaline) in M.reagents.reagent_list)) - M.heal_organ_damage(0, 6 * removed) + M.heal_organ_damage(0, 6 * removed) + if((locate(/datum/reagent/dermaline) in M.reagents.reagent_list)) + M.add_chemical_effect(CE_ITCH, dose * 2) + M.adjustHydrationLoss(2*removed) + M.adjustCloneLoss(2.5*removed) //Cell regeneration spiralling out of control resulting in genetic damage. + +/datum/reagent/kelotane/overdose(var/mob/living/carbon/M, var/alien) + var/mob/living/carbon/human/H = M + var/obj/item/organ/external/head = H.get_organ(BP_HEAD) + if(!(head.disfigured)) + if(prob(10)) + to_chat(M, SPAN_WARNING(pick("Blisters start forming on your face.", "Your face feels numb.", "Your face feels swollen.", "You face hurts to touch."))) + if(prob(2)) + to_chat(M, SPAN_DANGER("Your face has swollen and blistered to such a degree that you are no longer recognisable!")) + head.disfigured = TRUE /datum/reagent/dermaline name = "Dermaline" description = "Dermaline is a recent improvement of kelotane, working in a similar way, though twice as effective. Dermaline is capable of recovering even the most dire of burnt tissues, being able to treat full-thickness burning." reagent_state = LIQUID color = "#FF8000" + taste_description = "bitterness" fallback_specific_heat = 1 scannable = TRUE metabolism = REM * 0.5 - overdose = REAGENTS_OVERDOSE * 0.5 + overdose = 15 taste_mult = 1.5 /datum/reagent/dermaline/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) M.heal_organ_damage(0, 12 * removed) + M.add_chemical_effect(CE_ITCH, dose) + M.adjustHydrationLoss(1*removed) /datum/reagent/dylovene name = "Dylovene" description = "Dylovene is a broad-spectrum over-the-counter antitoxin. It is used in response to a variety of poisoning cases, being able to neutralise and remove harmful toxins from the bloodstream." reagent_state = LIQUID color = "#00A000" + overdose = REAGENTS_OVERDOSE scannable = TRUE metabolism = REM * 0.5 - taste_description = "a roll of gauze" + var/remove_generic = TRUE var/list/remove_toxins = list( /datum/reagent/toxin/zombiepowder @@ -99,13 +147,17 @@ M.reagents.remove_reagent(R.type, removing) return +/datum/reagent/dylovene/overdose(var/mob/living/carbon/M, var/alien, var/removed) + M.adjustNutritionLoss(5 * removed) + M.adjustHydrationLoss(5 * removed) + /datum/reagent/dexalin name = "Dexalin" description = "Dexalin is a complex oxygen therapeutic and is available OTC. The chemical utilises carbon nanostructures which cling to oxygen and, in pathological conditions where tissues are hypoxic, will oxygenate these regions. Dexalin is twice as efficient when inhaled." reagent_state = LIQUID color = "#0080FF" overdose = REAGENTS_OVERDOSE - scannable = 1 + scannable = TRUE taste_description = "bitterness" metabolism = REM breathe_met = REM * 0.5 @@ -126,13 +178,16 @@ var/obj/item/organ/internal/eyes/E = H.get_eyes(no_synthetic = TRUE) if(E && istype(E)) E.take_damage(removed * (strength / 12)) + if(alien == IS_VAURCA) //Vaurca need a mixture of phoron and oxygen. Too much dexalin likely imbalances that. + M.adjustToxLoss(removed * strength / 2) + M.eye_blurry = max(M.eye_blurry, 5) /datum/reagent/dexalin/plus name = "Dexalin Plus" fallback_specific_heat = 1 description = "Dexalin Plus was a ground-breaking improvement of Dexalin, capable of transporting several times the amount of oxygen, allowing it to have more clinical uses in treating hypoxia. Dexalin Plus is twice as efficient when inhaled." color = "#0040FF" - overdose = REAGENTS_OVERDOSE * 0.5 + overdose = 15 strength = 12 /datum/reagent/tricordrazine @@ -140,7 +195,8 @@ description = "Tricordrazine is an old, though still useful, medication largely set aside following bicaridine and kelotane's development. The drug increases the rate at which tissues regenerate, though far slower than modern medications." reagent_state = LIQUID color = "#8040FF" - scannable = 1 + overdose = 30 + scannable = TRUE fallback_specific_heat = 1 taste_description = "bitterness" breathe_mul = 0 @@ -152,13 +208,16 @@ //Heals 10% more burn and less brute for every 1 celcius below 20 celcius, up to 50% more/less. M.heal_organ_damage(3 * removed * power,3 * removed * power) +/datum/reagent/tricordrazine/overdose(var/mob/living/carbon/M, var/alien) + M.add_chemical_effect(CE_ITCH, dose) + /datum/reagent/cryoxadone name = "Cryoxadone" description = "Cryoxadone is a ground-breaking and complex medication that, when acting on bodies cooler than 170K, is capable of increasing the rate at which wounds regenerate, as well as treating genetic damage. Cryoxadone, alongside Clonexadone, are the backbones of the cloning industry." reagent_state = LIQUID color = "#8080FF" metabolism = REM * 0.5 - scannable = 1 + scannable = TRUE taste_description = "sludge" /datum/reagent/cryoxadone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) @@ -175,7 +234,7 @@ reagent_state = LIQUID color = "#80BFFF" metabolism = REM * 0.5 - scannable = 1 + scannable = TRUE taste_description = "slime" /datum/reagent/clonexadone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) @@ -190,11 +249,12 @@ /datum/reagent/perconol name = "Perconol" - description = "Perconol is an advanced NSAID medication which is highly effective at treating minor-mild pain, inflammation and high fevers. The drug is available over-the-counter for treating minor illnesses and mild pain. Perconol is not effective when inhaled." + description = "Perconol is an advanced, analgesic medication which is highly effective at treating minor-mild pain, inflammation and high fevers. The drug is available over-the-counter for treating minor illnesses and mild pain. Perconol is not effective when inhaled." reagent_state = LIQUID color = "#C8A5DC" - overdose = 60 - scannable = 1 + overdose = REAGENTS_OVERDOSE + od_minimum_dose = 2 + scannable = TRUE metabolism = REM/10 // same as before when in blood, 0.02 units per tick ingest_met = REM * 2 // .4 units per tick breathe_met = REM * 4 // .8 units per tick @@ -212,11 +272,12 @@ /datum/reagent/mortaphenyl name = "Mortaphenyl" - description = "Mortaphenyl is an advanced synthetic opioid medication which is highly effective at treating mild-severe pain as a result of severe, physical injury. Mortaphenyl is not effective when inhaled." + description = "Mortaphenyl is an advanced, powerful analgesic medication which is highly effective at treating mild-severe pain as a result of severe, physical injury. Mortaphenyl is not effective when inhaled." reagent_state = LIQUID color = "#CB68FC" - overdose = 30 - scannable = 1 + overdose = 15 + scannable = TRUE + od_minimum_dose = 2 metabolism = REM/10 // same as before when in blood, 0.02 units per tick ingest_met = REM * 2 // .4 units per tick breathe_met = REM * 4 // .8 units per tick @@ -226,17 +287,38 @@ /datum/reagent/mortaphenyl/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) M.add_chemical_effect(CE_PAINKILLER, 80) + M.eye_blurry = max(M.eye_blurry, 5) + M.confused = max(M.confused, 10) + + var/mob/living/carbon/human/H = M + if(!istype(H)) + return + var/bac = H.get_blood_alcohol() + if(bac >= 0.03) + M.hallucination = max(M.hallucination, bac * 300) + M.add_chemical_effect(CE_EMETIC, dose/6) + if(bac >= 0.08) + if(M.losebreath < 15) + M.losebreath++ + + if((locate(/datum/reagent/oxycomorphine) in M.reagents.reagent_list)) + overdose = volume/2 //Straight to overdose. /datum/reagent/mortaphenyl/overdose(var/mob/living/carbon/M, var/alien) ..() M.hallucination = max(M.hallucination, 40) - + M.add_chemical_effect(CE_EMETIC, dose/6) + if(M.losebreath < 15) + M.losebreath++ + /datum/reagent/oxycomorphine name = "Oxycomorphine" - description = "Oxycomorphine is a highly advanced synthetic opioid medication which is extremely effective at treating severe-agonising pain as a result of injuries usually incompatible with life. The drug is highly addictive and sense-numbing. Oxycomorphine is not effective when inhaled." + description = "Oxycomorphine is a highly advanced, powerful analgesic medication which is extremely effective at treating severe-agonising pain as a result of injuries usually incompatible with life. The drug is highly addictive and sense-numbing. Oxycomorphine is not effective when inhaled." reagent_state = LIQUID color = "#800080" - overdose = 20 + overdose = 10 + od_minimum_dose = 2 + scannable = TRUE metabolism = REM/10 // same as before when in blood, 0.02 units per tick ingest_met = REM * 2 // .4 units per tick breathe_met = REM * 4 // .8 units per tick @@ -246,6 +328,9 @@ /datum/reagent/oxycomorphine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) M.add_chemical_effect(CE_PAINKILLER, 200) + M.eye_blurry = max(M.eye_blurry, 5) + M.confused = max(M.confused, 20) + var/mob/living/carbon/human/H = M if(!istype(H)) return @@ -253,11 +338,20 @@ if(bac >= 0.02) M.hallucination = max(M.hallucination, bac * 300) M.druggy = max(M.druggy, bac * 100) + M.add_chemical_effect(CE_EMETIC, dose/6) + if(bac >= 0.04) + if(prob(3)) + to_chat(M, SPAN_WARNING(pick("You're having trouble breathing.", "You begin to feel a bit light headed.", "Your breathing is very shallow.", ""))) + if(M.losebreath < 15) + M.losebreath++ /datum/reagent/oxycomorphine/overdose(var/mob/living/carbon/M, var/alien) ..() M.druggy = max(M.druggy, 20) M.hallucination = max(M.hallucination, 60) + M.add_chemical_effect(CE_EMETIC, dose/6) + if(M.losebreath < 15) + M.losebreath++ /* Other medicine */ @@ -267,25 +361,38 @@ reagent_state = LIQUID color = "#99CCFF" metabolism = REM * 0.05 - overdose = REAGENTS_OVERDOSE - scannable = 1 + overdose = 10 + od_minimum_dose = 1 + scannable = TRUE var/datum/modifier/modifier taste_description = "bitterness" metabolism_min = REM * 0.0125 /datum/reagent/synaptizine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) M.drowsyness = max(M.drowsyness - 5, 0) - M.AdjustParalysis(-1) + if(!(volume > 10)) // Will prevent synaptizine interrupting a seizure caused by its own overdose. + M.AdjustParalysis(-1) M.AdjustStunned(-1) M.AdjustWeakened(-1) holder.remove_reagent(/datum/reagent/mindbreaker, 5) M.hallucination = max(0, M.hallucination - 10) + M.eye_blurry = max(M.eye_blurry - 5, 0) + M.confused = max(M.confused - 10, 0) M.adjustToxLoss(5 * removed) // It used to be incredibly deadly due to an oversight. Not anymore! M.add_chemical_effect(CE_PAINKILLER, 40) M.add_chemical_effect(CE_HALLUCINATE, -1) if (!modifier) modifier = M.add_modifier(/datum/modifier/adrenaline, MODIFIER_REAGENT, src, _strength = 1, override = MODIFIER_OVERRIDE_STRENGTHEN) +/datum/reagent/synaptizine/overdose(var/mob/living/carbon/M, var/alien) + if(prob(dose / 2)) + to_chat(M, SPAN_WARNING(pick("You feel a tingly sensation in your body.", "You can smell something unusual.", "You can taste something unusual."))) + if(prob(dose / 3)) + if(prob(75)) + M.emote(pick("twitch", "shiver")) + else + M.seizure() + /datum/reagent/synaptizine/Destroy() QDEL_NULL(modifier) return ..() @@ -295,18 +402,34 @@ description = "Alkysine is a complex drug which increases cerebral circulation, ensuring the brain does not become hypoxic and increasing the rate at which neurological function returns after a catastrophic injury." reagent_state = LIQUID color = "#FFFF66" - metabolism = REM * 0.25 - overdose = REAGENTS_OVERDOSE - scannable = 1 + metabolism = REM //0.2u/tick + overdose = 10 + scannable = TRUE taste_description = "bitterness" metabolism_min = REM * 0.075 /datum/reagent/alkysine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - M.add_chemical_effect(CE_BRAIN_REGEN, 30*removed) - M.add_chemical_effect(CE_PAINKILLER, 10) + if(volume < 2) //Increased effectiveness & no side-effects if given via IV drip with low transfer rate. + M.add_chemical_effect(CE_BRAIN_REGEN, 40) //1 unit of Alkysine fed via drip at a low transfer rate will raise activity by 10%. + else + M.add_chemical_effect(CE_BRAIN_REGEN, 30) //1 unit of Alkysine will raise brain activity by 7.5%. + M.add_chemical_effect(CE_PAINKILLER, 10) + M.dizziness = max(125, M.dizziness) + M.make_dizzy(5) + if(!(volume > 10)) + var/obj/item/organ/internal/brain/B = M.internal_organs_by_name[BP_BRAIN] + if(B && M.species && M.species.has_organ[BP_BRAIN] && !isipc(M)) + if(prob(dose/5) && !B.has_trauma_type(BRAIN_TRAUMA_MILD)) + B.gain_trauma_type(pick(/datum/brain_trauma/mild/dumbness, /datum/brain_trauma/mild/muscle_weakness, /datum/brain_trauma/mild/colorblind)) //Handpicked suggested traumas considered less disruptive and conducive to roleplay. /datum/reagent/alkysine/overdose(var/mob/living/carbon/M, var/alien, var/removed) - M.hallucination = max(M.hallucination, 25) + M.hallucination = max(M.hallucination, 15) + var/obj/item/organ/internal/brain/B = M.internal_organs_by_name[BP_BRAIN] + if(B && M.species && M.species.has_organ[BP_BRAIN] && !isipc(M)) + if(prob(dose / 2) && !B.has_trauma_type(BRAIN_TRAUMA_SEVERE) && !B.has_trauma_type(BRAIN_TRAUMA_MILD) && !B.has_trauma_type(BRAIN_TRAUMA_SPECIAL)) + B.gain_trauma_type(/datum/brain_trauma/severe/paralysis, /datum/brain_trauma/severe/aphasia, /datum/brain_trauma/special/imaginary_friend) + if(prob(dose)) + to_chat(M, SPAN_WARNING(pick("You have a painful headache!", "You feel a throbbing pain behind your eyes!"))) ..() /datum/reagent/oculine @@ -315,7 +438,7 @@ reagent_state = LIQUID color = "#C8A5DC" overdose = REAGENTS_OVERDOSE - scannable = 1 + scannable = TRUE taste_mult = 0.33 //Specifically to cut the dull toxin taste out of foods using carrot taste_description = "dull toxin" @@ -339,7 +462,7 @@ reagent_state = LIQUID color = "#561EC3" overdose = 10 - scannable = 1 + scannable = TRUE taste_description = "bitterness" /datum/reagent/peridaxon/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) @@ -353,6 +476,13 @@ if((I.damage > 0) && (I.robotic != 2)) //Peridaxon heals only non-robotic organs I.damage = max(I.damage - removed, 0) +/datum/reagent/peridaxon/overdose(var/mob/living/carbon/M, var/alien) + M.dizziness = max(150, M.dizziness) + M.make_dizzy(5) + if(prob(dose / 2)) + to_chat(M, SPAN_DANGER("You feel your insides twisting and burning.")) + M.adjustHalLoss(5) + /datum/reagent/ryetalyn name = "Ryetalyn" description = "Ryetalyn is a novel, highly advanced, broad-spectrum medication, developed by Dominian scientists, which has varying clinical uses in treating genetic abnormalities including certain cancers, autoimmune conditions, and Hulk Syndrome." @@ -381,7 +511,7 @@ reagent_state = LIQUID color = "#FF3300" metabolism = REM * 0.15 - overdose = REAGENTS_OVERDOSE * 0.5 + overdose = 15 var/datum/modifier = null taste_description = "acid" metabolism_min = REM * 0.025 @@ -394,6 +524,20 @@ M.add_chemical_effect(CE_PULSE, 1) if (!modifier) modifier = M.add_modifier(/datum/modifier/stimulant, MODIFIER_REAGENT, src, _strength = 1, override = MODIFIER_OVERRIDE_STRENGTHEN) + + if((locate(/datum/reagent/adrenaline) in M.reagents.reagent_list)) + if(M.reagents.get_reagent_amount(/datum/reagent/adrenaline) > 5) //So you can tolerate being attacked whilst hyperzine is in your system. + overdose = volume/2 //Straight to overdose. + +/datum/reagent/hyperzine/overdose(var/mob/living/carbon/M, var/alien, var/removed) + M.adjustNutritionLoss(5*removed) + M.add_chemical_effect(CE_PULSE, 2) + if(prob(5)) + to_chat(M, SPAN_DANGER(pick("Your heart is beating rapidly!", "Your chest hurts!"))) + if(prob(dose / 3)) + M.visible_message("[M] twitches violently, grimacing.", "You twitch violently and feel yourself sprain a joint.") + M.take_organ_damage(5 * removed, 0) + M.adjustHalLoss(15) /datum/reagent/hyperzine/Destroy() QDEL_NULL(modifier) @@ -411,7 +555,7 @@ color = "#605048" metabolism = REM * 0.3 overdose = REAGENTS_OVERDOSE - scannable = 1 + scannable = TRUE taste_description = "bitterness" /datum/reagent/ethylredoxrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) @@ -457,7 +601,7 @@ color = "#408000" metabolism = REM * 0.25 overdose = REAGENTS_OVERDOSE - scannable = 1 + scannable = TRUE taste_description = "bitterness" unaffected_species = IS_MACHINE var/last_taste_time = -10000 @@ -465,13 +609,17 @@ /datum/reagent/hyronalin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) if(M.is_diona()) if(last_taste_time + 950 < world.time) // Not to spam message - to_chat(M, "Your body withers as you feel a searing pain throughout.") + to_chat(M, SPAN_DANGER("Your body withers as you feel a searing pain throughout.")) last_taste_time = world.time metabolism = REM * 0.22 M.adjustToxLoss(45 * removed) // Tested numbers myself else M.apply_radiation(-30 * removed) +/datum/reagent/hyronalin/overdose(var/mob/living/carbon/M, var/alien, var/removed) + if(prob(60)) + M.take_organ_damage(4 * removed, 0) //Hyronaline OD deals brute damage to the same degree as Arithrazine + /datum/reagent/arithrazine name = "Arithrazine" description = "Arithrazine is a recent improvement of Hyronalin, rapidly destroying any ionised cells, though this often leads to collateral cell damage, resulting in contusions across affected parts of the body." @@ -479,7 +627,7 @@ color = "#008000" metabolism = REM * 0.25 overdose = REAGENTS_OVERDOSE - scannable = 1 + scannable = TRUE taste_description = "bitterness" unaffected_species = IS_MACHINE var/last_taste_time = -10000 @@ -487,25 +635,31 @@ /datum/reagent/arithrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) if(M.is_diona()) if(last_taste_time + 450 < world.time) // Not to spam message - to_chat(M, "Your body withers as you feel a searing pain throughout.") + to_chat(M, SPAN_DANGER("Your body withers as you feel a searing pain throughout.")) last_taste_time = world.time metabolism = REM * 0.195 M.adjustToxLoss(115 * removed) // Tested numbers myself else M.apply_radiation(-70 * removed) + M.add_chemical_effect(CE_ITCH, dose/2) if(prob(60)) M.take_organ_damage(4 * removed, 0) +/datum/reagent/arithrazine/overdose(var/mob/living/carbon/M, var/alien, var/removed) + if(prob(50)) + M.take_organ_damage(6 * removed, 0) //Even more collateral damage dealt by arithrazine when overdosed. + /datum/reagent/thetamycin name = "Thetamycin" description = "Thetamycin is a complex, broad-spectrum antibiotic developed to treat wound infections, organ infections, and septicaemia, even those caused by superbugs with high anti-bacterial resistances." reagent_state = LIQUID color = "#41C141" + od_minimum_dose = 1 metabolism = REM * 0.05 breathe_met = REM * 2 // .4 units per tick // touch is slow overdose = REAGENTS_OVERDOSE - scannable = 1 + scannable = TRUE taste_description = "bitter gauze soaked in rubbing alcohol" fallback_specific_heat = 0.605 // assuming it's ethanol-based @@ -513,11 +667,16 @@ M.add_chemical_effect(CE_EMETIC, dose/8) // chance per 2 second tick to cause vomiting M.add_chemical_effect(CE_ANTIBIOTIC, dose) // strength of antibiotics; amount absorbed, need >5 to be effective. takes 50 seconds to work +/datum/reagent/thetamycin/overdose(var/mob/living/carbon/M, var/alien) + M.dizziness = max(150, M.dizziness) + M.make_dizzy(5) + /datum/reagent/asinodryl name = "Asinodryl" description = "Asinodryl is an anti-emetic medication which acts by preventing the two regions in the brain responsible for vomiting from controlling the act of emesis." color = "#f5f2d0" taste_description = "bitterness" + scannable = TRUE metabolism = REM * 0.25 fallback_specific_heat = 1 @@ -529,7 +688,7 @@ /datum/reagent/coughsyrup name = "Cough Syrup" description = "A complex antitussive medication available OTC which is very effective at suppressing cough reflexes. The medication also acts as a very weak analgesic medication, leading to it being a very cheap recreational drug or precursor to other recreational drugs." - scannable = 1 + scannable = TRUE reagent_state = LIQUID taste_description = "bitterness" color = "#402060" @@ -558,7 +717,7 @@ /datum/reagent/cetahydramine name = "Cetahydramine" description = "Cetahydramine is a complex antihistamine medication available OTC which blocks the release of histamine, thus making it effective at suppressing allergies and sneezing. Cetahydramine can cause drowsiness in larger doses, making it an effective sleep aid." - scannable = 1 + scannable = TRUE reagent_state = LIQUID taste_description = "bitterness" metabolism = REM * 0.05 // only performs its effects while in blood @@ -569,6 +728,7 @@ fallback_specific_heat = 0.605 // assuming it's ethanol-based /datum/reagent/cetahydramine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + M.add_chemical_effect(CE_NOITCH, dose * 2) // 5 units of cetahydramine will counter 10 units of dermaline/butazoline itching. if(prob(dose/2)) M.drowsyness += 2 @@ -578,7 +738,7 @@ reagent_state = LIQUID color = "#C8A5DC" touch_met = 5 - taste_description = "bitterness" + taste_description = "burning bleach" germ_adjust = 20 /datum/reagent/sterilizine/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) @@ -611,14 +771,22 @@ reagent_state = LIQUID color = "#C8A5DC" overdose = REAGENTS_OVERDOSE - scannable = 1 + scannable = TRUE taste_description = "bitterness" /datum/reagent/leporazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - if(M.bodytemperature > 310) - M.bodytemperature = max(310, M.bodytemperature - (40 * TEMPERATURE_DAMAGE_COEFFICIENT)) - else if(M.bodytemperature < 311) - M.bodytemperature = min(310, M.bodytemperature + (40 * TEMPERATURE_DAMAGE_COEFFICIENT)) + if(!(volume > 20)) + if(M.bodytemperature > 310) + M.bodytemperature = max(310, M.bodytemperature - (40 * TEMPERATURE_DAMAGE_COEFFICIENT)) + else if(M.bodytemperature < 311) + M.bodytemperature = min(310, M.bodytemperature + (40 * TEMPERATURE_DAMAGE_COEFFICIENT)) + +/datum/reagent/leporazine/overdose(var/mob/living/carbon/M, var/alien) + M.bodytemperature = max(M.bodytemperature - 2 * TEMPERATURE_DAMAGE_COEFFICIENT, 0) + if(prob(2)) + M.emote("shiver") + if(prob(2)) + to_chat(M, SPAN_WARNING("You feel very cold...")) /* mental */ @@ -632,8 +800,9 @@ metabolism = 0.001 * REM metabolism_min = 0 data = 0 - scannable = 1 + scannable = TRUE overdose = REAGENTS_OVERDOSE + od_minimum_dose = 0.02 taste_description = "bugs" ingest_mul = 1 var/alchohol_affected = 1 @@ -661,7 +830,7 @@ var/obj/item/organ/internal/brain/B = H.internal_organs_by_name[BP_BRAIN] var/bac = H.get_blood_alcohol() - if(alchohol_affected && bac > 0.01) + if(alchohol_affected && bac > 0.03) H.hallucination = max(H.hallucination, bac * 400) if(B) //You won't feel anything if you don't have a brain. @@ -689,7 +858,7 @@ break if(!suppress_withdrawl) if (H.shock_stage < 20 && worstmessage.len) - to_chat(H,"[pick(worstmessage)]") + to_chat(H, SPAN_DANGER("[pick(worstmessage)]")) messagedelay = initial(messagedelay) * 0.25 for(var/k in withdrawal_traumas) var/datum/brain_trauma/BT = k @@ -698,11 +867,11 @@ B.gain_trauma(BT,FALSE) else if(hastrauma || volume < max_dose*0.5) //If your current dose is not high enough, then alert the player. if (H.shock_stage < 10 && badmessage.len) - to_chat(H,"[pick(badmessage)]") + to_chat(H, SPAN_WARNING("[pick(badmessage)]")) messagedelay = initial(messagedelay) * 0.5 else if (H.shock_stage < 5 && goodmessage.len) - to_chat(H,"[pick(goodmessage)]") + to_chat(H, SPAN_GOOD("[pick(goodmessage)]")) messagedelay = initial(messagedelay) data = world.time + (messagedelay SECONDS) @@ -713,7 +882,8 @@ reagent_state = LIQUID color = "#333333" metabolism = 0.0016 * REM - overdose = 3 + overdose = 5 + od_minimum_dose = 3 data = 0 taste_description = "bitterness" goodmessage = list("You feel good.","You feel relaxed.","You feel alert and focused.") @@ -743,6 +913,7 @@ reagent_state = LIQUID color = "#8888AA" metabolism = 0.01 * REM + od_minimum_dose = 0.2 data = 0 taste_description = "paper" goodmessage = list("You feel focused.","You feel like you have no distractions.","You feel willing to work.") @@ -765,12 +936,16 @@ M.add_chemical_effect(CE_HALLUCINATE, -1) ..() +/datum/reagent/mental/corophendiate/overdose(var/mob/living/carbon/M, var/alien) + M.add_chemical_effect(CE_EMETIC, dose / 6) + /datum/reagent/mental/neurostabin name = "Neurostabin" description = "Neurostabin is a new generation, psychoactive drug used in the treatment of psychoses, and also has clinical significance in treating muscle weakness. It has far fewer side effects than previous generations of psychoactive drugs. Withdrawal symptoms include hallucinations and the development of phobias." reagent_state = LIQUID color = "#888888" metabolism = 0.01 * REM + od_minimum_dose = 0.2 data = 0 taste_description = "bitterness" goodmessage = list("You do not feel the need to worry about simple things.","You feel calm and level-headed.","You feel fine.") @@ -790,12 +965,16 @@ /datum/brain_trauma/mild/hallucinations = 2 ) +/datum/reagent/mental/neurostabin/overdose(var/mob/living/carbon/M, var/alien) + M.add_chemical_effect(CE_EMETIC, dose / 6) + /datum/reagent/mental/parvosil name = "Parvosil" - description = "Parvosil is a new generation, psychoactive drug used in the treatment of anxiety disorders such as phobias and social anxiety. It has far fewer side effects than previous generations of pysychoactive drugs. Withdrawal symptoms include hallucinations and heightened anxiety." + description = "Parvosil is a new generation, psychoactive drug used in the treatment of anxiety disorders such as phobias and social anxiety. It has far fewer side effects than previous generations of psychoactive drugs. Withdrawal symptoms include hallucinations and heightened anxiety." reagent_state = LIQUID color = "#88AA88" metabolism = 0.02 * REM + od_minimum_dose = 0.4 data = 0 taste_description = "paper" goodmessage = list("You feel fine.","You feel rational.","You feel decent.") @@ -813,12 +992,16 @@ ) suppressing_reagents = list(/datum/reagent/mental/neurostabin = 5) +/datum/reagent/mental/parvosil/overdose(var/mob/living/carbon/M, var/alien) + M.add_chemical_effect(CE_EMETIC, dose / 6) + /datum/reagent/mental/minaphobin name = "Minaphobin" description = "Minaphobin is a new generation, psychoactive drug used in the treatment of anxiety disorders such as phobias and social anxiety. It has far fewer side effects than previous generations of psychoactive drugs. Withdrawal symptoms include hallucinations and heightened anxiety." reagent_state = LIQUID color = "#FF8888" metabolism = 0.01 * REM + od_minimum_dose = 0.2 data = 0 taste_description = "duct tape" goodmessage = list("You feel relaxed.","You feel at ease.","You feel care free.") @@ -840,12 +1023,16 @@ /datum/reagent/mental/parvosil = 5 ) +/datum/reagent/mental/minaphobin/overdose(var/mob/living/carbon/M, var/alien) + M.add_chemical_effect(CE_EMETIC, dose / 6) + /datum/reagent/mental/emoxanyl name = "Emoxanyl" - description = "Emoxanyl is a novel, antioxidant medication which increases cerebral circulation and is used to treat anxiety, depression, concussion, and epilepsy. It has fewer side effects than many other forms of psychoactive drugs. Withdrawal symptoms include hallucinations and heightened anxiety." + description = "Emoxanyl is a novel, psychoactive medication which increases cerebral circulation and is used to treat anxiety, depression, concussion, and epilepsy. It has fewer side effects than many other forms of psychoactive drugs. Withdrawal symptoms include hallucinations and heightened anxiety." reagent_state = LIQUID color = "#88FFFF" metabolism = 0.01 * REM + od_minimum_dose = 0.2 data = 0 taste_description = "scotch tape" goodmessage = list("You feel at ease.","Your mind feels healthy..") @@ -871,12 +1058,16 @@ /datum/reagent/mental/parvosil = 10 ) +/datum/reagent/mental/emoxanyl/overdose(var/mob/living/carbon/M, var/alien) + M.add_chemical_effect(CE_EMETIC, dose / 6) + /datum/reagent/mental/orastabin name = "Orastabin" description = "Orastabin is a new generation, complex psychoactive medication used in the treatment of anxiety disorders and speech impediments. It has fewer side effects than many other forms of psychoactive drugs. Withdrawal symptoms include hallucinations and heightened anxiety." reagent_state = LIQUID color = "#FF88FF" metabolism = 0.01 * REM + od_minimum_dose = 0.2 data = 0 taste_description = "glue" goodmessage = list("You feel at ease.","Your mind feels healthy..","You feel unafraid to speak...") @@ -903,16 +1094,21 @@ /datum/reagent/mental/parvosil = 10 ) +/datum/reagent/mental/orastabin/overdose(var/mob/living/carbon/M, var/alien) + M.add_chemical_effect(CE_EMETIC, dose / 6) + /datum/reagent/mental/neurapan name = "Neurapan" description = "Neurapan is a groundbreaking, expensive antipsychotic medication capable of treating a whole spectrum of mental illnesses, including psychoses, anxiety disorders, Tourette Syndrome and depression, and can alleviate symptoms of stress. Neurapan can be addictive due to its tranquilising effects, and withdrawal symptoms are dangerous." reagent_state = LIQUID color = "#FF4444" + overdose = 10 metabolism = 0.02 * REM + od_minimum_dose = 0.4 data = 0 - taste_description = "cardboard" - goodmessage = list("Your mind feels as one.","You feel comfortable speaking.","Your body feels good.","Your thoughts are pure.") - badmessage = list("You start hearing voices...","You think you see things...","You feel really upset...","You want attention...") + taste_description = "tranquility" + goodmessage = list("Your mind feels as one.","You feel incredibly comfortable.","Your body feels good.","Your thoughts are clear.", "You feel stress free.", "Nothing is bothering you anymore.") + badmessage = list("The tranquility fades and you start hearing voices...","You think you see things...","You remember the stress you left behind...","You want attention...") worstmessage = list("You think you start seeing things...","You swear someone inside you spoke to you...","You hate feeling alone...","You feel really upset...") messagedelay = ANTIDEPRESSANT_MESSAGE_DELAY * 0.5 suppress_traumas = list( @@ -946,12 +1142,26 @@ M.add_chemical_effect(CE_HALLUCINATE, -2) ..() +/datum/reagent/mental/neurapan/overdose(var/mob/living/carbon/M, var/alien) + M.add_chemical_effect(CE_PACIFIED, 1) + M.eye_blurry = max(M.eye_blurry, 30) + if((locate(/datum/reagent/oxycomorphine) in M.reagents.reagent_list)) + M.ear_deaf = 20 + M.drowsyness = max(M.drowsyness, 10) + M.make_dizzy(15) + if(prob(3)) + to_chat(M, SPAN_GOOD(pick("You lose all sense of connection to the real world.", "Everything is so tranquil.", "You feel dettached from reality.", "Your feel disconnected from your body.", "You are aware of nothing but your conscious thoughts."))) + else + if(prob(3)) + to_chat(M, SPAN_GOOD(pick("Stress was an inconvenience that you are now free of.", "You feel somewhat dettached from reality.", "You can feel time passing by and it no longer bothers you."))) + /datum/reagent/mental/nerospectan name = "Nerospectan" description = "Nerospectan is an expensive, new generation anti-psychotic medication capable of treating a whole spectrum of mental illnesses, including psychoses, anxiety disorders, Tourette Syndrome and depression, and can alleviate symptoms of stress. Nerospectan can be addictive due to its tranquilising effects, and withdrawal symptoms are dangerous." reagent_state = LIQUID color = "#FF8844" metabolism = 0.02 * REM + od_minimum_dose = 0.4 data = 0 taste_description = "paint" goodmessage = list("Your mind feels as one.","You feel comfortable speaking.","Your body feels good.","Your thoughts are pure.","Your body feels responsive.","You can handle being alone.") @@ -986,14 +1196,17 @@ M.add_chemical_effect(CE_HALLUCINATE, -2) ..() +/datum/reagent/mental/nerospectan/overdose(var/mob/living/carbon/M, var/alien) + M.add_chemical_effect(CE_EMETIC, dose / 6) + /datum/reagent/mental/truthserum - name = "Truth serum" + name = "Truth Serum" description = "Truth Serum is an expensive and very unethical psychoactive drug capable of inhibiting defensive measures and reasoning in regards to communication, resulting in those under the effects of the drug to be very open to telling the truth." reagent_state = LIQUID color = "#888888" metabolism = 0.05 * REM + od_minimum_dose = 1 data = 0 - scannable = 0 taste_description = "something" goodmessage = list("You feel like you have nothing to hide.","You feel compelled to spill your secrets.","You feel like you can trust those around you.") badmessage = list() @@ -1005,7 +1218,10 @@ /datum/brain_trauma/severe/pacifism = 25 ) messagedelay = 30 - ingest_mul = 0 //Stomach acid will melt the nanobots + ingest_mul = 1 + +/datum/reagent/mental/truthserum/overdose(var/mob/living/carbon/M, var/alien) + M.add_chemical_effect(CE_EMETIC, dose / 6) /datum/reagent/mental/vaam name = "V'krexi Amino Acid Mixture" @@ -1051,7 +1267,8 @@ reagent_state = LIQUID color = "#008000" metabolism = 0.0016 * REM - overdose = 3 + overdose = 5 + od_minimum_dose = 3 data = 0 taste_description = "sugar" goodmessage = list("You feel pleasantly warm.","You feel like you've been basking in the sun.","You feel focused and warm...") @@ -1078,9 +1295,9 @@ description = "Cataleptinol is a highly advanced, expensive medication capable of regenerating the most damaged of brain tissues. Cataleptinol is used in the treatment of dumbness, cerebral blindness, cerebral paralysis and aphasia. The drug is more effective when the patient's core temperature is below 170K." reagent_state = LIQUID color = "#FFFF00" - metabolism = REM * 2 //0.4 - overdose = REAGENTS_OVERDOSE - scannable = 1 + metabolism = REM //0.2u/tick + overdose = 15 + scannable = TRUE taste_description = "bitterness" metabolism_min = REM * 0.25 var/list/curable_traumas = list( @@ -1092,18 +1309,28 @@ ) /datum/reagent/cataleptinol/affect_blood(var/mob/living/carbon/human/M, var/alien, var/removed) - M.add_chemical_effect(CE_PAINKILLER, 10) + M.dizziness = max(100, M.dizziness) + M.make_dizzy(5) var/chance = dose*removed if(M.bodytemperature < 170) chance = (chance*4) + 5 - M.add_chemical_effect(CE_BRAIN_REGEN, 30*removed) + M.add_chemical_effect(CE_BRAIN_REGEN, 30) //1 unit of cryo-tube Cataleptinol will raise brain activity by 10%. else - M.add_chemical_effect(CE_BRAIN_REGEN, 10*removed) + M.add_chemical_effect(CE_BRAIN_REGEN, 20) //1 unit of Cataleptinol will raise brain activity by 5%. if(prob(chance)) M.cure_trauma_type(pick(curable_traumas)) +/datum/reagent/cataleptinol/overdose(var/mob/living/carbon/M, var/alien, var/removed) + M.hallucination = max(M.hallucination, 15) + var/obj/item/organ/internal/brain/B = M.internal_organs_by_name[BP_BRAIN] + if(B && M.species && M.species.has_organ[BP_BRAIN] && !isipc(M)) + if(prob(dose / 2) && !B.has_trauma_type(BRAIN_TRAUMA_SEVERE) && !B.has_trauma_type(BRAIN_TRAUMA_MILD) && !B.has_trauma_type(BRAIN_TRAUMA_SPECIAL)) + B.gain_trauma_type(pick(/datum/brain_trauma/severe/paralysis, /datum/brain_trauma/severe/aphasia, /datum/brain_trauma/mild/dumbness, /datum/brain_trauma/mild/muscle_weakness, /datum/brain_trauma/mild/colorblind, /datum/brain_trauma/special/imaginary_friend)) + if(prob(5)) + to_chat(M, SPAN_WARNING(pick("You have a painful headache!", "You feel a throbbing pain behind your eyes!"))) + ..() //Things that are not cured/treated by medication: @@ -1119,13 +1346,13 @@ description = "Fluvectionem is a complex anti-toxin medication that is capable of purging the bloodstream of toxic reagents. The drug is capable of neutralising the most difficult of compounds and acts very fast, however it is inefficient and results in benign waste products that can be damaging to the liver." color = "#222244" metabolism = 0.5 * REM - overdose = 30 - scannable = 1 + overdose = REAGENTS_OVERDOSE + scannable = TRUE taste_description = "thick salt" reagent_state = SOLID /datum/reagent/fluvectionem/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - var/is_overdosed = overdose && (dose > overdose) + var/is_overdosed = overdose && (volume > overdose) && (dose > od_minimum_dose) if(is_overdosed) removed *= 2 @@ -1154,7 +1381,7 @@ color = "#550055" metabolism = 2 * REM overdose = 10 - scannable = 1 + scannable = TRUE taste_description = "coarse dust" reagent_state = SOLID @@ -1173,17 +1400,30 @@ break H.adjustOxyLoss(2*removed) //Every unit deals 2 oxy damage - if(prob(75)) //Cough uncontrolably + if(prob(50)) //Cough uncontrolably. H.emote("cough") H.add_chemical_effect(CE_PNEUMOTOXIC, 0.2*removed) . = ..() +/datum/reagent/pulmodeiectionem/affect_ingest(var/mob/living/carbon/human/H, var/alien, var/removed) + if(volume > 5) + if(prob(50)) + H.visible_message("[H] splutters, coughing up a cloud of purple dust.", "You cough up a cloud of purple dust.") + volume = volume - 10 + else + H.adjustOxyLoss(2) + H.add_chemical_effect(CE_PNEUMOTOXIC, 0.1) + +/datum/reagent/pulmodeiectionem/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + M.adjustToxLoss(2 * removed) + M.add_chemical_effect(CE_ITCH, dose) + /datum/reagent/pneumalin name = "Pneumalin" description = "Pneumalin is a powerful, organ-regenerative medication that increases the rate at which lung tissues are regenerated. Pneumalin only works when inhaled, and overdosing can lead to severe bradycardia." color = "#8154b4" overdose = 15 - scannable = 1 + scannable = TRUE taste_description = "fine dust" reagent_state = SOLID @@ -1204,11 +1444,11 @@ /datum/reagent/rezadone name = "Rezadone" - description = "Rezadone is an extremely expensive, ground-breaking miracle drug that is widely. The compound is capable of treating all kinds of physical damage, disfiguration, as well as genetic damage. Excessive consumption of rezadone can lead to severe disorientation." + description = "Rezadone is an extremely expensive, ground-breaking miracle drug. The compound is capable of treating all kinds of physical damage, disfiguration, as well as genetic damage. Excessive consumption of rezadone can lead to severe disorientation." reagent_state = SOLID color = "#669900" overdose = REAGENTS_OVERDOSE - scannable = 1 + scannable = TRUE taste_description = "sickness" /datum/reagent/rezadone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) @@ -1228,7 +1468,7 @@ reagent_state = LIQUID color = "#280f0b" overdose = REAGENTS_OVERDOSE - scannable = 1 + scannable = TRUE taste_description = "sweet syrup" /datum/reagent/verunol/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) @@ -1277,7 +1517,7 @@ reagent_state = LIQUID color = "#008000" overdose = REAGENTS_OVERDOSE - scannable = 1 + scannable = TRUE taste_description = "bitterness" /datum/reagent/adipemcina/affect_blood(var/mob/living/carbon/human/M, var/alien, var/removed) @@ -1288,33 +1528,37 @@ ..() /datum/reagent/adipemcina/overdose(var/mob/living/carbon/human/M, var/alien) + M.add_chemical_effect(CE_EMETIC, dose / 6) if(istype(M)) if(prob(25)) M.add_chemical_effect(CE_HEPATOTOXIC, 1) - M.vomit() /datum/reagent/saline - name = "Saline" - description = "A liquid compound that restores hydration when injected directly into the bloodstream. Excellent at solving severe hydration problems. Yes, it's literally just saline." + name = "Saline Plus" + description = "Saline Plus, or Vaughan's Saline Solution, is an expensive improvement upon the various saline solutions of old. Saline Plus has wide clinical applications in the treatment of dehydration and hypovolaemia, with no more debates as to whether it is effective or not." reagent_state = LIQUID - color = "#1ca9c9" - taste_description = "salty water" + scannable = TRUE + metabolism = REM * 4 + overdose = 5 // Low overdose and fast metabolism to necessitate IV drip usage + color = "#0064C877" + taste_description = "premium salty water" unaffected_species = IS_MACHINE + ingest_mul = 0 + breathe_mul = 0 /datum/reagent/saline/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - if( (M.hydration > M.max_hydration) > CREW_HYDRATION_OVERHYDRATED) + if((M.hydration > M.max_hydration) > CREW_HYDRATION_OVERHYDRATED) M.adjustHydrationLoss(-removed*2) else M.adjustHydrationLoss(-removed*5) - -/datum/reagent/coagulant - name = "Coagulant" - description = "A chemical that can temporarily stop the blood loss caused by internal wounds." - reagent_state = LIQUID - color = "#8b0000" - overdose = REAGENTS_OVERDOSE - taste_description = "bitterness" - fallback_specific_heat = 1 + if(volume < 2) + M.add_chemical_effect(CE_BLOODRESTORE, 4 * removed) + +/datum/reagent/saline/overdose(var/mob/living/carbon/M, var/alien) + M.confused = max(M.confused, 20) + M.make_jittery(5) + if(prob(dose / 2)) + M.emote("twitch") /datum/reagent/adrenaline name = "Adrenaline" @@ -1323,10 +1567,12 @@ fallback_specific_heat = 1 reagent_state = LIQUID color = "#c8a5dc" - scannable = 1 + scannable = TRUE overdose = 20 metabolism = 0.1 value = 2 + breathe_mul = 0 + ingest_mul = 0 /datum/reagent/adrenaline/affect_blood(var/mob/living/carbon/human/M, var/alien, var/removed) if(alien == IS_DIONA) @@ -1358,7 +1604,7 @@ if(ishuman(M)) if(M && M.stat == DEAD) M.adjustOxyLoss(-rand(15,20)) - M.visible_message("\The [M] shudders violently!") + M.visible_message(SPAN_DANGER("\The [M] shudders violently!")) M.stat = 0 /datum/reagent/pacifier @@ -1366,16 +1612,26 @@ description = "Paxazide is an expensive and unethical, psychoactive drug used to pacify people, suppressing regions of the brain responsible for anger and violence. Paxazide can be addictive due to its tranquilising effects, though withdrawal symptoms are scarce." reagent_state = LIQUID color = "#1ca9c9" + overdose = REAGENTS_OVERDOSE taste_description = "numbness" /datum/reagent/pacifier/affect_blood(var/mob/living/carbon/H, var/alien, var/removed) H.add_chemical_effect(CE_PACIFIED, 1) +/datum/reagent/pacifier/overdose(var/mob/living/carbon/H, var/alien) + H.add_chemical_effect(CE_EMETIC, dose / 6) + /datum/reagent/rmt name = "Regenerative-Muscular Tissue Supplements" description = "RMT Supplement is a bioengineered, fast-acting growth factor that specifically helps recover bone and muscle mass caused by prolonged zero-gravity adaptations. It can also be used to treat chronic muscle weakness." reagent_state = LIQUID + scannable = TRUE color = "#AA8866" + overdose = REAGENTS_OVERDOSE metabolism = 0.2 * REM taste_description = "sourness" fallback_specific_heat = 1 + +/datum/reagent/rmt/overdose(var/mob/living/carbon/H, var/alien) + if(prob(2)) + to_chat(H, SPAN_WARNING(pick("Your muscles are stinging a bit.", "Your muscles ache."))) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm index 2c18c714afd..ef6d3f7fcb4 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm @@ -1,7 +1,7 @@ /* Paint and crayons */ /datum/reagent/crayon_dust - name = "Crayon dust" + name = "Crayon Dust" description = "Intensely coloured powder obtained by grinding crayons." reagent_state = LIQUID color = "#888888" @@ -10,42 +10,42 @@ fallback_specific_heat = 0.4 /datum/reagent/crayon_dust/red - name = "Red crayon dust" + name = "Red Crayon Dust" color = "#FE191A" taste_description = "chalky strawberry wax" /datum/reagent/crayon_dust/orange - name = "Orange crayon dust" + name = "Orange Crayon Dust" color = "#FFBE4F" taste_description = "chalky orange peels" /datum/reagent/crayon_dust/yellow - name = "Yellow crayon dust" + name = "Yellow Crayon Dust" color = "#FDFE7D" taste_description = "chalky lemon rinds" /datum/reagent/crayon_dust/green - name = "Green crayon dust" + name = "Green Crayon Dust" color = "#18A31A" taste_description = "chalky lime rinds" /datum/reagent/crayon_dust/blue - name = "Blue crayon dust" + name = "Blue Crayon Dust" color = "#247CFF" taste_description = "chalky blueberry skins" /datum/reagent/crayon_dust/purple - name = "Purple crayon dust" + name = "Purple Crayon Dust" color = "#CC0099" taste_description = "chalky grape skins" /datum/reagent/crayon_dust/grey //Mime - name = "Grey crayon dust" + name = "Grey Crayon Dust" color = "#808080" taste_description = "chalky crushed dreams" /datum/reagent/crayon_dust/brown //Rainbow - name = "Brown crayon dust" + name = "Brown Crayon Dust" color = "#846F35" taste_description = "raw, powerful creativity" @@ -255,7 +255,7 @@ taste_description = "metal" /datum/reagent/foaming_agent // Metal foaming agent. This is lithium hydride. Add other recipes (e.g. LiH + H2O -> LiOH + H2) eventually. - name = "Foaming agent" + name = "Foaming Agent" description = "A agent that yields metallic foam when mixed with light metal and a strong acid." reagent_state = SOLID color = "#664B63" @@ -287,7 +287,7 @@ M.adjustFireLoss(3 * removed) /datum/reagent/spacecleaner - name = "Space cleaner" + name = "Space Cleaner" description = "A compound used to clean things. Now with 50% more sodium hypochlorite!" reagent_state = LIQUID color = "#A5F0EE" @@ -609,7 +609,7 @@ description = "This impossible substance slowly converts from a liquid into actual light." reagent_state = LIQUID color = "#ffff40" - scannable = 1 + scannable = TRUE metabolism = REM * 0.25 taste_description = "bottled fire" var/datum/modifier/modifier @@ -690,7 +690,7 @@ /datum/reagent/bluespace_dust/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) if(prob(25)) M.make_jittery(5) - to_chat(M, "You feel unstable...") + to_chat(M, SPAN_WARNING("You feel unstable...")) if(prob(10)) do_teleport(M, get_turf(M), 5, asoundin = 'sound/effects/phasein.ogg') @@ -720,7 +720,7 @@ I.canremove = 0 I.desc += " It appears to glisten with some gluey substance." remove_self(10*I.w_class) - I.visible_message("[I] begins to glisten with some gluey substance.") + I.visible_message(SPAN_NOTICE("[I] begins to glisten with some gluey substance.")) /datum/reagent/usolve name = "Universal Solvent" @@ -735,7 +735,7 @@ var/obj/item/I = O I.canremove = initial(I.canremove) I.desc = initial(I.desc) - I.visible_message("A thin shell of glue cracks off of [I].") + I.visible_message(SPAN_NOTICE("A thin shell of glue cracks off of [I].")) remove_self(10*I.w_class) /datum/reagent/shapesand @@ -756,7 +756,7 @@ mimic.item_state = O.item_state mimic.overlays = O.overlays remove_self(10*O.w_class) - mimic.visible_message("The sand forms into an exact duplicate of [O].") + mimic.visible_message(SPAN_NOTICE("The sand forms into an exact duplicate of [O].")) /obj/item/shapesand name = "shapesand" @@ -769,7 +769,7 @@ return 1 /obj/item/shapesand/afterattack(atom/A, mob/living/user) - to_chat(user, "As you attempt to use the [src], it crumbles into inert sand!") + to_chat(user, SPAN_WARNING("As you attempt to use the [src], it crumbles into inert sand!")) new /obj/item/ore/glass(get_turf(src)) qdel(src) return diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm index 7500492e13f..77263f73da1 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm @@ -149,6 +149,7 @@ name = "Cardox" description = "Cardox is a mildly toxic, expensive, NanoTrasen designed cleaner intended to eliminate liquid phoron stains from suits." reagent_state = LIQUID + scannable = TRUE color = "#EEEEEE" metabolism = 0.3 // 100 seconds for 30 units to metabolise. taste_description = "cherry" @@ -212,7 +213,8 @@ reagent_state = SOLID color = "#FFFFFF" strength = 0 - overdose = REAGENTS_OVERDOSE + overdose = 5 + od_minimum_dose = 20 taste_description = "salt" /datum/reagent/toxin/potassium_chloride/overdose(var/mob/living/carbon/M, var/alien) @@ -233,7 +235,8 @@ reagent_state = SOLID color = "#FFFFFF" strength = 10 - overdose = 20 + overdose = 5 + od_minimum_dose = 20 taste_description = "salt" /datum/reagent/toxin/potassium_chlorophoride/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) @@ -362,7 +365,7 @@ if(locate(/obj/effect/overlay/wallrot) in W) for(var/obj/effect/overlay/wallrot/E in W) qdel(E) - W.visible_message("The fungi are completely dissolved by the solution!") + W.visible_message(SPAN_NOTICE("The fungi are completely dissolved by the solution!")) /datum/reagent/toxin/plantbgone/touch_obj(var/obj/O, var/volume) if(istype(O, /obj/structure/alien/weeds)) @@ -399,7 +402,7 @@ M.losebreath++ /datum/reagent/mutagen - name = "Unstable mutagen" + name = "Unstable Mutagen" description = "Might cause unpredictable mutations. Keep away from children." reagent_state = LIQUID color = "#13BC5E" @@ -443,7 +446,7 @@ if(istype(H) && (H.species.flags & NO_BLOOD)) return if(prob(10)) - to_chat(M, "Your insides are burning!") + to_chat(M, SPAN_DANGER("Your insides are burning!")) M.add_chemical_effect(CE_TOXIN, rand(100, 300) * removed) else if(prob(40)) M.heal_organ_damage(25 * removed, 0) @@ -452,6 +455,7 @@ name = "Soporific" description = "Soporific is highly diluted polysomnine which results in slower and more gradual sedation. This makes the drug ideal at treating insomnia and anxiety disorders, however is generally not reliable for sedation in preparation for surgery except in high doses." reagent_state = LIQUID + scannable = TRUE color = "#009CA8" metabolism = REM * 0.5 overdose = REAGENTS_OVERDOSE @@ -481,9 +485,10 @@ name = "Polysomnine" description = "Polysomnine is a complex drug which rapidly induces sedation in preparation for surgery. Polysomnine's sedative effect is fast acting, and sedated individuals wake up with zero amnesia regarding the events leading up to their sedation, however the only downside is how hard the drug is on the liver." reagent_state = SOLID + scannable = TRUE color = "#000067" metabolism = REM * 0.5 - overdose = REAGENTS_OVERDOSE * 0.5 + overdose = 15 taste_description = "bitterness" breathe_met = REM * 0.5 * 0.5 @@ -530,7 +535,7 @@ if(ishuman(M)) var/mob/living/carbon/human/H = M if(H.species.name != SPECIES_SLIMEPERSON) - to_chat(M, "Your flesh rapidly mutates!") + to_chat(M, SPAN_DANGER("Your flesh rapidly mutates!")) H.set_species(SPECIES_SLIMEPERSON) /datum/reagent/aslimetoxin @@ -543,7 +548,7 @@ /datum/reagent/aslimetoxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) // TODO: check if there's similar code anywhere else if(M.transforming) return - to_chat(M, "Your flesh rapidly mutates!") + to_chat(M, SPAN_DANGER("Your flesh rapidly mutates!")) M.transforming = 1 M.canmove = 0 M.icon = null @@ -633,7 +638,7 @@ M.add_chemical_effect(CE_BERSERK, 1) if(M.a_intent != I_HURT) M.a_intent_change(I_HURT) - if(prob(20)) + if(prob(10)) M.add_chemical_effect(CE_NEUROTOXIC, 5*removed) /datum/reagent/toxin/berserk/Destroy() @@ -646,15 +651,45 @@ reagent_state = LIQUID color = "#800080" strength = 5 + overdose = 5 //5 units per ghostmushroom. + od_minimum_dose = 1 taste_description = "acid" - metabolism = REM + metabolism = REM * 0.5 unaffected_species = IS_DIONA | IS_MACHINE + var/datum/modifier/modifier /datum/reagent/toxin/spectrocybin/affect_blood(var/mob/living/carbon/M, var/removed) ..() - M.hallucination = max(M.hallucination, 50) - if(prob(10)) - M.see_invisible = SEE_INVISIBLE_CULT + if(!(volume > 5)) + M.hallucination = max(M.hallucination, 20) + if(prob(20)) + M.see_invisible = SEE_INVISIBLE_CULT + if(dose < 5) + if(prob(10)) + M.emote("shiver") + to_chat(M, SPAN_GOOD(pick("You hear the clinking of dinner plates and laughter.", "You hear a distant voice of someone you know talking to you.", "Fond memories of a departed loved one flocks to your mind.", "You feel the reassuring presence of a departed loved one.", "You feel a hand squeezing yours."))) + +/datum/reagent/toxin/spectrocybin/overdose(var/mob/living/carbon/M) + M.see_invisible = SEE_INVISIBLE_CULT + M.make_jittery(5) + if(dose < 5) + if(prob(5)) + M.visible_message("[M] trembles uncontrollably.", "You tremble uncontrollably.") + to_chat(M, SPAN_CULT(pick("You feel fingers tracing up your back.", "You hear the distant wailing and sobbing of a departed loved one.", "You feel like you are being closely watched.", "You hear the hysterical laughter of a departed loved one.", "You no longer feel the reassuring presence of a departed loved one.", "You feel a hand taking hold of yours, digging its nails into you as it clings on."))) + else + if(!modifier) + modifier = M.add_modifier(/datum/modifier/berserk, MODIFIER_REAGENT, src, _strength = 1, override = MODIFIER_OVERRIDE_STRENGTHEN) + M.hallucination = 0 //Brings down hallucination quickly to prevent message spam from being switched between harm and help by hallucinoatory pacification and berserk. + M.add_chemical_effect(CE_BERSERK, 1) + if(M.a_intent != I_HURT) + M.a_intent_change(I_HURT) + if(prob(10)) + M.emote(pick("shiver", "twitch")) + to_chat(M, SPAN_CULT(pick("You feel a cold and threatening air wrapping around you.", "Whispering shadows, ceaseless in their demands, twist your thoughts...", "The whispering, anything to make them stop!", "Your head spins amid the cacophony of screaming, wailing and maniacal laughter of distant loved ones.", "You feel vestiges of decaying souls cling to you, trying to re-enter the world of the living."))) + +/datum/reagent/toxin/spectrocybin/Destroy() + QDEL_NULL(modifier) + return ..() /datum/reagent/toxin/trioxin name = "Trioxin" diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 808825ec446..24d52202d0c 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -327,12 +327,19 @@ required_reagents = list(/datum/reagent/dexalin = 1, /datum/reagent/carbon = 1, /datum/reagent/iron = 1) result_amount = 3 +/datum/chemical_reaction/butazoline + name = "Butazoline" + id = "butazoline" + result = /datum/reagent/butazoline + required_reagents = list(/datum/reagent/bicaridine = 1, /datum/reagent/aluminum = 1, /datum/reagent/acid/hydrochloric = 1) + result_amount = 3 + /datum/chemical_reaction/bicaridine name = "Bicaridine" id = "bicaridine" result = /datum/reagent/bicaridine required_reagents = list(/datum/reagent/inaprovaline = 1, /datum/reagent/carbon = 1) - inhibitors = list(/datum/reagent/sugar = 1) // Messes with inaprovaline + inhibitors = list(/datum/reagent/sugar = 1) //Messes with inaprovaline result_amount = 2 /datum/chemical_reaction/hyperzine @@ -619,10 +626,11 @@ result_amount = 2 /datum/chemical_reaction/saline - name = "Saline" + name = "Saline Plus" id = "saline" result = /datum/reagent/saline required_reagents = list(/datum/reagent/sugar = 0.4, /datum/reagent/water = 1, /datum/reagent/sodiumchloride = 0.9) + catalysts = list(/datum/reagent/toxin/phoron = 5) result_amount = 1 /datum/chemical_reaction/cataleptinol @@ -1660,6 +1668,7 @@ result = null required_reagents = list(/datum/reagent/drink/milk/soymilk = 10) catalysts = list(/datum/reagent/enzyme = 5) + inhibitors = list(/datum/reagent/sodiumchloride = 1) // To prevent conflict with Soy Sauce recipe. result_amount = 1 /datum/chemical_reaction/tofu/on_reaction(var/datum/reagents/holder, var/created_volume) @@ -1705,7 +1714,8 @@ name = "Soy Sauce" id = "soysauce" result = /datum/reagent/nutriment/soysauce - required_reagents = list(/datum/reagent/drink/milk/soymilk = 4, /datum/reagent/acid = 1) + required_reagents = list(/datum/reagent/drink/milk/soymilk = 4, /datum/reagent/sodiumchloride = 1) + catalysts = list(/datum/reagent/enzyme = 5) result_amount = 5 /datum/chemical_reaction/ketchup diff --git a/code/modules/reagents/dispenser/cartridge_presets.dm b/code/modules/reagents/dispenser/cartridge_presets.dm index 6ff626cb6ab..855944e1dad 100644 --- a/code/modules/reagents/dispenser/cartridge_presets.dm +++ b/code/modules/reagents/dispenser/cartridge_presets.dm @@ -97,6 +97,8 @@ hyronalin spawn_reagent = /datum/reagent/hyronalin oculine spawn_reagent = /datum/reagent/oculine kelotane spawn_reagent = /datum/reagent/kelotane + butazoline spawn_reagent = /datum/reagent/butazoline + saline spawn_reagent = /datum/reagent/saline leporazine spawn_reagent = /datum/reagent/leporazine inaprov spawn_reagent = /datum/reagent/inaprovaline oxycomorphine spawn_reagent = /datum/reagent/oxycomorphine diff --git a/code/modules/reagents/dispenser/dispenser_presets.dm b/code/modules/reagents/dispenser/dispenser_presets.dm index d4d274e55dd..34066f04bcb 100644 --- a/code/modules/reagents/dispenser/dispenser_presets.dm +++ b/code/modules/reagents/dispenser/dispenser_presets.dm @@ -34,6 +34,8 @@ /obj/item/reagent_containers/chem_disp_cartridge/sterilizine, /obj/item/reagent_containers/chem_disp_cartridge/leporazine, /obj/item/reagent_containers/chem_disp_cartridge/kelotane, + /obj/item/reagent_containers/chem_disp_cartridge/butazoline, + /obj/item/reagent_containers/chem_disp_cartridge/saline, /obj/item/reagent_containers/chem_disp_cartridge/dermaline, /obj/item/reagent_containers/chem_disp_cartridge/dexalin, /obj/item/reagent_containers/chem_disp_cartridge/dexalin_p, diff --git a/code/modules/reagents/reagent_containers/glass/bottle.dm b/code/modules/reagents/reagent_containers/glass/bottle.dm index 4d94ca44554..67c261995c0 100644 --- a/code/modules/reagents/reagent_containers/glass/bottle.dm +++ b/code/modules/reagents/reagent_containers/glass/bottle.dm @@ -11,7 +11,7 @@ ) icon_state = null item_state = "bottle" - amount_per_transfer_from_this = 10 + amount_per_transfer_from_this = 5 possible_transfer_amounts = list(5,10,15,25,30,60) flags = 0 volume = 60 @@ -97,6 +97,12 @@ icon_state = "bottle-4" reagents_to_add = list(/datum/reagent/dylovene = 60) +/obj/item/reagent_containers/glass/bottle/saline + name = "saline bottle" + desc = "A small bottle of saline for attaching to drips. Re-hydrates a patient and helps with increasing blood volume." + icon_state = "bottle-3" + reagents_to_add = list(/datum/reagent/saline = 60) + /obj/item/reagent_containers/glass/bottle/mutagen name = "unstable mutagen bottle" desc = "A small bottle of unstable mutagen. Randomly changes the DNA structure of whoever comes in contact." diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index aa898976f1f..21e55862262 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -168,13 +168,21 @@ update_icon() return +/obj/item/reagent_containers/hypospray/autoinjector/sideeffectbgone + name = "sideeffects-be-gone! autoinjector" + desc = "A special cocktail designed to counter the side-effects of various drugs. Has 2 uses." + volume = 30 + amount_per_transfer_from_this = 15 + + reagents_to_add = list(/datum/reagent/synaptizine = 5, /datum/reagent/cetahydramine = 10, /datum/reagent/oculine = 5, /datum/reagent/ethylredoxrazine = 10) + /obj/item/reagent_containers/hypospray/autoinjector/stimpack name = "stimpack" desc = "A simple chemical cocktail of hyperzine and mortaphenyl designed to boost efficiency by 6,000% (estimated). Hoo-rah!" volume = 20 amount_per_transfer_from_this = 20 - reagents_to_add = list(/datum/reagent/hyperzine = 12, /datum/reagent/mortaphenyl = 8) + reagents_to_add = list(/datum/reagent/hyperzine = 12, /datum/reagent/mortaphenyl = 6, /datum/reagent/synaptizine = 2) /obj/item/reagent_containers/hypospray/autoinjector/survival name = "survival autoinjector" @@ -182,7 +190,7 @@ volume = 35 amount_per_transfer_from_this = 35 - reagents_to_add = list(/datum/reagent/tricordrazine = 15, /datum/reagent/inaprovaline = 5, /datum/reagent/dexalin/plus = 5, /datum/reagent/oxycomorphine = 5, /datum/reagent/mental/corophenidate = 5) + reagents_to_add = list(/datum/reagent/tricordrazine = 15, /datum/reagent/inaprovaline = 5, /datum/reagent/dexalin/plus = 5, /datum/reagent/oxycomorphine = 3, /datum/reagent/synaptizine = 2, /datum/reagent/mental/corophenidate = 5) /obj/item/reagent_containers/hypospray/combat name = "combat hypospray" diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index 998be843796..9c8165c93dd 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -87,122 +87,133 @@ //Pills /obj/item/reagent_containers/pill/antitox - name = "anti-toxins pill" + name = "Anti-toxins Pill" desc = "Neutralizes many common toxins." icon_state = "pill17" - reagents_to_add = list(/datum/reagent/dylovene = 25) + reagents_to_add = list(/datum/reagent/dylovene = 10) /obj/item/reagent_containers/pill/tox - name = "toxins pill" + name = "Toxins Pill" desc = "Highly toxic." icon_state = "pill5" reagents_to_add = list(/datum/reagent/toxin = 50) /obj/item/reagent_containers/pill/cyanide - name = "cyanide pill" + name = "Cyanide Pill" desc = "Don't swallow this." icon_state = "pill5" reagents_to_add = list(/datum/reagent/toxin/cyanide = 50) /obj/item/reagent_containers/pill/adminordrazine - name = "adminordrazine pill" + name = "Adminordrazine Pill" desc = "It's magic. We don't have to explain it." icon_state = "pill16" reagents_to_add = list(/datum/reagent/adminordrazine = 50) /obj/item/reagent_containers/pill/stox - name = "sleeping pill" + name = "Sleeping Pill" desc = "Commonly used to treat insomnia." icon_state = "pill8" reagents_to_add = list(/datum/reagent/soporific = 15) /obj/item/reagent_containers/pill/kelotane - name = "kelotane pill" - desc = "Used to treat burns." + name = "Kelotane Pill" + desc = "Used to treat minor burns." icon_state = "pill11" - reagents_to_add = list(/datum/reagent/kelotane = 15) + reagents_to_add = list(/datum/reagent/kelotane = 10) /obj/item/reagent_containers/pill/perconol - name = "perconol pill" - desc = "A painkiller for the ages. Chewables!" + name = "Perconol Pill" + desc = "A light painkiller available over-the-counter." icon_state = "pill8" - reagents_to_add = list(/datum/reagent/perconol = 15) - + reagents_to_add = list(/datum/reagent/perconol = 10) /obj/item/reagent_containers/pill/mortaphenyl - name = "mortaphenyl pill" + name = "Mortaphenyl Pill" desc = "A mortaphenyl pill, it's a potent painkiller." icon_state = "pill8" - reagents_to_add = list(/datum/reagent/mortaphenyl = 15) + reagents_to_add = list(/datum/reagent/mortaphenyl = 10) /obj/item/reagent_containers/pill/corophenidate - name = "corophenidate pill" + name = "Corophenidate Pill" desc = "Improves the ability to concentrate." icon_state = "pill8" - reagents_to_add = list(/datum/reagent/mental/corophenidate = 15) + reagents_to_add = list(/datum/reagent/mental/corophenidate = 5) /obj/item/reagent_containers/pill/minaphobin - name = "minaphobin pill" - desc = "Mild anti-depressant." + name = "Minaphobin Pill" + desc = "Used to treat anxiety disorders and depression." icon_state = "pill8" - reagents_to_add = list(/datum/reagent/mental/minaphobin = 15) + reagents_to_add = list(/datum/reagent/mental/minaphobin = 5) /obj/item/reagent_containers/pill/inaprovaline - name = "inaprovaline pill" - desc = "Used to stabilize patients." + name = "Inaprovaline Pill" + desc = "Used to stabilize heart activity." icon_state = "pill20" - reagents_to_add = list(/datum/reagent/inaprovaline = 30) + reagents_to_add = list(/datum/reagent/inaprovaline = 10) /obj/item/reagent_containers/pill/dexalin - name = "dexalin pill" + name = "Dexalin Pill" desc = "Used to treat oxygen deprivation." icon_state = "pill16" reagents_to_add = list(/datum/reagent/dexalin = 15) /obj/item/reagent_containers/pill/dexalin_plus - name = "dexalin Plus pill" + name = "Dexalin Plus Pill" desc = "Used to treat extreme oxygen deprivation." icon_state = "pill8" reagents_to_add = list(/datum/reagent/dexalin/plus = 15) /obj/item/reagent_containers/pill/dermaline - name = "dermaline pill" - desc = "Used to treat burn wounds." + name = "Dermaline Pill" + desc = "Used to treat severe burn wounds." icon_state = "pill12" - reagents_to_add = list(/datum/reagent/dermaline = 15) + reagents_to_add = list(/datum/reagent/dermaline = 10) /obj/item/reagent_containers/pill/dylovene - name = "dylovene pill" + name = "Dylovene Pill" desc = "A broad-spectrum anti-toxin." icon_state = "pill13" reagents_to_add = list(/datum/reagent/dylovene = 15) -/obj/item/reagent_containers/pill/bicaridine - name = "bicaridine pill" - desc = "Used to treat physical injuries." +/obj/item/reagent_containers/pill/butazoline + name = "Butazoline Pill" + desc = "Used to treat major injuries and bleeding." icon_state = "pill18" - reagents_to_add = list(/datum/reagent/bicaridine = 20) + reagents_to_add = list(/datum/reagent/butazoline = 10) + +/obj/item/reagent_containers/pill/bicaridine + name = "Bicaridine Pill" + desc = "Used to treat minor injuries and bleeding." + icon_state = "pill18" + reagents_to_add = list(/datum/reagent/bicaridine = 10) /obj/item/reagent_containers/pill/happy - name = "happy pill" + name = "Happy Pill" desc = "Happy happy joy joy!" icon_state = "pill18" reagents_to_add = list(/datum/reagent/space_drugs = 15, /datum/reagent/sugar = 15) /obj/item/reagent_containers/pill/zoom - name = "zoom pill" + name = "Zoom Pill" desc = "Zoooom!" icon_state = "pill18" reagents_to_add = list(/datum/reagent/impedrezene = 10, /datum/reagent/synaptizine = 5, /datum/reagent/hyperzine = 5) +obj/item/reagent_containers/pill/tranquility + name = "Tranquility Pill" + desc = "Peace, at last." + icon_state = "pill8" + reagents_to_add = list(/datum/reagent/mental/neurapan = 15, /datum/reagent/impedrezene = 10) + /obj/item/reagent_containers/pill/thetamycin - name = "thetamycin pill" - desc = "Contains theta-lactam antibiotics." + name = "Thetamycin Pill" + desc = "Used to treat infections and septicaemia." icon_state = "pill19" reagents_to_add = list(/datum/reagent/thetamycin = 15) /obj/item/reagent_containers/pill/bio_vitamin - name = "vitamin pill" + name = "Vitamin Pill" desc = "Contains a meal's worth of nutrients." icon_state = "pill11" reagents_to_add = list(/datum/reagent/nutriment = 20) @@ -212,13 +223,13 @@ . = ..() /obj/item/reagent_containers/pill/rmt - name = "regenerative-muscular tissue supplement pill" + name = "Regenerative-Muscular Tissue Supplement Pill" desc = "Commonly abbreviated to RMT, it contains chemicals rampantly used by those seeking to remedy the effects of prolonged zero-gravity adaptations." icon_state = "pill19" reagents_to_add = list(/datum/reagent/rmt = 15) /obj/item/reagent_containers/pill/cetahydramine - name = "cetahydramine pill" - desc = "Contains modern Cetahydramine, often compared to ancient Benadryl. Helps with sneezing, can cause drowsiness." + name = "Cetahydramine Pill" + desc = "Used to treat coughing, sneezing and itching." icon_state = "pill19" reagents_to_add = list(/datum/reagent/cetahydramine = 5) diff --git a/html/changelogs/chemistry-changes.yml b/html/changelogs/chemistry-changes.yml new file mode 100644 index 00000000000..94451e377c5 --- /dev/null +++ b/html/changelogs/chemistry-changes.yml @@ -0,0 +1,61 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +# balance +# admin +# backend +# security +# refactor +################################# + +# Your name. +author: kermit + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "The majority of medicinal chemicals have added side-effects - nothing too disruptive." + - rscadd: "Added a variety of overdoses to chemicals that were lacking overdoses." + - rscadd: "Some medications now contraindicate one another and should not be taken together." + - rscadd: "Certain chemicals have been totally overhauled to make them more unique or enjoyable to use." + - tweak: "Overdoses are now triggered by volume in the blood and by a small metabolised dose of the drug (defaulting to 5 units)." + - tweak: "The default OD threshold is now 20u. Poor communication between doctors is now more likely to result in ODs." + - tweak: "Alkysine and Cataleptinol will now actually heal the brain at varying rates, as opposed to both treating the same amount of low damage." + - tweak: "The default chemical transfer rates of RIG injectors, Medibots and bottles have been reduced to allow more precise dose measurements." + - tweak: "More medical chemicals will appear on medical scans as opposed to being registered as unknown substances." + - rscadd: "Introducing Butazoline, the dermaline equivalent for treating brute injuries. It cannot treat arterial bleeding like Bicaridine, however." + - tweak: "Saline is now the chief blood restorative medication and only works intravenously at a medium transfer rate." + - tweak: "Iron/Copper/Sulphur pills now restore blood at half their previous rate." + - tweak: "Any combination of mortaphenyl, oxycormorphine and alcholic beverages will be dangerous. Don't mix them." + - tweak: "Dexalin Plus overdoses are now extra toxic to vaurcae - too much oxygen for their gas exchange system to handle at a time." + - tweak: "Soy Sauce is now made with salt instead of sulphuric acid." + - tweak: "Brute First-Aid Kits have had their contents shuffled about to include a health analyser and 2 bicaridine pills." + - rscadd: "Added Mercury, Neurapan and Spectrocybin to the random toxins list which can spawn in maintenance or a traitor toxin kit." + - rscadd: "You can now purchase Sideeffect-Be-Gone autoinjectors from the Traitor Uplink. Combat Medical Kits also contain 1 of these autoinjectors." + - tweak: "Pill bottles which spawn at round-start and in kits now have the dosage of the pills on the label to prevent accidental overdoses." + - spellcheck: "Some chemical typos have been fixed. Uncapitalised chemicals have been capitalised." + - tweak: "You can find all of the chemical changes on the feedback thread (https://forums.aurorastation.org/topic/14761-full-chem-rework-feedback-thread/) while the chemistry wiki page is out of date."