Adds support for Multiple products (#20177)

* Adds support for multiple recipe results.

Makes it so that recipes can have multiple biproducts, instead of just
one. The results list works just like the reagents list.

ex. list("reagentid" = 5, "otherreagent" = 3) where 5 and 3 are the
amounts produced.

recipe on_reaction 'created volume' is the multiplier for the recipe,
not the sum of the volume of the biproducts. Equations have been
adjusted to this change.

A couple of reactions are made slightly more efficient.

Removes a couple of trailing returns and unneccessary variable
declarations.

Scales cfl3 fireball a miniscule amount with created volume. the range
is increased by 1 for every 100 units mixed.

* updates pyrotechnics.dm

* Removes unneccessary comments and unrelated tweaks.

* Changes variable name for phil

* P is for Product. R is for Reagent.

* Adds support for inverse required temp reactions.

Ie. Cooling a mixture to cause a reaction, instead of heating it. Just
set 'is_cold_recipe' to 1 in the reaction.

* Fixes chapel exploding infinite loop.

Fixes weird bug. Adds unused colorless 'powderpile' icon to
reagentfillings.dmi
This commit is contained in:
nullbear
2016-08-31 09:26:34 +12:00
committed by oranges
parent 1f67aa27c7
commit b5f2777fb0
12 changed files with 268 additions and 615 deletions
+11 -11
View File
@@ -344,6 +344,8 @@ var/const/INJECT = 5 //injection
var/matching_other = 0
var/list/multipliers = new/list()
var/required_temp = C.required_temp
var/is_cold_recipe = C.is_cold_recipe
var/meets_temp_requirement = 0
for(var/B in C.required_reagents)
if(!has_reagent(B, C.required_reagents[B]))
@@ -373,20 +375,18 @@ var/const/INJECT = 5 //injection
if(M.Uses > 0) // added a limit to slime cores -- Muskets requested this
matching_other = 1
if(required_temp == 0)
required_temp = chem_temp
if(required_temp == 0 || (is_cold_recipe && chem_temp <= required_temp) || (!is_cold_recipe && chem_temp >= required_temp))
meets_temp_requirement = 1
if(total_matching_reagents == total_required_reagents && total_matching_catalysts == total_required_catalysts && matching_container && matching_other && chem_temp >= required_temp)
if(total_matching_reagents == total_required_reagents && total_matching_catalysts == total_required_catalysts && matching_container && matching_other && meets_temp_requirement)
var/multiplier = min(multipliers)
for(var/B in C.required_reagents)
remove_reagent(B, (multiplier * C.required_reagents[B]), safety = 1)
var/created_volume = C.result_amount*multiplier
if(C.result)
feedback_add_details("chemical_reaction","[C.result]|[C.result_amount*multiplier]")
for(var/P in C.results)
feedback_add_details("chemical_reaction", "[P]|[C.results[P]*multiplier]")
multiplier = max(multiplier, 1) //this shouldnt happen ...
add_reagent(C.result, C.result_amount*multiplier, null, chem_temp)
add_reagent(P, C.results[P]*multiplier, null, chem_temp)
var/list/seen = viewers(4, get_turf(my_atom))
@@ -405,7 +405,7 @@ var/const/INJECT = 5 //injection
ME2.name = "used slime extract"
ME2.desc = "This extract has been used up."
C.on_reaction(src, created_volume)
C.on_reaction(src, multiplier)
reaction_occured = 1
break
@@ -542,10 +542,10 @@ var/const/INJECT = 5 //injection
add_reagent(r_id, amt, data)
/datum/reagents/proc/remove_reagent(reagent, amount, safety)//Added a safety check for the trans_id_to
if(isnull(amount))
amount = INFINITY
if(!isnum(amount))
return 1
+3 -6
View File
@@ -193,8 +193,9 @@ About Recipes:
name & id
Should be pretty obvious.
result
This var contains the id of the resulting reagent.
results
This var contains a list of the id(s) of the resulting reagents and their result amounts.
I recommend you set this to the total volume of all required reagent.
required_reagents
This is a list of ids of the required reagents.
@@ -208,10 +209,6 @@ About Recipes:
for the reaction. However, unlike required_reagents, catalysts are NOT consumed.
They mearly have to be present in the container.
result_amount
This is the amount of the resulting reagent this recipe will produce.
I recommend you set this to the total volume of all required reagent.
required_container
The container the recipe has to take place in in order to happen. Leave this blank/null
if you want the reaction to happen anywhere.
+2 -2
View File
@@ -1,7 +1,7 @@
/datum/chemical_reaction
var/name = null
var/id = null
var/result = null
var/list/results = new/list()
var/list/required_reagents = new/list()
var/list/required_catalysts = new/list()
@@ -9,11 +9,11 @@
var/atom/required_container = null // the container required for the reaction to happen
var/required_other = 0 // an integer required for the reaction to happen
var/result_amount = 0
var/secondary = 0 // set to nonzero if secondary reaction
var/mob_react = 0 //Determines if a chemical reaction can occur inside a mob
var/required_temp = 0
var/is_cold_recipe = 0 // Set to 1 if you want the recipe to only react when it's BELOW the required temp.
var/mix_message = "The solution begins to bubble." //The message shown to nearby people upon mixing, if applicable
var/mix_sound = 'sound/effects/bubbles.ogg' //The sound played upon mixing, if applicable
@@ -1,16 +1,14 @@
/datum/chemical_reaction/space_drugs
name = "Space Drugs"
id = "space_drugs"
result = "space_drugs"
results = list("space_drugs" = 3)
required_reagents = list("mercury" = 1, "sugar" = 1, "lithium" = 1)
result_amount = 3
/datum/chemical_reaction/crank
name = "Crank"
id = "crank"
result = "crank"
results = list("crank" = 5)
required_reagents = list("diphenhydramine" = 1, "ammonia" = 1, "lithium" = 1, "sacid" = 1, "welding_fuel" = 1)
result_amount = 5
mix_message = "The mixture violently reacts, leaving behind a few crystalline shards."
required_temp = 390
@@ -18,31 +16,27 @@
/datum/chemical_reaction/krokodil
name = "Krokodil"
id = "krokodil"
result = "krokodil"
results = list("krokodil" = 6)
required_reagents = list("diphenhydramine" = 1, "morphine" = 1, "cleaner" = 1, "potassium" = 1, "phosphorus" = 1, "welding_fuel" = 1)
result_amount = 6
mix_message = "The mixture dries into a pale blue powder."
required_temp = 380
/datum/chemical_reaction/methamphetamine
name = "methamphetamine"
id = "methamphetamine"
result = "methamphetamine"
results = list("methamphetamine" = 4)
required_reagents = list("ephedrine" = 1, "iodine" = 1, "phosphorus" = 1, "hydrogen" = 1)
result_amount = 4
required_temp = 374
/datum/chemical_reaction/bath_salts
name = "bath_salts"
id = "bath_salts"
result = "bath_salts"
results = list("bath_salts" = 7)
required_reagents = list("????" = 1, "saltpetre" = 1, "nutriment" = 1, "cleaner" = 1, "enzyme" = 1, "tea" = 1, "mercury" = 1)
result_amount = 7
required_temp = 374
/datum/chemical_reaction/aranesp
name = "aranesp"
id = "aranesp"
result = "aranesp"
results = list("aranesp" = 3)
required_reagents = list("epinephrine" = 1, "atropine" = 1, "morphine" = 1)
result_amount = 3
@@ -2,249 +2,214 @@
/datum/chemical_reaction/leporazine
name = "Leporazine"
id = "leporazine"
result = "leporazine"
results = list("leporazine" = 2)
required_reagents = list("silicon" = 1, "copper" = 1)
required_catalysts = list("plasma" = 5)
result_amount = 2
/datum/chemical_reaction/rezadone
name = "Rezadone"
id = "rezadone"
result = "rezadone"
results = list("rezadone" = 3)
required_reagents = list("carpotoxin" = 1, "cryptobiolin" = 1, "copper" = 1)
result_amount = 3
/datum/chemical_reaction/spaceacillin
name = "Spaceacillin"
id = "spaceacillin"
result = "spaceacillin"
results = list("spaceacillin" = 2)
required_reagents = list("cryptobiolin" = 1, "epinephrine" = 1)
result_amount = 2
/datum/chemical_reaction/inacusiate
name = "inacusiate"
id = "inacusiate"
result = "inacusiate"
results = list("inacusiate" = 2)
required_reagents = list("water" = 1, "carbon" = 1, "charcoal" = 1)
result_amount = 2
/datum/chemical_reaction/synaptizine
name = "Synaptizine"
id = "synaptizine"
result = "synaptizine"
results = list("synaptizine" = 3)
required_reagents = list("sugar" = 1, "lithium" = 1, "water" = 1)
result_amount = 3
/datum/chemical_reaction/charcoal
name = "Charcoal"
id = "charcoal"
result = "charcoal"
results = list("charcoal" = 2)
required_reagents = list("ash" = 1, "sodiumchloride" = 1)
result_amount = 2
mix_message = "The mixture yields a fine black powder."
required_temp = 380
/datum/chemical_reaction/silver_sulfadiazine
name = "Silver Sulfadiazine"
id = "silver_sulfadiazine"
result = "silver_sulfadiazine"
results = list("silver_sulfadiazine" = 5)
required_reagents = list("ammonia" = 1, "silver" = 1, "sulfur" = 1, "oxygen" = 1, "chlorine" = 1)
result_amount = 5
/datum/chemical_reaction/salglu_solution
name = "Saline-Glucose Solution"
id = "salglu_solution"
result = "salglu_solution"
results = list("salglu_solution" = 3)
required_reagents = list("sodiumchloride" = 1, "water" = 1, "sugar" = 1)
result_amount = 3
/datum/chemical_reaction/mine_salve
name = "Miner's Salve"
id = "mine_salve"
result = "mine_salve"
results = list("mine_salve" = 3)
required_reagents = list("oil" = 1, "water" = 1, "iron" = 1)
result_amount = 3
/datum/chemical_reaction/mine_salve2
name = "Miner's Salve"
id = "mine_salve"
result = "mine_salve"
results = list("mine_salve" = 15)
required_reagents = list("plasma" = 5, "iron" = 5, "sugar" = 1) // A sheet of plasma, a twinkie and a sheet of metal makes four of these
result_amount = 15
/datum/chemical_reaction/synthflesh
name = "Synthflesh"
id = "synthflesh"
result = "synthflesh"
results = list("synthflesh" = 3)
required_reagents = list("blood" = 1, "carbon" = 1, "styptic_powder" = 1)
result_amount = 3
/datum/chemical_reaction/styptic_powder
name = "Styptic Powder"
id = "styptic_powder"
result = "styptic_powder"
results = list("styptic_powder" = 4)
required_reagents = list("aluminium" = 1, "hydrogen" = 1, "oxygen" = 1, "sacid" = 1)
result_amount = 4
mix_message = "The solution yields an astringent powder."
/datum/chemical_reaction/calomel
name = "Calomel"
id = "calomel"
result = "calomel"
results = list("calomel" = 2)
required_reagents = list("mercury" = 1, "chlorine" = 1)
result_amount = 2
required_temp = 374
/datum/chemical_reaction/potass_iodide
name = "Potassium Iodide"
id = "potass_iodide"
result = "potass_iodide"
results = list("potass_iodide" = 2)
required_reagents = list("potassium" = 1, "iodine" = 1)
result_amount = 2
/datum/chemical_reaction/pen_acid
name = "Pentetic Acid"
id = "pen_acid"
result = "pen_acid"
results = list("pen_acid" = 6)
required_reagents = list("welding_fuel" = 1, "chlorine" = 1, "ammonia" = 1, "formaldehyde" = 1, "sodium" = 1, "cyanide" = 1)
result_amount = 6
/datum/chemical_reaction/sal_acid
name = "Salicyclic Acid"
id = "sal_acid"
result = "sal_acid"
results = list("sal_acid" = 5)
required_reagents = list("sodium" = 1, "phenol" = 1, "carbon" = 1, "oxygen" = 1, "sacid" = 1)
result_amount = 5
/datum/chemical_reaction/oxandrolone
name = "Oxandrolone"
id = "oxandrolone"
result = "oxandrolone"
results = list("oxandrolone" = 6)
required_reagents = list("carbon" = 3, "phenol" = 1, "hydrogen" = 1, "oxygen" = 1)
result_amount = 6
/datum/chemical_reaction/salbutamol
name = "Salbutamol"
id = "salbutamol"
result = "salbutamol"
results = list("salbutamol" = 5)
required_reagents = list("sal_acid" = 1, "lithium" = 1, "aluminium" = 1, "bromine" = 1, "ammonia" = 1)
result_amount = 5
/datum/chemical_reaction/perfluorodecalin
name = "Perfluorodecalin"
id = "perfluorodecalin"
result = "perfluorodecalin"
results = list("perfluorodecalin" = 3)
required_reagents = list("hydrogen" = 1, "fluorine" = 1, "oil" = 1)
result_amount = 3
required_temp = 370
mix_message = "The mixture rapidly turns into a dense pink liquid."
/datum/chemical_reaction/ephedrine
name = "Ephedrine"
id = "ephedrine"
result = "ephedrine"
results = list("ephedrine" = 4)
required_reagents = list("sugar" = 1, "oil" = 1, "hydrogen" = 1, "diethylamine" = 1)
result_amount = 4
mix_message = "The solution fizzes and gives off toxic fumes."
/datum/chemical_reaction/diphenhydramine
name = "Diphenhydramine"
id = "diphenhydramine"
result = "diphenhydramine"
results = list("diphenhydramine" = 4)
required_reagents = list("oil" = 1, "carbon" = 1, "bromine" = 1, "diethylamine" = 1, "ethanol" = 1)
result_amount = 4
mix_message = "The mixture dries into a pale blue powder."
/datum/chemical_reaction/oculine
name = "Oculine"
id = "oculine"
result = "oculine"
results = list("oculine" = 3)
required_reagents = list("charcoal" = 1, "carbon" = 1, "hydrogen" = 1)
result_amount = 3
mix_message = "The mixture sputters loudly and becomes a pale pink color."
/datum/chemical_reaction/atropine
name = "Atropine"
id = "atropine"
result = "atropine"
results = list("atropine" = 5)
required_reagents = list("ethanol" = 1, "acetone" = 1, "diethylamine" = 1, "phenol" = 1, "sacid" = 1)
result_amount = 5
/datum/chemical_reaction/epinephrine
name = "Epinephrine"
id = "epinephrine"
result = "epinephrine"
results = list("epinephrine" = 6)
required_reagents = list("phenol" = 1, "acetone" = 1, "diethylamine" = 1, "oxygen" = 1, "chlorine" = 1, "hydrogen" = 1)
result_amount = 6
/datum/chemical_reaction/strange_reagent
name = "Strange Reagent"
id = "strange_reagent"
result = "strange_reagent"
results = list("strange_reagent" = 3)
required_reagents = list("omnizine" = 1, "holywater" = 1, "mutagen" = 1)
result_amount = 3
/datum/chemical_reaction/mannitol
name = "Mannitol"
id = "mannitol"
result = "mannitol"
results = list("mannitol" = 3)
required_reagents = list("sugar" = 1, "hydrogen" = 1, "water" = 1)
result_amount = 3
mix_message = "The solution slightly bubbles, becoming thicker."
/datum/chemical_reaction/mutadone
name = "Mutadone"
id = "mutadone"
result = "mutadone"
results = list("mutadone" = 3)
required_reagents = list("mutagen" = 1, "acetone" = 1, "bromine" = 1)
result_amount = 3
/datum/chemical_reaction/antihol
name = "antihol"
id = "antihol"
result = "antihol"
results = list("antihol" = 3)
required_reagents = list("ethanol" = 1, "charcoal" = 1, "copper" = 1)
result_amount = 3
/datum/chemical_reaction/cryoxadone
name = "Cryoxadone"
id = "cryoxadone"
result = "cryoxadone"
results = list("cryoxadone" = 3)
required_reagents = list("stable_plasma" = 1, "acetone" = 1, "mutagen" = 1)
result_amount = 3
/datum/chemical_reaction/haloperidol
name = "Haloperidol"
id = "haloperidol"
result = "haloperidol"
results = list("haloperidol" = 5)
required_reagents = list("chlorine" = 1, "fluorine" = 1, "aluminium" = 1, "potass_iodide" = 1, "oil" = 1)
result_amount = 5
/datum/chemical_reaction/bicaridine
name = "Bicaridine"
id = "bicaridine"
result = "bicaridine"
results = list("bicaridine" = 3)
required_reagents = list("carbon" = 1, "oxygen" = 1, "sugar" = 1)
result_amount = 3
/datum/chemical_reaction/kelotane
name = "Kelotane"
id = "kelotane"
result = "kelotane"
results = list("kelotane" = 2)
required_reagents = list("carbon" = 1, "silicon" = 1)
result_amount = 2
/datum/chemical_reaction/antitoxin
name = "Antitoxin"
id = "antitoxin"
result = "antitoxin"
results = list("antitoxin" = 3)
required_reagents = list("nitrogen" = 1, "silicon" = 1, "potassium" = 1)
result_amount = 3
/datum/chemical_reaction/tricordrazine
name = "Tricordrazine"
id = "tricordrazine"
result = "tricordrazine"
required_reagents = list("bicaridine" = 1, "kelotane" = 1, "antitoxin" = 1)
result_amount = 3
results = list("tricordrazine" = 3)
required_reagents = list("bicaridine" = 1, "kelotane" = 1, "antitoxin" = 1)
+59 -121
View File
@@ -2,211 +2,183 @@
/datum/chemical_reaction/sterilizine
name = "Sterilizine"
id = "sterilizine"
result = "sterilizine"
results = list("sterilizine" = 3)
required_reagents = list("ethanol" = 1, "charcoal" = 1, "chlorine" = 1)
result_amount = 3
/datum/chemical_reaction/lube
name = "Space Lube"
id = "lube"
result = "lube"
results = list("lube" = 4)
required_reagents = list("water" = 1, "silicon" = 1, "oxygen" = 1)
result_amount = 4
/datum/chemical_reaction/spraytan
name = "Spray Tan"
id = "spraytan"
result = "spraytan"
results = list("spraytan" = 2)
required_reagents = list("orangejuice" = 1, "oil" = 1)
result_amount = 2
/datum/chemical_reaction/spraytan2
name = "Spray Tan"
id = "spraytan"
result = "spraytan"
results = list("spraytan" = 2)
required_reagents = list("orangejuice" = 1, "cornoil" = 1)
result_amount = 2
/datum/chemical_reaction/impedrezene
name = "Impedrezene"
id = "impedrezene"
result = "impedrezene"
results = list("impedrezene" = 2)
required_reagents = list("mercury" = 1, "oxygen" = 1, "sugar" = 1)
result_amount = 2
/datum/chemical_reaction/cryptobiolin
name = "Cryptobiolin"
id = "cryptobiolin"
result = "cryptobiolin"
results = list("cryptobiolin" = 3)
required_reagents = list("potassium" = 1, "oxygen" = 1, "sugar" = 1)
result_amount = 3
/datum/chemical_reaction/glycerol
name = "Glycerol"
id = "glycerol"
result = "glycerol"
results = list("glycerol" = 1)
required_reagents = list("cornoil" = 3, "sacid" = 1)
result_amount = 1
/datum/chemical_reaction/sodiumchloride
name = "Sodium Chloride"
id = "sodiumchloride"
result = "sodiumchloride"
results = list("sodiumchloride" = 3)
required_reagents = list("water" = 1, "sodium" = 1, "chlorine" = 1)
result_amount = 3
/datum/chemical_reaction/plasmasolidification
name = "Solid Plasma"
id = "solidplasma"
result = null
required_reagents = list("iron" = 5, "frostoil" = 5, "plasma" = 20)
result_amount = 1
mob_react = 1
/datum/chemical_reaction/plasmasolidification/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
new /obj/item/stack/sheet/mineral/plasma(location)
return
for(var/i = 1, i <= created_volume, i++)
new /obj/item/stack/sheet/mineral/plasma(location)
/datum/chemical_reaction/capsaicincondensation
name = "Capsaicincondensation"
id = "capsaicincondensation"
result = "condensedcapsaicin"
results = list("condensedcapsaicin" = 5)
required_reagents = list("capsaicin" = 1, "ethanol" = 5)
result_amount = 5
/datum/chemical_reaction/soapification
name = "Soapification"
id = "soapification"
result = null
required_reagents = list("liquidgibs" = 10, "lye" = 10) // requires two scooped gib tiles
required_temp = 374
result_amount = 1
mob_react = 1
/datum/chemical_reaction/soapification/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
new /obj/item/weapon/soap/homemade(location)
return
for(var/i = 1, i <= created_volume, i++)
new /obj/item/weapon/soap/homemade(location)
/datum/chemical_reaction/candlefication
name = "Candlefication"
id = "candlefication"
result = null
required_reagents = list("liquidgibs" = 5, "oxygen" = 5) //
required_temp = 374
result_amount = 1
mob_react = 1
/datum/chemical_reaction/candlefication/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
new /obj/item/candle(location)
return
for(var/i = 1, i <= created_volume, i++)
new /obj/item/candle(location)
/datum/chemical_reaction/meatification
name = "Meatification"
id = "meatification"
result = null
required_reagents = list("liquidgibs" = 10, "nutriment" = 10, "carbon" = 10)
result_amount = 1
mob_react = 1
/datum/chemical_reaction/meatification/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
new /obj/item/weapon/reagent_containers/food/snacks/meat/slab/meatproduct(location)
for(var/i = 1, i <= created_volume, i++)
new /obj/item/weapon/reagent_containers/food/snacks/meat/slab/meatproduct(location)
return
/datum/chemical_reaction/carbondioxide
name = "Direct Carbon Oxidation"
id = "burningcarbon"
result = "co2"
results = list("co2" = 3)
required_reagents = list("carbon" = 1, "oxygen" = 2)
required_temp = 777 // pure carbon isn't especially reactive.
result_amount = 3
////////////////////////////////// VIROLOGY //////////////////////////////////////////
/datum/chemical_reaction/virus_food
name = "Virus Food"
id = "virusfood"
result = "virusfood"
results = list("virusfood" = 15)
required_reagents = list("water" = 5, "milk" = 5)
result_amount = 15
/datum/chemical_reaction/virus_food_mutagen
name = "mutagenic agar"
id = "mutagenvirusfood"
result = "mutagenvirusfood"
results = list("mutagenvirusfood" = 1)
required_reagents = list("mutagen" = 1, "virusfood" = 1)
result_amount = 1
/datum/chemical_reaction/virus_food_synaptizine
name = "virus rations"
id = "synaptizinevirusfood"
result = "synaptizinevirusfood"
results = list("synaptizinevirusfood" = 1)
required_reagents = list("synaptizine" = 1, "virusfood" = 1)
result_amount = 1
/datum/chemical_reaction/virus_food_plasma
name = "virus plasma"
id = "plasmavirusfood"
result = "plasmavirusfood"
results = list("plasmavirusfood" = 1)
required_reagents = list("plasma" = 1, "virusfood" = 1)
result_amount = 1
/datum/chemical_reaction/virus_food_plasma_synaptizine
name = "weakened virus plasma"
id = "weakplasmavirusfood"
result = "weakplasmavirusfood"
results = list("weakplasmavirusfood" = 2)
required_reagents = list("synaptizine" = 1, "plasmavirusfood" = 1)
result_amount = 2
/datum/chemical_reaction/virus_food_mutagen_sugar
name = "sucrose agar"
id = "sugarvirusfood"
result = "sugarvirusfood"
results = list("sugarvirusfood" = 2)
required_reagents = list("sugar" = 1, "mutagenvirusfood" = 1)
result_amount = 2
/datum/chemical_reaction/virus_food_mutagen_salineglucose
name = "sucrose agar"
id = "salineglucosevirusfood"
result = "sugarvirusfood"
results = list("sugarvirusfood" = 2)
required_reagents = list("salglu_solution" = 1, "mutagenvirusfood" = 1)
result_amount = 2
/datum/chemical_reaction/virus_food_uranium
name = "Decaying uranium gel"
id = "uraniumvirusfood"
result = "uraniumvirusfood"
results = list("uraniumvirusfood" = 1)
required_reagents = list("uranium" = 1, "virusfood" = 1)
result_amount = 1
/datum/chemical_reaction/virus_food_uranium_plasma
name = "Unstable uranium gel"
id = "uraniumvirusfood_plasma"
result = "uraniumplasmavirusfood_unstable"
results = list("uraniumplasmavirusfood_unstable" = 1)
required_reagents = list("uranium" = 5, "plasmavirusfood" = 1)
result_amount = 1
/datum/chemical_reaction/virus_food_uranium_plasma_gold
name = "Stable uranium gel"
id = "uraniumvirusfood_gold"
result = "uraniumplasmavirusfood_stable"
results = list("uraniumplasmavirusfood_stable" = 1)
required_reagents = list("uranium" = 10, "gold" = 10, "plasma" = 1)
result_amount = 1
/datum/chemical_reaction/virus_food_uranium_plasma_silver
name = "Stable uranium gel"
id = "uraniumvirusfood_silver"
result = "uraniumplasmavirusfood_stable"
results = list("uraniumplasmavirusfood_stable" = 1)
required_reagents = list("uranium" = 10, "silver" = 10, "plasma" = 1)
result_amount = 1
/datum/chemical_reaction/mix_virus
name = "Mix Virus"
id = "mixvirus"
result = "blood"
results = list("blood" = 1)
required_reagents = list("virusfood" = 1)
required_catalysts = list("blood" = 1)
var/level_min = 0
@@ -332,17 +304,13 @@
/datum/chemical_reaction/surfactant
name = "Foam surfactant"
id = "foam surfactant"
result = "fluorosurfactant"
results = list("fluorosurfactant" = 5)
required_reagents = list("fluorine" = 2, "carbon" = 2, "sacid" = 1)
result_amount = 5
/datum/chemical_reaction/foam
name = "Foam"
id = "foam"
result = null
required_reagents = list("fluorosurfactant" = 1, "water" = 1)
result_amount = 2
mob_react = 1
/datum/chemical_reaction/foam/on_reaction(datum/reagents/holder, created_volume)
@@ -350,7 +318,7 @@
for(var/mob/M in viewers(5, location))
M << "<span class='danger'>The solution spews out foam!</span>"
var/datum/effect_system/foam_spread/s = new()
s.set_up(created_volume, location, holder)
s.set_up(created_volume*2, location, holder)
s.start()
holder.clear_reagents()
return
@@ -359,9 +327,7 @@
/datum/chemical_reaction/metalfoam
name = "Metal Foam"
id = "metalfoam"
result = null
required_reagents = list("aluminium" = 3, "foaming_agent" = 1, "facid" = 1)
result_amount = 5
mob_react = 1
/datum/chemical_reaction/metalfoam/on_reaction(datum/reagents/holder, created_volume)
@@ -371,16 +337,14 @@
M << "<span class='danger'>The solution spews out a metallic foam!</span>"
var/datum/effect_system/foam_spread/metal/s = new()
s.set_up(created_volume, location, holder, 1)
s.set_up(created_volume*5, location, holder, 1)
s.start()
holder.clear_reagents()
/datum/chemical_reaction/ironfoam
name = "Iron Foam"
id = "ironlfoam"
result = null
required_reagents = list("iron" = 3, "foaming_agent" = 1, "facid" = 1)
result_amount = 5
mob_react = 1
/datum/chemical_reaction/ironfoam/on_reaction(datum/reagents/holder, created_volume)
@@ -388,16 +352,15 @@
for(var/mob/M in viewers(5, location))
M << "<span class='danger'>The solution spews out a metallic foam!</span>"
var/datum/effect_system/foam_spread/metal/s = new()
s.set_up(created_volume, location, holder, 2)
s.set_up(created_volume*5, location, holder, 2)
s.start()
holder.clear_reagents()
/datum/chemical_reaction/foaming_agent
name = "Foaming Agent"
id = "foaming_agent"
result = "foaming_agent"
results = list("foaming_agent" = 1)
required_reagents = list("lithium" = 1, "hydrogen" = 1)
result_amount = 1
/////////////////////////////// Cleaning and hydroponics /////////////////////////////////////////////////
@@ -405,174 +368,149 @@
/datum/chemical_reaction/ammonia
name = "Ammonia"
id = "ammonia"
result = "ammonia"
results = list("ammonia" = 3)
required_reagents = list("hydrogen" = 3, "nitrogen" = 1)
result_amount = 3
/datum/chemical_reaction/diethylamine
name = "Diethylamine"
id = "diethylamine"
result = "diethylamine"
results = list("diethylamine" = 2)
required_reagents = list ("ammonia" = 1, "ethanol" = 1)
result_amount = 2
/datum/chemical_reaction/space_cleaner
name = "Space cleaner"
id = "cleaner"
result = "cleaner"
results = list("cleaner" = 2)
required_reagents = list("ammonia" = 1, "water" = 1)
result_amount = 2
/datum/chemical_reaction/plantbgone
name = "Plant-B-Gone"
id = "plantbgone"
result = "plantbgone"
results = list("plantbgone" = 5)
required_reagents = list("toxin" = 1, "water" = 4)
result_amount = 5
/datum/chemical_reaction/weedkiller
name = "Weed Killer"
id = "weedkiller"
result = "weedkiller"
results = list("weedkiller" = 5)
required_reagents = list("toxin" = 1, "ammonia" = 4)
result_amount = 5
/datum/chemical_reaction/pestkiller
name = "Pest Killer"
id = "pestkiller"
result = "pestkiller"
results = list("pestkiller" = 5)
required_reagents = list("toxin" = 1, "ethanol" = 4)
result_amount = 5
/datum/chemical_reaction/drying_agent
name = "Drying agent"
id = "drying_agent"
result = "drying_agent"
results = list("drying_agent" = 3)
required_reagents = list("stable_plasma" = 2, "ethanol" = 1, "sodium" = 1)
result_amount = 3
//////////////////////////////////// Other goon stuff ///////////////////////////////////////////
/datum/chemical_reaction/acetone
name = "acetone"
id = "acetone"
result = "acetone"
results = list("acetone" = 3)
required_reagents = list("oil" = 1, "welding_fuel" = 1, "oxygen" = 1)
result_amount = 3
/datum/chemical_reaction/carpet
name = "carpet"
id = "carpet"
result = "carpet"
results = list("carpet" = 2)
required_reagents = list("space_drugs" = 1, "blood" = 1)
result_amount = 2
/datum/chemical_reaction/oil
name = "Oil"
id = "oil"
result = "oil"
results = list("oil" = 3)
required_reagents = list("welding_fuel" = 1, "carbon" = 1, "hydrogen" = 1)
result_amount = 3
/datum/chemical_reaction/phenol
name = "phenol"
id = "phenol"
result = "phenol"
results = list("phenol" = 3)
required_reagents = list("water" = 1, "chlorine" = 1, "oil" = 1)
result_amount = 3
/datum/chemical_reaction/ash
name = "Ash"
id = "ash"
result = "ash"
results = list("ash" = 1)
required_reagents = list("oil" = 1)
result_amount = 1
required_temp = 480
/datum/chemical_reaction/colorful_reagent
name = "colorful_reagent"
id = "colorful_reagent"
result = "colorful_reagent"
results = list("colorful_reagent" = 5)
required_reagents = list("stable_plasma" = 1, "radium" = 1, "space_drugs" = 1, "cryoxadone" = 1, "triple_citrus" = 1)
result_amount = 5
/datum/chemical_reaction/life
name = "Life"
id = "life"
result = null
required_reagents = list("strange_reagent" = 1, "synthflesh" = 1, "blood" = 1)
result_amount = 1
required_temp = 374
/datum/chemical_reaction/life/on_reaction(datum/reagents/holder, created_volume)
chemical_mob_spawn(holder, 1, "Life")
chemical_mob_spawn(holder, rand(1, round(created_volume, 1)), "Life") // Lol.
/datum/chemical_reaction/corgium
name = "corgium"
id = "corgium"
result = null
required_reagents = list("nutriment" = 1, "colorful_reagent" = 1, "strange_reagent" = 1, "blood" = 1)
result_amount = 1
required_temp = 374
/datum/chemical_reaction/corgium/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
new /mob/living/simple_animal/pet/dog/corgi(location)
for(var/i = rand(1, created_volume), i <= created_volume, i++) // More lulz.
new /mob/living/simple_animal/pet/dog/corgi(location)
..()
/datum/chemical_reaction/hair_dye
name = "hair_dye"
id = "hair_dye"
result = "hair_dye"
results = list("hair_dye" = 5)
required_reagents = list("colorful_reagent" = 1, "radium" = 1, "space_drugs" = 1)
result_amount = 5
/datum/chemical_reaction/barbers_aid
name = "barbers_aid"
id = "barbers_aid"
result = "barbers_aid"
results = list("barbers_aid" = 5)
required_reagents = list("carpet" = 1, "radium" = 1, "space_drugs" = 1)
result_amount = 5
/datum/chemical_reaction/concentrated_barbers_aid
name = "concentrated_barbers_aid"
id = "concentrated_barbers_aid"
result = "concentrated_barbers_aid"
results = list("concentrated_barbers_aid" = 2)
required_reagents = list("barbers_aid" = 1, "mutagen" = 1)
result_amount = 2
/datum/chemical_reaction/saltpetre
name = "saltpetre"
id = "saltpetre"
result = "saltpetre"
results = list("saltpetre" = 3)
required_reagents = list("potassium" = 1, "nitrogen" = 1, "oxygen" = 3)
result_amount = 3
/datum/chemical_reaction/lye
name = "lye"
id = "lye"
result = "lye"
results = list("lye" = 3)
required_reagents = list("sodium" = 1, "hydrogen" = 1, "oxygen" = 1)
result_amount = 3
/datum/chemical_reaction/lye2
name = "lye"
id = "lye"
result = "lye"
results = list("lye" = 2)
required_reagents = list("ash" = 1, "water" = 1)
result_amount = 2
/datum/chemical_reaction/royal_bee_jelly
name = "royal bee jelly"
id = "royal_bee_jelly"
result = "royal_bee_jelly"
results = list("royal_bee_jelly" = 5)
required_reagents = list("mutagen" = 10, "honey" = 40)
result_amount = 5
/datum/chemical_reaction/laughter
name = "laughter"
id = "laughter"
result = "laughter"
results = list("laughter" = 10) // Fuck it. I'm not touching this one.
required_reagents = list("sugar" = 1, "banana" = 1)
result_amount = 10
@@ -1,7 +1,6 @@
/datum/chemical_reaction/reagent_explosion
name = "Generic explosive"
id = "reagent_explosion"
result = null
var/strengthdiv = 10
var/modifier = 0
@@ -27,22 +26,20 @@
/datum/chemical_reaction/reagent_explosion/nitroglycerin
name = "Nitroglycerin"
id = "nitroglycerin"
result = "nitroglycerin"
results = list("nitroglycerin" = 2)
required_reagents = list("glycerol" = 1, "facid" = 1, "sacid" = 1)
result_amount = 2
strengthdiv = 2
/datum/chemical_reaction/reagent_explosion/nitroglycerin/on_reaction(datum/reagents/holder, created_volume)
if(holder.has_reagent("stabilizing_agent"))
return
holder.remove_reagent("nitroglycerin", created_volume)
holder.remove_reagent("nitroglycerin", created_volume*2)
..()
/datum/chemical_reaction/reagent_explosion/nitroglycerin_explosion
name = "Nitroglycerin explosion"
id = "nitroglycerin_explosion"
required_reagents = list("nitroglycerin" = 1)
result_amount = 1
required_temp = 474
strengthdiv = 2
@@ -51,7 +48,6 @@
name = "Explosion"
id = "potassium_explosion"
required_reagents = list("water" = 1, "potassium" = 1)
result_amount = 2
strengthdiv = 10
/datum/chemical_reaction/reagent_explosion/potassium_explosion/holyboom
@@ -84,15 +80,13 @@
/datum/chemical_reaction/blackpowder
name = "Black Powder"
id = "blackpowder"
result = "blackpowder"
results = list("blackpowder" = 3)
required_reagents = list("saltpetre" = 1, "charcoal" = 1, "sulfur" = 1)
result_amount = 3
/datum/chemical_reaction/reagent_explosion/blackpowder_explosion
name = "Black Powder Kaboom"
id = "blackpowder_explosion"
required_reagents = list("blackpowder" = 1)
result_amount = 1
required_temp = 474
strengthdiv = 6
modifier = 1
@@ -105,38 +99,32 @@
/datum/chemical_reaction/thermite
name = "Thermite"
id = "thermite"
result = "thermite"
results = list("thermite" = 3)
required_reagents = list("aluminium" = 1, "iron" = 1, "oxygen" = 1)
result_amount = 3
/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(datum/reagents/holder, 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)
empulse(location, round(created_volume / 12), round(created_volume / 7), 1)
holder.clear_reagents()
/datum/chemical_reaction/stabilizing_agent
name = "stabilizing_agent"
id = "stabilizing_agent"
result = "stabilizing_agent"
results = list("stabilizing_agent" = 3)
required_reagents = list("iron" = 1, "oxygen" = 1, "hydrogen" = 1)
result_amount = 3
/datum/chemical_reaction/clf3
name = "Chlorine Trifluoride"
id = "clf3"
result = "clf3"
results = list("clf3" = 4)
required_reagents = list("chlorine" = 1, "fluorine" = 3)
result_amount = 4
required_temp = 424
/datum/chemical_reaction/clf3/on_reaction(datum/reagents/holder, created_volume)
@@ -145,12 +133,10 @@
PoolOrNew(/obj/effect/hotspot, turf)
holder.chem_temp = 1000 // hot as shit
/datum/chemical_reaction/reagent_explosion/methsplosion/
name = "Meth explosion"
id = "methboom1"
result = "methboom1"
result_amount = 1
results = list("methboom1" = 1)
required_temp = 380 //slightly above the meth mix time.
required_reagents = list("methamphetamine" = 1)
strengthdiv = 6
@@ -166,28 +152,25 @@
/datum/chemical_reaction/reagent_explosion/methsplosion/methboom2
required_reagents = list("diethylamine" = 1, "iodine" = 1, "phosphorus" = 1, "hydrogen" = 1) //diethylamine is often left over from mixing the ephedrine.
required_temp = 300 //room temperature, chilling it even a little will prevent the explosion
result_amount = 4
results = list("methboom1" = 4) // this is ugly. Sorry goof.
/datum/chemical_reaction/sorium
name = "Sorium"
id = "sorium"
result = "sorium"
results = list("sorium" = 4)
required_reagents = list("mercury" = 1, "oxygen" = 1, "nitrogen" = 1, "carbon" = 1)
result_amount = 4
/datum/chemical_reaction/sorium/on_reaction(datum/reagents/holder, created_volume)
if(holder.has_reagent("stabilizing_agent"))
return
holder.remove_reagent("sorium", created_volume)
holder.remove_reagent("sorium", created_volume*4)
var/turf/T = get_turf(holder.my_atom)
var/range = Clamp(sqrt(created_volume), 1, 6)
var/range = Clamp(sqrt(created_volume*4), 1, 6)
goonchem_vortex(T, 1, range)
/datum/chemical_reaction/sorium_vortex
name = "sorium_vortex"
id = "sorium_vortex"
result = null
result_amount = 1
required_reagents = list("sorium" = 1)
required_temp = 474
@@ -196,27 +179,23 @@
var/range = Clamp(sqrt(created_volume), 1, 6)
goonchem_vortex(T, 1, range)
/datum/chemical_reaction/liquid_dark_matter
name = "Liquid Dark Matter"
id = "liquid_dark_matter"
result = "liquid_dark_matter"
results = list("liquid_dark_matter" = 3)
required_reagents = list("stable_plasma" = 1, "radium" = 1, "carbon" = 1)
result_amount = 3
/datum/chemical_reaction/liquid_dark_matter/on_reaction(datum/reagents/holder, created_volume)
if(holder.has_reagent("stabilizing_agent"))
return
holder.remove_reagent("liquid_dark_matter", created_volume)
holder.remove_reagent("liquid_dark_matter", created_volume*3)
var/turf/T = get_turf(holder.my_atom)
var/range = Clamp(sqrt(created_volume), 1, 6)
var/range = Clamp(sqrt(created_volume*3), 1, 6)
goonchem_vortex(T, 0, range)
/datum/chemical_reaction/ldm_vortex
name = "LDM Vortex"
id = "ldm_vortex"
result = null
result_amount = 1
required_reagents = list("liquid_dark_matter" = 1)
required_temp = 474
@@ -228,9 +207,8 @@
/datum/chemical_reaction/flash_powder
name = "Flash powder"
id = "flash_powder"
result = "flash_powder"
results = list("flash_powder" = 3)
required_reagents = list("aluminium" = 1, "potassium" = 1, "sulfur" = 1 )
result_amount = 3
/datum/chemical_reaction/flash_powder/on_reaction(datum/reagents/holder, created_volume)
if(holder.has_reagent("stabilizing_agent"))
@@ -239,20 +217,18 @@
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
s.set_up(2, 1, location)
s.start()
for(var/mob/living/carbon/C in get_hearers_in_view(created_volume/10, location))
for(var/mob/living/carbon/C in get_hearers_in_view(created_volume/3, location))
if(C.flash_eyes())
if(get_dist(C, location) < 4)
C.Weaken(5)
else
C.Stun(5)
holder.remove_reagent("flash_powder", created_volume)
holder.remove_reagent("flash_powder", created_volume*3)
/datum/chemical_reaction/flash_powder_flash
name = "Flash powder activation"
id = "flash_powder_flash"
result = null
required_reagents = list("flash_powder" = 1)
result_amount = 1
required_temp = 374
/datum/chemical_reaction/flash_powder_flash/on_reaction(datum/reagents/holder, created_volume)
@@ -270,15 +246,14 @@
/datum/chemical_reaction/smoke_powder
name = "smoke_powder"
id = "smoke_powder"
result = "smoke_powder"
results = list("smoke_powder" = 3)
required_reagents = list("potassium" = 1, "sugar" = 1, "phosphorus" = 1)
result_amount = 3
/datum/chemical_reaction/smoke_powder/on_reaction(datum/reagents/holder, created_volume)
if(holder.has_reagent("stabilizing_agent"))
return
holder.remove_reagent("smoke_powder", created_volume)
var/smoke_radius = round(sqrt(created_volume / 2), 1)
holder.remove_reagent("smoke_powder", created_volume*3)
var/smoke_radius = round(sqrt(created_volume * 1.5), 1)
var/location = get_turf(holder.my_atom)
var/datum/effect_system/smoke_spread/chem/S = new
S.attach(location)
@@ -292,10 +267,8 @@
/datum/chemical_reaction/smoke_powder_smoke
name = "smoke_powder_smoke"
id = "smoke_powder_smoke"
result = null
required_reagents = list("smoke_powder" = 1)
required_temp = 374
result_amount = 1
secondary = 1
mob_react = 1
@@ -311,22 +284,19 @@
if(holder && holder.my_atom)
holder.clear_reagents()
/datum/chemical_reaction/sonic_powder
name = "sonic_powder"
id = "sonic_powder"
result = "sonic_powder"
results = list("sonic_powder" = 3)
required_reagents = list("oxygen" = 1, "cola" = 1, "phosphorus" = 1)
result_amount = 3
/datum/chemical_reaction/sonic_powder/on_reaction(datum/reagents/holder, created_volume)
if(holder.has_reagent("stabilizing_agent"))
return
holder.remove_reagent("sonic_powder", created_volume)
holder.remove_reagent("sonic_powder", created_volume*3)
var/location = get_turf(holder.my_atom)
playsound(location, 'sound/effects/bang.ogg', 25, 1)
for(var/mob/living/carbon/C in get_hearers_in_view(created_volume/10, location))
for(var/mob/living/carbon/C in get_hearers_in_view(created_volume/3, location))
if(C.check_ear_prot())
continue
C.show_message("<span class='warning'>BANG</span>", 2)
@@ -341,10 +311,8 @@
/datum/chemical_reaction/sonic_powder_deafen
name = "sonic_powder_deafen"
id = "sonic_powder_deafen"
result = null
required_reagents = list("sonic_powder" = 1)
required_temp = 374
result_amount = 1
/datum/chemical_reaction/sonic_powder_deafen/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
@@ -365,9 +333,8 @@
/datum/chemical_reaction/phlogiston
name = "phlogiston"
id = "phlogiston"
result = "phlogiston"
results = list("phlogiston" = 3)
required_reagents = list("phosphorus" = 1, "sacid" = 1, "stable_plasma" = 1)
result_amount = 3
/datum/chemical_reaction/phlogiston/on_reaction(datum/reagents/holder, created_volume)
if(holder.has_reagent("stabilizing_agent"))
@@ -378,21 +345,17 @@
holder.clear_reagents()
return
/datum/chemical_reaction/napalm
name = "Napalm"
id = "napalm"
result = "napalm"
results = list("napalm" = 3)
required_reagents = list("oil" = 1, "welding_fuel" = 1, "ethanol" = 1 )
result_amount = 3
/datum/chemical_reaction/cryostylane
name = "cryostylane"
id = "cryostylane"
result = "cryostylane"
results = list("cryostylane" = 3)
required_reagents = list("water" = 1, "stable_plasma" = 1, "nitrogen" = 1)
result_amount = 3
/datum/chemical_reaction/cryostylane/on_reaction(datum/reagents/holder, created_volume)
holder.chem_temp = 20 // cools the fuck down
@@ -402,9 +365,8 @@
/datum/chemical_reaction/pyrosium
name = "pyrosium"
id = "pyrosium"
result = "pyrosium"
results = list("pyrosium" = 3)
required_reagents = list("stable_plasma" = 1, "radium" = 1, "phosphorus" = 1)
result_amount = 3
/datum/chemical_reaction/pyrosium/on_reaction(datum/reagents/holder, created_volume)
holder.chem_temp = 20 // also cools the fuck down
@@ -3,9 +3,7 @@
/datum/chemical_reaction/slimespawn
name = "Slime Spawn"
id = "m_spawn"
result = null
required_reagents = list("plasma" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/grey
required_other = 1
@@ -20,9 +18,8 @@
/datum/chemical_reaction/slimeinaprov
name = "Slime epinephrine"
id = "m_inaprov"
result = "epinephrine"
results = list("epinephrine" = 3)
required_reagents = list("water" = 5)
result_amount = 3
required_other = 1
required_container = /obj/item/slime_extract/grey
@@ -32,9 +29,7 @@
/datum/chemical_reaction/slimemonkey
name = "Slime Monkey"
id = "m_monkey"
result = null
required_reagents = list("blood" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/grey
required_other = 1
@@ -48,9 +43,8 @@
/datum/chemical_reaction/slimemutate
name = "Mutation Toxin"
id = "mutationtoxin"
result = "mutationtoxin"
results = list("mutationtoxin" = 1)
required_reagents = list("plasma" = 1)
result_amount = 1
required_other = 1
required_container = /obj/item/slime_extract/green
@@ -61,9 +55,8 @@
/datum/chemical_reaction/slimemutate_unstable
name = "Unstable Mutation Toxin"
id = "unstablemutationtoxin"
result = "unstablemutationtoxin"
results = list("unstablemutationtoxin" = 1)
required_reagents = list("radium" = 1)
result_amount = 1
required_other = 1
required_container = /obj/item/slime_extract/green
mix_message = "<span class='info'>The mixture rapidly expands and contracts, its appearance shifting into a sickening green.</span>"
@@ -75,9 +68,7 @@
/datum/chemical_reaction/slimemetal
name = "Slime Metal"
id = "m_metal"
result = null
required_reagents = list("plasma" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/metal
required_other = 1
@@ -106,9 +97,7 @@
/datum/chemical_reaction/slimecrit
name = "Slime Crit"
id = "m_tele"
result = null
required_reagents = list("plasma" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/gold
required_other = 1
@@ -121,9 +110,7 @@
/datum/chemical_reaction/slimecritlesser
name = "Slime Crit Lesser"
id = "m_tele3"
result = null
required_reagents = list("blood" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/gold
required_other = 1
@@ -136,9 +123,7 @@
/datum/chemical_reaction/slimecritfriendly
name = "Slime Crit Friendly"
id = "m_tele5"
result = null
required_reagents = list("water" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/gold
required_other = 1
@@ -152,9 +137,7 @@
/datum/chemical_reaction/slimebork
name = "Slime Bork"
id = "m_tele2"
result = null
required_reagents = list("plasma" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/silver
required_other = 1
@@ -201,9 +184,7 @@
/datum/chemical_reaction/slimebork2
name = "Slime Bork 2"
id = "m_tele4"
result = null
required_reagents = list("water" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/silver
required_other = 1
@@ -232,9 +213,8 @@
/datum/chemical_reaction/slimefrost
name = "Slime Frost Oil"
id = "m_frostoil"
result = "frostoil"
results = list("frostoil" = 10)
required_reagents = list("plasma" = 1)
result_amount = 10
required_container = /obj/item/slime_extract/blue
required_other = 1
@@ -245,9 +225,7 @@
/datum/chemical_reaction/slimestabilizer
name = "Slime Stabilizer"
id = "m_slimestabilizer"
result = null
required_reagents = list("blood" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/blue
required_other = 1
@@ -262,9 +240,7 @@
/datum/chemical_reaction/slimefreeze
name = "Slime Freeze"
id = "m_freeze"
result = null
required_reagents = list("plasma" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/darkblue
required_other = 1
@@ -285,9 +261,7 @@
/datum/chemical_reaction/slimefireproof
name = "Slime Fireproof"
id = "m_fireproof"
result = null
required_reagents = list("water" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/darkblue
required_other = 1
@@ -300,9 +274,8 @@
/datum/chemical_reaction/slimecasp
name = "Slime Capsaicin Oil"
id = "m_capsaicinoil"
result = "capsaicin"
results = list("capsaicin" = 10)
required_reagents = list("blood" = 1)
result_amount = 10
required_container = /obj/item/slime_extract/orange
required_other = 1
@@ -312,9 +285,7 @@
/datum/chemical_reaction/slimefire
name = "Slime fire"
id = "m_fire"
result = null
required_reagents = list("plasma" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/orange
required_other = 1
@@ -336,9 +307,7 @@
/datum/chemical_reaction/slimeoverload
name = "Slime EMP"
id = "m_emp"
result = null
required_reagents = list("blood" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/yellow
required_other = 1
@@ -350,9 +319,7 @@
/datum/chemical_reaction/slimecell
name = "Slime Powercell"
id = "m_cell"
result = null
required_reagents = list("plasma" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/yellow
required_other = 1
@@ -364,9 +331,7 @@
/datum/chemical_reaction/slimeglow
name = "Slime Glow"
id = "m_glow"
result = null
required_reagents = list("water" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/yellow
required_other = 1
@@ -382,9 +347,7 @@
/datum/chemical_reaction/slimepsteroid
name = "Slime Steroid"
id = "m_steroid"
result = null
required_reagents = list("plasma" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/purple
required_other = 1
@@ -396,9 +359,8 @@
/datum/chemical_reaction/slimejam
name = "Slime Jam"
id = "m_jam"
result = "slimejelly"
results = list("slimejelly" = 10)
required_reagents = list("sugar" = 1)
result_amount = 10
required_container = /obj/item/slime_extract/purple
required_other = 1
@@ -410,9 +372,7 @@
/datum/chemical_reaction/slimeplasma
name = "Slime Plasma"
id = "m_plasma"
result = null
required_reagents = list("plasma" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/darkpurple
required_other = 1
@@ -426,9 +386,7 @@
/datum/chemical_reaction/slimemutator
name = "Slime Mutator"
id = "m_slimemutator"
result = null
required_reagents = list("plasma" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/red
required_other = 1
@@ -440,9 +398,7 @@
/datum/chemical_reaction/slimebloodlust
name = "Bloodlust"
id = "m_bloodlust"
result = null
required_reagents = list("blood" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/red
required_other = 1
@@ -456,9 +412,7 @@
/datum/chemical_reaction/slimespeed
name = "Slime Speed"
id = "m_speed"
result = null
required_reagents = list("water" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/red
required_other = 1
@@ -472,9 +426,7 @@
/datum/chemical_reaction/docility
name = "Docility Potion"
id = "m_potion"
result = null
required_reagents = list("plasma" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/pink
required_other = 1
@@ -486,9 +438,7 @@
/datum/chemical_reaction/gender
name = "Gender Potion"
id = "m_gender"
result = null
required_reagents = list("blood" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/pink
required_other = 1
@@ -501,9 +451,8 @@
/datum/chemical_reaction/slimemutate2
name = "Advanced Mutation Toxin"
id = "mutationtoxin2"
result = "amutationtoxin"
results = list("amutationtoxin" = 1)
required_reagents = list("plasma" = 1)
result_amount = 1
required_other = 1
required_container = /obj/item/slime_extract/black
@@ -514,9 +463,7 @@
/datum/chemical_reaction/slimeexplosion
name = "Slime Explosion"
id = "m_explosion"
result = null
required_reagents = list("plasma" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/oil
required_other = 1
@@ -541,8 +488,6 @@
/datum/chemical_reaction/slimepotion2
name = "Slime Potion 2"
id = "m_potion2"
result = null
result_amount = 1
required_container = /obj/item/slime_extract/lightpink
required_reagents = list("plasma" = 1)
required_other = 1
@@ -556,9 +501,7 @@
/datum/chemical_reaction/slimegolem
name = "Slime Golem"
id = "m_golem"
result = null
required_reagents = list("plasma" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/adamantine
required_other = 1
@@ -572,9 +515,7 @@
/datum/chemical_reaction/slimefloor2
name = "Bluespace Floor"
id = "m_floor2"
result = null
required_reagents = list("blood" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/bluespace
required_other = 1
@@ -588,9 +529,7 @@
/datum/chemical_reaction/slimecrystal
name = "Slime Crystal"
id = "m_crystal"
result = null
required_reagents = list("plasma" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/bluespace
required_other = 1
@@ -604,9 +543,7 @@
/datum/chemical_reaction/slimepsteroid2
name = "Slime Steroid 2"
id = "m_steroid2"
result = null
required_reagents = list("plasma" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/cerulean
required_other = 1
@@ -620,9 +557,7 @@
/datum/chemical_reaction/slime_territory
name = "Slime Territory"
id = "s_territory"
result = null
required_reagents = list("blood" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/cerulean
required_other = 1
@@ -635,9 +570,7 @@
/datum/chemical_reaction/slimestop
name = "Slime Stop"
id = "m_stop"
result = null
required_reagents = list("plasma" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/sepia
required_other = 1
@@ -653,9 +586,7 @@
/datum/chemical_reaction/slimecamera
name = "Slime Camera"
id = "m_camera"
result = null
required_reagents = list("water" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/sepia
required_other = 1
@@ -669,9 +600,7 @@
/datum/chemical_reaction/slimefloor
name = "Sepia Floor"
id = "m_floor"
result = null
required_reagents = list("blood" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/sepia
required_other = 1
@@ -688,9 +617,7 @@
/datum/chemical_reaction/slimepaint
name = "Slime Paint"
id = "s_paint"
result = null
required_reagents = list("plasma" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/pyrite
required_other = 1
@@ -706,9 +633,7 @@
/datum/chemical_reaction/slimeRNG
name = "Random Core"
id = "slimerng"
result = null
required_reagents = list("plasma" = 1)
result_amount = 1
required_other = 1
required_container = /obj/item/slime_extract/rainbow
@@ -723,9 +648,7 @@
/datum/chemical_reaction/slime_transfer
name = "Transfer Potion"
id = "slimetransfer"
result = null
required_reagents = list("blood" = 1)
result_amount = 1
required_other = 1
required_container = /obj/item/slime_extract/rainbow
@@ -2,111 +2,96 @@
/datum/chemical_reaction/formaldehyde
name = "formaldehyde"
id = "Formaldehyde"
result = "formaldehyde"
results = list("formaldehyde" = 3)
required_reagents = list("ethanol" = 1, "oxygen" = 1, "silver" = 1)
result_amount = 3
required_temp = 420
/datum/chemical_reaction/neurotoxin2
name = "neurotoxin2"
id = "neurotoxin2"
result = "neurotoxin2"
results = list("neurotoxin2" = 1)
required_reagents = list("space_drugs" = 1)
result_amount = 1
required_temp = 674
/datum/chemical_reaction/cyanide
name = "Cyanide"
id = "cyanide"
result = "cyanide"
results = list("cyanide" = 3)
required_reagents = list("oil" = 1, "ammonia" = 1, "oxygen" = 1)
result_amount = 3
required_temp = 380
/datum/chemical_reaction/itching_powder
name = "Itching Powder"
id = "itching_powder"
result = "itching_powder"
results = list("itching_powder" = 3)
required_reagents = list("welding_fuel" = 1, "ammonia" = 1, "charcoal" = 1)
result_amount = 3
/datum/chemical_reaction/facid
name = "Fluorosulfuric acid"
id = "facid"
result = "facid"
results = list("facid" = 4)
required_reagents = list("sacid" = 1, "fluorine" = 1, "hydrogen" = 1, "potassium" = 1)
result_amount = 4
required_temp = 380
/datum/chemical_reaction/sulfonal
name = "sulfonal"
id = "sulfonal"
result = "sulfonal"
results = list("sulfonal" = 3)
required_reagents = list("acetone" = 1, "diethylamine" = 1, "sulfur" = 1)
result_amount = 3
/datum/chemical_reaction/lipolicide
name = "lipolicide"
id = "lipolicide"
result = "lipolicide"
results = list("lipolicide" = 3)
required_reagents = list("mercury" = 1, "diethylamine" = 1, "ephedrine" = 1)
result_amount = 3
/datum/chemical_reaction/mutagen
name = "Unstable mutagen"
id = "mutagen"
result = "mutagen"
results = list("mutagen" = 3)
required_reagents = list("radium" = 1, "phosphorus" = 1, "chlorine" = 1)
result_amount = 3
/datum/chemical_reaction/lexorin
name = "Lexorin"
id = "lexorin"
result = "lexorin"
results = list("lexorin" = 3)
required_reagents = list("plasma" = 1, "hydrogen" = 1, "nitrogen" = 1)
result_amount = 3
/datum/chemical_reaction/chloralhydrate
name = "Chloral Hydrate"
id = "chloralhydrate"
result = "chloralhydrate"
results = list("chloralhydrate" = 1)
required_reagents = list("ethanol" = 1, "chlorine" = 3, "water" = 1)
result_amount = 1
/datum/chemical_reaction/mutetoxin //i'll just fit this in here snugly between other unfun chemicals :v
name = "Mute toxin"
id = "mutetoxin"
result = "mutetoxin"
results = list("mutetoxin" = 2)
required_reagents = list("uranium" = 2, "water" = 1, "carbon" = 1)
result_amount = 2
/datum/chemical_reaction/zombiepowder
name = "Zombie Powder"
id = "zombiepowder"
result = "zombiepowder"
results = list("zombiepowder" = 2)
required_reagents = list("carpotoxin" = 5, "morphine" = 5, "copper" = 5)
result_amount = 2
/datum/chemical_reaction/mindbreaker
name = "Mindbreaker Toxin"
id = "mindbreaker"
result = "mindbreaker"
results = list("mindbreaker" = 5)
required_reagents = list("silicon" = 1, "hydrogen" = 1, "charcoal" = 1)
result_amount = 5
/datum/chemical_reaction/teslium
name = "Teslium"
id = "teslium"
result = "teslium"
results = list("teslium" = 3)
required_reagents = list("plasma" = 1, "silver" = 1, "blackpowder" = 1)
result_amount = 3
mix_message = "<span class='danger'>A jet of sparks flies from the mixture as it merges into a flickering slurry.</span>"
required_temp = 400
/datum/chemical_reaction/heparin
name = "Heparin"
id = "Heparin"
result = "heparin"
results = list("heparin" = 4)
required_reagents = list("formaldehyde" = 1, "sodium" = 1, "chlorine" = 1, "lithium" = 1)
result_amount = 4
mix_message = "<span class='danger'>The mixture thins and loses all color.</span>"