mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
[MIRROR] Recipie conflict unit test + Chemanalyzer PRO (#10494)
Co-authored-by: Cameron Lennox <killer65311@gmail.com> Co-authored-by: Willburd <7099514+Willburd@users.noreply.github.com> Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
fcd380c69a
commit
848d52a683
@@ -83,10 +83,6 @@
|
||||
#define REAGENT_ID_TUNGSTEN "tungsten"
|
||||
#define REAGENT_NUTRIMENT "Nutriment"
|
||||
#define REAGENT_ID_NUTRIMENT "nutriment"
|
||||
#define REAGENT_STEEL "Liquid Steel"
|
||||
#define REAGENT_ID_STEEL "steel"
|
||||
#define REAGENT_PLASTEEL "Liquid Plasteel"
|
||||
#define REAGENT_ID_PLASTEEL "plasteel"
|
||||
|
||||
|
||||
// Xeno chem react
|
||||
|
||||
@@ -58,11 +58,6 @@
|
||||
#define REAGENT_ALIZENE "Alizene"
|
||||
#define REAGENT_ID_ALIZENE "alizene"
|
||||
|
||||
// Does not exist?
|
||||
#define REAGENT_ID_SPACEDRUGS "space_drugs"
|
||||
#define REAGENT_ID_HOTWATER "hotwater"
|
||||
#define REAGENT_ID_BURBON "burbon"
|
||||
|
||||
// Food & Drinks
|
||||
#define REAGENT_SNAPS "Akvavit"
|
||||
#define REAGENT_ID_SNAPS "snaps"
|
||||
@@ -151,8 +146,6 @@
|
||||
#define REAGENT_ID_MAUNALOA "mauna_loa"
|
||||
#define REAGENT_HIVEMINDERASER "Hivemind Eraser"
|
||||
#define REAGENT_ID_HIVEMINDERASER "hiveminderaser"
|
||||
#define REAGENT_STRAWBERRYLOVEPOTION "Strawberry Love Potion"
|
||||
#define REAGENT_ID_STRAWBERRYLOVEPOTION "strawberrylovepotion"
|
||||
#define REAGENT_WORMBLOOD "Worm Blood"
|
||||
#define REAGENT_ID_WORMBLOOD "wormblood"
|
||||
|
||||
|
||||
@@ -5,8 +5,10 @@ SUBSYSTEM_DEF(chemistry)
|
||||
init_order = INIT_ORDER_CHEMISTRY
|
||||
|
||||
var/list/chemical_reactions = list()
|
||||
var/list/chemical_reactions_by_product = list()
|
||||
var/list/instant_reactions_by_reagent = list()
|
||||
var/list/distilled_reactions_by_reagent = list()
|
||||
var/list/distilled_reactions_by_product = list()
|
||||
// var/list/fusion_reactions_by_reagent = list() // TODO: Fusion reactions as chemical reactions
|
||||
var/list/chemical_reagents = list()
|
||||
|
||||
@@ -45,6 +47,13 @@ SUBSYSTEM_DEF(chemistry)
|
||||
if(istype(D, /decl/chemical_reaction/distilling))
|
||||
add_to = distilled_reactions_by_reagent
|
||||
|
||||
if(istype(D, /decl/chemical_reaction/distilling))
|
||||
LAZYINITLIST(distilled_reactions_by_product[D.result])
|
||||
distilled_reactions_by_product[D.result] += D // for reverse lookup
|
||||
else
|
||||
LAZYINITLIST(chemical_reactions_by_product[D.result])
|
||||
chemical_reactions_by_product[D.result] += D // for reverse lookup
|
||||
|
||||
LAZYINITLIST(add_to[reagent_id])
|
||||
add_to[reagent_id] += D
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
/datum/phororeactions
|
||||
var/list/random_reagents = list(REAGENT_ID_HYDROGEN,REAGENT_ID_LITHIUM,REAGENT_ID_CARBON,REAGENT_ID_NITROGEN,REAGENT_ID_OXYGEN,REAGENT_ID_FLUORINE, \
|
||||
REAGENT_ID_SODIUM,REAGENT_ID_ALUMINIUM,REAGENT_ID_SILICON,REAGENT_ID_PHOSPHORUS,REAGENT_ID_SULFUR,REAGENT_ID_CHLORINE,REAGENT_ID_POTASSIUM,REAGENT_ID_IRON, \
|
||||
REAGENT_ID_COPPER,REAGENT_ID_MERCURY,REAGENT_ID_RADIUM,REAGENT_ID_WATER,REAGENT_ID_SUGAR,REAGENT_ID_SACID,REAGENT_ID_TUNGSTEN, REAGENT_ID_LUBE, REAGENT_ID_INAPROVALINE, REAGENT_ID_SPACEDRUGS, \
|
||||
REAGENT_ID_COPPER,REAGENT_ID_MERCURY,REAGENT_ID_RADIUM,REAGENT_ID_WATER,REAGENT_ID_SUGAR,REAGENT_ID_SACID,REAGENT_ID_TUNGSTEN, REAGENT_ID_LUBE, REAGENT_ID_INAPROVALINE, REAGENT_ID_BLISS, \
|
||||
REAGENT_ID_THERMITE, REAGENT_ID_TRAMADOL, REAGENT_ID_CLEANER, REAGENT_ID_KELOTANE, REAGENT_ID_DERMALINE, REAGENT_ID_ANTITOXIN, REAGENT_ID_SYNAPTIZINE, \
|
||||
REAGENT_ID_ALKYSINE, REAGENT_ID_IMIDAZOLINE, REAGENT_ID_HYPERZINE, REAGENT_ID_AMMONIA, REAGENT_ID_SODIUMCHLORIDE, REAGENT_ID_STERILIZINE, REAGENT_ID_SILICATE, REAGENT_ID_MINDBREAKER, \
|
||||
REAGENT_ID_IMPEDREZENE, REAGENT_ID_LIPOZINE)
|
||||
|
||||
@@ -729,7 +729,7 @@ var/induromol_code = rand(1, 50)
|
||||
if(!init)
|
||||
to_chat(M, span_warning("You start tripping balls."))
|
||||
init = 1
|
||||
var/drugs = list(REAGENT_ID_SPACEDRUGS, REAGENT_ID_SEROTROTIUM, REAGENT_ID_PSILOCYBIN, REAGENT_ID_NUKACOLA, REAGENT_ID_ATOMICBOMB, REAGENT_ID_HIPPIESDELIGHT)
|
||||
var/drugs = list(REAGENT_ID_BLISS, REAGENT_ID_SEROTROTIUM, REAGENT_ID_PSILOCYBIN, REAGENT_ID_NUKACOLA, REAGENT_ID_ATOMICBOMB, REAGENT_ID_HIPPIESDELIGHT)
|
||||
for(var/drug in drugs)
|
||||
M.reagents.add_reagent(drug, 1)
|
||||
M.reagents.add_reagent(REAGENT_ID_MINDBREAKER, 0.2)
|
||||
|
||||
@@ -443,7 +443,7 @@
|
||||
desc = "A mysterious slice, coated in purple frosting that smells like grapes."
|
||||
nutriment_desc = list("The desire to show off an party" = 10)
|
||||
reagents.add_reagent(REAGENT_ID_STOXIN, 2)
|
||||
reagents.add_reagent(REAGENT_ID_SPACEDRUGS, 10)
|
||||
reagents.add_reagent(REAGENT_ID_BLISS, 10)
|
||||
reagents.add_reagent(REAGENT_ID_SEROTROTIUM, 4)
|
||||
reagents.add_reagent(REAGENT_ID_CRYPTOBIOLIN, 8)
|
||||
reagents.add_reagent(REAGENT_ID_MINDBREAKER, 10)
|
||||
|
||||
@@ -101,6 +101,9 @@
|
||||
while(reaction_occurred)
|
||||
for(var/decl/chemical_reaction/C as anything in effect_reactions)
|
||||
C.post_reaction(src)
|
||||
#ifdef UNIT_TEST
|
||||
SEND_SIGNAL(src, COMSIG_UNITTEST_DATA, list(C))
|
||||
#endif
|
||||
update_total()
|
||||
|
||||
/* Holder-to-chemical */
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
// Detects reagents inside most containers, and acts as an infinite identification system for reagent-based unidentified objects.
|
||||
|
||||
/obj/machinery/chemical_analyzer
|
||||
name = "chem analyzer"
|
||||
desc = "Used to precisely scan chemicals and other liquids inside various containers. \
|
||||
It may also identify the liquid contents of unknown objects."
|
||||
name = "chem analyzer PRO"
|
||||
desc = "New and improved! Used to precisely scan chemicals and other liquids inside various containers. \
|
||||
It can also identify the liquid contents of unknown objects and their chemical breakdowns."
|
||||
description_info = "This machine will try to tell you what reagents are inside of something capable of holding reagents. \
|
||||
It is also used to 'identify' specific reagent-based objects with their properties obscured from inspection by normal means."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
@@ -45,19 +45,153 @@
|
||||
I.identify(IDENTITY_FULL, user)
|
||||
|
||||
// Now tell us everything that is inside.
|
||||
var/final_message = ""
|
||||
if(I.reagents && I.reagents.reagent_list.len)
|
||||
to_chat(user, "<br>") // To add padding between regular chat and the output.
|
||||
final_message += "<br>" // To add padding between regular chat and the output.
|
||||
for(var/datum/reagent/R in I.reagents.reagent_list)
|
||||
if(!R.name)
|
||||
continue
|
||||
to_chat(user, span_notice("Contains [R.volume]u of <b>[R.name]</b>.<br>[R.description]<br>"))
|
||||
final_message += span_notice("*=*=*=*= Contains " + span_info("[R.volume]u") + " of " + span_bold(span_underline("[R.name]")) + " =*=*=*=*<br>[R.description][R.from_belly ? " Something seems strange about it...? (OOC: It's from a belly!)" : ""]<br><br>")
|
||||
/* Downstream addiction code
|
||||
if(R.id in addictives)
|
||||
final_message += span_boldnotice(span_red("DANGER") + ", [(R.id in fast_addictives) ? "highly " : ""]addictive.)") + "<br>"
|
||||
*/
|
||||
var/list/products = SSchemistry.chemical_reactions_by_product[R.id]
|
||||
if(products != null && products.len > 0)
|
||||
var/segment = 1
|
||||
var/list/display_reactions = list()
|
||||
for(var/decl/chemical_reaction/CR in products)
|
||||
// if(!CR.spoiler) - Downstream self documenting wiki code
|
||||
display_reactions.Add(CR)
|
||||
for(var/decl/chemical_reaction/CR in display_reactions)
|
||||
if(display_reactions.len == 1)
|
||||
final_message += span_underline("Potential Chemical breakdown: <br>")
|
||||
else
|
||||
final_message += span_underline("Potential Chemical breakdown [segment]: <br>")
|
||||
segment += 1
|
||||
|
||||
// Last, unseal it if it's an autoinjector.
|
||||
if(istype(I,/obj/item/reagent_containers/hypospray/autoinjector/biginjector) && !(I.flags & OPENCONTAINER))
|
||||
I.flags |= OPENCONTAINER
|
||||
to_chat(user, span_notice("Sample container unsealed.<br>"))
|
||||
if(istype(CR,/decl/chemical_reaction/instant/slime))
|
||||
// Handle slimes
|
||||
var/decl/chemical_reaction/instant/slime/SR = CR
|
||||
if(SR.required)
|
||||
var/slime_path = SR.required
|
||||
final_message += " -core [span_info(initial(slime_path:name))]<br>"
|
||||
for(var/RQ in CR.required_reagents)
|
||||
var/decl/chemical_reaction/r_RQ = SSchemistry.chemical_reagents[RQ]
|
||||
if(!r_RQ)
|
||||
continue
|
||||
final_message += " -inducer [span_info(r_RQ.name)]<br>"
|
||||
else
|
||||
// Standard
|
||||
for(var/RQ in CR.required_reagents)
|
||||
var/decl/chemical_reaction/r_RQ = SSchemistry.chemical_reagents[RQ]
|
||||
if(!r_RQ)
|
||||
continue
|
||||
final_message += " -parts [span_info(r_RQ.name)]<br>"
|
||||
for(var/IH in CR.inhibitors)
|
||||
var/decl/chemical_reaction/r_IH = SSchemistry.chemical_reagents[IH]
|
||||
if(!r_IH)
|
||||
continue
|
||||
final_message += " -inhbi [span_info(r_IH.name)]<br>"
|
||||
for(var/CL in CR.catalysts)
|
||||
var/decl/chemical_reaction/r_CL = SSchemistry.chemical_reagents[CL]
|
||||
if(!r_CL)
|
||||
continue
|
||||
final_message += " -catyl [span_info(r_CL.name)]<br>"
|
||||
final_message += "<br>"
|
||||
else
|
||||
final_message += span_underline("Potential Chemical breakdown:") + "<br>" + span_red("UNKNOWN OR BASE-REAGENT") + "<br><br>"
|
||||
var/list/distilled_products = SSchemistry.distilled_reactions_by_product[R.id]
|
||||
if(distilled_products != null && distilled_products.len > 0)
|
||||
var/segment = 1
|
||||
|
||||
to_chat(user, span_notice("Scanning of \the [I] complete."))
|
||||
var/list/display_reactions = list()
|
||||
for(var/decl/chemical_reaction/distilling/CR in distilled_products)
|
||||
// if(!CR.spoiler) - Downstream self documenting wiki code
|
||||
display_reactions.Add(CR)
|
||||
|
||||
for(var/decl/chemical_reaction/distilling/CR in display_reactions)
|
||||
if(display_reactions.len == 1)
|
||||
final_message += span_underline("Potential Chemical Distillation: <br>")
|
||||
else
|
||||
final_message += span_underline("Potential Chemical Distillation [segment]: <br>")
|
||||
segment += 1
|
||||
|
||||
final_message += " -temps " + span_info("[CR.temp_range[1]]k") + " - " + span_info("[CR.temp_range[2]]k") + "<br>"
|
||||
|
||||
for(var/RQ in CR.required_reagents)
|
||||
var/decl/chemical_reaction/r_RQ = SSchemistry.chemical_reagents[RQ]
|
||||
if(!r_RQ)
|
||||
continue
|
||||
final_message += " -parts [span_info(r_RQ.name)]<br>"
|
||||
for(var/IH in CR.inhibitors)
|
||||
var/decl/chemical_reaction/r_IH = SSchemistry.chemical_reagents[IH]
|
||||
if(!r_IH)
|
||||
continue
|
||||
final_message += " -inhbi [span_info(r_IH.name)]<br>"
|
||||
for(var/CL in CR.catalysts)
|
||||
var/decl/chemical_reaction/r_CL = SSchemistry.chemical_reagents[CL]
|
||||
if(!r_CL)
|
||||
continue
|
||||
final_message += " -catyl [span_info(r_CL.name)]<br>"
|
||||
final_message += "<br>"
|
||||
|
||||
// We can get some reagents by grinding sheets and ores!
|
||||
var/grind_results = ""
|
||||
for(var/source in global.sheet_reagents)
|
||||
if(R.id in global.sheet_reagents[source])
|
||||
var/nm = initial(source:name)
|
||||
grind_results += " -grind [span_info(nm)]<br>"
|
||||
if(grind_results != "")
|
||||
final_message += span_underline("Material Sources: <br>")
|
||||
final_message += grind_results
|
||||
final_message += "<br>"
|
||||
|
||||
grind_results = ""
|
||||
for(var/source in global.ore_reagents)
|
||||
if(R.id in global.ore_reagents[source])
|
||||
var/nm = initial(source:name)
|
||||
grind_results += " -grind [span_info(nm)]<br>"
|
||||
if(grind_results != "")
|
||||
final_message += span_underline("Ore Sources: <br>")
|
||||
final_message += grind_results
|
||||
final_message += "<br>"
|
||||
|
||||
// The long forgotten fluid pumps!
|
||||
// TODO : Update turfs to provide what their fluidpump outputs are too
|
||||
var/pump_results = ""
|
||||
for(var/O in GLOB.ore_data)
|
||||
var/ore/OR = GLOB.ore_data[O]
|
||||
if(OR.reagent == R.id)
|
||||
pump_results += " -erosion [span_info(OR.display_name)]<br>"
|
||||
if(pump_results != "")
|
||||
final_message += span_underline("Fluid Pump Filtrate: <br>")
|
||||
final_message += pump_results
|
||||
final_message += "<br>"
|
||||
|
||||
var/makes_result = ""
|
||||
var/list/instant_by_reagent = SSchemistry.instant_reactions_by_reagent["[R.id]"]
|
||||
if(instant_by_reagent && instant_by_reagent.len)
|
||||
for(var/i = 1, i <= instant_by_reagent.len, i++)
|
||||
var/decl/chemical_reaction/OR = instant_by_reagent[i]
|
||||
if(istype(OR,/decl/chemical_reaction/instant/slime)) // very bloated and meant to be a mystery
|
||||
continue
|
||||
makes_result += " -[span_info(OR.name)]<br>"
|
||||
|
||||
var/list/distilled_by_reagent = SSchemistry.distilled_reactions_by_reagent["[R.id]"]
|
||||
if(distilled_by_reagent && distilled_by_reagent.len)
|
||||
for(var/i = 1, i <= distilled_by_reagent.len, i++)
|
||||
var/decl/chemical_reaction/OR = distilled_by_reagent[i]
|
||||
makes_result += " -[span_info(OR.name)]<br>"
|
||||
|
||||
if(makes_result != "")
|
||||
final_message += span_underline("Can Be Used To Produce: <br>")
|
||||
final_message += makes_result
|
||||
final_message += "<br>"
|
||||
|
||||
final_message += "Scanning of \the [I] complete."
|
||||
|
||||
to_chat(user, span_notice(final_message))
|
||||
analyzing = FALSE
|
||||
update_icon()
|
||||
return
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
conditions can cause different byproducts to be produced.<br>\
|
||||
Magma or Lava can be pumped to produce mineralized fluid."
|
||||
|
||||
anchored = 0
|
||||
density = 1
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
|
||||
icon = 'icons/obj/machines/reagent.dmi'
|
||||
icon_state = "pump"
|
||||
|
||||
@@ -102,6 +102,9 @@
|
||||
var/amt_produced = result_amount * reaction_progress
|
||||
if(result)
|
||||
holder.add_reagent(result, amt_produced, data, safety = 1, was_from_belly = belly_reagent)
|
||||
// #ifdef UNIT_TEST
|
||||
// log_unit_test("[name] - Reagent reaction result: [result] [amt_produced]") // Uncomment for UNIT_TEST debug assistance
|
||||
// #endif
|
||||
|
||||
on_reaction(holder, amt_produced)
|
||||
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/icecoffee/alt
|
||||
name = "Iced Drip Coffee"
|
||||
id = REAGENT_ID_ICECOFFEE
|
||||
id = REAGENT_ID_ICECOFFEE + "_drip"
|
||||
result = REAGENT_ID_ICECOFFEE
|
||||
required_reagents = list(REAGENT_ID_ICE = 1, REAGENT_ID_DRIPCOFFEE = 2)
|
||||
result_amount = 3
|
||||
@@ -150,14 +150,14 @@
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/mocha
|
||||
name = REAGENT_MOCHA
|
||||
id = REAGENT_ID_MOCHA
|
||||
id = REAGENT_ID_MOCHA + "_milk"
|
||||
result = REAGENT_ID_MOCHA
|
||||
required_reagents = list(REAGENT_ID_MILK = 1, REAGENT_ID_CREAM = 1, REAGENT_ID_MILKFOAM = 1, REAGENT_ID_HOTCOCO = 2, REAGENT_ID_BREVE = 5) // 2 coffee, 2 milk, 2 cream, 2 milk foam and 2 hot coco
|
||||
result_amount = 10
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/mocha/alt //incase they use cream before milk
|
||||
name = REAGENT_MOCHA
|
||||
id = REAGENT_ID_MOCHA
|
||||
id = REAGENT_ID_MOCHA + "_cream"
|
||||
result = REAGENT_ID_MOCHA
|
||||
required_reagents = list(REAGENT_ID_CREAM = 2, REAGENT_ID_HOTCOCO = 2, REAGENT_ID_CAPPUCCINO = 6) // 2 coffee, 2 milk, 2 cream, 2 milk foam and 2 hot coco
|
||||
result_amount = 10
|
||||
@@ -563,7 +563,7 @@
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/iced_beer2
|
||||
name = REAGENT_ICEDBEER
|
||||
id = REAGENT_ID_ICEDBEER
|
||||
id = REAGENT_ID_ICEDBEER + "_ice"
|
||||
result = REAGENT_ID_ICEDBEER
|
||||
required_reagents = list(REAGENT_ID_BEER = 5, REAGENT_ID_ICE = 1)
|
||||
result_amount = 6
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
/decl/chemical_reaction/instant/food/chocolate_bar
|
||||
name = "Chocolate Bar"
|
||||
id = "chocolate_bar"
|
||||
id = "chocolate_bar_soy"
|
||||
result = null
|
||||
required_reagents = list(REAGENT_ID_SOYMILK = 2, REAGENT_ID_COCO = 2, REAGENT_ID_SUGAR = 2)
|
||||
catalysts = list(REAGENT_ID_ENZYME = 5)
|
||||
@@ -45,7 +45,7 @@
|
||||
|
||||
/decl/chemical_reaction/instant/food/chocolate_bar2
|
||||
name = "Chocolate Bar"
|
||||
id = "chocolate_bar"
|
||||
id = "chocolate_bar_milk"
|
||||
result = null
|
||||
required_reagents = list(REAGENT_ID_MILK = 2, REAGENT_ID_COCO = 2, REAGENT_ID_SUGAR = 2)
|
||||
catalysts = list(REAGENT_ID_ENZYME = 5)
|
||||
|
||||
@@ -76,6 +76,7 @@
|
||||
id = REAGENT_ID_WATER
|
||||
result = REAGENT_ID_WATER
|
||||
required_reagents = list(REAGENT_ID_OXYGEN = 1, REAGENT_ID_HYDROGEN = 2)
|
||||
inhibitors = list(REAGENT_ID_CARBON = 1) // CHOMPAdd
|
||||
result_amount = 1
|
||||
|
||||
/decl/chemical_reaction/instant/thermite
|
||||
@@ -363,7 +364,7 @@
|
||||
id = REAGENT_ID_STOXIN
|
||||
result = REAGENT_ID_STOXIN
|
||||
required_reagents = list(REAGENT_ID_CHLORALHYDRATE = 1, REAGENT_ID_SUGAR = 4)
|
||||
inhibitors = list(REAGENT_ID_PHOSPHORUS) // Messes with the smoke
|
||||
inhibitors = list(REAGENT_ID_PHOSPHORUS = 1) // Messes with the smoke
|
||||
result_amount = 5
|
||||
|
||||
/decl/chemical_reaction/instant/chloralhydrate
|
||||
@@ -614,14 +615,15 @@
|
||||
/decl/chemical_reaction/instant/solidification/steel
|
||||
name = "Solid Steel"
|
||||
id = "solidsteel"
|
||||
required_reagents = list(REAGENT_ID_FROSTOIL = 5, REAGENT_ID_STEEL = REAGENTS_PER_SHEET)
|
||||
required_reagents = list(REAGENT_ID_FROSTOIL = 10, REAGENT_ID_IRON = REAGENTS_PER_SHEET, REAGENT_ID_CARBON = REAGENTS_PER_SHEET)
|
||||
inhibitors = list(REAGENT_ID_PLATINUM = 1) // do not block plasteel formation
|
||||
sheet_to_give = /obj/item/stack/material/steel
|
||||
|
||||
|
||||
/decl/chemical_reaction/instant/solidification/plasteel
|
||||
name = "Solid Plasteel"
|
||||
id = "solidplasteel"
|
||||
required_reagents = list(REAGENT_ID_FROSTOIL = 10, REAGENT_ID_PLASTEEL = REAGENTS_PER_SHEET)
|
||||
required_reagents = list(REAGENT_ID_FROSTOIL = 10, REAGENT_ID_IRON = REAGENTS_PER_SHEET, REAGENT_ID_CARBON = REAGENTS_PER_SHEET, REAGENT_ID_PLATINUM = REAGENTS_PER_SHEET)
|
||||
sheet_to_give = /obj/item/stack/material/plasteel
|
||||
|
||||
|
||||
@@ -682,7 +684,7 @@
|
||||
|
||||
/decl/chemical_reaction/instant/carpetify/pcarpet
|
||||
name = "Purple Carpet"
|
||||
id = "Purplecarpet"
|
||||
id = "purplecarpet"
|
||||
required_reagents = list(REAGENT_ID_LIQUIDCARPETP = 2, REAGENT_ID_PLASTICIDE = 1)
|
||||
carpet_type = /obj/item/stack/tile/carpet/purcarpet
|
||||
|
||||
@@ -784,6 +786,8 @@
|
||||
result_amount = 2
|
||||
log_is_important = 1
|
||||
|
||||
#ifndef UNIT_TEST
|
||||
// If it becomes possible to make this without exploding and clearing reagents, remove the UNIT_TEST wrapper
|
||||
/decl/chemical_reaction/instant/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)
|
||||
@@ -792,14 +796,13 @@
|
||||
var/mob/living/L = holder.my_atom
|
||||
if(L.stat!=DEAD)
|
||||
e.amount *= 0.5
|
||||
//VOREStation Add Start
|
||||
else
|
||||
holder.clear_reagents() //No more powergaming by creating a tiny amount of this
|
||||
//VOREStation Add End
|
||||
e.start()
|
||||
|
||||
//holder.clear_reagents() //VOREStation Removal
|
||||
return
|
||||
#endif
|
||||
|
||||
/decl/chemical_reaction/instant/napalm
|
||||
name = "Napalm"
|
||||
|
||||
@@ -60,6 +60,7 @@
|
||||
|
||||
/decl/chemical_reaction/instant/glucose
|
||||
name = REAGENT_GLUCOSE
|
||||
id = REAGENT_ID_GLUCOSE
|
||||
result = REAGENT_ID_GLUCOSE
|
||||
required_reagents = list(REAGENT_ID_SODIUMCHLORIDE = 1, REAGENT_ID_WATER = 1, REAGENT_ID_SUGAR = 1)
|
||||
result_amount = 1
|
||||
@@ -67,7 +68,7 @@
|
||||
|
||||
/decl/chemical_reaction/instant/myelamine_sap //This is the clotting agent used by clotting packs.
|
||||
name = REAGENT_MYELAMINE
|
||||
id = REAGENT_ID_MYELAMINE
|
||||
id = REAGENT_ID_MYELAMINE + "sap"
|
||||
result = REAGENT_ID_MYELAMINE
|
||||
required_reagents = list(REAGENT_ID_BICARIDINE = 1, REAGENT_ID_IRON = 2, REAGENT_ID_KELOTANE = 1, REAGENT_ID_BLUESAP = 1)
|
||||
result_amount = 1
|
||||
|
||||
@@ -103,6 +103,8 @@
|
||||
/// Miscellaneous Reactions
|
||||
|
||||
/decl/chemical_reaction/instant/foam/softdrink
|
||||
name = "Decarbonated Drink"
|
||||
id = "soda_fizz"
|
||||
required_reagents = list(REAGENT_ID_COLA = 1, REAGENT_ID_MINT = 1)
|
||||
|
||||
/decl/chemical_reaction/instant/firefightingfoam //TODO: Make it so we can add this to the foam tanks to refill them
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
var/level_max = 2
|
||||
|
||||
/decl/chemical_reaction/instant/mix_virus/picky
|
||||
id = "mixviruspicky"
|
||||
var/list/datum/symptom/symptoms
|
||||
|
||||
/decl/chemical_reaction/instant/mix_virus/on_reaction(datum/reagents/holder)
|
||||
@@ -156,6 +157,6 @@
|
||||
name = REAGENT_ANTIBODIES
|
||||
id = "antibodiesmix"
|
||||
result = REAGENT_ID_ANTIBODIES
|
||||
required_reagents = list(REAGENT_ID_VACCINE)
|
||||
required_reagents = list(REAGENT_ID_VACCINE = 1)
|
||||
catalysts = list(REAGENT_ID_INAPROVALINE = 0.1)
|
||||
result_amount = 0.5
|
||||
|
||||
@@ -24,6 +24,10 @@
|
||||
log_unit_test("[Rpath]: Reagents - reagent ID blank.")
|
||||
failed = TRUE
|
||||
|
||||
if(R.id != lowertext(R.id))
|
||||
log_unit_test("[Rpath]: Reagents - Reagent ID must be all lowercase.")
|
||||
failed = TRUE
|
||||
|
||||
if(collection_name[R.name])
|
||||
log_unit_test("[Rpath]: Reagents - WARNING - reagent name \"[R.name]\" is not unique, used first in [collection_name[R.name]]. Is this intentional?")
|
||||
collection_name[R.name] = R.type
|
||||
@@ -54,7 +58,9 @@
|
||||
var/failed = FALSE
|
||||
var/list/collection_id = list()
|
||||
|
||||
for(var/decl/chemical_reaction/CR in decls_repository.get_decls_of_subtype(/decl/chemical_reaction))
|
||||
var/list/all_reactions = decls_repository.get_decls_of_subtype(/decl/chemical_reaction)
|
||||
for(var/rtype in all_reactions)
|
||||
var/decl/chemical_reaction/CR = all_reactions[rtype]
|
||||
if(CR.name == REAGENT_DEVELOPER_WARNING) // Ignore these types as they are meant to be overridden
|
||||
continue
|
||||
|
||||
@@ -67,32 +73,50 @@
|
||||
failed = TRUE
|
||||
|
||||
if(!CR.id)
|
||||
log_unit_test("[CR.type]: Reagents - chemical reaction had invalid id.")
|
||||
log_unit_test("[CR.type]: Reagents - chemical reaction had invalid ID.")
|
||||
failed = TRUE
|
||||
|
||||
if(CR.id != lowertext(CR.id))
|
||||
log_unit_test("[CR.type]: Reagents - chemical reaction ID must be all lowercase.")
|
||||
failed = TRUE
|
||||
|
||||
if(CR.id in collection_id)
|
||||
log_unit_test("[CR.type]: Reagents - chemical reaction id \"[CR.name]\" is not unique, used first in [collection_id[CR.id]].")
|
||||
log_unit_test("[CR.type]: Reagents - chemical reaction ID \"[CR.name]\" is not unique, used first in [collection_id[CR.id]].")
|
||||
failed = TRUE
|
||||
else
|
||||
collection_id[CR.id] = CR.type
|
||||
|
||||
if(CR.required_reagents)
|
||||
if(CR.result_amount < 0)
|
||||
log_unit_test("[CR.type]: Reagents - chemical reaction ID \"[CR.name]\" had less than 0 as as result_amount?")
|
||||
failed = TRUE
|
||||
|
||||
if(CR.required_reagents && CR.required_reagents.len)
|
||||
for(var/RR in CR.required_reagents)
|
||||
if(!SSchemistry.chemical_reagents[RR])
|
||||
log_unit_test("[CR.type]: Reagents - chemical reaction had invalid required reagent ID \"[RR]\".")
|
||||
failed = TRUE
|
||||
if(CR.required_reagents[RR] <= 0)
|
||||
log_unit_test("[CR.type]: Reagents - chemical reaction had invalid required reagent amount or in invalid format \"[CR.required_reagents[RR]]\".")
|
||||
failed = TRUE
|
||||
|
||||
if(CR.catalysts)
|
||||
|
||||
if(CR.catalysts && CR.catalysts.len)
|
||||
for(var/RR in CR.catalysts)
|
||||
if(!SSchemistry.chemical_reagents[RR])
|
||||
log_unit_test("[CR.type]: Reagents - chemical reaction had invalid required reagent ID \"[RR]\".")
|
||||
failed = TRUE
|
||||
if(CR.catalysts[RR] <= 0)
|
||||
log_unit_test("[CR.type]: Reagents - chemical reaction had invalid catalysts amount or in invalid format \"[CR.catalysts[RR]]\".")
|
||||
failed = TRUE
|
||||
|
||||
if(CR.inhibitors)
|
||||
if(CR.inhibitors && CR.inhibitors.len)
|
||||
for(var/RR in CR.inhibitors)
|
||||
if(!SSchemistry.chemical_reagents[RR])
|
||||
log_unit_test("[CR.type]: Reagents - chemical reaction had invalid required reagent ID \"[RR]\".")
|
||||
failed = TRUE
|
||||
if(CR.inhibitors[RR] <= 0)
|
||||
log_unit_test("[CR.type]: Reagents - chemical reaction had invalid inhibitors amount or in invalid format \"[CR.inhibitors[RR]]\".")
|
||||
failed = TRUE
|
||||
|
||||
if(CR.result)
|
||||
if(!SSchemistry.chemical_reagents[CR.result])
|
||||
@@ -142,3 +166,148 @@
|
||||
else
|
||||
pass("All /obj/item/reagent_containers had valid prefill reagents.")
|
||||
return TRUE
|
||||
|
||||
|
||||
/datum/unit_test/chemical_reactions_shall_not_conflict
|
||||
name = "REAGENTS: Chemical Reactions shall not conflict"
|
||||
var/obj/fake_beaker = null
|
||||
var/list/result_reactions = list()
|
||||
|
||||
/datum/unit_test/chemical_reactions_shall_not_conflict/start_test()
|
||||
var/failed = FALSE
|
||||
|
||||
#ifdef UNIT_TEST
|
||||
var/list/all_reactions = decls_repository.get_decls_of_subtype(/decl/chemical_reaction)
|
||||
for(var/rtype in all_reactions)
|
||||
var/decl/chemical_reaction/CR = all_reactions[rtype]
|
||||
|
||||
if(CR.name == REAGENT_DEVELOPER_WARNING) // Ignore these types as they are meant to be overridden
|
||||
continue
|
||||
if(!CR.name || CR.name == "" || !CR.id || CR.id == "")
|
||||
continue
|
||||
if(CR.result_amount <= 0) //Makes nothing anyway, or maybe an effect/explosion!
|
||||
continue
|
||||
if(!CR.result) // Cannot check for this
|
||||
continue
|
||||
|
||||
if(istype(CR, /decl/chemical_reaction/instant/slime))
|
||||
// slime time
|
||||
var/decl/chemical_reaction/instant/slime/SR = CR
|
||||
if(!SR.required)
|
||||
continue
|
||||
var/obj/item/slime_extract/E = new SR.required()
|
||||
qdel_swap(fake_beaker, E)
|
||||
fake_beaker.reagents.maximum_volume = 5000
|
||||
else if(istype(CR, /decl/chemical_reaction/distilling))
|
||||
// distilling
|
||||
var/decl/chemical_reaction/distilling/DR = CR
|
||||
var/obj/machinery/portable_atmospherics/powered/reagent_distillery/D = new()
|
||||
D.current_temp = DR.temp_range[1]
|
||||
qdel_swap(fake_beaker, D)
|
||||
fake_beaker.reagents.maximum_volume = 5000
|
||||
else
|
||||
// regular beaker
|
||||
qdel_swap(fake_beaker, new /obj/item/reagent_containers/glass/beaker())
|
||||
fake_beaker.reagents.maximum_volume = 5000
|
||||
|
||||
// Perform test! If it fails once, it will perform a deeper check trying to use the inhibitors of anything in the beaker
|
||||
RegisterSignal(fake_beaker.reagents, COMSIG_UNITTEST_DATA, PROC_REF(get_signal_data))
|
||||
if(perform_reaction(CR))
|
||||
// Check if we failed the test with inhibitors in use, if so we absolutely couldn't make it...
|
||||
// Uncomment the UNIT_TEST section in code\modules\reagents\reactions\_reactions.dm if you require more info
|
||||
log_unit_test("[CR.type]: Reagents - chemical reaction did not produce \"[CR.result]\". CONTAINS: \"[fake_beaker.reagents.get_reagents()]\"")
|
||||
failed = TRUE
|
||||
UnregisterSignal(fake_beaker.reagents, COMSIG_UNITTEST_DATA)
|
||||
qdel_null(fake_beaker)
|
||||
#endif
|
||||
|
||||
if(failed)
|
||||
fail("One or more /decl/chemical_reaction subtypes conflict with another reaction.")
|
||||
else
|
||||
pass("All /decl/chemical_reaction subtypes had no conflicts.")
|
||||
return TRUE
|
||||
|
||||
/datum/unit_test/chemical_reactions_shall_not_conflict/proc/perform_reaction(var/decl/chemical_reaction/CR, var/list/inhib = list())
|
||||
// clear for inhibitor searches
|
||||
fake_beaker.reagents.clear_reagents()
|
||||
result_reactions.Cut()
|
||||
|
||||
var/scale = 1
|
||||
if(CR.result_amount < 1)
|
||||
scale = 1 / CR.result_amount // Create at least 1 unit
|
||||
|
||||
if(inhib.len) // taken from argument and not reaction! Put in FIRST!
|
||||
for(var/RR in inhib)
|
||||
fake_beaker.reagents.add_reagent(RR, inhib[RR] * scale)
|
||||
if(CR.catalysts) // Required for reaction
|
||||
for(var/RR in CR.catalysts)
|
||||
fake_beaker.reagents.add_reagent(RR, CR.catalysts[RR] * scale)
|
||||
if(CR.required_reagents)
|
||||
for(var/RR in CR.required_reagents)
|
||||
fake_beaker.reagents.add_reagent(RR, CR.required_reagents[RR] * scale)
|
||||
|
||||
if(fake_beaker.reagents.has_reagent(CR.result))
|
||||
return FALSE // INSTANT SUCCESS!
|
||||
|
||||
if(inhib.len)
|
||||
// We've checked with inhibitors, so we're already in inhibitor checking phase.
|
||||
// So we've absolutely failed this time. There is no way to make this...
|
||||
return TRUE
|
||||
|
||||
if(!result_reactions.len)
|
||||
// Nothing to check for inhibitors...
|
||||
for(var/decl/chemical_reaction/test_react in result_reactions)
|
||||
log_unit_test("[CR.type]: Reagents - Used [test_react] but failed.")
|
||||
return TRUE
|
||||
|
||||
// Otherwise we check the resulting reagents and use their inhibitor this time!
|
||||
for(var/decl/chemical_reaction/test_react in result_reactions)
|
||||
if(!test_react)
|
||||
continue
|
||||
if(!test_react.inhibitors.len)
|
||||
continue
|
||||
// Test one by one
|
||||
for(var/each in test_react.inhibitors)
|
||||
if(!perform_reaction(CR, list("[each]" = test_react.inhibitors["[each]"])))
|
||||
return FALSE // SUCCESS using an inhibitor!
|
||||
// Test all at once
|
||||
if(!perform_reaction(CR, test_react.inhibitors))
|
||||
return FALSE // SUCCESS using all inhibitors!
|
||||
|
||||
// No inhibiting reagent worked...
|
||||
for(var/decl/chemical_reaction/test_react in result_reactions)
|
||||
log_unit_test("[CR.type]: Reagents - Used [test_react] but failed.")
|
||||
return TRUE
|
||||
|
||||
/datum/unit_test/chemical_reactions_shall_not_conflict/get_signal_data(atom/source, list/data = list())
|
||||
result_reactions.Add(data[1]) // Append the reactions that happened, then use that to check their inhibitors
|
||||
|
||||
|
||||
/datum/unit_test/chemical_grinding_must_produce_valid_results
|
||||
name = "REAGENTS: Chemical Grinding Must Have Valid Results"
|
||||
|
||||
/datum/unit_test/chemical_grinding_must_produce_valid_results/start_test()
|
||||
var/failed = FALSE
|
||||
|
||||
for(var/grind in global.sheet_reagents + global.ore_reagents)
|
||||
var/list/results = global.sheet_reagents[grind]
|
||||
if(!results)
|
||||
results = global.ore_reagents[grind]
|
||||
if(!results || !islist(results))
|
||||
log_unit_test("[grind]: Reagents - Grinding result had invalid list.")
|
||||
failed = TRUE
|
||||
continue
|
||||
if(!results.len)
|
||||
log_unit_test("[grind]: Reagents - Grinding result had empty.")
|
||||
failed = TRUE
|
||||
continue
|
||||
for(var/reg_id in results)
|
||||
if(!SSchemistry.chemical_reagents[reg_id])
|
||||
log_unit_test("[grind]: Reagents - Grinding result had invalid reagent id \"[reg_id]\".")
|
||||
failed = TRUE
|
||||
|
||||
if(failed)
|
||||
fail("One or more grindable sheet or ore entries had invalid reagents or lists.")
|
||||
else
|
||||
pass("All grindable sheet or ore entries had valid lists and reagents.")
|
||||
return TRUE
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
REAGENT_ID_TONIC, REAGENT_ID_BEER, REAGENT_ID_KAHLUA, REAGENT_ID_WHISKEY, REAGENT_ID_REDWINE, REAGENT_ID_VODKA, REAGENT_ID_GIN, REAGENT_ID_RUM, REAGENT_ID_TEQUILA, REAGENT_ID_VERMOUTH, REAGENT_ID_COGNAC,
|
||||
REAGENT_ID_ALE, REAGENT_ID_MEAD, REAGENT_ID_BITTERS, REAGENT_ID_CHAMPAGNE, REAGENT_ID_SINGULO, REAGENT_ID_DOCTORSDELIGHT, REAGENT_ID_NOTHING, REAGENT_ID_BANANA, REAGENT_ID_HONEY, REAGENT_ID_EGG,
|
||||
REAGENT_ID_COCO, REAGENT_ID_CHERRYJELLY, REAGENT_ID_CARROTJUICE, REAGENT_ID_APPLEJUICE, REAGENT_ID_TOMATOJUICE, REAGENT_ID_PEANUTBUTTER, REAGENT_ID_SOYMILK, REAGENT_ID_GRENADINE, REAGENT_ID_GINGERALE, REAGENT_ID_ROYROGERS,
|
||||
REAGENT_ID_PATRON, REAGENT_ID_GOLDSCHLAGER, REAGENT_GELATIN, REAGENT_ID_MELONLIQUOR, REAGENT_ID_BLUECURACAO, REAGENT_ID_THIRTEENLOKO, REAGENT_ID_DEADRUM, REAGENT_ID_SAKE, REAGENT_ID_ACIDSPIT,
|
||||
REAGENT_ID_PATRON, REAGENT_ID_GOLDSCHLAGER, REAGENT_ID_GELATIN, REAGENT_ID_MELONLIQUOR, REAGENT_ID_BLUECURACAO, REAGENT_ID_THIRTEENLOKO, REAGENT_ID_DEADRUM, REAGENT_ID_SAKE, REAGENT_ID_ACIDSPIT,
|
||||
REAGENT_ID_AMASEC, REAGENT_ID_BEEPSKYSMASH, REAGENT_ID_ATOMICBOMB, REAGENT_ID_NUKACOLA, REAGENT_ID_THREEMILEISLAND, REAGENT_ID_MANHATTANPROJ, REAGENT_ID_PSILOCYBIN, REAGENT_ID_MOONSHINE,
|
||||
REAGENT_ID_SPECIALWHISKEY, REAGENT_ID_UNATHILIQUOR, REAGENT_ID_WINEBRANDY, REAGENT_ID_MATCHALATTE, REAGENT_ID_SNAPS
|
||||
)
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
/decl/chemical_reaction/instant/slime/secertslime
|
||||
name = "Secert Slime "
|
||||
id = "sepia_swapm"
|
||||
result = "change_secert"
|
||||
result = null
|
||||
required_reagents = list(REAGENT_ID_BLOOD = 5, REAGENT_ID_WATER = 5)
|
||||
result_amount = 1
|
||||
required = /obj/item/slime_extract/sepia
|
||||
@@ -427,7 +427,7 @@
|
||||
|
||||
/decl/chemical_reaction/instant/slime/nuclear_radpulse
|
||||
name = "Slime Radiation Pulse"
|
||||
id = "m_green_radpulse"
|
||||
id = "m_green_radpulse2"
|
||||
required_reagents = list(REAGENT_ID_PHORON = 5)
|
||||
result_amount = 1
|
||||
required = /obj/item/slime_extract/nuclear
|
||||
@@ -443,7 +443,7 @@
|
||||
|
||||
/decl/chemical_reaction/instant/slime/nuclear_emitter
|
||||
name = "Slime Radiation Emitter"
|
||||
id = "m_green_emitter"
|
||||
id = "m_green_emitter2"
|
||||
required_reagents = list(REAGENT_ID_BLOOD = 5)
|
||||
result_amount = 1
|
||||
required = /obj/item/slime_extract/green
|
||||
@@ -456,7 +456,7 @@
|
||||
|
||||
/decl/chemical_reaction/instant/slime/nuclear_radium
|
||||
name = "Slime Radium"
|
||||
id = "m_green_radium"
|
||||
id = "m_green_radium2"
|
||||
result = REAGENT_ID_RADIUM
|
||||
required_reagents = list(REAGENT_ID_WATER = 5)
|
||||
result_amount = 30
|
||||
@@ -465,7 +465,7 @@
|
||||
|
||||
/decl/chemical_reaction/instant/slime/nuclear_uranium
|
||||
name = "Slime Uranium"
|
||||
id = "m_green_uranium"
|
||||
id = "m_green_uranium2"
|
||||
required_reagents = list(REAGENT_ID_SLIMEJELLY = 5)
|
||||
result_amount = 1
|
||||
required = /obj/item/slime_extract/green
|
||||
@@ -690,8 +690,8 @@
|
||||
..()
|
||||
|
||||
/decl/chemical_reaction/instant/slime/soundphoron
|
||||
name = "sound blood"
|
||||
id = "m_sound_blood"
|
||||
name = "sound phoron"
|
||||
id = "m_sound_phoron"
|
||||
required_reagents = list(REAGENT_ID_PHORON = 5)
|
||||
result_amount = 1
|
||||
required = /obj/item/slime_extract/sound
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
/decl/chemical_reaction/instant/freshtea/green
|
||||
id = REAGENT_ID_FRESHTEAGREEN
|
||||
result = REAGENT_ID_FRESHTEAGREEN
|
||||
required_reagents = list (REAGENT_ID_TEALEAVESGREEN = 1, REAGENT_ID_HOTWATER = 9)
|
||||
required_reagents = list (REAGENT_ID_TEALEAVESGREEN = 1, REAGENT_ID_WATER = 9)
|
||||
result_amount = 10
|
||||
|
||||
/decl/chemical_reaction/instant/instantteapowder/green
|
||||
@@ -74,7 +74,7 @@
|
||||
/decl/chemical_reaction/instant/matcha
|
||||
id = REAGENT_ID_MATCHA
|
||||
result = REAGENT_ID_MATCHA
|
||||
required_reagents = list (REAGENT_ID_MATCHAPOWDER = 1, REAGENT_ID_HOTWATER = 2)
|
||||
required_reagents = list (REAGENT_ID_MATCHAPOWDER = 1, REAGENT_ID_WATER = 2)
|
||||
result_amount = 2
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/spiderdrink
|
||||
@@ -86,37 +86,37 @@
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/bubbleteawatermelon
|
||||
name = REAGENT_BUBBLETEAWATERMELON
|
||||
id = REAGENT_BUBBLETEAWATERMELON
|
||||
result = REAGENT_BUBBLETEAWATERMELON
|
||||
required_reagents = list(REAGENT_GELATIN = 2, REAGENT_ID_WATERMELONTEA = 6, REAGENT_ID_MILK = 2)
|
||||
id = REAGENT_ID_BUBBLETEAWATERMELON
|
||||
result = REAGENT_ID_BUBBLETEAWATERMELON
|
||||
required_reagents = list(REAGENT_ID_GELATIN = 2, REAGENT_ID_WATERMELONTEA = 6, REAGENT_ID_MILK = 2)
|
||||
result_amount = 10
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/bubbleteastrawberry
|
||||
name = REAGENT_BUBBLETEASTRAWBERRY
|
||||
id = REAGENT_ID_BUBBLETEASTRAWBERRY
|
||||
result = REAGENT_ID_BUBBLETEASTRAWBERRY
|
||||
required_reagents = list(REAGENT_GELATIN = 2, REAGENT_ID_BERRYTEA = 6, REAGENT_ID_MILK = 2)
|
||||
required_reagents = list(REAGENT_ID_GELATIN = 2, REAGENT_ID_BERRYTEA = 6, REAGENT_ID_MILK = 2)
|
||||
result_amount = 10
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/bubbleteacherry
|
||||
name = REAGENT_BUBBLETEACHERRY
|
||||
id = REAGENT_ID_BUBBLETEACHERRY
|
||||
result = REAGENT_ID_BUBBLETEACHERRY
|
||||
required_reagents = list(REAGENT_GELATIN = 2, REAGENT_ID_CHERRYTEA = 6, REAGENT_ID_MILK = 2)
|
||||
required_reagents = list(REAGENT_ID_GELATIN = 2, REAGENT_ID_CHERRYTEA = 6, REAGENT_ID_MILK = 2)
|
||||
result_amount = 10
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/bubbleteacoffee
|
||||
name = REAGENT_BUBBLETEACOFFEE
|
||||
id = REAGENT_ID_BUBBLETEACOFFEE
|
||||
result = REAGENT_ID_BUBBLETEACOFFEE
|
||||
required_reagents = list(REAGENT_GELATIN = 2, REAGENT_ID_TEA = 5, REAGENT_ID_CAFELATTE = 3)
|
||||
required_reagents = list(REAGENT_ID_GELATIN = 2, REAGENT_ID_TEA = 5, REAGENT_ID_CAFELATTE = 3)
|
||||
result_amount = 10
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/bubbleteabanana
|
||||
name = REAGENT_BUBBLETEABANANA
|
||||
id = REAGENT_ID_BUBBLETEABANANA
|
||||
result = REAGENT_ID_BUBBLETEABANANA
|
||||
required_reagents = list(REAGENT_GELATIN = 2, REAGENT_ID_TEA = 5, REAGENT_ID_BANANA = 1, REAGENT_ID_MILK = 2)
|
||||
required_reagents = list(REAGENT_ID_GELATIN = 2, REAGENT_ID_TEA = 5, REAGENT_ID_BANANA = 1, REAGENT_ID_MILK = 2)
|
||||
result_amount = 10
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/horchata
|
||||
@@ -186,7 +186,7 @@
|
||||
name = REAGENT_HACHI
|
||||
id = REAGENT_ID_HACHI
|
||||
result = REAGENT_ID_HACHI
|
||||
required_reagents = list(REAGENT_ID_BURBON = 2, REAGENT_ID_SAKE = 1, REAGENT_ID_LEMONJUICE = 1, PLANT_MUSHROOMS = 1) //Whoever coded this never made a mushroom reagent so this can't be created.
|
||||
required_reagents = list(REAGENT_ID_WHISKEY = 2, REAGENT_ID_SAKE = 1, REAGENT_ID_LEMONJUICE = 1, REAGENT_ID_PSILOCYBIN = 1) //Whoever coded this never made a mushroom reagent so this can't be created.
|
||||
result_amount = 5
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/narsour
|
||||
@@ -236,70 +236,70 @@
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/enragedarachnidslammer1
|
||||
name = REAGENT_ENRAGEDARACHNIDSLAMMER
|
||||
id = REAGENT_ID_ENRAGEDARACHNIDSLAMMER
|
||||
id = REAGENT_ID_ENRAGEDARACHNIDSLAMMER + "1"
|
||||
required_reagents = list(REAGENT_ID_ENRAGEDARACHNIDSLAMMER = 1, REAGENT_ID_CYANIDE = 1)
|
||||
result = REAGENT_ID_ENRAGEDARACHNIDSLAMMER
|
||||
result_amount = 0.1
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/enragedarachnidslammer2
|
||||
name = REAGENT_ENRAGEDARACHNIDSLAMMER
|
||||
id = REAGENT_ID_ENRAGEDARACHNIDSLAMMER
|
||||
id = REAGENT_ID_ENRAGEDARACHNIDSLAMMER + "2"
|
||||
required_reagents = list(REAGENT_ID_ENRAGEDARACHNIDSLAMMER = 1, REAGENT_ID_CHLORALHYDRATE = 1)
|
||||
result = REAGENT_ID_ENRAGEDARACHNIDSLAMMER
|
||||
result_amount = 0.1
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/enragedarachnidslammer3
|
||||
name = REAGENT_ENRAGEDARACHNIDSLAMMER
|
||||
id = REAGENT_ID_ENRAGEDARACHNIDSLAMMER
|
||||
id = REAGENT_ID_ENRAGEDARACHNIDSLAMMER + "3"
|
||||
required_reagents = list(REAGENT_ID_ENRAGEDARACHNIDSLAMMER = 1, REAGENT_ID_STIMM = 1)
|
||||
result = REAGENT_ID_ENRAGEDARACHNIDSLAMMER
|
||||
result_amount = 0.1
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/enragedarachnidslammer4
|
||||
name = REAGENT_ENRAGEDARACHNIDSLAMMER
|
||||
id = REAGENT_ID_ENRAGEDARACHNIDSLAMMER
|
||||
id = REAGENT_ID_ENRAGEDARACHNIDSLAMMER + "4"
|
||||
required_reagents = list(REAGENT_ID_ENRAGEDARACHNIDSLAMMER = 1, REAGENT_ID_CRYOTOXIN = 1)
|
||||
result = REAGENT_ID_ENRAGEDARACHNIDSLAMMER
|
||||
result_amount = 0.1
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/enragedarachnidslammer5
|
||||
name = REAGENT_ENRAGEDARACHNIDSLAMMER
|
||||
id = REAGENT_ID_ENRAGEDARACHNIDSLAMMER
|
||||
id = REAGENT_ID_ENRAGEDARACHNIDSLAMMER + "5"
|
||||
required_reagents = list(REAGENT_ID_ENRAGEDARACHNIDSLAMMER = 1, REAGENT_ID_CRYPTOBIOLIN = 1)
|
||||
result = REAGENT_ID_ENRAGEDARACHNIDSLAMMER
|
||||
result_amount = 0.1
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/enragedarachnidslammer6
|
||||
name = REAGENT_ENRAGEDARACHNIDSLAMMER
|
||||
id = REAGENT_ID_ENRAGEDARACHNIDSLAMMER
|
||||
id = REAGENT_ID_ENRAGEDARACHNIDSLAMMER + "6"
|
||||
required_reagents = list(REAGENT_ID_ENRAGEDARACHNIDSLAMMER = 1, REAGENT_ID_STOXIN = 1)
|
||||
result = REAGENT_ID_ENRAGEDARACHNIDSLAMMER
|
||||
result_amount = 0.1
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/enragedarachnidslammer7
|
||||
name = REAGENT_ENRAGEDARACHNIDSLAMMER
|
||||
id = REAGENT_ID_ENRAGEDARACHNIDSLAMMER
|
||||
id = REAGENT_ID_ENRAGEDARACHNIDSLAMMER + "7"
|
||||
required_reagents = list(REAGENT_ID_ENRAGEDARACHNIDSLAMMER = 1, REAGENT_ID_CONDENSEDCAPSAICINV = 1)
|
||||
result = REAGENT_ID_ENRAGEDARACHNIDSLAMMER
|
||||
result_amount = 0.1
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/enragedarachnidslammer8
|
||||
name = REAGENT_ENRAGEDARACHNIDSLAMMER
|
||||
id = REAGENT_ID_ENRAGEDARACHNIDSLAMMER
|
||||
id = REAGENT_ID_ENRAGEDARACHNIDSLAMMER + "8"
|
||||
required_reagents = list(REAGENT_ID_ENRAGEDARACHNIDSLAMMER = 1, REAGENT_ID_PHORON = 1)
|
||||
result = REAGENT_ID_ENRAGEDARACHNIDSLAMMER
|
||||
result_amount = 0.1
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/enragedarachnidslammer9
|
||||
name = REAGENT_ENRAGEDARACHNIDSLAMMER
|
||||
id = REAGENT_ID_ENRAGEDARACHNIDSLAMMER
|
||||
id = REAGENT_ID_ENRAGEDARACHNIDSLAMMER + "9"
|
||||
required_reagents = list(REAGENT_ID_ENRAGEDARACHNIDSLAMMER = 1, REAGENT_ID_THERMITEV = 1)
|
||||
result = REAGENT_ID_ENRAGEDARACHNIDSLAMMER
|
||||
result_amount = 0.1
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/enragedarachnidslammer10
|
||||
name = REAGENT_ENRAGEDARACHNIDSLAMMER
|
||||
id = REAGENT_ID_ENRAGEDARACHNIDSLAMMER
|
||||
id = REAGENT_ID_ENRAGEDARACHNIDSLAMMER + "10"
|
||||
required_reagents = list(REAGENT_ID_ENRAGEDARACHNIDSLAMMER = 1, REAGENT_ID_SEROTROTIUMV = 1)
|
||||
result = REAGENT_ID_ENRAGEDARACHNIDSLAMMER
|
||||
result_amount = 0.1
|
||||
@@ -384,13 +384,6 @@
|
||||
result_amount = 6
|
||||
|
||||
//YW drinks
|
||||
/decl/chemical_reaction/instant/drinks/lovepotion_yw
|
||||
name = REAGENT_STRAWBERRYLOVEPOTION
|
||||
id = REAGENT_ID_STRAWBERRYLOVEPOTION
|
||||
result = REAGENT_ID_STRAWBERRYLOVEPOTION
|
||||
required_reagents = list(REAGENT_ID_CREAM = 1, REAGENT_ID_BERRYJUICE = 1, REAGENT_ID_SUGAR = 1)
|
||||
result_amount = 3
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/wormblood
|
||||
name = "Wormblood"
|
||||
id = REAGENT_ID_WORMBLOOD
|
||||
|
||||
@@ -387,20 +387,9 @@
|
||||
return
|
||||
M.adjustToxLoss(-3 * removed) //Almost on par with dylovene despite being harder to obtain in bulk. Nerf if this causes problems.
|
||||
|
||||
/datum/reagent/drink/juice/gelatin
|
||||
name = REAGENT_ID_GELATIN
|
||||
id = REAGENT_GELATIN
|
||||
description = "It doesnt taste like anything."
|
||||
taste_description = REAGENT_ID_NOTHING
|
||||
nutrition = 0
|
||||
color = "#aaabcf"
|
||||
|
||||
glass_name = REAGENT_ID_GELATIN
|
||||
glass_desc = "It's like flavourless slime."
|
||||
|
||||
/datum/reagent/drink/bubbleteawatermelon
|
||||
name = REAGENT_BUBBLETEAWATERMELON
|
||||
id = REAGENT_BUBBLETEAWATERMELON
|
||||
id = REAGENT_ID_BUBBLETEAWATERMELON
|
||||
description = "A tea with milk and watermelon in it and gelatin balls as well."
|
||||
taste_description = "creamy tea and watermelon"
|
||||
color = "#b83333"
|
||||
@@ -682,16 +671,6 @@
|
||||
//////////////////////////////////////////////
|
||||
|
||||
//YW drinks
|
||||
/datum/reagent/drink/lovepotion_yw
|
||||
name = REAGENT_STRAWBERRYLOVEPOTION
|
||||
id = REAGENT_ID_STRAWBERRYLOVEPOTION
|
||||
description = "Creamy strawberries and sugar, simple and sweet."
|
||||
taste_description = "strawberries and cream"
|
||||
color = "#fc8a8a" // rgb(252, 138, 138)
|
||||
|
||||
glass_name = "Love Potion"
|
||||
glass_desc = "Love me tender, love me sweet."
|
||||
|
||||
/datum/reagent/ethanol/wormblood
|
||||
name = REAGENT_WORMBLOOD
|
||||
id = REAGENT_ID_WORMBLOOD
|
||||
|
||||
Reference in New Issue
Block a user