Files
Polaris/code/modules/reagents/Chemistry-Recipes.dm
Datraen 79e22d58e5 Semi-final stage of Xenobio2 Initial Implementation
Adds UIs to Core Extractor, Slime Replicator
Adds Slimified Monkey Cubes as separate item type
Adds Docility Toxin
Replaces amutationtoxin references with docilitytoxin references
Adds resistances to simple_mob damage handling, to allow for simple mobs to have resistances to different kinds of damage
Moves a return to it's proper position to allow for hostile mobs to properly handle targets.
2016-05-25 03:50:23 -04:00

1751 lines
51 KiB
Plaintext

//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("<span class='notice'>\icon[container] [mix_message]</span>", 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/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/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/hyperzine
name = "Hyperzine"
id = "hyperzine"
result = "hyperzine"
required_reagents = list("sugar" = 1, "phosphorus" = 1, "sulfur" = 1)
result_amount = 3
/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/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
/* Solidification */
/datum/chemical_reaction/phoronsolidification
name = "Solid Phoron"
id = "solidphoron"
result = null
required_reagents = list("iron" = 5, "frostoil" = 5, "phoron" = 20)
result_amount = 1
/datum/chemical_reaction/phoronsolidification/on_reaction(var/datum/reagents/holder, var/created_volume)
new /obj/item/stack/material/phoron(get_turf(holder.my_atom), created_volume)
return
/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
flick("e_flash", M.flash)
M.Weaken(15)
if(4 to 5)
if(hasvar(M, "glasses"))
if(istype(M:glasses, /obj/item/clothing/glasses/sunglasses))
continue
flick("e_flash", M.flash)
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 / 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))
M << "<span class='warning'>The solution spews out foam!</span>"
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))
M << "<span class='warning'>The solution spews out a metalic foam!</span>"
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 << "<span class='warning'>The solution spews out a metalic foam!</span>"
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, "crayon_dust_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, "crayon_dust_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, "crayon_dust_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, "crayon_dust_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, "crayon_dust_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, "crayon_dust_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, "crayon_dust_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, "crayon_dust_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"
/* Slime cores */
/datum/chemical_reaction/slime
var/required = null
//Slimed monkeys
/datum/chemical_reaction/slime/can_happen(var/datum/reagents/holder)
if(holder.my_atom && istype(holder.my_atom, required))
return ..()
return 0
/datum/chemical_reaction/slime/golem
name = "Prometheans"
id = "m_promethean"
result = null
required_reagents = list("mutationtoxin" = 1)
result_amount = 1
required = /obj/item/weapon/reagent_containers/food/snacks/monkeycube
/datum/chemical_reaction/slime/golem/on_reaction(var/datum/reagents/holder)
var/location = get_turf(holder.my_atom)
new /obj/item/slime_cube(location)
qdel(holder.my_atom)
/* Food */
/datum/chemical_reaction/tofu
name = "Tofu"
id = "tofu"
result = null
required_reagents = list("soymilk" = 10)
catalysts = list("enzyme" = 5)
result_amount = 1
/datum/chemical_reaction/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/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/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/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/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/hot_coco
name = "Hot Coco"
id = "hot_coco"
result = "hot_coco"
required_reagents = list("water" = 5, "coco" = 1)
result_amount = 5
/datum/chemical_reaction/soysauce
name = "Soy Sauce"
id = "soysauce"
result = "soysauce"
required_reagents = list("soymilk" = 4, "sacid" = 1)
result_amount = 5
/datum/chemical_reaction/ketchup
name = "Ketchup"
id = "ketchup"
result = "ketchup"
required_reagents = list("tomatojuice" = 2, "water" = 1, "sugar" = 1)
result_amount = 4
/datum/chemical_reaction/cheesewheel
name = "Cheesewheel"
id = "cheesewheel"
result = null
required_reagents = list("milk" = 40)
catalysts = list("enzyme" = 5)
result_amount = 1
/datum/chemical_reaction/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/meatball
name = "Meatball"
id = "meatball"
result = null
required_reagents = list("protein" = 3, "flour" = 5)
result_amount = 3
/datum/chemical_reaction/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/dough
name = "Dough"
id = "dough"
result = null
required_reagents = list("egg" = 3, "flour" = 10)
result_amount = 1
/datum/chemical_reaction/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/syntiflesh
name = "Syntiflesh"
id = "syntiflesh"
result = null
required_reagents = list("blood" = 5, "clonexadone" = 1)
result_amount = 1
/datum/chemical_reaction/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/goldschlager
name = "Goldschlager"
id = "goldschlager"
result = "goldschlager"
required_reagents = list("vodka" = 10, "gold" = 1)
result_amount = 10
/datum/chemical_reaction/patron
name = "Patron"
id = "patron"
result = "patron"
required_reagents = list("tequilla" = 10, "silver" = 1)
result_amount = 10
/datum/chemical_reaction/bilk
name = "Bilk"
id = "bilk"
result = "bilk"
required_reagents = list("milk" = 1, "beer" = 1)
result_amount = 2
/datum/chemical_reaction/icetea
name = "Iced Tea"
id = "icetea"
result = "icetea"
required_reagents = list("ice" = 1, "tea" = 2)
result_amount = 3
/datum/chemical_reaction/icecoffee
name = "Iced Coffee"
id = "icecoffee"
result = "icecoffee"
required_reagents = list("ice" = 1, "coffee" = 2)
result_amount = 3
/datum/chemical_reaction/nuka_cola
name = "Nuka Cola"
id = "nuka_cola"
result = "nuka_cola"
required_reagents = list("uranium" = 1, "cola" = 5)
result_amount = 5
/datum/chemical_reaction/moonshine
name = "Moonshine"
id = "moonshine"
result = "moonshine"
required_reagents = list("nutriment" = 10)
catalysts = list("enzyme" = 5)
result_amount = 10
/datum/chemical_reaction/grenadine
name = "Grenadine Syrup"
id = "grenadine"
result = "grenadine"
required_reagents = list("berryjuice" = 10)
catalysts = list("enzyme" = 5)
result_amount = 10
/datum/chemical_reaction/wine
name = "Wine"
id = "wine"
result = "wine"
required_reagents = list("grapejuice" = 10)
catalysts = list("enzyme" = 5)
result_amount = 10
/datum/chemical_reaction/pwine
name = "Poison Wine"
id = "pwine"
result = "pwine"
required_reagents = list("poisonberryjuice" = 10)
catalysts = list("enzyme" = 5)
result_amount = 10
/datum/chemical_reaction/melonliquor
name = "Melon Liquor"
id = "melonliquor"
result = "melonliquor"
required_reagents = list("watermelonjuice" = 10)
catalysts = list("enzyme" = 5)
result_amount = 10
/datum/chemical_reaction/bluecuracao
name = "Blue Curacao"
id = "bluecuracao"
result = "bluecuracao"
required_reagents = list("orangejuice" = 10)
catalysts = list("enzyme" = 5)
result_amount = 10
/datum/chemical_reaction/spacebeer
name = "Space Beer"
id = "spacebeer"
result = "beer"
required_reagents = list("cornoil" = 10)
catalysts = list("enzyme" = 5)
result_amount = 10
/datum/chemical_reaction/vodka
name = "Vodka"
id = "vodka"
result = "vodka"
required_reagents = list("potato" = 10)
catalysts = list("enzyme" = 5)
result_amount = 10
/datum/chemical_reaction/sake
name = "Sake"
id = "sake"
result = "sake"
required_reagents = list("rice" = 10)
catalysts = list("enzyme" = 5)
result_amount = 10
/datum/chemical_reaction/kahlua
name = "Kahlua"
id = "kahlua"
result = "kahlua"
required_reagents = list("coffee" = 5, "sugar" = 5)
catalysts = list("enzyme" = 5)
result_amount = 5
/datum/chemical_reaction/gin_tonic
name = "Gin and Tonic"
id = "gintonic"
result = "gintonic"
required_reagents = list("gin" = 2, "tonic" = 1)
result_amount = 3
/datum/chemical_reaction/cuba_libre
name = "Cuba Libre"
id = "cubalibre"
result = "cubalibre"
required_reagents = list("rum" = 2, "cola" = 1)
result_amount = 3
/datum/chemical_reaction/martini
name = "Classic Martini"
id = "martini"
result = "martini"
required_reagents = list("gin" = 2, "vermouth" = 1)
result_amount = 3
/datum/chemical_reaction/vodkamartini
name = "Vodka Martini"
id = "vodkamartini"
result = "vodkamartini"
required_reagents = list("vodka" = 2, "vermouth" = 1)
result_amount = 3
/datum/chemical_reaction/white_russian
name = "White Russian"
id = "whiterussian"
result = "whiterussian"
required_reagents = list("blackrussian" = 2, "cream" = 1)
result_amount = 3
/datum/chemical_reaction/whiskey_cola
name = "Whiskey Cola"
id = "whiskeycola"
result = "whiskeycola"
required_reagents = list("whiskey" = 2, "cola" = 1)
result_amount = 3
/datum/chemical_reaction/screwdriver
name = "Screwdriver"
id = "screwdrivercocktail"
result = "screwdrivercocktail"
required_reagents = list("vodka" = 2, "orangejuice" = 1)
result_amount = 3
/datum/chemical_reaction/bloody_mary
name = "Bloody Mary"
id = "bloodymary"
result = "bloodymary"
required_reagents = list("vodka" = 2, "tomatojuice" = 3, "limejuice" = 1)
result_amount = 6
/datum/chemical_reaction/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/brave_bull
name = "Brave Bull"
id = "bravebull"
result = "bravebull"
required_reagents = list("tequilla" = 2, "kahlua" = 1)
result_amount = 3
/datum/chemical_reaction/tequilla_sunrise
name = "Tequilla Sunrise"
id = "tequillasunrise"
result = "tequillasunrise"
required_reagents = list("tequilla" = 2, "orangejuice" = 1)
result_amount = 3
/datum/chemical_reaction/phoron_special
name = "Toxins Special"
id = "phoronspecial"
result = "phoronspecial"
required_reagents = list("rum" = 2, "vermouth" = 2, "phoron" = 2)
result_amount = 6
/datum/chemical_reaction/beepsky_smash
name = "Beepksy Smash"
id = "beepksysmash"
result = "beepskysmash"
required_reagents = list("limejuice" = 1, "whiskey" = 1, "iron" = 1)
result_amount = 2
/datum/chemical_reaction/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/irish_cream
name = "Irish Cream"
id = "irishcream"
result = "irishcream"
required_reagents = list("whiskey" = 2, "cream" = 1)
result_amount = 3
/datum/chemical_reaction/manly_dorf
name = "The Manly Dorf"
id = "manlydorf"
result = "manlydorf"
required_reagents = list ("beer" = 1, "ale" = 2)
result_amount = 3
/datum/chemical_reaction/hooch
name = "Hooch"
id = "hooch"
result = "hooch"
required_reagents = list ("sugar" = 1, "ethanol" = 2, "fuel" = 1)
result_amount = 3
/datum/chemical_reaction/irish_coffee
name = "Irish Coffee"
id = "irishcoffee"
result = "irishcoffee"
required_reagents = list("irishcream" = 1, "coffee" = 1)
result_amount = 2
/datum/chemical_reaction/b52
name = "B-52"
id = "b52"
result = "b52"
required_reagents = list("irishcream" = 1, "kahlua" = 1, "cognac" = 1)
result_amount = 3
/datum/chemical_reaction/atomicbomb
name = "Atomic Bomb"
id = "atomicbomb"
result = "atomicbomb"
required_reagents = list("b52" = 10, "uranium" = 1)
result_amount = 10
/datum/chemical_reaction/margarita
name = "Margarita"
id = "margarita"
result = "margarita"
required_reagents = list("tequilla" = 2, "limejuice" = 1)
result_amount = 3
/datum/chemical_reaction/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/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/threemileisland
name = "Three Mile Island Iced Tea"
id = "threemileisland"
result = "threemileisland"
required_reagents = list("longislandicedtea" = 10, "uranium" = 1)
result_amount = 10
/datum/chemical_reaction/whiskeysoda
name = "Whiskey Soda"
id = "whiskeysoda"
result = "whiskeysoda"
required_reagents = list("whiskey" = 2, "sodawater" = 1)
result_amount = 3
/datum/chemical_reaction/black_russian
name = "Black Russian"
id = "blackrussian"
result = "blackrussian"
required_reagents = list("vodka" = 2, "kahlua" = 1)
result_amount = 3
/datum/chemical_reaction/manhattan
name = "Manhattan"
id = "manhattan"
result = "manhattan"
required_reagents = list("whiskey" = 2, "vermouth" = 1)
result_amount = 3
/datum/chemical_reaction/manhattan_proj
name = "Manhattan Project"
id = "manhattan_proj"
result = "manhattan_proj"
required_reagents = list("manhattan" = 10, "uranium" = 1)
result_amount = 10
/datum/chemical_reaction/vodka_tonic
name = "Vodka and Tonic"
id = "vodkatonic"
result = "vodkatonic"
required_reagents = list("vodka" = 2, "tonic" = 1)
result_amount = 3
/datum/chemical_reaction/gin_fizz
name = "Gin Fizz"
id = "ginfizz"
result = "ginfizz"
required_reagents = list("gin" = 1, "sodawater" = 1, "limejuice" = 1)
result_amount = 3
/datum/chemical_reaction/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/singulo
name = "Singulo"
id = "singulo"
result = "singulo"
required_reagents = list("vodka" = 5, "radium" = 1, "wine" = 5)
result_amount = 10
/datum/chemical_reaction/alliescocktail
name = "Allies Cocktail"
id = "alliescocktail"
result = "alliescocktail"
required_reagents = list("classicmartini" = 1, "vodka" = 1)
result_amount = 2
/datum/chemical_reaction/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/booger
name = "Booger"
id = "booger"
result = "booger"
required_reagents = list("cream" = 2, "banana" = 1, "rum" = 1, "watermelonjuice" = 1)
result_amount = 5
/datum/chemical_reaction/antifreeze
name = "Anti-freeze"
id = "antifreeze"
result = "antifreeze"
required_reagents = list("vodka" = 1, "cream" = 1, "ice" = 1)
result_amount = 3
/datum/chemical_reaction/barefoot
name = "Barefoot"
id = "barefoot"
result = "barefoot"
required_reagents = list("berryjuice" = 1, "cream" = 1, "vermouth" = 1)
result_amount = 3
/datum/chemical_reaction/grapesoda
name = "Grape Soda"
id = "grapesoda"
result = "grapesoda"
required_reagents = list("grapejuice" = 2, "cola" = 1)
result_amount = 3
/datum/chemical_reaction/sbiten
name = "Sbiten"
id = "sbiten"
result = "sbiten"
required_reagents = list("vodka" = 10, "capsaicin" = 1)
result_amount = 10
/datum/chemical_reaction/red_mead
name = "Red Mead"
id = "red_mead"
result = "red_mead"
required_reagents = list("blood" = 1, "mead" = 1)
result_amount = 2
/datum/chemical_reaction/mead
name = "Mead"
id = "mead"
result = "mead"
required_reagents = list("sugar" = 1, "water" = 1)
catalysts = list("enzyme" = 5)
result_amount = 2
/datum/chemical_reaction/iced_beer
name = "Iced Beer"
id = "iced_beer"
result = "iced_beer"
required_reagents = list("beer" = 10, "frostoil" = 1)
result_amount = 10
/datum/chemical_reaction/iced_beer2
name = "Iced Beer"
id = "iced_beer"
result = "iced_beer"
required_reagents = list("beer" = 5, "ice" = 1)
result_amount = 6
/datum/chemical_reaction/grog
name = "Grog"
id = "grog"
result = "grog"
required_reagents = list("rum" = 1, "water" = 1)
result_amount = 2
/datum/chemical_reaction/soy_latte
name = "Soy Latte"
id = "soy_latte"
result = "soy_latte"
required_reagents = list("coffee" = 1, "soymilk" = 1)
result_amount = 2
/datum/chemical_reaction/cafe_latte
name = "Cafe Latte"
id = "cafe_latte"
result = "cafe_latte"
required_reagents = list("coffee" = 1, "milk" = 1)
result_amount = 2
/datum/chemical_reaction/acidspit
name = "Acid Spit"
id = "acidspit"
result = "acidspit"
required_reagents = list("sacid" = 1, "wine" = 5)
result_amount = 6
/datum/chemical_reaction/amasec
name = "Amasec"
id = "amasec"
result = "amasec"
required_reagents = list("iron" = 1, "wine" = 5, "vodka" = 5)
result_amount = 10
/datum/chemical_reaction/changelingsting
name = "Changeling Sting"
id = "changelingsting"
result = "changelingsting"
required_reagents = list("screwdrivercocktail" = 1, "limejuice" = 1, "lemonjuice" = 1)
result_amount = 3
/datum/chemical_reaction/aloe
name = "Aloe"
id = "aloe"
result = "aloe"
required_reagents = list("cream" = 1, "whiskey" = 1, "watermelonjuice" = 1)
result_amount = 3
/datum/chemical_reaction/andalusia
name = "Andalusia"
id = "andalusia"
result = "andalusia"
required_reagents = list("rum" = 1, "whiskey" = 1, "lemonjuice" = 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/snowwhite
name = "Snow White"
id = "snowwhite"
result = "snowwhite"
required_reagents = list("beer" = 1, "lemon_lime" = 1)
result_amount = 2
/datum/chemical_reaction/irishcarbomb
name = "Irish Car Bomb"
id = "irishcarbomb"
result = "irishcarbomb"
required_reagents = list("ale" = 1, "irishcream" = 1)
result_amount = 2
/datum/chemical_reaction/syndicatebomb
name = "Syndicate Bomb"
id = "syndicatebomb"
result = "syndicatebomb"
required_reagents = list("beer" = 1, "whiskeycola" = 1)
result_amount = 2
/datum/chemical_reaction/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/devilskiss
name = "Devils Kiss"
id = "devilskiss"
result = "devilskiss"
required_reagents = list("blood" = 1, "kahlua" = 1, "rum" = 1)
result_amount = 3
/datum/chemical_reaction/hippiesdelight
name = "Hippies Delight"
id = "hippiesdelight"
result = "hippiesdelight"
required_reagents = list("psilocybin" = 1, "gargleblaster" = 1)
result_amount = 2
/datum/chemical_reaction/bananahonk
name = "Banana Honk"
id = "bananahonk"
result = "bananahonk"
required_reagents = list("banana" = 1, "cream" = 1, "sugar" = 1)
result_amount = 3
/datum/chemical_reaction/silencer
name = "Silencer"
id = "silencer"
result = "silencer"
required_reagents = list("nothing" = 1, "cream" = 1, "sugar" = 1)
result_amount = 3
/datum/chemical_reaction/driestmartini
name = "Driest Martini"
id = "driestmartini"
result = "driestmartini"
required_reagents = list("nothing" = 1, "gin" = 1)
result_amount = 2
/datum/chemical_reaction/lemonade
name = "Lemonade"
id = "lemonade"
result = "lemonade"
required_reagents = list("lemonjuice" = 1, "sugar" = 1, "water" = 1)
result_amount = 3
/datum/chemical_reaction/kiraspecial
name = "Kira Special"
id = "kiraspecial"
result = "kiraspecial"
required_reagents = list("orangejuice" = 1, "limejuice" = 1, "sodawater" = 1)
result_amount = 3
/datum/chemical_reaction/brownstar
name = "Brown Star"
id = "brownstar"
result = "brownstar"
required_reagents = list("orangejuice" = 2, "cola" = 1)
result_amount = 3
/datum/chemical_reaction/milkshake
name = "Milkshake"
id = "milkshake"
result = "milkshake"
required_reagents = list("cream" = 1, "ice" = 2, "milk" = 2)
result_amount = 5
/datum/chemical_reaction/rewriter
name = "Rewriter"
id = "rewriter"
result = "rewriter"
required_reagents = list("spacemountainwind" = 1, "coffee" = 1)
result_amount = 2
/datum/chemical_reaction/suidream
name = "Sui Dream"
id = "suidream"
result = "suidream"
required_reagents = list("space_up" = 1, "bluecuracao" = 1, "melonliquor" = 1)
result_amount = 3
/datum/chemical_reaction/luminol
name = "Luminol"
id = "luminol"
result = "luminol"
required_reagents = list("hydrogen" = 2, "carbon" = 2, "ammonia" = 2)
result_amount = 6