diff --git a/code/modules/reagents/chemistry/colors.dm b/code/modules/reagents/chemistry/colors.dm
index e0c6d5efd84..479059bda08 100644
--- a/code/modules/reagents/chemistry/colors.dm
+++ b/code/modules/reagents/chemistry/colors.dm
@@ -2,6 +2,8 @@
* Returns:
* #RRGGBB(AA) on success, null on failure
*/
+ var/list/random_color_list = list("#00aedb","#a200ff","#f47835","#d41243","#d11141","#00b159","#00aedb","#f37735","#ffc425","#008744","#0057e7","#d62d20","#ffa700")
+
/proc/mix_color_from_reagents(const/list/reagent_list)
if(!istype(reagent_list))
return
diff --git a/code/modules/reagents/chemistry/reagents/admin.dm b/code/modules/reagents/chemistry/reagents/admin.dm
index 024b78c3cb0..9e5b78376e2 100644
--- a/code/modules/reagents/chemistry/reagents/admin.dm
+++ b/code/modules/reagents/chemistry/reagents/admin.dm
@@ -1,4 +1,4 @@
-/datum/reagent/adminordrazine //An OP chemical for admins
+/datum/reagent/medicine/adminordrazine //An OP chemical for admins
name = "Adminordrazine"
id = "adminordrazine"
description = "It's magic. We don't have to explain it."
@@ -7,7 +7,7 @@
process_flags = ORGANIC | SYNTHETIC //Adminbuse knows no bounds!
admin_only = 1
-/datum/reagent/adminordrazine/on_mob_life(mob/living/carbon/M)
+/datum/reagent/medicine/adminordrazine/on_mob_life(mob/living/carbon/M)
M.setCloneLoss(0)
M.setOxyLoss(0)
M.radiation = 0
@@ -54,7 +54,7 @@
D.cure()
..()
-/datum/reagent/adminordrazine/nanites
+/datum/reagent/medicine/adminordrazine/nanites
name = "Nanites"
id = "nanites"
description = "Nanomachines that aid in rapid cellular regeneration."
\ No newline at end of file
diff --git a/code/modules/reagents/chemistry/reagents/disease.dm b/code/modules/reagents/chemistry/reagents/disease.dm
index b4c76ac1338..56493362f7c 100644
--- a/code/modules/reagents/chemistry/reagents/disease.dm
+++ b/code/modules/reagents/chemistry/reagents/disease.dm
@@ -122,26 +122,23 @@
qdel(ate_heart)
..()
-//virus-specific symptom reagents
+/datum/reagent/concentrated_initro
+ name = "Concentrated Initropidril"
+ id = "concentrated_initro"
+ description = "A guaranteed heart-stopper!"
+ reagent_state = LIQUID
+ color = "#AB1CCF"
+ metabolization_rate = 0.4
-/datum/reagent/synaphydramine
- name = "Diphen-Synaptizine"
- id = "synaphydramine"
- description = "Reduces drowsiness and hallucinations while also purging histamine from the body."
- color = "#EC536D" // rgb: 236, 83, 109
+/datum/reagent/concentrated_initro/on_mob_life(mob/living/M)
+ if(volume >=5)
+ if(ishuman(M))
+ var/mob/living/carbon/human/H = M
+ if(!H.heart_attack)
+ H.heart_attack = 1 // rip in pepperoni
-/datum/reagent/synaphydramine/on_mob_life(mob/living/M)
- M.AdjustDrowsy(-5)
- if(holder.has_reagent("lsd"))
- holder.remove_reagent("lsd", 5)
- if(holder.has_reagent("histamine"))
- holder.remove_reagent("histamine", 5)
- M.AdjustHallucinate(-10)
- if(prob(30))
- M.adjustToxLoss(1)
- ..()
+//virus foods
-//virus food
/datum/reagent/virus_food
name = "Virus Food"
id = "virusfood"
@@ -165,7 +162,7 @@
id = "sugarvirusfood"
color = "#41B0C0" // rgb: 65,176,192
-/datum/reagent/diphenhydramine/diphenhydraminevirusfood
+/datum/reagent/medicine/diphenhydramine/diphenhydraminevirusfood
name = "virus rations"
id = "diphenhydraminevirusfood"
description = "mutates blood"
diff --git a/code/modules/reagents/chemistry/reagents/medicine.dm b/code/modules/reagents/chemistry/reagents/medicine.dm
index 2cbf4bdbd00..96ddcb5be3b 100644
--- a/code/modules/reagents/chemistry/reagents/medicine.dm
+++ b/code/modules/reagents/chemistry/reagents/medicine.dm
@@ -1,4 +1,8 @@
-/datum/reagent/hydrocodone
+/datum/reagent/medicine
+ name = "Medicine"
+ id = "medicine"
+
+/datum/reagent/medicine/hydrocodone
name = "Hydrocodone"
id = "hydrocodone"
description = "An extremely effective painkiller; may have long term abuse consequences."
@@ -7,14 +11,14 @@
metabolization_rate = 0.3 // Lasts 1.5 minutes for 15 units
shock_reduction = 200
-/datum/reagent/hydrocodone/on_mob_life(mob/living/M)
+/datum/reagent/medicine/hydrocodone/on_mob_life(mob/living/M)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.traumatic_shock < 100)
H.shock_stage = 0
..()
-/datum/reagent/sterilizine
+/datum/reagent/medicine/sterilizine
name = "Sterilizine"
id = "sterilizine"
description = "Sterilizes wounds in preparation for surgery."
@@ -22,17 +26,17 @@
color = "#C8A5DC" // rgb: 200, 165, 220
//makes you squeaky clean
-/datum/reagent/sterilizine/reaction_mob(mob/living/M, method=TOUCH, volume)
+/datum/reagent/medicine/sterilizine/reaction_mob(mob/living/M, method=TOUCH, volume)
if(method == TOUCH)
M.germ_level -= min(volume*20, M.germ_level)
-/datum/reagent/sterilizine/reaction_obj(obj/O, volume)
+/datum/reagent/medicine/sterilizine/reaction_obj(obj/O, volume)
O.germ_level -= min(volume*20, O.germ_level)
-/datum/reagent/sterilizine/reaction_turf(turf/T, volume)
+/datum/reagent/medicine/sterilizine/reaction_turf(turf/T, volume)
T.germ_level -= min(volume*20, T.germ_level)
-/datum/reagent/synaptizine
+/datum/reagent/medicine/synaptizine
name = "Synaptizine"
id = "synaptizine"
description = "Synaptizine is used to treat neuroleptic shock. Can be used to help remove disabling symptoms such as paralysis."
@@ -40,7 +44,7 @@
color = "#FA46FA"
overdose_threshold = 40
-/datum/reagent/synaptizine/on_mob_life(mob/living/M)
+/datum/reagent/medicine/synaptizine/on_mob_life(mob/living/M)
M.AdjustDrowsy(-5)
M.AdjustParalysis(-1)
M.AdjustStunned(-1)
@@ -50,7 +54,7 @@
M.adjustBrainLoss(-1.0)
..()
-/datum/reagent/synaptizine/overdose_process(mob/living/M, severity)
+/datum/reagent/medicine/synaptizine/overdose_process(mob/living/M, severity)
var/effect = ..()
if(severity == 1)
if(effect <= 1)
@@ -71,14 +75,14 @@
if(effect <= 15)
M.adjustToxLoss(1)
-/datum/reagent/mitocholide
+/datum/reagent/medicine/mitocholide
name = "Mitocholide"
id = "mitocholide"
description = "A specialized drug that stimulates the mitochondria of cells to encourage healing of internal organs."
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
-/datum/reagent/mitocholide/on_mob_life(mob/living/M)
+/datum/reagent/medicine/mitocholide/on_mob_life(mob/living/M)
if(ishuman(M))
var/mob/living/carbon/human/H = M
@@ -89,12 +93,12 @@
I.damage = max(I.damage-0.4, 0)
..()
-/datum/reagent/mitocholide/reaction_obj(obj/O, volume)
+/datum/reagent/medicine/mitocholide/reaction_obj(obj/O, volume)
if(istype(O, /obj/item/organ))
var/obj/item/organ/Org = O
Org.rejuvenate()
-/datum/reagent/cryoxadone
+/datum/reagent/medicine/cryoxadone
name = "Cryoxadone"
id = "cryoxadone"
description = "A plasma mixture with almost magical healing powers. Its main limitation is that the targets body temperature must be under 265K for it to metabolise correctly."
@@ -102,7 +106,7 @@
color = "#0000C8" // rgb: 200, 165, 220
heart_rate_decrease = 1
-/datum/reagent/cryoxadone/on_mob_life(mob/living/M)
+/datum/reagent/medicine/cryoxadone/on_mob_life(mob/living/M)
if(M.bodytemperature < 265)
M.adjustCloneLoss(-4)
M.adjustOxyLoss(-10)
@@ -112,7 +116,7 @@
M.status_flags &= ~DISFIGURED
..()
-/datum/reagent/rezadone
+/datum/reagent/medicine/rezadone
name = "Rezadone"
id = "rezadone"
description = "A powder derived from fish toxin, Rezadone can effectively treat genetic damage as well as restoring minor wounds. Overdose will cause intense nausea and minor toxin damage."
@@ -120,7 +124,7 @@
color = "#669900" // rgb: 102, 153, 0
overdose_threshold = 30
-/datum/reagent/rezadone/on_mob_life(mob/living/M)
+/datum/reagent/medicine/rezadone/on_mob_life(mob/living/M)
M.setCloneLoss(0) //Rezadone is almost never used in favor of cryoxadone. Hopefully this will change that.
M.adjustCloneLoss(-1) //What? We just set cloneloss to 0. Why? Simple; this is so external organs properly unmutate.
M.adjustBruteLoss(-1)
@@ -128,12 +132,12 @@
M.status_flags &= ~DISFIGURED
..()
-/datum/reagent/rezadone/overdose_process(mob/living/M, severity)
+/datum/reagent/medicine/rezadone/overdose_process(mob/living/M, severity)
M.adjustToxLoss(1)
M.Dizzy(5)
M.Jitter(5)
-/datum/reagent/spaceacillin
+/datum/reagent/medicine/spaceacillin
name = "Spaceacillin"
id = "spaceacillin"
description = "An all-purpose antibiotic agent extracted from space fungus."
@@ -142,7 +146,7 @@
metabolization_rate = 0.2
-/datum/reagent/silver_sulfadiazine
+/datum/reagent/medicine/silver_sulfadiazine
name = "Silver Sulfadiazine"
id = "silver_sulfadiazine"
description = "This antibacterial compound is used to treat burn victims."
@@ -150,7 +154,7 @@
color = "#F0C814"
metabolization_rate = 3
-/datum/reagent/silver_sulfadiazine/reaction_mob(mob/living/M, method=TOUCH, volume, show_message = 1)
+/datum/reagent/medicine/silver_sulfadiazine/reaction_mob(mob/living/M, method=TOUCH, volume, show_message = 1)
if(iscarbon(M))
if(method == TOUCH)
M.adjustFireLoss(-volume)
@@ -162,11 +166,11 @@
to_chat(M, "You feel sick...")
..()
-/datum/reagent/silver_sulfadiazine/on_mob_life(mob/living/M)
+/datum/reagent/medicine/silver_sulfadiazine/on_mob_life(mob/living/M)
M.adjustFireLoss(-2*REM)
..()
-/datum/reagent/styptic_powder
+/datum/reagent/medicine/styptic_powder
name = "Styptic Powder"
id = "styptic_powder"
description = "Styptic (aluminium sulfate) powder helps control bleeding and heal physical wounds."
@@ -174,7 +178,7 @@
color = "#C8A5DC"
metabolization_rate = 3
-/datum/reagent/styptic_powder/reaction_mob(mob/living/M, method=TOUCH, volume, show_message = 1)
+/datum/reagent/medicine/styptic_powder/reaction_mob(mob/living/M, method=TOUCH, volume, show_message = 1)
if(iscarbon(M))
if(method == TOUCH)
M.adjustBruteLoss(-volume)
@@ -187,11 +191,11 @@
to_chat(M, "You feel gross!")
..()
-/datum/reagent/styptic_powder/on_mob_life(mob/living/M)
+/datum/reagent/medicine/styptic_powder/on_mob_life(mob/living/M)
M.adjustBruteLoss(-2*REM)
..()
-/datum/reagent/salglu_solution
+/datum/reagent/medicine/salglu_solution
name = "Saline-Glucose Solution"
id = "salglu_solution"
description = "This saline and glucose solution can help stabilize critically injured patients and cleanse wounds."
@@ -200,7 +204,7 @@
penetrates_skin = 1
metabolization_rate = 0.15
-/datum/reagent/salglu_solution/on_mob_life(mob/living/M)
+/datum/reagent/medicine/salglu_solution/on_mob_life(mob/living/M)
if(prob(33))
M.adjustBruteLoss(-2*REM)
M.adjustFireLoss(-2*REM)
@@ -210,14 +214,14 @@
H.vessel.add_reagent("blood", 1)
..()
-/datum/reagent/synthflesh
+/datum/reagent/medicine/synthflesh
name = "Synthflesh"
id = "synthflesh"
description = "A resorbable microfibrillar collagen and protein mixture that can rapidly heal injuries when applied topically."
reagent_state = LIQUID
color = "#FFEBEB"
-/datum/reagent/synthflesh/reaction_mob(mob/living/M, method=TOUCH, volume, show_message = 1)
+/datum/reagent/medicine/synthflesh/reaction_mob(mob/living/M, method=TOUCH, volume, show_message = 1)
if(iscarbon(M))
if(method == TOUCH)
M.adjustBruteLoss(-1.5*volume)
@@ -226,19 +230,19 @@
to_chat(M, "The synthetic flesh integrates itself into your wounds, healing you.")
..()
-/datum/reagent/synthflesh/reaction_turf(turf/T, volume) //let's make a mess!
+/datum/reagent/medicine/synthflesh/reaction_turf(turf/T, volume) //let's make a mess!
if(volume >= 5 && !istype(T, /turf/space))
new /obj/effect/decal/cleanable/blood/gibs/cleangibs(T)
playsound(T, 'sound/effects/splat.ogg', 50, 1, -3)
-/datum/reagent/charcoal
+/datum/reagent/medicine/charcoal
name = "Charcoal"
id = "charcoal"
description = "Activated charcoal helps to absorb toxins."
reagent_state = LIQUID
color = "#000000"
-/datum/reagent/charcoal/on_mob_life(mob/living/M)
+/datum/reagent/medicine/charcoal/on_mob_life(mob/living/M)
M.adjustToxLoss(-1.5*REM)
if(prob(50))
for(var/datum/reagent/R in M.reagents.reagent_list)
@@ -246,7 +250,7 @@
M.reagents.remove_reagent(R.id,1)
..()
-/datum/reagent/omnizine
+/datum/reagent/medicine/omnizine
name = "Omnizine"
id = "omnizine"
description = "Omnizine is a highly potent healing medication that can be used to treat a wide range of injuries."
@@ -256,7 +260,7 @@
overdose_threshold = 30
addiction_chance = 5
-/datum/reagent/omnizine/on_mob_life(mob/living/M)
+/datum/reagent/medicine/omnizine/on_mob_life(mob/living/M)
M.adjustToxLoss(-1*REM)
M.adjustOxyLoss(-1*REM)
M.adjustBruteLoss(-2*REM)
@@ -265,7 +269,7 @@
M.AdjustLoseBreath(-1)
..()
-/datum/reagent/omnizine/overdose_process(mob/living/M, severity)
+/datum/reagent/medicine/omnizine/overdose_process(mob/living/M, severity)
var/effect = ..()
if(severity == 1) //lesser
M.stuttering += 1
@@ -299,7 +303,7 @@
M.Dizzy(5)
M.Weaken(3)
-/datum/reagent/calomel
+/datum/reagent/medicine/calomel
name = "Calomel"
id = "calomel"
description = "This potent purgative rids the body of impurities. It is highly toxic however and close supervision is required."
@@ -307,7 +311,7 @@
color = "#22AB35"
metabolization_rate = 0.8
-/datum/reagent/calomel/on_mob_life(mob/living/M)
+/datum/reagent/medicine/calomel/on_mob_life(mob/living/M)
for(var/datum/reagent/R in M.reagents.reagent_list)
if(R != src)
M.reagents.remove_reagent(R.id,5)
@@ -317,26 +321,26 @@
M.fakevomit()
..()
-/datum/reagent/potass_iodide
+/datum/reagent/medicine/potass_iodide
name = "Potassium Iodide"
id = "potass_iodide"
description = "Potassium Iodide is a medicinal drug used to counter the effects of radiation poisoning."
reagent_state = LIQUID
color = "#B4DCBE"
-/datum/reagent/potass_iodide/on_mob_life(mob/living/M)
+/datum/reagent/medicine/potass_iodide/on_mob_life(mob/living/M)
if(prob(80))
M.radiation = max(0, M.radiation-1)
..()
-/datum/reagent/pen_acid
+/datum/reagent/medicine/pen_acid
name = "Pentetic Acid"
id = "pen_acid"
description = "Pentetic Acid is an aggressive chelation agent. May cause tissue damage. Use with caution."
reagent_state = LIQUID
color = "#C8A5DC"
-/datum/reagent/pen_acid/on_mob_life(mob/living/M)
+/datum/reagent/medicine/pen_acid/on_mob_life(mob/living/M)
for(var/datum/reagent/R in M.reagents.reagent_list)
if(R != src)
M.reagents.remove_reagent(R.id,4)
@@ -348,7 +352,7 @@
M.adjustFireLoss(1*REM)
..()
-/datum/reagent/sal_acid
+/datum/reagent/medicine/sal_acid
name = "Salicylic Acid"
id = "sal_acid"
description = "This is a is a standard salicylate pain reliever and fever reducer."
@@ -358,7 +362,7 @@
shock_reduction = 25
overdose_threshold = 25
-/datum/reagent/sal_acid/on_mob_life(mob/living/M)
+/datum/reagent/medicine/sal_acid/on_mob_life(mob/living/M)
if(prob(55))
M.adjustBruteLoss(-2*REM)
if(ishuman(M))
@@ -367,7 +371,7 @@
H.shock_stage = 0
..()
-/datum/reagent/salbutamol
+/datum/reagent/medicine/salbutamol
name = "Salbutamol"
id = "salbutamol"
description = "Salbutamol is a common bronchodilation medication for asthmatics. It may help with other breathing problems as well."
@@ -375,12 +379,12 @@
color = "#00FFFF"
metabolization_rate = 0.2
-/datum/reagent/salbutamol/on_mob_life(mob/living/M)
+/datum/reagent/medicine/salbutamol/on_mob_life(mob/living/M)
M.adjustOxyLoss(-6*REM)
M.AdjustLoseBreath(-4)
..()
-/datum/reagent/perfluorodecalin
+/datum/reagent/medicine/perfluorodecalin
name = "Perfluorodecalin"
id = "perfluorodecalin"
description = "This experimental perfluoronated solvent has applications in liquid breathing and tissue oxygenation. Use with caution."
@@ -389,7 +393,7 @@
metabolization_rate = 0.2
addiction_chance = 20
-/datum/reagent/perfluorodecalin/on_mob_life(mob/living/carbon/human/M)
+/datum/reagent/medicine/perfluorodecalin/on_mob_life(mob/living/carbon/human/M)
M.adjustOxyLoss(-25*REM)
if(volume >= 4)
M.LoseBreath(6)
@@ -399,7 +403,7 @@
M.adjustFireLoss(-1*REM)
..()
-/datum/reagent/ephedrine
+/datum/reagent/medicine/ephedrine
name = "Ephedrine"
id = "ephedrine"
description = "Ephedrine is a plant-derived stimulant."
@@ -409,7 +413,7 @@
overdose_threshold = 35
addiction_chance = 25
-/datum/reagent/ephedrine/on_mob_life(mob/living/M)
+/datum/reagent/medicine/ephedrine/on_mob_life(mob/living/M)
M.AdjustDrowsy(-5)
M.AdjustParalysis(-1)
M.AdjustStunned(-1)
@@ -424,7 +428,7 @@
M.adjustFireLoss(-1)
..()
-/datum/reagent/ephedrine/overdose_process(mob/living/M, severity)
+/datum/reagent/medicine/ephedrine/overdose_process(mob/living/M, severity)
var/effect = ..()
if(severity == 1)
if(effect <= 1)
@@ -445,7 +449,7 @@
if(effect <= 15)
M.emote("collapse")
-/datum/reagent/diphenhydramine
+/datum/reagent/medicine/diphenhydramine
name = "Diphenhydramine"
id = "diphenhydramine"
description = "Anti-allergy medication. May cause drowsiness, do not operate heavy machinery while using this."
@@ -453,7 +457,7 @@
color = "#5BCBE1"
addiction_chance = 10
-/datum/reagent/diphenhydramine/on_mob_life(mob/living/M)
+/datum/reagent/medicine/diphenhydramine/on_mob_life(mob/living/M)
M.AdjustJitter(-20)
M.reagents.remove_reagent("histamine",3)
M.reagents.remove_reagent("itching_powder",3)
@@ -465,7 +469,7 @@
M.visible_message("[M] looks a bit dazed.")
..()
-/datum/reagent/morphine
+/datum/reagent/medicine/morphine
name = "Morphine"
id = "morphine"
description = "A strong but highly addictive opiate painkiller with sedative side effects."
@@ -475,7 +479,7 @@
addiction_chance = 50
shock_reduction = 50
-/datum/reagent/morphine/on_mob_life(mob/living/M)
+/datum/reagent/medicine/morphine/on_mob_life(mob/living/M)
M.AdjustJitter(-25)
switch(current_cycle)
if(1 to 15)
@@ -492,7 +496,7 @@
H.shock_stage = 0
..()
-/datum/reagent/oculine/on_mob_life(mob/living/M)
+/datum/reagent/medicine/oculine/on_mob_life(mob/living/M)
if(prob(80))
if(ishuman(M))
var/mob/living/carbon/human/H = M
@@ -511,7 +515,7 @@
M.SetEarDeaf(0)
..()
-/datum/reagent/oculine
+/datum/reagent/medicine/oculine
name = "Oculine"
id = "oculine"
description = "Oculine is a saline eye medication with mydriatic and antibiotic effects."
@@ -520,7 +524,7 @@
metabolization_rate = 0.4
var/cycle_amount = 0
-/datum/reagent/atropine
+/datum/reagent/medicine/atropine
name = "Atropine"
id = "atropine"
description = "Atropine is a potent cardiac resuscitant but it can causes confusion, dizzyness and hyperthermia."
@@ -529,7 +533,7 @@
metabolization_rate = 0.2
overdose_threshold = 25
-/datum/reagent/atropine/on_mob_life(mob/living/M)
+/datum/reagent/medicine/atropine/on_mob_life(mob/living/M)
M.AdjustDizzy(1)
M.Confused(5)
if(prob(4))
@@ -546,7 +550,7 @@
M.reagents.remove_reagent("sarin", 20)
..()
-/datum/reagent/epinephrine
+/datum/reagent/medicine/epinephrine
name = "Epinephrine"
id = "epinephrine"
description = "Epinephrine is a potent neurotransmitter, used in medical emergencies to halt anaphylactic shock and prevent cardiac arrest."
@@ -555,7 +559,7 @@
metabolization_rate = 0.2
overdose_threshold = 20
-/datum/reagent/epinephrine/on_mob_life(mob/living/M)
+/datum/reagent/medicine/epinephrine/on_mob_life(mob/living/M)
M.AdjustDrowsy(-5)
if(prob(20))
M.AdjustParalysis(-1)
@@ -577,7 +581,7 @@
M.adjustFireLoss(-1*REM)
..()
-/datum/reagent/epinephrine/overdose_process(mob/living/M, severity)
+/datum/reagent/medicine/epinephrine/overdose_process(mob/living/M, severity)
var/effect = ..()
if(severity == 1)
if(effect <= 1)
@@ -598,7 +602,7 @@
if(effect <= 15)
M.emote("collapse")
-/datum/reagent/strange_reagent
+/datum/reagent/medicine/strange_reagent
name = "Strange Reagent"
id = "strange_reagent"
description = "A glowing green fluid highly reminiscent of nuclear waste."
@@ -606,7 +610,7 @@
color = "#A0E85E"
metabolization_rate = 0.2
-/datum/reagent/strange_reagent/reaction_mob(mob/living/M, method=TOUCH, volume)
+/datum/reagent/medicine/strange_reagent/reaction_mob(mob/living/M, method=TOUCH, volume)
if(isanimal(M))
if(method == TOUCH)
var/mob/living/simple_animal/SM = M
@@ -638,31 +642,23 @@
add_logs(M, M, "revived", object="strange reagent") //Yes, the logs say you revived yourself.
..()
-/datum/reagent/strange_reagent/on_mob_life(mob/living/M)
+/datum/reagent/medicine/strange_reagent/on_mob_life(mob/living/M)
if(prob(10))
M.adjustBruteLoss(2*REM)
M.adjustToxLoss(2*REM)
..()
-/datum/reagent/life
- name = "Life"
- id = "life"
- description = "Can create a life form, however it is not guaranteed to be friendly. May want to have Security on hot standby."
- reagent_state = LIQUID
- color = "#C8A5DC"
- metabolization_rate = 0.2
-
-/datum/reagent/mannitol/on_mob_life(mob/living/M)
+/datum/reagent/medicine/mannitol/on_mob_life(mob/living/M)
M.adjustBrainLoss(-3)
..()
-/datum/reagent/mannitol
+/datum/reagent/medicine/mannitol
name = "Mannitol"
id = "mannitol"
description = "Mannitol is a sugar alcohol that can help alleviate cranial swelling."
color = "#D1D1F1"
-/datum/reagent/mutadone/on_mob_life(mob/living/carbon/human/M)
+/datum/reagent/medicine/mutadone/on_mob_life(mob/living/carbon/human/M)
M.SetJitter(0)
var/needs_update = M.mutations.len > 0 || M.disabilities > 0
@@ -680,19 +676,19 @@
H.update_mutations()
..()
-/datum/reagent/mutadone
+/datum/reagent/medicine/mutadone
name = "Mutadone"
id = "mutadone"
description = "Mutadone is an experimental bromide that can cure genetic abnomalities."
color = "#5096C8"
-/datum/reagent/antihol
+/datum/reagent/medicine/antihol
name = "Antihol"
id = "antihol"
description = "A medicine which quickly eliminates alcohol in the body."
color = "#009CA8"
-/datum/reagent/antihol/on_mob_life(mob/living/M)
+/datum/reagent/medicine/antihol/on_mob_life(mob/living/M)
M.SetSlur(0)
M.AdjustDrunk(-4)
M.reagents.remove_all_type(/datum/reagent/ethanol, 8, 0, 1)
@@ -700,14 +696,14 @@
M.adjustToxLoss(-2.0)
..()
-/datum/reagent/stimulants
+/datum/reagent/medicine/stimulants
name = "Stimulants"
id = "stimulants"
description = "Increases run speed and eliminates stuns, can heal minor damage. If overdosed it will deal toxin damage and stun."
color = "#C8A5DC"
metabolization_rate = 0.4
-/datum/reagent/stimulants/on_mob_life(mob/living/M)
+/datum/reagent/medicine/stimulants/on_mob_life(mob/living/M)
if(volume > 5)
M.adjustOxyLoss(-5*REM)
M.adjustToxLoss(-5*REM)
@@ -729,7 +725,7 @@
M.Stun(3)
..()
-/datum/reagent/stimulants/on_mob_delete(mob/living/M)
+/datum/reagent/medicine/stimulants/on_mob_delete(mob/living/M)
M.status_flags |= CANSTUN | CANWEAKEN | CANPARALYSE
..()
@@ -764,25 +760,25 @@
M.adjustToxLoss(1*REM)
M.AdjustLoseBreath(1)
-/datum/reagent/insulin
+/datum/reagent/medicine/insulin
name = "Insulin"
id = "insulin"
description = "A hormone generated by the pancreas responsible for metabolizing carbohydrates and fat in the bloodstream."
reagent_state = LIQUID
color = "#C8A5DC"
-/datum/reagent/insulin/on_mob_life(mob/living/M)
+/datum/reagent/medicine/insulin/on_mob_life(mob/living/M)
M.reagents.remove_reagent("sugar", 5)
..()
-/datum/reagent/simethicone
+/datum/reagent/medicine/simethicone
name = "Simethicone"
id = "simethicone"
description = "This strange liquid seems to have no bubbles on the surface."
color = "#14AA46"
-/datum/reagent/teporone
+/datum/reagent/medicine/teporone
name = "Teporone"
id = "teporone"
description = "This experimental plasma-based compound seems to regulate body temperature."
@@ -791,21 +787,21 @@
addiction_chance = 20
overdose_threshold = 50
-/datum/reagent/teporone/on_mob_life(mob/living/M)
+/datum/reagent/medicine/teporone/on_mob_life(mob/living/M)
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/haloperidol
+/datum/reagent/medicine/haloperidol
name = "Haloperidol"
id = "haloperidol"
description = "Haloperidol is a powerful antipsychotic and sedative. Will help control psychiatric problems, but may cause brain damage."
reagent_state = LIQUID
color = "#FFDCFF"
-/datum/reagent/haloperidol/on_mob_life(mob/living/M)
+/datum/reagent/medicine/haloperidol/on_mob_life(mob/living/M)
M.reagents.remove_reagent("crank", 5)
M.reagents.remove_reagent("methamphetamine", 5)
M.reagents.remove_reagent("space_drugs", 5)
@@ -827,14 +823,14 @@
M.adjustBrainLoss(1)
..()
-/datum/reagent/ether
+/datum/reagent/medicine/ether
name = "Ether"
id = "ether"
description = "A strong anesthetic and sedative."
reagent_state = LIQUID
color = "#96DEDE"
-/datum/reagent/ether/on_mob_life(mob/living/M)
+/datum/reagent/medicine/ether/on_mob_life(mob/living/M)
M.AdjustJitter(-25)
switch(current_cycle)
if(1 to 15)
@@ -847,12 +843,32 @@
M.Drowsy(20)
..()
+//virus-specific symptom reagents
+
+/datum/reagent/medicine/synaphydramine
+ name = "Diphen-Synaptizine"
+ id = "synaphydramine"
+ description = "Reduces drowsiness and hallucinations while also purging histamine from the body."
+ color = "#EC536D" // rgb: 236, 83, 109
+
+/datum/reagent/medicine/synaphydramine/on_mob_life(mob/living/M)
+ M.AdjustDrowsy(-5)
+ if(holder.has_reagent("lsd"))
+ holder.remove_reagent("lsd", 5)
+ if(holder.has_reagent("histamine"))
+ holder.remove_reagent("histamine", 5)
+ M.AdjustHallucinate(-10)
+ if(prob(30))
+ M.adjustToxLoss(1)
+ ..()
+
+
//////////////////////////////
// Synth-Meds //
//////////////////////////////
//Degreaser: Mild Purgative / Lube Remover
-/datum/reagent/degreaser
+/datum/reagent/medicine/degreaser
name = "Degreaser"
id = "degreaser"
description = "An industrial degreaser which can be used to clean residual build-up from machinery and surfaces."
@@ -860,12 +876,12 @@
color = "#CC7A00"
process_flags = SYNTHETIC
-/datum/reagent/degreaser/reaction_turf(turf/simulated/T, volume)
+/datum/reagent/medicine/degreaser/reaction_turf(turf/simulated/T, volume)
if(volume >= 1 && istype(T))
if(T.wet)
T.MakeDry(TURF_WET_LUBE)
-/datum/reagent/degreaser/on_mob_life(mob/living/M)
+/datum/reagent/medicine/degreaser/on_mob_life(mob/living/M)
if(prob(50)) //Same effects as coffee, to help purge ill effects like paralysis
M.AdjustParalysis(-1)
M.AdjustStunned(-1)
@@ -881,7 +897,7 @@
..()
//Liquid Solder: Mannitol
-/datum/reagent/liquid_solder
+/datum/reagent/medicine/liquid_solder
name = "Liquid Solder"
id = "liquid_solder"
description = "A solution formulated to clean and repair damaged connections in posibrains while in use."
@@ -889,7 +905,7 @@
color = "#D7B395"
process_flags = SYNTHETIC
-/datum/reagent/liquid_solder/on_mob_life(mob/living/M)
+/datum/reagent/medicine/liquid_solder/on_mob_life(mob/living/M)
M.adjustBrainLoss(-3)
..()
@@ -910,7 +926,7 @@
..()
-/datum/reagent/omnizine_diluted
+/datum/reagent/medicine/omnizine_diluted
name = "Diluted Omnizine"
id = "weak_omnizine"
description = "Slowly heals all damage types. A far weaker substitute than actual omnizine."
@@ -919,14 +935,14 @@
overdose_threshold = 30
metabolization_rate = 0.1
-/datum/reagent/omnizine_diluted/on_mob_life(mob/living/M)
+/datum/reagent/medicine/omnizine_diluted/on_mob_life(mob/living/M)
M.adjustToxLoss(-0.5*REM)
M.adjustOxyLoss(-0.5*REM)
M.adjustBruteLoss(-0.5*REM)
M.adjustFireLoss(-0.5*REM)
..()
-/datum/reagent/omnizine_diluted/overdose_process(mob/living/M, severity)
+/datum/reagent/medicine/omnizine_diluted/overdose_process(mob/living/M, severity)
var/effect = ..()
if(severity == 1) //lesser
M.stuttering += 1
diff --git a/code/modules/reagents/chemistry/reagents/misc.dm b/code/modules/reagents/chemistry/reagents/misc.dm
index 2b0b51ad89e..3a33fcddcd2 100644
--- a/code/modules/reagents/chemistry/reagents/misc.dm
+++ b/code/modules/reagents/chemistry/reagents/misc.dm
@@ -177,8 +177,6 @@
reagent_state = LIQUID
color = "#322D00"
-
-// Ported from Bay as part of the Botany Update
// Allows you to make planks from any plant that has this reagent in it.
// Also vines with this reagent are considered dense.
/datum/reagent/woodpulp
@@ -188,8 +186,6 @@
reagent_state = LIQUID
color = "#B97A57"
-var/list/random_color_list = list("#00aedb","#a200ff","#f47835","#d41243","#d11141","#00b159","#00aedb","#f37735","#ffc425","#008744","#0057e7","#d62d20","#ffa700")
-
/datum/reagent/oil
name = "Oil"
id = "oil"
@@ -271,13 +267,6 @@ var/list/random_color_list = list("#00aedb","#a200ff","#f47835","#d41243","#d111
T.color = pick(random_color_list)
..()
-/datum/reagent/corgium
- name = "Corgium"
- id = "corgium"
- description = "Corgi in liquid form. Don't ask."
- reagent_state = LIQUID
- color = "#F9A635"
-
/datum/reagent/hair_dye
name = "Quantum Hair Dye"
id = "hair_dye"
@@ -409,6 +398,17 @@ var/list/random_color_list = list("#00aedb","#a200ff","#f47835","#d41243","#d111
break
..()
+/datum/reagent/royal_bee_jelly
+ name = "royal bee jelly"
+ id = "royal_bee_jelly"
+ description = "Royal Bee Jelly, if injected into a Queen Space Bee said bee will split into two bees."
+ color = "#00ff80"
+
+/datum/reagent/royal_bee_jelly/on_mob_life(mob/living/M)
+ if(prob(2))
+ M.say(pick("Bzzz...","BZZ BZZ","Bzzzzzzzzzzz..."))
+ ..()
+
///Alchemical Reagents
/datum/reagent/eyenewt
@@ -444,15 +444,4 @@ var/list/random_color_list = list("#00aedb","#a200ff","#f47835","#d41243","#d111
id = "triplepiss"
description = "Ewwwwwwwww."
reagent_state = LIQUID
- color = "#857400"
-
-/datum/reagent/royal_bee_jelly
- name = "royal bee jelly"
- id = "royal_bee_jelly"
- description = "Royal Bee Jelly, if injected into a Queen Space Bee said bee will split into two bees."
- color = "#00ff80"
-
-/datum/reagent/royal_bee_jelly/on_mob_life(mob/living/M)
- if(prob(2))
- M.say(pick("Bzzz...","BZZ BZZ","Bzzzzzzzzzzz..."))
- ..()
\ No newline at end of file
+ color = "#857400"
\ No newline at end of file
diff --git a/code/modules/reagents/chemistry/reagents/toxins.dm b/code/modules/reagents/chemistry/reagents/toxins.dm
index 4585e8df667..b4510044594 100644
--- a/code/modules/reagents/chemistry/reagents/toxins.dm
+++ b/code/modules/reagents/chemistry/reagents/toxins.dm
@@ -732,21 +732,6 @@
H.heart_attack = 1 // rip in pepperoni
..()
-/datum/reagent/concentrated_initro
- name = "Concentrated Initropidril"
- id = "concentrated_initro"
- description = "A guaranteed heart-stopper!"
- reagent_state = LIQUID
- color = "#AB1CCF"
- metabolization_rate = 0.4
-
-/datum/reagent/concentrated_initro/on_mob_life(mob/living/M)
- if(volume >=5)
- if(ishuman(M))
- var/mob/living/carbon/human/H = M
- if(!H.heart_attack)
- H.heart_attack = 1 // rip in pepperoni
-
/datum/reagent/pancuronium
name = "Pancuronium"
id = "pancuronium"