//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/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("[bicon(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/paracetamol
name = "Paracetamol"
id = "paracetamol"
result = "paracetamol"
required_reagents = list("inaprovaline" = 1, "nitrogen" = 1, "water" = 1)
result_amount = 2
/datum/chemical_reaction/tramadol
name = "Tramadol"
id = "tramadol"
result = "tramadol"
required_reagents = list("paracetamol" = 1, "ethanol" = 1, "oxygen" = 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/respirodaxon
name = "Respirodaxon"
id = "respirodaxon"
result = "respirodaxon"
required_reagents = list("dexalinp" = 2, "biomass" = 2, "phoron" = 1)
catalysts = list("phoron" = 5)
inhibitors = list("dexalin" = 1)
result_amount = 2
/datum/chemical_reaction/gastirodaxon
name = "Gastirodaxon"
id = "gastirodaxon"
result = "gastirodaxon"
required_reagents = list("carthatoline" = 1, "biomass" = 2, "tungsten" = 2)
catalysts = list("phoron" = 5)
inhibitors = list("lithium" = 1)
result_amount = 3
/datum/chemical_reaction/hepanephrodaxon
name = "Hepanephrodaxon"
id = "hepanephrodaxon"
result = "hepanephrodaxon"
required_reagents = list("carthatoline" = 2, "biomass" = 2, "lithium" = 1)
catalysts = list("phoron" = 5)
inhibitors = list("tungsten" = 1)
result_amount = 2
/datum/chemical_reaction/cordradaxon
name = "Cordradaxon"
id = "cordradaxon"
result = "cordradaxon"
required_reagents = list("potassium_chlorophoride" = 1, "biomass" = 2, "bicaridine" = 2)
catalysts = list("phoron" = 5)
inhibitors = list("clonexadone" = 1)
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/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/mortiferin
name = "Mortiferin"
id = "mortiferin"
result = "mortiferin"
required_reagents = list("cryptobiolin" = 1, "clonexadone" = 1, "corophizine" = 1)
result_amount = 2
catalysts = list("phoron" = 5)
/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/immunosuprizine
name = "Immunosuprizine"
id = "immunosuprizine"
result = "immunosuprizine"
required_reagents = list("corophizine" = 1, "tungsten" = 1, "sacid" = 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/calciumcarbonate
name = "Calcium Carbonate"
id = "calciumcarbonate"
result = "calciumcarbonate"
required_reagents = list("oxygen" = 3, "calcium" = 1, "carbon" = 1)
result_amount = 2
/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/carpotoxin
name = "Carpotoxin"
id = "carpotoxin"
result = "carpotoxin"
required_reagents = list("spidertoxin" = 2, "biomass" = 1, "sifsap" = 2)
catalysts = list("sifsap" = 10)
inhibitors = list("radium" = 1)
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)
inhibitors = list("phoron" = 1) // Messes with lexorin
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/left4zed
name = "Left4Zed"
id = "left4zed"
result = "left4zed"
required_reagents = list ("diethylamine" = 2, "mutagen" = 1)
result_amount = 3
/datum/chemical_reaction/robustharvest
name = "RobustHarvest"
id = "robustharvest"
result = "robustharvest"
required_reagents = list ("ammonia" = 1, "calcium" = 1, "neurotoxic_protein" = 1)
result_amount = 3
/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
e.start()
holder.clear_reagents()
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)
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
e.start()
holder.clear_reagents()
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()
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))
to_chat(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()
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))
to_chat(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))
to_chat(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/coffee
name = "Coffee"
id = "coffee"
result = "coffee"
required_reagents = list("water" = 5, "coffeepowder" = 1)
result_amount = 5
/datum/chemical_reaction/drinks/tea
name = "Black tea"
id = "tea"
result = "tea"
required_reagents = list("water" = 5, "teapowder" = 1)
result_amount = 5
/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/drinks/grapejuice
name = "Grape Juice"
id = "grapejuice"
result = "grapejuice"
required_reagents = list("water" = 3, "instantgrape" = 1)
result_amount = 3
/datum/chemical_reaction/drinks/orangejuice
name = "Orange Juice"
id = "orangejuice"
result = "orangejuice"
required_reagents = list("water" = 3, "instantorange" = 1)
result_amount = 3
/datum/chemical_reaction/drinks/watermelonjuice
name = "Watermelon Juice"
id = "watermelonjuice"
result = "watermelonjuice"
required_reagents = list("water" = 3, "instantwatermelon" = 1)
result_amount = 3
/datum/chemical_reaction/drinks/applejuice
name = "Apple Juice"
id = "applejuice"
result = "applejuice"
required_reagents = list("water" = 3, "instantapple" = 1)
result_amount = 3
/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/barbecue
name = "Barbeque Sauce"
id = "barbecue"
result = "barbecue"
required_reagents = list("tomatojuice" = 2, "applejuice" = 1, "sugar" = 1, "spacespice" = 1)
result_amount = 4
/datum/chemical_reaction/food/peanutbutter
name = "Peanut Butter"
id = "peanutbutter"
result = "peanutbutter"
required_reagents = list("peanutoil" = 2, "sugar" = 1, "sodiumchloride" = 1)
catalysts = list("enzyme" = 5)
result_amount = 3
/datum/chemical_reaction/food/mayonnaise
name = "mayonnaise"
id = "mayo"
result = "mayo"
required_reagents = list("egg" = 9, "cornoil" = 5, "lemonjuice" = 5, "sodiumchloride" = 1)
result_amount = 15
/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)
inhibitors = list("water" = 1, "beer" = 1) //To prevent it messing with batter recipes
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
/datum/chemical_reaction/drinks/beepsky_smash
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/melonade
name = "Melonade"
id = "melonade"
result = "melonade"
required_reagents = list("watermelonjuice" = 1, "sugar" = 1, "sodawater" = 1)
result_amount = 3
/datum/chemical_reaction/drinks/appleade
name = "Appleade"
id = "appleade"
result = "appleade"
required_reagents = list("applejuice" = 1, "sugar" = 1, "sodawater" = 1)
result_amount = 3
/datum/chemical_reaction/drinks/pineappleade
name = "Pineappleade"
id = "pineappleade"
result = "pineappleade"
required_reagents = list("pineapplejuice" = 2, "limejuice" = 1, "sodawater" = 2, "honey" = 1)
result_amount = 5
/datum/chemical_reaction/drinks/driverspunch
name = "Driver`s Punch"
id = "driverspunch"
result = "driverspunch"
required_reagents = list("appleade" = 2, "orangejuice" = 1, "mint" = 1, "sodawater" = 1)
result_amount = 3
/datum/chemical_reaction/drinks/mintapplesparkle
name = "Mint Apple Sparkle"
id = "mintapplesparkle"
result = "mintapplesparkle"
required_reagents = list("appleade" = 2, "mint" = 1)
inhibitors = list("sodawater" = 1)
result_amount = 3
/datum/chemical_reaction/drinks/berrycordial
name = "Berry Cordial"
id = "berrycordial"
result = "berrycordial"
required_reagents = list("berryjuice" = 4, "sugar" = 1, "lemonjuice" = 1)
result_amount = 5
/datum/chemical_reaction/drinks/tropicalfizz
name = "Tropical Fizz"
id = "tropicalfizz"
result = "tropicalfizz"
required_reagents = list("sodawater" = 6, "berryjuice" = 1, "mint" = 1, "limejuice" = 1, "lemonjuice" = 1, "pineapplejuice" = 1)
inhibitors = list("sugar" = 1)
result_amount = 8
/datum/chemical_reaction/drinks/melonspritzer
name = "Melon Spritzer"
id = "melonspritzer"
result = "melonspritzer"
required_reagents = list("watermelonjuice" = 2, "wine" = 2, "applejuice" = 1, "limejuice" = 1)
result_amount = 6
/datum/chemical_reaction/drinks/fauxfizz
name = "Faux Fizz"
id = "fauxfizz"
result = "fauxfizz"
required_reagents = list("sodawater" = 2, "berryjuice" = 1, "applejuice" = 1, "limejuice" = 1, "honey" = 1)
inhibitors = list("sugar" = 1)
result_amount = 6
/datum/chemical_reaction/drinks/firepunch
name = "Fire Punch"
id = "firepunch"
result = "firepunch"
required_reagents = list("sugar" = 1, "rum" = 2)
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/peanutmilkshake
name = "Peanutbutter Milkshake"
id = "peanutmilkshake"
result = "peanutmilkshake"
required_reagents = list("cream" = 1, "ice" = 1, "peanutbutter" = 2, "milk" = 1)
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
/datum/chemical_reaction/drinks/royrogers
name = "Roy Rogers"
id = "roy_rogers"
result = "roy_rogers"
required_reagents = list("shirley_temple" = 5, "lemon_lime" = 2)
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/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/drinks/deathbell
name = "Deathbell"
id = "deathbell"
result = "deathbell"
required_reagents = list("antifreeze" = 1, "gargleblaster" = 1, "syndicatebomb" =1)
result_amount = 3
/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("martini" = 2, "vodkatonic" = 2, "limejuice" = 1, "rum" = 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/virginmojito
name = "Mojito"
id = "virginmojito"
result = "virginmojito"
required_reagents = list("sodawater" = 3, "limejuice" = 1, "mint" = 1, "sugar" = 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/godsake
name = "Gods Sake"
id = "godsake"
result = "godsake"
required_reagents = list("sake" = 2, "holywater" = 1)
result_amount = 3
/datum/chemical_reaction/drinks/godka //Why you would put this in your body, I don't know.
name = "Godka"
id = "godka"
result = "godka"
required_reagents = list("vodka" = 1, "holywater" = 1, "ethanol" = 1, "carthatoline" = 1)
catalysts = list("enzyme" = 5, "holywater" = 5)
result_amount = 1
/datum/chemical_reaction/drinks/holywine
name = "Angel Ichor"
id = "holywine"
result = "holywine"
required_reagents = list("grapejuice" = 5, "gold" = 5)
catalysts = list("holywater" = 5)
result_amount = 10
/datum/chemical_reaction/drinks/holy_mary
name = "Holy Mary"
id = "holymary"
result = "holymary"
required_reagents = list("vodka" = 2, "holywine" = 3, "limejuice" = 1)
result_amount = 6
/datum/chemical_reaction/drinks/angelskiss
name = "Angels Kiss"
id = "angelskiss"
result = "angelskiss"
required_reagents = list("holywine" = 1, "kahlua" = 1, "rum" = 1)
result_amount = 3
/datum/chemical_reaction/drinks/angelswrath
name = "Angels Wrath"
id = "angelswrath"
result = "angelswrath"
required_reagents = list("rum" = 3, "spacemountainwind" = 1, "holywine" = 1, "dr_gibb" = 1)
result_amount = 6
/datum/chemical_reaction/drinks/ichor_mead
name = "Ichor Mead"
id = "ichor_mead"
result = "ichor_mead"
required_reagents = list("holywine" = 1, "mead" = 1)
result_amount = 2
/datum/chemical_reaction/drinks/oilslick
name = "Oil Slick"
id = "oilslick"
result = "oilslick"
required_reagents = list("cornoil" = 2, "honey" = 1)
result_amount = 3
/datum/chemical_reaction/drinks/slimeslam
name = "Slick Slime Slammer"
id = "slimeslammer"
result = "slimeslammer"
required_reagents = list("cornoil" = 2, "peanutbutter" = 1)
result_amount = 3
/datum/chemical_reaction/drinks/virginsexonthebeach
name = "Virgin Sex On The Beach"
id = "virginsexonthebeach"
result = "virginsexonthebeach"
required_reagents = list("orangejuice" = 3, "grenadine" = 2)
result_amount = 5
/datum/chemical_reaction/drinks/sexonthebeach
name = "Sex On The Beach"
id = "sexonthebeach"
result = "sexonthebeach"
required_reagents = list("virginsexonthebeach" = 5, "vodka" = 1)
result_amount = 6
/datum/chemical_reaction/drinks/eggnog
name = "Eggnog"
id = "eggnog"
result = "eggnog"
required_reagents = list("milk" = 5, "cream" = 5, "sugar" = 5, "egg" = 3)
result_amount = 15
/datum/chemical_reaction/drinks/nuclearwaste_radium
name = "Nuclear Waste"
id = "nuclearwasterad"
result = "nuclearwaste"
required_reagents = list("oilslick" = 1, "radium" = 1, "limejuice" = 1)
result_amount = 2
/datum/chemical_reaction/drinks/nuclearwaste_uranium
name = "Nuclear Waste"
id = "nuclearwasteuran"
result = "nuclearwaste"
required_reagents = list("oilslick" = 2, "uranium" = 1)
result_amount = 3
/datum/chemical_reaction/drinks/sodaoil
name = "Soda Oil"
id = "sodaoil"
result = "sodaoil"
required_reagents = list("cornoil" = 4, "sodawater" = 1, "carbon" = 1, "tricordrazine" = 1)
result_amount = 6
/datum/chemical_reaction/drinks/fusionnaire
name = "Fusionnaire"
id = "fusionnaire"
result = "fusionnaire"
required_reagents = list("lemonjuice" = 3, "vodka" = 2, "schnapps_pep" = 1, "schnapps_lem" = 1, "rum" = 1, "ice" = 1)
result_amount = 9
//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
/datum/chemical_reaction/malish_qualem
name = "Malish-Qualem"
id = "malish-qualem"
result = "malish-qualem"
required_reagents = list("immunosuprizine" = 1, "qerr_quem" = 1, "inaprovaline" = 1)
catalysts = list("phoron" = 5)
result_amount = 2
// Biomass, for cloning and bioprinters
/datum/chemical_reaction/biomass
name = "Biomass"
id = "biomass"
result = "biomass"
required_reagents = list("protein" = 1, "sugar" = 1, "phoron" = 1)
result_amount = 1 // Roughly 20u per phoron sheet
// Neutralization.
/datum/chemical_reaction/neutralize_neurotoxic_protein
name = "Neutralize Toxic Proteins"
id = "neurotoxic_protein_neutral"
result = "protein"
required_reagents = list("anti_toxin" = 1, "neurotoxic_protein" = 2)
result_amount = 2
/datum/chemical_reaction/neutralize_carpotoxin
name = "Neutralize Carpotoxin"
id = "carpotoxin_neutral"
result = "protein"
required_reagents = list("radium" = 1, "carpotoxin" = 1, "sifsap" = 1)
catalysts = list("sifsap" = 10)
result_amount = 2
/datum/chemical_reaction/neutralize_spidertoxin
name = "Neutralize Spidertoxin"
id = "spidertoxin_neutral"
result = "protein"
required_reagents = list("radium" = 1, "spidertoxin" = 1, "sifsap" = 1)
catalysts = list("sifsap" = 10)
result_amount = 2
/*
====================
Aurora Food
====================
*/
/datum/chemical_reaction/coating/batter
name = "Batter"
id = "batter"
result = "batter"
required_reagents = list("egg" = 3, "flour" = 10, "water" = 5, "sodiumchloride" = 2)
result_amount = 20
/datum/chemical_reaction/coating/beerbatter
name = "Beer Batter"
id = "beerbatter"
result = "beerbatter"
required_reagents = list("egg" = 3, "flour" = 10, "beer" = 5, "sodiumchloride" = 2)
result_amount = 20
/datum/chemical_reaction/browniemix
name = "Brownie Mix"
id = "browniemix"
result = "browniemix"
required_reagents = list("flour" = 5, "coco" = 5, "sugar" = 5)
result_amount = 15
/datum/chemical_reaction/butter
name = "Butter"
id = "butter"
result = null
required_reagents = list("cream" = 20, "sodiumchloride" = 1)
result_amount = 1
/datum/chemical_reaction/butter/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/spreads/butter(location)
return
/datum/chemical_reaction/browniemix
name = "Brownie Mix"
id = "browniemix"
result = "browniemix"
required_reagents = list("flour" = 5, "coco" = 5, "sugar" = 5)
result_amount = 15