From 6107f69299beabc90a4a6f0df3e5c430815ebe42 Mon Sep 17 00:00:00 2001 From: Cameron Lennox Date: Tue, 24 Feb 2026 18:03:23 -0500 Subject: [PATCH] Chemical splash fixes, distillery fix, and syringe gun fix. (#19219) * Fixes distillery always using atmos air Distillery did not have a return_air() proc, so it would default to the atmos air even when piped. This fixes that. * Fixes syringe guns allowing loading of multiple syringes * Affect_touch changes * Some more changes * Reworks cyanide --- .../projectiles/guns/launcher/syringe_gun.dm | 3 ++ code/modules/reagents/machinery/distillery.dm | 14 ++++-- code/modules/reagents/reagents/_reagents.dm | 6 ++- code/modules/reagents/reagents/dispenser.dm | 1 + code/modules/reagents/reagents/drugs.dm | 2 + code/modules/reagents/reagents/food_drinks.dm | 2 + .../reagents/reagents/food_drinks_vr.dm | 1 + code/modules/reagents/reagents/medicine.dm | 43 +++++++++++++++++++ code/modules/reagents/reagents/medicine_vr.dm | 7 ++- code/modules/reagents/reagents/modifiers.dm | 1 + code/modules/reagents/reagents/other.dm | 12 +++++- code/modules/reagents/reagents/other_vr.dm | 2 + code/modules/reagents/reagents/toxins.dm | 35 +++++++++++---- code/modules/reagents/reagents/virology.dm | 1 + code/modules/reagents/reagents/vore_vr.dm | 8 +++- 15 files changed, 120 insertions(+), 18 deletions(-) diff --git a/code/modules/projectiles/guns/launcher/syringe_gun.dm b/code/modules/projectiles/guns/launcher/syringe_gun.dm index 4be7a18ef20..e166ae65675 100644 --- a/code/modules/projectiles/guns/launcher/syringe_gun.dm +++ b/code/modules/projectiles/guns/launcher/syringe_gun.dm @@ -19,6 +19,9 @@ /obj/item/syringe_cartridge/attackby(obj/item/I, mob/user) if(istype(I, /obj/item/reagent_containers/syringe)) + if(syringe) + to_chat(user, span_warning("[src] already has a syringe loaded!")) + return syringe = I to_chat(user, span_notice("You carefully insert [syringe] into [src].")) user.remove_from_mob(syringe) diff --git a/code/modules/reagents/machinery/distillery.dm b/code/modules/reagents/machinery/distillery.dm index c5d6dd0dc47..198172db2b6 100644 --- a/code/modules/reagents/machinery/distillery.dm +++ b/code/modules/reagents/machinery/distillery.dm @@ -5,7 +5,7 @@ /obj/machinery/portable_atmospherics/powered/reagent_distillery name = "chemical distillery" - desc = "A complex machine utilizing state-of-the-art components to mix chemicals at different temperatures." + desc = "A complex machine utilizing state-of-the-art components to mix chemicals at different temperatures. Can be attached to a connector port to utilize gasses." use_power = USE_POWER_IDLE icon = 'icons/obj/machines/reagent.dmi' @@ -24,7 +24,7 @@ var/current_temp = T20C - var/use_atmos = FALSE // If true, this machine will be connectable to ports, and use gas mixtures as the source of heat, rather than its internal controls. + var/use_atmos = FALSE // If true, this machine will use the temperature of the connected gas mixtures as the source of heat, rather than its internal controls. var/static/radial_examine = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_examine") var/static/radial_use = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_use") @@ -366,6 +366,14 @@ /obj/machinery/portable_atmospherics/powered/reagent_distillery/industrial name = "industrial chemical distillery" - desc = "A gas-operated variant of a chemical distillery. Able to reach much higher, and lower, temperatures through the use of treated gas." + desc = "A gas-operated variant of a chemical distillery. Able to reach much higher, and lower, temperatures through the use of treated gas at the cost of not having an internal heater/cooler." use_atmos = TRUE + + +/obj/machinery/portable_atmospherics/powered/reagent_distillery/return_air() + if(connected_port) + var/obj/machinery/atmospherics/portables_connector/our_port = connected_port + if(our_port.network) + return our_port.network.gases[1] + . = ..() diff --git a/code/modules/reagents/reagents/_reagents.dm b/code/modules/reagents/reagents/_reagents.dm index 4de88a277a0..5ef0ebea885 100644 --- a/code/modules/reagents/reagents/_reagents.dm +++ b/code/modules/reagents/reagents/_reagents.dm @@ -54,6 +54,10 @@ var/glass_center_of_mass_x = 0 var/glass_center_of_mass_y = 0 + ///How much (if any) of this reagent penetrates through skin and into the bloodstream. Ranges from 0 (none at all) to 1 (100% transfer from skin to blood). + ///This is for chemicals that don't have any special touch effects. + var/dermal_absorption = 0 + /datum/reagent/proc/remove_self(var/amount) // Shortcut if(holder) holder.remove_reagent(id, amount) @@ -200,7 +204,7 @@ return /datum/reagent/proc/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) - M.bloodstr.add_reagent(id, removed * 0.25) //Medications that are dermal compatible use affect_touch. Those that aren't apply the reagent to the bloodstream at 25% efficiency. + M.bloodstr.add_reagent(id, removed * dermal_absorption) return /datum/reagent/proc/overdose(var/mob/living/carbon/M, var/alien, var/removed) // Overdose effect. diff --git a/code/modules/reagents/reagents/dispenser.dm b/code/modules/reagents/reagents/dispenser.dm index 22f47cef16a..a82a8c84572 100644 --- a/code/modules/reagents/reagents/dispenser.dm +++ b/code/modules/reagents/reagents/dispenser.dm @@ -483,6 +483,7 @@ scannable = SCANNABLE_ADVANCED color = "#DB5008" metabolism = REM * 2 + dermal_absorption = 0 touch_met = 50 // It's acid! var/power = 5 var/meltdose = 10 // How much is needed to melt diff --git a/code/modules/reagents/reagents/drugs.dm b/code/modules/reagents/reagents/drugs.dm index c88f3361831..46a33cd0de0 100644 --- a/code/modules/reagents/reagents/drugs.dm +++ b/code/modules/reagents/reagents/drugs.dm @@ -21,6 +21,7 @@ reagent_state = LIQUID metabolism = REM * 0.5 ingest_met = REM * 1.5 /// Be very careful with this, ingestion is weird and will spam high/sober messages horribly! + dermal_absorption = 0 mrate_static = TRUE overdose = REAGENTS_OVERDOSE @@ -218,6 +219,7 @@ /datum/reagent/drugs/nicotine name = REAGENT_NICOTINE id = REAGENT_ID_NICOTINE + dermal_absorption = 0.5 //Nicotine patches are REAL description = "A highly addictive stimulant extracted from the tobacco plant." taste_description = "sour staleness" color = "#181818" diff --git a/code/modules/reagents/reagents/food_drinks.dm b/code/modules/reagents/reagents/food_drinks.dm index bd543aff340..cbc1ad35d4b 100644 --- a/code/modules/reagents/reagents/food_drinks.dm +++ b/code/modules/reagents/reagents/food_drinks.dm @@ -871,6 +871,7 @@ scannable = SCANNABLE_ADVANCED description = "A chemical agent used for self-defense and in police work." taste_description = "fire" + dermal_absorption = 0 taste_mult = 10 reagent_state = LIQUID touch_met = 50 // Get rid of it quickly @@ -1025,6 +1026,7 @@ var/adj_sleepy = 0 var/adj_temp = 0 var/water_based = TRUE + dermal_absorption = 0 wiki_flag = WIKI_DRINK supply_conversion_value = REFINERYEXPORT_VALUE_COMMON industrial_use = REFINERYEXPORT_REASON_FOOD diff --git a/code/modules/reagents/reagents/food_drinks_vr.dm b/code/modules/reagents/reagents/food_drinks_vr.dm index 51dca2ce732..9cc78c388a2 100644 --- a/code/modules/reagents/reagents/food_drinks_vr.dm +++ b/code/modules/reagents/reagents/food_drinks_vr.dm @@ -729,6 +729,7 @@ adj_dizzy = 0 adj_drowsy = -5 adj_sleepy = -10 + dermal_absorption = 0.15 //Nukies are build different. glass_name = REAGENT_ID_NUKIE glass_desc = "A drink to perk you up and refresh you!" diff --git a/code/modules/reagents/reagents/medicine.dm b/code/modules/reagents/reagents/medicine.dm index d507224ff64..3a1a373fddf 100644 --- a/code/modules/reagents/reagents/medicine.dm +++ b/code/modules/reagents/reagents/medicine.dm @@ -9,6 +9,7 @@ color = "#00BFFF" overdose = REAGENTS_OVERDOSE * 2 metabolism = REM * 0.2 + dermal_absorption = 0.2 scannable = SCANNABLE_BENEFICIAL supply_conversion_value = REFINERYEXPORT_VALUE_COMMON industrial_use = REFINERYEXPORT_REASON_DRUG @@ -54,6 +55,7 @@ color = "#BF0000" overdose = REAGENTS_OVERDOSE overdose_mod = 0.25 + dermal_absorption = 0.2 scannable = SCANNABLE_BENEFICIAL supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED industrial_use = REFINERYEXPORT_REASON_DRUG @@ -118,6 +120,7 @@ description = "Calcium carbonate is a calcium salt commonly used as an antacid." taste_description = "chalk" reagent_state = SOLID + dermal_absorption = 0 //Solids don't penetrate. color = "#eae6e3" overdose = REAGENTS_OVERDOSE * 0.8 metabolism = REM * 0.4 @@ -139,6 +142,7 @@ description = REAGENT_KELOTANE + " is a drug used to treat burns." taste_description = "bitterness" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#FFA800" overdose = REAGENTS_OVERDOSE scannable = SCANNABLE_BENEFICIAL @@ -161,6 +165,7 @@ taste_description = "bitterness" taste_mult = 1.5 reagent_state = LIQUID + dermal_absorption = 0.2 color = "#FF8000" overdose = REAGENTS_OVERDOSE * 0.5 scannable = SCANNABLE_BENEFICIAL @@ -210,6 +215,7 @@ description = REAGENT_ANTITOXIN + " is a broad-spectrum antitoxin." taste_description = "a roll of gauze" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#00A000" scannable = SCANNABLE_BENEFICIAL supply_conversion_value = REFINERYEXPORT_VALUE_COMMON @@ -233,6 +239,7 @@ id = REAGENT_ID_CARTHATOLINE description = REAGENT_CARTHATOLINE + " is strong evacuant used to treat severe poisoning." reagent_state = LIQUID + dermal_absorption = 0.2 color = "#225722" scannable = SCANNABLE_BENEFICIAL overdose = REAGENTS_OVERDOSE * 0.5 @@ -271,6 +278,7 @@ description = REAGENT_DEXALIN + " is used in the treatment of oxygen deprivation." taste_description = "bitterness" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#0080FF" overdose = REAGENTS_OVERDOSE scannable = SCANNABLE_BENEFICIAL @@ -298,6 +306,7 @@ description = REAGENT_DEXALINP + " is used in the treatment of oxygen deprivation. It is highly effective." taste_description = "bitterness" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#0040FF" overdose = REAGENTS_OVERDOSE * 0.5 overdose_mod = 1.25 @@ -325,6 +334,7 @@ description = REAGENT_TRICORDRAZINE + " is a highly potent stimulant, originally derived from cordrazine. Can be used to treat a wide range of injuries." taste_description = "bitterness" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#8040FF" scannable = SCANNABLE_BENEFICIAL supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED @@ -387,6 +397,7 @@ description = "A chemical mixture with almost magical healing powers. Its main limitation is that the targets body temperature must be under 170K for it to metabolise correctly." taste_description = "overripe bananas" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#8080FF" metabolism = REM * 0.5 mrate_static = TRUE @@ -414,6 +425,7 @@ description = "A liquid compound similar to that used in the cloning process. Can be used to 'finish' the cloning process when used in conjunction with a cryo tube." taste_description = "rotten bananas" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#80BFFF" metabolism = REM * 0.5 mrate_static = TRUE @@ -442,6 +454,7 @@ description = "A liquid compound based upon those used in cloning. Utilized in cases of toxic shock. May cause liver damage." taste_description = "meat" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#6b4de3" metabolism = REM * 0.5 mrate_static = TRUE @@ -483,6 +496,7 @@ description = "A liquid compound based upon that which is used in the cloning process. Utilized primarily in severe cases of toxic shock." taste_description = "meat" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#94B21C" metabolism = REM * 0.5 mrate_static = TRUE @@ -520,6 +534,7 @@ description = "Most probably know this as Tylenol, but this chemical is a mild, simple painkiller." taste_description = "bitterness" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#C8A5DC" overdose = REAGENTS_OVERDOSE * 2 overdose_mod = 0.75 @@ -547,6 +562,7 @@ description = "A simple, yet effective painkiller." taste_description = "sourness" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#CB68FC" overdose = REAGENTS_OVERDOSE overdose_mod = 0.75 @@ -573,6 +589,7 @@ description = "An effective and very addictive painkiller." taste_description = "bitterness" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#800080" overdose = 20 overdose_mod = 0.75 @@ -605,6 +622,7 @@ description = REAGENT_SYNAPTIZINE + " is used to treat various diseases." taste_description = "bitterness" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#99CCFF" metabolism = REM * 0.05 mrate_static = TRUE @@ -638,6 +656,7 @@ description = REAGENT_HYPERZINE + " is a highly effective, long lasting, muscle stimulant." taste_description = "bitterness" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#FF3300" overdose = REAGENTS_OVERDOSE * 0.5 scannable = SCANNABLE_ADVANCED @@ -671,6 +690,7 @@ description = REAGENT_ALKYSINE + " is a drug used to lessen the damage to neurological tissue after a catastrophic injury. Can heal brain tissue." taste_description = "bitterness" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#FFFF66" metabolism = REM * 0.25 overdose = REAGENTS_OVERDOSE @@ -697,6 +717,7 @@ description = "Heals eye damage" taste_description = "dull toxin" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#C8A5DC" overdose = REAGENTS_OVERDOSE scannable = SCANNABLE_BENEFICIAL @@ -723,6 +744,7 @@ description = "Used to encourage recovery of internal organs and nervous systems. Medicate cautiously." taste_description = "bitterness" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#561EC3" overdose = 10 overdose_mod = 1.5 @@ -757,6 +779,7 @@ id = REAGENT_ID_OSTEODAXON description = "An experimental drug used to heal bone fractures." reagent_state = LIQUID + dermal_absorption = 0.2 color = "#C9BCE3" metabolism = REM * 0.5 overdose = REAGENTS_OVERDOSE * 0.5 @@ -791,6 +814,7 @@ id = REAGENT_ID_MYELAMINE description = "Used to rapidly clot hemorrhages by increasing the effectiveness of platelets. An ideal dosage of 10 units will fully heal any internal hemorrhages." reagent_state = LIQUID + dermal_absorption = 0.2 color = "#4246C7" metabolism = REM * 0.75 overdose = REAGENTS_OVERDOSE * 0.5 @@ -841,6 +865,7 @@ description = "Used to repair the tissue of the lungs and similar organs." taste_description = "metallic" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#4444FF" metabolism = REM * 1.5 overdose = 10 @@ -875,6 +900,7 @@ description = "Used to repair the tissues of the digestive system." taste_description = "chalk" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#8B4513" metabolism = REM * 1.5 overdose = 10 @@ -909,6 +935,7 @@ description = "Used to repair the common tissues involved in filtration." taste_description = "glue" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#D2691E" metabolism = REM * 1.5 overdose = 10 @@ -945,6 +972,7 @@ description = "Used to repair the specialized tissues involved in the circulatory system." taste_description = "rust" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#FF4444" metabolism = REM * 1.5 overdose = 10 @@ -976,6 +1004,7 @@ description = "An experimental powder believed to have the ability to prevent any organ rejection." taste_description = "flesh" reagent_state = SOLID + dermal_absorption = 0 color = "#7B4D4F" overdose = 20 overdose_mod = 1.5 @@ -1033,6 +1062,7 @@ description = "A strange, oily powder used by Malish-Katish to prevent organ rejection." taste_description = "mordant" reagent_state = SOLID + dermal_absorption = 0 color = "#84B2B0" metabolism = REM * 0.06 overdose = 20 @@ -1078,6 +1108,7 @@ description = REAGENT_RYETALYN + " can cure DNA, Cloning, and genetic damage via a catalytic process." taste_description = "acid" reagent_state = SOLID + dermal_absorption = 0 scannable = SCANNABLE_BENEFICIAL color = "#004000" overdose = REAGENTS_OVERDOSE @@ -1097,6 +1128,7 @@ description = "A powerful oxidizer that reacts with ethanol." taste_description = "bitterness" reagent_state = SOLID + dermal_absorption = 0 scannable = SCANNABLE_BENEFICIAL color = "#605048" overdose = REAGENTS_OVERDOSE @@ -1133,6 +1165,7 @@ description = REAGENT_HYRONALIN + " is a medicinal drug used to counter the effect of radiation poisoning." taste_description = "bitterness" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#408000" metabolism = REM * 0.25 overdose = REAGENTS_OVERDOSE @@ -1152,6 +1185,7 @@ description = REAGENT_ARITHRAZINE + " is an unstable medication used for the most extreme cases of radiation poisoning." taste_description = "bitterness" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#008000" metabolism = REM * 0.25 overdose = REAGENTS_OVERDOSE @@ -1175,6 +1209,7 @@ description = "An all-purpose antiviral agent." taste_description = "bitterness" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#C1C1C1" metabolism = REM * 0.25 mrate_static = TRUE @@ -1206,6 +1241,7 @@ description = "A wide-spectrum antibiotic drug. Powerful and uncomfortable in equal doses." taste_description = "burnt toast" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#FFB0B0" mrate_static = TRUE overdose = 10 @@ -1276,6 +1312,7 @@ description = "An all-purpose painkilling antibiotic gel." taste_description = "oil" reagent_state = SOLID + dermal_absorption = 0 color = "#C1C1C8" metabolism = REM * 0.4 mrate_static = TRUE @@ -1326,6 +1363,7 @@ description = "Sterilizes wounds in preparation for surgery and thoroughly removes blood. Can additionally be used to prepare a surface for surgery to lower risk of infection." taste_description = "bitterness" reagent_state = LIQUID + dermal_absorption = 0 //Custom touch handling. color = "#C8A5DC" scannable = SCANNABLE_BENEFICIAL touch_met = 5 @@ -1379,6 +1417,7 @@ description = "Leporazine can be use to stabilize an individuals body temperature." taste_description = "bitterness" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#C8A5DC" overdose = REAGENTS_OVERDOSE scannable = SCANNABLE_BENEFICIAL @@ -1404,6 +1443,7 @@ description = "A powder with almost magical properties, this substance can effectively treat genetic damage in humanoids, though excessive consumption has side effects." taste_description = "bitterness" reagent_state = SOLID + dermal_absorption = 0 //solid powder color = "#669900" overdose = REAGENTS_OVERDOSE overdose_mod = 2 @@ -1488,6 +1528,7 @@ description = "A rare plant extract with immense, almost magical healing capabilities. Induces a potent psychoactive state, damaging neurons with prolonged use." taste_description = "honey and sunlight" reagent_state = LIQUID + dermal_absorption = 0.25 color = "#ffb500" overdose = REAGENTS_OVERDOSE * 0.50 supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED @@ -1511,6 +1552,7 @@ description = "A drug used to stablize vat grown bodies. Often used to control the lifespan of biological experiments." // Who else remembers Cybersix? taste_description = "burning metal" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#31d422" overdose = 15 overdose_mod = 1.2 @@ -1572,6 +1614,7 @@ color = "#afeb17" metabolism = 0.05 scannable = SCANNABLE_BENEFICIAL + dermal_absorption = 0.2 description = "A well respected drug used for treatment of schizophrenia in specific." overdose = REAGENTS_OVERDOSE * 2 supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED diff --git a/code/modules/reagents/reagents/medicine_vr.dm b/code/modules/reagents/reagents/medicine_vr.dm index 14cc28d1553..b00da7c8abf 100644 --- a/code/modules/reagents/reagents/medicine_vr.dm +++ b/code/modules/reagents/reagents/medicine_vr.dm @@ -4,6 +4,7 @@ description = "A mild sedative that calms the nerves and relaxes the patient." taste_description = "milk" reagent_state = LIQUID + dermal_absorption = 0.2 //Most medication has a much weaker effect as a patch. color = "#d5e2e5" scannable = SCANNABLE_BENEFICIAL supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED @@ -71,6 +72,7 @@ taste_description = "sparkles" taste_mult = 3 reagent_state = LIQUID + dermal_absorption = 0.2 color = "#750404" overdose = REAGENTS_OVERDOSE * 0.5 scannable = SCANNABLE_BENEFICIAL @@ -103,13 +105,13 @@ M.remove_a_modifier_of_type(/datum/modifier/faux_resleeving_sickness) - /datum/reagent/prussian_blue //We don't have iodine, so prussian blue we go. name = REAGENT_PRUSSIANBLUE id = REAGENT_ID_PRUSSIANBLUE description = "Prussian Blue is a medication used to temporarily pause the effects of radiation poisoning to allow for treatment. Does not treat radiation sickness on its own." taste_description = "salt" reagent_state = SOLID + dermal_absorption = 0.2 //While it /is/ a solid, it's a beneficial medical reagent that should have some use if put into a patch. color = "#003153" //Blue! metabolism = REM * 0.25//20 ticks to do things per unit injected. This means injecting 30u will give you 10 minutes to do what you need. overdose = REAGENTS_OVERDOSE @@ -129,6 +131,7 @@ description = "A chemical compound that causes a dangerously powerful fat-burning reaction." taste_description = "blandness" reagent_state = LIQUID + dermal_absorption = 0.2 scannable = SCANNABLE_BENEFICIAL color = "#47AD6D" overdose = REAGENTS_OVERDOSE @@ -146,6 +149,7 @@ description = "A chemical compound that causes a dangerously powerful fat-adding reaction." taste_description = "blubber" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#61731C" scannable = SCANNABLE_BENEFICIAL overdose = REAGENTS_OVERDOSE @@ -251,6 +255,7 @@ id = REAGENT_ID_GLAMOUR description = "This material is from somewhere else, just being near produces changes." taste_description = "change" + dermal_absorption = 1 //Magic liquid stuff. It immediately clears itself in your system the moment it touches you, so whatever. reagent_state = LIQUID color = "#ffffff" scannable = SCANNABLE_SECRETIVE diff --git a/code/modules/reagents/reagents/modifiers.dm b/code/modules/reagents/reagents/modifiers.dm index 5666fc0ae8b..46e6e36e538 100644 --- a/code/modules/reagents/reagents/modifiers.dm +++ b/code/modules/reagents/reagents/modifiers.dm @@ -8,6 +8,7 @@ description = "A liquid that is capable of causing a prolonged state of heightened aggression and durability." taste_description = "metal" reagent_state = LIQUID + dermal_absorption = 0.2 color = "#ff5555" metabolism = REM scannable = SCANNABLE_SECRETIVE diff --git a/code/modules/reagents/reagents/other.dm b/code/modules/reagents/reagents/other.dm index 7ac38c5fc0f..a9bb3d96ce1 100644 --- a/code/modules/reagents/reagents/other.dm +++ b/code/modules/reagents/reagents/other.dm @@ -5,7 +5,8 @@ id = REAGENT_ID_CRAYONDUST description = "Intensely coloured powder obtained by grinding crayons." taste_description = "powdered wax" - reagent_state = LIQUID + reagent_state = SOLID + dermal_absorption = 0 //no color = "#888888" overdose = 10 scannable = SCANNABLE_ADVANCED @@ -58,6 +59,7 @@ description = "Intensely coloured ink used in markers." taste_description = "extremely bitter" reagent_state = LIQUID + dermal_absorption = 0 //NO color = "#888888" overdose = 10 scannable = SCANNABLE_ADVANCED @@ -115,6 +117,7 @@ description = "This paint will stick to almost any object." taste_description = "chalk" reagent_state = LIQUID + dermal_absorption = 0 //NOOOOOOOOOOO color = "#808080" overdose = REAGENTS_OVERDOSE * 0.5 color_weight = 20 @@ -377,6 +380,7 @@ description = "Adrenaline is a hormone used as a drug to treat cardiac arrest and other cardiac dysrhythmias resulting in diminished or absent cardiac output." taste_description = "bitterness" reagent_state = LIQUID + dermal_absorption = 0.2 scannable = SCANNABLE_BENEFICIAL color = "#C8A5DC" mrate_static = TRUE @@ -397,6 +401,7 @@ taste_description = "water" color = "#E0E8EF" mrate_static = TRUE + dermal_absorption = 0.5 //It's so holy it penetrates into your blood. scannable = SCANNABLE_BENEFICIAL glass_name = "holy water" @@ -518,6 +523,7 @@ description = "Thermite produces an aluminothermic reaction known as a thermite reaction. Can be used to melt walls." taste_description = "sweet tasting metal" reagent_state = SOLID + dermal_absorption = 0 scannable = SCANNABLE_ADVANCED color = "#673910" touch_met = 50 @@ -548,6 +554,7 @@ description = "A compound used to clean things. Now with 50% more sodium hypochlorite!" taste_description = "sourness" reagent_state = LIQUID + dermal_absorption = 0 scannable = SCANNABLE_ADVANCED color = "#A5F0EE" touch_met = 50 @@ -682,7 +689,7 @@ industrial_use = REFINERYEXPORT_REASON_PRECURSOR coolant_modifier = 0.95 -/datum/reagent/nitroglycerin +/datum/reagent/nitroglycerin //This immediately explode as soon as it reacts, so you can't actually obtain this. name = REAGENT_NITROGLYCERIN id = REAGENT_ID_NITROGLYCERIN description = "Nitroglycerin is a heavy, colorless, oily, explosive liquid obtained by nitrating glycerol." @@ -795,6 +802,7 @@ description = "Miniature medical robots that are malfunctioning and cause bodily harm. Fortunately, they cannot self-replicate." taste_description = "metal" reagent_state = SOLID + dermal_absorption = 0.1 //Burrow into the skin and get into your bloodstream. This means 60u splashed on someone (with no losses, given splash is lossy) will give them 6u of nanites. color = "#333333" metabolism = REM * 3 // Broken nanomachines go a bit slower. scannable = 1 diff --git a/code/modules/reagents/reagents/other_vr.dm b/code/modules/reagents/reagents/other_vr.dm index f4eafa1a77b..f16a2edd159 100644 --- a/code/modules/reagents/reagents/other_vr.dm +++ b/code/modules/reagents/reagents/other_vr.dm @@ -3,6 +3,7 @@ id = REAGENT_ID_ADVMUTATIONTOXIN description = "A corruptive toxin produced by slimes. Turns the subject of the chemical into a Promethean." reagent_state = LIQUID + dermal_absorption = 0 //Injection only. color = "#13BC5E" scannable = SCANNABLE_ADVANCED supply_conversion_value = REFINERYEXPORT_VALUE_MASSINDUSTRY @@ -61,6 +62,7 @@ id = REAGENT_ID_FIREFOAM description = "A historical fire suppressant. Originally believed to simply displace oxygen to starve fires, it actually interferes with the combustion reaction itself. Vastly superior to the cheap water-based extinguishers found on most NT vessels." reagent_state = LIQUID + dermal_absorption = 0 //Custom touch handling. As funny as PFAS poisoning is. color = "#A6FAFF" scannable = SCANNABLE_ADVANCED taste_description = "the inside of a fire extinguisher" diff --git a/code/modules/reagents/reagents/toxins.dm b/code/modules/reagents/reagents/toxins.dm index d9766b622e1..7ee11d99c50 100644 --- a/code/modules/reagents/reagents/toxins.dm +++ b/code/modules/reagents/reagents/toxins.dm @@ -12,7 +12,7 @@ filtered_organs = list(O_LIVER, O_KIDNEYS) scannable = SCANNABLE_DIFFICULT var/strength = 4 // How much damage it deals per unit - var/skin_danger = 0.2 // The multiplier for how effective the toxin is when making skin contact. + dermal_absorption = 0 supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED industrial_use = REFINERYEXPORT_REASON_PRECURSOR @@ -28,13 +28,11 @@ M.heal_organ_damage((10/poison_strength) * removed, (10/poison_strength) * removed) //Doses of toxins below 10 units, and 10 strength, are capable of providing useful compounds for repair. M.adjustToxLoss(poison_strength * removed) -/datum/reagent/toxin/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) - affect_blood(M, alien, removed * 0.2) - /datum/reagent/toxin/plasticide name = REAGENT_PLASTICIDE id = REAGENT_ID_PLASTICIDE description = "Liquid plastic, do not eat." + dermal_absorption = 0 taste_description = "plastic" reagent_state = LIQUID color = "#CF3600" @@ -65,6 +63,7 @@ description = "A deadly neurotoxin produced by the dreaded space carp." taste_description = "fish" reagent_state = LIQUID + dermal_absorption = 0.4 color = "#003333" strength = 10 supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED @@ -82,7 +81,7 @@ reagent_state = LIQUID color = "#005555" strength = 8 - skin_danger = 0.4 + dermal_absorption = 0.4 wiki_flag = WIKI_SPOILER supply_conversion_value = REFINERYEXPORT_VALUE_NO industrial_use = REFINERYEXPORT_REASON_BIOHAZARD @@ -105,6 +104,7 @@ name = REAGENT_HYDROPHORON id = REAGENT_ID_HYDROPHORON description = "An exceptionally flammable molecule formed from deuterium synthesis." + dermal_absorption = 1 //same as phoron strength = 80 var/fire_mult = 30 supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED @@ -119,6 +119,7 @@ M.take_organ_damage(0, removed * 0.1) //being splashed directly with hydrophoron causes minor chemical burns if(prob(10 * fire_mult)) M.pl_effects() + ..() /datum/reagent/toxin/hydrophoron/touch_turf(var/turf/simulated/T) if(!istype(T)) @@ -144,6 +145,7 @@ id = REAGENT_ID_LEAD description = "Elemental Lead." color = "#273956" + dermal_absorption = 0 //It's lead. strength = 4 supply_conversion_value = 0.5 SHEET_TO_REAGENT_EQUIVILENT // has sheet value industrial_use = REFINERYEXPORT_REASON_PRECURSOR @@ -181,7 +183,7 @@ color = "#9D14DB" strength = 30 touch_met = 5 - skin_danger = 1 + dermal_absorption = 1 supply_conversion_value = 5 SHEET_TO_REAGENT_EQUIVILENT // has sheet value industrial_use = REFINERYEXPORT_REASON_PHORON coolant_modifier = 0.85 @@ -215,11 +217,12 @@ T.assume_gas(GAS_VOLATILE_FUEL, amount, T20C) remove_self(amount) -/datum/reagent/toxin/cyanide //Fast and Lethal +/datum/reagent/toxin/cyanide //Fast and Lethal //Fast and lethal my ASS. This shit takes 20 seconds to deal 15 toxins. Eating crayons kills you faster. name = REAGENT_CYANIDE id = REAGENT_ID_CYANIDE - description = "A highly toxic chemical." + description = "A highly toxic chemical. Prevents cellular respiration, causing moderate amounts of toxins from cell death, the inability to breathe, and eventual loss of consciousness." taste_description = "almond" + dermal_absorption = 0 //Splash someone and insta-KO them? No. Make zombie/lich powder for that. taste_mult = 0.6 reagent_state = LIQUID color = "#CF3600" @@ -231,13 +234,16 @@ /datum/reagent/toxin/cyanide/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) ..() M.adjustOxyLoss(10 * removed) - M.Sleeping(1) + M.AdjustLosebreath(5) //Adjusting oxyloss with no losebreath adjustment is useless. + if(dose > 5) //Puts you to sleep if its in your system for too long. This is equivalent to 100 seconds (50 ticks). By this point, you have 75 toxins, ~100 oxyloss, and are good as dead w/o treatment. + M.Sleeping(1) /datum/reagent/toxin/mold name = REAGENT_MOLD id = REAGENT_ID_MOLD description = "A mold is a fungus that causes biodegradation of natural materials. This variant contains mycotoxins, and is dangerous to humans." taste_description = "mold" + dermal_absorption = 0 reagent_state = SOLID strength = 5 wiki_flag = WIKI_SPOILER @@ -254,6 +260,7 @@ id = REAGENT_ID_EXPIREDMEDICINE description = "Some form of liquid medicine that is well beyond its shelf date. Administering it now would cause illness." taste_description = "bitterness" + dermal_absorption = 0 reagent_state = LIQUID strength = 5 filtered_organs = list(O_SPLEEN) @@ -276,6 +283,7 @@ description = "A homemade stimulant with some serious side-effects." taste_description = "sweetness" taste_mult = 1.8 + dermal_absorption = 0.2 //Made with fertilizer, so some penetration ala organophosphate. color = "#d0583a" metabolism = REM * 3 overdose = 10 @@ -308,6 +316,7 @@ id = REAGENT_ID_POTASSIUMCHLORIDE description = "A delicious salt that stops the heart when injected into cardiac muscle." taste_description = "salt" + dermal_absorption = 0 //it's salt. reagent_state = SOLID color = "#FFFFFF" strength = 0 @@ -336,6 +345,7 @@ id = REAGENT_ID_POTASSIUMCHLOROPHORIDE description = "A specific chemical based on Potassium Chloride to stop the heart for surgery. Not safe to eat!" taste_description = "salt" + dermal_absorption = 0 //again, it's salt. reagent_state = SOLID color = "#FFFFFF" strength = 10 @@ -362,6 +372,7 @@ description = "A strong neurotoxin that puts the subject into a death-like state." taste_description = "numbness" reagent_state = SOLID + dermal_absorption = 0 //No splashing someone to isnta KO them. color = "#669900" metabolism = REM strength = 3 @@ -395,6 +406,7 @@ description = "A stablized nerve agent that puts the subject into a strange state of un-death." reagent_state = SOLID color = "#666666" + dermal_absorption = 0 //Has its own custom affect_touch effect. The parent has this set to 0, but this is just here for the comment. metabolism = REM * 0.75 mrate_static = TRUE scannable = SCANNABLE_SECRETIVE @@ -428,6 +440,7 @@ description = "A chemical mix good for growing plants with." taste_description = "plant food" taste_mult = 0.5 + dermal_absorption = 0.4 //Organo-phosphate poison... Give them a unique effect someday? reagent_state = LIQUID strength = 0.5 // It's not THAT poisonous. color = "#664330" @@ -467,6 +480,7 @@ name = REAGENT_PLANTBGONE id = REAGENT_ID_PLANTBGONE description = "A harmful toxic mixture to kill plantlife. Do not ingest!" + dermal_absorption = 0.1 //Very weak. taste_mult = 1 reagent_state = LIQUID color = "#49002E" @@ -505,6 +519,7 @@ id = REAGENT_ID_SIFSAP description = "A natural slurry comprised of fluorescent bacteria native to Sif, in the Vir system." taste_description = "sour" + dermal_absorption = 0 //Bacteria. reagent_state = LIQUID color = "#C6E2FF" strength = 2 @@ -577,6 +592,7 @@ id = REAGENT_ID_THERMITEV description = "A biologically produced compound capable of melting steel or other metals, similarly to thermite." taste_description = "sweet chalk" + dermal_absorption = 0 //It's a powder/solid. reagent_state = SOLID color = "#673910" touch_met = 50 @@ -629,6 +645,7 @@ description = "Lexorin temporarily stops respiration. Causes tissue damage." taste_description = "acid" reagent_state = LIQUID + dermal_absorption = 0.2 //Causes tissue damage, so can be presumed to penetrate through the skin somewhat. color = "#C8A5DC" overdose = REAGENTS_OVERDOSE supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED diff --git a/code/modules/reagents/reagents/virology.dm b/code/modules/reagents/reagents/virology.dm index ccbd5e896d4..6534539d432 100644 --- a/code/modules/reagents/reagents/virology.dm +++ b/code/modules/reagents/reagents/virology.dm @@ -4,6 +4,7 @@ description = "Liquid vaccine against some type of virus." color = "#C81040" scannable = SCANNABLE_BENEFICIAL + dermal_absorption = 0.25 //Give virology the ability to make vaccine patches. taste_description = "antibodies" supply_conversion_value = REFINERYEXPORT_VALUE_COMMON industrial_use = REFINERYEXPORT_REASON_MEDSCI diff --git a/code/modules/reagents/reagents/vore_vr.dm b/code/modules/reagents/reagents/vore_vr.dm index eaf572beaa0..e7415284510 100644 --- a/code/modules/reagents/reagents/vore_vr.dm +++ b/code/modules/reagents/reagents/vore_vr.dm @@ -10,6 +10,7 @@ reagent_state = LIQUID color = "#FFFF00" // rgb: 255, 255, 0 metabolism = 0.01 + dermal_absorption = 1 //Grow patches. scannable = SCANNABLE_BENEFICIAL mrate_static = TRUE supply_conversion_value = REFINERYEXPORT_VALUE_GODTIER @@ -28,6 +29,7 @@ reagent_state = LIQUID color = "#800080" metabolism = 0.01 + dermal_absorption = 1 //Shrink patches mrate_static = TRUE supply_conversion_value = REFINERYEXPORT_VALUE_GODTIER industrial_use = REFINERYEXPORT_REASON_MEDSCI @@ -46,6 +48,7 @@ reagent_state = LIQUID color = "#00FFFF" metabolism = 0.01 //One unit will be just enough to bring someone from 200% to 100% + dermal_absorption = 1 mrate_static = TRUE supply_conversion_value = REFINERYEXPORT_VALUE_GODTIER industrial_use = REFINERYEXPORT_REASON_MEDSCI @@ -253,10 +256,11 @@ description = "A potent toxin commonly found in a plethora of species. When exposed to the toxin, causes extreme, paralysis for a prolonged period, with only essential functions of the body being unhindered. Commonly used by covert operatives and used as a crowd control tool." taste_description = "bitterness" reagent_state = LIQUID + dermal_absorption = 0 //Too strong. color = "#37007f" metabolism = REM * 0.25 overdose = REAGENTS_OVERDOSE - scannable = 0 //YOU ARE NOT SCANNING THE FUNNY PARALYSIS TOXIN. NO. BAD. STAY AWAY. + scannable = 1 //As I found out, this only means if you can detect it or not. Sad. supply_conversion_value = REFINERYEXPORT_VALUE_HIGHREFINED industrial_use = REFINERYEXPORT_REASON_WEAPONS @@ -275,7 +279,7 @@ metabolism = 0.1 //Lasts up to 50 seconds if you give 5 units. mrate_static = TRUE overdose = 100 //There is no OD. You already are taking the worst of it. - scannable = 0 //Let's not have medical mechs able to make an extremely strong 'I hit you you fall down in agony' chem. + scannable = 1 supply_conversion_value = REFINERYEXPORT_VALUE_PROCESSED industrial_use = REFINERYEXPORT_REASON_WEAPONS