diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm
index 5460e882b2..5940530d81 100644
--- a/code/modules/reagents/Chemistry-Recipes.dm
+++ b/code/modules/reagents/Chemistry-Recipes.dm
@@ -1,2388 +1,2388 @@
-
-//Chemical Reactions - Initialises all /datum/chemical_reaction into a list
-// It is filtered into multiple lists within a list.
-// For example:
-// chemical_reaction_list["phoron"] is a list of all reactions relating to phoron
-// Note that entries in the list are NOT duplicated. So if a reaction pertains to
-// more than one chemical it will still only appear in only one of the sublists.
-/proc/initialize_chemical_reactions()
- var/paths = typesof(/datum/chemical_reaction) - /datum/chemical_reaction
- chemical_reactions_list = list()
-
- for(var/path in paths)
- var/datum/chemical_reaction/D = new path()
- if(D.required_reagents && D.required_reagents.len)
- var/reagent_id = D.required_reagents[1]
- if(!chemical_reactions_list[reagent_id])
- chemical_reactions_list[reagent_id] = list()
- chemical_reactions_list[reagent_id] += D
-
-//helper that ensures the reaction rate holds after iterating
-//Ex. REACTION_RATE(0.3) means that 30% of the reagents will react each chemistry tick (~2 seconds by default).
-#define REACTION_RATE(rate) (1.0 - (1.0-rate)**(1.0/PROCESS_REACTION_ITER))
-
-//helper to define reaction rate in terms of half-life
-//Ex.
-//HALF_LIFE(0) -> Reaction completes immediately (default chems)
-//HALF_LIFE(1) -> Half of the reagents react immediately, the rest over the following ticks.
-//HALF_LIFE(2) -> Half of the reagents are consumed after 2 chemistry ticks.
-//HALF_LIFE(3) -> Half of the reagents are consumed after 3 chemistry ticks.
-#define HALF_LIFE(ticks) (ticks? 1.0 - (0.5)**(1.0/(ticks*PROCESS_REACTION_ITER)) : 1.0)
-
-/datum/chemical_reaction
- var/name = null
- var/id = null
- var/result = null
- var/list/required_reagents = list()
- var/list/catalysts = list()
- var/list/inhibitors = list()
- var/result_amount = 0
-
- //how far the reaction proceeds each time it is processed. Used with either REACTION_RATE or HALF_LIFE macros.
- var/reaction_rate = HALF_LIFE(0)
-
- //if less than 1, the reaction will be inhibited if the ratio of products/reagents is too high.
- //0.5 = 50% yield -> reaction will only proceed halfway until products are removed.
- var/yield = 1.0
-
- //If limits on reaction rate would leave less than this amount of any reagent (adjusted by the reaction ratios),
- //the reaction goes to completion. This is to prevent reactions from going on forever with tiny reagent amounts.
- var/min_reaction = 2
-
- var/mix_message = "The solution begins to bubble."
- var/reaction_sound = 'sound/effects/bubbles.ogg'
-
- var/log_is_important = 0 // If this reaction should be considered important for logging. Important recipes message admins when mixed, non-important ones just log to file.
-/datum/chemical_reaction/proc/can_happen(var/datum/reagents/holder)
- //check that all the required reagents are present
- if(!holder.has_all_reagents(required_reagents))
- return 0
-
- //check that all the required catalysts are present in the required amount
- if(!holder.has_all_reagents(catalysts))
- return 0
-
- //check that none of the inhibitors are present in the required amount
- if(holder.has_any_reagent(inhibitors))
- return 0
-
- return 1
-
-/datum/chemical_reaction/proc/calc_reaction_progress(var/datum/reagents/holder, var/reaction_limit)
- var/progress = reaction_limit * reaction_rate //simple exponential progression
-
- //calculate yield
- if(1-yield > 0.001) //if yield ratio is big enough just assume it goes to completion
- /*
- Determine the max amount of product by applying the yield condition:
- (max_product/result_amount) / reaction_limit == yield/(1-yield)
-
- We make use of the fact that:
- reaction_limit = (holder.get_reagent_amount(reactant) / required_reagents[reactant]) of the limiting reagent.
- */
- var/yield_ratio = yield/(1-yield)
- var/max_product = yield_ratio * reaction_limit * result_amount //rearrange to obtain max_product
- var/yield_limit = max(0, max_product - holder.get_reagent_amount(result))/result_amount
-
- progress = min(progress, yield_limit) //apply yield limit
-
- //apply min reaction progress - wasn't sure if this should go before or after applying yield
- //I guess people can just have their miniscule reactions go to completion regardless of yield.
- for(var/reactant in required_reagents)
- var/remainder = holder.get_reagent_amount(reactant) - progress*required_reagents[reactant]
- if(remainder <= min_reaction*required_reagents[reactant])
- progress = reaction_limit
- break
-
- return progress
-
-/datum/chemical_reaction/proc/process(var/datum/reagents/holder)
- //determine how far the reaction can proceed
- var/list/reaction_limits = list()
- for(var/reactant in required_reagents)
- reaction_limits += holder.get_reagent_amount(reactant) / required_reagents[reactant]
-
- //determine how far the reaction proceeds
- var/reaction_limit = min(reaction_limits)
- var/progress_limit = calc_reaction_progress(holder, reaction_limit)
-
- var/reaction_progress = min(reaction_limit, progress_limit) //no matter what, the reaction progress cannot exceed the stoichiometric limit.
-
- //need to obtain the new reagent's data before anything is altered
- var/data = send_data(holder, reaction_progress)
-
- //remove the reactants
- for(var/reactant in required_reagents)
- var/amt_used = required_reagents[reactant] * reaction_progress
- holder.remove_reagent(reactant, amt_used, safety = 1)
-
- //add the product
- var/amt_produced = result_amount * reaction_progress
- if(result)
- holder.add_reagent(result, amt_produced, data, safety = 1)
-
- on_reaction(holder, amt_produced)
-
- return reaction_progress
-
-//called when a reaction processes
-/datum/chemical_reaction/proc/on_reaction(var/datum/reagents/holder, var/created_volume)
- return
-
-//called after processing reactions, if they occurred
-/datum/chemical_reaction/proc/post_reaction(var/datum/reagents/holder)
- var/atom/container = holder.my_atom
- if(mix_message && container && !ismob(container))
- var/turf/T = get_turf(container)
- var/list/seen = viewers(4, T)
- for(var/mob/M in seen)
- M.show_message("\icon[container] [mix_message]", 1)
- playsound(T, reaction_sound, 80, 1)
-
-//obtains any special data that will be provided to the reaction products
-//this is called just before reactants are removed.
-/datum/chemical_reaction/proc/send_data(var/datum/reagents/holder, var/reaction_limit)
- return null
-
-/* Common reactions */
-
-/datum/chemical_reaction/inaprovaline
- name = "Inaprovaline"
- id = "inaprovaline"
- result = "inaprovaline"
- required_reagents = list("oxygen" = 1, "carbon" = 1, "sugar" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/dylovene
- name = "Dylovene"
- id = "anti_toxin"
- result = "anti_toxin"
- required_reagents = list("silicon" = 1, "potassium" = 1, "nitrogen" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/carthatoline
- name = "Carthatoline"
- id = "carthatoline"
- result = "carthatoline"
- required_reagents = list("anti_toxin" = 1, "carbon" = 2, "phoron" = 0.1)
- catalysts = list("phoron" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/tramadol
- name = "Tramadol"
- id = "tramadol"
- result = "tramadol"
- required_reagents = list("inaprovaline" = 1, "ethanol" = 1, "oxygen" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/paracetamol
- name = "Paracetamol"
- id = "paracetamol"
- result = "paracetamol"
- required_reagents = list("tramadol" = 1, "sugar" = 1, "water" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/oxycodone
- name = "Oxycodone"
- id = "oxycodone"
- result = "oxycodone"
- required_reagents = list("ethanol" = 1, "tramadol" = 1)
- catalysts = list("phoron" = 5)
- result_amount = 1
-
-/datum/chemical_reaction/sterilizine
- name = "Sterilizine"
- id = "sterilizine"
- result = "sterilizine"
- required_reagents = list("ethanol" = 1, "anti_toxin" = 1, "chlorine" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/silicate
- name = "Silicate"
- id = "silicate"
- result = "silicate"
- required_reagents = list("aluminum" = 1, "silicon" = 1, "oxygen" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/mutagen
- name = "Unstable mutagen"
- id = "mutagen"
- result = "mutagen"
- required_reagents = list("radium" = 1, "phosphorus" = 1, "chlorine" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/water
- name = "Water"
- id = "water"
- result = "water"
- required_reagents = list("oxygen" = 1, "hydrogen" = 2)
- result_amount = 1
-
-/datum/chemical_reaction/thermite
- name = "Thermite"
- id = "thermite"
- result = "thermite"
- required_reagents = list("aluminum" = 1, "iron" = 1, "oxygen" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/space_drugs
- name = "Space Drugs"
- id = "space_drugs"
- result = "space_drugs"
- required_reagents = list("mercury" = 1, "sugar" = 1, "lithium" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/lube
- name = "Space Lube"
- id = "lube"
- result = "lube"
- required_reagents = list("water" = 1, "silicon" = 1, "oxygen" = 1)
- result_amount = 4
-
-/datum/chemical_reaction/pacid
- name = "Polytrinic acid"
- id = "pacid"
- result = "pacid"
- required_reagents = list("sacid" = 1, "chlorine" = 1, "potassium" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/synaptizine
- name = "Synaptizine"
- id = "synaptizine"
- result = "synaptizine"
- required_reagents = list("sugar" = 1, "lithium" = 1, "water" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/hyronalin
- name = "Hyronalin"
- id = "hyronalin"
- result = "hyronalin"
- required_reagents = list("radium" = 1, "anti_toxin" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/arithrazine
- name = "Arithrazine"
- id = "arithrazine"
- result = "arithrazine"
- required_reagents = list("hyronalin" = 1, "hydrogen" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/impedrezene
- name = "Impedrezene"
- id = "impedrezene"
- result = "impedrezene"
- required_reagents = list("mercury" = 1, "oxygen" = 1, "sugar" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/kelotane
- name = "Kelotane"
- id = "kelotane"
- result = "kelotane"
- required_reagents = list("silicon" = 1, "carbon" = 1)
- result_amount = 2
- log_is_important = 1
-
-/datum/chemical_reaction/peridaxon
- name = "Peridaxon"
- id = "peridaxon"
- result = "peridaxon"
- required_reagents = list("bicaridine" = 2, "clonexadone" = 2)
- catalysts = list("phoron" = 5)
- result_amount = 2
-
-/datum/chemical_reaction/osteodaxon
- name = "Osteodaxon"
- id = "osteodaxon"
- result = "osteodaxon"
- required_reagents = list("bicaridine" = 2, "phoron" = 0.1, "carpotoxin" = 1)
- catalysts = list("phoron" = 5)
- inhibitors = list("clonexadone" = 1) // Messes with cryox
- result_amount = 2
-
-/datum/chemical_reaction/virus_food
- name = "Virus Food"
- id = "virusfood"
- result = "virusfood"
- required_reagents = list("water" = 1, "milk" = 1)
- result_amount = 5
-
-/datum/chemical_reaction/leporazine
- name = "Leporazine"
- id = "leporazine"
- result = "leporazine"
- required_reagents = list("silicon" = 1, "copper" = 1)
- catalysts = list("phoron" = 5)
- result_amount = 2
-
-/datum/chemical_reaction/cryptobiolin
- name = "Cryptobiolin"
- id = "cryptobiolin"
- result = "cryptobiolin"
- required_reagents = list("potassium" = 1, "oxygen" = 1, "sugar" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/tricordrazine
- name = "Tricordrazine"
- id = "tricordrazine"
- result = "tricordrazine"
- required_reagents = list("inaprovaline" = 1, "anti_toxin" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/alkysine
- name = "Alkysine"
- id = "alkysine"
- result = "alkysine"
- required_reagents = list("chlorine" = 1, "nitrogen" = 1, "anti_toxin" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/dexalin
- name = "Dexalin"
- id = "dexalin"
- result = "dexalin"
- required_reagents = list("oxygen" = 2, "phoron" = 0.1)
- catalysts = list("phoron" = 1)
- inhibitors = list("water" = 1) // Messes with cryox
- result_amount = 1
-
-/datum/chemical_reaction/dermaline
- name = "Dermaline"
- id = "dermaline"
- result = "dermaline"
- required_reagents = list("oxygen" = 1, "phosphorus" = 1, "kelotane" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/dexalinp
- name = "Dexalin Plus"
- id = "dexalinp"
- result = "dexalinp"
- required_reagents = list("dexalin" = 1, "carbon" = 1, "iron" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/bicaridine
- name = "Bicaridine"
- id = "bicaridine"
- result = "bicaridine"
- required_reagents = list("inaprovaline" = 1, "carbon" = 1)
- inhibitors = list("sugar" = 1) // Messes up with inaprovaline
- result_amount = 2
-
-/datum/chemical_reaction/alizine
- name = "Alizine"
- id = "alizine"
- result = "alizine"
- required_reagents = list("bicaridine" = 1, "serazine" = 1, "tungsten" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/myelamine
- name = "Myelamine"
- id = "myelamine"
- result = "myelamine"
- required_reagents = list("bicaridine" = 1, "iron" = 2, "spidertoxin" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/hyperzine
- name = "Hyperzine"
- id = "hyperzine"
- result = "hyperzine"
- required_reagents = list("sugar" = 1, "phosphorus" = 1, "sulfur" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/stimm
- name = "Stimm"
- id = "stimm"
- result = "stimm"
- required_reagents = list("left4zed" = 1, "fuel" = 1)
- catalysts = list("fuel" = 5)
- result_amount = 2
-
-/datum/chemical_reaction/ryetalyn
- name = "Ryetalyn"
- id = "ryetalyn"
- result = "ryetalyn"
- required_reagents = list("arithrazine" = 1, "carbon" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/cryoxadone
- name = "Cryoxadone"
- id = "cryoxadone"
- result = "cryoxadone"
- required_reagents = list("dexalin" = 1, "water" = 1, "oxygen" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/clonexadone
- name = "Clonexadone"
- id = "clonexadone"
- result = "clonexadone"
- required_reagents = list("cryoxadone" = 1, "sodium" = 1, "phoron" = 0.1)
- catalysts = list("phoron" = 5)
- result_amount = 2
-
-/datum/chemical_reaction/spaceacillin
- name = "Spaceacillin"
- id = "spaceacillin"
- result = "spaceacillin"
- required_reagents = list("cryptobiolin" = 1, "inaprovaline" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/corophizine
- name = "Corophizine"
- id = "corophizine"
- result = "corophizine"
- required_reagents = list("spaceacillin" = 1, "carbon" = 1, "phoron" = 0.1)
- catalysts = list("phoron" = 5)
- result_amount = 2
-
-/datum/chemical_reaction/imidazoline
- name = "imidazoline"
- id = "imidazoline"
- result = "imidazoline"
- required_reagents = list("carbon" = 1, "hydrogen" = 1, "anti_toxin" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/ethylredoxrazine
- name = "Ethylredoxrazine"
- id = "ethylredoxrazine"
- result = "ethylredoxrazine"
- required_reagents = list("oxygen" = 1, "anti_toxin" = 1, "carbon" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/soporific
- name = "Soporific"
- id = "stoxin"
- result = "stoxin"
- required_reagents = list("chloralhydrate" = 1, "sugar" = 4)
- inhibitors = list("phosphorus") // Messes with the smoke
- result_amount = 5
-
-/datum/chemical_reaction/chloralhydrate
- name = "Chloral Hydrate"
- id = "chloralhydrate"
- result = "chloralhydrate"
- required_reagents = list("ethanol" = 1, "chlorine" = 3, "water" = 1)
- result_amount = 1
-
-/datum/chemical_reaction/potassium_chloride
- name = "Potassium Chloride"
- id = "potassium_chloride"
- result = "potassium_chloride"
- required_reagents = list("sodiumchloride" = 1, "potassium" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/potassium_chlorophoride
- name = "Potassium Chlorophoride"
- id = "potassium_chlorophoride"
- result = "potassium_chlorophoride"
- required_reagents = list("potassium_chloride" = 1, "phoron" = 1, "chloralhydrate" = 1)
- result_amount = 4
-
-/datum/chemical_reaction/zombiepowder
- name = "Zombie Powder"
- id = "zombiepowder"
- result = "zombiepowder"
- required_reagents = list("carpotoxin" = 5, "stoxin" = 5, "copper" = 5)
- result_amount = 2
-
-/datum/chemical_reaction/mindbreaker
- name = "Mindbreaker Toxin"
- id = "mindbreaker"
- result = "mindbreaker"
- required_reagents = list("silicon" = 1, "hydrogen" = 1, "anti_toxin" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/lipozine
- name = "Lipozine"
- id = "Lipozine"
- result = "lipozine"
- required_reagents = list("sodiumchloride" = 1, "ethanol" = 1, "radium" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/surfactant
- name = "Foam surfactant"
- id = "foam surfactant"
- result = "fluorosurfactant"
- required_reagents = list("fluorine" = 2, "carbon" = 2, "sacid" = 1)
- result_amount = 5
-
-/datum/chemical_reaction/ammonia
- name = "Ammonia"
- id = "ammonia"
- result = "ammonia"
- required_reagents = list("hydrogen" = 3, "nitrogen" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/diethylamine
- name = "Diethylamine"
- id = "diethylamine"
- result = "diethylamine"
- required_reagents = list ("ammonia" = 1, "ethanol" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/space_cleaner
- name = "Space cleaner"
- id = "cleaner"
- result = "cleaner"
- required_reagents = list("ammonia" = 1, "water" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/plantbgone
- name = "Plant-B-Gone"
- id = "plantbgone"
- result = "plantbgone"
- required_reagents = list("toxin" = 1, "water" = 4)
- result_amount = 5
-
-/datum/chemical_reaction/foaming_agent
- name = "Foaming Agent"
- id = "foaming_agent"
- result = "foaming_agent"
- required_reagents = list("lithium" = 1, "hydrogen" = 1)
- result_amount = 1
-
-/datum/chemical_reaction/glycerol
- name = "Glycerol"
- id = "glycerol"
- result = "glycerol"
- required_reagents = list("cornoil" = 3, "sacid" = 1)
- result_amount = 1
-
-/datum/chemical_reaction/sodiumchloride
- name = "Sodium Chloride"
- id = "sodiumchloride"
- result = "sodiumchloride"
- required_reagents = list("sodium" = 1, "chlorine" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/condensedcapsaicin
- name = "Condensed Capsaicin"
- id = "condensedcapsaicin"
- result = "condensedcapsaicin"
- required_reagents = list("capsaicin" = 2)
- catalysts = list("phoron" = 5)
- result_amount = 1
-
-/datum/chemical_reaction/coolant
- name = "Coolant"
- id = "coolant"
- result = "coolant"
- required_reagents = list("tungsten" = 1, "oxygen" = 1, "water" = 1)
- result_amount = 3
- log_is_important = 1
-
-/datum/chemical_reaction/rezadone
- name = "Rezadone"
- id = "rezadone"
- result = "rezadone"
- required_reagents = list("carpotoxin" = 1, "cryptobiolin" = 1, "copper" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/lexorin
- name = "Lexorin"
- id = "lexorin"
- result = "lexorin"
- required_reagents = list("phoron" = 1, "hydrogen" = 1, "nitrogen" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/methylphenidate
- name = "Methylphenidate"
- id = "methylphenidate"
- result = "methylphenidate"
- required_reagents = list("mindbreaker" = 1, "hydrogen" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/citalopram
- name = "Citalopram"
- id = "citalopram"
- result = "citalopram"
- required_reagents = list("mindbreaker" = 1, "carbon" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/paroxetine
- name = "Paroxetine"
- id = "paroxetine"
- result = "paroxetine"
- required_reagents = list("mindbreaker" = 1, "oxygen" = 1, "inaprovaline" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/neurotoxin
- name = "Neurotoxin"
- id = "neurotoxin"
- result = "neurotoxin"
- required_reagents = list("gargleblaster" = 1, "stoxin" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/luminol
- name = "Luminol"
- id = "luminol"
- result = "luminol"
- required_reagents = list("hydrogen" = 2, "carbon" = 2, "ammonia" = 2)
- result_amount = 6
-
-/* Solidification */
-
-/datum/chemical_reaction/solidification
- name = "Solid Iron"
- id = "solidiron"
- result = null
- required_reagents = list("frostoil" = 5, "iron" = REAGENTS_PER_SHEET)
- result_amount = 1
- var/sheet_to_give = /obj/item/stack/material/iron
-
-/datum/chemical_reaction/solidification/on_reaction(var/datum/reagents/holder, var/created_volume)
- new sheet_to_give(get_turf(holder.my_atom), created_volume)
- return
-
-
-/datum/chemical_reaction/solidification/phoron
- name = "Solid Phoron"
- id = "solidphoron"
- required_reagents = list("frostoil" = 5, "phoron" = REAGENTS_PER_SHEET)
- sheet_to_give = /obj/item/stack/material/phoron
-
-
-/datum/chemical_reaction/solidification/silver
- name = "Solid Silver"
- id = "solidsilver"
- required_reagents = list("frostoil" = 5, "silver" = REAGENTS_PER_SHEET)
- sheet_to_give = /obj/item/stack/material/silver
-
-
-/datum/chemical_reaction/solidification/gold
- name = "Solid Gold"
- id = "solidgold"
- required_reagents = list("frostoil" = 5, "gold" = REAGENTS_PER_SHEET)
- sheet_to_give = /obj/item/stack/material/gold
-
-
-/datum/chemical_reaction/solidification/platinum
- name = "Solid Platinum"
- id = "solidplatinum"
- required_reagents = list("frostoil" = 5, "platinum" = REAGENTS_PER_SHEET)
- sheet_to_give = /obj/item/stack/material/platinum
-
-
-/datum/chemical_reaction/solidification/uranium
- name = "Solid Uranium"
- id = "soliduranium"
- required_reagents = list("frostoil" = 5, "uranium" = REAGENTS_PER_SHEET)
- sheet_to_give = /obj/item/stack/material/uranium
-
-
-/datum/chemical_reaction/solidification/hydrogen
- name = "Solid Hydrogen"
- id = "solidhydrogen"
- required_reagents = list("frostoil" = 100, "hydrogen" = REAGENTS_PER_SHEET)
- sheet_to_give = /obj/item/stack/material/mhydrogen
-
-
-// These are from Xenobio.
-/datum/chemical_reaction/solidification/steel
- name = "Solid Steel"
- id = "solidsteel"
- required_reagents = list("frostoil" = 5, "steel" = REAGENTS_PER_SHEET)
- sheet_to_give = /obj/item/stack/material/steel
-
-
-/datum/chemical_reaction/solidification/plasteel
- name = "Solid Plasteel"
- id = "solidplasteel"
- required_reagents = list("frostoil" = 10, "plasteel" = REAGENTS_PER_SHEET)
- sheet_to_give = /obj/item/stack/material/plasteel
-
-
-/datum/chemical_reaction/plastication
- name = "Plastic"
- id = "solidplastic"
- result = null
- required_reagents = list("pacid" = 1, "plasticide" = 2)
- result_amount = 1
-
-/datum/chemical_reaction/plastication/on_reaction(var/datum/reagents/holder, var/created_volume)
- new /obj/item/stack/material/plastic(get_turf(holder.my_atom), created_volume)
- return
-
-/* Grenade reactions */
-
-/datum/chemical_reaction/explosion_potassium
- name = "Explosion"
- id = "explosion_potassium"
- result = null
- required_reagents = list("water" = 1, "potassium" = 1)
- result_amount = 2
- mix_message = null
-
-/datum/chemical_reaction/explosion_potassium/on_reaction(var/datum/reagents/holder, var/created_volume)
- var/datum/effect/effect/system/reagents_explosion/e = new()
- e.set_up(round (created_volume/10, 1), holder.my_atom, 0, 0)
- if(isliving(holder.my_atom))
- e.amount *= 0.5
- var/mob/living/L = holder.my_atom
- if(L.stat != DEAD)
- e.amount *= 0.5
- else
- holder.clear_reagents() //No more powergaming by creating a tiny amount of this
- e.start()
- return
-
-/datum/chemical_reaction/flash_powder
- name = "Flash powder"
- id = "flash_powder"
- result = null
- required_reagents = list("aluminum" = 1, "potassium" = 1, "sulfur" = 1 )
- result_amount = null
-
-/datum/chemical_reaction/flash_powder/on_reaction(var/datum/reagents/holder, var/created_volume)
- var/location = get_turf(holder.my_atom)
- var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
- s.set_up(2, 1, location)
- s.start()
- for(var/mob/living/carbon/M in viewers(world.view, location))
- switch(get_dist(M, location))
- if(0 to 3)
- if(hasvar(M, "glasses"))
- if(istype(M:glasses, /obj/item/clothing/glasses/sunglasses))
- continue
-
- M.flash_eyes()
- M.Weaken(15)
-
- if(4 to 5)
- if(hasvar(M, "glasses"))
- if(istype(M:glasses, /obj/item/clothing/glasses/sunglasses))
- continue
-
- M.flash_eyes()
- M.Stun(5)
-
-/datum/chemical_reaction/emp_pulse
- name = "EMP Pulse"
- id = "emp_pulse"
- result = null
- required_reagents = list("uranium" = 1, "iron" = 1) // Yes, laugh, it's the best recipe I could think of that makes a little bit of sense
- result_amount = 2
-
-/datum/chemical_reaction/emp_pulse/on_reaction(var/datum/reagents/holder, var/created_volume)
- var/location = get_turf(holder.my_atom)
- // 100 created volume = 4 heavy range & 7 light range. A few tiles smaller than traitor EMP grandes.
- // 200 created volume = 8 heavy range & 14 light range. 4 tiles larger than traitor EMP grenades.
- empulse(location, round(created_volume / 24), round(created_volume / 20), round(created_volume / 18), round(created_volume / 14), 1)
- if(!isliving(holder.my_atom)) //No more powergaming by creating a tiny amount of this
- holder.clear_reagents()
- return
-
-/datum/chemical_reaction/nitroglycerin
- name = "Nitroglycerin"
- id = "nitroglycerin"
- result = "nitroglycerin"
- required_reagents = list("glycerol" = 1, "pacid" = 1, "sacid" = 1)
- result_amount = 2
- log_is_important = 1
-
-/datum/chemical_reaction/nitroglycerin/on_reaction(var/datum/reagents/holder, var/created_volume)
- var/datum/effect/effect/system/reagents_explosion/e = new()
- e.set_up(round (created_volume/2, 1), holder.my_atom, 0, 0)
- if(isliving(holder.my_atom))
- e.amount *= 0.5
- var/mob/living/L = holder.my_atom
- if(L.stat!=DEAD)
- e.amount *= 0.5
- else
- holder.clear_reagents() //No more powergaming by creating a tiny amount of this
- e.start()
-
- return
-
-/datum/chemical_reaction/napalm
- name = "Napalm"
- id = "napalm"
- result = null
- required_reagents = list("aluminum" = 1, "phoron" = 1, "sacid" = 1 )
- result_amount = 1
-
-/datum/chemical_reaction/napalm/on_reaction(var/datum/reagents/holder, var/created_volume)
- var/turf/location = get_turf(holder.my_atom.loc)
- for(var/turf/simulated/floor/target_tile in range(0,location))
- target_tile.assume_gas("volatile_fuel", created_volume, 400+T0C)
- spawn (0) target_tile.hotspot_expose(700, 400)
- holder.del_reagent("napalm")
- return
-
-/datum/chemical_reaction/chemsmoke
- name = "Chemsmoke"
- id = "chemsmoke"
- result = null
- required_reagents = list("potassium" = 1, "sugar" = 1, "phosphorus" = 1)
- result_amount = 0.4
-
-/datum/chemical_reaction/chemsmoke/on_reaction(var/datum/reagents/holder, var/created_volume)
- var/location = get_turf(holder.my_atom)
- var/datum/effect/effect/system/smoke_spread/chem/S = new /datum/effect/effect/system/smoke_spread/chem
- S.attach(location)
- S.set_up(holder, created_volume, 0, location)
- playsound(location, 'sound/effects/smoke.ogg', 50, 1, -3)
- spawn(0)
- S.start()
- if(!isliving(holder.my_atom)) //No more powergaming by creating a tiny amount of this
- holder.clear_reagents()
- return
-
-/datum/chemical_reaction/foam
- name = "Foam"
- id = "foam"
- result = null
- required_reagents = list("fluorosurfactant" = 1, "water" = 1)
- result_amount = 2
- mix_message = "The solution violently bubbles!"
-
-/datum/chemical_reaction/foam/on_reaction(var/datum/reagents/holder, var/created_volume)
- var/location = get_turf(holder.my_atom)
-
- for(var/mob/M in viewers(5, location))
- M << "The solution spews out foam!"
-
- var/datum/effect/effect/system/foam_spread/s = new()
- s.set_up(created_volume, location, holder, 0)
- s.start()
- if(!isliving(holder.my_atom)) //No more powergaming by creating a tiny amount of this
- holder.clear_reagents()
- return
-
-/datum/chemical_reaction/metalfoam
- name = "Metal Foam"
- id = "metalfoam"
- result = null
- required_reagents = list("aluminum" = 3, "foaming_agent" = 1, "pacid" = 1)
- result_amount = 5
-
-/datum/chemical_reaction/metalfoam/on_reaction(var/datum/reagents/holder, var/created_volume)
- var/location = get_turf(holder.my_atom)
-
- for(var/mob/M in viewers(5, location))
- M << "The solution spews out a metalic foam!"
-
- var/datum/effect/effect/system/foam_spread/s = new()
- s.set_up(created_volume, location, holder, 1)
- s.start()
- return
-
-/datum/chemical_reaction/ironfoam
- name = "Iron Foam"
- id = "ironlfoam"
- result = null
- required_reagents = list("iron" = 3, "foaming_agent" = 1, "pacid" = 1)
- result_amount = 5
-
-/datum/chemical_reaction/ironfoam/on_reaction(var/datum/reagents/holder, var/created_volume)
- var/location = get_turf(holder.my_atom)
-
- for(var/mob/M in viewers(5, location))
- M << "The solution spews out a metalic foam!"
-
- var/datum/effect/effect/system/foam_spread/s = new()
- s.set_up(created_volume, location, holder, 2)
- s.start()
- return
-
-/* Paint */
-
-/datum/chemical_reaction/red_paint
- name = "Red paint"
- id = "red_paint"
- result = "paint"
- required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_red" = 1)
- result_amount = 5
-
-/datum/chemical_reaction/red_paint/send_data()
- return "#FE191A"
-
-/datum/chemical_reaction/orange_paint
- name = "Orange paint"
- id = "orange_paint"
- result = "paint"
- required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_orange" = 1)
- result_amount = 5
-
-/datum/chemical_reaction/orange_paint/send_data()
- return "#FFBE4F"
-
-/datum/chemical_reaction/yellow_paint
- name = "Yellow paint"
- id = "yellow_paint"
- result = "paint"
- required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_yellow" = 1)
- result_amount = 5
-
-/datum/chemical_reaction/yellow_paint/send_data()
- return "#FDFE7D"
-
-/datum/chemical_reaction/green_paint
- name = "Green paint"
- id = "green_paint"
- result = "paint"
- required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_green" = 1)
- result_amount = 5
-
-/datum/chemical_reaction/green_paint/send_data()
- return "#18A31A"
-
-/datum/chemical_reaction/blue_paint
- name = "Blue paint"
- id = "blue_paint"
- result = "paint"
- required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_blue" = 1)
- result_amount = 5
-
-/datum/chemical_reaction/blue_paint/send_data()
- return "#247CFF"
-
-/datum/chemical_reaction/purple_paint
- name = "Purple paint"
- id = "purple_paint"
- result = "paint"
- required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_purple" = 1)
- result_amount = 5
-
-/datum/chemical_reaction/purple_paint/send_data()
- return "#CC0099"
-
-/datum/chemical_reaction/grey_paint //mime
- name = "Grey paint"
- id = "grey_paint"
- result = "paint"
- required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_grey" = 1)
- result_amount = 5
-
-/datum/chemical_reaction/grey_paint/send_data()
- return "#808080"
-
-/datum/chemical_reaction/brown_paint
- name = "Brown paint"
- id = "brown_paint"
- result = "paint"
- required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_brown" = 1)
- result_amount = 5
-
-/datum/chemical_reaction/brown_paint/send_data()
- return "#846F35"
-
-/datum/chemical_reaction/blood_paint
- name = "Blood paint"
- id = "blood_paint"
- result = "paint"
- required_reagents = list("plasticide" = 1, "water" = 3, "blood" = 2)
- result_amount = 5
-
-/datum/chemical_reaction/blood_paint/send_data(var/datum/reagents/T)
- var/t = T.get_data("blood")
- if(t && t["blood_colour"])
- return t["blood_colour"]
- return "#FE191A" // Probably red
-
-/datum/chemical_reaction/milk_paint
- name = "Milk paint"
- id = "milk_paint"
- result = "paint"
- required_reagents = list("plasticide" = 1, "water" = 3, "milk" = 5)
- result_amount = 5
-
-/datum/chemical_reaction/milk_paint/send_data()
- return "#F0F8FF"
-
-/datum/chemical_reaction/orange_juice_paint
- name = "Orange juice paint"
- id = "orange_juice_paint"
- result = "paint"
- required_reagents = list("plasticide" = 1, "water" = 3, "orangejuice" = 5)
- result_amount = 5
-
-/datum/chemical_reaction/orange_juice_paint/send_data()
- return "#E78108"
-
-/datum/chemical_reaction/tomato_juice_paint
- name = "Tomato juice paint"
- id = "tomato_juice_paint"
- result = "paint"
- required_reagents = list("plasticide" = 1, "water" = 3, "tomatojuice" = 5)
- result_amount = 5
-
-/datum/chemical_reaction/tomato_juice_paint/send_data()
- return "#731008"
-
-/datum/chemical_reaction/lime_juice_paint
- name = "Lime juice paint"
- id = "lime_juice_paint"
- result = "paint"
- required_reagents = list("plasticide" = 1, "water" = 3, "limejuice" = 5)
- result_amount = 5
-
-/datum/chemical_reaction/lime_juice_paint/send_data()
- return "#365E30"
-
-/datum/chemical_reaction/carrot_juice_paint
- name = "Carrot juice paint"
- id = "carrot_juice_paint"
- result = "paint"
- required_reagents = list("plasticide" = 1, "water" = 3, "carrotjuice" = 5)
- result_amount = 5
-
-/datum/chemical_reaction/carrot_juice_paint/send_data()
- return "#973800"
-
-/datum/chemical_reaction/berry_juice_paint
- name = "Berry juice paint"
- id = "berry_juice_paint"
- result = "paint"
- required_reagents = list("plasticide" = 1, "water" = 3, "berryjuice" = 5)
- result_amount = 5
-
-/datum/chemical_reaction/berry_juice_paint/send_data()
- return "#990066"
-
-/datum/chemical_reaction/grape_juice_paint
- name = "Grape juice paint"
- id = "grape_juice_paint"
- result = "paint"
- required_reagents = list("plasticide" = 1, "water" = 3, "grapejuice" = 5)
- result_amount = 5
-
-/datum/chemical_reaction/grape_juice_paint/send_data()
- return "#863333"
-
-/datum/chemical_reaction/poisonberry_juice_paint
- name = "Poison berry juice paint"
- id = "poisonberry_juice_paint"
- result = "paint"
- required_reagents = list("plasticide" = 1, "water" = 3, "poisonberryjuice" = 5)
- result_amount = 5
-
-/datum/chemical_reaction/poisonberry_juice_paint/send_data()
- return "#863353"
-
-/datum/chemical_reaction/watermelon_juice_paint
- name = "Watermelon juice paint"
- id = "watermelon_juice_paint"
- result = "paint"
- required_reagents = list("plasticide" = 1, "water" = 3, "watermelonjuice" = 5)
- result_amount = 5
-
-/datum/chemical_reaction/watermelon_juice_paint/send_data()
- return "#B83333"
-
-/datum/chemical_reaction/lemon_juice_paint
- name = "Lemon juice paint"
- id = "lemon_juice_paint"
- result = "paint"
- required_reagents = list("plasticide" = 1, "water" = 3, "lemonjuice" = 5)
- result_amount = 5
-
-/datum/chemical_reaction/lemon_juice_paint/send_data()
- return "#AFAF00"
-
-/datum/chemical_reaction/banana_juice_paint
- name = "Banana juice paint"
- id = "banana_juice_paint"
- result = "paint"
- required_reagents = list("plasticide" = 1, "water" = 3, "banana" = 5)
- result_amount = 5
-
-/datum/chemical_reaction/banana_juice_paint/send_data()
- return "#C3AF00"
-
-/datum/chemical_reaction/potato_juice_paint
- name = "Potato juice paint"
- id = "potato_juice_paint"
- result = "paint"
- required_reagents = list("plasticide" = 1, "water" = 3, "potatojuice" = 5)
- result_amount = 5
-
-/datum/chemical_reaction/potato_juice_paint/send_data()
- return "#302000"
-
-/datum/chemical_reaction/carbon_paint
- name = "Carbon paint"
- id = "carbon_paint"
- result = "paint"
- required_reagents = list("plasticide" = 1, "water" = 3, "carbon" = 1)
- result_amount = 5
-
-/datum/chemical_reaction/carbon_paint/send_data()
- return "#333333"
-
-/datum/chemical_reaction/aluminum_paint
- name = "Aluminum paint"
- id = "aluminum_paint"
- result = "paint"
- required_reagents = list("plasticide" = 1, "water" = 3, "aluminum" = 1)
- result_amount = 5
-
-/datum/chemical_reaction/aluminum_paint/send_data()
- return "#F0F8FF"
-
-/* Food */
-
-/datum/chemical_reaction/food/tofu
- name = "Tofu"
- id = "tofu"
- result = null
- required_reagents = list("soymilk" = 10)
- catalysts = list("enzyme" = 5)
- result_amount = 1
-
-/datum/chemical_reaction/food/tofu/on_reaction(var/datum/reagents/holder, var/created_volume)
- var/location = get_turf(holder.my_atom)
- for(var/i = 1, i <= created_volume, i++)
- new /obj/item/weapon/reagent_containers/food/snacks/tofu(location)
- return
-
-/datum/chemical_reaction/food/chocolate_bar
- name = "Chocolate Bar"
- id = "chocolate_bar"
- result = null
- required_reagents = list("soymilk" = 2, "coco" = 2, "sugar" = 2)
- result_amount = 1
-
-/datum/chemical_reaction/food/chocolate_bar/on_reaction(var/datum/reagents/holder, var/created_volume)
- var/location = get_turf(holder.my_atom)
- for(var/i = 1, i <= created_volume, i++)
- new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location)
- return
-
-/datum/chemical_reaction/food/chocolate_bar2
- name = "Chocolate Bar"
- id = "chocolate_bar"
- result = null
- required_reagents = list("milk" = 2, "coco" = 2, "sugar" = 2)
- result_amount = 1
-
-/datum/chemical_reaction/food/chocolate_bar2/on_reaction(var/datum/reagents/holder, var/created_volume)
- var/location = get_turf(holder.my_atom)
- for(var/i = 1, i <= created_volume, i++)
- new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location)
- return
-
-/datum/chemical_reaction/drinks/hot_coco
- name = "Hot Coco"
- id = "hot_coco"
- result = "hot_coco"
- required_reagents = list("water" = 5, "coco" = 1)
- result_amount = 5
-
-/datum/chemical_reaction/food/soysauce
- name = "Soy Sauce"
- id = "soysauce"
- result = "soysauce"
- required_reagents = list("soymilk" = 4, "sacid" = 1)
- result_amount = 5
-
-/datum/chemical_reaction/food/ketchup
- name = "Ketchup"
- id = "ketchup"
- result = "ketchup"
- required_reagents = list("tomatojuice" = 2, "water" = 1, "sugar" = 1)
- result_amount = 4
-
-/datum/chemical_reaction/food/cheesewheel
- name = "Cheesewheel"
- id = "cheesewheel"
- result = null
- required_reagents = list("milk" = 40)
- catalysts = list("enzyme" = 5)
- result_amount = 1
-
-/datum/chemical_reaction/food/cheesewheel/on_reaction(var/datum/reagents/holder, var/created_volume)
- var/location = get_turf(holder.my_atom)
- for(var/i = 1, i <= created_volume, i++)
- new /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel(location)
- return
-
-/datum/chemical_reaction/food/meatball
- name = "Meatball"
- id = "meatball"
- result = null
- required_reagents = list("protein" = 3, "flour" = 5)
- result_amount = 3
-
-/datum/chemical_reaction/food/meatball/on_reaction(var/datum/reagents/holder, var/created_volume)
- var/location = get_turf(holder.my_atom)
- for(var/i = 1, i <= created_volume, i++)
- new /obj/item/weapon/reagent_containers/food/snacks/meatball(location)
- return
-
-/datum/chemical_reaction/food/dough
- name = "Dough"
- id = "dough"
- result = null
- required_reagents = list("egg" = 3, "flour" = 10)
- result_amount = 1
-
-/datum/chemical_reaction/food/dough/on_reaction(var/datum/reagents/holder, var/created_volume)
- var/location = get_turf(holder.my_atom)
- for(var/i = 1, i <= created_volume, i++)
- new /obj/item/weapon/reagent_containers/food/snacks/dough(location)
- return
-
-/datum/chemical_reaction/food/syntiflesh
- name = "Syntiflesh"
- id = "syntiflesh"
- result = null
- required_reagents = list("blood" = 5, "clonexadone" = 5)
- result_amount = 1
-
-/datum/chemical_reaction/food/syntiflesh/on_reaction(var/datum/reagents/holder, var/created_volume)
- var/location = get_turf(holder.my_atom)
- for(var/i = 1, i <= created_volume, i++)
- new /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh(location)
- return
-
-/datum/chemical_reaction/hot_ramen
- name = "Hot Ramen"
- id = "hot_ramen"
- result = "hot_ramen"
- required_reagents = list("water" = 1, "dry_ramen" = 3)
- result_amount = 3
-
-/datum/chemical_reaction/hell_ramen
- name = "Hell Ramen"
- id = "hell_ramen"
- result = "hell_ramen"
- required_reagents = list("capsaicin" = 1, "hot_ramen" = 6)
- result_amount = 6
-
-/* Alcohol */
-
-/datum/chemical_reaction/drinks/goldschlager
- name = "Goldschlager"
- id = "goldschlager"
- result = "goldschlager"
- required_reagents = list("vodka" = 10, "gold" = 1)
- result_amount = 10
-
-/datum/chemical_reaction/drinks/patron
- name = "Patron"
- id = "patron"
- result = "patron"
- required_reagents = list("tequilla" = 10, "silver" = 1)
- result_amount = 10
-
-/datum/chemical_reaction/drinks/bilk
- name = "Bilk"
- id = "bilk"
- result = "bilk"
- required_reagents = list("milk" = 1, "beer" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/drinks/icetea
- name = "Iced Tea"
- id = "icetea"
- result = "icetea"
- required_reagents = list("ice" = 1, "tea" = 2)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/icecoffee
- name = "Iced Coffee"
- id = "icecoffee"
- result = "icecoffee"
- required_reagents = list("ice" = 1, "coffee" = 2)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/nuka_cola
- name = "Nuclear Cola"
- id = "nuka_cola"
- result = "nuka_cola"
- required_reagents = list("uranium" = 1, "cola" = 5)
- result_amount = 5
-
-/datum/chemical_reaction/drinks/moonshine
- name = "Moonshine"
- id = "moonshine"
- result = "moonshine"
- required_reagents = list("nutriment" = 10)
- catalysts = list("enzyme" = 5)
- result_amount = 10
-
-/datum/chemical_reaction/drinks/grenadine
- name = "Grenadine Syrup"
- id = "grenadine"
- result = "grenadine"
- required_reagents = list("berryjuice" = 10)
- catalysts = list("enzyme" = 5)
- result_amount = 10
-
-/datum/chemical_reaction/drinks/wine
- name = "Wine"
- id = "wine"
- result = "wine"
- required_reagents = list("grapejuice" = 10)
- catalysts = list("enzyme" = 5)
- result_amount = 10
-
-/datum/chemical_reaction/drinks/pwine
- name = "Poison Wine"
- id = "pwine"
- result = "pwine"
- required_reagents = list("poisonberryjuice" = 10)
- catalysts = list("enzyme" = 5)
- result_amount = 10
-
-/datum/chemical_reaction/drinks/melonliquor
- name = "Melon Liquor"
- id = "melonliquor"
- result = "melonliquor"
- required_reagents = list("watermelonjuice" = 10)
- catalysts = list("enzyme" = 5)
- result_amount = 10
-
-/datum/chemical_reaction/drinks/bluecuracao
- name = "Blue Curacao"
- id = "bluecuracao"
- result = "bluecuracao"
- required_reagents = list("orangejuice" = 10)
- catalysts = list("enzyme" = 5)
- result_amount = 10
-
-/datum/chemical_reaction/drinks/spacebeer
- name = "Space Beer"
- id = "spacebeer"
- result = "beer"
- required_reagents = list("cornoil" = 10)
- catalysts = list("enzyme" = 5)
- result_amount = 10
-
-/datum/chemical_reaction/drinks/vodka
- name = "Vodka"
- id = "vodka"
- result = "vodka"
- required_reagents = list("potatojuice" = 10)
- catalysts = list("enzyme" = 5)
- result_amount = 10
-
-/datum/chemical_reaction/drinks/cider
- name = "Cider"
- id = "cider"
- result = "cider"
- required_reagents = list("applejuice" = 10)
- catalysts = list("enzyme" = 5)
- result_amount = 10
-
-
-/datum/chemical_reaction/drinks/sake
- name = "Sake"
- id = "sake"
- result = "sake"
- required_reagents = list("rice" = 10)
- catalysts = list("enzyme" = 5)
- result_amount = 10
-
-/datum/chemical_reaction/drinks/kahlua
- name = "Kahlua"
- id = "kahlua"
- result = "kahlua"
- required_reagents = list("coffee" = 5, "sugar" = 5)
- catalysts = list("enzyme" = 5)
- result_amount = 5
-
-/datum/chemical_reaction/drinks/gin_tonic
- name = "Gin and Tonic"
- id = "gintonic"
- result = "gintonic"
- required_reagents = list("gin" = 2, "tonic" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/cuba_libre
- name = "Cuba Libre"
- id = "cubalibre"
- result = "cubalibre"
- required_reagents = list("rum" = 2, "cola" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/martini
- name = "Classic Martini"
- id = "martini"
- result = "martini"
- required_reagents = list("gin" = 2, "vermouth" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/vodkamartini
- name = "Vodka Martini"
- id = "vodkamartini"
- result = "vodkamartini"
- required_reagents = list("vodka" = 2, "vermouth" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/white_russian
- name = "White Russian"
- id = "whiterussian"
- result = "whiterussian"
- required_reagents = list("blackrussian" = 2, "cream" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/whiskey_cola
- name = "Whiskey Cola"
- id = "whiskeycola"
- result = "whiskeycola"
- required_reagents = list("whiskey" = 2, "cola" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/screwdriver
- name = "Screwdriver"
- id = "screwdrivercocktail"
- result = "screwdrivercocktail"
- required_reagents = list("vodka" = 2, "orangejuice" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/bloody_mary
- name = "Bloody Mary"
- id = "bloodymary"
- result = "bloodymary"
- required_reagents = list("vodka" = 2, "tomatojuice" = 3, "limejuice" = 1)
- result_amount = 6
-
-/datum/chemical_reaction/drinks/gargle_blaster
- name = "Pan-Galactic Gargle Blaster"
- id = "gargleblaster"
- result = "gargleblaster"
- required_reagents = list("vodka" = 2, "gin" = 1, "whiskey" = 1, "cognac" = 1, "limejuice" = 1)
- result_amount = 6
-
-/datum/chemical_reaction/drinks/brave_bull
- name = "Brave Bull"
- id = "bravebull"
- result = "bravebull"
- required_reagents = list("tequilla" = 2, "kahlua" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/tequilla_sunrise
- name = "Tequilla Sunrise"
- id = "tequillasunrise"
- result = "tequillasunrise"
- required_reagents = list("tequilla" = 2, "orangejuice" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/phoron_special
- name = "Toxins Special"
- id = "phoronspecial"
- result = "phoronspecial"
- required_reagents = list("rum" = 2, "vermouth" = 2, "phoron" = 2)
- result_amount = 6
-
-//CHOMPStation Edit TFF 24/9/19 - Minor change to make it easier for no runtimes with casino.dm
-/datum/chemical_reaction/drinks/beepskysmash
- name = "Beepksy Smash"
- id = "beepksysmash"
- result = "beepskysmash"
- required_reagents = list("limejuice" = 1, "whiskey" = 1, "iron" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/drinks/doctor_delight
- name = "The Doctor's Delight"
- id = "doctordelight"
- result = "doctorsdelight"
- required_reagents = list("limejuice" = 1, "tomatojuice" = 1, "orangejuice" = 1, "cream" = 2, "tricordrazine" = 1)
- result_amount = 6
-
-/datum/chemical_reaction/drinks/irish_cream
- name = "Irish Cream"
- id = "irishcream"
- result = "irishcream"
- required_reagents = list("whiskey" = 2, "cream" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/manly_dorf
- name = "The Manly Dorf"
- id = "manlydorf"
- result = "manlydorf"
- required_reagents = list ("beer" = 1, "ale" = 2)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/hooch
- name = "Hooch"
- id = "hooch"
- result = "hooch"
- required_reagents = list ("sugar" = 1, "ethanol" = 2, "fuel" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/irish_coffee
- name = "Irish Coffee"
- id = "irishcoffee"
- result = "irishcoffee"
- required_reagents = list("irishcream" = 1, "coffee" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/drinks/b52
- name = "B-52"
- id = "b52"
- result = "b52"
- required_reagents = list("irishcream" = 1, "kahlua" = 1, "cognac" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/atomicbomb
- name = "Atomic Bomb"
- id = "atomicbomb"
- result = "atomicbomb"
- required_reagents = list("b52" = 10, "uranium" = 1)
- result_amount = 10
-
-/datum/chemical_reaction/drinks/margarita
- name = "Margarita"
- id = "margarita"
- result = "margarita"
- required_reagents = list("tequilla" = 2, "limejuice" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/longislandicedtea
- name = "Long Island Iced Tea"
- id = "longislandicedtea"
- result = "longislandicedtea"
- required_reagents = list("vodka" = 1, "gin" = 1, "tequilla" = 1, "cubalibre" = 3)
- result_amount = 6
-
-/datum/chemical_reaction/drinks/icedtea
- name = "Long Island Iced Tea"
- id = "longislandicedtea"
- result = "longislandicedtea"
- required_reagents = list("vodka" = 1, "gin" = 1, "tequilla" = 1, "cubalibre" = 3)
- result_amount = 6
-
-/datum/chemical_reaction/drinks/threemileisland
- name = "Three Mile Island Iced Tea"
- id = "threemileisland"
- result = "threemileisland"
- required_reagents = list("longislandicedtea" = 10, "uranium" = 1)
- result_amount = 10
-
-/datum/chemical_reaction/drinks/whiskeysoda
- name = "Whiskey Soda"
- id = "whiskeysoda"
- result = "whiskeysoda"
- required_reagents = list("whiskey" = 2, "sodawater" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/black_russian
- name = "Black Russian"
- id = "blackrussian"
- result = "blackrussian"
- required_reagents = list("vodka" = 2, "kahlua" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/manhattan
- name = "Manhattan"
- id = "manhattan"
- result = "manhattan"
- required_reagents = list("whiskey" = 2, "vermouth" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/manhattan_proj
- name = "Manhattan Project"
- id = "manhattan_proj"
- result = "manhattan_proj"
- required_reagents = list("manhattan" = 10, "uranium" = 1)
- result_amount = 10
-
-/datum/chemical_reaction/drinks/vodka_tonic
- name = "Vodka and Tonic"
- id = "vodkatonic"
- result = "vodkatonic"
- required_reagents = list("vodka" = 2, "tonic" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/gin_fizz
- name = "Gin Fizz"
- id = "ginfizz"
- result = "ginfizz"
- required_reagents = list("gin" = 1, "sodawater" = 1, "limejuice" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/bahama_mama
- name = "Bahama mama"
- id = "bahama_mama"
- result = "bahama_mama"
- required_reagents = list("rum" = 2, "orangejuice" = 2, "limejuice" = 1, "ice" = 1)
- result_amount = 6
-
-/datum/chemical_reaction/drinks/singulo
- name = "Singulo"
- id = "singulo"
- result = "singulo"
- required_reagents = list("vodka" = 5, "radium" = 1, "wine" = 5)
- result_amount = 10
-
-/datum/chemical_reaction/drinks/alliescocktail
- name = "Allies Cocktail"
- id = "alliescocktail"
- result = "alliescocktail"
- required_reagents = list("martini" = 1, "vodka" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/drinks/demonsblood
- name = "Demons Blood"
- id = "demonsblood"
- result = "demonsblood"
- required_reagents = list("rum" = 3, "spacemountainwind" = 1, "blood" = 1, "dr_gibb" = 1)
- result_amount = 6
-
-/datum/chemical_reaction/drinks/booger
- name = "Booger"
- id = "booger"
- result = "booger"
- required_reagents = list("cream" = 2, "banana" = 1, "rum" = 1, "watermelonjuice" = 1)
- result_amount = 5
-
-/datum/chemical_reaction/drinks/antifreeze
- name = "Anti-freeze"
- id = "antifreeze"
- result = "antifreeze"
- required_reagents = list("vodka" = 1, "cream" = 1, "ice" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/barefoot
- name = "Barefoot"
- id = "barefoot"
- result = "barefoot"
- required_reagents = list("berryjuice" = 1, "cream" = 1, "vermouth" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/grapesoda
- name = "Grape Soda"
- id = "grapesoda"
- result = "grapesoda"
- required_reagents = list("grapejuice" = 2, "cola" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/sbiten
- name = "Sbiten"
- id = "sbiten"
- result = "sbiten"
- required_reagents = list("vodka" = 10, "capsaicin" = 1)
- result_amount = 10
-
-/datum/chemical_reaction/drinks/red_mead
- name = "Red Mead"
- id = "red_mead"
- result = "red_mead"
- required_reagents = list("blood" = 1, "mead" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/drinks/mead
- name = "Mead"
- id = "mead"
- result = "mead"
- required_reagents = list("sugar" = 1, "water" = 1)
- catalysts = list("enzyme" = 5)
- result_amount = 2
-
-/datum/chemical_reaction/drinks/iced_beer
- name = "Iced Beer"
- id = "iced_beer"
- result = "iced_beer"
- required_reagents = list("beer" = 10, "frostoil" = 1)
- result_amount = 10
-
-/datum/chemical_reaction/drinks/iced_beer2
- name = "Iced Beer"
- id = "iced_beer"
- result = "iced_beer"
- required_reagents = list("beer" = 5, "ice" = 1)
- result_amount = 6
-
-/datum/chemical_reaction/drinks/grog
- name = "Grog"
- id = "grog"
- result = "grog"
- required_reagents = list("rum" = 1, "water" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/drinks/soy_latte
- name = "Soy Latte"
- id = "soy_latte"
- result = "soy_latte"
- required_reagents = list("coffee" = 1, "soymilk" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/drinks/cafe_latte
- name = "Cafe Latte"
- id = "cafe_latte"
- result = "cafe_latte"
- required_reagents = list("coffee" = 1, "milk" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/drinks/acidspit
- name = "Acid Spit"
- id = "acidspit"
- result = "acidspit"
- required_reagents = list("sacid" = 1, "wine" = 5)
- result_amount = 6
-
-/datum/chemical_reaction/drinks/amasec
- name = "Amasec"
- id = "amasec"
- result = "amasec"
- required_reagents = list("iron" = 1, "wine" = 5, "vodka" = 5)
- result_amount = 10
-
-/datum/chemical_reaction/drinks/changelingsting
- name = "Changeling Sting"
- id = "changelingsting"
- result = "changelingsting"
- required_reagents = list("screwdrivercocktail" = 1, "limejuice" = 1, "lemonjuice" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/aloe
- name = "Aloe"
- id = "aloe"
- result = "aloe"
- required_reagents = list("cream" = 1, "whiskey" = 1, "watermelonjuice" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/andalusia
- name = "Andalusia"
- id = "andalusia"
- result = "andalusia"
- required_reagents = list("rum" = 1, "whiskey" = 1, "lemonjuice" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/snowwhite
- name = "Snow White"
- id = "snowwhite"
- result = "snowwhite"
- required_reagents = list("beer" = 1, "lemon_lime" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/drinks/irishcarbomb
- name = "Irish Car Bomb"
- id = "irishcarbomb"
- result = "irishcarbomb"
- required_reagents = list("ale" = 1, "irishcream" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/drinks/syndicatebomb
- name = "Syndicate Bomb"
- id = "syndicatebomb"
- result = "syndicatebomb"
- required_reagents = list("beer" = 1, "whiskeycola" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/drinks/erikasurprise
- name = "Erika Surprise"
- id = "erikasurprise"
- result = "erikasurprise"
- required_reagents = list("ale" = 2, "limejuice" = 1, "whiskey" = 1, "banana" = 1, "ice" = 1)
- result_amount = 6
-
-/datum/chemical_reaction/drinks/devilskiss
- name = "Devils Kiss"
- id = "devilskiss"
- result = "devilskiss"
- required_reagents = list("blood" = 1, "kahlua" = 1, "rum" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/hippiesdelight
- name = "Hippies Delight"
- id = "hippiesdelight"
- result = "hippiesdelight"
- required_reagents = list("psilocybin" = 1, "gargleblaster" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/drinks/bananahonk
- name = "Banana Honk"
- id = "bananahonk"
- result = "bananahonk"
- required_reagents = list("banana" = 1, "cream" = 1, "sugar" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/silencer
- name = "Silencer"
- id = "silencer"
- result = "silencer"
- required_reagents = list("nothing" = 1, "cream" = 1, "sugar" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/driestmartini
- name = "Driest Martini"
- id = "driestmartini"
- result = "driestmartini"
- required_reagents = list("nothing" = 1, "gin" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/drinks/lemonade
- name = "Lemonade"
- id = "lemonade"
- result = "lemonade"
- required_reagents = list("lemonjuice" = 1, "sugar" = 1, "water" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/kiraspecial
- name = "Kira Special"
- id = "kiraspecial"
- result = "kiraspecial"
- required_reagents = list("orangejuice" = 1, "limejuice" = 1, "sodawater" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/brownstar
- name = "Brown Star"
- id = "brownstar"
- result = "brownstar"
- required_reagents = list("orangejuice" = 2, "cola" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/milkshake
- name = "Milkshake"
- id = "milkshake"
- result = "milkshake"
- required_reagents = list("cream" = 1, "ice" = 2, "milk" = 2)
- result_amount = 5
-
-/datum/chemical_reaction/drinks/rewriter
- name = "Rewriter"
- id = "rewriter"
- result = "rewriter"
- required_reagents = list("spacemountainwind" = 1, "coffee" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/drinks/suidream
- name = "Sui Dream"
- id = "suidream"
- result = "suidream"
- required_reagents = list("space_up" = 1, "bluecuracao" = 1, "melonliquor" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/shirleytemple
- name = "Shirley Temple"
- id = "shirley_temple"
- result = "shirley_temple"
- required_reagents = list("gingerale" = 4, "grenadine" = 1)
- result_amount = 5
-
-//CHOMPStation Edit TFF 24/9/19 - Minor change to make it easier for no runtimes with casino.dm
-/datum/chemical_reaction/drinks/royrogers
- name = "Roy Rogers"
- id = "royrogers"
- result = "royrogers"
- required_reagents = list("gingerale" = 4, "lemon_lime" = 2, "grenadine" = 1)
- result_amount = 7
-
-/datum/chemical_reaction/drinks/collinsmix
- name = "Collins Mix"
- id = "collins_mix"
- result = "collins_mix"
- required_reagents = list("lemon_lime" = 3, "sodawater" = 1)
- result_amount = 4
-
-/datum/chemical_reaction/drinks/arnoldpalmer
- name = "Arnold Palmer"
- id = "arnold_palmer"
- result = "arnold_palmer"
- required_reagents = list("icetea" = 1, "lemonade" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/drinks/minttea
- name = "Mint Tea"
- id = "minttea"
- result = "minttea"
- required_reagents = list("tea" = 5, "mint" = 1)
- result_amount = 6
-
-/datum/chemical_reaction/drinks/lemontea
- name = "Lemon Tea"
- id = "lemontea"
- result = "lemontea"
- required_reagents = list("tea" = 5, "lemonjuice" = 1)
- result_amount = 6
-
-/datum/chemical_reaction/drinks/limetea
- name = "Lime Tea"
- id = "limetea"
- result = "limetea"
- required_reagents = list("tea" = 5, "limejuice" = 1)
- result_amount = 6
-
-/datum/chemical_reaction/drinks/orangetea
- name = "Orange Tea"
- id = "orangetea"
- result = "orangetea"
- required_reagents = list("tea" = 5, "orangejuice" = 1)
- result_amount = 6
-
-/datum/chemical_reaction/drinks/berrytea
- name = "Berry Tea"
- id = "berrytea"
- result = "berrytea"
- required_reagents = list("tea" = 5, "berryjuice" = 1)
- result_amount = 6
-
-/datum/chemical_reaction/drinks/cherrytea
- name = "Cherry Tea"
- id = "cherrytea"
- result = "cherrytea"
- required_reagents = list("tea" = 5, "cherryjelly" = 1)
- result_amount = 6
-
-/datum/chemical_reaction/drinks/watermelontea
- name = "Watermelon Tea"
- id = "watermelontea"
- result = "watermelontea"
- required_reagents = list("tea" = 5, "watermelonjuice" = 1)
- result_amount = 6
-
-/datum/chemical_reaction/drinks/sakebomb
- name = "Sake Bomb"
- id = "sakebomb"
- result = "sakebomb"
- required_reagents = list("beer" = 2, "sake" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/tamagozake
- name = "Tamagozake"
- id = "tamagozake"
- result = "tamagozake"
- required_reagents = list("sake" = 10, "sugar" = 5, "egg" = 3)
- result_amount = 15
-
-/datum/chemical_reaction/drinks/ginzamary
- name = "Ginza Mary"
- id = "ginzamary"
- result = "ginzamary"
- required_reagents = list("sake" = 2, "vodka" = 2, "tomatojuice" = 1)
- result_amount = 5
-
-/datum/chemical_reaction/drinks/tokyorose
- name = "Tokyo Rose"
- id = "tokyorose"
- result = "tokyorose"
- required_reagents = list("sake" = 1, "berryjuice" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/drinks/saketini
- name = "Saketini"
- id = "saketini"
- result = "saketini"
- required_reagents = list("sake" = 1, "gin" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/drinks/elysiumfacepunch
- name = "Elysium Facepunch"
- id = "elysiumfacepunch"
- result = "elysiumfacepunch"
- required_reagents = list("kahlua" = 1, "lemonjuice" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/drinks/erebusmoonrise
- name = "Erebus Moonrise"
- id = "erebusmoonrise"
- result = "erebusmoonrise"
- required_reagents = list("whiskey" = 1, "vodka" = 1, "tequilla" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/balloon
- name = "Balloon"
- id = "balloon"
- result = "balloon"
- required_reagents = list("cream" = 1, "bluecuracao" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/drinks/natunabrandy
- name = "Natuna Brandy"
- id = "natunabrandy"
- result = "natunabrandy"
- required_reagents = list("beer" = 1, "sodawater" = 2)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/euphoria
- name = "Euphoria"
- id = "euphoria"
- result = "euphoria"
- required_reagents = list("specialwhiskey" = 1, "cognac" = 2)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/xanaducannon
- name = "Xanadu Cannon"
- id = "xanaducannon"
- result = "xanaducannon"
- required_reagents = list("ale" = 1, "dr_gibb" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/drinks/debugger
- name = "Debugger"
- id = "debugger"
- result = "debugger"
- required_reagents = list("fuel" = 1, "sugar" = 2, "cornoil" = 2)
- result_amount = 5
-
-/datum/chemical_reaction/drinks/spacersbrew
- name = "Spacer's Brew"
- id = "spacersbrew"
- result = "spacersbrew"
- required_reagents = list("brownstar" = 4, "ethanol" = 1)
- result_amount = 5
-
-/datum/chemical_reaction/drinks/binmanbliss
- name = "Binman Bliss"
- id = "binmanbliss"
- result = "binmanbliss"
- required_reagents = list("sake" = 1, "tequilla" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/drinks/chrysanthemum
- name = "Chrysanthemum"
- id = "chrysanthemum"
- result = "chrysanthemum"
- required_reagents = list("sake" = 1, "melonliquor" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/bitters
- name = "Bitters"
- id = "bitters"
- result = "bitters"
- required_reagents = list("mint" = 5)
- catalysts = list("enzyme" = 5)
- result_amount = 5
-
-/datum/chemical_reaction/drinks/soemmerfire
- name = "Soemmer Fire"
- id = "soemmerfire"
- result = "soemmerfire"
- required_reagents = list("manhattan" = 2, "condensedcapsaicin" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/winebrandy
- name = "Wine brandy"
- id = "winebrandy"
- result = "winebrandy"
- required_reagents = list("wine" = 10)
- catalysts = list("enzyme" = 10) //10u enzyme so it requires more than is usually added. Stops overlap with wine recipe
- result_amount = 5
-
-/datum/chemical_reaction/drinks/lovepotion
- name = "Love Potion"
- id = "lovepotion"
- result = "lovepotion"
- required_reagents = list("cream" = 1, "berryjuice" = 1, "sugar" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/morningafter
- name = "Morning After"
- id = "morningafter"
- result = "morningafter"
- required_reagents = list("sbiten" = 1, "coffee" = 5)
- result_amount = 6
-
-/datum/chemical_reaction/drinks/vesper
- name = "Vesper"
- id = "vesper"
- result = "vesper"
- required_reagents = list("gin" = 3, "vodka" = 1, "wine" = 1)
- result_amount = 4
-
-/datum/chemical_reaction/drinks/rotgut
- name = "Rotgut Fever Dream"
- id = "rotgut"
- result = "rotgut"
- required_reagents = list("vodka" = 3, "rum" = 1, "whiskey" = 1, "cola" = 3)
- result_amount = 8
-
-/datum/chemical_reaction/drinks/entdraught
- name = "Ent's Draught"
- id = "entdraught"
- result = "entdraught"
- required_reagents = list("tonic" = 1, "holywater" = 1, "honey" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/voxdelight
- name = "Vox's Delight"
- id = "voxdelight"
- result = "voxdelight"
- required_reagents = list("phoron" = 3, "fuel" = 1, "water" = 1)
- result_amount = 4
-
-/datum/chemical_reaction/drinks/screamingviking
- name = "Screaming Viking"
- id = "screamingviking"
- result = "screamingviking"
- required_reagents = list("vodka" = 1, "vermouth" = 1, "limejuice" = 1, "rum" = 1, "gin" = 1, "tonic" = 1)
- result_amount = 6
-
-/datum/chemical_reaction/drinks/vilelemon
- name = "Vile Lemon"
- id = "vilelemon"
- result = "vilelemon"
- required_reagents = list("lemonade" = 5, "spacemountainwind" = 1)
- result_amount = 6
-
-/datum/chemical_reaction/drinks/dreamcream
- name = "Dream Cream"
- id = "dreamcream"
- result = "dreamcream"
- required_reagents = list("milk" = 2, "cream" = 1, "honey" = 1)
- result_amount = 4
-
-/datum/chemical_reaction/drinks/robustin
- name = "Robustin"
- id = "robustin"
- result = "robustin"
- required_reagents = list("antifreeze" = 1, "phoron" = 1, "fuel" = 1, "vodka" = 1)
- result_amount = 4
-
-/datum/chemical_reaction/drinks/virginsip
- name = "Virgin Sip"
- id = "virginsip"
- result = "virginsip"
- required_reagents = list("driestmartini" = 1, "water" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/drinks/chocoshake
- name = "Chocolate Milkshake"
- id = "chocoshake"
- result = "chocoshake"
- required_reagents = list("milkshake" = 1, "coco" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/drinks/berryshake
- name = "Berry Milkshake"
- id = "berryshake"
- result = "berryshake"
- required_reagents = list("milkshake" = 1, "berryjuice" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/drinks/coffeeshake
- name = "Coffee Milkshake"
- id = "coffeeshake"
- result = "coffeeshake"
- required_reagents = list("milkshake" = 1, "coffee" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/drinks/jellyshot
- name = "Jelly Shot"
- id = "jellyshot"
- result = "jellyshot"
- required_reagents = list("cherryjelly" = 4, "vodka" = 1)
- result_amount = 5
-
-/datum/chemical_reaction/drinks/slimeshot
- name = "Named Bullet"
- id = "slimeshot"
- result = "slimeshot"
- required_reagents = list("slimejelly" = 4, "vodka" = 1)
- result_amount = 5
-
-/datum/chemical_reaction/drinks/negroni
- name = "Negroni"
- id = "negroni"
- result = "negroni"
- required_reagents = list("gin" = 1, "bitters" = 1, "vermouth" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/cloverclub
- name = "Clover Club"
- id = "cloverclub"
- result = "cloverclub"
- required_reagents = list("berryjuice" = 1, "lemonjuice" = 1, "gin" = 3)
- result_amount = 5
-
-/datum/chemical_reaction/drinks/oldfashioned
- name = "Old Fashioned"
- id = "oldfashioned"
- result = "oldfashioned"
- required_reagents = list("whiskey" = 3, "bitters" = 1, "sugar" = 1)
- result_amount = 5
-
-/datum/chemical_reaction/drinks/whiskeysour
- name = "Whiskey Sour"
- id = "whiskeysour"
- result = "whiskeysour"
- required_reagents = list("whiskey" = 2, "lemonjuice" = 1, "sugar" = 1)
- result_amount = 4
-
-/datum/chemical_reaction/drinks/daiquiri
- name = "Daiquiri"
- id = "daiquiri"
- result = "daiquiri"
- required_reagents = list("rum" = 3, "limejuice" = 2, "sugar" = 1)
- result_amount = 5
-
-/datum/chemical_reaction/drinks/mintjulep
- name = "Mint Julep"
- id = "mintjulep"
- result = "mintjulep"
- required_reagents = list("whiskey" = 2, "water" = 1, "mint" = 1)
- result_amount = 4
-
-/datum/chemical_reaction/drinks/paloma
- name = "Paloma"
- id = "paloma"
- result = "paloma"
- required_reagents = list("orangejuice" = 1, "sodawater" = 1, "tequilla" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/mojito
- name = "Mojito"
- id = "mojito"
- result = "mojito"
- required_reagents = list("rum" = 3, "limejuice" = 1, "mint" = 1)
- result_amount = 5
-
-/datum/chemical_reaction/drinks/piscosour
- name = "Pisco Sour"
- id = "piscosour"
- result = "piscosour"
- required_reagents = list("winebrandy" = 1, "lemonjuice" = 1, "sugar" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/coldfront
- name = "Cold Front"
- id = "coldfront"
- result = "coldfront"
- required_reagents = list("icecoffee" = 1, "whiskey" = 1, "mint" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/eggnog
- name = "Eggnog"
- id = "eggnog"
- result = "eggnog"
- required_reagents = list("sugar" = 1, "egg" = 1, "milk" = 1, "cream" = 1, "cognac" = 2)
- result_amount = 6
-
-/datum/chemical_reaction/drinks/spiderdrink
- name = "Brimming glass of spiders"
- id = "spiderdrink"
- result = "spiderdrink"
- required_reagents = list("spidertoxin" = 1, "clonexadone" = 5, "absinthe" = 4)
- result_amount = 10
-
-/datum/chemical_reaction/drinks/bubbleteawatermelon
- name = "Watermelon bubble tea"
- id = "bubbleteawatermelon"
- result = "bubbleteawatermelon"
- required_reagents = list("gelatin" = 2, "watermelontea" = 6, "milk" = 2)
- result_amount = 10
-
-/datum/chemical_reaction/drinks/bubbleteastrawberry
- name = "Strawberry bubble tea"
- id = "bubbleteastrawberry"
- result = "bubbleteastrawberry"
- required_reagents = list("gelatin" = 2, "berrytea" = 6, "milk" = 2)
- result_amount = 10
-
-/datum/chemical_reaction/drinks/bubbleteacherry
- name = "Cherry bubble tea"
- id = "bubbleteacherry"
- result = "bubbleteacherry"
- required_reagents = list("gelatin" = 2, "cherrytea" = 6, "milk" = 2)
- result_amount = 10
-
-/datum/chemical_reaction/drinks/bubbleteacoffee
- name = "Coffee bubble tea"
- id = "bubbleteacoffee"
- result = "bubbleteacoffee"
- required_reagents = list("gelatin" = 2, "tea" = 5, "cafe_latte" = 3)
- result_amount = 10
-
-/datum/chemical_reaction/drinks/bubbleteabanana
- name = "Banana bubble tea"
- id = "bubbleteabanana"
- result = "bubbleteabanana"
- required_reagents = list("gelatin" = 2, "tea" = 5, "banana" = 1, "milk" = 2)
- result_amount = 10
-
-/datum/chemical_reaction/drinks/horchata
- name = "Horchata"
- id = "horchata"
- result = "horchata"
- required_reagents = list("milk" = 1, "sugar" = 2, "rice" = 2)
- result_amount = 5
-
-/datum/chemical_reaction/drinks/bluetrain
- name = "Blue train"
- id = "bluetrain"
- result = "bluetrain"
- required_reagents = list("coolant" = 2, "ethanol" = 2, "nutriment" = 1)
- result_amount = 5
-
-/datum/chemical_reaction/drinks/lowpower
- name = "The low power"
- id = "lowpower"
- result = "lowpower"
- required_reagents = list("lemonade" = 1, "cream" = 1, "limejuice" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/jackbrew
- name = "Jack's brew"
- id = "jackbrew"
- result = "jackbrew"
- required_reagents = list("irishcoffee" = 1, "hyperzine" = 1)
- result_amount = 2
-
-/datum/chemical_reaction/drinks/bookwyrm
- name = "Bookwyrm's bite"
- id = "bookwyrm"
- result = "bookwyrm"
- required_reagents = list("coldfront" = 1, "limejuice" = 1, "stoxin" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/highpower
- name = "The high power"
- id = "highpower"
- result = "highpower"
- required_reagents = list("lowpower" = 1, "iron" = 1, "uranium" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/flapper
- name = "Flapper"
- id = "flapper"
- result = "flapper"
- required_reagents = list("whiskey" = 1, "blood" = 1, "ice" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/toxin/oilslide
- name = "Oil slide"
- id = "oilslide"
- result = "oilslide"
- required_reagents = list("moonshine" = 1, "lube" = 1, "fuel" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/sitonmyface
- name = "Sit on my face"
- id = "sitonmyface"
- result = "sitonmyface"
- required_reagents = list("kahlua" = 1, "irishcream" = 1, "nutbutter" = 1)
- result_amount = 3
-
-/datum/chemical_reaction/drinks/hachi
- name = "Hachi"
- id = "hachi"
- result = "hachi"
- required_reagents = list("burbon" = 2, "sake" = 1, "lemonjuice" = 1, "mushroom" = 1)
- result_amount = 5
-
-//R-UST Port
-/datum/chemical_reaction/hyrdophoron
- name = "Hydrophoron"
- id = "hydrophoron"
- result = "hydrophoron"
- required_reagents = list("hydrogen" = 1, "phoron" = 1)
- inhibitors = list("nitrogen" = 1) //So it doesn't mess with lexorin
- result_amount = 2
-
-/datum/chemical_reaction/deuterium
- name = "Deuterium"
- id = "deuterium"
- result = null
- required_reagents = list("hydrophoron" = 5, "water" = 10)
- result_amount = 15
-
-/datum/chemical_reaction/deuterium/on_reaction(var/datum/reagents/holder, var/created_volume)
- var/turf/T = get_turf(holder.my_atom)
- if(istype(T)) new /obj/item/stack/material/deuterium(T, created_volume)
- return
-
-//Skrellian crap.
-/datum/chemical_reaction/talum_quem
- name = "Talum-quem"
- id = "talum_quem"
- result = "talum_quem"
- required_reagents = list("space_drugs" = 2, "sugar" = 1, "amatoxin" = 1)
- result_amount = 4
-
-/datum/chemical_reaction/qerr_quem
- name = "Qerr-quem"
- id = "qerr_quem"
- result = "qerr_quem"
- required_reagents = list("nicotine" = 1, "carbon" = 1, "sugar" = 2)
- result_amount = 4
+
+//Chemical Reactions - Initialises all /datum/chemical_reaction into a list
+// It is filtered into multiple lists within a list.
+// For example:
+// chemical_reaction_list["phoron"] is a list of all reactions relating to phoron
+// Note that entries in the list are NOT duplicated. So if a reaction pertains to
+// more than one chemical it will still only appear in only one of the sublists.
+/proc/initialize_chemical_reactions()
+ var/paths = typesof(/datum/chemical_reaction) - /datum/chemical_reaction
+ chemical_reactions_list = list()
+
+ for(var/path in paths)
+ var/datum/chemical_reaction/D = new path()
+ if(D.required_reagents && D.required_reagents.len)
+ var/reagent_id = D.required_reagents[1]
+ if(!chemical_reactions_list[reagent_id])
+ chemical_reactions_list[reagent_id] = list()
+ chemical_reactions_list[reagent_id] += D
+
+//helper that ensures the reaction rate holds after iterating
+//Ex. REACTION_RATE(0.3) means that 30% of the reagents will react each chemistry tick (~2 seconds by default).
+#define REACTION_RATE(rate) (1.0 - (1.0-rate)**(1.0/PROCESS_REACTION_ITER))
+
+//helper to define reaction rate in terms of half-life
+//Ex.
+//HALF_LIFE(0) -> Reaction completes immediately (default chems)
+//HALF_LIFE(1) -> Half of the reagents react immediately, the rest over the following ticks.
+//HALF_LIFE(2) -> Half of the reagents are consumed after 2 chemistry ticks.
+//HALF_LIFE(3) -> Half of the reagents are consumed after 3 chemistry ticks.
+#define HALF_LIFE(ticks) (ticks? 1.0 - (0.5)**(1.0/(ticks*PROCESS_REACTION_ITER)) : 1.0)
+
+/datum/chemical_reaction
+ var/name = null
+ var/id = null
+ var/result = null
+ var/list/required_reagents = list()
+ var/list/catalysts = list()
+ var/list/inhibitors = list()
+ var/result_amount = 0
+
+ //how far the reaction proceeds each time it is processed. Used with either REACTION_RATE or HALF_LIFE macros.
+ var/reaction_rate = HALF_LIFE(0)
+
+ //if less than 1, the reaction will be inhibited if the ratio of products/reagents is too high.
+ //0.5 = 50% yield -> reaction will only proceed halfway until products are removed.
+ var/yield = 1.0
+
+ //If limits on reaction rate would leave less than this amount of any reagent (adjusted by the reaction ratios),
+ //the reaction goes to completion. This is to prevent reactions from going on forever with tiny reagent amounts.
+ var/min_reaction = 2
+
+ var/mix_message = "The solution begins to bubble."
+ var/reaction_sound = 'sound/effects/bubbles.ogg'
+
+ var/log_is_important = 0 // If this reaction should be considered important for logging. Important recipes message admins when mixed, non-important ones just log to file.
+/datum/chemical_reaction/proc/can_happen(var/datum/reagents/holder)
+ //check that all the required reagents are present
+ if(!holder.has_all_reagents(required_reagents))
+ return 0
+
+ //check that all the required catalysts are present in the required amount
+ if(!holder.has_all_reagents(catalysts))
+ return 0
+
+ //check that none of the inhibitors are present in the required amount
+ if(holder.has_any_reagent(inhibitors))
+ return 0
+
+ return 1
+
+/datum/chemical_reaction/proc/calc_reaction_progress(var/datum/reagents/holder, var/reaction_limit)
+ var/progress = reaction_limit * reaction_rate //simple exponential progression
+
+ //calculate yield
+ if(1-yield > 0.001) //if yield ratio is big enough just assume it goes to completion
+ /*
+ Determine the max amount of product by applying the yield condition:
+ (max_product/result_amount) / reaction_limit == yield/(1-yield)
+
+ We make use of the fact that:
+ reaction_limit = (holder.get_reagent_amount(reactant) / required_reagents[reactant]) of the limiting reagent.
+ */
+ var/yield_ratio = yield/(1-yield)
+ var/max_product = yield_ratio * reaction_limit * result_amount //rearrange to obtain max_product
+ var/yield_limit = max(0, max_product - holder.get_reagent_amount(result))/result_amount
+
+ progress = min(progress, yield_limit) //apply yield limit
+
+ //apply min reaction progress - wasn't sure if this should go before or after applying yield
+ //I guess people can just have their miniscule reactions go to completion regardless of yield.
+ for(var/reactant in required_reagents)
+ var/remainder = holder.get_reagent_amount(reactant) - progress*required_reagents[reactant]
+ if(remainder <= min_reaction*required_reagents[reactant])
+ progress = reaction_limit
+ break
+
+ return progress
+
+/datum/chemical_reaction/proc/process(var/datum/reagents/holder)
+ //determine how far the reaction can proceed
+ var/list/reaction_limits = list()
+ for(var/reactant in required_reagents)
+ reaction_limits += holder.get_reagent_amount(reactant) / required_reagents[reactant]
+
+ //determine how far the reaction proceeds
+ var/reaction_limit = min(reaction_limits)
+ var/progress_limit = calc_reaction_progress(holder, reaction_limit)
+
+ var/reaction_progress = min(reaction_limit, progress_limit) //no matter what, the reaction progress cannot exceed the stoichiometric limit.
+
+ //need to obtain the new reagent's data before anything is altered
+ var/data = send_data(holder, reaction_progress)
+
+ //remove the reactants
+ for(var/reactant in required_reagents)
+ var/amt_used = required_reagents[reactant] * reaction_progress
+ holder.remove_reagent(reactant, amt_used, safety = 1)
+
+ //add the product
+ var/amt_produced = result_amount * reaction_progress
+ if(result)
+ holder.add_reagent(result, amt_produced, data, safety = 1)
+
+ on_reaction(holder, amt_produced)
+
+ return reaction_progress
+
+//called when a reaction processes
+/datum/chemical_reaction/proc/on_reaction(var/datum/reagents/holder, var/created_volume)
+ return
+
+//called after processing reactions, if they occurred
+/datum/chemical_reaction/proc/post_reaction(var/datum/reagents/holder)
+ var/atom/container = holder.my_atom
+ if(mix_message && container && !ismob(container))
+ var/turf/T = get_turf(container)
+ var/list/seen = viewers(4, T)
+ for(var/mob/M in seen)
+ M.show_message("\icon[container] [mix_message]", 1)
+ playsound(T, reaction_sound, 80, 1)
+
+//obtains any special data that will be provided to the reaction products
+//this is called just before reactants are removed.
+/datum/chemical_reaction/proc/send_data(var/datum/reagents/holder, var/reaction_limit)
+ return null
+
+/* Common reactions */
+
+/datum/chemical_reaction/inaprovaline
+ name = "Inaprovaline"
+ id = "inaprovaline"
+ result = "inaprovaline"
+ required_reagents = list("oxygen" = 1, "carbon" = 1, "sugar" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/dylovene
+ name = "Dylovene"
+ id = "anti_toxin"
+ result = "anti_toxin"
+ required_reagents = list("silicon" = 1, "potassium" = 1, "nitrogen" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/carthatoline
+ name = "Carthatoline"
+ id = "carthatoline"
+ result = "carthatoline"
+ required_reagents = list("anti_toxin" = 1, "carbon" = 2, "phoron" = 0.1)
+ catalysts = list("phoron" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/tramadol
+ name = "Tramadol"
+ id = "tramadol"
+ result = "tramadol"
+ required_reagents = list("inaprovaline" = 1, "ethanol" = 1, "oxygen" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/paracetamol
+ name = "Paracetamol"
+ id = "paracetamol"
+ result = "paracetamol"
+ required_reagents = list("tramadol" = 1, "sugar" = 1, "water" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/oxycodone
+ name = "Oxycodone"
+ id = "oxycodone"
+ result = "oxycodone"
+ required_reagents = list("ethanol" = 1, "tramadol" = 1)
+ catalysts = list("phoron" = 5)
+ result_amount = 1
+
+/datum/chemical_reaction/sterilizine
+ name = "Sterilizine"
+ id = "sterilizine"
+ result = "sterilizine"
+ required_reagents = list("ethanol" = 1, "anti_toxin" = 1, "chlorine" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/silicate
+ name = "Silicate"
+ id = "silicate"
+ result = "silicate"
+ required_reagents = list("aluminum" = 1, "silicon" = 1, "oxygen" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/mutagen
+ name = "Unstable mutagen"
+ id = "mutagen"
+ result = "mutagen"
+ required_reagents = list("radium" = 1, "phosphorus" = 1, "chlorine" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/water
+ name = "Water"
+ id = "water"
+ result = "water"
+ required_reagents = list("oxygen" = 1, "hydrogen" = 2)
+ result_amount = 1
+
+/datum/chemical_reaction/thermite
+ name = "Thermite"
+ id = "thermite"
+ result = "thermite"
+ required_reagents = list("aluminum" = 1, "iron" = 1, "oxygen" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/space_drugs
+ name = "Space Drugs"
+ id = "space_drugs"
+ result = "space_drugs"
+ required_reagents = list("mercury" = 1, "sugar" = 1, "lithium" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/lube
+ name = "Space Lube"
+ id = "lube"
+ result = "lube"
+ required_reagents = list("water" = 1, "silicon" = 1, "oxygen" = 1)
+ result_amount = 4
+
+/datum/chemical_reaction/pacid
+ name = "Polytrinic acid"
+ id = "pacid"
+ result = "pacid"
+ required_reagents = list("sacid" = 1, "chlorine" = 1, "potassium" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/synaptizine
+ name = "Synaptizine"
+ id = "synaptizine"
+ result = "synaptizine"
+ required_reagents = list("sugar" = 1, "lithium" = 1, "water" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/hyronalin
+ name = "Hyronalin"
+ id = "hyronalin"
+ result = "hyronalin"
+ required_reagents = list("radium" = 1, "anti_toxin" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/arithrazine
+ name = "Arithrazine"
+ id = "arithrazine"
+ result = "arithrazine"
+ required_reagents = list("hyronalin" = 1, "hydrogen" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/impedrezene
+ name = "Impedrezene"
+ id = "impedrezene"
+ result = "impedrezene"
+ required_reagents = list("mercury" = 1, "oxygen" = 1, "sugar" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/kelotane
+ name = "Kelotane"
+ id = "kelotane"
+ result = "kelotane"
+ required_reagents = list("silicon" = 1, "carbon" = 1)
+ result_amount = 2
+ log_is_important = 1
+
+/datum/chemical_reaction/peridaxon
+ name = "Peridaxon"
+ id = "peridaxon"
+ result = "peridaxon"
+ required_reagents = list("bicaridine" = 2, "clonexadone" = 2)
+ catalysts = list("phoron" = 5)
+ result_amount = 2
+
+/datum/chemical_reaction/osteodaxon
+ name = "Osteodaxon"
+ id = "osteodaxon"
+ result = "osteodaxon"
+ required_reagents = list("bicaridine" = 2, "phoron" = 0.1, "carpotoxin" = 1)
+ catalysts = list("phoron" = 5)
+ inhibitors = list("clonexadone" = 1) // Messes with cryox
+ result_amount = 2
+
+/datum/chemical_reaction/virus_food
+ name = "Virus Food"
+ id = "virusfood"
+ result = "virusfood"
+ required_reagents = list("water" = 1, "milk" = 1)
+ result_amount = 5
+
+/datum/chemical_reaction/leporazine
+ name = "Leporazine"
+ id = "leporazine"
+ result = "leporazine"
+ required_reagents = list("silicon" = 1, "copper" = 1)
+ catalysts = list("phoron" = 5)
+ result_amount = 2
+
+/datum/chemical_reaction/cryptobiolin
+ name = "Cryptobiolin"
+ id = "cryptobiolin"
+ result = "cryptobiolin"
+ required_reagents = list("potassium" = 1, "oxygen" = 1, "sugar" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/tricordrazine
+ name = "Tricordrazine"
+ id = "tricordrazine"
+ result = "tricordrazine"
+ required_reagents = list("inaprovaline" = 1, "anti_toxin" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/alkysine
+ name = "Alkysine"
+ id = "alkysine"
+ result = "alkysine"
+ required_reagents = list("chlorine" = 1, "nitrogen" = 1, "anti_toxin" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/dexalin
+ name = "Dexalin"
+ id = "dexalin"
+ result = "dexalin"
+ required_reagents = list("oxygen" = 2, "phoron" = 0.1)
+ catalysts = list("phoron" = 1)
+ inhibitors = list("water" = 1) // Messes with cryox
+ result_amount = 1
+
+/datum/chemical_reaction/dermaline
+ name = "Dermaline"
+ id = "dermaline"
+ result = "dermaline"
+ required_reagents = list("oxygen" = 1, "phosphorus" = 1, "kelotane" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/dexalinp
+ name = "Dexalin Plus"
+ id = "dexalinp"
+ result = "dexalinp"
+ required_reagents = list("dexalin" = 1, "carbon" = 1, "iron" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/bicaridine
+ name = "Bicaridine"
+ id = "bicaridine"
+ result = "bicaridine"
+ required_reagents = list("inaprovaline" = 1, "carbon" = 1)
+ inhibitors = list("sugar" = 1) // Messes up with inaprovaline
+ result_amount = 2
+
+/datum/chemical_reaction/alizene
+ name = "Alizene"
+ id = "alizene"
+ result = "alizene"
+ required_reagents = list("bicaridine" = 1, "serazine" = 1, "tungsten" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/myelamine
+ name = "Myelamine"
+ id = "myelamine"
+ result = "myelamine"
+ required_reagents = list("bicaridine" = 1, "iron" = 2, "spidertoxin" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/hyperzine
+ name = "Hyperzine"
+ id = "hyperzine"
+ result = "hyperzine"
+ required_reagents = list("sugar" = 1, "phosphorus" = 1, "sulfur" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/stimm
+ name = "Stimm"
+ id = "stimm"
+ result = "stimm"
+ required_reagents = list("left4zed" = 1, "fuel" = 1)
+ catalysts = list("fuel" = 5)
+ result_amount = 2
+
+/datum/chemical_reaction/ryetalyn
+ name = "Ryetalyn"
+ id = "ryetalyn"
+ result = "ryetalyn"
+ required_reagents = list("arithrazine" = 1, "carbon" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/cryoxadone
+ name = "Cryoxadone"
+ id = "cryoxadone"
+ result = "cryoxadone"
+ required_reagents = list("dexalin" = 1, "water" = 1, "oxygen" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/clonexadone
+ name = "Clonexadone"
+ id = "clonexadone"
+ result = "clonexadone"
+ required_reagents = list("cryoxadone" = 1, "sodium" = 1, "phoron" = 0.1)
+ catalysts = list("phoron" = 5)
+ result_amount = 2
+
+/datum/chemical_reaction/spaceacillin
+ name = "Spaceacillin"
+ id = "spaceacillin"
+ result = "spaceacillin"
+ required_reagents = list("cryptobiolin" = 1, "inaprovaline" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/corophizine
+ name = "Corophizine"
+ id = "corophizine"
+ result = "corophizine"
+ required_reagents = list("spaceacillin" = 1, "carbon" = 1, "phoron" = 0.1)
+ catalysts = list("phoron" = 5)
+ result_amount = 2
+
+/datum/chemical_reaction/imidazoline
+ name = "imidazoline"
+ id = "imidazoline"
+ result = "imidazoline"
+ required_reagents = list("carbon" = 1, "hydrogen" = 1, "anti_toxin" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/ethylredoxrazine
+ name = "Ethylredoxrazine"
+ id = "ethylredoxrazine"
+ result = "ethylredoxrazine"
+ required_reagents = list("oxygen" = 1, "anti_toxin" = 1, "carbon" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/soporific
+ name = "Soporific"
+ id = "stoxin"
+ result = "stoxin"
+ required_reagents = list("chloralhydrate" = 1, "sugar" = 4)
+ inhibitors = list("phosphorus") // Messes with the smoke
+ result_amount = 5
+
+/datum/chemical_reaction/chloralhydrate
+ name = "Chloral Hydrate"
+ id = "chloralhydrate"
+ result = "chloralhydrate"
+ required_reagents = list("ethanol" = 1, "chlorine" = 3, "water" = 1)
+ result_amount = 1
+
+/datum/chemical_reaction/potassium_chloride
+ name = "Potassium Chloride"
+ id = "potassium_chloride"
+ result = "potassium_chloride"
+ required_reagents = list("sodiumchloride" = 1, "potassium" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/potassium_chlorophoride
+ name = "Potassium Chlorophoride"
+ id = "potassium_chlorophoride"
+ result = "potassium_chlorophoride"
+ required_reagents = list("potassium_chloride" = 1, "phoron" = 1, "chloralhydrate" = 1)
+ result_amount = 4
+
+/datum/chemical_reaction/zombiepowder
+ name = "Zombie Powder"
+ id = "zombiepowder"
+ result = "zombiepowder"
+ required_reagents = list("carpotoxin" = 5, "stoxin" = 5, "copper" = 5)
+ result_amount = 2
+
+/datum/chemical_reaction/mindbreaker
+ name = "Mindbreaker Toxin"
+ id = "mindbreaker"
+ result = "mindbreaker"
+ required_reagents = list("silicon" = 1, "hydrogen" = 1, "anti_toxin" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/lipozine
+ name = "Lipozine"
+ id = "Lipozine"
+ result = "lipozine"
+ required_reagents = list("sodiumchloride" = 1, "ethanol" = 1, "radium" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/surfactant
+ name = "Foam surfactant"
+ id = "foam surfactant"
+ result = "fluorosurfactant"
+ required_reagents = list("fluorine" = 2, "carbon" = 2, "sacid" = 1)
+ result_amount = 5
+
+/datum/chemical_reaction/ammonia
+ name = "Ammonia"
+ id = "ammonia"
+ result = "ammonia"
+ required_reagents = list("hydrogen" = 3, "nitrogen" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/diethylamine
+ name = "Diethylamine"
+ id = "diethylamine"
+ result = "diethylamine"
+ required_reagents = list ("ammonia" = 1, "ethanol" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/space_cleaner
+ name = "Space cleaner"
+ id = "cleaner"
+ result = "cleaner"
+ required_reagents = list("ammonia" = 1, "water" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/plantbgone
+ name = "Plant-B-Gone"
+ id = "plantbgone"
+ result = "plantbgone"
+ required_reagents = list("toxin" = 1, "water" = 4)
+ result_amount = 5
+
+/datum/chemical_reaction/foaming_agent
+ name = "Foaming Agent"
+ id = "foaming_agent"
+ result = "foaming_agent"
+ required_reagents = list("lithium" = 1, "hydrogen" = 1)
+ result_amount = 1
+
+/datum/chemical_reaction/glycerol
+ name = "Glycerol"
+ id = "glycerol"
+ result = "glycerol"
+ required_reagents = list("cornoil" = 3, "sacid" = 1)
+ result_amount = 1
+
+/datum/chemical_reaction/sodiumchloride
+ name = "Sodium Chloride"
+ id = "sodiumchloride"
+ result = "sodiumchloride"
+ required_reagents = list("sodium" = 1, "chlorine" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/condensedcapsaicin
+ name = "Condensed Capsaicin"
+ id = "condensedcapsaicin"
+ result = "condensedcapsaicin"
+ required_reagents = list("capsaicin" = 2)
+ catalysts = list("phoron" = 5)
+ result_amount = 1
+
+/datum/chemical_reaction/coolant
+ name = "Coolant"
+ id = "coolant"
+ result = "coolant"
+ required_reagents = list("tungsten" = 1, "oxygen" = 1, "water" = 1)
+ result_amount = 3
+ log_is_important = 1
+
+/datum/chemical_reaction/rezadone
+ name = "Rezadone"
+ id = "rezadone"
+ result = "rezadone"
+ required_reagents = list("carpotoxin" = 1, "cryptobiolin" = 1, "copper" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/lexorin
+ name = "Lexorin"
+ id = "lexorin"
+ result = "lexorin"
+ required_reagents = list("phoron" = 1, "hydrogen" = 1, "nitrogen" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/methylphenidate
+ name = "Methylphenidate"
+ id = "methylphenidate"
+ result = "methylphenidate"
+ required_reagents = list("mindbreaker" = 1, "hydrogen" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/citalopram
+ name = "Citalopram"
+ id = "citalopram"
+ result = "citalopram"
+ required_reagents = list("mindbreaker" = 1, "carbon" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/paroxetine
+ name = "Paroxetine"
+ id = "paroxetine"
+ result = "paroxetine"
+ required_reagents = list("mindbreaker" = 1, "oxygen" = 1, "inaprovaline" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/neurotoxin
+ name = "Neurotoxin"
+ id = "neurotoxin"
+ result = "neurotoxin"
+ required_reagents = list("gargleblaster" = 1, "stoxin" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/luminol
+ name = "Luminol"
+ id = "luminol"
+ result = "luminol"
+ required_reagents = list("hydrogen" = 2, "carbon" = 2, "ammonia" = 2)
+ result_amount = 6
+
+/* Solidification */
+
+/datum/chemical_reaction/solidification
+ name = "Solid Iron"
+ id = "solidiron"
+ result = null
+ required_reagents = list("frostoil" = 5, "iron" = REAGENTS_PER_SHEET)
+ result_amount = 1
+ var/sheet_to_give = /obj/item/stack/material/iron
+
+/datum/chemical_reaction/solidification/on_reaction(var/datum/reagents/holder, var/created_volume)
+ new sheet_to_give(get_turf(holder.my_atom), created_volume)
+ return
+
+
+/datum/chemical_reaction/solidification/phoron
+ name = "Solid Phoron"
+ id = "solidphoron"
+ required_reagents = list("frostoil" = 5, "phoron" = REAGENTS_PER_SHEET)
+ sheet_to_give = /obj/item/stack/material/phoron
+
+
+/datum/chemical_reaction/solidification/silver
+ name = "Solid Silver"
+ id = "solidsilver"
+ required_reagents = list("frostoil" = 5, "silver" = REAGENTS_PER_SHEET)
+ sheet_to_give = /obj/item/stack/material/silver
+
+
+/datum/chemical_reaction/solidification/gold
+ name = "Solid Gold"
+ id = "solidgold"
+ required_reagents = list("frostoil" = 5, "gold" = REAGENTS_PER_SHEET)
+ sheet_to_give = /obj/item/stack/material/gold
+
+
+/datum/chemical_reaction/solidification/platinum
+ name = "Solid Platinum"
+ id = "solidplatinum"
+ required_reagents = list("frostoil" = 5, "platinum" = REAGENTS_PER_SHEET)
+ sheet_to_give = /obj/item/stack/material/platinum
+
+
+/datum/chemical_reaction/solidification/uranium
+ name = "Solid Uranium"
+ id = "soliduranium"
+ required_reagents = list("frostoil" = 5, "uranium" = REAGENTS_PER_SHEET)
+ sheet_to_give = /obj/item/stack/material/uranium
+
+
+/datum/chemical_reaction/solidification/hydrogen
+ name = "Solid Hydrogen"
+ id = "solidhydrogen"
+ required_reagents = list("frostoil" = 100, "hydrogen" = REAGENTS_PER_SHEET)
+ sheet_to_give = /obj/item/stack/material/mhydrogen
+
+
+// These are from Xenobio.
+/datum/chemical_reaction/solidification/steel
+ name = "Solid Steel"
+ id = "solidsteel"
+ required_reagents = list("frostoil" = 5, "steel" = REAGENTS_PER_SHEET)
+ sheet_to_give = /obj/item/stack/material/steel
+
+
+/datum/chemical_reaction/solidification/plasteel
+ name = "Solid Plasteel"
+ id = "solidplasteel"
+ required_reagents = list("frostoil" = 10, "plasteel" = REAGENTS_PER_SHEET)
+ sheet_to_give = /obj/item/stack/material/plasteel
+
+
+/datum/chemical_reaction/plastication
+ name = "Plastic"
+ id = "solidplastic"
+ result = null
+ required_reagents = list("pacid" = 1, "plasticide" = 2)
+ result_amount = 1
+
+/datum/chemical_reaction/plastication/on_reaction(var/datum/reagents/holder, var/created_volume)
+ new /obj/item/stack/material/plastic(get_turf(holder.my_atom), created_volume)
+ return
+
+/* Grenade reactions */
+
+/datum/chemical_reaction/explosion_potassium
+ name = "Explosion"
+ id = "explosion_potassium"
+ result = null
+ required_reagents = list("water" = 1, "potassium" = 1)
+ result_amount = 2
+ mix_message = null
+
+/datum/chemical_reaction/explosion_potassium/on_reaction(var/datum/reagents/holder, var/created_volume)
+ var/datum/effect/effect/system/reagents_explosion/e = new()
+ e.set_up(round (created_volume/10, 1), holder.my_atom, 0, 0)
+ if(isliving(holder.my_atom))
+ e.amount *= 0.5
+ var/mob/living/L = holder.my_atom
+ if(L.stat != DEAD)
+ e.amount *= 0.5
+ else
+ holder.clear_reagents() //No more powergaming by creating a tiny amount of this
+ e.start()
+ return
+
+/datum/chemical_reaction/flash_powder
+ name = "Flash powder"
+ id = "flash_powder"
+ result = null
+ required_reagents = list("aluminum" = 1, "potassium" = 1, "sulfur" = 1 )
+ result_amount = null
+
+/datum/chemical_reaction/flash_powder/on_reaction(var/datum/reagents/holder, var/created_volume)
+ var/location = get_turf(holder.my_atom)
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
+ s.set_up(2, 1, location)
+ s.start()
+ for(var/mob/living/carbon/M in viewers(world.view, location))
+ switch(get_dist(M, location))
+ if(0 to 3)
+ if(hasvar(M, "glasses"))
+ if(istype(M:glasses, /obj/item/clothing/glasses/sunglasses))
+ continue
+
+ M.flash_eyes()
+ M.Weaken(15)
+
+ if(4 to 5)
+ if(hasvar(M, "glasses"))
+ if(istype(M:glasses, /obj/item/clothing/glasses/sunglasses))
+ continue
+
+ M.flash_eyes()
+ M.Stun(5)
+
+/datum/chemical_reaction/emp_pulse
+ name = "EMP Pulse"
+ id = "emp_pulse"
+ result = null
+ required_reagents = list("uranium" = 1, "iron" = 1) // Yes, laugh, it's the best recipe I could think of that makes a little bit of sense
+ result_amount = 2
+
+/datum/chemical_reaction/emp_pulse/on_reaction(var/datum/reagents/holder, var/created_volume)
+ var/location = get_turf(holder.my_atom)
+ // 100 created volume = 4 heavy range & 7 light range. A few tiles smaller than traitor EMP grandes.
+ // 200 created volume = 8 heavy range & 14 light range. 4 tiles larger than traitor EMP grenades.
+ empulse(location, round(created_volume / 24), round(created_volume / 20), round(created_volume / 18), round(created_volume / 14), 1)
+ if(!isliving(holder.my_atom)) //No more powergaming by creating a tiny amount of this
+ holder.clear_reagents()
+ return
+
+/datum/chemical_reaction/nitroglycerin
+ name = "Nitroglycerin"
+ id = "nitroglycerin"
+ result = "nitroglycerin"
+ required_reagents = list("glycerol" = 1, "pacid" = 1, "sacid" = 1)
+ result_amount = 2
+ log_is_important = 1
+
+/datum/chemical_reaction/nitroglycerin/on_reaction(var/datum/reagents/holder, var/created_volume)
+ var/datum/effect/effect/system/reagents_explosion/e = new()
+ e.set_up(round (created_volume/2, 1), holder.my_atom, 0, 0)
+ if(isliving(holder.my_atom))
+ e.amount *= 0.5
+ var/mob/living/L = holder.my_atom
+ if(L.stat!=DEAD)
+ e.amount *= 0.5
+ else
+ holder.clear_reagents() //No more powergaming by creating a tiny amount of this
+ e.start()
+
+ return
+
+/datum/chemical_reaction/napalm
+ name = "Napalm"
+ id = "napalm"
+ result = null
+ required_reagents = list("aluminum" = 1, "phoron" = 1, "sacid" = 1 )
+ result_amount = 1
+
+/datum/chemical_reaction/napalm/on_reaction(var/datum/reagents/holder, var/created_volume)
+ var/turf/location = get_turf(holder.my_atom.loc)
+ for(var/turf/simulated/floor/target_tile in range(0,location))
+ target_tile.assume_gas("volatile_fuel", created_volume, 400+T0C)
+ spawn (0) target_tile.hotspot_expose(700, 400)
+ holder.del_reagent("napalm")
+ return
+
+/datum/chemical_reaction/chemsmoke
+ name = "Chemsmoke"
+ id = "chemsmoke"
+ result = null
+ required_reagents = list("potassium" = 1, "sugar" = 1, "phosphorus" = 1)
+ result_amount = 0.4
+
+/datum/chemical_reaction/chemsmoke/on_reaction(var/datum/reagents/holder, var/created_volume)
+ var/location = get_turf(holder.my_atom)
+ var/datum/effect/effect/system/smoke_spread/chem/S = new /datum/effect/effect/system/smoke_spread/chem
+ S.attach(location)
+ S.set_up(holder, created_volume, 0, location)
+ playsound(location, 'sound/effects/smoke.ogg', 50, 1, -3)
+ spawn(0)
+ S.start()
+ if(!isliving(holder.my_atom)) //No more powergaming by creating a tiny amount of this
+ holder.clear_reagents()
+ return
+
+/datum/chemical_reaction/foam
+ name = "Foam"
+ id = "foam"
+ result = null
+ required_reagents = list("fluorosurfactant" = 1, "water" = 1)
+ result_amount = 2
+ mix_message = "The solution violently bubbles!"
+
+/datum/chemical_reaction/foam/on_reaction(var/datum/reagents/holder, var/created_volume)
+ var/location = get_turf(holder.my_atom)
+
+ for(var/mob/M in viewers(5, location))
+ M << "The solution spews out foam!"
+
+ var/datum/effect/effect/system/foam_spread/s = new()
+ s.set_up(created_volume, location, holder, 0)
+ s.start()
+ if(!isliving(holder.my_atom)) //No more powergaming by creating a tiny amount of this
+ holder.clear_reagents()
+ return
+
+/datum/chemical_reaction/metalfoam
+ name = "Metal Foam"
+ id = "metalfoam"
+ result = null
+ required_reagents = list("aluminum" = 3, "foaming_agent" = 1, "pacid" = 1)
+ result_amount = 5
+
+/datum/chemical_reaction/metalfoam/on_reaction(var/datum/reagents/holder, var/created_volume)
+ var/location = get_turf(holder.my_atom)
+
+ for(var/mob/M in viewers(5, location))
+ M << "The solution spews out a metalic foam!"
+
+ var/datum/effect/effect/system/foam_spread/s = new()
+ s.set_up(created_volume, location, holder, 1)
+ s.start()
+ return
+
+/datum/chemical_reaction/ironfoam
+ name = "Iron Foam"
+ id = "ironlfoam"
+ result = null
+ required_reagents = list("iron" = 3, "foaming_agent" = 1, "pacid" = 1)
+ result_amount = 5
+
+/datum/chemical_reaction/ironfoam/on_reaction(var/datum/reagents/holder, var/created_volume)
+ var/location = get_turf(holder.my_atom)
+
+ for(var/mob/M in viewers(5, location))
+ M << "The solution spews out a metalic foam!"
+
+ var/datum/effect/effect/system/foam_spread/s = new()
+ s.set_up(created_volume, location, holder, 2)
+ s.start()
+ return
+
+/* Paint */
+
+/datum/chemical_reaction/red_paint
+ name = "Red paint"
+ id = "red_paint"
+ result = "paint"
+ required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_red" = 1)
+ result_amount = 5
+
+/datum/chemical_reaction/red_paint/send_data()
+ return "#FE191A"
+
+/datum/chemical_reaction/orange_paint
+ name = "Orange paint"
+ id = "orange_paint"
+ result = "paint"
+ required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_orange" = 1)
+ result_amount = 5
+
+/datum/chemical_reaction/orange_paint/send_data()
+ return "#FFBE4F"
+
+/datum/chemical_reaction/yellow_paint
+ name = "Yellow paint"
+ id = "yellow_paint"
+ result = "paint"
+ required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_yellow" = 1)
+ result_amount = 5
+
+/datum/chemical_reaction/yellow_paint/send_data()
+ return "#FDFE7D"
+
+/datum/chemical_reaction/green_paint
+ name = "Green paint"
+ id = "green_paint"
+ result = "paint"
+ required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_green" = 1)
+ result_amount = 5
+
+/datum/chemical_reaction/green_paint/send_data()
+ return "#18A31A"
+
+/datum/chemical_reaction/blue_paint
+ name = "Blue paint"
+ id = "blue_paint"
+ result = "paint"
+ required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_blue" = 1)
+ result_amount = 5
+
+/datum/chemical_reaction/blue_paint/send_data()
+ return "#247CFF"
+
+/datum/chemical_reaction/purple_paint
+ name = "Purple paint"
+ id = "purple_paint"
+ result = "paint"
+ required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_purple" = 1)
+ result_amount = 5
+
+/datum/chemical_reaction/purple_paint/send_data()
+ return "#CC0099"
+
+/datum/chemical_reaction/grey_paint //mime
+ name = "Grey paint"
+ id = "grey_paint"
+ result = "paint"
+ required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_grey" = 1)
+ result_amount = 5
+
+/datum/chemical_reaction/grey_paint/send_data()
+ return "#808080"
+
+/datum/chemical_reaction/brown_paint
+ name = "Brown paint"
+ id = "brown_paint"
+ result = "paint"
+ required_reagents = list("plasticide" = 1, "water" = 3, "marker_ink_brown" = 1)
+ result_amount = 5
+
+/datum/chemical_reaction/brown_paint/send_data()
+ return "#846F35"
+
+/datum/chemical_reaction/blood_paint
+ name = "Blood paint"
+ id = "blood_paint"
+ result = "paint"
+ required_reagents = list("plasticide" = 1, "water" = 3, "blood" = 2)
+ result_amount = 5
+
+/datum/chemical_reaction/blood_paint/send_data(var/datum/reagents/T)
+ var/t = T.get_data("blood")
+ if(t && t["blood_colour"])
+ return t["blood_colour"]
+ return "#FE191A" // Probably red
+
+/datum/chemical_reaction/milk_paint
+ name = "Milk paint"
+ id = "milk_paint"
+ result = "paint"
+ required_reagents = list("plasticide" = 1, "water" = 3, "milk" = 5)
+ result_amount = 5
+
+/datum/chemical_reaction/milk_paint/send_data()
+ return "#F0F8FF"
+
+/datum/chemical_reaction/orange_juice_paint
+ name = "Orange juice paint"
+ id = "orange_juice_paint"
+ result = "paint"
+ required_reagents = list("plasticide" = 1, "water" = 3, "orangejuice" = 5)
+ result_amount = 5
+
+/datum/chemical_reaction/orange_juice_paint/send_data()
+ return "#E78108"
+
+/datum/chemical_reaction/tomato_juice_paint
+ name = "Tomato juice paint"
+ id = "tomato_juice_paint"
+ result = "paint"
+ required_reagents = list("plasticide" = 1, "water" = 3, "tomatojuice" = 5)
+ result_amount = 5
+
+/datum/chemical_reaction/tomato_juice_paint/send_data()
+ return "#731008"
+
+/datum/chemical_reaction/lime_juice_paint
+ name = "Lime juice paint"
+ id = "lime_juice_paint"
+ result = "paint"
+ required_reagents = list("plasticide" = 1, "water" = 3, "limejuice" = 5)
+ result_amount = 5
+
+/datum/chemical_reaction/lime_juice_paint/send_data()
+ return "#365E30"
+
+/datum/chemical_reaction/carrot_juice_paint
+ name = "Carrot juice paint"
+ id = "carrot_juice_paint"
+ result = "paint"
+ required_reagents = list("plasticide" = 1, "water" = 3, "carrotjuice" = 5)
+ result_amount = 5
+
+/datum/chemical_reaction/carrot_juice_paint/send_data()
+ return "#973800"
+
+/datum/chemical_reaction/berry_juice_paint
+ name = "Berry juice paint"
+ id = "berry_juice_paint"
+ result = "paint"
+ required_reagents = list("plasticide" = 1, "water" = 3, "berryjuice" = 5)
+ result_amount = 5
+
+/datum/chemical_reaction/berry_juice_paint/send_data()
+ return "#990066"
+
+/datum/chemical_reaction/grape_juice_paint
+ name = "Grape juice paint"
+ id = "grape_juice_paint"
+ result = "paint"
+ required_reagents = list("plasticide" = 1, "water" = 3, "grapejuice" = 5)
+ result_amount = 5
+
+/datum/chemical_reaction/grape_juice_paint/send_data()
+ return "#863333"
+
+/datum/chemical_reaction/poisonberry_juice_paint
+ name = "Poison berry juice paint"
+ id = "poisonberry_juice_paint"
+ result = "paint"
+ required_reagents = list("plasticide" = 1, "water" = 3, "poisonberryjuice" = 5)
+ result_amount = 5
+
+/datum/chemical_reaction/poisonberry_juice_paint/send_data()
+ return "#863353"
+
+/datum/chemical_reaction/watermelon_juice_paint
+ name = "Watermelon juice paint"
+ id = "watermelon_juice_paint"
+ result = "paint"
+ required_reagents = list("plasticide" = 1, "water" = 3, "watermelonjuice" = 5)
+ result_amount = 5
+
+/datum/chemical_reaction/watermelon_juice_paint/send_data()
+ return "#B83333"
+
+/datum/chemical_reaction/lemon_juice_paint
+ name = "Lemon juice paint"
+ id = "lemon_juice_paint"
+ result = "paint"
+ required_reagents = list("plasticide" = 1, "water" = 3, "lemonjuice" = 5)
+ result_amount = 5
+
+/datum/chemical_reaction/lemon_juice_paint/send_data()
+ return "#AFAF00"
+
+/datum/chemical_reaction/banana_juice_paint
+ name = "Banana juice paint"
+ id = "banana_juice_paint"
+ result = "paint"
+ required_reagents = list("plasticide" = 1, "water" = 3, "banana" = 5)
+ result_amount = 5
+
+/datum/chemical_reaction/banana_juice_paint/send_data()
+ return "#C3AF00"
+
+/datum/chemical_reaction/potato_juice_paint
+ name = "Potato juice paint"
+ id = "potato_juice_paint"
+ result = "paint"
+ required_reagents = list("plasticide" = 1, "water" = 3, "potatojuice" = 5)
+ result_amount = 5
+
+/datum/chemical_reaction/potato_juice_paint/send_data()
+ return "#302000"
+
+/datum/chemical_reaction/carbon_paint
+ name = "Carbon paint"
+ id = "carbon_paint"
+ result = "paint"
+ required_reagents = list("plasticide" = 1, "water" = 3, "carbon" = 1)
+ result_amount = 5
+
+/datum/chemical_reaction/carbon_paint/send_data()
+ return "#333333"
+
+/datum/chemical_reaction/aluminum_paint
+ name = "Aluminum paint"
+ id = "aluminum_paint"
+ result = "paint"
+ required_reagents = list("plasticide" = 1, "water" = 3, "aluminum" = 1)
+ result_amount = 5
+
+/datum/chemical_reaction/aluminum_paint/send_data()
+ return "#F0F8FF"
+
+/* Food */
+
+/datum/chemical_reaction/food/tofu
+ name = "Tofu"
+ id = "tofu"
+ result = null
+ required_reagents = list("soymilk" = 10)
+ catalysts = list("enzyme" = 5)
+ result_amount = 1
+
+/datum/chemical_reaction/food/tofu/on_reaction(var/datum/reagents/holder, var/created_volume)
+ var/location = get_turf(holder.my_atom)
+ for(var/i = 1, i <= created_volume, i++)
+ new /obj/item/weapon/reagent_containers/food/snacks/tofu(location)
+ return
+
+/datum/chemical_reaction/food/chocolate_bar
+ name = "Chocolate Bar"
+ id = "chocolate_bar"
+ result = null
+ required_reagents = list("soymilk" = 2, "coco" = 2, "sugar" = 2)
+ result_amount = 1
+
+/datum/chemical_reaction/food/chocolate_bar/on_reaction(var/datum/reagents/holder, var/created_volume)
+ var/location = get_turf(holder.my_atom)
+ for(var/i = 1, i <= created_volume, i++)
+ new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location)
+ return
+
+/datum/chemical_reaction/food/chocolate_bar2
+ name = "Chocolate Bar"
+ id = "chocolate_bar"
+ result = null
+ required_reagents = list("milk" = 2, "coco" = 2, "sugar" = 2)
+ result_amount = 1
+
+/datum/chemical_reaction/food/chocolate_bar2/on_reaction(var/datum/reagents/holder, var/created_volume)
+ var/location = get_turf(holder.my_atom)
+ for(var/i = 1, i <= created_volume, i++)
+ new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location)
+ return
+
+/datum/chemical_reaction/drinks/hot_coco
+ name = "Hot Coco"
+ id = "hot_coco"
+ result = "hot_coco"
+ required_reagents = list("water" = 5, "coco" = 1)
+ result_amount = 5
+
+/datum/chemical_reaction/food/soysauce
+ name = "Soy Sauce"
+ id = "soysauce"
+ result = "soysauce"
+ required_reagents = list("soymilk" = 4, "sacid" = 1)
+ result_amount = 5
+
+/datum/chemical_reaction/food/ketchup
+ name = "Ketchup"
+ id = "ketchup"
+ result = "ketchup"
+ required_reagents = list("tomatojuice" = 2, "water" = 1, "sugar" = 1)
+ result_amount = 4
+
+/datum/chemical_reaction/food/cheesewheel
+ name = "Cheesewheel"
+ id = "cheesewheel"
+ result = null
+ required_reagents = list("milk" = 40)
+ catalysts = list("enzyme" = 5)
+ result_amount = 1
+
+/datum/chemical_reaction/food/cheesewheel/on_reaction(var/datum/reagents/holder, var/created_volume)
+ var/location = get_turf(holder.my_atom)
+ for(var/i = 1, i <= created_volume, i++)
+ new /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel(location)
+ return
+
+/datum/chemical_reaction/food/meatball
+ name = "Meatball"
+ id = "meatball"
+ result = null
+ required_reagents = list("protein" = 3, "flour" = 5)
+ result_amount = 3
+
+/datum/chemical_reaction/food/meatball/on_reaction(var/datum/reagents/holder, var/created_volume)
+ var/location = get_turf(holder.my_atom)
+ for(var/i = 1, i <= created_volume, i++)
+ new /obj/item/weapon/reagent_containers/food/snacks/meatball(location)
+ return
+
+/datum/chemical_reaction/food/dough
+ name = "Dough"
+ id = "dough"
+ result = null
+ required_reagents = list("egg" = 3, "flour" = 10)
+ result_amount = 1
+
+/datum/chemical_reaction/food/dough/on_reaction(var/datum/reagents/holder, var/created_volume)
+ var/location = get_turf(holder.my_atom)
+ for(var/i = 1, i <= created_volume, i++)
+ new /obj/item/weapon/reagent_containers/food/snacks/dough(location)
+ return
+
+/datum/chemical_reaction/food/syntiflesh
+ name = "Syntiflesh"
+ id = "syntiflesh"
+ result = null
+ required_reagents = list("blood" = 5, "clonexadone" = 5)
+ result_amount = 1
+
+/datum/chemical_reaction/food/syntiflesh/on_reaction(var/datum/reagents/holder, var/created_volume)
+ var/location = get_turf(holder.my_atom)
+ for(var/i = 1, i <= created_volume, i++)
+ new /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh(location)
+ return
+
+/datum/chemical_reaction/hot_ramen
+ name = "Hot Ramen"
+ id = "hot_ramen"
+ result = "hot_ramen"
+ required_reagents = list("water" = 1, "dry_ramen" = 3)
+ result_amount = 3
+
+/datum/chemical_reaction/hell_ramen
+ name = "Hell Ramen"
+ id = "hell_ramen"
+ result = "hell_ramen"
+ required_reagents = list("capsaicin" = 1, "hot_ramen" = 6)
+ result_amount = 6
+
+/* Alcohol */
+
+/datum/chemical_reaction/drinks/goldschlager
+ name = "Goldschlager"
+ id = "goldschlager"
+ result = "goldschlager"
+ required_reagents = list("vodka" = 10, "gold" = 1)
+ result_amount = 10
+
+/datum/chemical_reaction/drinks/patron
+ name = "Patron"
+ id = "patron"
+ result = "patron"
+ required_reagents = list("tequilla" = 10, "silver" = 1)
+ result_amount = 10
+
+/datum/chemical_reaction/drinks/bilk
+ name = "Bilk"
+ id = "bilk"
+ result = "bilk"
+ required_reagents = list("milk" = 1, "beer" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/drinks/icetea
+ name = "Iced Tea"
+ id = "icetea"
+ result = "icetea"
+ required_reagents = list("ice" = 1, "tea" = 2)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/icecoffee
+ name = "Iced Coffee"
+ id = "icecoffee"
+ result = "icecoffee"
+ required_reagents = list("ice" = 1, "coffee" = 2)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/nuka_cola
+ name = "Nuclear Cola"
+ id = "nuka_cola"
+ result = "nuka_cola"
+ required_reagents = list("uranium" = 1, "cola" = 5)
+ result_amount = 5
+
+/datum/chemical_reaction/drinks/moonshine
+ name = "Moonshine"
+ id = "moonshine"
+ result = "moonshine"
+ required_reagents = list("nutriment" = 10)
+ catalysts = list("enzyme" = 5)
+ result_amount = 10
+
+/datum/chemical_reaction/drinks/grenadine
+ name = "Grenadine Syrup"
+ id = "grenadine"
+ result = "grenadine"
+ required_reagents = list("berryjuice" = 10)
+ catalysts = list("enzyme" = 5)
+ result_amount = 10
+
+/datum/chemical_reaction/drinks/wine
+ name = "Wine"
+ id = "wine"
+ result = "wine"
+ required_reagents = list("grapejuice" = 10)
+ catalysts = list("enzyme" = 5)
+ result_amount = 10
+
+/datum/chemical_reaction/drinks/pwine
+ name = "Poison Wine"
+ id = "pwine"
+ result = "pwine"
+ required_reagents = list("poisonberryjuice" = 10)
+ catalysts = list("enzyme" = 5)
+ result_amount = 10
+
+/datum/chemical_reaction/drinks/melonliquor
+ name = "Melon Liquor"
+ id = "melonliquor"
+ result = "melonliquor"
+ required_reagents = list("watermelonjuice" = 10)
+ catalysts = list("enzyme" = 5)
+ result_amount = 10
+
+/datum/chemical_reaction/drinks/bluecuracao
+ name = "Blue Curacao"
+ id = "bluecuracao"
+ result = "bluecuracao"
+ required_reagents = list("orangejuice" = 10)
+ catalysts = list("enzyme" = 5)
+ result_amount = 10
+
+/datum/chemical_reaction/drinks/spacebeer
+ name = "Space Beer"
+ id = "spacebeer"
+ result = "beer"
+ required_reagents = list("cornoil" = 10)
+ catalysts = list("enzyme" = 5)
+ result_amount = 10
+
+/datum/chemical_reaction/drinks/vodka
+ name = "Vodka"
+ id = "vodka"
+ result = "vodka"
+ required_reagents = list("potatojuice" = 10)
+ catalysts = list("enzyme" = 5)
+ result_amount = 10
+
+/datum/chemical_reaction/drinks/cider
+ name = "Cider"
+ id = "cider"
+ result = "cider"
+ required_reagents = list("applejuice" = 10)
+ catalysts = list("enzyme" = 5)
+ result_amount = 10
+
+
+/datum/chemical_reaction/drinks/sake
+ name = "Sake"
+ id = "sake"
+ result = "sake"
+ required_reagents = list("rice" = 10)
+ catalysts = list("enzyme" = 5)
+ result_amount = 10
+
+/datum/chemical_reaction/drinks/kahlua
+ name = "Kahlua"
+ id = "kahlua"
+ result = "kahlua"
+ required_reagents = list("coffee" = 5, "sugar" = 5)
+ catalysts = list("enzyme" = 5)
+ result_amount = 5
+
+/datum/chemical_reaction/drinks/gin_tonic
+ name = "Gin and Tonic"
+ id = "gintonic"
+ result = "gintonic"
+ required_reagents = list("gin" = 2, "tonic" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/cuba_libre
+ name = "Cuba Libre"
+ id = "cubalibre"
+ result = "cubalibre"
+ required_reagents = list("rum" = 2, "cola" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/martini
+ name = "Classic Martini"
+ id = "martini"
+ result = "martini"
+ required_reagents = list("gin" = 2, "vermouth" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/vodkamartini
+ name = "Vodka Martini"
+ id = "vodkamartini"
+ result = "vodkamartini"
+ required_reagents = list("vodka" = 2, "vermouth" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/white_russian
+ name = "White Russian"
+ id = "whiterussian"
+ result = "whiterussian"
+ required_reagents = list("blackrussian" = 2, "cream" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/whiskey_cola
+ name = "Whiskey Cola"
+ id = "whiskeycola"
+ result = "whiskeycola"
+ required_reagents = list("whiskey" = 2, "cola" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/screwdriver
+ name = "Screwdriver"
+ id = "screwdrivercocktail"
+ result = "screwdrivercocktail"
+ required_reagents = list("vodka" = 2, "orangejuice" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/bloody_mary
+ name = "Bloody Mary"
+ id = "bloodymary"
+ result = "bloodymary"
+ required_reagents = list("vodka" = 2, "tomatojuice" = 3, "limejuice" = 1)
+ result_amount = 6
+
+/datum/chemical_reaction/drinks/gargle_blaster
+ name = "Pan-Galactic Gargle Blaster"
+ id = "gargleblaster"
+ result = "gargleblaster"
+ required_reagents = list("vodka" = 2, "gin" = 1, "whiskey" = 1, "cognac" = 1, "limejuice" = 1)
+ result_amount = 6
+
+/datum/chemical_reaction/drinks/brave_bull
+ name = "Brave Bull"
+ id = "bravebull"
+ result = "bravebull"
+ required_reagents = list("tequilla" = 2, "kahlua" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/tequilla_sunrise
+ name = "Tequilla Sunrise"
+ id = "tequillasunrise"
+ result = "tequillasunrise"
+ required_reagents = list("tequilla" = 2, "orangejuice" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/phoron_special
+ name = "Toxins Special"
+ id = "phoronspecial"
+ result = "phoronspecial"
+ required_reagents = list("rum" = 2, "vermouth" = 2, "phoron" = 2)
+ result_amount = 6
+
+//CHOMPStation Edit TFF 24/9/19 - Minor change to make it easier for no runtimes with casino.dm
+/datum/chemical_reaction/drinks/beepskysmash
+ name = "Beepksy Smash"
+ id = "beepksysmash"
+ result = "beepskysmash"
+ required_reagents = list("limejuice" = 1, "whiskey" = 1, "iron" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/drinks/doctor_delight
+ name = "The Doctor's Delight"
+ id = "doctordelight"
+ result = "doctorsdelight"
+ required_reagents = list("limejuice" = 1, "tomatojuice" = 1, "orangejuice" = 1, "cream" = 2, "tricordrazine" = 1)
+ result_amount = 6
+
+/datum/chemical_reaction/drinks/irish_cream
+ name = "Irish Cream"
+ id = "irishcream"
+ result = "irishcream"
+ required_reagents = list("whiskey" = 2, "cream" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/manly_dorf
+ name = "The Manly Dorf"
+ id = "manlydorf"
+ result = "manlydorf"
+ required_reagents = list ("beer" = 1, "ale" = 2)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/hooch
+ name = "Hooch"
+ id = "hooch"
+ result = "hooch"
+ required_reagents = list ("sugar" = 1, "ethanol" = 2, "fuel" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/irish_coffee
+ name = "Irish Coffee"
+ id = "irishcoffee"
+ result = "irishcoffee"
+ required_reagents = list("irishcream" = 1, "coffee" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/drinks/b52
+ name = "B-52"
+ id = "b52"
+ result = "b52"
+ required_reagents = list("irishcream" = 1, "kahlua" = 1, "cognac" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/atomicbomb
+ name = "Atomic Bomb"
+ id = "atomicbomb"
+ result = "atomicbomb"
+ required_reagents = list("b52" = 10, "uranium" = 1)
+ result_amount = 10
+
+/datum/chemical_reaction/drinks/margarita
+ name = "Margarita"
+ id = "margarita"
+ result = "margarita"
+ required_reagents = list("tequilla" = 2, "limejuice" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/longislandicedtea
+ name = "Long Island Iced Tea"
+ id = "longislandicedtea"
+ result = "longislandicedtea"
+ required_reagents = list("vodka" = 1, "gin" = 1, "tequilla" = 1, "cubalibre" = 3)
+ result_amount = 6
+
+/datum/chemical_reaction/drinks/icedtea
+ name = "Long Island Iced Tea"
+ id = "longislandicedtea"
+ result = "longislandicedtea"
+ required_reagents = list("vodka" = 1, "gin" = 1, "tequilla" = 1, "cubalibre" = 3)
+ result_amount = 6
+
+/datum/chemical_reaction/drinks/threemileisland
+ name = "Three Mile Island Iced Tea"
+ id = "threemileisland"
+ result = "threemileisland"
+ required_reagents = list("longislandicedtea" = 10, "uranium" = 1)
+ result_amount = 10
+
+/datum/chemical_reaction/drinks/whiskeysoda
+ name = "Whiskey Soda"
+ id = "whiskeysoda"
+ result = "whiskeysoda"
+ required_reagents = list("whiskey" = 2, "sodawater" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/black_russian
+ name = "Black Russian"
+ id = "blackrussian"
+ result = "blackrussian"
+ required_reagents = list("vodka" = 2, "kahlua" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/manhattan
+ name = "Manhattan"
+ id = "manhattan"
+ result = "manhattan"
+ required_reagents = list("whiskey" = 2, "vermouth" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/manhattan_proj
+ name = "Manhattan Project"
+ id = "manhattan_proj"
+ result = "manhattan_proj"
+ required_reagents = list("manhattan" = 10, "uranium" = 1)
+ result_amount = 10
+
+/datum/chemical_reaction/drinks/vodka_tonic
+ name = "Vodka and Tonic"
+ id = "vodkatonic"
+ result = "vodkatonic"
+ required_reagents = list("vodka" = 2, "tonic" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/gin_fizz
+ name = "Gin Fizz"
+ id = "ginfizz"
+ result = "ginfizz"
+ required_reagents = list("gin" = 1, "sodawater" = 1, "limejuice" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/bahama_mama
+ name = "Bahama mama"
+ id = "bahama_mama"
+ result = "bahama_mama"
+ required_reagents = list("rum" = 2, "orangejuice" = 2, "limejuice" = 1, "ice" = 1)
+ result_amount = 6
+
+/datum/chemical_reaction/drinks/singulo
+ name = "Singulo"
+ id = "singulo"
+ result = "singulo"
+ required_reagents = list("vodka" = 5, "radium" = 1, "wine" = 5)
+ result_amount = 10
+
+/datum/chemical_reaction/drinks/alliescocktail
+ name = "Allies Cocktail"
+ id = "alliescocktail"
+ result = "alliescocktail"
+ required_reagents = list("martini" = 1, "vodka" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/drinks/demonsblood
+ name = "Demons Blood"
+ id = "demonsblood"
+ result = "demonsblood"
+ required_reagents = list("rum" = 3, "spacemountainwind" = 1, "blood" = 1, "dr_gibb" = 1)
+ result_amount = 6
+
+/datum/chemical_reaction/drinks/booger
+ name = "Booger"
+ id = "booger"
+ result = "booger"
+ required_reagents = list("cream" = 2, "banana" = 1, "rum" = 1, "watermelonjuice" = 1)
+ result_amount = 5
+
+/datum/chemical_reaction/drinks/antifreeze
+ name = "Anti-freeze"
+ id = "antifreeze"
+ result = "antifreeze"
+ required_reagents = list("vodka" = 1, "cream" = 1, "ice" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/barefoot
+ name = "Barefoot"
+ id = "barefoot"
+ result = "barefoot"
+ required_reagents = list("berryjuice" = 1, "cream" = 1, "vermouth" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/grapesoda
+ name = "Grape Soda"
+ id = "grapesoda"
+ result = "grapesoda"
+ required_reagents = list("grapejuice" = 2, "cola" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/sbiten
+ name = "Sbiten"
+ id = "sbiten"
+ result = "sbiten"
+ required_reagents = list("vodka" = 10, "capsaicin" = 1)
+ result_amount = 10
+
+/datum/chemical_reaction/drinks/red_mead
+ name = "Red Mead"
+ id = "red_mead"
+ result = "red_mead"
+ required_reagents = list("blood" = 1, "mead" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/drinks/mead
+ name = "Mead"
+ id = "mead"
+ result = "mead"
+ required_reagents = list("sugar" = 1, "water" = 1)
+ catalysts = list("enzyme" = 5)
+ result_amount = 2
+
+/datum/chemical_reaction/drinks/iced_beer
+ name = "Iced Beer"
+ id = "iced_beer"
+ result = "iced_beer"
+ required_reagents = list("beer" = 10, "frostoil" = 1)
+ result_amount = 10
+
+/datum/chemical_reaction/drinks/iced_beer2
+ name = "Iced Beer"
+ id = "iced_beer"
+ result = "iced_beer"
+ required_reagents = list("beer" = 5, "ice" = 1)
+ result_amount = 6
+
+/datum/chemical_reaction/drinks/grog
+ name = "Grog"
+ id = "grog"
+ result = "grog"
+ required_reagents = list("rum" = 1, "water" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/drinks/soy_latte
+ name = "Soy Latte"
+ id = "soy_latte"
+ result = "soy_latte"
+ required_reagents = list("coffee" = 1, "soymilk" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/drinks/cafe_latte
+ name = "Cafe Latte"
+ id = "cafe_latte"
+ result = "cafe_latte"
+ required_reagents = list("coffee" = 1, "milk" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/drinks/acidspit
+ name = "Acid Spit"
+ id = "acidspit"
+ result = "acidspit"
+ required_reagents = list("sacid" = 1, "wine" = 5)
+ result_amount = 6
+
+/datum/chemical_reaction/drinks/amasec
+ name = "Amasec"
+ id = "amasec"
+ result = "amasec"
+ required_reagents = list("iron" = 1, "wine" = 5, "vodka" = 5)
+ result_amount = 10
+
+/datum/chemical_reaction/drinks/changelingsting
+ name = "Changeling Sting"
+ id = "changelingsting"
+ result = "changelingsting"
+ required_reagents = list("screwdrivercocktail" = 1, "limejuice" = 1, "lemonjuice" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/aloe
+ name = "Aloe"
+ id = "aloe"
+ result = "aloe"
+ required_reagents = list("cream" = 1, "whiskey" = 1, "watermelonjuice" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/andalusia
+ name = "Andalusia"
+ id = "andalusia"
+ result = "andalusia"
+ required_reagents = list("rum" = 1, "whiskey" = 1, "lemonjuice" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/snowwhite
+ name = "Snow White"
+ id = "snowwhite"
+ result = "snowwhite"
+ required_reagents = list("beer" = 1, "lemon_lime" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/drinks/irishcarbomb
+ name = "Irish Car Bomb"
+ id = "irishcarbomb"
+ result = "irishcarbomb"
+ required_reagents = list("ale" = 1, "irishcream" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/drinks/syndicatebomb
+ name = "Syndicate Bomb"
+ id = "syndicatebomb"
+ result = "syndicatebomb"
+ required_reagents = list("beer" = 1, "whiskeycola" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/drinks/erikasurprise
+ name = "Erika Surprise"
+ id = "erikasurprise"
+ result = "erikasurprise"
+ required_reagents = list("ale" = 2, "limejuice" = 1, "whiskey" = 1, "banana" = 1, "ice" = 1)
+ result_amount = 6
+
+/datum/chemical_reaction/drinks/devilskiss
+ name = "Devils Kiss"
+ id = "devilskiss"
+ result = "devilskiss"
+ required_reagents = list("blood" = 1, "kahlua" = 1, "rum" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/hippiesdelight
+ name = "Hippies Delight"
+ id = "hippiesdelight"
+ result = "hippiesdelight"
+ required_reagents = list("psilocybin" = 1, "gargleblaster" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/drinks/bananahonk
+ name = "Banana Honk"
+ id = "bananahonk"
+ result = "bananahonk"
+ required_reagents = list("banana" = 1, "cream" = 1, "sugar" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/silencer
+ name = "Silencer"
+ id = "silencer"
+ result = "silencer"
+ required_reagents = list("nothing" = 1, "cream" = 1, "sugar" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/driestmartini
+ name = "Driest Martini"
+ id = "driestmartini"
+ result = "driestmartini"
+ required_reagents = list("nothing" = 1, "gin" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/drinks/lemonade
+ name = "Lemonade"
+ id = "lemonade"
+ result = "lemonade"
+ required_reagents = list("lemonjuice" = 1, "sugar" = 1, "water" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/kiraspecial
+ name = "Kira Special"
+ id = "kiraspecial"
+ result = "kiraspecial"
+ required_reagents = list("orangejuice" = 1, "limejuice" = 1, "sodawater" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/brownstar
+ name = "Brown Star"
+ id = "brownstar"
+ result = "brownstar"
+ required_reagents = list("orangejuice" = 2, "cola" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/milkshake
+ name = "Milkshake"
+ id = "milkshake"
+ result = "milkshake"
+ required_reagents = list("cream" = 1, "ice" = 2, "milk" = 2)
+ result_amount = 5
+
+/datum/chemical_reaction/drinks/rewriter
+ name = "Rewriter"
+ id = "rewriter"
+ result = "rewriter"
+ required_reagents = list("spacemountainwind" = 1, "coffee" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/drinks/suidream
+ name = "Sui Dream"
+ id = "suidream"
+ result = "suidream"
+ required_reagents = list("space_up" = 1, "bluecuracao" = 1, "melonliquor" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/shirleytemple
+ name = "Shirley Temple"
+ id = "shirley_temple"
+ result = "shirley_temple"
+ required_reagents = list("gingerale" = 4, "grenadine" = 1)
+ result_amount = 5
+
+//CHOMPStation Edit TFF 24/9/19 - Minor change to make it easier for no runtimes with casino.dm
+/datum/chemical_reaction/drinks/royrogers
+ name = "Roy Rogers"
+ id = "royrogers"
+ result = "royrogers"
+ required_reagents = list("gingerale" = 4, "lemon_lime" = 2, "grenadine" = 1)
+ result_amount = 7
+
+/datum/chemical_reaction/drinks/collinsmix
+ name = "Collins Mix"
+ id = "collins_mix"
+ result = "collins_mix"
+ required_reagents = list("lemon_lime" = 3, "sodawater" = 1)
+ result_amount = 4
+
+/datum/chemical_reaction/drinks/arnoldpalmer
+ name = "Arnold Palmer"
+ id = "arnold_palmer"
+ result = "arnold_palmer"
+ required_reagents = list("icetea" = 1, "lemonade" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/drinks/minttea
+ name = "Mint Tea"
+ id = "minttea"
+ result = "minttea"
+ required_reagents = list("tea" = 5, "mint" = 1)
+ result_amount = 6
+
+/datum/chemical_reaction/drinks/lemontea
+ name = "Lemon Tea"
+ id = "lemontea"
+ result = "lemontea"
+ required_reagents = list("tea" = 5, "lemonjuice" = 1)
+ result_amount = 6
+
+/datum/chemical_reaction/drinks/limetea
+ name = "Lime Tea"
+ id = "limetea"
+ result = "limetea"
+ required_reagents = list("tea" = 5, "limejuice" = 1)
+ result_amount = 6
+
+/datum/chemical_reaction/drinks/orangetea
+ name = "Orange Tea"
+ id = "orangetea"
+ result = "orangetea"
+ required_reagents = list("tea" = 5, "orangejuice" = 1)
+ result_amount = 6
+
+/datum/chemical_reaction/drinks/berrytea
+ name = "Berry Tea"
+ id = "berrytea"
+ result = "berrytea"
+ required_reagents = list("tea" = 5, "berryjuice" = 1)
+ result_amount = 6
+
+/datum/chemical_reaction/drinks/cherrytea
+ name = "Cherry Tea"
+ id = "cherrytea"
+ result = "cherrytea"
+ required_reagents = list("tea" = 5, "cherryjelly" = 1)
+ result_amount = 6
+
+/datum/chemical_reaction/drinks/watermelontea
+ name = "Watermelon Tea"
+ id = "watermelontea"
+ result = "watermelontea"
+ required_reagents = list("tea" = 5, "watermelonjuice" = 1)
+ result_amount = 6
+
+/datum/chemical_reaction/drinks/sakebomb
+ name = "Sake Bomb"
+ id = "sakebomb"
+ result = "sakebomb"
+ required_reagents = list("beer" = 2, "sake" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/tamagozake
+ name = "Tamagozake"
+ id = "tamagozake"
+ result = "tamagozake"
+ required_reagents = list("sake" = 10, "sugar" = 5, "egg" = 3)
+ result_amount = 15
+
+/datum/chemical_reaction/drinks/ginzamary
+ name = "Ginza Mary"
+ id = "ginzamary"
+ result = "ginzamary"
+ required_reagents = list("sake" = 2, "vodka" = 2, "tomatojuice" = 1)
+ result_amount = 5
+
+/datum/chemical_reaction/drinks/tokyorose
+ name = "Tokyo Rose"
+ id = "tokyorose"
+ result = "tokyorose"
+ required_reagents = list("sake" = 1, "berryjuice" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/drinks/saketini
+ name = "Saketini"
+ id = "saketini"
+ result = "saketini"
+ required_reagents = list("sake" = 1, "gin" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/drinks/elysiumfacepunch
+ name = "Elysium Facepunch"
+ id = "elysiumfacepunch"
+ result = "elysiumfacepunch"
+ required_reagents = list("kahlua" = 1, "lemonjuice" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/drinks/erebusmoonrise
+ name = "Erebus Moonrise"
+ id = "erebusmoonrise"
+ result = "erebusmoonrise"
+ required_reagents = list("whiskey" = 1, "vodka" = 1, "tequilla" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/balloon
+ name = "Balloon"
+ id = "balloon"
+ result = "balloon"
+ required_reagents = list("cream" = 1, "bluecuracao" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/drinks/natunabrandy
+ name = "Natuna Brandy"
+ id = "natunabrandy"
+ result = "natunabrandy"
+ required_reagents = list("beer" = 1, "sodawater" = 2)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/euphoria
+ name = "Euphoria"
+ id = "euphoria"
+ result = "euphoria"
+ required_reagents = list("specialwhiskey" = 1, "cognac" = 2)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/xanaducannon
+ name = "Xanadu Cannon"
+ id = "xanaducannon"
+ result = "xanaducannon"
+ required_reagents = list("ale" = 1, "dr_gibb" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/drinks/debugger
+ name = "Debugger"
+ id = "debugger"
+ result = "debugger"
+ required_reagents = list("fuel" = 1, "sugar" = 2, "cornoil" = 2)
+ result_amount = 5
+
+/datum/chemical_reaction/drinks/spacersbrew
+ name = "Spacer's Brew"
+ id = "spacersbrew"
+ result = "spacersbrew"
+ required_reagents = list("brownstar" = 4, "ethanol" = 1)
+ result_amount = 5
+
+/datum/chemical_reaction/drinks/binmanbliss
+ name = "Binman Bliss"
+ id = "binmanbliss"
+ result = "binmanbliss"
+ required_reagents = list("sake" = 1, "tequilla" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/drinks/chrysanthemum
+ name = "Chrysanthemum"
+ id = "chrysanthemum"
+ result = "chrysanthemum"
+ required_reagents = list("sake" = 1, "melonliquor" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/bitters
+ name = "Bitters"
+ id = "bitters"
+ result = "bitters"
+ required_reagents = list("mint" = 5)
+ catalysts = list("enzyme" = 5)
+ result_amount = 5
+
+/datum/chemical_reaction/drinks/soemmerfire
+ name = "Soemmer Fire"
+ id = "soemmerfire"
+ result = "soemmerfire"
+ required_reagents = list("manhattan" = 2, "condensedcapsaicin" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/winebrandy
+ name = "Wine brandy"
+ id = "winebrandy"
+ result = "winebrandy"
+ required_reagents = list("wine" = 10)
+ catalysts = list("enzyme" = 10) //10u enzyme so it requires more than is usually added. Stops overlap with wine recipe
+ result_amount = 5
+
+/datum/chemical_reaction/drinks/lovepotion
+ name = "Love Potion"
+ id = "lovepotion"
+ result = "lovepotion"
+ required_reagents = list("cream" = 1, "berryjuice" = 1, "sugar" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/morningafter
+ name = "Morning After"
+ id = "morningafter"
+ result = "morningafter"
+ required_reagents = list("sbiten" = 1, "coffee" = 5)
+ result_amount = 6
+
+/datum/chemical_reaction/drinks/vesper
+ name = "Vesper"
+ id = "vesper"
+ result = "vesper"
+ required_reagents = list("gin" = 3, "vodka" = 1, "wine" = 1)
+ result_amount = 4
+
+/datum/chemical_reaction/drinks/rotgut
+ name = "Rotgut Fever Dream"
+ id = "rotgut"
+ result = "rotgut"
+ required_reagents = list("vodka" = 3, "rum" = 1, "whiskey" = 1, "cola" = 3)
+ result_amount = 8
+
+/datum/chemical_reaction/drinks/entdraught
+ name = "Ent's Draught"
+ id = "entdraught"
+ result = "entdraught"
+ required_reagents = list("tonic" = 1, "holywater" = 1, "honey" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/voxdelight
+ name = "Vox's Delight"
+ id = "voxdelight"
+ result = "voxdelight"
+ required_reagents = list("phoron" = 3, "fuel" = 1, "water" = 1)
+ result_amount = 4
+
+/datum/chemical_reaction/drinks/screamingviking
+ name = "Screaming Viking"
+ id = "screamingviking"
+ result = "screamingviking"
+ required_reagents = list("vodka" = 1, "vermouth" = 1, "limejuice" = 1, "rum" = 1, "gin" = 1, "tonic" = 1)
+ result_amount = 6
+
+/datum/chemical_reaction/drinks/vilelemon
+ name = "Vile Lemon"
+ id = "vilelemon"
+ result = "vilelemon"
+ required_reagents = list("lemonade" = 5, "spacemountainwind" = 1)
+ result_amount = 6
+
+/datum/chemical_reaction/drinks/dreamcream
+ name = "Dream Cream"
+ id = "dreamcream"
+ result = "dreamcream"
+ required_reagents = list("milk" = 2, "cream" = 1, "honey" = 1)
+ result_amount = 4
+
+/datum/chemical_reaction/drinks/robustin
+ name = "Robustin"
+ id = "robustin"
+ result = "robustin"
+ required_reagents = list("antifreeze" = 1, "phoron" = 1, "fuel" = 1, "vodka" = 1)
+ result_amount = 4
+
+/datum/chemical_reaction/drinks/virginsip
+ name = "Virgin Sip"
+ id = "virginsip"
+ result = "virginsip"
+ required_reagents = list("driestmartini" = 1, "water" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/drinks/chocoshake
+ name = "Chocolate Milkshake"
+ id = "chocoshake"
+ result = "chocoshake"
+ required_reagents = list("milkshake" = 1, "coco" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/drinks/berryshake
+ name = "Berry Milkshake"
+ id = "berryshake"
+ result = "berryshake"
+ required_reagents = list("milkshake" = 1, "berryjuice" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/drinks/coffeeshake
+ name = "Coffee Milkshake"
+ id = "coffeeshake"
+ result = "coffeeshake"
+ required_reagents = list("milkshake" = 1, "coffee" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/drinks/jellyshot
+ name = "Jelly Shot"
+ id = "jellyshot"
+ result = "jellyshot"
+ required_reagents = list("cherryjelly" = 4, "vodka" = 1)
+ result_amount = 5
+
+/datum/chemical_reaction/drinks/slimeshot
+ name = "Named Bullet"
+ id = "slimeshot"
+ result = "slimeshot"
+ required_reagents = list("slimejelly" = 4, "vodka" = 1)
+ result_amount = 5
+
+/datum/chemical_reaction/drinks/negroni
+ name = "Negroni"
+ id = "negroni"
+ result = "negroni"
+ required_reagents = list("gin" = 1, "bitters" = 1, "vermouth" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/cloverclub
+ name = "Clover Club"
+ id = "cloverclub"
+ result = "cloverclub"
+ required_reagents = list("berryjuice" = 1, "lemonjuice" = 1, "gin" = 3)
+ result_amount = 5
+
+/datum/chemical_reaction/drinks/oldfashioned
+ name = "Old Fashioned"
+ id = "oldfashioned"
+ result = "oldfashioned"
+ required_reagents = list("whiskey" = 3, "bitters" = 1, "sugar" = 1)
+ result_amount = 5
+
+/datum/chemical_reaction/drinks/whiskeysour
+ name = "Whiskey Sour"
+ id = "whiskeysour"
+ result = "whiskeysour"
+ required_reagents = list("whiskey" = 2, "lemonjuice" = 1, "sugar" = 1)
+ result_amount = 4
+
+/datum/chemical_reaction/drinks/daiquiri
+ name = "Daiquiri"
+ id = "daiquiri"
+ result = "daiquiri"
+ required_reagents = list("rum" = 3, "limejuice" = 2, "sugar" = 1)
+ result_amount = 5
+
+/datum/chemical_reaction/drinks/mintjulep
+ name = "Mint Julep"
+ id = "mintjulep"
+ result = "mintjulep"
+ required_reagents = list("whiskey" = 2, "water" = 1, "mint" = 1)
+ result_amount = 4
+
+/datum/chemical_reaction/drinks/paloma
+ name = "Paloma"
+ id = "paloma"
+ result = "paloma"
+ required_reagents = list("orangejuice" = 1, "sodawater" = 1, "tequilla" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/mojito
+ name = "Mojito"
+ id = "mojito"
+ result = "mojito"
+ required_reagents = list("rum" = 3, "limejuice" = 1, "mint" = 1)
+ result_amount = 5
+
+/datum/chemical_reaction/drinks/piscosour
+ name = "Pisco Sour"
+ id = "piscosour"
+ result = "piscosour"
+ required_reagents = list("winebrandy" = 1, "lemonjuice" = 1, "sugar" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/coldfront
+ name = "Cold Front"
+ id = "coldfront"
+ result = "coldfront"
+ required_reagents = list("icecoffee" = 1, "whiskey" = 1, "mint" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/eggnog
+ name = "Eggnog"
+ id = "eggnog"
+ result = "eggnog"
+ required_reagents = list("sugar" = 1, "egg" = 1, "milk" = 1, "cream" = 1, "cognac" = 2)
+ result_amount = 6
+
+/datum/chemical_reaction/drinks/spiderdrink
+ name = "Brimming glass of spiders"
+ id = "spiderdrink"
+ result = "spiderdrink"
+ required_reagents = list("spidertoxin" = 1, "clonexadone" = 5, "absinthe" = 4)
+ result_amount = 10
+
+/datum/chemical_reaction/drinks/bubbleteawatermelon
+ name = "Watermelon bubble tea"
+ id = "bubbleteawatermelon"
+ result = "bubbleteawatermelon"
+ required_reagents = list("gelatin" = 2, "watermelontea" = 6, "milk" = 2)
+ result_amount = 10
+
+/datum/chemical_reaction/drinks/bubbleteastrawberry
+ name = "Strawberry bubble tea"
+ id = "bubbleteastrawberry"
+ result = "bubbleteastrawberry"
+ required_reagents = list("gelatin" = 2, "berrytea" = 6, "milk" = 2)
+ result_amount = 10
+
+/datum/chemical_reaction/drinks/bubbleteacherry
+ name = "Cherry bubble tea"
+ id = "bubbleteacherry"
+ result = "bubbleteacherry"
+ required_reagents = list("gelatin" = 2, "cherrytea" = 6, "milk" = 2)
+ result_amount = 10
+
+/datum/chemical_reaction/drinks/bubbleteacoffee
+ name = "Coffee bubble tea"
+ id = "bubbleteacoffee"
+ result = "bubbleteacoffee"
+ required_reagents = list("gelatin" = 2, "tea" = 5, "cafe_latte" = 3)
+ result_amount = 10
+
+/datum/chemical_reaction/drinks/bubbleteabanana
+ name = "Banana bubble tea"
+ id = "bubbleteabanana"
+ result = "bubbleteabanana"
+ required_reagents = list("gelatin" = 2, "tea" = 5, "banana" = 1, "milk" = 2)
+ result_amount = 10
+
+/datum/chemical_reaction/drinks/horchata
+ name = "Horchata"
+ id = "horchata"
+ result = "horchata"
+ required_reagents = list("milk" = 1, "sugar" = 2, "rice" = 2)
+ result_amount = 5
+
+/datum/chemical_reaction/drinks/bluetrain
+ name = "Blue train"
+ id = "bluetrain"
+ result = "bluetrain"
+ required_reagents = list("coolant" = 2, "ethanol" = 2, "nutriment" = 1)
+ result_amount = 5
+
+/datum/chemical_reaction/drinks/lowpower
+ name = "The low power"
+ id = "lowpower"
+ result = "lowpower"
+ required_reagents = list("lemonade" = 1, "cream" = 1, "limejuice" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/jackbrew
+ name = "Jack's brew"
+ id = "jackbrew"
+ result = "jackbrew"
+ required_reagents = list("irishcoffee" = 1, "hyperzine" = 1)
+ result_amount = 2
+
+/datum/chemical_reaction/drinks/bookwyrm
+ name = "Bookwyrm's bite"
+ id = "bookwyrm"
+ result = "bookwyrm"
+ required_reagents = list("coldfront" = 1, "limejuice" = 1, "stoxin" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/highpower
+ name = "The high power"
+ id = "highpower"
+ result = "highpower"
+ required_reagents = list("lowpower" = 1, "iron" = 1, "uranium" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/flapper
+ name = "Flapper"
+ id = "flapper"
+ result = "flapper"
+ required_reagents = list("whiskey" = 1, "blood" = 1, "ice" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/toxin/oilslide
+ name = "Oil slide"
+ id = "oilslide"
+ result = "oilslide"
+ required_reagents = list("moonshine" = 1, "lube" = 1, "fuel" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/sitonmyface
+ name = "Sit on my face"
+ id = "sitonmyface"
+ result = "sitonmyface"
+ required_reagents = list("kahlua" = 1, "irishcream" = 1, "nutbutter" = 1)
+ result_amount = 3
+
+/datum/chemical_reaction/drinks/hachi
+ name = "Hachi"
+ id = "hachi"
+ result = "hachi"
+ required_reagents = list("burbon" = 2, "sake" = 1, "lemonjuice" = 1, "mushroom" = 1)
+ result_amount = 5
+
+//R-UST Port
+/datum/chemical_reaction/hyrdophoron
+ name = "Hydrophoron"
+ id = "hydrophoron"
+ result = "hydrophoron"
+ required_reagents = list("hydrogen" = 1, "phoron" = 1)
+ inhibitors = list("nitrogen" = 1) //So it doesn't mess with lexorin
+ result_amount = 2
+
+/datum/chemical_reaction/deuterium
+ name = "Deuterium"
+ id = "deuterium"
+ result = null
+ required_reagents = list("hydrophoron" = 5, "water" = 10)
+ result_amount = 15
+
+/datum/chemical_reaction/deuterium/on_reaction(var/datum/reagents/holder, var/created_volume)
+ var/turf/T = get_turf(holder.my_atom)
+ if(istype(T)) new /obj/item/stack/material/deuterium(T, created_volume)
+ return
+
+//Skrellian crap.
+/datum/chemical_reaction/talum_quem
+ name = "Talum-quem"
+ id = "talum_quem"
+ result = "talum_quem"
+ required_reagents = list("space_drugs" = 2, "sugar" = 1, "amatoxin" = 1)
+ result_amount = 4
+
+/datum/chemical_reaction/qerr_quem
+ name = "Qerr-quem"
+ id = "qerr_quem"
+ result = "qerr_quem"
+ required_reagents = list("nicotine" = 1, "carbon" = 1, "sugar" = 2)
+ result_amount = 4
diff --git a/code/modules/reagents/Chemistry-Recipes_vr.dm b/code/modules/reagents/Chemistry-Recipes_vr.dm
index bccfc57640..cf220d7173 100644
--- a/code/modules/reagents/Chemistry-Recipes_vr.dm
+++ b/code/modules/reagents/Chemistry-Recipes_vr.dm
@@ -134,7 +134,7 @@
name = "Bullvalene"
id = "bullvalene"
result = "bullvalene"
- required_reagents = list("dermaline" = 1, "orangesap" = 1, "Copper" = 1)
+ required_reagents = list("dermaline" = 1, "orangesap" = 1, "copper" = 1)
result_amount = 1
/datum/chemical_reaction/nutrient